Hallo Community
Also ich habe einen Stunt Server,jedoch ist der nach ein Paar Stunden mit Autos zugemüllt.
Ich Möchte Fragen ob es Möglich ist alle Autos nach 1h zu zerstören also löschen.
Weiß jemand weiter ?
Mfg
Hallo Community
Also ich habe einen Stunt Server,jedoch ist der nach ein Paar Stunden mit Autos zugemüllt.
Ich Möchte Fragen ob es Möglich ist alle Autos nach 1h zu zerstören also löschen.
Weiß jemand weiter ?
Mfg
Timer starten , wenn der Timer abgerufen wird mit einer Schleife alle Autos löschen
Timer starten , wenn der Timer abgerufen wird mit einer Schleife alle Autos löschen
Und ? Ich brauch eine Anleitung dazu da ich von einer schleife 0 Ahnung hab
Wenn ein Fahrzeug erstellt wird, solltest du einer Player-Variable die Car-ID geben, wenn nochmal ein Fahrzeug aufgerufen wird, löschst du das Fahrzeug und setzt die Variable neu.
Beim disconnecten löschst du das Fahrzeug einfach. Fertig.
Leute das ist alles Schön und gut.
Aber ich brauch eine Anständige Anleitung dazu.
Ich kann ohne Anleitung nichts scripten da ich selber nicht weiß wie es geht.
Leute das ist alles Schön und gut.
Aber ich brauch eine Anständige Anleitung dazu.
Ich kann ohne Anleitung nichts scripten da ich selber nicht weiß wie es geht.
Was apolinaris meinte ist zum Beispiel:
new TestCar[MAX_VEHICLES];
Dann beim erstellen des Cars einfach:
TestCar[DIEVEHICLEID]=playerid;
Dann bei onplayerdisconnect eine Schleife durch alle Autos:
for(new i; i<MAX_VEHICLES; i++)
{
if(TestCar[i]==playerid)
{
DestroyVehicle(i);
}
}
//wenn Fehler drinn ist bitte verbessern
Alles anzeigen
Was apolinaris meinte ist zum Beispiel:
new TestCar[MAX_VEHICLES];
Dann beim erstellen des Cars einfach:
TestCar[DIEVEHICLEID]=playerid;
Dann bei onplayerdisconnect eine Schleife durch alle Autos:
for(new i; i{
if(TestCar[i]==playerid)
{
DestroyVehicle(i);
}
}
//wenn Fehler drinn ist bitte verbessern ;)[/i]
Und wie Funktioniert das dann bei den Anderen Verhicles ?
Genauso ?
Muss ich Einfach nur die Schleife reinmachen und alle Autos werden Deleted ?
Aber wieso unter OnPlayerDisconnect rein ?.... laggt das nicht wenn dauernd wer joint und leavet ?
Bitte um Bisschen Erklärung bin nicht gerade ein Guter Scripter
mach es dir doch nicht so schwer.
AddStaticVehicleEx(FahrzeugID,PosX,PosY,PosZ,Rotation,Respawnzeit);
//edit
//edit2
mach es dir doch nicht so schwer.
AddStaticVehicleEx(FahrzeugID,PosX,PosY,PosZ,Rotation,Respawnzeit);
//edit
Ich hab
Da Anscheinend zwischen AddStaticVehicleEx Und CreateVehicle kein Unterschied sein soll ?
Oder gibt es einen genaueren Unterschied ?
Mfg
ja, da du dem sagst, dass er nach ner gewissen zeit, wenn keiner drin sitzt, das auto respawnen soll.
ja, da du dem sagst, dass er nach ner gewissen zeit, wenn keiner drin sitzt, das auto respawnen soll.
Und wie kann ich es Verhindern ?
Wäre Besser wenn die Autos nachdem er sie verlässt gelöscht werden anstatt rezuspawnen
dann solltest du die schleifen methode anwenden. aber ich hab gerade überlegt, dass es bei OnPlayerDisconnect probleme geben könnte.
ich bin mir nicht ganz sicher, ob das den gewünschten effekt erziehlt, da man ja nicht ein auto dem spieler zuweisen kann. kann mich aber auch irren.
//edit
mir fällt gerade ein, was man machen könnte.
du könntest nen timer erstellen, der meinetwegen alle 10 sek prüft, ob irgendwo ein leeres fahrzeug steht und die dann löscht.
das ist die theorie.
Das Respawnen bringt ihn aber nicht weiter.
Also, eigentlich meinte Apollinaris (oder wie auch immer) folgendes:
New's
new Auto[MAX_PLAYERS];
Beim /veh Befehl:
if(Auto[playerid] != 0)
{
return SendClientMessage(playerid, COLOR_RED, "* Du hast bereits ein Fahrzeug gespawnt.");
}
Auto[playerid] = CreateVehicle(...);
Bei OnPlayerDisconnect:
DestroyVehicle(Auto[playerid]);
Auto[playerid] = 0;
Dann noch den Command zum Fahrzeug löschen:
if(!strcmp(cmdtext, "/delcar", true))
{
if(Auto[playerid] != 0)
{
DestroyVehicle(Auto[playerid]);
Auto[playerid] = 0;
SendClientMessage(playerid, COLOR_GREEN, "* Fahrzeug erfolgreich gelöscht.");
}
else
{
SendClientMessage(playerid, COLOR_RED, "* Du hast noch kein Fahrzeug gespawnt.");
}
return 1;
}
Voilá.
MfG
ATzeGER_
Beim Spawnen einen Timer (SetTimerEx) erstellen, welcher nach 360000 Millisekunden (= 1 Stunde (?)) aufgerufen wird und das Fahrzeug mittels DestroyVehicle(vehicleid); löscht.
Bei mehrerengespaenten Cars könnte es laggs verursachen da es doch sehr Ressourcen fressend ist
// Reste mal die Methode von atzeger_
Bei mehrerengespaenten Cars könnte es laggs verursachen da es doch sehr Ressourcen fressend ist
Dann halt nur einen Timer erstellen, welcher jede Stunde alle gespawnten, unbenutzen Autos löscht.
Dann halt nur einen Timer erstellen, welcher jede Stunde alle gespawnten, unbenutzen Autos löscht.
Wie gesagt: das von atzeger_ ma testen
also ich hab mir das so vorgestellt:
#define CAR_AMOUNT 600
public OnGameModeInit()
{
SetTimer("carspawn",10000,1);
return 1;
}
forward carspawn();
public carspawn()
{
new bool:unwanted[CAR_AMOUNT];
for(new player=0; player<MAX_PLAYERS; player++)
{
if(IsPlayerInAnyVehicle(player)) { unwanted[GetPlayerVehicleID(player)]=true; }
}
for(new car = 1; car <= 420; car++)
{
if(!unwanted[car]) SetVehicleToRespawn(car);
}
return 1;
}
ich hab den timer jetzt mal auf 10 sek gestellt. kann man ja beliebig ändern.
//edit
Dies bewirkt jetzt, dass der timer alle 10 sek prüft ob nen unbenutztes auto rumsteht und es dann spawnt.
aber mir ist aufgefallen, die sollen ja gelöscht werden und nicht neu gespawnt werden. mist. sorry is noch früh.
Oder man macht es so:
Spieler kann nur 3-4 Autos spawnen, wenn man 3 o. 4 gespawnt hat, kann man welche mit /delveh <1-4> löschen, dann kann man wieder neue spawnen, habe ich mal auf einem anderen Server gesehen.
Alles anzeigenDas Respawnen bringt ihn aber nicht weiter.
Also, eigentlich meinte Apollinaris (oder wie auch immer) folgendes:
New's
new Auto[MAX_PLAYERS];
Beim /veh Befehl:
if(Auto[playerid] != 0)
{
return SendClientMessage(playerid, COLOR_RED, "* Du hast bereits ein Fahrzeug gespawnt.");
}
Auto[playerid] = CreateVehicle(...);
Bei OnPlayerDisconnect:
DestroyVehicle(Auto[playerid]);
Auto[playerid] = 0;
Dann noch den Command zum Fahrzeug löschen:
if(!strcmp(cmdtext, "/delcar", true))
{
if(Auto[playerid] != 0)
{
DestroyVehicle(Auto[playerid]);
Auto[playerid] = 0;
SendClientMessage(playerid, COLOR_GREEN, "* Fahrzeug erfolgreich gelöscht.");
}
else
{
SendClientMessage(playerid, COLOR_RED, "* Du hast noch kein Fahrzeug gespawnt.");
}
return 1;
}
Voilá.
MfG
ATzeGER_
Okay Ich möchte aber jetzt angenommen 4 Slots Freihaben für die Autos für Jeden User
Was muss ich da machen ?
Mfg