Всем доброго времени суток.
Пытаюсь сделать легко настраиваемое бонусное меню, но столкнулся с проблемой - не могу придумать, как установить стоимость покупки для какого-то определенного бонуса и распознания его в Handler-е. Хочется сделать что-то вроде "Стоимость для строки (Cost[String])". Вот мой вариант кода:
Code:
public BonusMenuHandler(Handle:menu, MenuAction:actio, client, param2)
{
if(GetConVarBool(CvarEnable))
if(ValidPlayer(client, false))
{
if(action == MenuAction_Select)
{
decl String:info[32];
GetMenuItem(menu, param2, info, sizeof(info));
if(StrEqual(info, "del"))
{
Delete!
}
else if(StrEqual(info, "rotate"))
{
Rotate!
}
}
DisplayMenu(BuildBonusMenu(client), client, 30);
}
}
stock Handle:BuildBonusMenu(client)
{
new Handle:MenuBonus = CreateMenu(BonusMenuHandler);
decl String:BonusTitle[256];
Format(BonusTitle, sizeof(BonusTitle), "%t", "%s Bonus Menu", Prefix);
SetMenuTitle(MenuBonus, BonusTitle);
decl String:file[255];
new Handle:kv = CreateKeyValues("Bonus");
BuildPath(Path_SM, file, sizeof(file), "configs/props/bonus_menu.txt");
FileToKeyValues(kv, file);
if(KvGotoFirstSubKey(kv))
{
decl String:name[255];
decl String:info[255];
decl String:cost[255];
new index=0;
do
{
index++;
KvGetSectionName(kv, name, sizeof(name));
KvGetString(kv, "info", info, sizeof(info));
KvGetString(kv, "cost", cost, sizeof(cost));
if(!StrEqual(info, "disable"))
{
StringToInt(cost);
Cost[info]=cost;
if(TimeBuild > 0)
AddMenuItem(MenuBonus, info, name);
else
AddMenuItem(MenuBonus, info, name, ITEMDRAW_DISABLED);
}
}
while(KvGotoNextKey(kv));
}
CloseHandle(kv);
SetMenuExitButton(MenuBonus, true);
return MenuBonus;
}
Кто может помогите пожалуйста (не пишу в по англ., т.к. боюсь совершить уйму ошибок).
PS Мне кажется это будет немного грузить сервер, но как сделать легче просто не соображу..