Код:
public VehicleListener()
{
if(derby_sys_countdown > 0) { derby_sys_countdown --; }
if(derby_sys_countdown <= 4 && derby_sys_countdown > 0)
{
new str[64];
format(str,sizeof(str),"DERBY STARTS IN: %d",(derby_sys_countdown - 1));
for(new a = 0; a < MAX_PLAYERS; a ++)
{
if(IsPlayerConnectedEx(a))
{
if(derby_sys_driver[a])
{
GameTextForPlayer(a,str,1000,5);
if(derby_sys_countdown >= 2)
{
PlayerPlaySound(a,1056,0.0,0.0,0.0);
}
else if(derby_sys_countdown == 1)
{
PlayerPlaySound(a,1057,0.0,0.0,0.0);
TogglePlayerControllable(a,1);
}
}
}
}
}
if(nascar_sys_countdown > 0) { nascar_sys_countdown --; }
if(nascar_sys_countdown <= 4 && nascar_sys_countdown > 0)
{
new str[64];
format(str,sizeof(str),"RACE STARTS IN: %d",(nascar_sys_countdown - 1));
for(new a = 0; a < MAX_PLAYERS; a ++)
{
if(IsPlayerConnectedEx(a))
{
if(nascar_sys_driver[a])
{
GameTextForPlayer(a,str,1000,5);
if(nascar_sys_countdown >= 2)
{
PlayerPlaySound(a,1056,0.0,0.0,0.0);
}
else if(nascar_sys_countdown == 1)
{
PlayerPlaySound(a,1057,0.0,0.0,0.0);
TogglePlayerControllable(a,1);
RefreshNascarStage(a);
}
}
}
}
}
for(new slot = 0; slot < MAX_RP_VEHICLES; slot ++)
{
if(VehicleInfo[slot][vVehicle] > -1)
{
if(sync_engine_off[VehicleInfo[slot][vVehicle]]) { StopEngine(VehicleInfo[slot][vVehicle]); sync_engine_off[VehicleInfo[slot][vVehicle]] = 0; }
if(sync_attribs[VehicleInfo[slot][vVehicle]]) { AddVehicleMods(VehicleInfo[slot][vVehicle]); ResyncColors(VehicleInfo[slot][vVehicle]); sync_attribs[VehicleInfo[slot][vVehicle]] = 0; }
if(VehicleInfo[slot][vSelling] > -1)
{
if(gettime() >= VehicleInfo[slot][vSellingExpire])
{
if(!vehicle_creating)
{
vehicle_creating = 1;
SendMail(VehicleInfo[slot][vOwner],"Your sale has expired","Unfortunatelly your vehicle sale has expired, we couldnt find anyone that wanted your car!","Palomino Creek Used Vehicles",(slot + 20000));
VehicleInfo[slot][vSelling] = -1;
VehicleInfo[slot][vSellingExpire] = 0;
VehicleInfo[slot][vSellingPrice] = 0;
DestroyVehicle(VehicleInfo[slot][vVehicle]);
VehicleInfo[slot][vVehicle] = CreateVehicle(VehicleInfo[slot][vModel],VehicleInfo[slot][vSpawnX],VehicleInfo[slot][vSpawnY],VehicleInfo[slot][vSpawnZ],VehicleInfo[slot][vSpawnR],VehicleInfo[slot][vColor1],VehicleInfo[slot][vColor2],-1);
if(strlen(VehicleInfo[slot][vPlate])) { SetVehicleNumberPlate(VehicleInfo[slot][vVehicle],VehicleInfo[slot][vPlate]); }
sync_attribs[VehicleInfo[slot][vVehicle]] = 1;
sync_engine_off[VehicleInfo[slot][vVehicle]] = 1;
for(new bizes = 0; bizes < MAX_BIZES; bizes ++)
{
if(BizInfo[bizes][bType] == BIZ_TYPE_VAUCTION)
{
for(new z = 0; z < 5; z ++)
{
if(used_vehicle_slots[bizes][z] == slot)
{
DestroyPickup(used_vehicle_pickups[bizes][z]);
used_vehicle_slots[bizes][z] = -1;
used_vehicle_pickups[bizes][z] = 0;
}
}
}
}
vehicle_creating = 0;
}
}
}
if(IsEngineOn(VehicleInfo[slot][vVehicle]) && !sync_engine_off[VehicleInfo[slot][vVehicle]] && !IsPushbike(GetVehicleModel(VehicleInfo[slot][vVehicle])))
{
if(fuel_interval[VehicleInfo[slot][vVehicle]] <= 0) { VehicleInfo[slot][vFuel] --; fuel_interval[VehicleInfo[slot][vVehicle]] = FetchFuelInterval(VehicleInfo[slot][vVehicle]); FuelCheck(VehicleInfo[slot][vVehicle]); }
else if(fuel_interval[VehicleInfo[slot][vVehicle]] > 0) { fuel_interval[VehicleInfo[slot][vVehicle]] --; }
}
if(vehicle_alarm_time[VehicleInfo[slot][vVehicle]] == 1)
{
StopAlarm(VehicleInfo[slot][vVehicle]);
vehicle_alarm_time[VehicleInfo[slot][vVehicle]] = 0;
}
if(vehicle_alarm_time[VehicleInfo[slot][vVehicle]] > 1)
{
vehicle_alarm_time[VehicleInfo[slot][vVehicle]] --;
}
if(VehicleInfo[slot][vDeathTime] == 1)
{
new vehowner = -1;
for(new a = 0; a < MAX_PLAYERS; a ++)
{
if(IsPlayerConnectedEx(a))
{
if(CharacterInfo[a][active_character[a]][cID] == VehicleInfo[slot][vOwner])
{
vehowner = a;
}
}
}
if(vehowner > -1)
{
new vname[256];
new str[256];
GetVehicleNameByModel(VehicleInfo[slot][vModel],vname);
format(str,sizeof(str),"You failed to redeem your %s in time. You have lost it!",vname);
SendClientMessageA(vehowner,COLOR_LIGHTRED,str);
VehicleInfo[slot][vOwner] = 0;
VehicleInfo[slot][vInsurance] = 0;
VehicleInfo[slot][vDestroyed] = 0;
VehicleInfo[slot][vModel] = 0;
VehicleInfo[slot][vSpawnX] = 0.0;
VehicleInfo[slot][vSpawnY] = 0.0;
VehicleInfo[slot][vSpawnZ] = 0.0;
VehicleInfo[slot][vDeathTime] = 0;
format(str,sizeof(str),"UPDATE rp_vehicles SET truncated = 1 WHERE id = '%d'",VehicleInfo[slot][vID]);
mysql_query(str,slot);
}
}
if(VehicleInfo[slot][vDeathTime] > 1)
{
VehicleInfo[slot][vDeathTime] --;
}
if(startup_delay[VehicleInfo[slot][vVehicle]] > 0)
{
startup_delay[VehicleInfo[slot][vVehicle]] --;
if(startup_delay[VehicleInfo[slot][vVehicle]] == 0 && IsPlayerInVehicle(startup_delay_sender[VehicleInfo[slot][vVehicle]],VehicleInfo[slot][vVehicle]))
{
new vname[128];
GetVehicleNameByModel(GetVehicleModel(VehicleInfo[slot][vVehicle]),vname);
new str[128];
format(str,sizeof(str),"starts the %s's engine",vname);
SendEmote(startup_delay_sender[VehicleInfo[slot][vVehicle]],str);
StartEngine(VehicleInfo[slot][vVehicle]);
startup_delay_sender[VehicleInfo[slot][vVehicle]] = -1;
}
else if(startup_delay[VehicleInfo[slot][vVehicle]] == 0) { startup_delay_sender[VehicleInfo[slot][vVehicle]] = -1; }
}
}
}
for(new i = 0; i < MAX_VEHICLES; i ++)
{
if(GetVehicleDistanceFromPoint(i,vpos[i][0],vpos[i][1],vpos[i][2]) > 15.0 && vpos[i][0] != 0.0 && vpos[i][1] != 0.0 && vpos[i][2] != 0.0)
{
if(!IsAnyPlayerInVehicle(i))
{
SetVehiclePosEx(i,vpos[i][0],vpos[i][1],vpos[i][2]);
SetVehicleZAngle(i,vpos[i][3]);
printf("Vehicle ID: %d just travelled more than 15 meters with no one in it! Resetting its position.");
}
}
new Float:X, Float:Y, Float:Z, Float:R;
GetVehiclePos(i,X,Y,Z);
GetVehicleZAngle(i,R);
vpos[i][0] = X;
vpos[i][1] = Y;
vpos[i][2] = Z;
vpos[i][3] = R;
}
}
65535 is INVALID_VEHICLE_ID, and you're trying to access array of size MAX_VEHICLES at index INVALID_VEHICLE_ID.