Hallo,
Ich habe eben den Job Bussfahrer gescriptet (nur eine linie für einen FunServer also nicht viel Extras).
Ich bin gerade mit einem die Linie gefahren und irgendwie wurden immer wieder Checkpoints übersprungen.
Das ganze geschiet über eine Abfrage der einer Variable über switch und case.
Ist es möglich die Variable so zu gestalten, dass sie für jeden spieler einzelnd da ist?
Weil ich denke es liegt daran das sich das überschnitten hat.
Hier mal ein Teil vom Code weil ich nicht denke das alles hier rein muss.
public OnPlayerEnterCheckpoint(playerid)
{
new vehicleid = GetPlayerVehicleID(playerid);
switch(busl1)
{
case 0:
{
if(GetVehicleModel(vehicleid) == 437)
{
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,824.7072,-1051.4197,24.7785,10);
busl1 = 1;
}
else
{
SendClientMessage(playerid,BLAU,"Du sitzt nicht mehr im Bus.(Linie Abgebrochen!)");
DisablePlayerCheckpoint(playerid);
}
}
case 1:
{
if(GetVehicleModel(vehicleid) == 437)
{
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,1237.6943,-943.4542,42.1660,10);
busl1 = 2;
}
else
{
SendClientMessage(playerid,BLAU,"Du sitzt nicht mehr im Bus.(Linie Abgebrochen!)");
DisablePlayerCheckpoint(playerid);
}
}
case 2:
{
if(GetVehicleModel(vehicleid) == 437)
{
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,1433.2676,-1037.2535,23.3188,10);
busl1 = 3;
}
else
{
SendClientMessage(playerid,BLAU,"Du sitzt nicht mehr im Bus.(Linie Abgebrochen!)");
DisablePlayerCheckpoint(playerid);
}
}
...
case 15:
{
if(GetVehicleModel(vehicleid) == 437)
{
DisablePlayerCheckpoint(playerid);
SendClientMessage(playerid,BLAU,"Du hast die Linie beendet und erhälst 15000$.");
GivePlayerMoney(playerid,15000);
}
else
{
SendClientMessage(playerid,BLAU,"Du sitzt nicht mehr im Bus.(Linie Abgebrochen!)");
DisablePlayerCheckpoint(playerid);
}
}
}
return 1;
}
Und hier der Command mit der die Linie anfängt:
ocmd:buslinie1(playerid,params[])
{
busl1 = 0;
SetPlayerCheckpoint(playerid,894.9324,-1316.7056,13.0776,10);
return 1;
}
Die Variable ist oben im script difinirt:
new busl1;