report system

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
  • Leute...


    ocmd:report(playerid,params[])
    {
    if(!strlen(params)) return SendClientMessage(playerid,-1,"Vewendung: /report [Text]");
    new namestr[MAX_PLAYER_NAME],string[144];
    GetPlayerName(playerid, namestr, MAX_PLAYER_NAME);
    format(string,144,"[Report] %s meldet Folgendes: %s",namestr,params);
    for(new i; i<MAX_PLAYERS; i++)if(isPlayerAnAdmin(i, 1))SendClientMessage(i,ROT,string);
    return 1;
    }


  • Es kommt immernoch wenn ich nur /Report eingebe [Report] %s meldet folgendes: (Hier kommt nix) aber es soll auch das mit dem Report nicht kommen solange hinter /Report nix geschrieben wird.


  • ocmd:report(playerid,params[])
    {
    if(!strlen(params))return SendClientMessage(playerid,-1,"Vewendung: /report [Text]");
    new namestr[MAX_PLAYER_NAME],string[144];
    GetPlayerName(playerid, namestr, MAX_PLAYER_NAME);
    format(string,144,"[Report] %s meldet Folgendes: %s",namestr,(params));
    for(new i; i<MAX_PLAYERS; i++)if(isPlayerAnAdmin(i, 1))SendClientMessage(i,ROT,string);
    return 1;
    }


    Ps. Kommt die Meldung wenn kein Text erscheint: /report [Text] ?


    Und wenn das so nicht geht machs so:

    ocmd:report(playerid,params[])
    {
    if(sscanf(params,"us",params))return SendClientMessage(playerid,0x00A5FFFF,"Verwendung: /report [Text]");
    new namestr[MAX_PLAYER_NAME],string[144];
    GetPlayerName(playerid, namestr, MAX_PLAYER_NAME);
    format(string,144,"[Report] %s meldet Folgendes: %s",namestr,(params));
    for(new i; i<MAX_PLAYERS; i++)if(isPlayerAnAdmin(i, 1))SendClientMessage(i,ROT,string);
    return 1;
    }

  • Und wenn das so nicht geht machs so:


    Der Code wird nicht klappen.. Schau dir mal die Zeile an, wo du sscanf benutzt..
    "us" -> Wofür das "u"?


    ocmd:report(playerid,params[])
    {
    if(sscanf(params,"s",params))return SendClientMessage(playerid,0x00A5FFFF,"Verwendung: /report [Text]");
    new namestr[MAX_PLAYER_NAME],string[144];
    GetPlayerName(playerid, namestr, MAX_PLAYER_NAME);
    format(string,144,"[Report] %s meldet Folgendes: %s",namestr,params);
    for(new i; i<MAX_PLAYERS; i++)if(isPlayerAnAdmin(i, 1))SendClientMessage(i,ROT,string);
    return 1;
    }


    //Falls das auch nicht klappt:



    ocmd:report(playerid,params[])
    {
    new str[128];
    if(sscanf(params,"s",str))return SendClientMessage(playerid,0x00A5FFFF,"Verwendung: /report [Text]");
    new namestr[MAX_PLAYER_NAME],string[144];
    GetPlayerName(playerid, namestr, MAX_PLAYER_NAME);
    format(string,144,"[Report] %s meldet Folgendes: %s",namestr,str);
    for(new i; i<MAX_PLAYERS; i++)if(isPlayerAnAdmin(i, 1))SendClientMessage(i,ROT,string);
    return 1;
    }


    Da muss das aber klappen...

  • Der Code den ich dir gegeben habe funktioniert zu 100%. Wenn der bei dir nicht funktioniert liegt es wohl an deiner ocmd Include, lade die mal neu runter und kompiliere den Code nochmal durch.
    Es scheint so, als dass die eingegebenen Parameter einfach nicht übergeben werden.

  • Dann weiß ich nicht an was es noch liegen kann, irgendwas hast du da vermacht.
    Füge es so mal direkt unter OnPlayerCommandText ein, ist das Selbe:


    if(!strcmp(cmdtext, "/report", true, 7) && (cmdtext[7] == ' ' || strlen(cmdtext) == 7))
    {
    if(!strlen(cmdtext[8])) return SendClientMessage(playerid,-1,"Vewendung: /report [Text]");
    new namestr[MAX_PLAYER_NAME],string[144];
    GetPlayerName(playerid, namestr, MAX_PLAYER_NAME);
    format(string,144,"[Report] %s meldet Folgendes: %s",namestr,cmdtext[8]);
    for(new i; i<MAX_PLAYERS; i++)if(isPlayerAnAdmin(i, 1))SendClientMessage(i,ROT,string);
    return 1;
    }