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

[ Multimod ] Ошибка Голосования  [Решено]

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

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

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

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

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

[ Multimod ] Ошибка Голосования

Сообщение MayroN » 07 мар 2018, 03:59

Если ты Администратор и только подключился к серверу ( но при етом ещё невыбрал за какую команду зайти ) и запускаешь голосование по команде amx_votemod ,то появляеться следующая ошибка и после голосования за мод непроисходит след.голос. за карту.

Код: Выделить всё
Displaying debug trace (plugin "multimod.amxx")
Run time error 4: index out of bounds 
ColorChat
.inc::ColorChat 
multimod
.sma::check_vote


Буду очень признателен за исправление.

Или ( Подскажите) Самый простой вариант исправления - ето "Заблокировать Голосование до Выбора Команды" - ,что-бы при amx_votemod админу в чат писало что-то вроде етого "Для Голосования зайдите в игру"

Но всё-же лучше исправить ошибку

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

#define PLUGIN_NAME    "MultiMod Manager"
#define PLUGIN_AUTHOR    "JoRoPiTo"
#define PLUGIN_VERSION    "2.2"

#define AMX_MULTIMOD    "amx_multimod"
#define AMX_PLUGINS    "amxx_plugins"
#define AMX_MAPCYCLE    "mapcyclefile"
#define AMX_LASTCYCLE    "lastmapcycle"

#define AMX_DEFAULTCYCLE    "mapcycle.txt"
#define AMX_DEFAULTPLUGINS    "addons/amxmodx/configs/plugins.ini"
#define    AMX_BASECONFDIR    "addons/amxmodx/configs/multimod"

#define TASK_VOTEMOD 2487002
#define TASK_CHVOMOD 2487004
#define MAXMODS 10
#define LSTRING 193
#define SSTRING 33

new g_menuname[] = "MENU NAME"
new g_votemodcount[MAXMODS]
new g_modnames[MAXMODS][SSTRING]    // Per-mod Mod Names
new g_filemaps[MAXMODS][LSTRING]    // Per-mod Maps Files
new g_fileplugins[MAXMODS][LSTRING]    // Per-mod Plugin Files

new g_fileconf[LSTRING]
new g_coloredmenus
new g_modcount 
= -1            // integer with configured mods count
new g_alreadyvoted
new gp_allowedvote
new g_nextmodid
new g_currentmodid
new g_multimod
[SSTRING]
new g_nextmap[SSTRING]
new g_currentmod[SSTRING]
new g_confdir[LSTRING]



new gp_mintime
new gp_voteanswers
new gp_timelimit

new gp_mode
new gp_mapcyclefile

// galileo specific cvars
new gp_galileo_nommapfile
new gp_galileo_votemapfile


public plugin_init
()
{
    new MenuName[63]

    register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
    register_cvar("MultiModManager", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY)
    register_dictionary("mapchooser.txt")
    register_dictionary("multimod.txt")

    
    gp_mode 
= register_cvar("amx_multimod_mode", "0")    // 0=auto; 1=mapchooser; 2=galileo
    gp_mintime = register_cvar("amx_mintime", "10")
    gp_allowedvote = register_cvar("amx_multimod_voteallowed", "0")

    get_configsdir(g_confdir, charsmax(g_confdir))

    register_clcmd("amx_votemod", "start_vote", ADMIN_MAP, "Vote for the next mod")
    register_clcmd("say nextmod", "user_nextmod")
    register_clcmd("say_team nextmod", "user_nextmod")
    register_clcmd("say currentmod", "user_currentmod")
    register_clcmd("say /votemod", "user_votemod")
    register_clcmd("say_team /votemod", "user_votemod")

    format(MenuName, charsmax(MenuName), "%L", LANG_PLAYER, "MM_VOTE")
    register_menucmd(register_menuid(g_menuname), 1023, "player_vote")
    g_coloredmenus = colored_menus()
}

