MySQL | Spieler Editieren

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
  • Abend,
    ich hab ne Frage bzgl. MySQL ^^ undzwar: ich hab ein Selfmade auf MySQL und möchte einem Spieler (wen er Off ist) Admin wegnehmen / geben aber ich weiß nicht wie ich das machen muss :( (hab nicht viel Ahnung mit MySQL)


    Muss ich es irgentwie so machen
    ocmd:doadmin(playerid,params[])
    {
    if(SpielerInfo[playerid][pAdmin]==6){
    new pID,rank,string[80],query[400];
    if(sscanf(params,"ui",pID,rank))return SendClientMessage(playerid,WEIß,"Nutze: /doadmin [ID] [0 - 6]");
    if(rank<0||rank>6)return SendClientMessage(playerid,WEIß,"Nur von 0 bis 6");
    if(!IsPlayerConnected(pID)){
    format(string,sizeof(string),"Du hast %s Adminlevel %i gegeben",SpielerName(pID),rank);
    SendClientMessage(playerid,GELB,string);
    format(query, sizeof(query), "UPDATE accounts SET Admin ='%i' WHERE ID ='%i'", rank,pAdmin);//bekomme hier immer Tag mismatch -.-"
    mysql_query(query);
    }else SendClientMessage(playerid,WEIß,"Der Spieler darf dafür nicht online sein!");
    }
    return 1;
    }


    Mein /Makeadmin CMD sieht so aus

    Spoiler anzeigen
    ocmd:makeadmin(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,6))return SendClientMessage(playerid,WEIß,"Du hast keine Rechte dazu");
    new pID,rank,string[128];
    if(sscanf(params,"ui",pID,rank))return SendClientMessage(playerid,WEIß,"Nutze: /makeadmin [ID] [0 - 6]");
    if(rank<0||rank>6)return SendClientMessage(playerid,WEIß,"Nur von 0 bis 6");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,WEIß,"Dieser Spieler ist nicht online");
    format(string,sizeof(string),"Du hast %s Adminlevel %i gegeben",SpielerName(pID),rank);
    SendClientMessage(playerid,GELB,string);
    switch(rank) {
    case 0:{SendClientMessage(pID,ROT,"Du wurdest als Supporter entlassen");SpielerInfo[pID][pAdmin]=0;SavePlayer(pID);}
    case 1:{ SendClientMessage(pID,GELB,"Du bist jetzt ClanMember");SpielerInfo[pID][pAdmin]=1;SavePlayer(pID);}
    case 2:{SendClientMessage(pID,GELB,"Du bist nun Moderator");SpielerInfo[pID][pAdmin]=2;SavePlayer(pID);}
    case 3:{SendClientMessage(pID,GELB,"Du bist nun Administrator");SpielerInfo[pID][pAdmin]=3;SavePlayer(pID);}
    case 4:{SendClientMessage(pID,GELB,"Du bist nun SuperAdmin");SpielerInfo[pID][pAdmin]=4;SavePlayer(pID);}
    case 5:{SendClientMessage(pID,GELB,"Du bist nun ServerManager");SpielerInfo[pID][pAdmin]=5;SavePlayer(pID);}
    case 6:{SendClientMessage(pID,GELB,"Du bist nun ServerOwner");SpielerInfo[pID][pAdmin]=6;SavePlayer(pID);}
    }
    return 1;
    }


    bin für jede Hilfe sehr dankbar :)


    MFG

  • UPDATE accounts SET Admin ='%i' WHERE ID ='%i'"


    So machst du es ja
    aber das klappt ja nicht wirklich da du da einen Fehler hast
    du musst den Inputtext ausgeben sprich keine Funktion mit pID


    So sollte es sein
    hintenhinter machst du z.b. level, name da du ja den Namen angibst wenn er off ist
    und um den zu finden brauchst du den namen nicht die ID
    Ich hoffe, das ich dir weiterhelfen konnte


    versuchs so
    UPDATE accounts SET Admin ='%d' WHERE Name ='%s'"

  • pAdmin ist bei dir wohl auch ein Wert im enum,daher auch das tag-mismatch.Woher ist das weiss ?
    if(SpielerInfo[playerid][pAdmin]==6){
    Du solltest besser die Tabelle updaten wo der Spielername steht,nicht eine ID. Denn ich glaube nicht,dass du die ID als Primärschlüssel in der Tabelle hast mit auto-increment.

  • selbe Fehler und wieso inputtext ich arbeite nicht bei diesem CMD mit nem Dialog?

    Mit inputtext meine ich das was du eingegeben hast
    gib mir mal 5 Minuten dann mach ich das eben


    //edit hier mal mein ergibnis
    es ist ungetestet daher keine Garantie


    ocmd:admin(playerid,params[]){ if(SpielerInfo[playerid][pAdmin]>=1) { new Name[128], level; if(sscanf(params,"si",Name,level))return SendClientMessage(playerid,cBlue,"/admin [Name] [Level]"); format(query, sizeof query, "UPDATE `accounts` SET `Adminlevel` = %i WHERE `Name` = %s LIMIT 1;",level, Name); mysql_query(query); SCM(playerid,ROT,"Dein text"); } return 1;}


    //edit2
    Der pwn code will nicht so wie er soll
    //edit 3
    da fehlt oben noch nen new query[128];

  • versuch ma das
    format(query, 128, "UPDATE accounts SET Adminlevel = '%d' WHERE Name = '%s'", level, Name);

  • Ne geht nicht
    ocmd:admin(playerid,params[])
    {
    if(SpielerInfo[playerid][pAdmin]==6){
    new Name[128],level,query[400];
    if(sscanf(params,"si",Name,level))return SendClientMessage(playerid,WEIß,"/admin [Name] [Level]");
    format(query,128, "UPDATE `accounts` SET `Admin` = %i WHERE `Name` = %s LIMIT 1;",level, Name);
    mysql_query(query);print("Geändert!");
    SendClientMessage(playerid,ROT,"Dein text");
    }
    return 1;
    }

  • Tausch mal den string aus ich habe da einen fehler gemacht


    guck dir den Post über deinen an
    da kannst du sehen was ich da fürn fehler hatte