Spieler Geld hinzufügen, wenn er geduckt ist?!

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 Morgen Community.


    Ich brauche einen Rat, eines fortgeschrittenen Programmieres.


    Ich arbeite seit einigen Tagen mit GTA SA MP und den Scripts.
    Bin gerade dabei ein Fun Script zu schreiben, für mich und meine Kumpels.


    Nun wollte ich wissen ob es möglich ist, dem spieler z.B alle 5 Sekunden wenn er geduckt (ganz wichtig) ist 1$ hinzuzufügen.


    Kann mir jemand helfen? Es würde mich sehr freuen!


    Ps: Kann auch 1-2 Euro über Paypal anbieten, wäre Uns echt wichtig :)


    Liebe Grüße.

  • Frag einfach ab ob er die Taste "C" bzw die Taste die diese Aktion "dücken" gerade betätigt...
    Also wenn er das 1.mal "c" drückt starteste einen Timer von 5 Sekunden und gibst ihm immer wenn der um ist 1$.
    Und wenn er wieder "c" drückst killst du den Timer.
    Ganz einfach :).

  • Hi.


    Danke für die schnelle Antwort.


    Ja, an sowas dachte ich auch:


    Also ich kenne das aus C++ soweit so, das ich mit If etwas abfragen kann.


    z.B "If(PlayerUseButton(c))" Nur finde ich in der Source keine passende abfrage, oder ich überles es die ganze Zeit :O


    Hättest du ein Tipp? :=)

  • Vielen Dank, es funktioniert soweit. Das mit dem Timer muss ich noch rausfinden :)


    Edit:


    Hat jemand vielleicht ein Beispiel, wie so ein Loop aussehen könnte?
    Bei mir bekommt der Spieler irgendwie nur Geld, wenn er auf der Taste C bleibt. Er soll ja z.B alle 5 Sekunden in der hocke Geld bekommen, ohne diese gedrückt zu halten. Und wenn er wieder aufstehen tut, drückt er erneut C und sollte kein Geld mehr bekommen.


    Mein Code bisher:

    forward GibtGeldFuersDucken(playerid);
    new timer1


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys & KEY_CROUCH)
    timer1 = SetTimer("GibtGeldFuersDucken", 1000, false);

    if(oldkeys & KEY_CROUCH)
    KillTimer(timer1);
    }


    public GibtGeldFuersDucken(playerid)
    {
    GivePlayerMoney(playerid, 5);
    timer1 = SetTimer("GibtGeldFuersDucken", 5000, true); //Hier soll sich das ja so lange weiterführen, bis der Spieler wieder aufsteht.
    return 1;
    }


    2 Mal editiert, zuletzt von Dotox ()

  • Beim Timer statt "false", "true" oder "1" benutzen ;)



    Guck mal ob das geht:
    forward MoneyForPressKey(playerid);


    public OnPlayerUpdate(playerid)
    {
    if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_DUCK)
    {
    SetTimer("MoneyForPressKey",5000,1);
    }
    return 1;
    }


    public MoneyForPressKey(playerid)
    {
    GivePlayerMoney(playerid,5);
    }


    Edit: PAWNO-Code hinzugefügt

    Einmal editiert, zuletzt von Q6600 ()

  • Guten Abend.


    Danke für Eure Antworten.


    Leider bekommt der Spieler mehr als nur 5$ alle 5 Sekunden. Würde direkt pro Sekunde 5$ schätzen :/
    Und wenn er aus der Duck animation draußen ist, bekommt er weiterhin Dollars.


    Man müsste ja dann eine abfrage erstellen, und sobald der Spieler aus der Duck Animation draußen ist, den Timer Killen oder sowas.

  • Bin ich auch schon drauf gekommen, aber das hilft ja nicht, wenn der Spieler es trozdem weiter bekommt obwohl er aus der Animation raus ist :P Und hin und wieder bekommt der Spieler auch 50$ auf einen Schlag. Ich glaube das wiederhohlt sich zu oft.

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