public plugin_cfg()
{
    gp_voteanswers = get_cvar_pointer("amx_vote_answers")
    gp_timelimit = get_cvar_pointer("mp_timelimit")
    gp_mapcyclefile = get_cvar_pointer(AMX_MAPCYCLE)

    if(!get_pcvar_num(gp_mode))
    {
        if(find_plugin_byfile("mapchooser_multimod.amxx") != -1)
            set_pcvar_num(gp_mode, 1)
        else if(find_plugin_byfile("galileo.amxx") != -1)
            set_pcvar_num(gp_mode, 2)
    }
    get_localinfo(AMX_MULTIMOD, g_multimod, charsmax(g_multimod))
    load_cfg()

    if(!equal(g_currentmod, g_multimod) || (g_multimod[0] == 0))
    {
        set_multimod(0)
        get_firstmap(0)
        server_print("Server restart - First Run")
        server_cmd("changelevel %s", g_nextmap)
    }
    else
    
{
        server_cmd("exec %s", g_fileconf)
    }
}

public load_cfg()
{
    new szData[LSTRING]
    new szFilename[LSTRING]

    formatex(szFilename, charsmax(szFilename), "%s/%s", AMX_BASECONFDIR, "multimod.ini")

    new f = fopen(szFilename, "rt")
    new szTemp[SSTRING],szModName[SSTRING], szTag[SSTRING], szCfg[SSTRING]
    while(!feof(f)) {
        fgets(f, szData, charsmax(szData))
        trim(szData)
        if(!szData[0] || szData[0] == ';' || (szData[0] == '/' && szData[1] == '/')) continue

        if
(szData[0] == '[') {
            g_modcount++
            replace_all(szData, charsmax(szData), "[", "")
            replace_all(szData, charsmax(szData), "]", "")

            strtok(szData, szModName, charsmax(szModName), szTemp, charsmax(szTemp), ':', 0)
            strtok(szTemp, szTag, charsmax(szTag), szCfg, charsmax(szCfg), ':', 0)

            if(equal(szModName, g_multimod)) {
                formatex(g_fileconf, 192, "%s/%s", AMX_BASECONFDIR, szCfg)
                copy(g_currentmod, charsmax(g_currentmod), szModName)
                g_currentmodid = g_modcount
                server_print
("%L", LANG_PLAYER, "MM_WILL_BE", g_multimod, szTag, szCfg)
            }
            formatex(g_modnames[g_modcount], 32, "%s", szModName)
            formatex(g_filemaps[g_modcount], 192, "%s/%s-maps.ini", AMX_BASECONFDIR, szTag)
            formatex(g_fileplugins[g_modcount], 192, "%s/%s-plugins.ini", AMX_BASECONFDIR, szTag)
            server_print("Мод Загружен: %s %s %s", g_modnames[g_modcount], g_filemaps[g_modcount], g_fileconf)
        }
    }
    fclose(f)
    set_task(10.0, "check_task", TASK_VOTEMOD, "", 0, "b")
}

public get_firstmap(modid)
{
    new ilen

    if
(!file_exists(g_filemaps[modid]))
        get_mapname(g_nextmap, charsmax(g_nextmap))
    else
        read_file
(g_filemaps[modid], 0, g_nextmap, charsmax(g_nextmap), ilen)
}

public set_multimod(modid)
{
    server_print("Setting multimod to %i - %s", modid, g_modnames[modid])
    set_localinfo("amx_multimod", g_modnames[modid])
    server_cmd("localinfo amxx_plugins ^"^"")
    server_cmd("localinfo lastmapcycle ^"^"")
    set_localinfo(AMX_PLUGINS, file_exists(g_fileplugins[modid]) ? g_fileplugins[modid] : AMX_DEFAULTPLUGINS)
    set_localinfo(AMX_LASTCYCLE, file_exists(g_filemaps[modid]) ? g_filemaps[modid] : AMX_DEFAULTCYCLE)
    set_pcvar_string(gp_mapcyclefile, file_exists(g_filemaps[modid]) ? g_filemaps[modid] : AMX_DEFAULTCYCLE)


    switch(get_pcvar_num(gp_mode))
    {
        case 2:
        {
            if(gp_galileo_nommapfile)
                set_pcvar_string(gp_galileo_nommapfile, file_exists(g_filemaps[modid]) ? g_filemaps[modid] : AMX_DEFAULTCYCLE)

            if(gp_galileo_votemapfile)
                set_pcvar_string(gp_galileo_votemapfile, file_exists(g_filemaps[modid]) ? g_filemaps[modid] : AMX_DEFAULTCYCLE)
        }
        case 1:
        {
            callfunc_begin("plugin_init", "mapchooser_multimod.amxx");
            callfunc_end();
        }
    }
}

