Вопросы

Здравствуйте дорогие форумчани.
После добавления Античита Nexius у меня выскакивают такие ошибки

Спойлер

[17:38:38] Run time error 4: "Array index out of bounds"
[17:38:38]  Attempted to read/write array element at negative index -1
[17:38:38] AMX backtrace:
[17:38:38] #0 003c02d4 in public ac_OnPlayerKeyStateChange (playerid=1, newkeys=1, oldkeys=0) at C:\Users\RusTick\Desktop\Normative RP. Server 02\gamemodes\rls.pwn:56182
[17:38:38] #1 00024058 in public OnPlayerKeyStateChange (playerid=1, newkeys=1, oldkeys=0) at C:\Users\RusTick\Desktop\NORMAT~1.SER\pawno\include\
rakcheat.inc:5115
[17:48:43] Run time error 4: "Array index out of bounds"
[17:48:43]  Attempted to read/write array element at index 23 in array of size 20
[17:48:43] AMX backtrace:
[17:48:43] #0 00722770 in CaptureUpd (bandkiller=18) at C:\Users\RusTick\Desktop\Normative RP. Server 02\gamemodes\rls.pwn:63307
[17:48:43] #1 00198d0c in public ac_OnPlayerDeath (playerid=2, killerid=6, reason=24) at C:\Users\RusTick\Desktop\Normative RP. Server 02\gamemodes\rls.pwn:26314
[17:48:43] #2 000129b4 in public OnPlayerDeath (playerid=2, killerid=6, reason=24) at C:\Users\RusTick\Desktop\NORMAT~1.SER\pawno\include\
rakcheat.inc:3341
[17:48:44] Run time error 4: "Array index out of bounds"
[17:48:44]  Attempted to read/write array element at index 23 in array of size 20
[17:48:44] AMX backtrace:
[17:48:44] #0 00722770 in CaptureUpd (bandkiller=18) at C:\Users\RusTick\Desktop\Normative RP. Server 02\gamemodes\rls.pwn:63307
[17:48:44] #1 00198d0c in public ac_OnPlayerDeath (playerid=3, killerid=6, reason=24) at C:\Users\RusTick\Desktop\Normative RP. Server 02\gamemodes\rls.pwn:26314
[17:48:44] #2 000129b4 in public OnPlayerDeath (playerid=3, killerid=6, reason=24) at C:\Users\RusTick\Desktop\NORMAT~1.SER\pawno\include\
rakcheat.inc:3341

 

Вот строка 56182

           

Спойлер

if(IsPlayerInAnyVehicle(playerid))
    {
        //new vehicleid = GetPlayerVehicleID(playerid);
        //new model = (GetVehicleModel(vehicleid)-400);
        if (newkeys == 262144 && IsACar(plcar)) return callcmd::radio(playerid); //262144 - ??? id ??????? R
        if (newkeys == KEY_SUBMISSION && !IsABycicle(plcar)) return callcmd::en(playerid);
        if(GetPlayerState(playerid) == 2)
        {
            if(newkeys & 1)
            {
                   if (!(IsABycicle(plcar) || IsAPlane(plcar) || IsABoat(plcar)))
                {
                    if(LightsStatus(plcar) == 1)
                    {
                        Lights(plcar, false);
                        LightPwr[plcar] = 0;
                        lightcar[GetPlayerVehicleID(playerid)] = 0;
                        GetVehicleParamsEx(plcar,engine,lights,alarm,doors,bonnet,boot,objective);
                        SetVehicleParamsEx(plcar,engine,LightPwr[plcar],alarm,doors,bonnet,boot,objective);

                        if (plcar <= MAX_BUYABLE_CARS)
                        {
                            if (CarsInfo[plcar-1][vNeon]) // 56182{
                                DestroyDynamicObject(neons[plcar][0]);
                                DestroyDynamicObject(neons[plcar][1]);
                                neons[plcar][0] = -1;
                                neons[plcar][1] = -1;
                                //SendClientMessage(playerid,COLOR_GREY,"* ?? ????????? ???? ? ????");
                            }
                            //else SendClientMessage(playerid,COLOR_GREY,"* ?? ????????? ????");
                        }
                        //else SendClientMessage(playerid,COLOR_GREY,"* ?? ????????? ????");
                    }
                    else
                    {
                        Lights(plcar, true);
                          LightPwr[plcar] = 1;
                          lightcar[GetPlayerVehicleID(playerid)] = 1;
                          GetVehicleParamsEx(plcar,engine,lights,alarm,doors,bonnet,boot,objective);
                        SetVehicleParamsEx(plcar,engine,LightPwr[plcar],alarm,doors,bonnet,boot,objective);

                          if (plcar <= MAX_BUYABLE_CARS)
                        {
                            if (CarsInfo[plcar-1][vNeon])  //{
                                DestroyDynamicObject(neons[plcar][0]);
                                DestroyDynamicObject(neons[plcar][1]);
                                neons[plcar][0] = CreateDynamicObject(CarsInfo[plcar-1][vNeon],0,0,0,0,0,0);
                                neons[plcar][1] = CreateDynamicObject(CarsInfo[plcar-1][vNeon],0,0,0,0,0,0);
                                new modelS = GetVehicleModel(plcar);
                                AttachDynamicObjectToVehicle(neons[plcar][0], plcar, -1 * NeonPos[modelS-400][0], NeonPos[modelS-400][1], NeonPos[modelS-400][2], 0.0, 0.0, 0.0);
                                AttachDynamicObjectToVehicle(neons[plcar][1], plcar, NeonPos[modelS-400][0], NeonPos[modelS-400][1], NeonPos[modelS-400][2], 0.0, 0.0, 0.0);
                                //SendClientMessage(playerid,COLOR_WHITE,"* ?? ???????? ???? ? ????");
                            }
                            //else SendClientMessage(playerid,COLOR_WHITE,"* ?? ???????? ????");
                        }
                        //else SendClientMessage(playerid,COLOR_WHITE,"* ?? ???????? ????");
                    }
                }
            }

 

Вот от 26314

Спойлер

new bandkiller;
        new bandkill;
        if(PlayerInfo[killerid][pLeader] !=0)
        {
            bandkiller = PlayerInfo[killerid][pLeader];
        }
        else
        {
            bandkiller = PlayerInfo[killerid][pMember];
        }
        if(PlayerInfo[playerid][pLeader] !=0)
        {
            bandkill = PlayerInfo[playerid][pLeader];
        }
        else
        {
            bandkill = PlayerInfo[playerid][pMember];
        }
        if(bandkiller != bandkill)
        {
            if(GangInfo[bandkiller][capture] && GangInfo[bandkill][capture] == 1)
            {
                if(GangInfo[bandkiller][captureid] == GangInfo[bandkill][captureid])
                {
                    GangInfo[bandkiller][score] = GangInfo[bandkiller][score]+1;
                    CaptureUpd(bandkiller);//26314
                }
            }
        }
    }

 

 

Отредактировано пользователем DEST

Заметка от DEST , создано

Большой код оборачивайте еще и под спойлер, как это указано тут.

Поделиться сообщением


Ссылка на сообщение

9 ответов на этот вопрос

  • 0

@Рустик по поводу первой ошибки, то переменная plcar принимает значение 0, и поэтому идет обращение по отрицательному индексу в массиве. Найдите в этом коде где объявлена переменная plcar и ей выполнено присваивание какого-нибудь значения (т.е. строку вида 

plcar = ... )

По поводу второй проблемы, скидывайте функцию

CaptureUpd

Поделиться сообщением


Ссылка на сообщение
  • 0
В 03.08.2019 в 18:25, DEST сказал:

@Рустик по поводу первой ошибки, то переменная plcar принимает значение 0, и поэтому идет обращение по отрицательному индексу в массиве. Найдите в этом коде где объявлена переменная plcar и ей выполнено присваивание какого-нибудь значения (т.е. строку вида 

plcar = ... )

По поводу второй проблемы, скидывайте функцию


CaptureUpd

Извените что так долго не отвечал дела были

 

Вот функция
 

