Macht mir einer den Befehl? BELOHNUNG

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,


    wäre doch einer so lieb und macht mir diesen Befehl:


    /report ID Grund


    Das heißt, wenn der Spieler diesen Befehl ausführt sollen die Admins eine Meldung bekommen zB:


    Spieler X hat Spieler X reported. Grund: X


    Meine Adminabfrage: if(isPlayerAnAdmin(playerid,5))


    Belohnung: Ich biete einen 50 Slot SA-MP Server hosted by me.

  • naya.. c&p is ja wohl nich die beste art n server zu machn mhm ?
    Hier mal n Code wie er mit dcmd & sscanf aussehen könnte...
    dazu brauchste dann eben noch ne funktion die den namen returnt

    dcmd_report(playerid, params[])
    {
    new text[128], text2[128];
    if(sscanf(params, "is", id, text)) return SendClientMessage(playerid, ROT, "USAGE: /report playerid text");
    else {
    format(text, sizeof(text), "[%i]%s reportet %s: %s", playerid, SpielerName(playerid), SpielerName(id), text);
    format(text2, sizeof(text2), "Report abgesendet: %s", params);
    SendClientMessage(playerid, 0xFFFF00FF, text2);
    for(new i =0; i<MAX_PLAYERS; i++) {
    if(IsPlayerAnAdmin(i,1)) {
    SendClientMessage(i, 0xFFFF00FF, text);
    }
    }
    return 1;
    }
    }



    stock SpielerName(playerid)
    {
    new Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, sizeof(Name));
    return Name;
    }

  • Ich mach ihn dir umsonst:



    Als erstes brauchst du die strtok Funktion, pack die am besten ganz unten ins Script.


    strtok(const string[], &index)
    {
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
    index++;
    }


    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
    result[index - offset] = string[index];
    index++;
    }
    result[index - offset] = EOS;
    return result;
    }


    Jetzt der Befehl und ein paar Variablen:


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new cmd[256];
    new tmp[256];
    new idx;
    cmd = strtok(cmdtext, idx);


    if(strcmp("/report", cmd, true, 10) == 0)
    {
    new params[256];
    params = strtok(cmdtext, idx);
    if(!strlen(params)){return SendClientMessage(playerid, 0xAA3333AA, "Benutzung: /report [Spieler] [Grund]");}
    new target = ReturnUser(params);
    if(target != INVALID_PLAYER_ID)
    {
    params = strtok(cmdtext, idx);
    if(!strlen(params)){return SendClientMessage(playerid, 0xAA3333AA, "Benutzung: /report Spieler [Grund]");}
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(isPlayerAnAdmin(i, 5))
    {
    new string[64], TargetName[MAX_PLAYER_NAME], PlayerName[MAX_PLAYER_NAME];
    GetPlayerName(target, TargetName, sizeof(TargetName));
    GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
    format(string, sizeof(string), "Spieler %s hat Spieler %s reported. Grund: %s", PlayerName, TargetName, params);
    SendClientMessage(i, 0xAA3333AA, string);
    }
    }
    }
    else
    {
    new string[64];
    format(string, sizeof(string), "Der Spieler %s konnte nicht gefunden werden.", params);
    SendClientMessage(playerid, 0xAA3333AA, string);
    }
    return 1;
    }
    }


    Farben bei SendClientMessage kannste dir ja selber raussuchen.


    BlackLegend

  • Und das bitte in OCMD? Und ich habe um die ganze Funktion gebeten, deshalb biete ich den SAMP Server.

  • BlackLegend ich danke Dir und teste den Befehl gleich. Ich meinte deinen Vorgänger.


    Sorry wenn du dich angesprochen gefühlt hast. Wollte nur kein DCMD.

  • Bei dem Befehl von BlackLegend kommen diese Error:
    C:\Dokumente und Einstellungen\Andre\Desktop\samp03\pawno\stunt.pwn(1038) : error 017: undefined symbol "ReturnUser"
    C:\Dokumente und Einstellungen\Andre\Desktop\samp03\pawno\stunt.pwn(1029) : warning 204: symbol is assigned a value that is never used: "tmp"


    Kann mir das einer fixxen?

  • Bei den Includes fügst du folgendes ein:
    #include <utils>


    Und die Zeile mit der Variable tmp löscht du einfach:


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new cmd[256];
    new idx;
    cmd = strtok(cmdtext, idx);


    if(strcmp("/report", cmd, true, 10) == 0)
    {
    new params[256];
    params = strtok(cmdtext, idx);
    if(!strlen(params)){return SendClientMessage(playerid, 0xAA3333AA, "Benutzung: /report [Spieler] [Grund]");}
    new target = ReturnUser(params);
    if(target != INVALID_PLAYER_ID)
    {
    params = strtok(cmdtext, idx);
    if(!strlen(params)){return SendClientMessage(playerid, 0xAA3333AA, "Benutzung: /report Spieler [Grund]");}
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(isPlayerAnAdmin(i, 5))
    {
    new string[64], TargetName[MAX_PLAYER_NAME], PlayerName[MAX_PLAYER_NAME];
    GetPlayerName(target, TargetName, sizeof(TargetName));
    GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
    format(string, sizeof(string), "Spieler %s hat Spieler %s reported. Grund: %s", PlayerName, TargetName, params);
    SendClientMessage(i, 0xAA3333AA, string);
    }
    }
    }
    else
    {
    new string[64];
    format(string, sizeof(string), "Der Spieler %s konnte nicht gefunden werden.", params);
    SendClientMessage(playerid, 0xAA3333AA, string);
    }
    return 1;
    }
    }