Question

Здравствуйте. Решил для себя покопаться в моде Los Santols Life, но меня встретила проблема с вводом команды /faction (как и с другими местами в коде, где присутствует  SendFactionMessageF.

 

В чате не отображается текст который связан с SendFactionMessageF, в сервер логе отображает следующую ошибку:

[debug] Run time error 4"Array index out of bounds"
[debug]  Accessing element at index 316368272 past array upper bound 1000
[debug] AMX backtrace:
[debug] #0 0005da60 in ?? (1, -185323110531582735631123596028978080316368272) from c-rp.amx
[debug] #1 0017a794 in public cmd_faction (0316368272) from c-rp.amx

Вот, собственно сам сток SendFactionMessageF:

stock SendFactionMessageF(faction, color, const str[], {Float,_}:...)
{
    static
        args,
        start,
        end,
        string[144]
    ;
    #emit LOAD.S.pri 8
    #emit STOR.pri args

    if (args > 12)
    {
        #emit ADDR.pri str
        #emit STOR.pri start

        for (end = start + (args - 12); end > start; end -= 4)
        {
            #emit LREF.pri end
            #emit PUSH.pri
        }
        #emit PUSH.S str
        #emit PUSH.C 144
        #emit PUSH.C string
        #emit PUSH.C args
        #emit SYSREQ.C format

        foreach(Player, i)
        {
            if(!IsPlayerLogged(i) || PlayerInfo[i][pFaction] != faction || (PlayerInfo[i][pSettings] & togFaction))
                continue;

            SendClientMessage(i, color, string);
        }

        #emit LCTRL 5
        #emit SCTRL 4
        #emit RETN
        return 1;
    }

    foreach(Player, i)
    {
        if(!IsPlayerLogged(i) || PlayerInfo[i][pFaction] != faction || (PlayerInfo[i][pSettings] & togFaction))
            continue;

        SendClientMessage(i, color, str);
    }
    return 1;
}

Проблема обнаружена на примере команды /f (фракционного оос чата):

    if(Factions[faction][fType] == FACTION_LEGAL)
    {
        if(strlen(params) > MAXLEN)
        {
            new pos = MAXLEN - 1;
            SendFactionMessageF(PlayerInfo[playerid][pFaction], COLOR_LSPDNEW, "** (( %s %s: %.*s ... )) **", GetRankName(playerid), GetNameEx(playerid), pos, params);
            SendFactionMessageF(PlayerInfo[playerid][pFaction], COLOR_LSPDNEW, "... %s )) **", params[pos]);
        }
        else
            SendFactionMessageF(PlayerInfo[playerid][pFaction], COLOR_LSPDNEW, "** (( %s %s: %s )) **", GetRankName(playerid), GetNameEx(playerid), params);
    }
    else
    {
        if(strlen(params) > MAXLEN)
        {
            new pos = MAXLEN - 1;
            SendFactionMessageF(PlayerInfo[playerid][pFaction], COLOR_LSPDNEW, "** (( %s: %.*s ... )) **", GetNameEx(playerid), pos, params);
            SendFactionMessageF(PlayerInfo[playerid][pFaction], COLOR_LSPDNEW, "... %s )) **", params[pos]);
        }
        else
            SendFactionMessageF(PlayerInfo[playerid][pFaction], COLOR_LSPDNEW, "** (( %s: %s )) **", GetNameEx(playerid), params);
    }

 

Прошу заметить что в скриптинге я профан, если вопрос слишком очевиден - прошу прощения. Так же прошу помочь знающих людей решить проблему

Share this post


Link to post

0 answers to this question

There have been no answers to this question yet

Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Sergey_Malfoy
      By Sergey_Malfoy
      Здравствуйте! Не буду томить сразу спрошу.
       
      У меня на руках в данный момент мод "Arizona RP" я всё настроил под себя кроме нескольких нюансов...
       
      1. Я пытался найти в данном моде что то по типу "playerinfo[playerid][pCash/pVirMoney/pDonate] для изменения бонуса на сервере, но увы ничего, пытался также найти самим кол-вом, т.е. 10млн$ и 10к AZ Coin (конечно же не так как я здесь написал, там я без сокращений и всеми способами). Если вы сталкивались с такой проблемой или же можете помочь мне её решить, я вас заранее благодарю!
       
      2. Я для большего соответсвия своему серверу хотел сделать другие квесты, и тем более в них был бонус ввиде 200 AZ, но мне это не надо, т.к. я не хочу бонусный сервер. Я разобрался как менять названия в них на свои и тд., но как заменить саму награду за этот квест, помогите пожалуйста, очень прошу, уже 2 недели мучаюсь...
    • addvans
      By addvans
      В моде используется очень много динамик-объектов - счётчик Streamer_GetUpperBond доходит до 50000. Проблема в том, что достигая этих 50к, объекты перестают вести себя нормально - если спавнить/удалять ещё, то код просто останавливается и не идёт до конца функции, пока количество объектов не станет <50к. Предела в стримере не установлено (Streamer_SetMaxItems=-1), облазил все видимые настройки/форумы, подобных проблем не нашёл, не могу найти решение, запрашиваю помощи. 
       
      Не исключаю, что сам где-то недоглядел, но где - уже голову сломал. Тестил на разном железе - везде упирается в 50 000.

       
    • Alisher_Krovers
      By Alisher_Krovers
      1) Можно ли поставить на сервер для крмп мод САМП (Например Аризона) и как редактировать его (Менять под себя)
      2) Как исправить, когда при подключении к серверу не появляется окно регистрации, а появляется только стрелки и кнопка «Войти»
      Ответьте пожалуйста 
    • sw_davinci
      By sw_davinci
      После окончания пейнтболла на моде самп рп остается оружие, и не работает /paitlist