[00:19:53] Teleports loaded successfully. [00:20:01] [debug] Run time error 4: "Array index out of bounds" [00:20:01] [debug] Accessing element at index 255 past array upper bound 254 [00:20:01] [debug] AMX backtrace: [00:20:01] [debug] #0 000744c0 in public OnVehicleSpawn (255) from RP.amx [00:20:01] [debug] #1 native SetVehicleToRespawn () from samp-server.exe [00:20:01] [debug] #2 00189e7c in ?? (255) from RP.amx [00:20:01] [debug] #3 0018859c in ?? () from RP.amx [00:20:01] [debug] #4 0014fd90 in public zcmd_OnGameModeInit () from RP.amx [00:20:01] [debug] #5 native CallLocalFunction () from samp-server.exe [00:20:01] [debug] #6 0000cf64 in public IRC_OnGameModeInit () from RP.amx [00:20:01] [debug] #7 native CallLocalFunction () from samp-server.exe [00:20:01] [debug] #8 0000cb54 in public OnGameModeInit () from RP.amx
public OnVehicleSpawn(vehicleid) { dini_IntSet(CarFile(vehicleid), "carmaterials", 0); SetVehicleEngineOff(vehicleid); AddVehicleComponent(vehicleid, 1010); AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa0]); AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa1]); AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa2]); AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa3]); AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa4]); AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa5]); AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa6]); AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa7]); AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa8]); AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa9]); AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa10]); AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa11]); AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa12]); AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa13]); if(vehicleid>sizeof(Vehicles)) return DestroyVehicle(vehicleid); vTrailer[vehicleid] = 0; CarBombActive[vehicleid] = 0; vehicleGuns[vehicleid] = 0; vehicleBullets[vehicleid] = 0; new vid = GetPlayerVehicleID(vehicleid); /*if(Vehicles[vehicleid][nitro] > 0) { AddVehicleComponent(vid, 1010); // Nitro }*/ if(Vehicles[vehicleid][hydros] > 0) { AddVehicleComponent(vid, 1087); // Hydros } for(new i=0;i<13;i++) { VehicleWeapon[vehicleid][i] = 0; VehicleAmmo[vehicleid][i] = 0; } HasGunCrates[vehicleid] = 0; HasBulletCrates[vehicleid] = 0; HasCGuns[vehicleid] = 0; comps[vehicleid][guns] = 0; comps[vehicleid][oil] = 0; comps[vehicleid][alchool] = 0; comps[vehicleid][money] = 0; comps[vehicleid][drugs] = 0; comps[vehicleid][stuffs] = 0; compscar[vehicleid] = 0; SetVehicleVirtualWorld(vehicleid,0); SetTimerEx("SetVehicleWorld", 500, false,"dd", vehicleid, Vehicles[vehicleid][vw]); if(vehicleid<sizeof(Vehicles)) LinkVehicleToInterior(vehicleid, 0); if(Gas[vehicleid]<20) Gas[vehicleid]+=20; UnlockVehicle(vehicleid); if(!strcmp(Vehicles[vehicleid][carowner], "NoBodY", false) || Vehicles[vehicleid][carprice] > 0) UnlockVehicle(vehicleid); else LockVehicle(-1, vehicleid); SetTimerEx("ModCar", 1000, 0, "d", vehicleid); ChangeVehiclePaintjob(vehicleid, Vehicles[vehicleid][paintjob]); if(Vehicles[vehicleid][carmodel] == 448 || Vehicles[vehicleid][carmodel] == 461 || Vehicles[vehicleid][carmodel] == 462 || Vehicles[vehicleid][carmodel] == 463 || Vehicles[vehicleid][carmodel] == 468 || Vehicles[vehicleid][carmodel] == 471 || Vehicles[vehicleid][carmodel] == 481 || Vehicles[vehicleid][carmodel] == 509 || Vehicles[vehicleid][carmodel] == 510 || Vehicles[vehicleid][carmodel] == 521 || Vehicles[vehicleid][carmodel] == 522 || Vehicles[vehicleid][carmodel] == 523 || Vehicles[vehicleid][carmodel] == 581 || Vehicles[vehicleid][carmodel] == 586) { UnlockVehicle(vehicleid); } if(Vehicles[vehicleid][carmodel] == 470) SetVehicleHealth(vehicleid, 2500); else SetVehicleHealth(vehicleid, 1000); return 1; }
if(vehicleid>sizeof(Vehicles)) return DestroyVehicle(vehicleid);
public OnVehicleSpawn(vehicleid)
{
if(vehicleid > 254) return 0;
dini_IntSet(CarFile(vehicleid), "carmaterials", 0);
SetVehicleEngineOff(vehicleid);
AddVehicleComponent(vehicleid, 1010);
AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa0]);
AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa1]);
AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa2]);
AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa3]);
AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa4]);
AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa5]);
AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa6]);
AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa7]);
AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa8]);
AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa9]);
AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa10]);
AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa11]);
AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa12]);
AddVehicleComponent(vehicleid, Vehicles[vehicleid][compa13]);
if(vehicleid>sizeof(Vehicles)) return DestroyVehicle(vehicleid);
vTrailer[vehicleid] = 0;
CarBombActive[vehicleid] = 0;
vehicleGuns[vehicleid] = 0;
vehicleBullets[vehicleid] = 0;
new vid = GetPlayerVehicleID(vehicleid);
/*if(Vehicles[vehicleid][nitro] > 0)
{
AddVehicleComponent(vid, 1010); // Nitro
}*/
if(Vehicles[vehicleid][hydros] > 0)
{
AddVehicleComponent(vid, 1087); // Hydros
}
for(new i=0;i<13;i++)
{
VehicleWeapon[vehicleid][i] = 0;
VehicleAmmo[vehicleid][i] = 0;
}
HasGunCrates[vehicleid] = 0;
HasBulletCrates[vehicleid] = 0;
HasCGuns[vehicleid] = 0;
comps[vehicleid][guns] = 0;
comps[vehicleid][oil] = 0;
comps[vehicleid][alchool] = 0;
comps[vehicleid][money] = 0;
comps[vehicleid][drugs] = 0;
comps[vehicleid][stuffs] = 0;
compscar[vehicleid] = 0;
SetVehicleVirtualWorld(vehicleid,0);
SetTimerEx("SetVehicleWorld", 500, false,"dd", vehicleid, Vehicles[vehicleid][vw]);
if(vehicleid<sizeof(Vehicles)) LinkVehicleToInterior(vehicleid, 0);
if(Gas[vehicleid]<20) Gas[vehicleid]+=20;
UnlockVehicle(vehicleid);
if(!strcmp(Vehicles[vehicleid][carowner], "NoBodY", false) || Vehicles[vehicleid][carprice] > 0) UnlockVehicle(vehicleid);
else LockVehicle(-1, vehicleid);
SetTimerEx("ModCar", 1000, 0, "d", vehicleid);
ChangeVehiclePaintjob(vehicleid, Vehicles[vehicleid][paintjob]);
if(Vehicles[vehicleid][carmodel] == 448 || Vehicles[vehicleid][carmodel] == 461 || Vehicles[vehicleid][carmodel] == 462 || Vehicles[vehicleid][carmodel] == 463 || Vehicles[vehicleid][carmodel] == 468 || Vehicles[vehicleid][carmodel] == 471 || Vehicles[vehicleid][carmodel] == 481 ||
Vehicles[vehicleid][carmodel] == 509 || Vehicles[vehicleid][carmodel] == 510 || Vehicles[vehicleid][carmodel] == 521 || Vehicles[vehicleid][carmodel] == 522 || Vehicles[vehicleid][carmodel] == 523 || Vehicles[vehicleid][carmodel] == 581 || Vehicles[vehicleid][carmodel] == 586)
{
UnlockVehicle(vehicleid);
}
if(Vehicles[vehicleid][carmodel] == 470)
SetVehicleHealth(vehicleid, 2500);
else
SetVehicleHealth(vehicleid, 1000);
return 1;
}
if(vehicleid>sizeof(Vehicles)) return DestroyVehicle(vehicleid);
that means every vehicle you make more than that will crash at this function.
PHP код:
|
YOUR EDIT: Yes it's same but return 0; is not to Destroy it, destroying it which will make the runtime because the id is out of bounds, but return 0; will just cancel next steps for this vehicleid so he won't get runtimes, and yeah he need to change it whenever he increase the limit but it's still a solution
|
It doesn't, using vehicleid as Vehicles index (Vehicles[vehicleid]) does.
|
enum fcar { materialtype, carmaterials, carmodel, Float:fx, Float:fy, Float:fz, Float:fa, color1, color2, respawn, carteam, cartype, // 0 = driveable by all // 1 family restricted // 2 job restricted // 3 rentable modeltype, //0 car // 1 heli // 2 plane // 3 boat jobname[20], biznumber, plate[10], tmplocked, tmplockedby, carowner[MAX_STRING], carprice, reset, Components[CAR_COMPONENTS], dupekey[MAX_STRING], vw, paintjob, nitro, hydros, carspawneed, bool:vActive, // if the vehicle is active. bool:vSpawned, vRID, veehid, compa0, compa1, compa2, compa3, compa4, compa5, compa6, compa7, compa8, compa9, compa10, compa11, compa12, compa13 } new Vehicles[][fcar]