public check_task()
{
    new timeleft = get_timeleft()
    if(timeleft < 1 || timeleft > 40)
        return

    start_vote
()
}

public SetBlackScreenFade(fade)
{
    new time, hold, flags;
    static iMsgScreenFade; 
    if
(!iMsgScreenFade) iMsgScreenFade = get_user_msgid("ScreenFade");
    
    switch 
(fade)
    {
        case 1: { time = 1; hold = 1; flags = 4; }
        case 2: { time = 4096; hold = 1024; flags = 1; }
        default: { time = 4096; hold = 1024; flags = 2; }
    }

    message_begin(MSG_BROADCAST, iMsgScreenFade);
    write_short(time);
    write_short(hold);
    write_short(flags);
    write_byte(0);
    write_byte(0);
    write_byte(0);
    write_byte(255);
    message_end();
}
 

public start_vote
()
{

        new players[32], iCount, player;
        get_players(players, iCount, "ah");

        for (new i; i < iCount; i++)
        {
        player = players[i];

        set_pev(player, pev_flags, pev(player, pev_flags) | FL_FROZEN)
        fm_set_user_godmode(player, 1);
        }

        SetBlackScreenFade(2);
        set_task(1.0, "SetBlackScreenFade", 1);
        g_alreadyvoted = true
        remove_task
(TASK_VOTEMOD)
        remove_task(TASK_CHVOMOD)

    new menu[512], mkeys, iPercent, i
    new pos 
= format(menu, 511, g_coloredmenus ? "\y%L:\w^n^n" : "%L:^n^n", LANG_PLAYER, "MM_CHOOSE")

    for(i=0; i<= g_modcount; i++) 
        
{

        pos += format(menu[pos], 511, "\r%d.\w %s\d \y•\w \r%d\w \y%%\w^n^n", i + 1, g_modnames[i], iPercent)
        g_votemodcount[i] = 0
        mkeys 
|= (1<<i)
    }

    new szMenuName[63]
    formatex(szMenuName, charsmax(szMenuName), "%L", LANG_PLAYER, "MM_VOTE")
    server_print("show menu %s %s %i", menu, g_menuname, mkeys)
    show_menu(0, mkeys, menu, 15, g_menuname)
    client_cmd(0, "spk Vote/golosovanie_start")

    set_task(15.0, "check_vote", TASK_CHVOMOD)
    return
}

public user_nextmod(id)
{
#if AMXX_VERSION_NUM < 183
ColorChat(0, RED, "^4Следующий Мод: ^3%s", g_modnames[g_nextmodid])
#else
client_print_color(0, print_team_red, "^4Следующий Мод: ^3%s", g_modnames[g_nextmodid])
#endif 
    //client_print(0, print_chat, "%L", LANG_PLAYER, "MM_NEXTMOD", g_modnames[g_nextmodid])
    return PLUGIN_HANDLED
}

public user_currentmod(id)
{
#if AMXX_VERSION_NUM < 183
ColorChat(0, RED, "^4Следующий Мод: ^3%s", g_currentmod)
#else
client_print_color(0, print_team_red, "^4Следующий Мод: ^3%s", g_currentmod)
#endif 
    //client_print(0, print_chat, "%L", LANG_PLAYER, "MM_NEXTMOD", g_currentmod)
    return PLUGIN_HANDLED
}

public user_votemod(id)
{
    if(gp_allowedvote)
        return PLUGIN_HANDLED

    if
(g_alreadyvoted)
    {
        #if AMXX_VERSION_NUM < 183
ColorChat(0, RED, "^4Голосование за Мод закончено.Следующий Мод ^3%s", g_modnames[g_nextmodid])
#else
client_print_color(0, print_team_red, "^4Голосование за Мод закончено.Следующий Мод ^3%s", g_modnames[g_nextmodid])
#endif 
        //client_print(0, print_chat, "%L", LANG_PLAYER, "MM_VOTEMOD", g_modnames[g_nextmodid])
        return PLUGIN_HANDLED
    
}

    new Float:elapsedTime = get_pcvar_float(gp_timelimit) - (float(get_timeleft()) / 60.0)
    new Float:minTime
    minTime 
= get_pcvar_float(gp_mintime)

    if(elapsedTime < minTime) {
        client_print(0, print_chat, "%L", LANG_PLAYER, "MM_PL_WAIT", floatround(minTime - elapsedTime, floatround_ceil))
        return PLUGIN_HANDLED
    
}

    new timeleft = get_timeleft()
    if(timeleft < 180)
        return PLUGIN_HANDLED

    start_vote
()
    return PLUGIN_HANDLED
}

public player_vote(id, key)
{
    if(key <= g_modcount)
    {
        if(get_pcvar_num(gp_voteanswers))
        {
            new player[SSTRING]
            get_user_name(id, player, charsmax(player))
#if AMXX_VERSION_NUM < 183
ColorChat(0, RED, "^4%s ^1выбрал ^3%s", player, g_modnames[key])
#else
client_print_color(0, print_team_red, "^4%s ^1выбрал ^3%s", player, g_modnames[key])
#endif 
            //client_print(0, print_chat, "%L", LANG_PLAYER, "X_CHOSE_X", player, g_modnames[key])
        }
        g_votemodcount[key]++
    }
}

public check_vote()
{
    new b = random(g_modcount)
    for(new a = 0; a <= g_modcount; a++)
        if(g_votemodcount[b] < g_votemodcount[a]) b = a

        
#if AMXX_VERSION_NUM < 183
ColorChat(0, RED, "^4Голосование за Мод закончено.Следующий Мод ^3%s", g_modnames[b])
#else
client_print_color(0, print_team_red, "^4Голосование за Мод закончено.Следующий Мод ^3%s", g_modnames[b])
#endif 
        //client_print(0, print_chat, "%L", LANG_PLAYER, "MM_VOTEMOD", g_modnames[b])
    server_print("%L", LANG_PLAYER, "MM_VOTEMOD", g_modnames[b])
    if(!= g_currentmodid)
        set_multimod(b)

    callfunc_begin("doVoteNextmap", "mapchooser_multimod.amxx");
    callfunc_end();
    g_nextmodid = b
}
МультиМод CS
Аватара пользователя
MayroN
 
Сообщения: 673
Зарегистрирован: 10 окт 2010, 18:23
Откуда: Украина, г. Белая Церковь
Благодарил (а): 149 раз.
Поблагодарили: 86 раз.
Опыт программирования: Около года
Языки программирования: На которых говорю...

Re: [ Multimod ] Ошибка Голосования

Сообщение KOTOKU » 07 мар 2018, 04:40

Косяк в new b = random(g_modcount)
Логируйте чтобы узнать что за значение туда передается в рандоме или просто добавьте проверку по размеру, в общем, значение в g_modcount заносится большое
Аватара пользователя
KOTOKU
 
Сообщения: 766
Зарегистрирован: 10 фев 2013, 00:53
Благодарил (а): 10 раз.
Поблагодарили: 117 раз.

Re: [ Multimod ] Ошибка Голосования

Сообщение MayroN » 07 мар 2018, 05:21

KOTOKU писал(а):Косяк в new b = random(g_modcount)

К сожалению раньше вместо етого было
Код: Выделить всё
new b = 0

и всёравно была ошибка

Добавлено спустя 4 минуты 56 секунд:
А да забыл ещё сказать:Если сделать только один Рестарт какого нибудь Мода,етой ошибки нету,и проходит голосование за карту дальше после Модов.
МультиМод CS
Аватара пользователя
MayroN
 
Сообщения: 673
Зарегистрирован: 10 окт 2010, 18:23
Откуда: Украина, г. Белая Церковь
Благодарил (а): 149 раз.
Поблагодарили: 86 раз.
Опыт программирования: Около года
Языки программирования: На которых говорю...

Re: [ Multimod ] Ошибка Голосования  [Решено]

Сообщение MayroN » 11 мар 2018, 01:22

Решено :
Виной всему был ColorChat от Numb'a.Пришлось поставить другой
Код: Выделить всё
#if defined _colorchat_included
    #endinput
#endif
#define _colorchat_included

/* ColorChat Support */
#define NORMAL    DontChange
#define GREEN    DontChange
#define RED        Red
#define BLUE    Blue
#define GREY    Grey
#define ColorChat client_print_color

#define MAX_TRANSLATION_LENGTH 2048

