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;
}
