[Hilfe/Suche] Class selection NUR bei F4

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
  • Tag auch, liebe Community. :)


    Ich bin komplett neu hier im Forum und hoffe einfach mal, dass ich den richtigen Bereich für den Thread getroffen habe. ;)


    Und zwar suche ich eine Möglichkeit, die class selection nur aufzurufen, wenn denn auch F4 gedrückt wurde und der Spieler anschließend starb, jedoch soll beim normalen Connect bzw. Tod keine class selection erscheinen und der Spieler soll einfach mit der class spawnen, die ich via SetPVarInt festgelegt habe.


    DASS es geht, weiß ich, da ich dieses Verhalten auf meinem momentanen Stammserver beobachten kann.


    Nochmal zusammengefasst:
    Connect: Spawn
    Tod: Spawn
    F4 + Tod: Class selection (wie es die Meldung im Chat auch ankündigt)



    Ich hoffe, ich habe mich verständlich ausgedrückt. :D


    Grüße
    Ditti


    PS: Das bei Connect und Tod spawnen, hab ich bereits via SpawnPlayer in OnPlayerRequestClass meistern können.

    Ich bin Dittis Signatur.

  • Dann musst du halt Abfragen ob der Spieler F4 vor dem Tod gedrückt hat.
    Wenn ja dann setzt du ihn eine PVar z.B. auf 1.
    Dann fragst du unter OnPlayerRequestClass ab, wenn die PVar auf 1 ist. Das halt nichts weiter passieren soll
    bzw. du schreibst nichts in die kommenden { } Zeilen rein, und wenn die auf 0 ist also wenn er kein F4 gedrückt
    hast machst du halt SpawnPlayer(playerid) etc.


  • Dann musst du halt Abfragen ob der Spieler F4 vor dem Tod gedrückt hat.
    Wenn ja dann setzt du ihn eine PVar z.B. auf 1.
    Dann fragst du unter OnPlayerRequestClass ab, wenn die PVar auf 1 ist. Das halt nichts weiter passieren soll
    bzw. du schreibst nichts in die kommenden { } Zeilen rein, und wenn die auf 0 ist also wenn er kein F4 gedrückt
    hast machst du halt SpawnPlayer(playerid) etc.


    :wacko:


    Also es ist im Prinzip ganz einfach, sobald der Spieler F4 gedrückt hat wird nachdem er gestorben ist der Callback OnPlayerRequestClass aufgerufen...
    d.h. du packst da die ganzen abfragen rein, sorgst aber erstmal dafür, dass diese beim Connecten nicht aufgerufen werden...sprich:


    //oben im Script
    new var[MAX_PLAYERS];


    //Unter OnPlayerSpawn
    var[playerid] = 1;


    //Unter OnPlayerRequestClass
    if(var[playerid] == 1)
    {
    //Hier deinen ganzen Vars rein und Positionen !
    }
    else
    {
    SpawnPlayer(playerid);
    //...
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Aber dann geht er doch nach jedem Tod weiteren Tod zur Class Selection, oder fehlt mir hier das Verständnis zur Funktionsweise der Callbacks?


    Nur wenn der Spieler vor seinem Tod F4 gedrückt hat, wird der Callback OnPlayerRequestClass aufgerufen ^^


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Also ist es doch so simpel... Dann hätte ich es doch selbst schaffen können. :D
    Dachte, dass nach jedem Tod grundsätzlich OnPlayerRequestClass aufgerufen wird.


    Nun ja, dann mal an ganz großes Dankeschön, ich werde den Thread jetzt als erledigt markieren. :)


    Edit: Gerade mal ein wenig rumprobiert - ich krieg's nicht hin. :D


    Hier mal mein Code - kannst du den Fehler erkennen?


    //Vars
    new bool:spawned[MAX_PLAYERS];


    //...


    public OnPlayerRequestClass(playerid, classid)
    {
    if(spawned[playerid])
    {
    //SetCameraPos und der andere Kram
    }
    else
    {
    SpawnPlayer(playerid);
    SetPlayerSkin(playerid, GetPVarInt(playerid, "skin"));
    }


    return 1;
    }


    //...


    public OnPlayerSpawn(playerid)
    {
    spawned[playerid] = true;
    //Stuff
    return 1;
    }


    Ich kann machen, was ich will, aber ich lande auch beim Connect direkt in der Class Selection... :/



    Edit #2: Stupid me... Ich hab mich ein wenig belesen und herausgefunden, dass man nicht sofort SpawnPlayer() aufrufen darf, sondern dass da min. eine Millisekunde Abstand vorhanden sein muss. Habe das Problem nun also endgültig gelöst. Danke an euch beide. :)

    Ich bin Dittis Signatur.

    2 Mal editiert, zuletzt von Ditti ()