public OnPlayerStateChange(playerid, newstate, oldstate)
{
switch(PI[playerid][P_GAMEMODE])
{
case M_DERBY:
{
if(oldstate == PLAYER_STATE_DRIVER) //I think this is the problem
{
if(PI[playerid][P_STATUS] == STATUS_SPAWNED && PI[playerid][P_DERBY_STATUS] == PD_NORMAL)
{
if(!IsValidVehicle(PI[playerid][P_DERBY_VEHICLEID]) && PI[playerid][P_DERBY_VEHICLEID] != INVALID_VEHICLE_ID)
{
if(IsValidVehicle(PI[playerid][P_DERBY_VEHICLEID]) && PI[playerid][P_DERBY_VEHICLEID] != INVALID_VEHICLE_ID)
{
DestroyVehicle(PI[playerid][P_DERBY_VEHICLEID]);
PI[playerid][P_DERBY_VEHICLEID] = INVALID_VEHICLE_ID;
}
PI[playerid][P_DERBY_VEHICLEID] = CreateVehicle(DI[MODELID], DERBY_SPAWN_POS[ PI[playerid][P_DERBY_SLOT] ][0], DERBY_SPAWN_POS[ PI[playerid][P_DERBY_SLOT] ][1], DERBY_SPAWN_POS[ PI[playerid][P_DERBY_SLOT] ][2] + 2.0, DERBY_SPAWN_POS[ PI[playerid][P_DERBY_SLOT] ][3], -1, -1, -1, false);
SetVehicleVirtualWorld(PI[playerid][P_DERBY_VEHICLEID], DERBY_VW);
SetVehicleParamsEx(PI[playerid][P_DERBY_VEHICLEID], VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, 1, 0, 0, 0);
PutPlayerInVehicle(playerid, PI[playerid][P_DERBY_VEHICLEID], 0);
return 1;
}
PutPlayerInVehicle(playerid, PI[playerid][P_DERBY_VEHICLEID], 0);
}
}
return 1;
}
}
return 1;
}
case ENTER_DERBY:
{
PI[playerid][P_DERBY_VEHICLEID] = INVALID_VEHICLE_ID;
switch(DI[STATUS])
{
case DERBY_CLOSED:
{
if(TOTAL_DERBYS == 0) return 1;
if(TOTAL_DERBYS_OK == 0) return 1;
new found, id = DI[MAP_ID];
while(!found)
{
if(id >= TOTAL_DERBYS) id = 0;
if(DERBY_FILE_INFO[id][DERBY_FILE_VALID])
{
found = true;
DI[MAP_ID] = id;
break;
}
id ++;
}
if(!LoadDerby(DERBY_FILE_INFO[ DI[MAP_ID] ][DERBY_NAME]))
{
CloseDerby();
return 1;
}
DI[STATUS] = DERBY_WAIT;
DI[PLAYERS] = 0;
DI[COUNTDOWN_COUNTER] = 11;
KillTimer(DI[COUNTDOWN_TIMER]);
DI[COUNTDOWN_TIMER] = SetTimer("DerbyCountdown", 900, true);
PI[playerid][PR_DERBY_SLOT] = GetDerbyVehicleSlot();
if(PI[playerid][PR_DERBY_SLOT] == -1)
{
KickPlayerFromDerby(playerid);
EnterPlayerMode(playerid, ENTER_FREEROAM);
return 1;
}
DI[PLAYERS] ++;
DERBY_SLOT_USED[ PI[playerid][PR_DERBY_SLOT] ] = true;
PI[playerid][P_GAMEMODE] = M_DERBY;
SetPlayerHealth(playerid, 100.0);
SetPlayerArmour(playerid, 0.0);
SetPlayerInterior(playerid, 0);
ResetPlayerWeapons(playerid);
SetPlayerVirtualWorld(playerid, DERBY_WORLD);
if(IsValidVehicle(PI[playerid][P_DERBY_VEHICLEID]) && PI[playerid][P_DERBY_VEHICLEID] != INVALID_VEHICLE_ID)
{
DestroyVehicle(PI[playerid][P_DERBY_VEHICLEID]);
PI[playerid][P_DERBY_VEHICLEID] = INVALID_VEHICLE_ID;
}
TogglePlayerControllable(playerid, true);
PI[playerid][P_DERBY_STATUS] = PD_NORMAL;
PI[playerid][P_DERBY_VEHICLEID] = CreateVehicle(DI[MODELID], DERBY_SPAWN_POS[ PI[playerid][PR_DERBY_SLOT] ][0], DERBY_SPAWN_POS[ PI[playerid][PR_DERBY_SLOT] ][1], DERBY_SPAWN_POS[ PI[playerid][PR_DERBY_SLOT] ][2] + 2.0, DERBY_SPAWN_POS[ PI[playerid][PR_DERBY_SLOT] ][3], -1, -1, -1, false);
SetVehicleParamsEx(PI[playerid][P_DERBY_VEHICLEID], VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, 1, 0, 0, 0);
SetVehicleVirtualWorld(PI[playerid][P_DERBY_VEHICLEID], DERBY_WORLD);
PutPlayerInVehicle(playerid, PI[playerid][P_DERBY_VEHICLEID], 0);
TextDrawShowForPlayer(playerid, TD_DERBY[9]);
new str[24]; format(str, sizeof(str), "~w~%s", DI[NAME]);
GameTextForPlayer(playerid, str, 3000,1);
}
case DERBY_WAIT:
{
PI[playerid][PR_DERBY_SLOT] = GetDerbyVehicleSlot();
if(PI[playerid][PR_DERBY_SLOT] == -1)
{
KickPlayerFromDerby(playerid);
EnterPlayerMode(playerid, ENTER_FREEROAM);
return 1;
}
DI[PLAYERS] ++;
DERBY_SLOT_USED[ PI[playerid][PR_DERBY_SLOT] ] = true;
PI[playerid][P_GAMEMODE] = M_DERBY;
SetPlayerHealth(playerid, 100.0);
SetPlayerArmour(playerid, 0.0);
SetPlayerInterior(playerid, 0);
ResetPlayerWeapons(playerid);
SetPlayerVirtualWorld(playerid, DERBY_WORLD);
if(IsValidVehicle(PI[playerid][P_DERBY_VEHICLEID]) && PI[playerid][P_DERBY_VEHICLEID] != INVALID_VEHICLE_ID)
{
DestroyVehicle(PI[playerid][P_DERBY_VEHICLEID]);
PI[playerid][P_DERBY_VEHICLEID] = INVALID_VEHICLE_ID;
}
TogglePlayerControllable(playerid, true);
PI[playerid][P_DERBY_STATUS] = PD_NORMAL;
PI[playerid][P_DERBY_VEHICLEID] = CreateVehicle(DI[MODELID], DERBY_SPAWN_POS[ PI[playerid][PR_DERBY_SLOT] ][0], DERBY_SPAWN_POS[ PI[playerid][PR_DERBY_SLOT] ][1], DERBY_SPAWN_POS[ PI[playerid][PR_DERBY_SLOT] ][2] + 2.0, DERBY_SPAWN_POS[ PI[playerid][PR_DERBY_SLOT] ][3], -1, -1, -1, false);
SetVehicleParamsEx(PI[playerid][P_DERBY_VEHICLEID], VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, 1, 0, 0, 0);
SetVehicleVirtualWorld(PI[playerid][P_DERBY_VEHICLEID], DERBY_WORLD);
PutPlayerInVehicle(playerid, PI[playerid][P_DERBY_VEHICLEID], 0);
TextDrawShowForPlayer(playerid, TD_DERBY[9]);
new str[24]; format(str, sizeof(str), "~w~%s", DI[NAME]);
GameTextForPlayer(playerid, str, 3000,1);
}
case DERBY_RUNNING:
{
DI[PLAYERS] ++;
SetPlayerVirtualWorld(playerid, DERBY_WORLD);
PI[playerid][P_DERBY_STATUS] = PD_NORMAL;
PI[playerid][P_GAMEMODE] = M_DERBY;
SetPlayerHealth(playerid, 100.0);
SetPlayerArmour(playerid, 0.0);
SetPlayerInterior(playerid, 0);
ResetPlayerWeapons(playerid);
SetPlayerVirtualWorld(playerid, DERBY_WORLD);
if(IsValidVehicle(PI[playerid][P_DERBY_VEHICLEID]) && PI[playerid][P_DERBY_VEHICLEID] != INVALID_VEHICLE_ID)
{
DestroyVehicle(PI[playerid][P_DERBY_VEHICLEID]);
PI[playerid][P_DERBY_VEHICLEID] = INVALID_VEHICLE_ID;
}
TogglePlayerControllable(playerid, true);
TextDrawShowForPlayer(playerid, TD_DERBY[10]);
TextDrawShowForPlayer(playerid, TD_DERBY[9]);
PI[playerid][P_DERBY_STATUS] = PD_DEAD;
for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
{
if(IsPlayerConnected(i))
{
if(PI[i][P_GAMEMODE] == M_DERBY)
{
if(PI[i][P_DERBY_STATUS] == PD_NORMAL)
{
PI[playerid][PR_DERBY_SPEC] = i;
break;
}
}
}
}
TogglePlayerSpectating(playerid, true);
PlayerSpectateVehicle(playerid, PI[ PI[playerid][PR_DERBY_SPEC] ][P_DERBY_VEHICLEID]);
TextDrawSetString(TD_DERBY[9], "~w~Presiona_~g~intro_~w~para cambiar de jugador");
return 1;
}
}
return 1;
}
CMD:derby(playerid, params[])
{
if(PI[playerid][P_GAMEMODE] == M_DERBY) return 1;
if(DI[PLAYERS] >= MAX_DERBY_PLAYERS)
{
SendClientMessage(playerid, -1, "COMPLETE! 20/20.");
return 1;
}
ExitPlayerGameMode(playerid);
JoinPlayerGameMode(playerid, GAME_DERBY);
return 1;
}
Any filterscripts that you are running?
Link to the derby system? |
SetTimerEx("test", 3000, false, "i", playerid); //In the code
forward test(playerid);
public test(playerid)
{
PutPlayerInVehicle(playerid, PI[playerid][P_DERBY_VEHICLEID], 0);
return 1;
}