Code: Select all
#include <amxmodx>#include <hamsandwich>#include <fun>#include <cstrike>#include <fakemeta> #define PRIMARY_WEAPONS_BITSUM ((1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)) #define SHOPTAG "^x04[Shop]^x01" new const GunMenu[][] = { "M4A1", "AK47", "M3", "AWP", "Galil", "Aug", "SG552"} new const WeaponCost[] = { 3000, //M4A1 3000, //AK47 4000, //M3 6000, //AWP 2500, //Galil 3000, //Aug 3000 //SG552} new const WeaponGive[][]= { "weapon_m4a1", "weapon_ak47", "weapon_m3", "weapon_awp", "weapon_galil", "weapon_aug", "weapon_sg552"} new const WeaponBPAmmo[]= { 90, //M4A1 90, //AK47 32, //M3 30, //AWP 90, //Galil 90, //Aug 90 //SG552} new Weapon[33][sizeof(GunMenu)]new gmsgSayText public plugin_init() { RegisterHam(Ham_Spawn, "player", "PlayerSpawn", 1) register_clcmd("say shop", "Create_Menu") gmsgSayText = get_user_msgid("SayText")} public PlayerSpawn(id) { if(is_user_alive(id)) { for(new i; i <= charsmax(GunMenu); i++) if(Weapon[id][i]) CheckWeapon(id, i, WeaponCost[i]) } return HAM_IGNORED} public Create_Menu(id) { new Menu = menu_create("\rGuns:", "MainMenu_Handler") new Items[32], Position[3], PriceString[8] for (new i; i < sizeof(GunMenu); i++) { formatex(PriceString, charsmax(PriceString), "- %d$", WeaponCost[i]) formatex(Items, charsmax(Items), "\w%s %s", GunMenu[i], PriceString) num_to_str(i, Position, charsmax(Position)) menu_additem(Menu, Items, Position) } menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL) menu_display(id, Menu, 0) } public MainMenu_Handler(id, Menu, item) { if (item == MENU_EXIT) { menu_destroy(Menu) return PLUGIN_HANDLED } CheckWeapon(id, item, WeaponCost[item]) menu_destroy(Menu) return PLUGIN_CONTINUE} public CheckWeapon(id, nr, Cost) { if(!is_user_alive(id)) { ChatColor(id, "%s Gausi %s kitame raunde", SHOPTAG, GunMenu[nr]) arrayset(Weapon[id], false, sizeof(GunMenu)) Weapon[id][nr] = true return PLUGIN_CONTINUE } if(user_has_weapon(id, get_weaponid(WeaponGive[nr]))) { ChatColor(id, "%s Tu jau turi %s", SHOPTAG, GunMenu[nr]) return PLUGIN_CONTINUE } static Money; Money = cs_get_user_money(id) if(Money < Cost) { ChatColor(id, "%s Neuztenka pinigu. Reikia: %i$", SHOPTAG, Cost) Weapon[id][nr] = false return PLUGIN_CONTINUE } else { cs_set_user_money(id, Money - Cost, 1) if(cs_get_user_hasprim(id)) wpn_drop(id, PRIMARY_WEAPONS_BITSUM) GiveWeapon(id, nr) Weapon[id][nr] = false } return PLUGIN_CONTINUE} public GiveWeapon(id, nr) { give_item(id, WeaponGive[nr]) cs_set_user_bpammo(id, get_weaponid(WeaponGive[nr]), WeaponBPAmmo[nr]) static Name[30]; get_user_name(id, Name, charsmax(Name)) ChatColor(0, "%s %s nusipirko %s", SHOPTAG, Name, GunMenu[nr])} public client_disconnect(id) { arrayset(Weapon[id], false, sizeof(WeaponGive))} stock ChatColor(const id, const input[], any:...) { new count = 1, players[32] static msg[191] vformat(msg, 190, input, 3) if (id) players[0] = id else get_players(players, count, "ch") for (new i; i < count; i++) { if (is_user_connected(players[i])) { message_begin(MSG_ONE_UNRELIABLE, gmsgSayText, _, players[i]) write_byte(players[i]) write_string(msg) message_end() } }} stock wpn_drop(index, wpn) { new weapons[32], num, Weapon get_user_weapons(index, weapons, num) for (new i; i < num; i++) { Weapon = weapons[i] if (wpn & (1 << Weapon)) { static wname[32] get_weaponname(Weapon, wname, sizeof(wname) - 1) ham_strip_weapon(index, wname) } } return} stock ham_strip_weapon(id,weapon[]) { if(!equal(weapon,"weapon_",7)) return 0 new wId = get_weaponid(weapon) if(!wId) return 0 new wEnt while((wEnt = engfunc(EngFunc_FindEntityByString, wEnt, "classname", weapon)) && pev(wEnt, pev_owner) != id) {} if(!wEnt) return 0 if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon, wEnt) if(!ExecuteHamB(Ham_RemovePlayerItem, id, wEnt)) return 0 ExecuteHamB(Ham_Item_Kill, wEnt) set_pev(id, pev_weapons, pev(id, pev_weapons) & ~(1 << wId)) return 1}