MySQL | Skin laden funktioniert manchmal nicht

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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 Leute,
    sorry dass ich so viele Fragen stelle, aber bei MySQL bin ich noch neu :-/.


    Ich habe es geschafft dass der Skin gespeichert wird und geladen wird, jedoch passiert es manchmal dass man wieder den CJ Skin am Anfang kriegt und nicht den zugewiesenen Skin.
    Das passiert zb. wenn ich den Server ausschalte oder wenn ich einen GMX mache. Habe jetzt nicht ganz mitbekommen ob es nur beim Ausschalten oder nur beim GMX passiert.


    Hier mal die Codes


    Mit dem Adminbefehl den Skin zuweisen.
    ocmd:setskin(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid, 3)) return SendClientMessage(playerid, GRAU, keineadminrechte);
    new pID, skinID, string[128], string2[128];
    if(sscanf(params,"ui", pID, skinID)) return SendClientMessage(playerid, GRAU, "Verwendung: /setskin [Spieler] [Skin]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid, GRAU, "Spieler ist nicht online.");
    if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, ROT, "* Du musst dich einloggen.");
    SetPlayerSkin(pID,skinID);
    SpielerInfo[playerid][pSkin]=skinID;
    format(string, sizeof(string), "AdminBefehl: Der Admin %s hat dem Spieler %s die Skin-ID %i zugewiesen.", sName(playerid), sName(pID), skinID);
    format(string2, sizeof(string2), "** Du hast den Skin %i von Admin %s bekommen.", skinID, sName(playerid));
    SendClientMessageToAll(BLAU, string);
    SendClientMessage(pID, WHITE, string2);
    return 1;
    }





    Hier wird im Stock wird er geladen
    SetPlayerSkin(playerid,mysql_GetInt("accounts", "Skin", "Name", SpielerInfo[playerid][pName]));



    Hier im Stock wird er gespeichert.
    mysql_SetInt("accounts", "Skin", SpielerInfo[playerid][pSkin], "Name", SpielerInfo[playerid][pName]);



    Und hier bei OnPlayerSpawn dann zugewiesen.
    public OnPlayerSpawn(playerid)
    {
    SetPlayerSkin(playerid,mysql_GetInt("accounts", "Skin", "Name", SpielerInfo[playerid][pName]));
    return 1;
    }


    Habe ich etwas Falsch gemacht ?


    Lg, Makaveli


  • Das Problem liegt darin, das du bei deinem Restart Befehl nicht den Spieler speicherst.


    Speicher im Befehl direkt den Spieler & Setz einen kleinen Timer & lass dann erst den Server restarten.. Dann sollte es klappen 8)


    Habs so gemacht, weiß jetzt nicht ob es richtig ist .. wahrscheinlich nicht weil es nicht funktioniert xD


    ocmd:gmx(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid, 6)) return SendClientMessage(playerid, GRAU, keineadminrechte);
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    SavePlayer(i);
    SendClientMessage(i, BLAU, "Es wurden alle Accounts gespeichert");
    }
    SetTimer("ServerGMX", 1000, 1);
    new str[128];
    format(str, sizeof(str), "~r~Paradise Roleplay startet neu - ~y~Bitte Warten.~n~~r~%d~b~ Sekunden verbleiben.",GMX_Count);
    GameTextForAll(str,21000,3);
    return 1;
    }


    public ServerGMX()
    {
    GMX_Count--;
    if(GMX_Count <= 0)
    {
    return SendRconCommand("gmx");
    }
    new str[128];
    format(str, sizeof(str), "~r~Paradise Roleplay startet neu - ~y~Bitte Warten.~n~~r~%d~b~ Sekunden verbleiben.",GMX_Count);
    GameTextForAll(str,30000,3);
    return 1;
    }



    new GMX_Count = 20;
    forward ServerGMX();


    /edit
    habe jetzt beim setskin Befehl noch darunter SavePlayer(pID); geschrieben.
    Beim ersten GMX, wird der Skin geladen und beim nem zweiten wird der Skin wieder zurückgesetzt :-/