Aus phpMyAdmin auslesen

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
  • Tag


    Ich will das wenn ich in der Datenbank eintrage Adminlevel 6 halt das ich das auch nach einer Min bin. Aber es klappt nicht.


    Arbeite mit MYSQL




    public onemin(playerid)
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    LoadPlayer(playerid); // Lädt die Spieler Dateien jede Min.
    SavePlayer(playerid); // Speicher die Spieler Dateien jede Min.
    }
    }
    return 1;
    }

  • Ein 5-Minuten-Takt-Timer unter OnGameModeInit.
    In der Funktion vom Timer eine Schleife erstellen für alle Spieler.
    Wenn sich der Admin-Level in der Datenbank verändert hat, also nur ein höheres Level,
    dann sollte dies übernommen werden und eine Nachricht muss erscheinen.



    public OnGameModeInit()
    {
    SetTimer("DatenbankRefresh", 1*60000, true);
    }



    #define timer%0(%1) forward%0(%1); public%0(%1)


    timer DatenBankRefresh()
    {
    for(new playerid; playerid < MAX_PLAYERS; playerid++)
    {
    if(PlayerData[playerid][pAdmin] > 0 && PlayerData[playerid][pLoggedIn])
    {
    new plrnme[20];
    GetPlayerName(playerid, plrnme, sizeof plrnme);
    new adminlevel = getInt("user", "adminlevel", "name", plrnme);
    if(PlayerData[playerid][pAdmin] < adminlevel)
    PlayerData[playerid][pAdmin] = adminlevel;
    continue;
    }
    }
    return 1;
    }

    Einmal editiert, zuletzt von d30af26d ()

  • Du solltest jedoch bei einer solchen "SynchronTabelle" bei "Value" ein String verwenden, da nicht jede Synchronisation nur Zahlen verwenden ;)


    [table=3]
    [*]id
    [*]type
    [*]data


    [*]1
    [*]Adminlevel
    [*][Tag]Spieler|6


    [/table]


    "data" Format: Spielername | Wert

  • Hatte ich undzwar so


    timer DatenBankRefresh()
    {
    for(new playerid; playerid < MAX_PLAYERS; playerid++)
    {
    if(SpielerInfo[playerid][pAdmin] > 0 && GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    new plrnme[20];
    GetPlayerName(playerid, plrnme, sizeof plrnme);
    new adminlevel = mysql_GetInt("accounts", "Adminlevel", "Name", plrnme);
    if(SpielerInfo[playerid][pAdmin] < adminlevel)
    {
    SpielerInfo[playerid][pAdmin] = adminlevel;
    }
    continue;
    }
    }
    return 1;
    }

  • Habs nun so


    Was ist daran Falsch kriege 3 Errors


    public DatenbankRefresh()
    {
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(SpielerInfo[i][pAdmin] > 0)
    {
    mysql_GetInt("accounts","Adminlevel","Name", SpielerInfo[i][pAdmin])
    if(SpielerInfo[i][pAdmin] < Adminlevel)
    {
    SpielerInfo[i][pAdmin] = Adminlevel;
    }
    }
    }
    return 1;
    }


    Errors:
    (328) : error 017: undefined symbol "Adminlevel"
    (330) : error 017: undefined symbol "Adminlevel"

  • Habs nun so es kommt kein Error nix


    public DatenbankRefresh()
    {
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(SpielerInfo[i][pAdmin] > 0)
    {
    new Adminlevel = mysql_GetInt("accounts","Adminlevel","Name", SpielerInfo[i][pAdmin]);
    if(SpielerInfo[i][pAdmin] < Adminlevel)
    {
    SpielerInfo[i][pAdmin] = Adminlevel;
    }
    }
    }
    return 1;
    }

  • new Adminlevel = mysql_GetInt("accounts","Adminlevel","Name", SpielerInfo[i][pAdmin]);


    Wird niemals klappen.
    1. Es können mehr Admins auf diese falsche Weise dasselbe Level haben
    2. Solltest du wieder den Spielernamen da reinbauen.