[RL-Script] Spielerspawn direkt nach Login

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
  • Hallo,
    ich hab folgendes Problem:
    Wenn man sich einloggt, kommt man zu der Skinauswahl und spawnt erst, wenn man entweder einen anderen Skin auswählt, oder auf spawn drückt. Eigentlich soll der Spieler direkt nach dem Login spawnen.
    Ich habe beim Login, sowie bei der Registrierung 2 mal SpawnPlayer(playerid); eingefügt. Genauso wie bei OnPlayerRequestclass 2 mal. Ich hoffe ihr könnt mir helfen. Hier meine PWN Codes:

    public OnPlayerRequestClass(playerid, classid)
    {
    SetPlayerPos(playerid, 161.2155,-1927.6171,3.7734);
    SetPlayerFacingAngle(playerid, 56.5680);
    SetPlayerCameraPos(playerid, 157.4641,-1925.4463,3.7734);
    SetPlayerCameraLookAt(playerid, 161.2155,-1927.6171,3.7734);
    SpawnPlayer(playerid);
    SpawnPlayer(playerid);
    return 1;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    new pname[MAX_PLAYERS],accFormat[128];
    GetPlayerName(playerid,pname,sizeof pname);
    format(accFormat,sizeof accFormat,"Accounts3/%s.txt",pname);
    if(response)
    {
    switch(dialogid)
    {
    case DIALOG_LOGIN:
    {
    if(response == 0)
    {
    Kick(playerid);
    }
    if(!strlen(inputtext))
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich mit deinem Passwort ein:","Weiter","Abbrechen");
    return SendClientMessage(playerid,COLOR_BRIGHTRED,"* Du hast kein Passwort angegeben.");
    }
    if(strcmp(inputtext,dini_Get(accFormat,"Passwort")) == 0)
    {
    OnPlayerLogin(playerid);
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich mit deinem Passwort ein:","Weiter","Abbrechen");
    SendClientMessage(playerid,COLOR_BRIGHTRED,"* Du hast ein falsches Passwort angegeben.");
    }
    }
    case DIALOG_REG:
    {
    if(response == 0)
    {
    Kick(playerid);
    }
    if(!strlen(inputtext))
    {
    ShowPlayerDialog(playerid,DIALOG_REG,1,"Registrieren","Du hast noch keinen Account. Bitte registriere dich:","Weiter","Abbrechen");
    return SendClientMessage(playerid,COLOR_BRIGHTRED,"* Das angegebene Passwort ist zu kurz.");
    }
    OnPlayerRegister(playerid,inputtext);
    }
    }
    }
    else
    {
    switch(dialogid)
    {
    case DIALOG_LOGIN:ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich mit deinem Passwort ein:","Weiter","Abbrechen");
    case DIALOG_REG:ShowPlayerDialog(playerid,DIALOG_REG,1,"Registrieren","Du hast noch keinen Account. Bitte registriere dich:","Weiter","Abbrechen");
    }
    }
    return 1;
    }


    public OnPlayerLogin(playerid)
    {
    new pname[MAX_PLAYERS],accFormat[128];
    GetPlayerName(playerid,pname,sizeof pname);
    format(accFormat,sizeof accFormat,"Accounts3/%s.txt",pname);
    PlayerInfo[playerid][pSkin] = dini_Int(accFormat,"pSkin");
    PlayerInfo[playerid][pAdmin] = dini_Int(accFormat,"pAdmin");
    PlayerInfo[playerid][pTeam] = dini_Int(accFormat,"pTeam");
    PlayerInfo[playerid][pLeader] = dini_Int(accFormat,"pLeader");
    SetPlayerWantedLevel(playerid,dini_Int(accFormat,"pWanted"));
    GivePlayerMoney(playerid,dini_Int(accFormat,"pMoney"));
    SetPlayerScore(playerid,dini_Int(accFormat,"pLevel"));
    PlayerInfo[playerid][eingeloggt] = 1;
    SendClientMessage(playerid,COLOR_GREY,"* Du wurdest erfolgreich eingeloggt.");
    SpawnPlayer(playerid);
    SpawnPlayer(playerid);
    return 1;
    }


    public OnPlayerRegister(playerid,password[])
    {
    new pname[MAX_PLAYERS],accFormat[128];
    GetPlayerName(playerid,pname,sizeof pname);
    format(accFormat,sizeof accFormat,"Accounts3/%s.txt",pname);
    dini_Create(accFormat);
    dini_Set(accFormat,"Passwort",password);
    dini_IntSet(accFormat, "pAdmin" , 0);
    dini_IntSet(accFormat, "pMoney" , 1000);
    dini_IntSet(accFormat, "pLevel" , 0);
    dini_IntSet(accFormat, "pSkin" , 137);
    PlayerInfo[playerid][pAdmin] = 0;
    PlayerInfo[playerid][pTeam] = 0;
    PlayerInfo[playerid][pLeader] = 0;
    PlayerInfo[playerid][eingeloggt] = 1;
    PlayerInfo[playerid][pSkin] = 137;
    GivePlayerMoney(playerid, 1000);
    SetPlayerScore(playerid, 0);
    SetPlayerWantedLevel(playerid,0);
    SendClientMessage(playerid,COLOR_GREY,"* Dein Account wurde angelegt und du wurdest eingeloggt.");
    SpawnPlayer(playerid);
    SpawnPlayer(playerid);
    }

  • Ich würde ned überall SpawnPlayer(playerid); doppelt mahcen -.-


    kommt glaube bei public onPlayerRegister rein und bei Requestclass dann gehts ;)


    *hust*
    man muss nur spawnplayer bei onplayerlogin und das buggt manchmal musste auch noch setcamerabehindplayer uvm buggt manchmal :D

  • Wieso hast du bei OnPlayerRequestClaas "SpawnPlayer(playerid);" drinne?
    Das heist,wenn der Spieler connectet und dahin kommt,wo er den Skin auswählen kann,wird er gespawnt!


    Wieso überall 2 mal SpawnPlayer(playerid); ?
    Mach einfach bei OnDialogResponse nach erfolgreicher Passworteingabe unter "OnPlayerLogin" SpawnPlayer(playerid); und nimm die anderen "SpawnPlayer(playerid);" weg...

  • Ich habe mal hier im Forum gelesen, dass SpawnPlayer(playerid); 2x rein muss (was weis ich wieso :D). Es muss aber bei on player register und on player login hin, da es nach dem registrieren gar nicht zum login kommt. Aber ich versuch es mal danke.

  • Sry 4 Doppelpost:
    Ich habe jetzt bei OnPlayerRequestClass beide SpawnPlayer entfernt und bei OnPlayerLogin und OnPlayerRegister jeweils ein mal stehen. Aber es kommt immernoch zur skinauswahl (spawn erst nach drücken des "Spawn" Buttons).

  • Ja,das ist normal!


    Wenn Du ein Login/Register-System via GUI hast,dann lass bei OnPlayerRequestClaas abfragen ob der Spieler nen Account hat!
    Und natürlich dann auch dort die Dialoge anzeigen lassen!;)


    Mfg, Hardcore


    P.s
    Falls Schreibfehler vorhanden sind,sorry aber habe mir grad voll mit soner schei* Schere in den Daumen gestochen-.-