stock SpielerSpeichern(playerid)

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
  • Ich habe ein kleines Problem mit dem Speichern meines Spielers. Wenn ich
    /q mache geht das ganze perfekt aber wenn ich ingame den Spieler
    speicher läd der Skin und die Pos nicht.


    public OnPlayerSpawn(playerid)
    {
    SetPlayerScore(playerid,Spieler[playerid][Level]);
    GivePlayerMoney(playerid,Spieler[playerid][Geld]);
    SetPlayerSkin(playerid,Spieler[playerid][Skin]);
    SetPlayerInterior(playerid,Spieler[playerid][Interior]);
    SetPlayerPos(playerid,Spieler[playerid][lastx],Spieler[playerid][lasty],Spieler[playerid][lastz]);
    SetPlayerWantedLevel(playerid,Spieler[playerid][Wanted]);
    if(IsPlayerNPC(playerid))
    {
    new botname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, botname, sizeof(botname));
    if(!strcmp(botname, "Zoll1", true))
    {
    SetPlayerSkin(playerid,280);
    }
    if(!strcmp(botname, "Zoll2", true))
    {
    SetPlayerSkin(playerid,280);
    }
    }
    return 1;
    }


    if (strcmp("/test", cmdtext, true, 10) == 0)
    {
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    SetPlayerPos(playerid,X,Y,(Z)-2);
    SpielerSpeichern(playerid);
    SCM(playerid,ORANGE,"Du wurdest gespeichert");
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    new string[44],name[23];
    GetPlayerName(playerid,name,23);
    format(string,sizeof(string),"%s hat den Server verlassen.",name);
    SendClientMessageToAll(GRAU,string);
    KillTimer(PDT);
    new pname[MAX_PLAYERS],accFormat[128];
    GetPlayerName(playerid,pname,sizeof pname);
    format(accFormat,sizeof accFormat,"/Spieler/%s.txt",pname);
    if(fexist(accFormat))
    {
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    dini_IntSet(accFormat,"Admin",Spieler[playerid][Admin]);
    dini_IntSet(accFormat,"Level",GetPlayerScore(playerid));
    dini_IntSet(accFormat,"Skin",GetPlayerSkin(playerid));
    dini_FloatSet(accFormat,"lastx",X);
    dini_FloatSet(accFormat,"lasty",Y);
    dini_FloatSet(accFormat,"lastz",Z);
    dini_IntSet(accFormat,"Fraktion",Spieler[playerid][Fraktion]);
    dini_IntSet(accFormat,"Nebenjob",Spieler[playerid][Nebenjob]);
    dini_IntSet(accFormat,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(accFormat,"F1",Spieler[playerid][F1]);
    dini_IntSet(accFormat,"F2",Spieler[playerid][F2]);
    dini_IntSet(accFormat,"F3",Spieler[playerid][F3]);
    dini_IntSet(accFormat,"Geschlecht",Spieler[playerid][Geschlecht]);
    dini_IntSet(accFormat,"Herkunft",Spieler[playerid][Herkunft]);
    dini_IntSet(accFormat,"Levelpunkte",Spieler[playerid][Levelpunkte]);
    dini_IntSet(accFormat,"Interior",GetPlayerInterior(playerid));
    dini_IntSet(accFormat,"Bankgeld",Spieler[playerid][Bankgeld]);
    dini_IntSet(accFormat,"Leader",Spieler[playerid][Leader]);
    dini_IntSet(accFormat,"Rang",Spieler[playerid][Rang]);
    dini_IntSet(accFormat,"Premium",Spieler[playerid][Premium]);
    dini_IntSet(accFormat,"Wanted",GetPlayerWantedLevel(playerid));
    dini_IntSet(accFormat,"Pass",Spieler[playerid][Pass]);
    }
    Spieler[playerid][Skin] = 29;
    Spieler[playerid][lastx] = (90.1844);
    Spieler[playerid][lasty] = (-153.0807);
    Spieler[playerid][lastz] = (2.5789);
    Spieler[playerid][Geld] = 0;
    Spieler[playerid][Fraktion] = 0;
    Spieler[playerid][Admin] = 0;
    Spieler[playerid][Nebenjob] = 0;
    Spieler[playerid][Herkunft] = 0;
    Spieler[playerid][Geschlecht] = 0;
    Spieler[playerid][Level] = 1;
    Spieler[playerid][F1] = 0;
    Spieler[playerid][F2] = 0;
    Spieler[playerid][F3] = 0;
    Spieler[playerid][Levelpunkte] = 0;
    Spieler[playerid][Interior] = 0;
    Spieler[playerid][Bankgeld] = 0;
    Spieler[playerid][Leader] = 0;
    Spieler[playerid][Rang] = 0;
    Spieler[playerid][Premium] = 0;
    Spieler[playerid][Wanted] = 0;
    Spieler[playerid][Pass] = 0;
    }
    if(response==1)
    {
    if(strcmp(inputtext,dini_Get(accFormat,"Passwort")) == 0)
    {
    SetPVarInt(playerid,"eingeloggt",1);
    Spieler[playerid][Admin] = dini_Int(accFormat,"Admin");
    Spieler[playerid][Herkunft] = dini_Int(accFormat,"Herkunft");
    Spieler[playerid][Geschlecht] = dini_Int(accFormat,"Geschlecht");
    Spieler[playerid][Fraktion] = dini_Int(accFormat,"Fraktion");
    Spieler[playerid][Nebenjob] = dini_Int(accFormat,"Nebenjob");
    Spieler[playerid][Level] = dini_Int(accFormat,"Level");
    Spieler[playerid][Geld] = dini_Int(accFormat,"Geld");
    Spieler[playerid][Skin] = dini_Int(accFormat,"Skin");
    Spieler[playerid][lastx] = dini_Float(accFormat,"lastx");
    Spieler[playerid][lasty] = dini_Float(accFormat,"lasty");
    Spieler[playerid][lastz] = dini_Float(accFormat,"lastz");
    Spieler[playerid][F1] = dini_Int(accFormat,"F1");
    Spieler[playerid][F2] = dini_Int(accFormat,"F2");
    Spieler[playerid][F3] = dini_Int(accFormat,"F3");
    Spieler[playerid][Levelpunkte] = dini_Int(accFormat,"Levelpunkte");
    Spieler[playerid][Interior] = dini_Int(accFormat,"Interior");
    Spieler[playerid][Bankgeld] = dini_Int(accFormat,"Bankgeld");
    Spieler[playerid][Leader] = dini_Int(accFormat,"Leader");
    Spieler[playerid][Rang] = dini_Int(accFormat,"Rang");
    Spieler[playerid][Premium] = dini_Int(accFormat,"Premium");
    Spieler[playerid][Wanted] = dini_Int(accFormat,"Wanted");
    Spieler[playerid][Pass] = dini_Int(accFormat,"Pass");
    SpawnPlayer(playerid);
    }


    Ich weiß überhaupt nich an was das liegen kann X(


    Hier der Stock
    stock SpielerSpeichern(playerid)
    {
    new pname[MAX_PLAYERS],accFormat[128];
    GetPlayerName(playerid,pname,sizeof pname);
    format(accFormat,sizeof accFormat,"/Spieler/%s.txt",pname);
    if(fexist(accFormat))
    {
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    dini_IntSet(accFormat,"Admin",Spieler[playerid][Admin]);
    dini_IntSet(accFormat,"Level",GetPlayerScore(playerid));
    dini_IntSet(accFormat,"Skin",GetPlayerSkin(playerid));
    dini_FloatSet(accFormat,"lastx",X);
    dini_FloatSet(accFormat,"lasty",Y);
    dini_FloatSet(accFormat,"lastz",Z);
    dini_IntSet(accFormat,"Fraktion",Spieler[playerid][Fraktion]);
    dini_IntSet(accFormat,"Nebenjob",Spieler[playerid][Nebenjob]);
    dini_IntSet(accFormat,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(accFormat,"F1",Spieler[playerid][F1]);
    dini_IntSet(accFormat,"F2",Spieler[playerid][F2]);
    dini_IntSet(accFormat,"F3",Spieler[playerid][F3]);
    dini_IntSet(accFormat,"Geschlecht",Spieler[playerid][Geschlecht]);
    dini_IntSet(accFormat,"Herkunft",Spieler[playerid][Herkunft]);
    dini_IntSet(accFormat,"Levelpunkte",Spieler[playerid][Levelpunkte]);
    dini_IntSet(accFormat,"Interior",GetPlayerInterior(playerid));
    dini_IntSet(accFormat,"Bankgeld",Spieler[playerid][Bankgeld]);
    dini_IntSet(accFormat,"Leader",Spieler[playerid][Leader]);
    dini_IntSet(accFormat,"Rang",Spieler[playerid][Rang]);
    dini_IntSet(accFormat,"Premium",Spieler[playerid][Premium]);
    dini_IntSet(accFormat,"Wanted",GetPlayerWantedLevel(playerid));
    dini_IntSet(accFormat,"Pass",Spieler[playerid][Pass]);
    }
    return 1;
    }



    (e) OnPlayerSpawn neu gemacht. Problem noch immer :)

  • Hallo


    Als kleiner Hinweis (Ich habe damit selber Erfahrungen machen müssen). Baue bei OnPlayerDisconnect eine Abfrage ein, ob der Spieler eingelogt ist, denn wenn ein Spieler auf den Server connected, einmal das falsche Passwort eingibt und wieder disconnected wird die Spielerdatei im schlimmsten Falle mit Nullen zugeschrieben (Referenzwert).


    Gruss