Beiträge von [pL]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 :-/

    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

    Zu der Skin Frage:


    public OnPlayerSpawn(playerid)
    {
    SetPlayerSkin(playerid,mysql_GetInt("accounts", "Skin", "Name", SpielerInfo[playerid][pName]));
    return 1;
    }


    Hier bei OnPlayerSpawn wird dem Spieler die Skin ID zugewiesen die in der DB steht.



    Ich weiß zwar nicht ob es nötig ist aber ich hab bei meinem
    Lade stock auch :
    SetPlayerSkin(playerid,mysql_GetInt("accounts", "Skin", "Name", SpielerInfo[playerid][pName]));


    Und Speichern tust du den Skin so :


    mysql_SetInt("accounts", "Skin", SpielerInfo[playerid][pSkin], "Name", SpielerInfo[playerid][pName]);


    Wenn etwas nicht stimmt, bitte mich korrigieren ^^


    So bin nun auf Firefox, vielleicht ist es jetzt besser.


    Hier wird er geladen:


    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]);
    }
    return 1;
    }


    Hier wird er gespeichert:


    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
    }
    }
    return 1;
    }

    Wenn Du die Befehle mal ordentlich untereinander uns zeigen würdest, könnten wir Dir viel einfacher helfen. ;)

    Wie ich schon oben geschrieben habe, kommt es immer so raus :rolleyes:


    ocmd:givemoney(playerid,params[]){ if(!isPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid,GRAU,"Keine Rechte"); new pID,betrag,string[128]; if(sscanf(params,"ui",pID,betrag)) return SendClientMessage(playerid,GRAU,"/givemoney pid betrag"); GivePlayerMoney(pID,betrag); SpielerInfo[playerid][pGeld]+=betrag; format(string,sizeof(string),"Geld gegeben %i",betrag);SavePlayer(pID); return 1;
    }


    PlaxX weiß ich auch gerade nicht 8|
    jetzt ists richtig, aber trotzdem unformatiert -.-

    Hallo Breadfish Community.


    Ich arbeite derzeit an einem Selfmade Roleplay Script. Bisher basiert lediglich alles auf DINI, da ich noch nicht wirklich mit großen Systemen begonnen habe.
    Was ich bisher habe.

    • Registersystem
    • Loginsystem
    • Adminsystem
    • Accountsystem

    So jetzt würde ich gerne auf MySQL umsteigen, da ich gehört habe es wäre besser für Haussystem, Bizsystem und so weiter. Da ich mich mit MySQL noch nicht befasst habe und somit 0 Ahnung davon habe, habe ich mir hier das MySQL System von maddin angeschaut und nachgemacht. MySQL (Installation, Zugriff, Einstellungen, Login & Register Beispiel). Habe es auch so hinbekommen dass die Accounts erstellen werden, Einloggen etc klapp alles. So habe jetzt nun einige Admin Befehle erstellt um das Auslesen zu testen und genau da haperts.



    Hier der Befehl zum Geld geben:


    ocmd:givemoney(playerid,params[]){ if(!isPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid,GRAU,"Keine Rechte"); new pID,betrag,string[128]; if(sscanf(params,"ui",pID,betrag)) return SendClientMessage(playerid,GRAU,"/givemoney pid betrag"); GivePlayerMoney(pID,betrag); SpielerInfo[playerid][pGeld]+=betrag; format(string,sizeof(string),"Geld gegeben %iGetPlayerTeam(GetPlayerTeam(GetPlayerTeam(GetPlayerTeam(GetPlayerTeam(",betrag); SavePlayer(pID); return 1;
    }
    (sry ich weiß nicht wieso das in einer Wurscht geschrieben wird -.-)


    Hier mal das Enum SpielerInfo


    enum SpielerDaten{ pName[MAX_PLAYER_NAME], pLevel, pGeld, pKills, pTode, Float:pHealth, pAdminlevel}new SpielerInfo[MAX_PLAYERS][SpielerDaten];


    Die Stocks beim Speichern und Laden sind so wie im TuT



    Ich hoffe da kann mir wer weiterhelfen.
    Grüße,
    Makaveli