/setadmin

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
  • Hallo Community ich habe ien Problem mit diesem Command und zwar setzt der das adminlevel nicht auf das gewünschte und der zeigt auch nicht das %i und das %s im chat an.

    IsAdmin(playerid,a_level)
    {
    if(sInfo[playerid][alevel]>=a_level)return 1;
    return 0;
    }
    ocmd:makeadmin(playerid,params[])
    {
    if(!IsAdmin(playerid,5))return SendClientMessage(playerid,ROT,"Dein Rang ist zu niedrig");
    new pID,a_level,nachricht[128],nachrichte[128];
    if(sscanf(params,"ui",pID,a_level))return SendClientMessage(playerid,GRAU,"INFO:/makeadmin [id] [rang]");
    sInfo[pID][alevel]=a_level;
    SpielerSpeichern(pID);
    format(nachricht,sizeof(nachricht),"%s hat dein Adminrang geändert. Neuer Rang: %i",pID,a_level);
    SendClientMessage(pID,GRÜN,nachricht);
    format(nachrichte,sizeof(nachrichte),"Du hast den Rang von %s auf Rang %i geändert.",pID,a_level);
    SendClientMessage(playerid,GRÜN,nachrichte);
    return 1;
    }

  • Du musst den Name mit GetPlayerName auslesen:
    ocmd:makeadmin(playerid,params[])
    {
    if(!IsAdmin(playerid,5))return SendClientMessage(playerid,ROT,"Dein Rang ist zu niedrig");
    new pID,a_level,nachricht[145], name[MAX_PLAYER_NAME];
    if(sscanf(params,"ui",pID,a_level))return SendClientMessage(playerid,GRAU,"INFO:/makeadmin [id] [rang]");
    sInfo[pID][alevel]=a_level;
    SpielerSpeichern(pID);
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    format(nachricht,sizeof(nachricht),"%s hat dein Adminrang geändert. Neuer Rang: %i",name,a_level);
    SendClientMessage(pID,GRÜN,nachricht);
    GetPlayerName(pID, name, MAX_PLAYER_NAME);
    format(nachricht,sizeof(nachricht),"Du hast den Rang von %s auf Rang %i geändert.",name,a_level);
    SendClientMessage(playerid,GRÜN,nachricht);
    return 1;
    }

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • Probier es so:
    ocmd:makeadmin(playerid,params[])
    {
    if(!IsAdmin(playerid,5))return SendClientMessage(playerid,ROT,"Dein Rang ist zu niedrig");
    new pID,a_level,nachricht[128],nachrichte[128];
    if(sscanf(params,"ud",pID,a_level))return SendClientMessage(playerid,GRAU,"INFO:/makeadmin [id] [rang]");
    sInfo[pID][alevel]=a_level;
    SpielerSpeichern(pID);
    format(nachricht,sizeof(nachricht),"%s hat dein Adminrang geändert. Neuer Rang: %d",pID,a_level);
    SendClientMessage(pID,GRÜN,nachricht);
    format(nachrichte,sizeof(nachrichte),"Du hast den Rang von %s auf Rang %d geändert.",pID,a_level);
    SendClientMessage(playerid,GRÜN,nachrichte);
    return 1;
    }


    Um den Namen abzufragen, brauchst du eine Funktion, so fragst du nur die ID des Spielers ab und kannst in dem Fall kein %s verwenden.

  • Um den Namen abzufragen, brauchst du eine Funktion, so fragst du nur die ID des Spielers ab und kannst in dem Fall kein %s verwenden.


    Außerdem, wenn du schon versuchst das richtige zu posten, dann solltest du auch den Fehler mit dem Namen beheben, und GetPlayerName einfügen. ;)

  • Habe grade gesehen, dass ich den Parameter nicht geändert habe, sorry.
    ocmd:makeadmin(playerid,params[])
    {
    if(!IsAdmin(playerid,5))return SendClientMessage(playerid,ROT,"Dein Rang ist zu niedrig");
    new pID,a_level,nachricht[145], name[MAX_PLAYER_NAME];
    if(sscanf(params,"ui",pID,a_level))return SendClientMessage(playerid,GRAU,"INFO:/makeadmin [id] [rang]");
    sInfo[pID][alevel]=a_level;
    SpielerSpeichern(pID);
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    format(nachricht,sizeof(nachricht),"%s hat dein Adminrang geändert. Neuer Rang: %i",name,a_level);
    SendClientMessage(pID,GRÜN,nachricht);
    GetPlayerName(pID, name, MAX_PLAYER_NAME);
    format(nachricht,sizeof(nachricht),"Du hast den Rang von %s auf Rang %i geändert.",name,a_level);
    SendClientMessage(playerid,GRÜN,nachricht);
    return 1;
    }
    Dann geht's.

  • So das mit dem Name wäre geklärt und das mit dem Rang auch also die %werte
    aber entweder setzt er das adminlevel nicht oder er speichert es nicht.


    und ich habe diesen mysql,log

    SQL
    [21:36:47] [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1' at line 1
  • SpielerSpeichern(playerid)
    {
    //Speichern
    if(sInfo[playerid][eingeloggt]==0)return 1;
    new query[128];
    format(query,sizeof(query),"UPDATE user SET level='%i',money='%i',alevel='%i' WHERE id='%i",sInfo[playerid][level],sInfo[playerid][money],sInfo[playerid][alevel],sInfo[playerid][id]);
    mysql_pquery(dbhandle,query,"","");
    return 1;
    }
    ResetPlayer(playerid)
    {
    sInfo[playerid][eingeloggt] = 0;
    sInfo[playerid][id] = 0;
    sInfo[playerid][level] = 0;
    sInfo[playerid][money] = 0;
    sInfo[playerid][alevel] = 0;
    return 1;
    }


    Oder was meinst du ?

  • format(query,sizeof(query),"UPDATE user SET level='%i',money='%i',alevel='%i' WHERE id='%i",sInfo[playerid][level],sInfo[playerid][money],sInfo[playerid][alevel],sInfo[playerid][id]);
    zu:
    format(query,sizeof(query),"UPDATE user SET level='%i',money='%i',alevel='%i' WHERE id='%i'",sInfo[playerid][level],sInfo[playerid][money],sInfo[playerid][alevel],sInfo[playerid][id]);


    Am Ende des Queries hat ein ' gefehlt.