Русское сообщество по скриптингу

Server Menu: добавить собственные пункты

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Server Menu: добавить собственные пункты

Сообщение oJler » 27 фев 2018, 00:44

Прочитал у вас статью на создание меню на М
вот исходник и т.д! как мне поставить к примеру свои выборы, меню ножей, Админы онлайн и т.д? не получается и всё, ошибку выдаёт

Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>

#pragma semicolon 1

#define PLUGIN_NAME "[TUT] Server Menu"
#define PLUGIN_VERS "1.0"
#define PLUGIN_AUTH "NIXON"

public plugin_init()
{
    
register_plugin(PLUGIN_NAMEPLUGIN_VERSPLUGIN_AUTH);
    
register_message(get_user_msgid("ShowMenu"), "MessageShowMenu");
    
register_message(get_user_msgid("VGUIMenu"), "MessageVGUIMenu");
    
register_menu("JoinMenu"563"handled_JoinMenu");
    
register_menu("MainMenu"531"handled_MainMenu");
}

public 
MessageShowMenu(iMsgIDiDestid)
{
    if (!
is_user_connected(id)) return PLUGIN_HANDLED;
    static 
iMenuCode[21];
    
get_msg_arg_string(4iMenuCodecharsmax(iMenuCode));
    switch (
iMenuCode[1]) {
        case 
'T': {
            
set_pdata_int(id2050);
            return 
ClCmd_JoinMenu(id);
        }
        case 
'I': {
            
set_pdata_int(id2050);
            if (
cs_get_user_team(id) == CS_TEAM_UNASSIGNED || cs_get_user_team(id) == CS_TEAM_SPECTATOR) return ClCmd_JoinMenu(id);
            else return 
ClCmd_MainMenu(id);
        }
    }
    return 
PLUGIN_HANDLED;
}

public 
MessageVGUIMenu(iMsgIDiDestid)
{

    if (!
is_user_connected(id)) return PLUGIN_HANDLED;
    switch(
get_msg_arg_int(1)) {
        case 
2: {
            if (
cs_get_user_team(id) == CS_TEAM_UNASSIGNED || cs_get_user_team(id) == CS_TEAM_SPECTATOR) return ClCmd_JoinMenu(id);
            else return 
ClCmd_MainMenu(id);
        }
        default: return 
PLUGIN_HANDLED;
    }
    return 
PLUGIN_HANDLED;
}

