AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Others (https://forums.alliedmods.net/forumdisplay.php?f=10)
-   -   [RU] Легко настраиваемое бонусное меню (https://forums.alliedmods.net/showthread.php?t=180643)

TryNoob 03-18-2012 12:50

[RU] Легко настраиваемое бонусное меню
 
Всем доброго времени суток.

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


All times are GMT -4. The time now is 12:56.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.