Jetpack

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 ich habe ein Command erstellt mit dem man sich ein Jetpack geben kann, aber wenn man es ablegt dann ist es dort als pickup und jeder andere "normale" Spieler kann es aufheben...wie kann man also machen, dass das Jetpack sofort despawnt wenn man es ablegt...oder ein Command einbauen womit es von Rücken entfernt wird...


    Hier der Jetpack spawn Befehl:
    if (strcmp("/jetpack", cmdtext, true, 10) == 0)
    {


    if(IsAdmin(playerid,5))
    {
    if(sDaten[playerid][AdminDuty] == 1)
    {
    SendClientMessage(playerid,0xFFFF00FF,"Hier ist dein Jetpack");
    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_USEJETPACK);
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du bist nicht als Admin angemeldet!");
    return 1;
    }
    }


    else
    {
    SendClientMessage(playerid,ROT,"Du bist kein Admin!");
    return 1;
    }
    return 1;
    }


    Danke schonmal im Vorraus :D

  • Hi ich habe ein Command erstellt mit dem man sich ein Jetpack geben kann, aber wenn man es ablegt dann ist es dort als pickup und jeder andere "normale" Spieler kann es aufheben...wie kann man also machen, dass das Jetpack sofort despawnt wenn man es ablegt...oder ein Command einbauen womit es von Rücken entfernt wird...


    Hier der Jetpack spawn Befehl:
    if (strcmp("/jetpack", cmdtext, true, 10) == 0) { if(IsAdmin(playerid,5)) { if(sDaten[playerid][AdminDuty] == 1) { SendClientMessage(playerid,0xFFFF00FF,"Hier ist dein Jetpack"); SetPlayerSpecialAction(playerid,SPECIAL_ACTION_USEJETPACK); } else { SendClientMessage(playerid,ROT,"Du bist nicht als Admin angemeldet!"); return 1; } } else { SendClientMessage(playerid,ROT,"Du bist kein Admin!"); return 1; } return 1; }


    Danke schonmal im Vorraus :D

    Auch wenn die Frage schon ne Ewigkeit alt ist, würde mich die antwort dennoch interessieren

  • Auch wenn die Frage schon ne Ewigkeit alt ist, würde mich die antwort dennoch interessieren

    Okay, dann hier mal ein paar Infos:


    • Wenn man ein Jetpack hat und ENTER drückt ist dieses nicht für jeden zu haben, geschweige denn zu sehen.
      • Das ist client seitig und da wird auch kein Pickup erstellt für den Server oder sonst was. (Kann man auch nicht triggern mit OnPlayerPickUpPickup)
    • Die naive Herangehensweise wäre wahrscheinlich, man schaut unter OnPlayerKeyStateChange, ob man ENTER drückt und ob GetPlayerSpecialAction dem Jetpack entspricht und setzt ihn dann SPECIAL_ACTION_NONE. Hier liegen 2 Fehler:
      • Man kann nicht mehr mit GetPlayerSpecialAction prüfen, ob er ein Jetpack hat, da das bereits abgelegt wurde und somit schon 0 ist.
      • Hier sehen wir direkt den 2. Fehler, man kann ihm nicht das Jetpack mit SetPlayerSpecialAction wieder wegnehmen, da er ja schon in diesem State ist. (Deshalb bringt es auch für Part 1 nichts mit Variablen o.ä. zu arbeiten)
      • Da bringt auch SetPlayerPos o.ä. nichts xD (Immer mal wieder gesehen)
    • Also was tun?

    Die einzige Möglichkeit ihm das Jetpack zu entfernen ist es, wenn er dies auch auf dem Rücken hat, denn nur dann befindet er sich in der SpecialAction.
    Also musst du wenn du ihm ein Jetpack setzt, auch eine Variable setzen, dass du ihm das Jetpack gegeben hast.
    Dann prüfst du unter OnPlayerKeyState Change, ob er ENTER gedrückt hat und diese Variable gesetzt wurde.
    Wenn ja, dann setzt du eine weitere oder zählst diese Variable hoch (hier packst du das in den Timer, der über alle Spieler läuft) und prüfst wenn die Variable diesen State hat und er wieder ein Jetpack an hat, dann setzt du SPECIAL_ACTION_NONE und kannst die Variable resetten.


    Zudem kannst du die Variable nach glaube 1ner Minute oder so auch resetten, da dann das Jetpack client seitig entfernt wurde, also diese halten nicht ewig ^^


    Hoffe ich konnte ein wenig Klarheit verschaffen :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Wow, danke :)