enum {
    DontChange = 0,
    Grey = -1,
    Red = -2,
    Blue = -3
};

#define print_team_default  DontChange
#define print_team_grey     Grey
#define print_team_red      Red
#define print_team_blue     Blue

stock client_print_color(id, sender, const fmt[], any:...)
{
    // check if id is different from 0
    if (id && !is_user_connected(id))
    {
        return 0;
    }

    if (sender < Blue || sender > 32)
    {
        sender = DontChange;
    }
    else if (sender < DontChange)
    {
        sender = -sender + 32; // align indexes to the TeamInfo ones
    }

    static const szTeamName[][] =
    {
        "",
        "TERRORIST",
        "CT"
    };

    new szMessage[191];

    new iParams = numargs();

    // Specific player code
    if (id)
    {
        if (iParams == 3)
        {
            copy(szMessage, charsmax(szMessage), fmt); // copy so message length doesn't exceed critical 192 value
        }
        else
        
{
            vformat(szMessage, charsmax(szMessage), fmt, 4);
        }

        if (sender > (32 - Grey))
        {
            if (sender > (32 - Blue))
            {
                sender = id;
            }
            else
            
{
                _CC_TeamInfo(id, sender, szTeamName[sender - (32 - Grey)]);
            }
        }
        _CC_SayText(id, sender, szMessage);
    }

    // Send message to all players
    else
    
{
        // Figure out if at least 1 player is connected
        // so we don't execute useless useless code if not
        new iPlayers[32], iNum;
        get_players(iPlayers, iNum, "ch");
        if (!iNum)
        {
            return 0;
        }

        new iMlNumber, i, j;
        new Array:aStoreML = ArrayCreate();
        if (iParams >= 5) // ML can be used
        {
            for (= 3; j < iParams; j++)
            {
                // retrieve original param value and check if it's LANG_PLAYER value
                if (getarg(j) == LANG_PLAYER)
                {
                    i = 0;
                    // as LANG_PLAYER == -1, check if next parm string is a registered language translation
                    while ((szMessage[i] = getarg(+ 1, i++))) {}
                    if (GetLangTransKey(szMessage) != TransKey_Bad)
                    {
                        // Store that arg as LANG_PLAYER so we can alter it later
                        ArrayPushCell(aStoreML, j++);

                        // Update ML array saire so we'll know 1st if ML is used,
                        // 2nd how many args we have to alterate
                        iMlNumber++;
                    }
                }
            }
        }

        // If arraysize == 0, ML is not used
        // we can only send 1 MSG_ALL message if sender != 0
        if (!iMlNumber)
        {
            if (iParams == 3)
            {
                copy(szMessage, charsmax(szMessage), fmt);
            }
            else
            
{
                vformat(szMessage, charsmax(szMessage), fmt, 4);
            }
            if (< sender < (32 - Blue)) // if 0 is passed, need to loop
            {
                if (sender > (32 - Grey))
                {
                    _CC_TeamInfo(0, sender, szTeamName[sender - (32 - Grey)]);
                }
                _CC_SayText(0, sender, szMessage);
                return 1;
            }
        }

        if (sender > (32 - Blue))
        {
            sender = 0; // use receiver index
        }

        for (--iNum; iNum >= 0; iNum--)
        {
            id = iPlayers[iNum];

            if (iMlNumber)
            {
                for (= 0; j < iMlNumber; j++)
                {
                    // Set all LANG_PLAYER args to player index ( = id )
                    // so we can format the text for that specific player
                    setarg(ArrayGetCell(aStoreML, j), _, id);
                }

                // format string for specific player
                vformat(szMessage, charsmax(szMessage), fmt, 4);
            }

            if (sender > (32 - Grey))
            {
                _CC_TeamInfo(id, sender, szTeamName[sender - (32 - Grey)]);
            }
            _CC_SayText(id, sender, szMessage);
        }

        ArrayDestroy(aStoreML);
    }
    return 1;
}

stock _CC_TeamInfo(iReceiver, iSender, szTeam[])
{
    static iTeamInfo = 0;
    if (!iTeamInfo)
    {
        iTeamInfo = get_user_msgid("TeamInfo");
    }
    message_begin(iReceiver ? MSG_ONE : MSG_ALL, iTeamInfo, _, iReceiver);
    write_byte(iSender);
    write_string(szTeam);
    message_end();
}

