Сообщения для чата HelpMenu v0.3

Тема в разделе "Counter-Strike: Global Offensive", создана пользователем DexKekcuk #13, 27 апр 2015.

  1. DexKekcuk #13

    DexKekcuk #13

    Сообщения:
    638
    Симпатии:
    70
    Доброго времени суток!

    Знаю что можно было написать все в теме с плагином, но там ни кто не откликается, поэтому решил создать отдельную тему...

    Суть плагина является в том что при входе, в чате он пишет сообщение

    [SM] Для получения справки, пишите !helpmenu, !help или !hm в чат!

    Это сообщение появляется по квару "sm_helpmenu_welcome", "1"
    Я прошу помощи в том, чтоб или добавил квар "sm_helpmenu_game", "1", данный квар будет в течении всей игры показывать людям сообщение в чате, то сообщение которое показывалось при кваре "sm_helpmenu_welcome", "1", либо просто без добавления квара нового, сделать чтоб этот квар делал более обширные функции на показ сообщения при подключении игрока, и в течении всей игры игрокам..

    Вот сам исходник плагина, вроде он от R1KO
    PHP:
    /*
     * In-game Help Menu
     * Written by chundo ([email protected])
     *
     * Licensed under the GPL version 2 or above
     */

    #pragma semicolon 1

    #include <sourcemod>

    #define PLUGIN_VERSION "0.3"

    enum ChatCommand {
        
    String:command[32],
        
    String:description[255]
    }

    enum HelpMenuType {
        
    HelpMenuType_List,
        
    HelpMenuType_Text
    }

    enum HelpMenu {
        
    String:name[32],
        
    String:title[128],
        
    HelpMenuType:type,
        
    Handle:items,
        
    itemct
    }

    // CVars
    new Handle:g_cvarWelcome INVALID_HANDLE;
    new 
    Handle:g_cvarAdmins INVALID_HANDLE;

    // Help menus
    new Handle:g_helpMenus INVALID_HANDLE;

    // Map cache
    new Handle:g_mapArray INVALID_HANDLE;
    new 
    g_mapSerial = -1;

    // Config parsing
    new g_configLevel = -1;

    public 
    Plugin:myinfo =
    {
        
    name "In-game Help Menu",
        
    author "chundo",
        
    description "Display a help menu to users",
        
    version PLUGIN_VERSION,
        
    url "http://www.mefightclub.com"
    };

    public 
    OnPluginStart() {
        
    CreateConVar("sm_helpmenu_version"PLUGIN_VERSION"Help menu version"FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY);
        
    g_cvarWelcome CreateConVar("sm_helpmenu_welcome""1""Show welcome message to newly connected users."FCVAR_PLUGIN);
        
    g_cvarAdmins CreateConVar("sm_helpmenu_admins""1""Show a list of online admins in the menu."FCVAR_PLUGIN);
        
    RegConsoleCmd("sm_helpmenu"Command_HelpMenu"Display the help menu."FCVAR_PLUGIN);
        
    RegConsoleCmd("sm_hm"Command_HelpMenu"Display the help menu."FCVAR_PLUGIN);
        
    RegConsoleCmd("sm_help"Command_HelpMenu"Display the help menu."FCVAR_PLUGIN);

        new 
    String:hc[PLATFORM_MAX_PATH];
        
    BuildPath(Path_SMhcsizeof(hc), "configs/helpmenu.cfg");
        
    g_mapArray CreateArray(32);
        
    ParseConfigFile(hc);

        
    AutoExecConfig(false);
    }

    public 
    OnMapStart() {
        new 
    String:hc[PLATFORM_MAX_PATH];
        
    BuildPath(Path_SMhcsizeof(hc), "configs/helpmenu.cfg");
        
    ParseConfigFile(hc);
    }

    public 
    OnClientPutInServer(client) {
        if (
    GetConVarBool(g_cvarWelcome))
            
    CreateTimer(30.0Timer_WelcomeMessageclient);
    }

    public 
    Action:Timer_WelcomeMessage(Handle:timerany:client) {
        if (
    GetConVarBool(g_cvarWelcome) && IsClientConnected(client) && IsClientInGame(client) && !IsFakeClient(client))
            
    PrintToChat(client"\x01[SM] Для получения справки, пишите \x04!helpmenu\x01, \x04!help \x01 или \x04!hm \x01 в чат");
    }

    bool:ParseConfigFile(const String:file[]) {
        if (
    g_helpMenus != INVALID_HANDLE) {
            
    ClearArray(g_helpMenus);
            
    CloseHandle(g_helpMenus);
            
    g_helpMenus INVALID_HANDLE;
        }

        new 
    Handle:parser SMC_CreateParser();
        
    SMC_SetReaders(parserConfig_NewSectionConfig_KeyValueConfig_EndSection);
        
    SMC_SetParseEnd(parserConfig_End);

        new 
    line 0;
        new 
    col 0;
        new 
    String:error[128];
        new 
    SMCError:result SMC_ParseFile(parserfilelinecol);
        
    CloseHandle(parser);

        if (
    result != SMCError_Okay) {
            
    SMC_GetErrorString(resulterrorsizeof(error));
            
    LogError("%s on line %d, col %d of %s"errorlinecolfile);
        }

        return (
    result == SMCError_Okay);
    }

    public 
    SMCResult:Config_NewSection(Handle:parser, const String:section[], bool:quotes) {
        
    g_configLevel++;
        if (
    g_configLevel == 1) {
            new 
    hmenu[HelpMenu];
            
    strcopy(hmenu[name], sizeof(hmenu[name]), section);
            
    hmenu[items] = CreateDataPack();
            
    hmenu[itemct] = 0;
            if (
    g_helpMenus == INVALID_HANDLE)
                
    g_helpMenus CreateArray(sizeof(hmenu));
            
    PushArrayArray(g_helpMenushmenu[0]);
        }
        return 
    SMCParse_Continue;
    }

    public 
    SMCResult:Config_KeyValue(Handle:parser, const String:key[], const String:value[], bool:key_quotesbool:value_quotes) {
        new 
    msize GetArraySize(g_helpMenus);
        new 
    hmenu[HelpMenu];
        
    GetArrayArray(g_helpMenusmsize-1hmenu[0]);
        switch (
    g_configLevel) {
            case 
    1: {
                if(
    strcmp(key"title"false) == 0)
                    
    strcopy(hmenu[title], sizeof(hmenu[title]), value);
                if(
    strcmp(key"type"false) == 0) {
                    if(
    strcmp(value"text"false) == 0)
                        
    hmenu[type] = HelpMenuType_Text;
                    else
                        
    hmenu[type] = HelpMenuType_List;
                }
            }
            case 
    2: {
                
    WritePackString(hmenu[items], key);
                
    WritePackString(hmenu[items], value);
                
    hmenu[itemct]++;
            }
        }
        
    SetArrayArray(g_helpMenusmsize-1hmenu[0]);
        return 
    SMCParse_Continue;
    }
    public 
    SMCResult:Config_EndSection(Handle:parser) {
        
    g_configLevel--;
        if (
    g_configLevel == 1) {
            new 
    hmenu[HelpMenu];
            new 
    msize GetArraySize(g_helpMenus);
            
    GetArrayArray(g_helpMenusmsize-1hmenu[0]);
            
    ResetPack(hmenu[items]);
        }
        return 
    SMCParse_Continue;
    }

    public 
    Config_End(Handle:parserbool:haltedbool:failed) {
        if (
    failed)
            
    SetFailState("Plugin configuration error");
    }

    public 
    Action:Command_HelpMenu(clientargs) {
        
    Help_ShowMainMenu(client);
        return 
    Plugin_Handled;
    }

    Help_ShowMainMenu(client) {
        new 
    Handle:menu CreateMenu(Help_MainMenuHandler);
        
    SetMenuExitBackButton(menufalse);
        
    SetMenuTitle(menu"Меню помощи\n ");
        new 
    msize GetArraySize(g_helpMenus);
        new 
    hmenu[HelpMenu];
        new 
    String:menuid[10];
        for (new 
    0msize; ++i) {
            
    Format(menuidsizeof(menuid), "helpmenu_%d"i);
            
    GetArrayArray(g_helpMenusihmenu[0]);
            
    AddMenuItem(menumenuidhmenu[name]);
        }
        
    AddMenuItem(menu"maplist""Список карт");
        if (
    GetConVarBool(g_cvarAdmins))
            
    AddMenuItem(menu"admins""Список Админов онлаин");
        
    DisplayMenu(menuclient30);
    }

    public 
    Help_MainMenuHandler(Handle:menuMenuAction:actionparam1param2) {
        if (
    action == MenuAction_End) {
            
    CloseHandle(menu);
        } else if (
    action == MenuAction_Select) {
            new 
    String:buf[64];
            new 
    msize GetArraySize(g_helpMenus);
            if (
    param2 == msize) { // Maps
                
    new Handle:mapMenu CreateMenu(Help_MenuHandler);
                
    SetMenuExitBackButton(mapMenutrue);
                
    ReadMapList(g_mapArrayg_mapSerial"default");
                
    Format(bufsizeof(buf), "Список карт (%d maps)\n "GetArraySize(g_mapArray));
                
    SetMenuTitle(mapMenubuf);
                if (
    g_mapArray != INVALID_HANDLE) {
                    new 
    mapct GetArraySize(g_mapArray);
                    new 
    String:mapname[64];
                    for (new 
    0mapct; ++i) {
                        
    GetArrayString(g_mapArrayimapnamesizeof(mapname));
                        
    AddMenuItem(mapMenumapnamemapnameITEMDRAW_DISABLED);
                    }
                }
                
    DisplayMenu(mapMenuparam130);
            } 
            else if (
    param2 == msize+1
            { 
    // Admins
                
    new Handle:adminMenu CreateMenu(Help_MenuHandler);
                
    SetMenuExitBackButton(adminMenutrue);
                
    SetMenuTitle(adminMenu"Админы онлайн\n ");
                new 
    String:aname[64];
                for(new 
    1<= MaxClientsi++)
                        {
                            if(
    IsClientInGame(i))
                            {
                                new 
    AdminId:AdminID GetUserAdmin(i);
                                if(
    AdminID != INVALID_ADMIN_ID)
                                {
                                    
    GetClientName(ianamesizeof(aname));
                                    
    AddMenuItem(adminMenuanameanameITEMDRAW_DISABLED);
                                }
                            } 
                        }
                
    DisplayMenu(adminMenuparam130);
            } 
            else 
            { 
    // Menu from config file
                
    if (param2 <= msize) {
                    new 
    hmenu[HelpMenu];
                    
    GetArrayArray(g_helpMenusparam2hmenu[0]);
                    new 
    String:mtitle[512];
                    
    Format(mtitlesizeof(mtitle), "%s\n "hmenu[title]);
                    if (
    hmenu[type] == HelpMenuType_Text) {
                        new 
    Handle:cpanel CreatePanel();
                        
    SetPanelTitle(cpanelmtitle);
                        new 
    String:text[128];
                        new 
    String:junk[128];
                        for (new 
    0hmenu[itemct]; ++i) {
                            
    ReadPackString(hmenu[items], junksizeof(junk));
                            
    ReadPackString(hmenu[items], textsizeof(text));
                            
    DrawPanelText(cpaneltext);
                        }
                        for (new 
    07; ++j)
                            
    DrawPanelItem(cpanel" "ITEMDRAW_NOTEXT);
                        
    DrawPanelText(cpanel" ");
                        
    DrawPanelItem(cpanel"Назад"ITEMDRAW_CONTROL);
                        
    DrawPanelItem(cpanel" "ITEMDRAW_NOTEXT);
                        
    DrawPanelText(cpanel" ");
                        
    DrawPanelItem(cpanel"Выход"ITEMDRAW_CONTROL);
                        
    ResetPack(hmenu[items]);
                        
    SendPanelToClient(cpanelparam1Help_MenuHandler30);
                        
    CloseHandle(cpanel);
                    } else {
                        new 
    Handle:cmenu CreateMenu(Help_CustomMenuHandler);
                        
    SetMenuExitBackButton(cmenutrue);
                        
    SetMenuTitle(cmenumtitle);
                        new 
    String:cmd[128];
                        new 
    String:desc[128];
                        for (new 
    0hmenu[itemct]; ++i) {
                            
    ReadPackString(hmenu[items], cmdsizeof(cmd));
                            
    ReadPackString(hmenu[items], descsizeof(desc));
                            new 
    drawstyle ITEMDRAW_DEFAULT;
                            if (
    strlen(cmd) == 0)
                                
    drawstyle ITEMDRAW_DISABLED;
                            
    AddMenuItem(cmenucmddescdrawstyle);
                        }
                        
    ResetPack(hmenu[items]);
                        
    DisplayMenu(cmenuparam130);
                    }
                }
            }
        }
    }

    public 
    Help_MenuHandler(Handle:menuMenuAction:actionparam1param2) {
        if (
    action == MenuAction_End) {
            
    CloseHandle(menu);
        } else if (
    menu == INVALID_HANDLE && action == MenuAction_Select && param2 == 8) {
            
    Help_ShowMainMenu(param1);
        } else if (
    action == MenuAction_Cancel) {
            if (
    param2 == MenuCancel_ExitBack)
                
    Help_ShowMainMenu(param1);
        }
    }

    public 
    Help_CustomMenuHandler(Handle:menuMenuAction:actionparam1param2) {
        if (
    action == MenuAction_End) {
            
    CloseHandle(menu);
        } else if (
    action == MenuAction_Select) {
            new 
    String:itemval[32];
            
    GetMenuItem(menuparam2itemvalsizeof(itemval));
            if (
    strlen(itemval) > 0)
                
    FakeClientCommand(param1itemval);
        } else if (
    action == MenuAction_Cancel) {
            if (
    param2 == MenuCancel_ExitBack)
                
    Help_ShowMainMenu(param1);
        }  
     
  2. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.579
    Симпатии:
    1.989
    Как это переводится на язык скриптинга? Оффтоп
     
  3. DexKekcuk #13

    DexKekcuk #13

    Сообщения:
    638
    Симпатии:
    70
    Ну длится карта, и через определенное время будет будет показываться сообщение, в течении игры...
    Люди играют показало сообщение, через там минуту или 2 снова показывает...
    Просто не хочется вставлять в плагин рекламы, раз тут есть такая строчка, просто сделать так чтоб она дублировалась через определенное кол-во секунд..) Так понятно? Извиняюсь за свой русский)
     
  4. DexKekcuk #13

    DexKekcuk #13

    Сообщения:
    638
    Симпатии:
    70
    А что за безобразный код? Что-то очень плохое что может повлиять на работу сервера? или мошенничества?
     
  5. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.579
    Симпатии:
    1.989
    Достаточно долгий таймер, который не убивается... Стоит перезайти игроку несколько раз подряд и появится ещё куча таймеров.
    А теперь и я ещё подбавил, причём повторяющихся. Короче, я перефантазировал на лад того автора. :taunt: Оффтоп
     
  6. DexKekcuk #13

    DexKekcuk #13

    Сообщения:
    638
    Симпатии:
    70
    А как нибудь поправить код, так скажем преобразовать под свой лад можно? Чтоб все было более оптимальным для работы?
    Плагин ведь очень старый...
     
  7. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.579
    Симпатии:
    1.989
    Help Menu v0.4

    Анонсы преобразовал, а остальное не трогал.
    PHP:
    /* 
     * In-game Help Menu 
     * Written by chundo ([email protected]
     * 
     * Licensed under the GPL version 2 or above 
     */ 

    #pragma semicolon 1 

    #include <sourcemod> 

    #define PLUGIN_VERSION "0.4" 

    enum ChatCommand 
        
    String:command[32], 
        
    String:description[255


    enum HelpMenuType 
        
    HelpMenuType_List
        
    HelpMenuType_Text 


    enum HelpMenu 
        
    String:name[32], 
        
    String:title[128], 
        
    HelpMenuType:type
        
    Handle:items
        
    itemct 


    // CVars
    new Handle:g_cvarAdmins INVALID_HANDLE;
    new 
    Float:g_fGameTime;

    new 
    Handle:g_hTimerMessage[MAXPLAYERS+1];

    // Help menus 
    new Handle:g_helpMenus INVALID_HANDLE

    // Map cache 
    new Handle:g_mapArray INVALID_HANDLE
    new 
    g_mapSerial = -1

    // Config parsing 
    new g_configLevel = -1

    public 
    Plugin:myinfo 

        
    name "In-game Help Menu"
        
    author "chundo"
        
    description "Display a help menu to users"
        
    version PLUGIN_VERSION
        
    url "http://www.mefightclub.com" 
    }; 

    public 
    OnPluginStart() { 
        
    CreateConVar("sm_helpmenu_version"PLUGIN_VERSION"Help menu version"FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY);
        
    g_fGameTime GetConVarFloat(CreateConVar("sm_helpmenu_game""60.0""Show game message to newly connected users."FCVAR_PLUGINtrue0.0));
        if (
    GetConVarBool(CreateConVar("sm_helpmenu_welcome""1""Show welcome message to newly connected users."FCVAR_PLUGIN)))
        {
            
    HookEvent("player_disconnect"Event_PlayerDisconnect);
            
    HookEvent("player_activate"Event_PlayerActivate);
        }
        
    g_cvarAdmins CreateConVar("sm_helpmenu_admins""1""Show a list of online admins in the menu."FCVAR_PLUGIN); 
        
    RegConsoleCmd("sm_helpmenu"Command_HelpMenu"Display the help menu."FCVAR_PLUGIN); 
        
    RegConsoleCmd("sm_hm"Command_HelpMenu"Display the help menu."FCVAR_PLUGIN); 
        
    RegConsoleCmd("sm_help"Command_HelpMenu"Display the help menu."FCVAR_PLUGIN); 

        new 
    String:hc[PLATFORM_MAX_PATH]; 
        
    BuildPath(Path_SMhcsizeof(hc), "configs/helpmenu.cfg"); 
        
    g_mapArray CreateArray(32); 
        
    ParseConfigFile(hc); 

        
    AutoExecConfig(false); 


    public 
    OnMapStart() { 
        new 
    String:hc[PLATFORM_MAX_PATH]; 
        
    BuildPath(Path_SMhcsizeof(hc), "configs/helpmenu.cfg"); 
        
    ParseConfigFile(hc);
        if (
    g_fGameTimeCreateTimer(g_fGameTimeTimer_GameMessageclientTIMER_FLAG_NO_MAPCHANGE|TIMER_REPEAT);


    public 
    Event_PlayerActivate(Handle:eventString:name[], bool:dontBroadcast) {
        new 
    client GetClientOfUserId(GetEventInt(event"userid"));
        
    g_hTimerMessage[client] = CreateTimer(30.0Timer_WelcomeMessageclient);
    }

    public 
    Event_PlayerDisconnect(Handle:eventString:name[], bool:dontBroadcast) {
        new 
    client GetClientOfUserId(GetEventInt(event"userid"));
        if (
    g_hTimerMessage[client] != INVALID_HANDLE)
        {
            
    CloseHandle(g_hTimerMessage[client]);
            
    g_hTimerMessage[client] = INVALID_HANDLE;
        }
    }

    public 
    Action:Timer_GameMessage(Handle:timer) {
        for (new 
    1<= MaxClientsi++) {
            if (
    IsClientInGame(i)) PrintToChat(i"\x01[SM] Для получения справки, пишите \x04!helpmenu\x01, \x04!help \x01 или \x04!hm \x01 в чат");
        }
        return 
    Plugin_Continue;
    }

    public 
    Action:Timer_WelcomeMessage(Handle:timerany:client) {
        
    PrintToChat(client"\x01[SM] Для получения справки, пишите \x04!helpmenu\x01, \x04!help \x01 или \x04!hm \x01 в чат");
        
    g_hTimerMessage[client] = INVALID_HANDLE;
        return 
    Plugin_Stop;
    }

    bool:ParseConfigFile(const String:file[]) { 
        if (
    g_helpMenus != INVALID_HANDLE) { 
            
    ClearArray(g_helpMenus); 
            
    CloseHandle(g_helpMenus); 
            
    g_helpMenus INVALID_HANDLE
        } 

        new 
    Handle:parser SMC_CreateParser(); 
        
    SMC_SetReaders(parserConfig_NewSectionConfig_KeyValueConfig_EndSection); 
        
    SMC_SetParseEnd(parserConfig_End); 

        new 
    line 0
        new 
    col 0
        new 
    String:error[128]; 
        new 
    SMCError:result SMC_ParseFile(parserfilelinecol); 
        
    CloseHandle(parser); 

        if (
    result != SMCError_Okay) { 
            
    SMC_GetErrorString(resulterrorsizeof(error)); 
            
    LogError("%s on line %d, col %d of %s"errorlinecolfile); 
        } 

        return (
    result == SMCError_Okay); 


    public 
    SMCResult:Config_NewSection(Handle:parser, const String:section[], bool:quotes) { 
        
    g_configLevel++; 
        if (
    g_configLevel == 1) { 
            new 
    hmenu[HelpMenu]; 
            
    strcopy(hmenu[name], sizeof(hmenu[name]), section); 
            
    hmenu[items] = CreateDataPack(); 
            
    hmenu[itemct] = 0
            if (
    g_helpMenus == INVALID_HANDLE
                
    g_helpMenus CreateArray(sizeof(hmenu)); 
            
    PushArrayArray(g_helpMenushmenu[0]); 
        } 
        return 
    SMCParse_Continue


    public 
    SMCResult:Config_KeyValue(Handle:parser, const String:key[], const String:value[], bool:key_quotesbool:value_quotes) { 
        new 
    msize GetArraySize(g_helpMenus); 
        new 
    hmenu[HelpMenu]; 
        
    GetArrayArray(g_helpMenusmsize-1hmenu[0]); 
        switch (
    g_configLevel) { 
            case 
    1: { 
                if(
    strcmp(key"title"false) == 0
                    
    strcopy(hmenu[title], sizeof(hmenu[title]), value); 
                if(
    strcmp(key"type"false) == 0) { 
                    if(
    strcmp(value"text"false) == 0
                        
    hmenu[type] = HelpMenuType_Text
                    else 
                        
    hmenu[type] = HelpMenuType_List
                } 
            } 
            case 
    2: { 
                
    WritePackString(hmenu[items], key); 
                
    WritePackString(hmenu[items], value); 
                
    hmenu[itemct]++; 
            } 
        } 
        
    SetArrayArray(g_helpMenusmsize-1hmenu[0]); 
        return 
    SMCParse_Continue

    public 
    SMCResult:Config_EndSection(Handle:parser) { 
        
    g_configLevel--; 
        if (
    g_configLevel == 1) { 
            new 
    hmenu[HelpMenu]; 
            new 
    msize GetArraySize(g_helpMenus); 
            
    GetArrayArray(g_helpMenusmsize-1hmenu[0]); 
            
    ResetPack(hmenu[items]); 
        } 
        return 
    SMCParse_Continue


    public 
    Config_End(Handle:parserbool:haltedbool:failed) { 
        if (
    failed
            
    SetFailState("Plugin configuration error"); 


    public 
    Action:Command_HelpMenu(clientargs) { 
        
    Help_ShowMainMenu(client); 
        return 
    Plugin_Handled


    Help_ShowMainMenu(client) { 
        new 
    Handle:menu CreateMenu(Help_MainMenuHandler); 
        
    SetMenuExitBackButton(menufalse); 
        
    SetMenuTitle(menu"Меню помощи\n "); 
        new 
    msize GetArraySize(g_helpMenus); 
        new 
    hmenu[HelpMenu]; 
        new 
    String:menuid[10]; 
        for (new 
    0msize; ++i) { 
            
    Format(menuidsizeof(menuid), "helpmenu_%d"i); 
            
    GetArrayArray(g_helpMenusihmenu[0]); 
            
    AddMenuItem(menumenuidhmenu[name]); 
        } 
        
    AddMenuItem(menu"maplist""Список карт"); 
        if (
    GetConVarBool(g_cvarAdmins)) 
            
    AddMenuItem(menu"admins""Список Админов онлаин"); 
        
    DisplayMenu(menuclient30); 


    public 
    Help_MainMenuHandler(Handle:menuMenuAction:actionparam1param2) { 
        if (
    action == MenuAction_End) { 
            
    CloseHandle(menu); 
        } else if (
    action == MenuAction_Select) { 
            new 
    String:buf[64]; 
            new 
    msize GetArraySize(g_helpMenus); 
            if (
    param2 == msize) { // Maps 
                
    new Handle:mapMenu CreateMenu(Help_MenuHandler); 
                
    SetMenuExitBackButton(mapMenutrue); 
                
    ReadMapList(g_mapArrayg_mapSerial"default"); 
                
    Format(bufsizeof(buf), "Список карт (%d maps)\n "GetArraySize(g_mapArray)); 
                
    SetMenuTitle(mapMenubuf); 
                if (
    g_mapArray != INVALID_HANDLE) { 
                    new 
    mapct GetArraySize(g_mapArray); 
                    new 
    String:mapname[64]; 
                    for (new 
    0mapct; ++i) { 
                        
    GetArrayString(g_mapArrayimapnamesizeof(mapname)); 
                        
    AddMenuItem(mapMenumapnamemapnameITEMDRAW_DISABLED); 
                    } 
                } 
                
    DisplayMenu(mapMenuparam130); 
            }  
            else if (
    param2 == msize+1)  
            { 
    // Admins 
                
    new Handle:adminMenu CreateMenu(Help_MenuHandler); 
                
    SetMenuExitBackButton(adminMenutrue); 
                
    SetMenuTitle(adminMenu"Админы онлайн\n "); 
                new 
    String:aname[64]; 
                for(new 
    1<= MaxClientsi++) 
                        { 
                            if(
    IsClientInGame(i)) 
                            { 
                                new 
    AdminId:AdminID GetUserAdmin(i); 
                                if(
    AdminID != INVALID_ADMIN_ID
                                { 
                                    
    GetClientName(ianamesizeof(aname)); 
                                    
    AddMenuItem(adminMenuanameanameITEMDRAW_DISABLED); 
                                } 
                            }  
                        } 
                
    DisplayMenu(adminMenuparam130); 
            }  
            else  
            { 
    // Menu from config file 
                
    if (param2 <= msize) { 
                    new 
    hmenu[HelpMenu]; 
                    
    GetArrayArray(g_helpMenusparam2hmenu[0]); 
                    new 
    String:mtitle[512]; 
                    
    Format(mtitlesizeof(mtitle), "%s\n "hmenu[title]); 
                    if (
    hmenu[type] == HelpMenuType_Text) { 
                        new 
    Handle:cpanel CreatePanel(); 
                        
    SetPanelTitle(cpanelmtitle); 
                        new 
    String:text[128]; 
                        new 
    String:junk[128]; 
                        for (new 
    0hmenu[itemct]; ++i) { 
                            
    ReadPackString(hmenu[items], junksizeof(junk)); 
                            
    ReadPackString(hmenu[items], textsizeof(text)); 
                            
    DrawPanelText(cpaneltext); 
                        } 
                        for (new 
    07; ++j
                            
    DrawPanelItem(cpanel" "ITEMDRAW_NOTEXT); 
                        
    DrawPanelText(cpanel" "); 
                        
    DrawPanelItem(cpanel"Назад"ITEMDRAW_CONTROL); 
                        
    DrawPanelItem(cpanel" "ITEMDRAW_NOTEXT); 
                        
    DrawPanelText(cpanel" "); 
                        
    DrawPanelItem(cpanel"Выход"ITEMDRAW_CONTROL); 
                        
    ResetPack(hmenu[items]); 
                        
    SendPanelToClient(cpanelparam1Help_MenuHandler30); 
                        
    CloseHandle(cpanel); 
                    } else { 
                        new 
    Handle:cmenu CreateMenu(Help_CustomMenuHandler); 
                        
    SetMenuExitBackButton(cmenutrue); 
                        
    SetMenuTitle(cmenumtitle); 
                        new 
    String:cmd[128]; 
                        new 
    String:desc[128]; 
                        for (new 
    0hmenu[itemct]; ++i) { 
                            
    ReadPackString(hmenu[items], cmdsizeof(cmd)); 
                            
    ReadPackString(hmenu[items], descsizeof(desc)); 
                            new 
    drawstyle ITEMDRAW_DEFAULT
                            if (
    strlen(cmd) == 0
                                
    drawstyle ITEMDRAW_DISABLED
                            
    AddMenuItem(cmenucmddescdrawstyle); 
                        } 
                        
    ResetPack(hmenu[items]); 
                        
    DisplayMenu(cmenuparam130); 
                    } 
                } 
            } 
        } 


    public 
    Help_MenuHandler(Handle:menuMenuAction:actionparam1param2) { 
        if (
    action == MenuAction_End) { 
            
    CloseHandle(menu); 
        } else if (
    menu == INVALID_HANDLE && action == MenuAction_Select && param2 == 8) { 
            
    Help_ShowMainMenu(param1); 
        } else if (
    action == MenuAction_Cancel) { 
            if (
    param2 == MenuCancel_ExitBack
                
    Help_ShowMainMenu(param1); 
        } 


    public 
    Help_CustomMenuHandler(Handle:menuMenuAction:actionparam1param2) { 
        if (
    action == MenuAction_End) { 
            
    CloseHandle(menu); 
        } else if (
    action == MenuAction_Select) { 
            new 
    String:itemval[32]; 
            
    GetMenuItem(menuparam2itemvalsizeof(itemval)); 
            if (
    strlen(itemval) > 0
                
    FakeClientCommand(param1itemval); 
        } else if (
    action == MenuAction_Cancel) { 
            if (
    param2 == MenuCancel_ExitBack
                
    Help_ShowMainMenu(param1); 
        } 
    sm_helpmenu_game - Если 0, то выключено, а если больше 0.0, то указанное число будет временем повтора рекламы в секундах для всех игроков.
    Можно использовать оба квара анонсов одновременно, задав для каждого своё сообщение.
     
  8. R1KO

    R1KO Супер-модератор

    Сообщения:
    6.001
    Симпатии:
    2.993
    Оффтоп
     
  9. DexKekcuk #13

    DexKekcuk #13

    Сообщения:
    638
    Симпатии:
    70
    Исходник редактировал ты, я имел ввиду что с редактированием от тебя исходник, а плагин не твой...
     
  10. R1KO

    R1KO Супер-модератор

    Сообщения:
    6.001
    Симпатии:
    2.993
    Alex Tarasenko, я кажется только Админы онлайн починил
     
  11. DexKekcuk #13

    DexKekcuk #13

    Сообщения:
    638
    Симпатии:
    70
    ну наверное поэтому я и сделал вывод, что исходник от тебя(редактированный)