TogglePlayerSpectating Bug

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 Abend,
    und zwar bräuchte ich eure Hilfe. Ich arbeite derzeit einem Login- und Registerscript oder ohne den Spawn-Knopf funktioniert. Jedoch ist ein Fehler aufgetaucht und zwar wenn der Spieler zum Server connectet und sich einloggt, wird er nicht gespawnt OBWOHL ich SpawnPlayer(playerid); hingesetzt habe.


    Hier die einzelnen Zeilen:
    OnPlayerRequestClass:
    TogglePlayerSpectating(playerid, 1);


    OnPlayerConnect:
    TogglePlayerSpectating(playerid, 1);
    (Hier geht dann natürlich alles weiter...)


    DIALOG_LOGIN (Das passiert nachdem der Spieler sein richtiges Passwort eingegeben hat):
    SpielerLaden(playerid);


    stock SpielerLaden:
    TogglePlayerSpectating(playerid, 0);SetPlayerPos(playerid,x,y,z);
    Usw...


    Hoffe das ihr mir helfen könnt!


    Mfg

    Mit freundlichen Grüßen,
    Johnny Macaroni

  • Ich habe mir das was du gestellt hast mal angeschaut. Könnte es vielleicht möglich sein, dass der Fehler auftritt, weil du bei "OnPlayerConnect" und "OnPlayerRequestClass" das gleiche ausführst ?


    In beiden public's verwendest du "TogglePlayerSpactating 1" Also sagst du, das sobald er auf den Server kommt zum spactater wird und sobald er einen Skin auswählt nochmal Spactater wird.



    Wo ist da die Logik ?


    Oder habe ich einen Denkfehler ?

  • Bei TogglePlayerSpectating(playerid, 0); wird IMMER OnPlayerSpawn aufgerufen, da kannst du dann schlecht gleich danach die Position setzen.

    Hast Du ne SpawnInfo gesetzt?:
    http://wiki.sa-mp.com/wiki/SetSpawnInfo

    Danke schonmal! Nun Sieht OnPlayerRequestClass so aus:
    TogglePlayerSpectating(playerid, 1); (Krieg kein Absatz hin -.-) SetSpawnInfo( playerid, 0, 0, 2327.0007,-1719.1052,13.5469,13.5469, 0, 0, 0, 0, 0, 0 );


    Bei DIALOG_LOGIN habe ich noch diese Zeilen hinzugefügt:
    TogglePlayerSpectating(playerid, 0);(Absatz natürlich..)SpawnPlayer(playerid);


    Und bei stock SpielerLaden habe ich
    TogglePlayerSpectating(playerid, 0);(Absatz)SetPlayerPos(playerid,x,y,z);
    entfernt.


    Jedoch steckt der Spieler immernoch im Spec-Mode fest.

    Du hast vollkommen Recht, das "TogglePlayerSpectating 1" ist beim OnPlayerConnect eigentlich unnötig, jedoch wusste ich nicht wie ich die Aussicht beim Login-Dialog ändern kann und habe dies deswegen hingesetzt.
    Edit: Ahja habs grade beim OnPlayerConnect entfernt und geschaut ob sich etwas ändert, keine Änderung, leider..

    Mit freundlichen Grüßen,
    Johnny Macaroni

  • Also funktioniert es jetzt ohne Probleme?

    Nein, der Spieler wird nach dem Login immer noch nicht gespawnt und bleibt einfach im Spec-Mode.


    Ich habe derzeit leider gar keine Idee woran es Liegen könnte, hab ein ganz simples Command erstellt:
    ocmd:unspec(playerid,params[]){ TogglePlayerSpectating(playerid, 0); return 1;}



    Nachdem man es eingibt klappt alles super, man wird an der angegebenen SetSpawnInfo-Position gespawnt, jedoch ist es jetzt auch nicht Sinn der Sache das man noch ein Command eintippen muss.

    Mit freundlichen Grüßen,
    Johnny Macaroni

  • Mach bei deinem Dialog am schluss, "SpawnPlayer(playerid)" und bei "OnPlayerSpawn" machst du "SetPlayerSpectating(playerid,1);"


    Dann sollte es funktionieren.

    Ich glaube du meinst das ich den Spec-Mode auf 0 setzen soll, hab es auf jeden Fall grade eben mit 0 und 1 probiert, klappt nicht, man bleibt im Spec-Mode.
    Aus irgendeinem Grund wird der Spieler nicht auf TogglePlayerSpectating(playerid, 0); gesetzt..

    Mit freundlichen Grüßen,
    Johnny Macaroni

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Also
    TogglePlayerSpectating(playerid, 1);
    bei OnPlayerConnect() und
    TogglePlayerSpectating(playerid, 1);
    nach der Abfrage vom Account via Dini oder MySQL vor SpawnPlayer(); ect!


    Das hatte ich auch. Wenn du es anders machst, dann spawnt er dich aber du fliegst vom Himmel und nicht an dein festgelegten Spawnpunkt. In Prinzip ganz einfach.


    Liebe Grüße
    palwal

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.