Skin speichern/laden

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 habe den /setskin-Befehl und auch meine stock's erweitert. Nun weiß ich nicht, wie ich das bei /setskin machen soll,
    dass es in die Datei geschrieben wird und beim LogIn der alte Skin geladen wird. Ich bin nun soweit, ist das richtig?


    Der Befehl:

    ocmd:setskin(playerid,params[])
    {
    if(isPlayerAnAdmin(playerid,4))
    {
      new pID, Skin;
    if(sscanf(params,"ui",pID,Skin))return SendClientMessage(playerid,ROT,"Benutzung: /setskin [ID] [Skin-ID]");
    {
       if(Skin<0||Skin>299)return SendClientMessage(playerid,ROT,"Diese Skin-ID existiert nicht!");
       {
           SetPlayerSkin(pID,Skin);
           SetPVarInt(pID,"Skin",Skin);
           return 1;
       }
    }
    }
    else
    {
       SendClientMessage(playerid,ROT,"Du hast nicht die nötigen Rechte für diesen Befehl!");
       return 1;
    }
    }


    Stock-SpielerSpeichern:

    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",GetPVarInt(playerid,"Adminlevel"));
    dini_IntSet(Spielerdatei,"Baned",GetPVarInt(playerid,"Baned"));
    dini_IntSet(Spielerdatei,"timeban",GetPVarInt(playerid,"timeban"));
    dini_IntSet(Spielerdatei,"Skin", GetPlayerSkin(playerid));
    }
    return 1;
    }


    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"));
    SetPlayerSkin(playerid,dini_Int(Spielerdatei,"Skin"));
    SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel"));
    SetPVarInt(playerid,"Baned",dini_Int(Spielerdatei,"Baned"));
    if(GetPVarInt(playerid,"Baned")==1)
    {
    SendClientMessage(playerid,ROT,"Du bist vom Server gebannt.");
    Kick(playerid);
    }
    return 1;
    }

  • Ja das ist alles richtig, du könntest noch etwas einfügen in deinen setskin befehl:
    ocmd:setskin(playerid,params[])
    {
    if(isPlayerAnAdmin(playerid,4))
    {
    new pID, Skin;
    if(sscanf(params,"ui",pID,Skin))return SendClientMessage(playerid,ROT,"Benutzung: /setskin [ID] [Skin-ID]");
    {
    if(Skin<0||Skin>299)return SendClientMessage(playerid,ROT,"Diese Skin-ID existiert nicht!");
    {
    SetPlayerSkin(pID,Skin);
    SetPVarInt(pID,"Skin",Skin);
    SpielerSpeichern(playerid); // Hier speichert er dann direkt den skin sobald du /setskin eingegeben hast
    return 1;
    }
    }
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du hast nicht die nötigen Rechte für diesen Befehl!");
    return 1;
    }
    }

  • Das Problem ist, es wird nicht mal etwas in die Spielerdatei geschrieben.


    Eigentlich müsste Skin dazukommen, tut es aber nicht.

  • Wie gesagt, der Skin wird nicht mal in meiner Spielerdatei gespeichert und außerdem wird bei LoadAccount der Skin abgerufen.
    Aber das kann nicht gehen, da der Skin nicht gespeichert wird.

  • Dreamzz hat es doch oben geschrieben?


    Naja mach es
    So:
    Beim speichern und Laden ,speicherst und lädst du
    mit PVars.
    Sprich beim speichern:dini_IntSet(Spielerdatei,"Skin",GetPVarInt(playerid,"Skin"))
    Beim Laden hingegen:
    SetPVarInt(playerid,"Skin",dini_Int(Spielerdatei,"Skin"));


    Somit hast du später auch die Möglichkeit mehrer Skins leichter abzuspeichern. Beispielsweise fraktionsskins. Sodass diese nicht als Hauptskin benutzt werden.
    So jetzt setzt du bei onplayerspawn den Skin nur noch auf die Var Skin :)

    Projektleiter

    Cleared to Land ist in der Script Werkstatt ;)


  • So weit verstanden. Nun zeig mir doch bitte was ich bei OnPlayerSpawn schreiben soll?


    Ich verstehe es einfach nicht, sorry.

  • Schreib bei OnPlayerSpawn
    SetPlayerSkin(playerid, GetPVarInt(playerid,"Skin");
    Müsste eigentlich richtig sein ^^

    Spoiler anzeigen
    10 Beiträge [X]
    50 Beiträge [X]
    100 Beiträge [X]
    150 Beiträge [X]
    200 Beiträge [X]
    250 Beiträge [X]
    300 Beiträge [X]
    350 Beiträge [X]
    400 Beiträge [X]
    450 Beiträge [X]
    500 Beiträge [X]
    550 Beiträge []
    600 Beiträge []
    650 Beiträge []
    700 Beiträge []
    750 Beiträge []

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Error:
    C:\Dokumente und Einstellungen\Andre\Desktop\samp03\pawno\stunt.pwn(662) : error 001: expected token: ",", but found ";"


    Die Zeile:
    SetPlayerSkin(playerid, GetPVarInt(playerid,"Skin");

  • Da fehlt eine Klammer, Sorry bin am iPod.


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

    Spoiler anzeigen
    10 Beiträge [X]
    50 Beiträge [X]
    100 Beiträge [X]
    150 Beiträge [X]
    200 Beiträge [X]
    250 Beiträge [X]
    300 Beiträge [X]
    350 Beiträge [X]
    400 Beiträge [X]
    450 Beiträge [X]
    500 Beiträge [X]
    550 Beiträge []
    600 Beiträge []
    650 Beiträge []
    700 Beiträge []
    750 Beiträge []

  • Okay, das geht soweit.


    Doch wenn ich mir per /setskin dann einen Skin gebe wird dieser NICHT in die Spielerdatei geschrieben..

  • Du hast bei /setskin SpielerSpeichern(playerid); nicht SpielerSpeichern(pID); ;)

    Spoiler anzeigen
    10 Beiträge [X]
    50 Beiträge [X]
    100 Beiträge [X]
    150 Beiträge [X]
    200 Beiträge [X]
    250 Beiträge [X]
    300 Beiträge [X]
    350 Beiträge [X]
    400 Beiträge [X]
    450 Beiträge [X]
    500 Beiträge [X]
    550 Beiträge []
    600 Beiträge []
    650 Beiträge []
    700 Beiträge []
    750 Beiträge []

  • Das habe ich geändert und trotzdem wird es nicht in der Spielerdatei gespeichert.
    Und wenn ich eine SkinID manuell in die Datei schreib, spawne ich trotzdem mit dem CJ Skin..

  • Versuch mal SetPlayerSkin(playerid,GetPVarInt(playerid,"Skin")); ganz unten bei onplayerspawn.

    Spoiler anzeigen
    10 Beiträge [X]
    50 Beiträge [X]
    100 Beiträge [X]
    150 Beiträge [X]
    200 Beiträge [X]
    250 Beiträge [X]
    300 Beiträge [X]
    350 Beiträge [X]
    400 Beiträge [X]
    450 Beiträge [X]
    500 Beiträge [X]
    550 Beiträge []
    600 Beiträge []
    650 Beiträge []
    700 Beiträge []
    750 Beiträge []

  • Hier ist alles:



    public OnPlayerSpawn(playerid)
    {
    SetPlayerSkin(playerid,GetPVarInt(playerid,"Skin"));
    return 1;
    }



    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"));
    SetPlayerSkin(playerid,dini_Int(Spielerdatei,"Skin"));
    SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel"));
    SetPVarInt(playerid,"Premium",dini_Int(Spielerdatei,"Premium"));
    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);
    }
    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,"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"));
    dini_IntSet(Spielerdatei,"Skin",GetPVarInt(playerid,"Skin"));
    dini_IntSet(Spielerdatei,"Premium",GetPVarInt(playerid,"Premium"));
    }
    return 1;
    }



    ocmd:setskin(playerid,params[])
    {
    if(isPlayerAnAdmin(playerid,4))
    {
    new pID, Skin;
    if(sscanf(params,"ui",pID,Skin))return SendClientMessage(playerid,ROT,"Benutzung: /setskin [ID] [Skin-ID]");
    {
    if(Skin<0||Skin>299)return SendClientMessage(playerid,ROT,"Diese Skin-ID existiert nicht!");
    {
    SetPlayerSkin(pID,Skin);
    SetPVarInt(pID,"Skin",Skin);
    SpielerSpeichern(pID);
    return 1;
    }
    }
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du hast nicht die nötigen Rechte für diesen Befehl!");
    return 1;
    }
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen