MySQL Befehle

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 Abend Community,


    Ich würde gerne Befehle haben die eine MySQL Datenbank beeinträchtigen, sprich /admin [ID] [ LEVEL ], jedoch sollte es nicht ganz normaler Befehl sein, sondern sollte in den MySQL Tabellen gespeichert werden.



    Am besten ist ein Updater, der alles updated, dann fällt es einem auch leichter, da mann dan enum benutzen kann.



    lg


    pS

  • Ich meinte was anderes.


    Ich meinte, das man bei einem Befehl normal enum benutzen kann und dies wird nach dem Disconnecten festgehalten in der Tabelle.


    lg


    pS

  • new query[256],name[56];
    GetPlayerName(einSpieler, name, sizeof(name));
    format(query,256,"UPDATE `DeineTabelle` SET `DeineSpalte` ='%d' WHERE `EineSpalte` ='%s' ",DeineSpielerInfo[einSpieler][Admin],name);
    mysql_query(query);


    einSpieler ersetzt du mit der playerid Definition für den betroffenen Spieler


    DeineSpielerInfo dürfte klar sein wie du das zu ersetzen hast

  • /Edit: Du musst ja auch definieren welcher Eintrag aktualisiert werden soll, z.B.


    Du hast die Spalte "Name", diese hat den Wert "Test", von dieser willst du das Adm Level auf 1338 setzen.
    Da du aber mehrere Einträge hast, musst du festlegen welchen du ändern möchtest.

  • Ich weis net welche Einträge ich habe xD.


    Ich möchte ja den Admin Lvel irwie setzen, jedoch habe ich keine Ahnung wie ich des mache.


    lg


    pS

  • Exportiere mal deine Datenbank.


    Lerne SQL, damit du SQL-Query's machen kannst um somit sooft, wie du willst dein Adminlevel zu holen und zu setzen.
    SQL ist die Sprache mit der man in MySQL arbeitet.
    Du musst dich noch nicht mal mit JOIN oder TRUNCATE auskennen.
    Du benötigst lediglich Kenntnisse mit INSERT, UPDATE und SELECT, den Rest kannst du mit PHPmyAdmin machen, welches in XAMPP sowieso mitgeliefert ist.


    /EDIT: Links hinzugefügt

  • Lach..


    Du machst dir einen stock LoadUser oder so, den rufst du auf wenn der SPieler sich eingeloggt hat..
    jetzt kannst du da drinne die Werte aus der Tabelle ganz einfach mit diesem Befehl


    MySqlVerbinden();
    new PlayerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,PlayerName,32);
    SpielerInfo[playerid][Adminlevel] = mysql_GetInt("user", "Adminlevel", "Name", PlayerName);



    das gehört in den stock LoadAccount.
    und das dazu gehöriger stock mysql_GetInt, ist das hier


    stock mysql_GetString(Table[], Field[], Where[], Where2[])
    {
    new query[128], Get[128];
    format(query, 128, "SELECT %s FROM %s WHERE %s = '%s'", Field, Table, Where, Where2);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(Get);
    return Get;
    }


    stock mysql_GetInt(Table[], Field[], Where[], Where2[])
    {
    return strval(mysql_GetString(Table, Field, Where, Where2));
    }



    Diese 2 ebenfals im Script einbauen :)
    Wenn ich mich nicht Irre hat RFT glaube ich die stocks geschrieben :)


    lg

  • Achso sorry


    Dann machst du einen stock bei mir sieht er jetzt so aus..


    stock UserUpdate(playerid)
    {
    if(IsPlayerConnected(playerid))//checkt ob spieler verbunden ist
    {
    MySqlVerbinden();
    new playername[255]; //sollte klar sein :)
    GetPlayerName(playerid,playername,sizeof(playername));//-"-
    new bedien[256];//-"-
    new updatestring[256];//-"-
    format(updatestring,256,"%d",SpielerInfo[playerid][Adminlevel]);//Wir wandeln die Variable in einen string um
    format(bedien,sizeof(bedien),"%s",playername);//dann speichern wir den namen auch im string bedien
    mysql_SetString("spieler", "Adminlevel", updatestring, "Name", PlayerName[playerid]);//funktion mysqlupdate ausführen syntax siehe oben
    }
    return 1;
    }


    Diesne rufst du auf, wenn der spieler sich ausloggt -> OnPlayerDisconecct

  • bei dem befehl musst du lediglich die variable im script ändern. Gespeichert wird das dann beim ausloggen.
    Z.b so:
    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    new SpielerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, SpielerName, MAX_PLAYER_NAME);
    mysql_SetString("deine_tabelle", "dein varchar feld", dein_string, "Name", SpielerName);//String speichern
    mysql_SetInt("deine_tabelle", "dein int feld", dein_int, "Name", SpielerName);//integer speichern
    mysql_SetFloat("deine_tabelle", "dein float feld", dein_float, "Name", SpielerName);//float speichern
    }
    return 1;
    }
    stock mysql_SetInt(Table[], Field[], To, Where[], Where2[])
    {
    new query[128];
    format(query, 128, "UPDATE %s SET %s = '%d' WHERE %s = '%s'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }
    stock mysql_SetString(Table[], Field[], To[], Where[], Where2[])
    {
    new query[128];
    format(query, 128, "UPDATE %s SET %s = '%s' WHERE %s = '%s'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }
    stock mysql_SetFloat(Table[], Field[], Float:To, Where[], Where2[])
    {
    new query[128];
    format(query, 128, "UPDATE %s SET %s = '%.1f' WHERE %s = '%s'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Kann mir einer diesem Befehl so umschreiben, dass er die Daten speichert und lädt.


    if(strcmp(cmd,"/makeadmin",true)==0)
    {
    if(pInfo[playerid][Adminlv]>=8 || IsPlayerAdmin(playerid))
    {
    tmp=strtok(cmdtext,idx);
    if(!strlen(tmp)) return SendClientMessage(playerid,farbe_gelb,"/makeadmin [id] [AdminLevel]");
    new typ=strval(tmp);
    if(IsPlayerConnected(typ))
    {
    tmp=strtok(cmdtext,idx);
    if(!strlen(tmp)) return SendClientMessage(playerid,farbe_gelb,"/makeadmin [id] [AdminLevel]");
    new alvl=strval(tmp), name[MAX_PLAYER_NAME], str[70];
    GetPlayerName(typ,name,sizeof(name));
    format(str,sizeof(str),"Du hast %s Admin Level %d gegeben",name,alvl);
    SendClientMessage(playerid,farbe_blau,str);
    pInfo[typ][Adminlv]=alvl;
    }
    }
    return 1;
    }


    Er sollte pInfo[typ][Adminlv]=alvl; in Mysql in die Tabelle userdaten spalte Adminlv als wer alvl speichern.


    lg


    pS