public 
ClCmd_JoinMenu(id)
{

    new 
iMenu[256], iLen;
    new 
iKeysMenu MENU_KEY_5|MENU_KEY_0;
    
iLen formatex(iMenucharsmax(iMenu), "\rВыберите команду:^n^n");
    if (
cs_get_user_team(id) == CS_TEAM_TiLen += formatex(iMenu[iLen], charsmax(iMenu) - iLen"\d1. Террорист [%d]^n"fnGetPlayerTeam(CS_TEAM_T));
    else {
        
iKeysMenu |= MENU_KEY_1;
        
iLen += formatex(iMenu[iLen], charsmax(iMenu) - iLen"\y1. \wТеррорист \d[%d]^n"fnGetPlayerTeam(CS_TEAM_T));
    }
    if (
cs_get_user_team(id) == CS_TEAM_CTiLen += formatex(iMenu[iLen], charsmax(iMenu) - iLen"\d2. Контр-Террорист [%d]^n^n"fnGetPlayerTeam(CS_TEAM_CT));
    else {
        
iKeysMenu |= MENU_KEY_2;
        
iLen += formatex(iMenu[iLen], charsmax(iMenu) - iLen"\y2. \wКонтр-Террорист \d[%d]^n^n"fnGetPlayerTeam(CS_TEAM_CT));
    }
    
iLen += formatex(iMenu[iLen], charsmax(iMenu) - iLen"\y5. \wАвто-Выбор^n");
    if (
cs_get_user_team(id) == CS_TEAM_SPECTATORiLen += formatex(iMenu[iLen], charsmax(iMenu) - iLen"\d6. Спектатор^n^n");
    else {
        
iKeysMenu |= MENU_KEY_6;
        
iLen += formatex(iMenu[iLen], charsmax(iMenu) - iLen"\y6. \wСпектатор^n^n");
    }
    
iLen += formatex(iMenu[iLen], charsmax(iMenu) - iLen"\y0. \wВыход");
    
show_menu(idiKeysMenuiMenu, -1"JoinMenu");
    return 
PLUGIN_HANDLED;
}

public 
handled_JoinMenu(idiKeys)
{
    static 
iRestoreiVGUIiMsgBlock;
    
iRestore get_pdata_int(id510);
    
iVGUI iRestore & (1<<0);
    if (
iVGUIset_pdata_int(id510iRestore & ~(1<<0));
    switch (
iKeys) {
        case 
014: {
            if (
iKeys <= && (cs_get_user_team(id) == CS_TEAM_T || cs_get_user_team(id) == CS_TEAM_CT)) return PLUGIN_HANDLED;
            
iMsgBlock get_msg_block(get_user_msgid("ShowMenu"));
            
set_msg_block(get_user_msgid("ShowMenu"), BLOCK_ONCE);
            
engclient_cmd(id"jointeam", (iKeys == "5" : (iKeys == "1" "2")));
            
engclient_cmd(id"joinclass""5");
            
set_msg_block(get_user_msgid("ShowMenu"), iMsgBlock);
        }
        case 
5: {
            if (
cs_get_user_team(id) == CS_TEAM_SPECTATOR) return PLUGIN_HANDLED;
            
iMsgBlock get_msg_block(get_user_msgid("ShowMenu"));
            
set_msg_block(get_user_msgid("ShowMenu"), BLOCK_ONCE);
            
dllfunc(DLLFunc_ClientPutInServerid);
            
set_msg_block(get_user_msgid("ShowMenu"), iMsgBlock);
            
set_pdata_int(id3491);
            
engclient_cmd(id"jointeam""6");
        }
    }
    if (
iVGUIset_pdata_int(id510iRestore);
    
set_pdata_int(id125get_pdata_int(id1255) & ~(1<<8), 5);
    return 
PLUGIN_HANDLED;
}

public 
ClCmd_MainMenu(id)
{
    new 
iMenu[256], iLen;
    static 
iKeysMenu MENU_KEY_1|MENU_KEY_2|MENU_KEY_5|MENU_KEY_0;
    
iLen formatex(iMenucharsmax(iMenu), "\rИгровое меню:^n^n");
    
iLen += formatex(iMenu[iLen], charsmax(iMenu) - iLen"\y1. \wОбнулить счёт^n");
    
iLen += formatex(iMenu[iLen], charsmax(iMenu) - iLen"\y2. \wКупить \rадминку^n^n");
    
iLen += formatex(iMenu[iLen], charsmax(iMenu) - iLen"\y5. \wВыбор команды^n^n");
    
iLen += formatex(iMenu[iLen], charsmax(iMenu) - iLen"\y0. \wВыход");
    
show_menu(idiKeysMenuiMenu, -1"MainMenu");
    return 
PLUGIN_HANDLED;
}

public 
handled_MainMenu(idiKeys)
{
    switch (
iKeys) {
        case 
0client_print(idprint_chat"Вы обнулили счёт");
        case 
1client_print(idprint_chat"Админка");
        case 
4: return ClCmd_JoinMenu(id);
    }
    return 
PLUGIN_HANDLED;
}

stock fnGetPlayerTeam(CsTeamsiTeam)
{
    static 
iPlayers[32], iNum;
    
get_players(iPlayersiNum"e", (iTeam == CS_TEAM_T "TERRORIST" "CT"));
    return 
iNum;

Неинформативное название темы (исправлено) // Subb98
Последний раз редактировалось Subb98 01 мар 2018, 17:05, всего редактировалось 1 раз.
Причина: Для вставки исходного кода используйте кнопку "Код / Исходник"
Аватара пользователя
oJler
 
Сообщения: 1
Зарегистрирован: 27 фев 2018, 00:34
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: Помогите пожалуйста с созданием меню на М

Сообщение provaider » 27 фев 2018, 16:51

Есть программа под Windows для созданию меню сервера
Код: Выделить всё
//Created by CSPMC 
Аватара пользователя
provaider
 
Сообщения: 86
Зарегистрирован: 21 дек 2017, 20:17
Забанен
Благодарил (а): 38 раз.
Поблагодарили: 4 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17