[Dini] Skin Speichern Funktioniert nicht

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 Tag.
    Ich habe mir ein Skinauswahl-Dialog gescriptet. Dort kann man sich 5 Verschiedene Skins aussuchen, welche auch von Spieler zu Spieler gespeichert & wiedergegeben werden sollte, was jedoch nicht Funktioniert. Man gibt Ingame /skin ein & kommt in ein Listen-Dialog. Dort sind die Skins aufgelistet & per Doppelklick oder auf den Button "Ok", bekommt der Spieler den Skin. Wenn ich nun aber Relogge, um zu Testen ob der Skin Gespeichert bzw. Geladen wird, habe ich wieder den normalen Skin wie vorher?
    -------
    Hier die Zeilen:
    SpawnInfo
    SetSpawnInfo(playerid,0,100,-1631.0098,-2234.3188,31.4766,0,0,0,0,0,0,0 ); //SkinID 100 bekomme ich IMMER!
    SetupPlayerForClassSelection(playerid);


    SetPlayerSpawn

    Hier war vorher auch noch "SetPlayerSkin". Dies hab ich jedoch schon entfernt, gebracht hat es jedoch nichts.
    forward SetPlayerSpawn(playerid);
    public SetPlayerSpawn(playerid)
    {
    switch(GetPVarInt(playerid,"Fraktion"))
    {
    case 0:
    {
    SetPlayerPos(playerid,spawn);
    }
    }
    return 1;
    }


    OnDialogResponse (/Skin Dialog)
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == 10)
    {
    if(listitem == 0)
    {
    SetPlayerSkin(playerid,288);//Cop
    }
    if(listitem == 1)
    {
    SetPlayerSkin(playerid,287);//Army
    }
    if(listitem == 2)
    {
    SetPlayerSkin(playerid,93);//Woman
    }
    if(listitem == 3)
    {
    SetPlayerSkin(playerid,100);//Biker
    }
    if(listitem == 4)
    {
    SetPlayerSkin(playerid,101);//Normal Man
    }
    }


    Der /skin Befehl
    ocmd:skin(playerid,params[])
    {
    ShowPlayerDialog(playerid,10,DIALOG_STYLE_LIST,"Skinauswahl","Polizist \nSoldat \nFrau \nRocker \nMann ","Ok","Abbrechen");
    return 1;
    }


    Speichern & Laden
    stock LoadAccount(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
    SetPVarInt(playerid,"Skin",dini_Int(Spielerdatei,"Skin"));//Hier war ein kleiner Loadfehler.. Wird trotzdem nicht richtig geladen..
    SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel"));
    SetPVarInt(playerid,"Fraktion",dini_Int(Spielerdatei,"Fraktion"));
    SetPVarInt(playerid,"Baned",dini_Int(Spielerdatei,"Baned"));
    if(GetPVarInt(playerid,"Baned")==1)
    {
    SendClientMessage(playerid,ROT,"Du bist vom Server gebannt.");
    Kick(playerid);
    }
    SetPVarInt(playerid,"loggedin",1);
    return 1;
    }


    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid));
    dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(Spielerdatei,"Skin",GetPlayerSkin(playerid));
    dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
    dini_IntSet(Spielerdatei,"Fraktion",GetPVarInt(playerid,"Fraktion"));
    dini_IntSet(Spielerdatei,"Baned",GetPVarInt(playerid,"Baned"));
    dini_IntSet(Spielerdatei,"timeban",GetPVarInt(playerid,"timeban"));
    }
    return 1;
    }


    Ich hoffe ihr könnt mir dabei Helfen!


    MfG


    //Edit: PwnQuelltext Fail. +fixxed

    Einmal editiert, zuletzt von Sebrawr ()

  • Beim Laden


    SetPVarInt(playerid,"Skin",dini_Int(Spielerdatei,"Skin"));


    Beim Speichern


    dini_IntSet(Spielerdatei, "Skin",GetPlayerSkin(playerid));


    Und dan kannste noch machen beim Laden


    SetPlayerSkin(playerid,GetPVarInt(playerid,"Skin"));

  • Also mein Stock sieht nun so aus.

    Stock LoadAccount
    stock LoadAccount(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
    SetPVarInt(playerid,"Skin",dini_Int(Spielerdatei,"Skin"));
    SetPlayerSkin(playerid,GetPVarInt(playerid,"Skin"));
    SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel"));
    SetPVarInt(playerid,"Fraktion",dini_Int(Spielerdatei,"Fraktion"));
    SetPVarInt(playerid,"Baned",dini_Int(Spielerdatei,"Baned"));
    if(GetPVarInt(playerid,"Baned")==1)
    {
    SendClientMessage(playerid,ROT,"Du bist vom Server gebannt.");
    Kick(playerid);
    }
    SetPVarInt(playerid,"loggedin",1);
    return 1;
    }

    & der Skin wird immernoch nicht richtig geladen.

  • Nope,Beansprucht nicht viel Umschreibung mal Mein System:


    Spoiler anzeigen
    enum playerDaten{
    pMember,
    pLeader,
    pAdmin,
    pJob,
    pRank
    }
    new PlayerInfo[MAX_PLAYERS][playerDaten];

    Spoiler anzeigen
    //Hoch ins Script

    Spoiler anzeigen
    stock Register(playerid,key[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GivePlayerMoney(playerid,15000);
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    dini_Create(Spielerdatei);
    dini_Set(Spielerdatei,"Passwort",key);
    SendClientMessage(playerid,BLAU,"Erfolgreich registriert.");
    SendClientMessage(playerid,WHITE,"");
    SendClientMessage(playerid,WHITE,"");
    SendClientMessage(playerid,WHITE,"");
    SendClientMessage(playerid,WHITE,"");
    SendClientMessage(playerid,WHITE,"");
    SendClientMessage(playerid,WHITE,"");
    SendClientMessage(playerid,WHITE,"");
    SendClientMessage(playerid,WHITE,"");
    SendClientMessage(playerid,WHITE,"");
    SendClientMessage(playerid,ROT,"------------------Dies ist Ein Reallife Server------------------");
    SendClientMessage(playerid,GELB,"Die Preise sind An niedrige Beträge angepasst. Du solltest");
    SendClientMessage(playerid,GELB,"Zunächst Ein billiges Auto oder Roller zulegen.");
    SendClientMessage(playerid,GELB,"Es gibt viele Jobs und Fraktionen selbst für Spieler");
    SendClientMessage(playerid,GELB,"auf dem Level. 1 gibt es Fraktionen.");
    SendClientMessage(playerid,GELB,"Wir wünschen Dir viel Spaß beim Spielen.");
    SendClientMessage(playerid,ROT,"----------------------------------------------------------------");
    SetPlayerScore(playerid,0);
    SetPVarInt(playerid,"loggedin",1);
    PlayerInfo[playerid][pMember] = 0;
    PlayerInfo[playerid][pLeader] = 0;
    PlayerInfo[playerid][pAdmin] = 0;
    dini_IntSet(Spielerdatei,"PayDay",0); // dini_IntSet bedeutet ganz einfach, das es in der .txd datei eine neue Zeile anlegt, Da steht dann: Payday= und dann die 0, die wir hier "PayDay",0 gesetzt haben wir wollen ja das er bei 0 Anfängt. Natürlich kann man auch eine andere Zahl setzten ;)
    dini_IntSet(Spielerdatei,"Monate",0);//hier das gleiche spiel, nur mit einer anderen Variable, und zwar Monate. Später mehr.

    Spoiler anzeigen
    return 1;
    }

    Spoiler anzeigen
    stock Login(playerid,key[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);

    if(gettime()<dini_Int(Spielerdatei,"timeban"))
    {
    SendClientMessage(playerid,ROT,"Du bist noch gebannt. Komm später wieder.");
    Kick(playerid);
    return 1;
    }

    if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),false))
    {
    LoadAccount(playerid);
    SendClientMessage(playerid,BLAU,"Erfolgreich eingeloggt.");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,BLAU,"Falsches Passwort.");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Dein Account wurde gefunden. Gib bitte das Passwort ein.","Login","Abbrechen");
    return 1;
    }
    }

    Spoiler anzeigen
    stock LoadAccount(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
    PlayerInfo[playerid][pAdmin]=dini_Int(Spielerdatei,"AdminLevel");
    PlayerInfo[playerid][pMember]=dini_Int(Spielerdatei,"Fraktion");
    PlayerInfo[playerid][pLeader]=dini_Int(Spielerdatei,"Leader");
    PlayerInfo[playerid][pRank]=dini_Int(Spielerdatei,"Rank");
    SetPVarInt(playerid,"Baned",dini_Int(Spielerdatei,"Baned"));
    if(GetPVarInt(playerid,"Baned")==1)
    {
    SendClientMessage(playerid,ROT,"Du bist vom Server gebannt.");
    Kick(playerid);
    }
    SetPVarInt(playerid,"loggedin",1);
    return 1;
    }

    Spoiler anzeigen
    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid));
    dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(Spielerdatei,"AdminLevel",PlayerInfo[playerid][pAdmin]);
    dini_IntSet(Spielerdatei,"Fraktion",PlayerInfo[playerid][pMember]);
    dini_IntSet(Spielerdatei,"Leader",PlayerInfo[playerid][pLeader]);
    dini_IntSet(Spielerdatei,"Rank",PlayerInfo[playerid][pRank]);//Rang ist nicht Member
    dini_IntSet(Spielerdatei,"Baned",GetPVarInt(playerid,"Baned"));
    dini_IntSet(Spielerdatei,"timeban",GetPVarInt(playerid,"timeban"));
    dini_IntSet(Spielerdatei,"PayDay",GetPVarInt(playerid,"PayDay"));
    dini_IntSet(Spielerdatei,"Respektpunkte",GetPVarInt(playerid,"Respektpunkte"));//hier das selbe für monate
    }
    return 1;
    }


    @Blackbook habe ca. vor 5 Tagen begonnen ;)

  • Füg das mal bei LoadAccount ein:


    SetPlayerSkin(playerid,dini_Int(Spielerdatei,"Skin"));


    und das bei deinem Save-Stock:


    dini_IntSet(Spielerdatei,"Skin",GetPlayerSkin(playerid));