stock CaptureUpd(bandkiller)
{
    new SCORE1[10],SCORE2[10];
    tforeach(i)
    {
        if(!gPlayerLogged[i]) continue;
    	if(GangInfo[PlayerInfo[i][pMember]][capture] > 0)
    	{
	        if(GangInfo[bandkiller][gangnumber] == 1)
	        {
	            format(SCORE1, sizeof(SCORE1), "%d", GangInfo[bandkiller][score]);
	            PlayerTextDrawSetString(i,capture_PTD[i][13], SCORE1);
	        }
	        else
	        {
	            format(SCORE2, sizeof(SCORE2), "%d", GangInfo[bandkiller][score]);
	            PlayerTextDrawSetString(i,capture_PTD[i][14], SCORE2);
	       	}
    	}
    }
}

 

Поделиться сообщением


Ссылка на сообщение
  • 0

@Рустик как объявлена capture_PTD

Поделиться сообщением


Ссылка на сообщение
  • 0
2 часа назад, DEST сказал:

@Рустик как объявлена capture_PTD

new PlayerText:capture_PTD[MAX_PLAYERS][16];

Отредактировано пользователем Рустик

Поделиться сообщением


Ссылка на сообщение
  • 0

@Рустик А GangInfo? 

Поделиться сообщением


Ссылка на сообщение
  • 0
2 часа назад, DEST сказал:

@Рустик А GangInfo? 

#define MAX_GANGS 20
enum Ganginfa{
    capture,
    score,
    captureid,
    gangnumber}
new GangInfo[MAX_GANGS][Ganginfa];
#define MAX_GZONE 120

 

Отредактировано пользователем Рустик

Поделиться сообщением


Ссылка на сообщение
  • 0

@Рустик ID фракции игрока равен 23, а количество ячеек массива под информацию GangInfo составляет всего 20. Найдите в моде места, где идет обращение по индексу GangInfo и скиньте сюда. 

Поделиться сообщением


Ссылка на сообщение
  • 0
2 часа назад, DEST сказал:

@Рустик ID фракции игрока равен 23, а количество ячеек массива под информацию GangInfo составляет всего 20. Найдите в моде места, где идет обращение по индексу GangInfo и скиньте сюда. 

if(GangInfo[faction][capture] == 1

Поделиться сообщением


Ссылка на сообщение
  • 0
В 13.08.2019 в 20:08, Рустик сказал:

if(GangInfo[PlayerInfo[i][pMember]][capture] > 0)

это условие замените следующим и ошибка пропадет

if(PlayerInfo[i][pMember] < MAX_GANGS && GangInfo[PlayerInfo[i][pMember]][capture] > 0)

 

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Узбек
      От Узбек
      Всем добрый вечер ребят! 
      Я начинающий, сегодня я вам сливаю команду 2(шт) на технические работы
      Ловите 
       
    • nazpol9
      От nazpol9
      Привет всем.

      У меня имеется мод для самп сервера и VPS с Ubuntu, на котором я пытаюсь его запустить.

      В чем суть проблемы: при запуске samp03svr, сервер запускается, но на версии 0.3.DL R-1. Когда я пытаюсь запустить этот же мод локально на Windows, сервер работает на версии 0.3.7 и я могу зайти на него без клиента 0.3.DL.

      Для решения этой проблемы я уже пробовал заменять инклуды и исполнительные файлы теми, что есть в архивах на официальном сайте сампа, перекомпилировал мод, и ничего не изменилось.
       
      #include <a_samp> #include <a_mysql> #include <foreach> #include <Pawn.RakNet> #include <streamer> #include <sscanf2> #include <float2> #include <crashdetect> #include <fmt> #include <a_http> #include <Pawn.CMD> #include <Pawn.Regex> #include <requests> #include <callbacks> #include <MD5> #include <mxdate> #include <TOTP> #include <gvar> #include <md-sort> #include <nex-ac> #include <weapon-config> #include <discord-connector> #include <3DTryg> #include <textdraw-streamer>  
      plugins crashdetect.so streamer.so textdraw-streamer.so sscanf.so pawnraknet.so pawncmd.so mysql.so requests.so profiler.so pawnregex.so TOTP.so gvar.so discord-connector.so

      Если у кого-то будут какие-либо догадки, прошу ими поделиться, если понадобится больше информации - я постараюсь её предоставить.