OnPlayerRequestClass umgehen

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 allerseits,
    ich sitze gerade vor einem kleinen Problemchen. Ich möchte OnPlayerRequestClass umgehen, jedoch ohne normales SpawnPlayer. Ich bin dann auf diesem Thread gestoßen. Es funktioniert soweit alles, der Dialog wird beim Start schön angezeigt und alles, jedoch werde ich nicht respawnt. Ich habe nun schon viel ausprobiert, wo ich das "TogglePlayerSpectating(playerid, 0);" hinsetzen kann, damit es wieder deaktiviert wird. Leider bis jetzt ohne Erfolg. Wenn ich ihn über das "return 1;" setze, wird der Spieler sofort beim betreten des Spiels gespawnt. Ich möchte, dass der Spieler nach dem einloggen gleich respawnt wird.


    public OnGameModeInit()
    {
    Connect_To_Database();
    SetGameModeText("SA:Stories v0.1a");
    AddPlayerClass(0,437.4899,-1749.7258,9.0274,224.4728,0,0,0,0,0,0); // Spawn


    forward login_register(playerid);
    public login_register(playerid)
    {
    SetPlayerCameraPos(playerid, 437.4899, -1749.7258, 9.0274);
    SetPlayerCameraLookAt(playerid, 437.4899, -1749.7258, 9.0274);


    if(GetPVarInt(playerid,"Eingeloggt") == 0)
    {
    if(mysql_CheckAccount(playerid) == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"{00CD85}San Andreas Stories - Registrierung","Dein Account wurde nicht gefunden!\nUm dich bei uns zu registrieren, musst du ein sicheres Passwort wählen.\nGebe hierzu hier ein von dir sicher gewähltes Passwort ein, welches du auf San Andreas Stories verwenden möchtest:","Register","Abbrechen");
    }
    else if(mysql_CheckAccount(playerid) == 1)
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"{00CD85}San Andreas Stories - Login","Dein Account wurde gefunden!\nGebe hier nun das von dir gewählte Passwort ein:","Login","Abbrechen");
    }
    }
    return 1;
    }
    ((Code hat ein bisschen die Struktur verloren))


    public OnPlayerRequestClass(playerid, classid)
    {
    SetSpawnInfo(playerid, 0, 0, 437.4899, -1749.7258, 9.0274, 224.4728, 0, 0, 0, 0, 0, 0);
    TogglePlayerSpectating(playerid, 1);
    SetTimerEx("login_register", 100, 0, "i", playerid);
    return 1;
    }


    Also: Der Code bezieht sich auf den Beitrag des Users "MP2" aus diesem Thread


    Danke schonmal an alle, die mir helfen können! :)

  • Soweit ich das herauslesen konnte, nutzt man "CallRemoteFunction" nur, wenn man eine public Funktion aus einem der geladenen Scripts aufrufen möchte.
    "CallLocalFunction" hingegen nutzt man dann, wenn man eine public Funktion aus dem selben Script aufrufen möchte.


    Aber so wie bei mir müsste es eigentlich auch theoretisch funnktionieren, es fehlt halt nur noch, dass der Spieler nach dem Login spawnt, was er aber nicht machen kann, da "TogglePlayerSpectating(playerid, 0);" noch auf 0 ist -> disable, ich aber nicht weiß, wo genau ich diese Funktion wieder auf1 setzten kann -> enable. War schon einmal kurz davor, jedoch buggte ich dann in der Luft und der Skin war komisch.