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

Maps Menu error 017: undefined symbol "MAX_PLAYERS"

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

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

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

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

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

Maps Menu error 017: undefined symbol "MAX_PLAYERS"

Сообщение vendorfx » 24 фев 2018, 00:15

Ошибка 017 max_players в 19,23,24,100 строчках

Код: Выделить всё
// vim: set ts=4 sw=4 tw=99 noet:
//
// AMX Mod X, based on AMX Mod by Aleksander Naszko ("OLO").
// Copyright (C) The AMX Mod X Development Team.
//
// This software is licensed under the GNU General Public License, version 3 or higher.
// Additional exceptions apply. For full license details, see LICENSE.txt or visit:
//     https://alliedmods.net/amxmodx-license

//
// Maps Menu Plugin
//

#include <amxmisc>
#include <cstrike>

new Array:g_mapName;
new 
g_mapNums
new g_menuPosition[MAX_PLAYERS 1]

new 
g_voteCount[5]

new 
g_voteSelected[MAX_PLAYERS 1][4]
new 
g_voteSelectedNum[MAX_PLAYERS 1]

new 
g_coloredMenus

new g_choosed

public plugin_init()
{
    
register_plugin("Maps Menu"AMXX_VERSION_STR"AMXX Dev Team")
    
register_dictionary("mapsmenu.txt")
    
register_dictionary("common.txt")
    
register_clcmd("amx_mapmenu""cmdMapsMenu"ADMIN_MAP"- displays changelevel menu")
    
register_clcmd("amx_votemapmenu""cmdVoteMapMenu"ADMIN_VOTE"- displays votemap menu")

    
register_menucmd(register_menuid("Changelevel Menu"), 1023"actionMapsMenu")
    
register_menucmd(register_menuid("Which map do you want?"), 527"voteCount")
    
register_menucmd(register_menuid("Change map to"), 527"voteCount")
    
register_menucmd(register_menuid("Votemap Menu"), 1023"actionVoteMapMenu")
    
register_menucmd(register_menuid("The winner: "), 3"actionResult")

    
g_mapName=ArrayCreate(32);
    
    new 
maps_ini_file[64];
    
get_configsdir(maps_ini_filecharsmax(maps_ini_file));
    
format(maps_ini_filecharsmax(maps_ini_file), "%s/maps.ini"maps_ini_file);

    if (!
file_exists(maps_ini_file))
        
get_cvar_string("mapcyclefile"maps_ini_filecharsmax(maps_ini_file));
        
    if (!
file_exists(maps_ini_file))
        
format(maps_ini_filecharsmax(maps_ini_file), "mapcycle.txt")
    
    
load_settings(maps_ini_file)

    
g_coloredMenus colored_menus()
}

public 
autoRefuse()
{
    
log_amx("Vote: %L""en""RESULT_REF")
    
client_print(0print_chat"%L"LANG_PLAYER"RESULT_REF")
}

public 
actionResult(idkey)
{
    
remove_task(4545454)
    
    switch (
key)
    {
        case 
0:
        {
            new 
_modName[10]
            
get_modname(_modNamecharsmax(_modName))
            
            if (!
equal(_modName"zp"))
            {
                
message_begin(MSG_ALLSVC_INTERMISSION)
                
message_end()
            }

            new 
tempMap[32];
            
ArrayGetString(g_mapNameg_choosedtempMapcharsmax(tempMap));
            
            
set_task(2.0"delayedChange"0tempMapstrlen(tempMap) + 1)
            
log_amx("Vote: %L""en""RESULT_ACC")
            
client_print(0print_chat"%L"LANG_PLAYER"RESULT_ACC")
        }
        case 
1autoRefuse()
    }
    
    return 
PLUGIN_HANDLED
}

