Problem mit einem Pickup

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
  • Hi Leute,


    ich habe ein arg starkes Problem mit meinem Pickup im Ammu Nation. Also es klappt alles perfekt, nach meinen Vorstellungen, nur wenn er auf "Nein danke" klickt, öffnet sich der Dialog wieder, da er im Pickup steht, und ich im entsprechenden Callback abfrage ob die Pickupid ammushop ist.
    Auf Deutsch:
    Soblad ich auch nein danke klicke, öffnet sich der Dialog wieder, weil er ja im Pickup steht.
    Gibt es eine Möglichkeit das Pickup für kurze Zeit zu löschen damit man raus gehen kann ohne das ständig der Dialog neu geöffnet wird?


    lg :thumbup:

    RTL - Das N steht für Niveau!
    MfG,
    StreetS


    Jegliche Freundesanfragen, die für mich keinen Sinn ergeben, werden professionell Ignoriert. (Gleiche mit Skype!)
    Wer es nicht kapiert wird in Breadfish & Skype blockiert.


    - Stolzer PAWN Scripter der Klasse Beherrscht

  • Hallo


    Ich denke Du verwendest mal das Callback OnPlayerPickUpPickup. Nach dem Klicken auf Nein Danke würde ich eine Spielervariable auf die ID des Pickups setzen und OnPlayerPickUpPickup solange blockieren, bis die pickupid wechselt, sprich der Spieler in ein neues Pickup läuft.


    Gruss


    Edit:
    Timer Und was passiert, wenn der Spieler stehen bleibt ? Diese Lösung ist meiner Meinung nur halbwegs zufriedenstellend

  • arbeite mit einen Timer


    Das hatte ich auch vor.

    Nach dem Klicken auf Nein Danke würde ich eine Spielervariable auf die ID des Pickups setzen und OnPlayerPickUpPickup solange blockieren, bis die pickupid wechselt, sprich der Spieler in ein neues Pickup läuft.


    Das, musst du mir mal erklären. xD


    lg :thumbup:

    RTL - Das N steht für Niveau!
    MfG,
    StreetS


    Jegliche Freundesanfragen, die für mich keinen Sinn ergeben, werden professionell Ignoriert. (Gleiche mit Skype!)
    Wer es nicht kapiert wird in Breadfish & Skype blockiert.


    - Stolzer PAWN Scripter der Klasse Beherrscht

  • Ganz oben im Script:
    new pickuptime[MAX_PLAYERS];


    Unter OnPlayerPickUpPickup bei deinem Pickup:
    if(pickupid==...)
    {
    ShowPlayerDialog(...);
    pickuptime[playerid] == 1;
    SetTimer("pickuptimer",3000,false);//nach 3sekunden funktioniert der timer wieder
    return 1;
    }
    else if(pickuptime[playerid]==1)
    {
    return 1;
    }


    forward pickuptimer();
    public pickuptimer()
    {
    pickuptime[playerid] == 0;
    }



    ungetestet müsste aber funktionieren...
    mfG xSonYx :thumbup:

    La Cosa Nostra ♥

  • Hi


    Arbeitest Du mit dem Callback OnPlayerPickUpPickup oder pollst Du mit einem Timer dauerhaft die Pickups durch ? Wenn Du OnPlayerPickUpPickup verwendest, wird dieses Callback ja erneut aufgerufen, da sich ja der Dialog wieder öffnet, darum blockierst Du das Callback. Ich habe an sowas in der Art gedacht:



    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(pickupid == GetPVarInt(playerid, "currentPickupID"))
    {
    // Die vorherige PickupID ist die selbe, sprich wir sind im selben Pickup -> blockieren
    return 1;
    }
    else
    {
    // Die pickupid hat sich geändert, also updaten wir den Wert
    SetPvarInt(playerid, "currentPickupID", pickupid);
    }
    // Nun kommen der Dialog für den Waffenladen
    ShowPlayerDialog()
    return 1;
    }


    Gruss

  • Bei Sony's Variante wird "playerid" als unbekannte Variable dargestellt. (Im Public pickuptimer)
    Dudalus, deine Variante werde ich nun auch mal ausprobieren. :P
    Danke an beide!


    lg :thumbup:

    RTL - Das N steht für Niveau!
    MfG,
    StreetS


    Jegliche Freundesanfragen, die für mich keinen Sinn ergeben, werden professionell Ignoriert. (Gleiche mit Skype!)
    Wer es nicht kapiert wird in Breadfish & Skype blockiert.


    - Stolzer PAWN Scripter der Klasse Beherrscht

  • Wenn Du OnPlayerPickuUpPickup verwnedest sollte es so gehen. Wenn Du aber einen Timer hast, welcher zB jede halbe Sekunde durch alle Spieler loopt und schaut, ob sie an einem Pickup stehen, musst Du ein MAX_PLAYERS Array machen und dort die vorherige pickupid eintragen.


    Zu erwähnen ist, dass das erstellte Pickup "aufnehmbar" sein müss, schau am besten dazu mal hier:


    http://wiki.sa-mp.com/wiki/AddStaticPickup
    http://wiki.sa-mp.com/wiki/PickupTypes <-- Pickuptyp


    Gruss


    Edit: Deutsch put

  • Ja ich benutze den Callback PickupPickup, und nein ich loope nicht mit einem Timer alle Spieler durch.
    Ich habe den Type 1, sprich: Existiert die ganze Zeit.
    Wobei mir grade auf fällt dass es praktisch wäre wenn ich Pickupable benutze?
    Wird sofort getestet, ich editiere.


    lg :thumbup:


    #E: Joa wie gehabt. Mit Pickup Type 2 geht's nun einwandfrei, nach meinem Maß. Danke an alle. ;)

    RTL - Das N steht für Niveau!
    MfG,
    StreetS


    Jegliche Freundesanfragen, die für mich keinen Sinn ergeben, werden professionell Ignoriert. (Gleiche mit Skype!)
    Wer es nicht kapiert wird in Breadfish & Skype blockiert.


    - Stolzer PAWN Scripter der Klasse Beherrscht

    Einmal editiert, zuletzt von #S. ()