Automatischer FahrzeugSpawn [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. :P


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • 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? :wacko:


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • 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. :D


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • BOMBER
    Ich glaube Dein Code hat einige Fehler..


    Zitat

    SetTimer("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.


    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 man


    for(new i = 0; i<sizeof(Autos); i++)



    Greetz
    #else


    P.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. ;)


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • 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

  • 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.... :thumbdown:

  • 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!