Adminsystem mit DCMD und SSCANF buggt rum :)

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 Tag,
    ich habe schon wieder eine Frage, da Ingame mein Adminsystem nicht funktioniert. Ich habe schon das Forum
    durchsucht finde aber kein gutes Tutorial wo das mit
    if(sscanf(params,"ud",pid,alvl);
    erklärt wird. Wie weiß ich wann welcher Buchstabe kommt?

    OnPlayerCommandText
    dcmd(makeadmin,9,cmdtext)
    dcmd(kick,4,cmdtext)
    dcmd(ban,3,cmdtext)
    dcmd(makeleader,10,cmdtext)


    dcmd_makeadmin(playerid,params[])
    {
    new pid,alvl;
    if(sscanf(params,"ui",pid,alvl))
    if(IsPlayerAdmin(playerid))
    {
    new str[121];
    format(str,sizeof(str),"%s wurde von Administrator %s zum Admin Level: %d befördert",pid,playerid,alvl);
    SendClientMessageToAll(COLOR_GRAU,str);
    Spieler[pid][Adminlevel] = alvl;
    }
    return 1;
    }


    dcmd_kick(playerid,params[])
    {
    new pID, str[64];
    if(sscanf(params, "us",pID,str))return SendClientMessage(playerid,0xFF0000FF,"USAGE: /kick ID Grund");
    if(Spieler[playerid][Adminlevel] > 0)
    {
    new ThePlayer[MAX_PLAYER_NAME], str2[128];
    GetPlayerName(pID,ThePlayer,sizeof(ThePlayer));
    format(str2,sizeof(str2),"AdmCmd: %s wurde vom Server gekickt!",ThePlayer,str[0] ? str : "<Kein Grund>");
    SendClientMessageToAll(0xFF0000FF,str);
    Kick(pID);
    }
    else return SendClientMessage(playerid, 0xFF0000FF, "Dein Level reicht nicht aus!");
    return 1;
    }
    dcmd_ban(playerid,params[])
    {
    new pID, str[64];
    if(sscanf(params, "us",pID,str))return SendClientMessage(playerid,0xFF0000FF,"USAGE: /ban ID Grund");
    if(Spieler[playerid][Adminlevel] > 0)
    {
    new ThePlayer[MAX_PLAYER_NAME], str2[128];
    GetPlayerName(pID,ThePlayer,sizeof(ThePlayer));
    format(str2,sizeof(str2),"AdmCmd: %s wurde vom Server gekickt!",ThePlayer,str[0] ? str : "<Kein Grund>");
    SendClientMessageToAll(0xFF0000FF,str);
    Ban(pID);
    }
    else return SendClientMessage(playerid, 0xFF0000FF, "Dein Level reicht nicht aus!");
    return 1;
    }
    dcmd_makeleader(playerid,params[])
    {
    new pid,frakid;
    if(sscanf(params,"ui",pid,frakid))
    if(Spieler[playerid][Adminlevel] >=1 )
    {
    new string[123];
    Spieler[pid][Leader]=frakid;
    format(string,sizeof(string),"Du wurdest von Admin %s als Leader eingeladen.",playerid);
    SendClientMessageToAll(COLOR_GRAU,string);
    }
    }

  • Wie weiß ich wann welcher Buchstabe kommt?


    Das kommt darauf, an was es für ein Wert ist, für den der "Buchstabe" steht.


    Hier gibt es mehr Infos: http://forum.sa-mp.com/showthread.php?t=120356



    Bitte keine Script/Supportanfragen via PN!!!
    (Ausnahme: Scripten gegen Bezahlung!)

  • dcmd_makeadmin(playerid,params[])
    {
    new pid,alvl, PlayerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, PlayerName, sizeof(PlayerName))
    if(sscanf(params,"ui",pid,alvl))
    if(IsPlayerAdmin(playerid))
    {
    new str[121];
    format(str,sizeof(str),"%s wurde von Administrator %s zum Admin Level: %d befördert",pid,PlayerName,alvl);
    SendClientMessageToAll(COLOR_GRAU,str);
    Spieler[pid][Adminlevel] = alvl;
    //Hier fehlt eine "SpielerSpeichern" funktion.
    }
    return 1;
    }



    dcmd_kick(playerid,params[])
    {
    new pID, str2[64];
    if(sscanf(params, "us",pID,str2))return SendClientMessage(playerid,0xFF0000FF,"USAGE: /kick ID Grund");
    if(Spieler[playerid][Adminlevel] > 0)
    {
    new ThePlayer[MAX_PLAYER_NAME];
    GetPlayerName(pID,ThePlayer,sizeof(ThePlayer));
    format(str2,sizeof(str2),"AdmCmd: %s wurde vom Server gekickt! Grund: %s", ThePlayer, str);
    SendClientMessageToAll(0xFF0000FF,str);
    Kick(pID);
    }
    else return SendClientMessage(playerid, 0xFF0000FF, "Dein Level reicht nicht aus!");
    return 1;
    }
    dcmd_ban(playerid,params[])
    {
    new pID, str[64];
    if(sscanf(params, "us",pID,str))return SendClientMessage(playerid,0xFF0000FF,"USAGE: /ban ID Grund");
    if(Spieler[playerid][Adminlevel] > 0)
    {
    new ThePlayer[MAX_PLAYER_NAME];
    GetPlayerName(pID,ThePlayer,sizeof(ThePlayer));
    format(str2,sizeof(str2),"AdmCmd: %s wurde vom Server gekickt! Grund: %s", ThePlayer, str);
    SendClientMessageToAll(0xFF0000FF,str);
    //Hier fehlt eine "SpielerSpeichern" funktion.
    Ban(pID);
    }
    else return SendClientMessage(playerid, 0xFF0000FF, "Dein Level reicht nicht aus!");
    return 1;
    }
    dcmd_makeleader(playerid,params[])
    {
    new pid,frakid,ThePlayer[MAX_PLAYER_NAME];
    GetPlayerName(pID,ThePlayer,sizeof(ThePlayer));
    if(sscanf(params,"ui",pid,frakid))
    if(Spieler[playerid][Adminlevel] >=1 )
    {
    new string[123];
    Spieler[pid][Leader] = frakid;
    format(string,sizeof(string),"Du wurdest von Admin %s als Leader eingeladen.", ThePlayer);
    SendClientMessageToAll(COLOR_GRAU,string);
    }
    }


    ungetestet.


    Musste halt noch richtig einrücken..

    [align=center]

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen