Добрый день, создал топик своего обучения. Adidasman, дал добро.
Всем кто хочет помочь в этом не простом деле, заранее благодарен.
У меня есть пару вопрос в реализации. Планирую сделать классы предметов, но возникает вопрос, как добавить эти самые классы при регистрации Item'a, и сделать автоматическое создание меню с этим классом если таков отсутствует.
Набросал кода чуток, и тут возник вопрос что писать в переменную public при регистрации меню ведь например Show_%s, MenuName не сделаешь..
Всем кто хочет помочь в этом не простом деле, заранее благодарен.
Код:
#include <amxmodx>
#include <cstrike>
#define Version "1.0"
enum _:ItemShop{
ItemName[64],
ItemCost = 0
}
enum _: ForwardData{
iResult,
iSelected
}
new Array:Items, iShopItem[ItemShop], iForwards[ForwardData];
public plugin_init(){
register_plugin("Shop System", Version, "Skiptik");
register_clcmd("say /shopmenu", "Show_ShopMenu");
iForwards[iSelected] = CreateMultiForward("iSelected", ET_CONTINUE, FP_CELL, FP_CELL);
Items = ArrayCreate(ItemShop, 1);
}
public Show_ShopMenu(id){
new ItemSize = ArraySize(Items);
if(!ItemSize){
client_print(id, print_chat, "В магазине нет предметов");
return PLUGIN_HANDLED;
}
new iMenu = menu_create("Выбирите магазин", "Handle_ShopMenu");
new FormatItem[64];
for(new i = 0; i < ItemSize; i++)
{
ArrayGetArray(Items, i, iShopItem)
if(cs_get_user_money(id) >= iShopItem[ItemCost])
{
formatex(FormatItem, 63, "%s \y%d", iShopItem[ItemName], iShopItem[ItemCost]);
menu_additem(iMenu, FormatItem);
}else{
formatex(FormatItem, 63, "%s \y%d",iShopItem[ItemName], iShopItem[ItemCost]);
menu_addtext(iMenu, FormatItem);
}
}
menu_display(id, iMenu, 0);
return PLUGIN_HANDLED;
}
public Handle_ShopMenu(id, menu, item)
{
menu_destroy(menu);
if(item == MENU_EXIT) {
return;
}
ExecuteForward(iForwards[iSelected], iForwards[iResult], id, item)
}
public plugin_natives()
{
register_native("RegisterItem", "NativeRegisterItem", 1)
}
public NativeRegisterItem(plugin, params)
{
enum {
Name = 1,
Cost
};
get_string(Name, iShopItem[ItemName], charsmax(iShopItem[ItemName]));
iShopItem[ItemCost] = get_param(Cost);
ArrayPushArray(Items, iShopItem);
return ArraySize(Items) - 1;
}
9 Янв 2019
Код:
#include <amxmodx>
#define Version "1.0"
enum _: MenuItem{
MenuName,
HandleName
}
new Array:ItemsMenu, iMenuItem[MenuItem]
public plugin_init(){
register_plugin("Menu System", Version, "Skiptik");
ItemsMenu = ArrayCreate(MenuItem, 1);
}
public
9 Янв 2019
Код:
public CreateMenu(id){
new iMenu = menu_create("%s", "Handle_%s", iMenuItem[MenuName], iMenuItem[HandleName]);
menu_display(id);
return PLUGIN_HANDLED;
}
Последнее редактирование: