Beiträge von Siedler

    SQL
    mysql_SetInt("accounts", "AdminLevel", pDaten[playerid][pAdminLevel], "Name", pDaten[playerid][pNames]);pDaten[playerid][pAdminLevel] = mysql_GetInt("accounts", "AdminLevel", "Name", pDaten[playerid][pNames]);



    Fehlt bei dir

    Wo wird den das Admin Level gespeichert/geladen?
    In der Datenbank ist es zwar vorhanden, aber nicht in den Stock's.
    Außerdem würde ich das Laden/Speichern nicht so machen, wie es im Tutorial ist.


    Pro Speichern/Einloggen ~100 Querys => 8o

    Änder die Struktur vom Auslesen und Abspeichern.
    Du führst gerade 120 SQL Querys pro Spieler der sich Einloggt oder Ausloggt aus.


    Les beim Laden / Speichern den Namen direkt aus, nicht mit
    PlayerInfo[playerid][pUserName]

    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]);




    Für DM Server ganz gut, für größere Server eher :sleeping: .


    Pro Spieler der Einloggt und/oder Ausloggt werden ~100 Query's ausgeführt, wenn die Datenbank für Roleplay/Reallife ausgelegt ist.
    Das verursacht starke Server seitige Laggs.

    dass ich nen anderes mysqlplugin bevorzuge

    Welches bevorzugst du denn?
    Hat das Plugin eigentlich was mit der Include zu tun bzw Funktion?



    EDIT:
    Habs mal ausgetauscht, ändert nichts an der Sache.


    Was ist denn der durchschnittliche RAM verbrauch eines RL Server?

    Probier mal so:



    mysql vielleicht falsch konfiguriert?
    kann viele gründe haben...

    Wie meinst du falsch Konfiguriert?



    Aber normal ist es nicht, das ~60MB RAM mehr verbraucht werden wegen dem Plugin.
    Auf dem eigenen PC (Home Server) läuft es unter Windows.
    Mit dem MySQL System verbraucht es 28MB Ram.
    Ohne dem MySQL System verbraucht es ebenfalls nur ~27MB.


    Beim Herunterfahren vom Server merkt man auch, das alles verlangsamt ist (Uhrzeit des Kicks).


    Ist es normal, das ein SA:MP Server, die 3-Fache Ressourcen verbraucht wenn es unter MySQL läuft?
    Es wurde nichts verändert, außer die Speicherung von DINI zu MySQL.


    Die Accounts werden nur gespeichert, wenn der Spieler Ausloggt / Restartet oder Ausgeschalten wird.
    Also kann es daran nicht liegen.


    MySQL Plugin:
    MySQL Plugin R5
    ( Maddin Tutorial )



    Der Ram verbrauch mit DINI lag bei 25MB (40 Spieler).
    Der Ram verbrauch mit MySQL liegt bei 70MB (40 Spieler).

    ResetPlayerMoney aufrufen beim Geld geben am Login.
    Da die 500$ + das Geld, vom vorherigen Spieler gegeben wird.

    enum tInfo
    {
    Tanke[64],
    Float:Liter,
    };


    new TankInfo[22][tInfo];



    Das mit strmid etc bei Namen hab ich noch nicht getestet,
    da es beim Float ja auch auftritt und evt nicht daran liegen könnte.


    Mit dem Enum haben die anderen Tankstellen (DINI) auch Funktioniert.

    Mit GetFloat und GetString habe ich es auch schon probiert.
    Die Fehler bleiben gleich, nur das beim Auslesen des Namens zusätzlich folgender Error auftaucht:


    SQL
    error 047: array sizes do not match, or destination array is too small

    Ich kenn mich mit MySQL von Pawn noch nicht so gut aus ^^
    Nach dem MySQL Tutorial von Maddin ging auch alles, aber es gibt ein Fehler, wo kein Fehler sein sollte?



    SQL
    error 035: argument type mismatch (argument 4)error 035: argument type mismatch (argument 4)



    Die 2 Error-Zeilen sind mit // Markiert:


    public LoadTank()
    {


    new xyz;
    while (xyz < sizeof(TankInfo))
    {
    TankInfo[xyz][Tanke] = mysql_GetInt("tankstellen", "Name", "id", xyz); // Tanke Name
    TankInfo[xyz][Liter] = mysql_GetInt("tankstellen", "Liter", "id", xyz); // Tanke restliche Liter
    printf("Tankstelle %s wurde mit %.1f Liter geladen.",TankInfo[xyz][Tanke],TankInfo[xyz][Liter]);
    xyz++;
    }
    }


    Der Fehler sollte bei mysql_GetInt sein: Genau bei xyz.
    Aber es sollte eigentlich alles richtig sein.
    Hat jemand ne ahnung davon?
    Oder kann man MySQL nicht mit while auslesen.

    public OnPlayerStreamIn(playerid, forplayerid)
    {
    if(IsACop(forplayerid)) {
    if(WantedLevel[playerid] >= 1) {
    new giveplayer[MAX_PLAYER_NAME], Float:wX, Float:wY, Float:wZ, string[256];
    new PlayerText3D:wantedtext[MAX_PLAYERS];
    DMRate[playerid] = (PlayerInfo[playerid][pKills] / PlayerInfo[playerid][pDeaths]);
    GetPlayerName(playerid, giveplayer, sizeof(giveplayer));
    format(string, sizeof(string), "Name: %s (%d)\nWantedlevel: %d\nDM-Rate: %d", giveplayer, playerid, WantedPoints[playerid], DMRate);
    GetPlayerPos(playerid, wX, wY, wZ );
    wantedtext[playerid] = CreatePlayer3DTextLabel(forplayerid,string,COLOR_RED,wX,wY,wZ,40.0,playerid,INVALID_VEHICLE_ID,1);
    Attach3DTextLabelToPlayer(wantedtext[playerid],playerid, wX, wY, 1.0);
    }
    }
    return 1;
    }


    Das wird so nicht funktionieren ;)


    Attach3DTextLabelToPlayer(wantedtext[playerid],playerid, wX, wY, 1.0);


    ist auch Sinnlos an der stelle.


    Da der Label bereits an den Spieler beim erstellen gehängt wird.


    new giveplayer[MAX_PLAYER_NAME], Float:wX, Float:wY, Float:wZ, string[256];


    GetPlayerPos(playerid, wX, wY, wZ );



    ebenfalls Sinnlos. 0.0 würde ausreichen beim Anhängen des Labels.

    Zitat


    new zinsen = PlayerInfo[playerid][pAccount]/10000*10;
    PlayerInfo[playerid][pAccount] += zinsen;
    format(string, sizeof(string), "Zinsen: $%d", zinsen);
    SendClientMessage(playerid, COLOR_GREY, string);

    Probiers ma so.