stock CreateDynCars()
{
vcleanup();
for(spawncar=0;spawncar<MAX_CARS;spawncar++)
{
new model, color1, color2, spawnid;
model = random(11);
color1 = random(11);
color2 = random(11);
spawnloop:
spawnid = random(sizeof(vSpawns));
if(SpawnUsed[spawnid] == true) goto spawnloop;
SpawnUsed[spawnid] = true;
switch(model)
{
case 0:{model = 404;}
case 1:{model = 405;}
case 2:{model = 410;}
case 3:{model = 421;}
case 4:{model = 422;}
case 5:{model = 426;}
case 6:{model = 436;}
case 7:{model = 445;}
case 8:{model = 458;}
case 9:{model = 491;}
case 10:{model = 492;}
}
switch(color1)
{
case 0:{color1 = 8;}
case 1:{color1 = 9;}
case 2:{color1 = 10;}
case 3:{color1 = 11;}
case 4:{color1 = 12;}
case 5:{color1 = 13;}
case 6:{color1 = 14;}
case 7:{color1 = 15;}
case 8:{color1 = 37;}
case 9:{color1 = 38;}
case 10:{color1 = 39;}
}
switch(color2)
{
case 0:{color2 = 8;}
case 1:{color2 = 9;}
case 2:{color2 = 10;}
case 3:{color2 = 11;}
case 4:{color2 = 12;}
case 5:{color2 = 13;}
case 6:{color2 = 14;}
case 7:{color2 = 15;}
case 8:{color2 = 37;}
case 9:{color2 = 38;}
case 10:{color2 = 39;}
}
DynVehicle[spawncar] = CreateVehicle(model,vSpawns[spawnid][0],vSpawns[spawnid][1],vSpawns[spawnid][2],vSpawns[spawnid][3],color1,color2,-1);
engloop:
vInfo[DynVehicle[spawncar]][engine] = random(875);
if(vInfo[DynVehicle[spawncar]][engine] <= 250) goto engloop;
SetVehicleHealth(DynVehicle[spawncar],vInfo[DynVehicle[spawncar]][engine]);
vInfo[DynVehicle[spawncar]][tires] = random(4);
vInfo[DynVehicle[spawncar]][gas] = random(50);
new str[128];
format(str,sizeof(str),"Engine: %.0f\nTires: %i\nGas: %i", vInfo[DynVehicle[spawncar]][engine],vInfo[DynVehicle[spawncar]][tires],vInfo[DynVehicle[spawncar]][gas]);
CarInfo[spawncar] = Create3DTextLabel(str,COLOR_WHITE,0,0,0,3,-1,0);
Attach3DTextLabelToVehicle(CarInfo[spawncar],DynVehicle[spawncar],0,0,1);
}
for(new i=0;i<MAX_DUMPS;i++)
{
new spawnid;
spawnloop:
spawnid = random(sizeof(vSpawns));
if(SpawnUsed[spawnid] == true) goto spawnloop;
SpawnUsed[spawnid] = true;
Dump[i] = CreateObject(1415,vSpawns[spawnid][0],vSpawns[spawnid][1],vSpawns[spawnid][2] - 1,0,0,vSpawns[spawnid][3] + 180);
DumpInfo[i] = Create3DTextLabel("Dumpster\n(/search)",COLOR_WHITE,vSpawns[spawnid][0],vSpawns[spawnid][1],vSpawns[spawnid][2],5,0,0);
}
return 1;
}
If a run time error 4 is caused inside that function, then it will stop the code. Use crashdetect plugin to be sure.
|
[11:15:14] [debug] Run time error 4: "Array index out of bounds" [11:15:14] [debug] Accessing element at index 4 past array upper bound 3 [11:15:14] [debug] AMX backtrace: [11:15:14] [debug] #0 00007994 in ?? () from dyn_cars.amx [11:15:14] [debug] #1 000065b4 in ?? () from dyn_cars.amx [11:15:14] [debug] #2 00008c24 in public SSCANF_OnGameModeInit () from dyn_cars.amx [11:15:14] [debug] #3 native CallLocalFunction () [00472ad0] from samp-server.exe [11:15:14] [debug] #4 00000878 in public OnGameModeInit () from dyn_cars.amx
Use debug info: https://github.com/Zeex/samp-plugin-...ith-debug-info
Re-compile, start the server and post the results again (this time with the line caused it). Just so you know, an array was declared with size of 4. That means that the valid (in-bound) indexes are 0-3 and it passed 4 as index. |
//Delete3DTextLabel(DumpInfo[i]); << error line
//relevant
DumpInfo[i] = Create3DTextLabel("Dumpster\n(/search)",COLOR_WHITE,vSpawns[spawnid][0],vSpawns[spawnid][1],vSpawns[spawnid][2],5,0,0);
// (spawnid is a random number)
// spawn array example
{ 1715.647460, -1925.997436, 13.368518, 41.241798 },
In the loop you use Delete3DTextLabel function, the loop shouldn't be called more than the size of DumpInfo array.
|