• Уважаемый Гость.
    - Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    - После решения Вашего вопроса (проблемы) - нажмите "Лучший ответ", на сообщении, которое его решило. За игнорирование этого действия - Вы получите соответствующее предупреждение. Мы - стараемся Вам помочь. Уделите 10 секунд - чтобы нажать кнопку. (Если у Вас нет такой возможности - укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    - Cоздавать темы с названиями "Помогите", "Плиз", "Ошибка", "Не могу найти", "Хелп" и тому подобное;
    - Cоздавать темы без детального описания того, что нужно исправить.
    - Cоздавать темы из одного скриншота.
    За игнор правил форума - Ваша тема будет удалена, а Вы получите системное предупреждение.

Run time error 4: "Array index out of bounds"

Статус
В этой теме нельзя размещать новые ответы.

Frend Williams

Умник
Всем доброго здоровичка. Ошибка в логах, проверка на валидность транспорта есть, а она все равно сыплется.

PHP:
[17:23:53] [debug] Run time error 4: "Array index out of bounds"
[17:23:53] [debug]  Attempted to read/write array element at negative index -400
[17:23:53] [debug] AMX backtrace:
[17:23:53] [debug] #0 0054a6cc in public UpdateSpeedometr (playerid=0) at C:\Users\vlad0\OneDrive\Desktop\Club Online RP\gamemodes\jd.pwn:35190
Код:
publics: UpdateSpeedometr(playerid)
{
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return true;
    if(!GetPVarInt(playerid,"ShowSpeed")) return true;
    if(!pTemp[playerid][pAFK])
    {
        new vehicleid = GetPVarInt(playerid,"VehicleEnters");

        if(vehicleid <= 0) return 0;
        if(vehicleid == INVALID_VEHICLE_ID) return 0;

        new Float:X2, Float:Y2, Float:Z2,Float:X,Float:Y,Float:Z;

        X2 = VehInfo[vehicleid-1][vehicleX];
        Y2 = VehInfo[vehicleid-1][vehicleY];
        Z2 = VehInfo[vehicleid-1][vehicleZ];

         GetVehicleVelocity(vehicleid,X,Y,Z);

        new Float:speed = floatsqroot(floatadd(floatadd(floatpower(X, 2), floatpower(Y, 2)),  floatpower(Z, 2))) * 126.31;

        new PlayerSpeed = floatround(speed);

          if (PlayerSpeed>=300)
        {
            OnPlayerCheat(playerid,AC_SPEED_HACKCAR_code, AC_KICK);
            return 0;
        }

        /*if(PlayerSpeed <= 165 && GetPVarInt(playerid, "SPRINT_KEY") && VehInfo[vehicleid-1][vEngine] && GetPVarInt(playerid,"VehicleEnters") != 462)
        {
            new Float:vAngles, Float:dis = 0.05;
            GetVehicleZAngle(vehicleid, vAngles);
            SetVehicleVelocity(vehicleid,floatadd(X,floatmul(dis,floatsin(-vAngles,degrees))), floatadd(Y,floatmul(dis,floatcos(-vAngles,degrees))), Z);
        }

        if(GetPVarInt(playerid, "slimit") && PlayerSpeed >= GetPVarInt(playerid,"slimit"))
        {
            new Float:dif = GetPVarInt(playerid,"slimit") / speed;
            SetVehicleVelocity(vehicleid,X*dif,Y*dif,Z);
        }*/

        GetVehiclePos(vehicleid, X, Y, Z);
        if(X > 10000.0 || Y > 10000.0 || Z > 10000.0 || X < -10000.0 || Y < -10000.0 || Z < -10000.0)
        {
            SetVehicleToRespawn(vehicleid);
            OnPlayerCheat(playerid, AC_PlayerSpeedHack_code, AC_KICK);
            return 0;
        }

        //
        VehInfo[vehicleid-1][vehicleX] = X;
        VehInfo[vehicleid-1][vehicleY] = Y;
        VehInfo[vehicleid-1][vehicleZ] = Z;
        //
        if(!IsValidVehicle(vehicleid)) return 1;
        new Float:veloc = PointToPoint3D(X2,Y2,Z2,X,Y,Z)/1000;

        VehInfo[vehicleid-1][vDrived] += veloc;

        if(VehInfo[vehicleid][vFuel] > 1.0 && !IsAPlane(GetVehicleModel(vehicleid))) VehInfo[vehicleid][vFuel] -= (veloc*2);
        else if(IsAPlane(GetVehicleModel(vehicleid))) VehInfo[vehicleid][vFuel] -= 0.001;
       
        if(VehInfo[vehicleid-1][vLock]) PlayerTextDrawColor(playerid, speed_PTD[playerid][6], 8388863);
        else PlayerTextDrawColor(playerid, speed_PTD[playerid][6], -16776961);
       
        if(VehInfo[vehicleid][vEngine]) PlayerTextDrawColor(playerid, speed_PTD[playerid][4], 8388863);
        else PlayerTextDrawColor(playerid, speed_PTD[playerid][4], -16776961);
       
        if(VehInfo[vehicleid-1][vLamp]) PlayerTextDrawColor(playerid, speed_PTD[playerid][5], 8388863);
        else PlayerTextDrawColor(playerid, speed_PTD[playerid][5], -16776961);

        PlayerTextDrawShow(playerid,speed_PTD[playerid][6]);
        PlayerTextDrawShow(playerid,speed_PTD[playerid][5]);
        PlayerTextDrawShow(playerid,speed_PTD[playerid][4]);

        new Float: CarH;
        GetVehicleHealth(vehicleid, CarH);

        format(string, 128, "%.1f", VehInfo[vehicleid][vFuel]);
        PlayerTextDrawSetString(playerid, speed_PTD[playerid][20], string);

        format(string, 64, "%i", PlayerSpeed);
        PlayerTextDrawSetString(playerid, speed_PTD[playerid][15], string);

        format(string, 64, "%.1f", CarH);
        PlayerTextDrawSetString(playerid, speed_PTD[playerid][19], string);
       
        format(string, sizeof(string), "%s", VehicleNames[GetVehicleModel(vehicleid)-400]);
        PlayerTextDrawSetString(playerid, speed_PTD[playerid][8], string); // Name Veh

        if(VehInfo[vehicleid][vFuel] <= 1.0)
        {
            scm_error(playerid, "В машине нет бензина");
               new engine,lights,alarm,doors,bonnet,boot,objective;
            GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
            SetVehicleParamsEx(vehicleid, false, lights, alarm, doors, bonnet, boot, objective);

            return 0;
        }
    }
    SetTimerEx("UpdateSpeedometr",100,0,"i",playerid);
    return 1;
}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу