Probleme mit Skin und SpawnPosition

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
  • Hey BreadfishUser,


    ich versuche momentan mein GameMode zu erweitern. Hierbei sollen die Koordinaten eines Spielers beim ausloggen gespeichert werden, ebenso wie sein Skin. Sobald der Spieler sich wieder einloggt, sollen die Koordinaten und die SkinID geladen werden und auf den Spieler angewendet werden.
    Mein Problem ist, dass sich die Koordinaten und die SkinID beim einloggen auf Null setzen, bzw. der Spieler nicht an seiner letzten Position spawnt.


    Hier die Ausschnitte meines GameModes.


    enum Info
    {
    Adminlevel,
    Scripter,
    Fraktion,
    Leader,
    Skin,
    Rang,
    XPosition,
    YPosition,
    ZPosition
    }
    new pInfo[MAX_PLAYERS][Info];


    public OnPlayerRequestClass(playerid, classid)
    {
    new pfad[64];
    new pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pName,sizeof(pName));
    format(pfad,sizeof(pfad),"/Spieler/%s.dini",pName);
    if(dini_Exists(pfad)){
    SetSpawnInfo(playerid,0,pInfo[playerid][Skin],pInfo[playerid][XPosition],pInfo[playerid][YPosition],pInfo[playerid][ZPosition],0,0,0,0,0,0,0);
    SpawnPlayer(playerid);
    }
    else {
    SetPlayerPos(playerid,1915.6471,1513.5712,17.6828);
    SetPlayerCameraPos(playerid,1910.0701,1513.6324,18.1750);
    SetPlayerCameraLookAt(playerid,1915.9482,1513.4377,17.6828);
    SetPlayerFacingAngle(playerid,92.8607);
    }
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    ClearPlayerChat(playerid);
    SendClientMessage(playerid, GELB, "Bitte Warten...");
    new pfad[64];
    new pName[MAX_PLAYER_NAME];
    new igmessage[64];
    GetPlayerName(playerid,pName,sizeof(pName));
    format(pfad,sizeof(pfad),"/Spieler/%s.dini",pName);
    format(igmessage,sizeof(igmessage),"{CC3333}%s {FFFFFF}hat die Stadt betreten",pName);
    SendClientMessageToAll(WEIS,igmessage);
    if(dini_Exists(pfad)) {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Ihr Account wurde gefunden.\nGeben sie bitte ihr Passwort ein:","Login","Abbrechen");
    return 1;
    }
    else {
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Bitte geben sie ihr gewünschtes Passwort ein:","Registrieren","Abbrechen");
    }
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    new pfad[64];
    new pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pName,sizeof(pName));
    format(pfad,sizeof(pfad),"/Spieler/%s.dini",pName);
    SpielerSpeichern(playerid);
    ResetVariablen(playerid);
    return 1;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid==DIALOG_LOGIN) {
    if(response==0) {
    SendClientMessage(playerid,BLAU,"Sie haben den Anmeldevorgang abgebrochen");
    Kick(playerid);
    return 1;
    }
    if(response==1) {
    if(!strlen(inputtext)) {
    SendClientMessage(playerid,BLAU,"Es muss ein Passwort angegeben werden!");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Ihr Account wurde gefunden/nGeben sie bitte ihr Passwort ein","Login","Abbrechen");
    return 1;
    }
    else {
    Login(playerid,inputtext);
    return 1;
    }
    }
    }
    if(dialogid==DIALOG_REGISTER) {
    if(response==0) {
    SendClientMessage(playerid,BLAU,"Sie haben den Registrierungsvorgang abgebrochen");
    Kick(playerid);
    return 1;
    }
    if(response==1) {
    if(!strlen(inputtext)) {
    SendClientMessage(playerid,BLAU,"Es muss ein Passwort angegeben werden!");
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Bitte geben sie ihr gewünschtes Passwort ein:","Registrieren","Abbrechen");
    return 1;
    }
    else {
    Register(playerid,inputtext);
    return 1;
    }
    }
    }
    return 1;
    }


    stock Register(playerid,key[]) {
    new pfad[64];
    new pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pName,sizeof(pName));
    format(pfad,sizeof(pfad),"/Spieler/%s.dini",pName);
    dini_Create(pfad);
    dini_Set(pfad,"Passwort",key);
    dini_IntSet(pfad,"Level",0);
    dini_IntSet(pfad,"AdminLevel",0);
    SendClientMessage(playerid,BLAU,"Sie haben sich erfolgreich registriert");
    return 1;
    }
    stock Login(playerid,key[]) {
    new pfad[64];
    new pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pName,sizeof(pName));
    format(pfad,sizeof(pfad),"/Spieler/%s.dini",pName);
    if(!strcmp(key,dini_Get(pfad,"Passwort"),true)) {
    LadeSpieler(playerid);
    return 1;
    }
    else {
    SendClientMessage(playerid,BLAU,"Ihr Passwort war inkorrekt");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Ihr Account wurde gefunden/nGeben sie bitte ihr Passwort ein","Login","Abbrechen");
    return 1;
    }
    }
    stock SpielerSpeichern(playerid) {
    new pfad[64];
    new pName[MAX_PLAYER_NAME];
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    GetPlayerName(playerid,pName,sizeof(pName));
    format(pfad,sizeof(pfad),"/Spieler/%s.dini",pName);
    dini_IntSet(pfad,"Level",GetPlayerScore(playerid));
    dini_IntSet(pfad,"Adminlevel",pInfo[playerid][Adminlevel]);
    dini_IntSet(pfad,"Scripter",pInfo[playerid][Scripter]);
    dini_IntSet(pfad,"Fraktion",pInfo[playerid][Fraktion]);
    dini_IntSet(pfad,"Leader",pInfo[playerid][Leader]);
    dini_IntSet(pfad,"Skin",GetPlayerSkin(playerid));
    dini_FloatSet(pfad,"XPosition",x);
    dini_FloatSet(pfad,"YPosition",y);
    dini_FloatSet(pfad,"ZPosition",z);
    return 1;
    }
    stock ResetVariablen(playerid) {
    pInfo[playerid][Adminlevel] = 0;
    pInfo[playerid][Scripter] = 0;
    pInfo[playerid][Fraktion] = 0;
    pInfo[playerid][Leader] = 0;
    pInfo[playerid][Skin] = 0;
    pInfo[playerid][XPosition] = 0;
    pInfo[playerid][YPosition] = 0;
    pInfo[playerid][ZPosition] = 0;
    return 1;
    }
    stock LadeSpieler(playerid) {
    new pfad[64];
    new message[65];
    new amessage[65];
    new pName[MAX_PLAYER_NAME];
    new Text3D:Adminlabel[MAX_PLAYERS];
    GetPlayerName(playerid,pName,sizeof(pName));
    format(pfad,sizeof(pfad),"/Spieler/%s.dini",pName);
    SetPlayerScore(playerid,dini_Int(pfad,"Level"));
    SetPlayerSkin(playerid,dini_Int(pfad,"Skin"));
    pInfo[playerid][Adminlevel] = dini_Int(pfad,"Adminlevel");
    pInfo[playerid][Scripter] = dini_Int(pfad,"Scripter");
    pInfo[playerid][Fraktion] = dini_Int(pfad,"Fraktion");
    pInfo[playerid][Leader] = dini_Int(pfad,"Leader");
    format(message,sizeof(message),"Willkommen zurück, %s",pName);
    SendClientMessage(playerid,BLAU,message);
    if(pInfo[playerid][Scripter] == 1) {
    SendClientMessage(playerid,BLAU,"Sie haben sich als Scripter eingeloggt");
    }
    if(pInfo[playerid][Adminlevel] >= 1) {
    format(amessage,sizeof(amessage),"Sie haben sich als Adminlevel %d eingeloggt",dini_Int(pfad,"Adminlevel"));
    SendClientMessage(playerid,BLAU,amessage);
    Adminlabel[playerid] = Create3DTextLabel("Administrator",ROT,0,0,0,0,0);
    Attach3DTextLabelToPlayer(Adminlabel[playerid],playerid,0.0,0.0,0.7);
    }
    return 1;
    }


    //edit: Problem hat sich gelöst :D

    Einmal editiert, zuletzt von Darklight ()

  • Der lädt ja nicht mal den Skin und die Position^^ Das muss nach dem SPawn passieren und nicht vor dem spawn...