#pragma semicolon 1
public Plugin:myinfo =
{
name = "Dead Cash",
author = "GoDtm666",
description = "Take the money the dead",
version = "1.0.0",
url = "
УРА БЛИЯХА МУХА, КАКАЯ-то СТРаНичКа созДана!?!?! нарно глюк какой-то, пойду бухну."
};
new g_iAccount = 0;
new g_iCashWiner = 0;
new g_iCashLoser = 0;
new g_iAmount[MAXPLAYERS+1];
new Handle:g_hTimer[MAXPLAYERS+1];
new g_iWinerBonus = 0;
new bool:g_bBonus[MAXPLAYERS+1];
public OnPluginStart()
{
g_iAccount = FindSendPropInfo("CCSPlayer", "m_iAccount");
if (!g_iAccount)
{
SetFailState("[Dead Cash] - Unable to start, cannot find necessary send prop offsets.");
}
new Handle:hCvar;
hCvar = CreateConVar("sm_deadcash_winer", "1200", "Сколько выдать денег победившему.", 0, true, 0.0, true, 16000.0);
Winer_OnSettingsChanged(hCvar, "", "");
HookConVarChange(hCvar, Winer_OnSettingsChanged);
hCvar = CreateConVar("sm_deadcash_loser", "1200", "Сколько забрать денег у побежденного.", 0, true, 0.0, true, 16000.0);
Loser_OnSettingsChanged(hCvar, "", "");
HookConVarChange(hCvar, Loser_OnSettingsChanged);
hCvar = CreateConVar("sm_deadcash_bonus", "1000", "Денежный бонус при убийстве нескольких игроков за 1 секунду. (+1000$)", 0, true, 0.0, true, 5000.0);
Bonus_OnSettingsChanged(hCvar, "", "");
HookConVarChange(hCvar, Bonus_OnSettingsChanged);
HookEvent("player_death", Event_PlayerDeath, EventHookMode_Post);
}
public Winer_OnSettingsChanged(Handle:convar, const String:oldValue[], const String:newValue[])
{
g_iCashWiner = GetConVarInt(convar);
}
public Loser_OnSettingsChanged(Handle:convar, const String:oldValue[], const String:newValue[])
{
g_iCashLoser = GetConVarInt(convar);
}
public Bonus_OnSettingsChanged(Handle:convar, const String:oldValue[], const String:newValue[])
{
g_iWinerBonus = GetConVarInt(convar);
}
public OnAllPluginsLoaded()
{
AutoExecConfig(true, "dead_cash", "sourcemod");
}
public Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
{
decl client[3], String:sName[3][MAX_NAME_LENGTH];
client[1] = GetClientOfUserId(GetEventInt(event, "userid"));
client[2] = GetClientOfUserId(GetEventInt(event, "attacker"));
if (client[2] && IsClientInGame(client[2]) && g_iCashWiner)
{
g_iAmount[client[2]] = GetMoney(client[2]);
if (g_iAmount[client[2]] < 16000)
{
g_iAmount[client[2]] += g_iCashWiner;
if (g_iAmount[client[2]] > 16000)
{
SetMoney(client[2], 16000);
}
else
{
if (g_iWinerBonus)
{
if (g_hTimer[client[2]] == INVALID_HANDLE)
{
g_hTimer[client[2]] = CreateTimer(0.9, DeathBonus, client[2]);
}
else
{
g_iAmount[client[2]] += g_iWinerBonus;
g_bBonus[client[2]] = true;
}
}
SetMoney(client[2], g_iAmount[client[2]]);
if (client[1] && IsClientInGame(client[1]))
{
GetClientName(client[1], sName[1], sizeof(sName[]));
GetClientName(client[2], sName[2], sizeof(sName[]));
if (g_bBonus[client[2]])
{
//PrintToChat(client[2], "\x04[SM] Вы получили +%i$ за убийство %s и +%i$ за череду убийств.", g_iCashWiner, sName[1], g_iWinerBonus);
}
else
{
PrintToChat(client[2], "\x04[SM] Вы получили +%i$ за убийство %s.", g_iCashWiner, sName[1]);
}
}
else
{
if (g_bBonus[client[2]])
{
//PrintToChat(client[2], "\x04[SM] Вы получили +%i$ за убийство противника и +%i$ за череду убийств.", g_iCashWiner, g_iWinerBonus);
}
else
{
//PrintToChat(client[2], "\x04[SM] Вы получили +%i$ за убийство противника.", g_iCashWiner);
}
}
}
}
}
if (client[1] && IsClientInGame(client[1]) && IsPlayerAlive(client[2]) && g_iCashLoser)
{
g_iAmount[client[1]] = GetMoney(client[1]);
if (g_iAmount[client[1]] > g_iCashLoser)
{
g_iAmount[client[1]] -= g_iCashLoser;
SetMoney(client[1], g_iAmount[client[1]]);
//PrintToChat(client[1], "\x04[SM] Игрок %s получил ваши %i$ за вашу смерть.", sName[2], g_iCashLoser);
}
}
}
public Action:DeathBonus(Handle:timer, any:client)
{
g_hTimer[client] = INVALID_HANDLE;
g_bBonus[client] = false;
}
public SetMoney(client, amount)
{
SetEntData(client, g_iAccount, amount);
}
public GetMoney(client)
{
return GetEntData(client, g_iAccount);
}