Код
#include <amxmodx>
#include <fakemeta>
#include <fun>
#include <cstrike>
#include <hamsandwich>
#pragma semicolon 1
#define MONEY_NUM_ADD 500 // Сколько выдавать денег при спавне.
#define MONEY_MIN_ADD 8000 // Если у игрока на счету больше чем значение данного макроса, то ему выдаваться деньги не будут.
#define PDATA_SAFE 2
#define MSG_SAY_TEXT 76
#define m_iAccount 115
new g_iRoundNum, g_iMaxPlayers;
public plugin_init()
{
register_plugin("Vip public", "v0.1", "Freedo.m");
register_logevent("LogEvent_Restart", 2, "1=Game_Commencing", "1&Restart_Round_");
register_event("HLTV", "Event_HLTV", "a", "1=0", "2=0");
RegisterHam(Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1);
register_clcmd("say /vips", "ClCmd_Vips");
register_clcmd("say_team /vips", "ClCmd_Vips");
g_iMaxPlayers = get_maxplayers();
}
public LogEvent_Restart() g_iRoundNum = 0;
public Event_HLTV() g_iRoundNum++;
public Ham_PlayerSpawn_Post(id)
{
if(is_user_alive(id) && get_user_flags(id) & ADMIN_LEVEL_H)
{
switch(g_iRoundNum)
{
case 0: return;
case 1: return;
case 2: fm_give_item(id, "item_assaultsuit");
default:
{
new iMoney = fm_get_user_money(id);
if(iMoney < MONEY_MIN_ADD) fm_set_user_money(id, iMoney + MONEY_NUM_ADD);
get_player_deagle(id);
fm_give_item(id, "item_assaultsuit");
fm_give_item(id, "weapon_hegrenade");
fm_give_item(id, "weapon_flashbang");
fm_give_item(id, "weapon_flashbang");
fm_give_item(id, "weapon_smokegrenade");
fm_give_item(id, "ammo_50ae");
fm_give_item(id, "ammo_50ae");
fm_give_item(id, "ammo_50ae");
fm_give_item(id, "ammo_50ae");
fm_give_item(id, "ammo_50ae");
}
}
}
}
public get_player_deagle(id)
{
const dropped_weapons = (1 << CSW_GLOCK18)|(1 << CSW_USP)|(1 << CSW_P228)|(1 << CSW_ELITE)|(1 << CSW_FIVESEVEN);
static sWpName[32], iWeapons[32], iNum, i;
get_user_weapons(id, iWeapons, iNum);
for(i = 0; i < iNum; i++)
{
if((1 << iWeapons[i]) & dropped_weapons)
{
get_weaponname(iWeapons[i], sWpName, charsmax(sWpName));
engclient_cmd(id, "drop", sWpName);
}
}
give_item(id, "weapon_deagle");
cs_set_user_bpammo(id, CSW_DEAGLE, 35);
}
public ClCmd_Vips(id)
{
new szMessage[256], szName[32], iNum;
formatex(szMessage, charsmax(szMessage), "^4VIP Online:^1");
for(new i = 1; i <= g_iMaxPlayers; i++)
{
if(is_user_connected(i) && (get_user_flags(i) & ADMIN_LEVEL_H))
{
iNum++;
get_user_name(i, szName, charsmax(szName));
formatex(szMessage, charsmax(szMessage), "%s %s,", szMessage, szName);
}
}
PrintChat(id, "%s", szMessage);
return PLUGIN_HANDLED;
}
fm_get_user_money(id)
{
if(pev_valid(id) != PDATA_SAFE) return -1;
return get_pdata_int(id, m_iAccount);
}
fm_set_user_money(id, iNum)
{
if(pev_valid(id) != PDATA_SAFE) return 0;
set_pdata_int(id, m_iAccount, iNum);
return 1;
}
fm_give_item(id, const szItem[])
{
if(!equal(szItem, "weapon_", 7) && !equal(szItem, "ammo_", 5) && !equal(szItem, "item_", 5) && !equal(szItem, "tf_weapon_", 10)) return 0;
new iEntity = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, szItem));
if(!pev_valid(iEntity)) return 0;
new Float:fOrigin[3];
pev(id, pev_origin, fOrigin);
set_pev(iEntity, pev_origin, fOrigin);
set_pev(iEntity, pev_spawnflags, pev(iEntity, pev_spawnflags) | SF_NORESPAWN);
dllfunc(DLLFunc_Spawn, iEntity);
new iSolid = pev(iEntity, pev_solid);
dllfunc(DLLFunc_Touch, iEntity, id);
if(pev(iEntity, pev_solid) == iSolid)
{
engfunc(EngFunc_RemoveEntity, iEntity);
return -1;
}
return iEntity;
}
PrintChat(const id, const szMessage[], any:...)
{
if(!is_user_connected(id)) return;
new szBuffer[190];
vformat(szBuffer, charsmax(szBuffer), szMessage, 3);
message_begin(MSG_ONE, MSG_SAY_TEXT, _, id);
write_byte(id);
write_string(szBuffer);
message_end();
}