Repair und Spawn

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
  • Guten Abend,


    ich versuche mir für Flugübungszwecke ein Script zu basteln, bei dem ich mir eine Hydra per Befehl (zum beispiel /Hydra) spawnen kann. Zudem wäre es toll wenn alle 5 Sekunden ein /repair für die Hydra ausgeführt wird. Ich habe leider keine Idee wie ich beginnen kann. Hat jemand eine Idee?

    Deine Werbung hier?
    Niemals!
    Denn hier steht GTA:Westcoast
    gtawc.de

  • Wenn du eine Hydra etc. spawnen lassen möchtest nimmst du am besten ganz einfach das beigelieferte fsdebug filterscript "/v hydra".
    Repair machst du mit einem Timer. Jedoch wird ein 5 Sekunden Timer bei einer Hydra nicht viel bringen, deshalb empfehle ich dir bei OnVehicleDamageStatusUpdate das Fahrzeug immer wieder zu repairen, wenn es keine 1000 Leben mehr hat.

  • Okay, wobei hab gerade meins getestet...Schwachsinn, hier wird nur auf den optischen Schaden reagiert..da es bei der Hydra keinen gibt -> Explosion


    Nimm einfach OnPlayerUpdate:



    public OnPlayerUpdate(playerid)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    RepairVehicle(vehicleid);
    }
    return 1;
    }

  • Bei so etwas brauchst du keinen Timer.
    Dafür würde ich eben OnPlayerUpdate herziehen, da dieser Public mehrmals die Sekunde aufgerufen wird. (Das heißt, wenn du einen Timer erstellst müsste er ebenfalls alle paar ms aufgerufen werden.)


    Wenn du ein Infernus fahren würdest, wäre ein 5 Sekunden Timer ja ganz ok, aber ich denke du weißt selber wie schnell eine Hydra im A**** ist.

  • Ach so echt? Ich dachte da ist das Flugzeug mit einem Mal kaputt, da kann ja eigentlich ein Repair auch nicht mehr helfen...


    aber im Ernst: Ich will ja den Flugskill erhöhen, wenn ich nicht kaputt gehen kann, kann ich mich nicht verbessern :)

    Deine Werbung hier?
    Niemals!
    Denn hier steht GTA:Westcoast
    gtawc.de

  • Okay gut dachte nur...


    Ja dann machst du das am besten mit einen Timer.


    Oben im Script:


    forward AutoRepair(playerid);


    OnGameModeInit:
    SetTimer("AutoRepair",2000,1); /*"2000" = 2 Sekunden bitte selber anpassen, wie schnell es repairt werden soll. */


    Irgendwo unten am besten außerhalb eines Publics:



    public AutoRepair(playerid)
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    RepairVehicle(vehicleid);
    }

    • Offizieller Beitrag

    SetTimer("AutoRepair",2000,1); /*"2000" = 2 Sekunden bitte selber anpassen, wie schnell es repairt werden soll. */

    Das ganze wird so nicht funktionieren, du musst ja auch Playerid übergeben. Dementsprechend muss man folgendes unter OnPlayerConnect erstellen:


    SetTimerEx("AutoRepair", 2000, true, "d", playerid);


    Parameter: (funcname[], interval, repeating, const format[], {Float,_}:...)

  • Uh Hoppla :P


    Ja gut dann machst du das ganze mit dem Muster vom Cireyses. (Also einfach das SetTimer mit dem SetTimerEx ersetzen.)....Oder bei meinem Beispiel einfach eine for Schleife einfügen:



    public AutoRepair()
    {
    for(new i=0;i<MAX_PLAYERS; i++)
    {
    RepairVehicle(GetPlayerVehicleID(i));
    }
    }