stock _CC_SayText(iReceiver, iSender, szMessage[])
{
    static iSayText = 0;
    if (!iSayText)
    {
        iSayText = get_user_msgid("SayText");
    }

    // Prevent sending format and localization strings via chat
    for (new i = 0; i < 192; i++)
    {
         if (szMessage[i] == 0) break;
        if (szMessage[i] == '%' ||
            szMessage[i] == '#')
            szMessage[i] = ' ';
    }
    
    message_begin
(iReceiver ? MSG_ONE : MSG_ALL, iSayText, _, iReceiver);
    write_byte(iSender ? iSender : iReceiver);
    if (szMessage[0] > 4)
    {
        write_byte(1);
        szMessage[192 - 2 - 1] = 0;    // Two write_byte + string terminator
        write_string(szMessage);
    }
    else
    
{
        szMessage[192 - 1 - 1] = 0;    // One write_byte + string terminator
        write_string(szMessage);
    }
    message_end();
}

new _translation_szBuffer[MAX_TRANSLATION_LENGTH];

stock register_dictionary_colored(const filename[])
{
    if (!register_dictionary(filename))
    {
        return 0;
    }

    new szFileName[256];
    get_localinfo("amxx_datadir", szFileName, charsmax(szFileName));
    format(szFileName, charsmax(szFileName), "%s/lang/%s", szFileName, filename);
    new fp = fopen(szFileName, "rt");
    if (!fp)
    {
        log_amx("Failed to open %s", szFileName);
        return 0;
    }

    new szLang[3], szKey[64], TransKey:iKey;

    while (!feof(fp))
    {
        fgets(fp, _translation_szBuffer, charsmax(_translation_szBuffer));
        trim(_translation_szBuffer);

        if (_translation_szBuffer[0] == '[')
        {
            strtok(_translation_szBuffer[1], szLang, charsmax(szLang), _translation_szBuffer, 1, ']');
        }
        else if (_translation_szBuffer[0])
        {
            strbreak(_translation_szBuffer, szKey, charsmax(szKey), _translation_szBuffer, charsmax(_translation_szBuffer));
            iKey = GetLangTransKey(szKey);
            if (iKey != TransKey_Bad)
            {
                replace_all(_translation_szBuffer, charsmax(_translation_szBuffer), "!g", "^4");
                replace_all(_translation_szBuffer, charsmax(_translation_szBuffer), "!t", "^3");
                replace_all(_translation_szBuffer, charsmax(_translation_szBuffer), "!n", "^1");
                replace_all(_translation_szBuffer, charsmax(_translation_szBuffer), "^^4", "^4");
                replace_all(_translation_szBuffer, charsmax(_translation_szBuffer), "^^3", "^3");
                replace_all(_translation_szBuffer, charsmax(_translation_szBuffer), "^^1", "^1");
                replace_all(_translation_szBuffer, charsmax(_translation_szBuffer), "^^n", "^n");
                replace_all(_translation_szBuffer, charsmax(_translation_szBuffer), "^^t", "^t");
                AddTranslation(szLang, iKey, _translation_szBuffer[2]);
            }
        }
    }

    fclose(fp);
    return 1;
}

/* ML from AMXX 1.8.3 support */
#define register_dictionary register_dictionary_colored   

и вернуться к
Код: Выделить всё
= 0

И теперь без ошибок и голос за мод и карту проходят до конца.

Примечание :

В етом ColorChat'е при компиляции плагина,в котором есть символы % и # - небудет отображаться в чате.
Нужно заменить ето
Код: Выделить всё
    {
        if (szMessage[i] == 0) break;
        if (szMessage[i] == '%' ||
            szMessage[i] == '#')
            szMessage[i] = ' ';
    }

Етим
Код: Выделить всё
    {
        if (szMessage[i] == 0) break;
        if (szMessage[i] == ' ' ||
            szMessage[i] == ' ')
            szMessage[i] = ' ';
    }
МультиМод CS
Аватара пользователя
MayroN
 
Сообщения: 673
Зарегистрирован: 10 окт 2010, 18:23
Откуда: Украина, г. Белая Церковь
Благодарил (а): 149 раз.
Поблагодарили: 86 раз.
Опыт программирования: Около года
Языки программирования: На которых говорю...


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

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

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