Timer + AutoSpawn + Autokill

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
  • Liebe Community.


    Ich steh vor einem riesigen Problem ^^.


    Ich sccripte jetzt seit ca. 2 Wochen und kann aber schon vieles.


    Nur jetzt hab ich einen Hänger.


    Ich möchte gerne ein Menü machen, wo der Spieler sich ein Auto aussuchen kann.


    Dieses Auto soll darauf hin Spawnen und nach 15min per Timer wieder gelöscht werden.


    Nun hab ich das Problem, dass das für einen Spieler kein Thema ist, dann definier ich das mit new Verleihcar = CreateVehicle(....).
    und halt im Timer DestroyVehicle(Verleihcar).


    Nur das ist ja nur ein Auto. Wenn sich jetzt ein zweiter spieler in den 15min auch ein Auto holen möchte funktioniert das ja nicht.


    Muss ich jetzt alle Verleihcars definieren? also new Verleihcar1, Verleihcar2?


    Und wenn, dass irgentwie ( evtl., wie ich mir es denke mit einer Schleife ) gehen sollte. Soll der Timer für jedes Auto einzeln erst starten wenn das Auto ausgewählt worden ist.


    Einer von euch eine Idee? :D

  • Ein Array löst das Problem
    new
    CreatedCar[MAX_PLAYERS];
    Dann enstprechend in deinem Befehl
    CreatedCar[playerid] = CreateVehicle(...);
    Damit kann man dann auch einfach überprüfen, ob der Spieler ein Auto gepsawnt hat
    if(CreatedCar[playerid] > 0)
    {
    // Er hat bereits eins gespawnt
    }
    Dann entprechend natürlich
    DestroyCar(CreatedCar[playerid]);
    CreatedCar[playerid] = 0; // keines gespawnt
    Und den Timer musst du dann natürlich mit SetTimerEx und nicht mehr mit SetTimer machen, da du ja die playerid mit übertragen musst...
    Eine Schleife benötigst du nicht, außer du willst alle gespawntenCars auf einmal löschen.

  • OMG Perfekt! Danke dir !!!


    Ich kam auch schon auf die Idee mit Max_players oder halt SLOTS zu definieren, dachte aber, weil es sich ja auf Autos bezieht, müsste ich was mit carid usw machen =).


    Naja ich hab noch viel zu lernen.


    Danke!



    EDIT:


    Das mit dem SetTimerEx versteh ich noch nicht so ganz ?( hab mir jetzt mal beide also SetTimerEx und SetTimer angeguckt.
    Bei SetTimerEx kann man ja Parameter übertragen, ich denke ja mal vom Typ Integer in meinem Fall aufgrund der Playerid.


    Aber ich versteh nicht wie ich das genau jetzt aufstelle mit dem SetTimerEx.


    Kann mir nochmal jemand helfen?

    2 Mal editiert, zuletzt von 8D ()

  • Dafür ist das breadfish forum da.auser dem noch mahr ein blödde frage: Bist du ein Jung oder mädchen?

  • Entschuldigung, dachte ich hätte mein Profil bearbeitet, aber wurde dann wohl nicht gespeichert.


    Ne ich bin ein Kerl ^^, falls du fragst wegen meiner Signatur: Ich fand den Render passend für das project deswegen ist da eine Frau drinne. Und zum Ava: Habe ich so gecuttet, weil es Aufmerksamkeit erregt. xD
    Aber zurück zu meiner Frage, da ich weiß, dass du einen eigenen GM erstellt hast, weißt du vielleicht, wie ich das mache mit SetTimerEx?

  • Ja weis ich .



    zb:



    SetTimerEx("SettingPlayerTeam",10,1,"i",playerid);


    public SettingPlayerTeam()
    {
    for ( new playerid; playerid < 200; playerid++)
    SetPlayerTeam(playerid, gTeam[playerid]);
    return 1;

  • SetTimerEx ist ausschließlich für die Übergabe von Parametern gedacht und übergibt auch nur die von, in diesem Fall, playerid, also die ID des Players.


    Solltest du beispielsweise SetTimer bei einem Callback mit playerid als Parameter (Callback = "public") benutzen, funktioniert es in jenem Fall nur bei ID 0.


    Matze, da brauchts kein SetTimerEx weil kein Parameter übergeben wird.

  • Er hat mich nur gefragt ich habe ihn nur beispeil geben aber an besten ist du machst:


    SetTimer(Killcar", 60000, 1); Die zeit wir in Millisekunden gerechent zb 1000 = 1 Sec :thumbup:

  • // An den Cmd der dein Auto erstell anhängen:
    SetTimerEx("KillPlayerCar", 900000, false, "i", playerid);


    forward KillPlayerCar(playerid);
    public KillPlayerCar(playerid)
    {
    DestroyVehicle(CreatedCar[playerid]);
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen