На amxxmodx нашёл статью
link, как сделать магазин через Array. Сделал, всё отлично получилось, но не хотелось бы иметь 2 плагина и инклюд. Я сделал всё в один, но проблема, в том что при открытие магазина пишет "нету вещей". В чем может быть проблема? Вроде бы делал всё правильно...
Код:
Код:
#include <amxmodx>
#include <cstrike>
#include <fun>
#define PL_NAME "SHOP"
#define PL_VERSION "1.0"
#define PL_AUTHOR "NIXON"
new Array: gItemName; // Название предмета в магазине
new Array: gItemCost; // Стоимость предмета в магазине
new gHealth, gArmor, gDeagle;
public plugin_init() {
register_plugin(PL_NAME, PL_VERSION, PL_AUTHOR);
register_clcmd("say /shop", "clcmd_shop"); // Меню магазина
gItemName = ArrayCreate(32, 1); // array с названием предмета
gItemCost = ArrayCreate(1, 1); // array со стоимостью предмета
gHealth = RegisterItem("Здоровье 150", 1000);
gArmor = RegisterItem("Бронежилет 150", 800);
gDeagle = RegisterItem("Deagle", 2100);
}
public clcmd_shop(id) {
new iSizeShop = ArraySize(gItemName);
if(!iSizeShop) {
client_print(id, print_chat, "В магазине нету вещей!");
return PLUGIN_HANDLED;
}
new iMenu = menu_create("Магазин:", "handled_shop");
new iNameItem[32], iCostItem, iInfoItem[64];
for(new i = 0; i < iSizeShop; i++) {
ArrayGetString(gItemName, i, iNameItem, charsmax(iNameItem));
iCostItem = ArrayGetCell(gItemCost, i);
formatex(iInfoItem, charsmax(iInfoItem), "%s \r%d $", iNameItem, iCostItem);
menu_additem(iMenu, iInfoItem);
}
menu_setprop(iMenu, MPROP_EXITNAME, "Выход");
menu_display(id, iMenu, 0);
return PLUGIN_HANDLED;
}
public handled_shop(id, menu, item) {
new iCostItem = ArrayGetCell(gItemCost, item);
new iMoneyPlayer = cs_get_user_money(id);
if(iMoneyPlayer >= iCostItem) {
switch(item) {
case 1: {
set_user_health(id, get_user_health(id) + 150);
cs_set_user_money(id, iMoneyPlayer - iCostItem);
}
case 2: {
set_user_armor(id, get_user_armor(id) + 150);
cs_set_user_money(id, iMoneyPlayer - iCostItem);
}
case 3: {
give_item(id, "weapon_deagle");
cs_set_user_bpammo(id, CSW_DEAGLE, 120);
cs_set_user_money(id, iMoneyPlayer - iCostItem);
}
}
} else client_print(id, print_chat, "У вас не хватает денег!");
return PLUGIN_HANDLED;
}
stock RegisterItem(const Name[], Cost) {
param_convert(1);
ArrayPushString(gItemName, Name);
ArrayPushCell(gItemCost, Cost);
return ArraySize(gItemName) - 1;
}
Отредактировал: Nixon, - 7.6.2014, 17:04