Ist zwar etwas ziemlich einfaches, aber ich finde es ist nicht wirklich Reallife,
das wen man in ein Auto steigt, wieder automatisch aussteigt, wen man nicht der
Fraktion zugehört.
Das könnte man eigentlich für GF und Selfmade verwenden, ich benutze es für
mein Selfmade Script, naja ich zeigs euch mal.
OnPlayerEnterVehicle
Hier setzen wir hin, bei welchen Autos es passieren soll, wie das bei Godfather steht, müsst
ihr leider selbst herrausfinden, habe momentan kein GF hier. Also, die vehicleids sind beim GF
vielleicht COP1 COP2 müsst ihr mal schauen, ich weiß nicht genau.
Bei einem Selfmade wäre es z.b :
if(vehicleid == FAHRZEUG1 || vehicleid == FAHRZEUG2)
{
if(// Welcher Person soll der Zugriff erlaubt werden ? z.b Cops)
{
//Was passieren soll, wen das oben stimmt!
}
else
{
SetTimer("einsteigen", ZEIT ,0); // Wenn nicht läuft dieser Timer ab.
}
}
Wieso ich dort schon einen Timer hinsetze, anstatt ihn sofort zu Freezen ?
Da ich das problem hatte, und manche anderen bestimmt auch, wen man
Einsteigen drückt, wird er sofort ausserhalb gefreezt, und da der Command
nur in einem Auto geht, konnte ich dan nicht aussteigen oder das Auto nicht
kurzschliessen! Deshalb läuft eine Zeit ab, die du oben definierst, die Zeit
sollte nicht mehr als 5000 betragen (5000ms) da der Spieler sonst
wen die Zahl zu hoch ist, weiterfahren kann, oder wen die Zahl zu niedrig
ist, wird er wieder ausserhalb gefreezt. 5000 reichen locker, und sind super.
Bei
OnPlayerCommandText
if(!strcmp(cmdtext,"/kurzschliessen"))
{
if(IsPlayerConnected(playerid)) //Ist der Spieler mit dem Server verbunden ?
{
if(IsPlayerInAnyVehicle(playerid)) // Sitzt der Spieler in einem Auto ?
{
SendClientMessage(playerid,COLOR_GREEN,"Du brauchst 15 Sekunden, um das Auto kurzschliessen zu können!"); //Text wird gesendet!
SetTimer("kurzschliessen", 15000, 0); // Hier wird der Timer ausgeführt, der die Zeit zum kurzschliessen angibt!
// Die Zeit könnt ihr beliebig ändern, jedoch 15 Sekunden sind eigentlich reichlich ;)
TogglePlayerControllable(playerid, 0); // Hier wird der Spieler gefreezt beim kurzschliessen
}
else
{
SendClientMessage(playerid,COLOR_RED,"Du sitzt in keinem Auto!");
}
return 1;
}
}
Danach erstellen wir noch das Public das für den Timer die Funktionen wiedergibt.
public kurzschliessen(playerid)
{
if(IsPlayerConnected(playerid)) // Wie oben, ist der Spieler mit dem Server verbunden ?
{
if(IsPlayerInAnyVehicle(playerid)) // Ist der Spieler in einem Auto ?
{
TogglePlayerControllable(playerid, 1); //Spieler wird entfreezt (bekommt seine Kontrolle wieder)
SendClientMessage(playerid,COLOR_GREEN,"Du hast das Auto kurzgeschlossen!");
}
}
return 1;
}
Edit Ganz vergessen
public einsteigen(playerid)
{
if(IsPlayerConnected(playerid))
{
new pwanted; //Neue Variable
pwanted = GetPlayerWantedLevel(playerid); //Hier wird in die Variable das momentane Wantedlevel geschrieben
SendClientMessage(playerid,FARBE,"Du kannst das auto mit /kurzschliessen kurzschliessen!"); //Der Text
SendClientMessage(playerid,FARBE,"Oder du verlässt das Auto mit /aussteigen");
SetPlayerWantedLevel(playerid,pwanted +1); //Hier wird dem momentanen Wanted +1 gerechnet
TogglePlayerControllable(playerid, 0); //Hier wird der Spieler gefreezt
}
return 1;
}
Noch einen Command, zum aussteigen, wen man keine 15 Sekunden warten kann
if(!strcmp(cmdtext,"/aussteigen"))
{
if(IsPlayerConnected(playerid)) //Ist der spieler mit dem Server verbunden ?
{
if(IsPlayerInAnyVehicle(playerid)) //Sitzt der Spieler im auto ?
{
RemovePlayerFromVehicle(playerid); //spieler wird aus dem Auto geworfen
TogglePlayerControllable(playerid, 1);
}
else
{
SendClientMessage(playerid,COLOR_RED,"Du sitzt in keinem Auto!"); //Nachricht wen der Spieler nicht im Auto sitzt!
}
}
return 1;
}