Hallo zusammen. Ich habe nun meinen noobspawn fertig. nun möchte ich aber einstellen das wenn das fahrzeug mindestens 5 minten leer steht das es wieder ans seiner stelle spawnt o der noobspawn ist. kann mir wer weiter helfen ?
Automatischer FahrzeugSpawn [Erledigt]
- Valrineya
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Hallo zusammen. Ich habe nun meinen noobspawn fertig. nun möchte ich aber einstellen das wenn das fahrzeug mindestens 5 minten leer steht das es wieder ans seiner stelle spawnt o der noobspawn ist. kann mir wer weiter helfen ?
Ich werds dir mal versuchen zu erklären.
//Oben im Script:
new Autos[32]; //Anpassen..Autos[0] = AddStaticVehic... //0, weil PAWN immer bei 0 anfängt zu zählen..
//OnGamemodeinit:
SetTimer("AutoRespawn", 5*60, true); //Wir erstellen einen Timer, 5*60 = 5x 60 Sek... = 5 Minuten..
//Public fürs Respawnen:
forward AutoRespawn();
public AutoRespawn(); //Timer wird nach 5 Minuten aufgerufen >>
{
for(new i = 0; i <MAX_VEHICLES; i++) //Erhöhe i bis = MAX_VEHICLES... (Durchgeht alle Autos..);
{
if(!IsVehicleUsed(Autos[i]))
{
SetVeicleToRespawn(Autos[i]); //Auto wird, respawnt, falls es nicht benutzt wird. :D
}
}
}
//Stock IsVehicleUsd (Überprüft, ob das Fahrzeug benutzt wird..);
stock IsVehicleUsed(vehicleid)
{
for(new playerid; playerid < MAX_PLAYERS; playerid++)
{
if(IsPlayerConnected(playerid) && GetPlayerVehicleID(playerid) == vehicleid)
{
return 1;
}
}
return 0;
}Sollte funktionieren, ungetestet.
-
Braucht man nicht so komplex und Resourcenunfreundlich zu machen.
Einfach den Respawndelay nutzen welcher bei den Funktionen AddStaticVehicleEx bzw. CreateVehicle vorhanden ist.
-
Braucht man nicht so komplex und Resourcenunfreundlich zu machen.
Einfach den Respawndelay nutzen welcher bei den Funktionen AddStaticVehicleEx bzw. CreateVehicle vorhanden ist.
Daran hab ich garnicht gedacht, danke.
Naja, aber kann man damit auch einstellen, ob das Car benutzt ist?
-
Der Delay wird nur gestartet sobald keiner in dem bestimmten Fahrzeug ist.
-
wo kommt das forward hin Oo
-
wo kommt das forward hin Oo
Mach es mal lieber, mit dem RespawnDelay, wie es ulbi1990 meinte.
Forwards können überall deklariert werden..
Nach der letzten } vom Callback davor.. z.b:
public OnPlayerSpawn(playerid)
{
return 1;
}
forward bsp();
public bsp()
{
//Funktion..
}
//Edit kann auch oben im Gamemode forwarded werden. -
BOMBER
Ich glaube Dein Code hat einige Fehler..ZitatSetTimer("AutoRespawn", 5*60, true); //Wir erstellen einen Timer, 5*60 = 5x 60 Sek... = 5 Minuten..
5*60 = 300.. Sprich 300Ms.. Wenn dann 5*60000 = 300000MS = 5 Minuten.
Zitatstock IsVehicleUsed(vehicleid)
{
for(new playerid; playerid < MAX_PLAYERS; playerid++)
{
if(IsPlayerConnected(playerid) && GetPlayerVehicleID(playerid) == vehicleid)
{
return 1;
}
}
return 0;
}Ist unnötig da es von SAMP aus die Funktion "IsVehicleInUse" gibt.
Verwendung dafür wäre
if(IsVehicleInUse(vehicleid))Dann die Schleife.. DIe ist auch ziemlich doof da diese so lange erhöht bis MAX_VEHICLES erreicht ist.
Dabei kann man es viel besser gestallten indem manfor(new i = 0; i<sizeof(Autos); i++)
Greetz
#elseP.s
Ich schreibe gleich nen kurzen Code... -
BOMBER
Ich glaube Dein Code hat einige Fehler..5*60 = 300.. Sprich 300Ms.. Wenn dann 5*60000 = 300000MS = 5 Minuten.
Ist unnötig da es von SAMP aus die Funktion "IsVehicleInUse" gibt.
Verwendung dafür wäre
if(IsVehicleInUse(vehicleid))Dann die Schleife.. DIe ist auch ziemlich doof da diese so lange erhöht bis MAX_VEHICLES erreicht ist.
Dabei kann man es viel besser gestallten indem manfor(new i = 0; i<sizeof(Autos); i++)
Greetz
#elseP.s
Ich schreibe gleich nen kurzen Code...Natürlich kann man es besser gestalten.
Habe ja auch oben extra dazu geschrieben: Ungetestet.
Hatte das nur schnell in 5 Minuten geschrieben & Die Funktion "IsVehicleInUse" kannte ich auch noch nicht, danke.
//Edit: Denke mal Ulbis Methode wäre die einfache, die Parameter von AddStaticVehi... zu nutzen, um die Autos zu respawnen.
-
So, bittesehr.
Das ganze musst Du vernünftig in Dein Script einbauen, die Variablen anpassen und alles sollte funktionieren.
//Bei Deinen ganzen New's
new Autos[2];//OnGameModeInit
Autos[0] = AddStaticVehicleEx(ID,x,y,z,rx,ry,rz,-1);
Autos[1] = AddStaticVehicleEx(ID,x,y,z,rx,ry,rz,-1);SetTimer("RespawnEmptyCar",5*60000,true);//5*60000 = 5 Minuten | true = Wiederholung false = Keine Wiederholung
//Callback
forward RespawnEmptyCar();
public RespawnEmptyCar()
{
for(new i = 0; i<sizeof(Autos); i++){
if(!IsVehicleInUse(Autos[i])){
SetVehicleToRespawn(Autos[i]);
}
}
return 1;
}Hoffe ich konnte helfen.
Greetz
#else -
-
AddStaticVehicleEx ... ganz am ende die zahl (in sek)
-
Erklärt es ihm halt noch komplizierter.........
unglaublich :AddStaticVehicleEx(CarID, Xpos,Ypos, Zpos, angle, Farbe 1, Farbe 2, respawnzeit in Sek); // wenn du bei respawnzeit -1 einträgst, respawnen sie erst wenn sie kaputt sind.
einfach deine daten eintragen und fertig.
Mfg
PullDown
//edit : zusatz
-
PullDown und Stallone fals man alles einmal richtig durchliest habe ich dies schon längst gesagt, dass er dafür einfach nur den Respawn Delay nutzen soll. D.h. Ihr braucht nicht alles tausendmal wiederholen.
PS: Aber das ist ja normal, dass man nur die Hälfte eines Topics liest und dann nicht weiss was schon gepostet wurde....
-
warum hast du ihm das nicht gleich erklärt an Hand eines Beispieles ???
naja, jetzt hat er nen Beispiel und gut ist. -
Warum soll man alles mit einem Beispiel erklären willste mich rollen? Es gibt so etwas schönnes das nennt sich Wiki, wo zudem Meta auch noch sehr stark am deutschen Teil arbeitet. Also dezent Brain starting sollte jeder haben. Und dies sind die Grundkenntnisse, wenn man nichtmal das kann sollte man nochmals von 0 Anfangen!
-
vielen dank klappt ganz einfach mit AddStaticVehicleEx
-
breadfish.de
Hat das Thema geschlossen.