View Single Post
Author Message
TryNoob
BANNED
Join Date: Aug 2011
Old 03-18-2012 , 12:50   [RU] Легко настраиваемое бонусное меню
#1

Всем доброго времени суток.

Пытаюсь сделать легко настраиваемое бонусное меню, но столкнулся с проблемой - не могу придумать, как установить стоимость покупки для какого-то определенного бонуса и распознания его в 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 Мне кажется это будет немного грузить сервер, но как сделать легче просто не соображу..

Last edited by TryNoob; 03-18-2012 at 12:51.
TryNoob is offline