public 
checkVotes(id)
{
    
id -= 34567
    
new numppl[MAX_PLAYERS], 0
    
    get_players
(pplnum"c")
    if (
num == 0num 1
    g_choosed 
= -1
    
    
for (new 0g_voteSelectedNum[id]; ++i)
        if (
g_voteCount[a] < g_voteCount[i])
            
i

    
new votesNum g_voteCount[0] + g_voteCount[1] + g_voteCount[2] + g_voteCount[3] + g_voteCount[4]
    new 
iRatio votesNum floatround(get_cvar_float("amx_votemap_ratio") * float(votesNum), floatround_ceil) : 1
    
new iResult g_voteCount[a]

    if (
iResult >= iRatio)
    {
        
g_choosed g_voteSelected[id][a]
        new 
tempMap[32];
        
ArrayGetString(g_mapNameg_choosedtempMapcharsmax(tempMap));
        
client_print(0print_chat"%L %s"LANG_PLAYER"VOTE_SUCCESS"tempMap);
        
log_amx("Vote: %L %s""en""VOTE_SUCCESS"tempMap);
    }
    
    if (
g_choosed != -1)
    {
        if (
is_user_connected(id))
        {
            new 
menuBody[512]
            new 
tempMap[32];
            
ArrayGetString(g_mapNameg_choosedtempMapcharsmax(tempMap));
            new 
len format(menuBodycharsmax(menuBody), g_coloredMenus "\y%L: \w%s^n^n" "%L: %s^n^n"id"THE_WINNER"tempMap)
            
            
len += format(menuBody[len], charsmax(menuBody) - leng_coloredMenus "\y%L^n\w" "%L^n"id"WANT_CONT")
            
format(menuBody[len], charsmax(menuBody) - len"^n1. %L^n2. %L"id"YES"id"NO")

            
show_menu(id0x03menuBody10"The winner: ")
            
set_task(10.0"autoRefuse"4545454)
        } else {
            new 
_modName[10]
            
get_modname(_modNamecharsmax(_modName))
            
            if (!
equal(_modName"zp"))
            {
                
message_begin(MSG_ALLSVC_INTERMISSION)
                
message_end()
            }
            new 
tempMap[32];
            
ArrayGetString(g_mapNameg_choosedtempMapcharsmax(tempMap));
            
set_task(2.0"delayedChange"0tempMapstrlen(tempMap) + 1)
        }
    } else {
        
client_print(0print_chat"%L"LANG_PLAYER"VOTE_FAILED")
        
log_amx("Vote: %L""en""VOTE_FAILED")
    }
    
    
remove_task(34567 id)
}

public 
voteCount(idkey)
{
    if (
key 3)
    {
        
client_print(0print_chat"%L"LANG_PLAYER"VOT_CANC")
        
remove_task(34567 id)
        
set_cvar_float("amx_last_voting"get_gametime())
        
log_amx("Vote: Cancel vote session")
        
        return 
PLUGIN_HANDLED
    
}
    
    if (
get_cvar_float("amx_vote_answers"))
    {
        new 
name[MAX_NAME_LENGTH]
        
        
get_user_name(idnamecharsmax(name))
        
client_print(0print_chat"%L"LANG_PLAYER"X_VOTED_FOR"namekey 1)
    }
    
    ++
g_voteCount[key]
    
    return 
PLUGIN_HANDLED
}

isMapSelected(idpos)
{
    for (new 
0g_voteSelectedNum[id]; ++a)
        if (
g_voteSelected[id][a] == pos)
            return 
1
    
return 0
}

displayVoteMapsMenu(idpos)
{
    if (
pos 0)
        return

    new 
menuBody[512], 0start pos 7

    
if (start >= g_mapNums)
        
start pos g_menuPosition[id] = 0

    
new len format(menuBodycharsmax(menuBody), g_coloredMenus "\y%L\R%d/%d^n\w^n" "%L %d/%d^n^n"id"VOTEMAP_MENU"pos 1, (g_mapNums + ((g_mapNums 7) ? 0)))
    new 
end start 7keys MENU_KEY_0

    
if (end g_mapNums)
        
end g_mapNums

    
new tempMap[32];
    for (new 
startend; ++a)
    {
        
ArrayGetString(g_mapNameatempMapcharsmax(tempMap));
        if (
g_voteSelectedNum[id] == || isMapSelected(idpos b))
        {
            ++
b
            
if (g_coloredMenus)
                
len += format(menuBody[len], charsmax(menuBody) - len"\d%d. %s^n\w"btempMap)
            else
                
len += format(menuBody[len], charsmax(menuBody) - len"#. %s^n"tempMap)
        } else {
            
keys |= (1<<b)
            
len += format(menuBody[len], charsmax(menuBody) - len"%d. %s^n", ++btempMap)
        }
    }

    if (
g_voteSelectedNum[id])
    {
        
keys |= MENU_KEY_8
        len 
+= format(menuBody[len], charsmax(menuBody) - len"^n8. %L^n"id"START_VOT")
    }
    else
        
len += format(menuBody[len], charsmax(menuBody) - leng_coloredMenus "^n\d8. %L^n\w" "^n#. %L^n"id"START_VOT")

    if (
end != g_mapNums)
    {
        
len += format(menuBody[len], charsmax(menuBody) - len"^n9. %L...^n0. %L^n"id"MORE"idpos "BACK" "EXIT")
        
keys |= MENU_KEY_9
    
}
    else
        
len += format(menuBody[len], charsmax(menuBody) - len"^n0. %L^n"idpos "BACK" "EXIT")

    if (
g_voteSelectedNum[id])
        
len += format(menuBody[len], charsmax(menuBody) - leng_coloredMenus "^n\y%L:^n\w" "^n%L:^n"id"SEL_MAPS")
    else
        
len += format(menuBody[len], charsmax(menuBody) - len"^n^n")

    for (new 
04c++)
    {
        if (
g_voteSelectedNum[id])
        {
            
ArrayGetString(g_mapNameg_voteSelected[id][c], tempMapcharsmax(tempMap));
            
len += format(menuBody[len], charsmax(menuBody) - len"%s^n"tempMap)
        }
        else
            
len += format(menuBody[len], charsmax(menuBody) - len"^n")
    }

    new 
menuName[64]
    
format(menuNamecharsmax(menuName), "%L""en""VOTEMAP_MENU")

    
show_menu(idkeysmenuBody, -1menuName)
}

public 
cmdVoteMapMenu(idlevelcid)
{
    if (!
cmd_access(idlevelcid1))
        return 
PLUGIN_HANDLED

    
if (get_cvar_float("amx_last_voting") > get_gametime())
    {
        
client_print(idprint_chat"%L"id"ALREADY_VOT")
        return 
PLUGIN_HANDLED
    
}

    
g_voteSelectedNum[id] = 0

    
if (g_mapNums)
    {
        
displayVoteMapsMenu(idg_menuPosition[id] = 0)
    } else {
        
console_print(id"%L"id"NO_MAPS_MENU")
        
client_print(idprint_chat"%L"id"NO_MAPS_MENU")
    }

    return 
PLUGIN_HANDLED
}

public 
cmdMapsMenu(idlevelcid)
{
    if (!
cmd_access(idlevelcid1))
        return 
PLUGIN_HANDLED

    
if (g_mapNums)
    {
        
displayMapsMenu(idg_menuPosition[id] = 0)
    } else {
        
console_print(id"%L"id"NO_MAPS_MENU")
        
client_print(idprint_chat"%L"id"NO_MAPS_MENU")
    }

    return 
PLUGIN_HANDLED
}

public 
delayedChange(mapname[])
{
    
engine_changelevel(mapname)
}

public 
actionVoteMapMenu(idkey)
{
    new 
tempMap[32];
    switch (
key)
    {
        case 
7:
        {
            new 
Float:voting get_cvar_float("amx_last_voting")
        
            if (
voting get_gametime())
            {
                
client_print(idprint_chat"%L"id"ALREADY_VOT")
                return 
PLUGIN_HANDLED
            
}

            if (
voting && voting get_cvar_float("amx_vote_delay") > get_gametime())
            {
                
client_print(idprint_chat"%L"id"VOT_NOW_ALLOW")
                return 
PLUGIN_HANDLED
            
}

            
g_voteCount = {00000}
            
            new 
Float:vote_time get_cvar_float("amx_vote_time") + 2.0
            set_cvar_float
("amx_last_voting"get_gametime() + vote_time)
            new 
iVoteTime floatround(vote_time)

            
set_task(vote_time"checkVotes"34567 id)

            new 
menuBody[512]
            new 
players[MAX_PLAYERS]
            new 
pnumkeyslen

            get_players
(playerspnum)

            if (
g_voteSelectedNum[id] > 1)
            {
                
len format(menuBodycharsmax(menuBody), g_coloredMenus "\y%L^n\w^n" "%L^n^n"id"WHICH_MAP")
                
                for (new 
0g_voteSelectedNum[id]; ++c)
                {
                    
ArrayGetString(g_mapNameg_voteSelected[id][c], tempMapcharsmax(tempMap));
                    
len += format(menuBody[len], charsmax(menuBody) - len"%d. %s^n"1tempMap)
                    
keys |= (1<<c)
                }
                
                
keys |= (1<<8)
                
len += format(menuBody[len], charsmax(menuBody) - len"^n9. %L^n"id"NONE")
            } else {
                
ArrayGetString(g_mapNameg_voteSelected[id][0], tempMapcharsmax(tempMap));
                
len format(menuBodycharsmax(menuBody), g_coloredMenus "\y%L^n%s?^n\w^n1. %L^n2. %L^n" "%L^n%s?^n^n1. %L^n2. %L^n"id"CHANGE_MAP_TO"tempMapid"YES"id"NO")
                
keys MENU_KEY_1|MENU_KEY_2
            
}

            new 
menuName[64]
            
format(menuNamecharsmax(menuName), "%L""en""WHICH_MAP")

            for (new 
0pnum; ++b)
                if (
players[b] != id)
                    
show_menu(players[b], keysmenuBodyiVoteTimemenuName)

            
format(menuBody[len], charsmax(menuBody), "^n0. %L"id"CANC_VOTE")
            
keys |= MENU_KEY_0
            show_menu
(idkeysmenuBodyiVoteTimemenuName)

            new 
authid[32], name[MAX_NAME_LENGTH]
            
            
get_user_authid(idauthidcharsmax(authid))
            
get_user_name(idnamecharsmax(name))

            
show_activity_key("ADMIN_V_MAP_1""ADMIN_V_MAP_2"name);

            new 
tempMapA[32];
            new 
tempMapB[32];
            new 
tempMapC[32];
            new 
tempMapD[32];
            if (
g_voteSelectedNum[id] > 0)
            {
                
ArrayGetString(g_mapNameg_voteSelected[id][0], tempMapAcharsmax(tempMapA));
            }
            else
            {
                
copy(tempMapAcharsmax(tempMapA), "");
            }
            if (
g_voteSelectedNum[id] > 1)
            {
                
ArrayGetString(g_mapNameg_voteSelected[id][1], tempMapBcharsmax(tempMapB));
            }
            else
            {
                
copy(tempMapBcharsmax(tempMapB), "");
            }
            if (
g_voteSelectedNum[id] > 2)
            {
                
ArrayGetString(g_mapNameg_voteSelected[id][2], tempMapCcharsmax(tempMapC));
            }
            else
            {
                
copy(tempMapCcharsmax(tempMapC), "");
            }
            if (
g_voteSelectedNum[id] > 3)
            {
                
ArrayGetString(g_mapNameg_voteSelected[id][3], tempMapDcharsmax(tempMapD));
            }
            else
            {
                
copy(tempMapDcharsmax(tempMapD), "");
            }
            
            
log_amx("Vote: ^"%s<%d><%s><>^" vote maps (map#1 ^"%s^") (map#2 ^"%s^") (map#3 ^"%s^") (map#4 ^"%s^")"
                    
nameget_user_userid(id), authid
                    
tempMapAtempMapBtempMapCtempMapD)
        }
        case 
8displayVoteMapsMenu(id, ++g_menuPosition[id])
        case 
9displayVoteMapsMenu(id, --g_menuPosition[id])
        default:
        {
            
g_voteSelected[id][g_voteSelectedNum[id]++] = g_menuPosition[id] * key
            displayVoteMapsMenu
(idg_menuPosition[id])
        }
    }

    return 
PLUGIN_HANDLED
}

public 
actionMapsMenu(idkey)
{
    switch (
key)
    {
        case 
8displayMapsMenu(id, ++g_menuPosition[id])
        case 
9displayMapsMenu(id, --g_menuPosition[id])
        default:
        {
            new 
g_menuPosition[id] * key
            
new _modName[10]

            
get_modname(_modNamecharsmax(_modName))
            if (!
equal(_modName"zp"))
            {
                
message_begin(MSG_ALLSVC_INTERMISSION)
                
message_end()
            }
            
            new 
authid[32], name[MAX_NAME_LENGTH]
            
            
get_user_authid(idauthidcharsmax(authid))
            
get_user_name(idnamecharsmax(name))

            new 
tempMap[32];
            
ArrayGetString(g_mapNameatempMapcharsmax(tempMap));
            
            
show_activity_key("ADMIN_CHANGEL_1""ADMIN_CHANGEL_2"nametempMap);

            
log_amx("Cmd: ^"%s<%d><%s><>^" changelevel ^"%s^""nameget_user_userid(id), authidtempMap)
            
set_task(2.0"delayedChange"0tempMapstrlen(tempMap) + 1)
            
/* displayMapsMenu(id, g_menuPosition[id]) */
        
}
    }
    
    return 
PLUGIN_HANDLED
}

displayMapsMenu(idpos)
{
    if (
pos 0)
        return

    new 
menuBody[512]
    new 
tempMap[32]
    new 
start pos 8
    
new 0

    
if (start >= g_mapNums)
        
start pos g_menuPosition[id] = 0

    
new len format(menuBodycharsmax(menuBody), g_coloredMenus "\y%L\R%d/%d^n\w^n" "%L %d/%d^n^n"id"CHANGLE_MENU"pos 1, (g_mapNums + ((g_mapNums 8) ? 0)))
    new 
end start 8
    
new keys MENU_KEY_0

    
if (end g_mapNums)
        
end g_mapNums

    
for (new startend; ++a)
    {
        
keys |= (1<<b)
        
ArrayGetString(g_mapNameatempMapcharsmax(tempMap));
        
len += format(menuBody[len], charsmax(menuBody) - len"%d. %s^n", ++btempMap)
    }

    if (
end != g_mapNums)
    {
        
format(menuBody[len], charsmax(menuBody) - len"^n9. %L...^n0. %L"id"MORE"idpos "BACK" "EXIT")
        
keys |= MENU_KEY_9
    
}
    else
        
format(menuBody[len], charsmax(menuBody) - len"^n0. %L"idpos "BACK" "EXIT")

    new 
menuName[64]
    
format(menuName63"%L""en""CHANGLE_MENU")

    
show_menu(idkeysmenuBody, -1menuName)
}
stock bool:ValidMap(mapname[])
{
    if ( 
is_map_valid(mapname) )
    {
        return 
true;
    }
    
// If the is_map_valid check failed, check the end of the string
    
new len strlen(mapname) - 4;
    
    
// The mapname was too short to possibly house the .bsp extension
    
if (len 0)
    {
        return 
false;
    }
    if ( 
equali(mapname[len], ".bsp") )
    {
        
// If the ending was .bsp, then cut it off.
        // the string is byref'ed, so this copies back to the loaded text.
        
mapname[len] = '^0';
        
        
// recheck
        
if ( is_map_valid(mapname) )
        {
            return 
true;
        }
    }
    
    return 
false;
}

load_settings(filename[])
{
    new 
fp fopen(filename"r");
    
    if (!
fp)
    {
        return 
0;
    }
        

    new 
text[256];
    new 
tempMap[32];
    
    while (!
feof(fp))
    {
        
fgets(fptextcharsmax(text));
        
        if (
text[0] == ';')
        {
            continue;
        }
        if (
parse(texttempMapcharsmax(tempMap)) < 1)
        {
            continue;
        }
        if (!
ValidMap(tempMap))
        {
            continue;
        }
        
        
ArrayPushString(g_mapNametempMap);
        
g_mapNums++;
    }

    
fclose(fp);

    return 
1;
}

public 
plugin_end()
{
    
ArrayDestroy(g_mapName)

Название темы скорректировано // Subb98
Последний раз редактировалось Subb98 24 фев 2018, 09:15, всего редактировалось 1 раз.
Причина: Для вставки исходного кода используйте кнопку "Код / Исходник"
Аватара пользователя
vendorfx
 
Сообщения: 3
Зарегистрирован: 11 янв 2018, 11:59
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: Ошибка. error 017: undefined symbol "MAX_PLAYERS"

Сообщение Mandar1n » 24 фев 2018, 00:35

Ты бы лучше файл прикрепил или в код засунул, а не в спойлер
Аватара пользователя
Mandar1n
 
Сообщения: 133
Зарегистрирован: 08 дек 2013, 14:08
Благодарил (а): 38 раз.
Поблагодарили: 4 раз.
Языки программирования: Counter-Strike 1.6

Re: Maps Menu error 017: undefined symbol "MAX_PLAYERS"

Сообщение Subb98 » 24 фев 2018, 09:16

Добавьте в начало кода:

Код: Выделить всё
#if AMXX_VERSION_NUM < 183
#define MAX_PLAYERS 32
#endif 
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP


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

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

Сейчас этот форум просматривают: Google [Bot] и гости: 15