Код за потвърждение: Избери целия код
#include <amxmodx>
#include <cstrike>
#include <engine>
#include <fun>
#include <hamsandwich>
#if AMXX_VERSION_NUM < 183
#include <fmt>
#endif
#define PLUGIN_VERSION "Knife Shop [Big Easy]"
#define BUY_SOUND "items/gunpickup2.wav"
#define MAX_ITEMS 6
#define GIVE_HEALTH 60
#define GIVE_SPEED 350.0
enum _:ItemInfo
{
Name[32],
Price,
Flag
}
new g_iSayText
new bool:g_bHasSpeed[33]
new const g_szPrefix[] = "^4[Simple Shop]^1"
enum _:Items
{
ITEM_SILENT_WALK,
ITEM_HE_GRENADE,
ITEM_HEALTH,
ITEM_FASTER_SPEED,
ITEM_DEAGLE,
ITEM_AWP
}
new g_eItems[MAX_ITEMS][ItemInfo] =
{
{ "Silent Walk", 4500, ADMIN_ALL },
{ "He Grenade", 5500, ADMIN_ALL },
{ "60 HP", 7500, ADMIN_ALL },
{ "Faster Speed", 7000, ADMIN_ALL },
{ "Deagle (1 ammo)", 16000, ADMIN_ALL },
{ "AWP (1 ammo)", 4500, ADMIN_LEVEL_G }
}
public plugin_init()
{
register_plugin("Simple Shop", PLUGIN_VERSION, "OciXCrom")
register_cvar("@CRXSimpleShop", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
RegisterHam(Ham_Spawn, "player", "OnPlayerSpawn", 1)
register_event("CurWeapon", "OnWeaponChange", "be", "1=1")
register_clcmd("say /shop", "DisplayShop")
register_clcmd("say_team /shop", "DisplayShop")
g_iSayText = get_user_msgid("SayText")
}
public plugin_precache()
precache_sound(BUY_SOUND)
public DisplayShop(id)
{
if(is_user_alive(id))
{
new iMenu = menu_create("\rKnife Shop", "Shop_Handler")
for(new szItem[64], iMoney = cs_get_user_money(id), iFlags = get_user_flags(id), i; i < sizeof(g_eItems); i++)
{
formatex(szItem, charsmax(szItem), "%s - %s%s", g_eItems[i][Name], (iMoney >= g_eItems[i][Price]) ? "\y" : "\d",
(g_eItems[i][Flag] == ADMIN_ALL || iFlags & g_eItems[i][Flag]) ? fmt("%i$", g_eItems[i][Price]) : fmt("\r(\wVIP ONLY\r)"))
menu_additem(iMenu, szItem, .paccess = g_eItems[i][Flag])
}
menu_setprop(iMenu, MPROP_NUMBER_COLOR, "\y")
menu_display(id, iMenu, 0)
}
else ColorChat(id, "You need to be alive.")
return PLUGIN_HANDLED
}
public Shop_Handler(id, iMenu, iItem)
{
if(iItem != MENU_EXIT && is_user_alive(id))
{
new iMoney = cs_get_user_money(id)
if(iMoney >= g_eItems[iItem][Price])
{
cs_set_user_money(id, iMoney - g_eItems[iItem][Price])
ColorChat(id, "You have bought ^3%s ^1for ^4%i$", g_eItems[iItem][Name], g_eItems[iItem][Price])
emit_sound(id, CHAN_ITEM, BUY_SOUND, 1.0, ATTN_NORM, 0, PITCH_NORM)
switch(iItem)
{
case ITEM_SILENT_WALK: set_user_footsteps(id, 1)
case ITEM_HE_GRENADE: give_item(id, "weapon_hegrenade")
case ITEM_HEALTH: set_user_health(id, get_user_health(id) + GIVE_HEALTH)
case ITEM_FASTER_SPEED: { g_bHasSpeed[id] = true; OnWeaponChange(id); }
case ITEM_DEAGLE:
{
give_item(id, "weapon_deagle")
cs_set_weapon_ammo(find_ent_by_owner(-1, "weapon_deagle", id), 1)
}
case ITEM_AWP:
{
give_item(id, "weapon_awp")
cs_set_weapon_ammo(find_ent_by_owner(-1, "weapon_awp", id), 1)
}
}
}
else ColorChat(id, "You don't have enough money to purchase this item.")
}
menu_destroy(iMenu)
return PLUGIN_HANDLED
}
public OnPlayerSpawn(id)
g_bHasSpeed[id] = false
public client_putinserver(id)
g_bHasSpeed[id] = false
public OnWeaponChange(id)
{
if(g_bHasSpeed[id])
set_user_maxspeed(id, GIVE_SPEED)
}
ColorChat(const id, const szInput[], any:...)
{
new iPlayers[32], iCount = 1
static szMessage[191]
vformat(szMessage, charsmax(szMessage), szInput, 3)
format(szMessage[0], charsmax(szMessage), "%s %s", g_szPrefix, szMessage)
replace_all(szMessage, charsmax(szMessage), "!g", "^4")
replace_all(szMessage, charsmax(szMessage), "!n", "^1")
replace_all(szMessage, charsmax(szMessage), "!t", "^3")
if(id)
iPlayers[0] = id
else
get_players(iPlayers, iCount, "ch")
for(new i; i < iCount; i++)
{
if(is_user_connected(iPlayers[i]))
{
message_begin(MSG_ONE_UNRELIABLE, g_iSayText, _, iPlayers[i])
write_byte(iPlayers[i])
write_string(szMessage)
message_end()
}
}
}