/setskin 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 ein Problem mit meinem CMD.
    es wird eingespeichert, aber nicht ordentlich beim einloggen abgerufen.


    command
    ocmd:setskin(playerid,params[])
    {
    new pID,level;
    new string[128];
    new oname[MAX_PLAYER_NAME];
    new aname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,aname,sizeof aname);
    GetPlayerName(pID,oname,sizeof oname);
    if(IsPlayerAnAdmin(playerid,2))
    {
    if(sscanf(params,"ud",pID,level))
    return SendClientMessage(playerid,Rot,"INFO: /setskin [PlayerID] [SkinID]");
    if(!IsPlayerConnected(pID))
    return SendClientMessage(playerid,Rot,"ID nicht vergeben");
    if(sscanf(params,"ud",pID,level)) {
    SendClientMessage(playerid,Rot,"INFO: /setskin [PlayerID] [SkinID]"); }
    if(level < 0 || level > 300) { return SendClientMessage(playerid,Rot,"Die Skin ID muss zwischen 0 und 300 liegen!"); }
    SetPlayerSkin(pID, level);
    SetPVarInt(pID,"Skin",level);
    format(string,sizeof string,"Du hast %s sein Skin zur ID %d gewechselt.",oname,level);
    SendClientMessage(playerid,Rot,string);
    format(string,sizeof string,"Admin %s hat dein Skin zur ID %d gewechselt.",aname,level);
    SendClientMessage(pID,Rot,string);
    }
    else { return SendClientMessage(playerid,Rot,"Diesen Befehl kannst du nicht nutzen."); }
    return 1;
    }


    abrufen des accounts
    stock LoadAccount(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name);
    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
    SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel"));
    SetPVarInt(playerid,"Skin",GetPVarInt(playerid,"Skin"));
    dini_IntSet(Spielerdatei,"Premium",GetPVarInt(playerid,"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);
    }
    SetPVarInt(playerid,"loggedin",1);
    return 1;
    }


    Danke für eure Hilfe im vorraus! :3

    4 Mal editiert, zuletzt von Flaw ()

  • speichern
    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.ini",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,"Skin",GetPVarInt(playerid,"Skin"));
    dini_IntSet(Spielerdatei,"Baned",GetPVarInt(playerid,"Baned"));
    dini_IntSet(Spielerdatei,"Premium",GetPVarInt(playerid,"Premium"));
    }
    return 1;
    }

  • und wo setzt du dann den Skin für den Spieler beim Login? :P


    PS: Mit einem print-Debug kannst du auch einfach selbst checken welcher Wert gespichert...geladen und gesetzt wird und wo da der Fehler passiert ^^

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • stock Login(playerid,key[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name);
    if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),false))
    {
    LoadAccount(playerid);
    SendClientMessage(playerid,Blau,"Erfolgreich eingeloggt.");
    pFirstLog[playerid] = false;
    return 1;
    }
    else
    {
    SendClientMessage(playerid,Blau,"Falsches Passwort.");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde gefunden. Gib bitte das Passwort ein.","Login","Abbrechen");
    return 1;
    }
    }


    :D


    PS: wie macht man das?

  • stock Login(playerid,key[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name);
    if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),false))
    {
    -> LoadAccount(playerid); <-
    SendClientMessage(playerid,Blau,"Erfolgreich eingeloggt.");
    pFirstLog[playerid] = false;
    return 1;
    }
    else
    {
    SendClientMessage(playerid,Blau,"Falsches Passwort.");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde gefunden. Gib bitte das Passwort ein.","Login","Abbrechen");
    return 1;
    }
    }




    stock LoadAccount(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name);
    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
    SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel"));
    SetPVarInt(playerid,"Skin",GetPVarInt(playerid,"Skin"));//<--
    dini_IntSet(Spielerdatei,"Premium",GetPVarInt(playerid,"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);
    }
    SetPVarInt(playerid,"loggedin",1);
    return 1;
    }

  • SetPVarInt(playerid,"Skin",GetPVarInt(playerid,"Skin"));//<--


    Ja...da setzt du den Wert für die PVar...aber noch nicht den Skin für den Spieler :rolleyes:


    Schreib das mal so:


    if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),false))
    {
    LoadAccount(playerid);
    SendClientMessage(playerid,Blau,"Erfolgreich eingeloggt.");
    SetPlayerSkin(playerid,GetPVarInt(playerid,"Skin")); //Der SKin muss ja auch erstmal gesetzt werden...sonst lädst du nur die PVAR
    pFirstLog[playerid] = false;
    return 1;
    }

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S


  • stock LoadAccount(playerid) {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name);
    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
    SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel"));


    // -> Du musst hier den Skin von deiner Datei auslesen und nicht von den PVars, weil die setzt du ja hier erst
    SetPVarInt(playerid,"Skin",GetPVarInt(playerid,"Skin"));
    // Also anstatt der obrigen Zeile machst du folgendes:
    SetPVarInt(playerid, "Skin", dini_Int(Spielerdatei, "Skin"));


    // Dann wird noch der Skin gesetzt mit:
    SetPlayerSkin(playerid, GetPVarInt(playerid, "Skin")); // Hier kannst du GetPVarInt nutzen, weil du darüber die Spielervariable mit SetPVarInt schon gesetzt hast




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


    Ich hoffe ich konnte helfen.
    - D4rk