Report für eine bestimmte person schließen

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
  • Hey, bin noch wie mann so will ein noob im scripten.


    Ich hab eine frage, die wäre:


    Wie kann ich jemanden den Report verschließen zb wenn er iwas sinnloses redet?


    Sollte aber nach dem Relogg wieder weg sein.
    Ich hoffe ihr könnt mir weiter helfen ^^

  • bei den new´s:
    new reportoff[MAX_PLAYERS];



    dann bei onplayercommandtext
    dcmd(reportoff,9,cmdtext);
    und dann ganz unten (auserhalb eines publics):
    dcmd_reportoff(playerid, params[])
    {
    new pid;
    new pname[MAX_PLAYER_NAME];
    new adminname[MAX_PLAYER_NAME];
    new string1[128];
    new string2[128];
    if(sscanf(params, "d",pid))
    {
    return SendClientMessage(playerid, 0xB90000FF, "Verwendung: /reportoff [PlayerID]");
    }
    GetPlayerName(playerid, adminname,sizeof adminname);
    GetPlayerName(pid, pname, sizeof pname);
    format(string1, sizeof string1, "Du hast die /report Funktion für %s deaktiviert!", pname);
    format(string2, sizeof string2, "Admin %s hat die /report Funktion für dich deaktiviert!", adminname);
    SendClientMessage(pid,0xB90000FF,string2);
    SendClientMessage(playerid, 0xB90000FF, string1);
    reportoff[playerid] = 1;
    return 1;
    }
    musst halt noch dcmd und sscanf definieren. siehe meine signatur ;D


    und eben noch dementsprechend bei deiner /report funktion:
    if(reportoff[playerid] == 1)
    {
    //kein report
    }
    else
    {
    //report erlaubt
    }

    viel spass damit :)


    Ach ja und um /report wieder einzuschalten:



    dcmd_reporton(playerid, params[])


    {


    new pid;


    new pname[MAX_PLAYER_NAME];


    new adminname[MAX_PLAYER_NAME];


    new string1[128];


    new string2[128];


    if(sscanf(params, "d",pid))


    {


    return SendClientMessage(playerid, 0xB90000FF, "Verwendung: /reporton [PlayerID]");


    }


    GetPlayerName(playerid, adminname,sizeof adminname);


    GetPlayerName(pid, pname, sizeof pname);



    format(string1, sizeof string1, "Du hast die /report Funktion für %s aktiviert!", pname);


    format(string2, sizeof string2, "Admin %s hat die /report Funktion für dich aktiviert!", adminname);


    SendClientMessage(pid,0xB90000FF,string2);


    SendClientMessage(playerid, 0xB90000FF, string1);


    reportoff[playerid] = 0;


    return 1;


    }



    Ein Edit noch^^:
    bei OnPlayerConnect():
    reportoff[playerid] = 0;

    4 Mal editiert, zuletzt von v1rus ()

  • danke für die schnelle hilfe ^^
    kriege es aber leider mit dem dcmd nicht recht gebacken :s


    wäre es möglich diese 2 befehle cmd umzuschreiben?:s

  • FüR GODFATHER! (bei selfmade kommen errorz)


    Oben unter den anderen "new"s einfügen:
    new pReportBlock[MAX_PLAYERS]


    Unter OnPlayerConnect:
    pReportBlock[playerid]=0;


    /togreport [playerid]
    if(strcmp(cmd,"/togreport",true)==0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pAdmin] < CHANGEME_CHANGEME_CHANGEME) { return 1; } //CHANGEME_CH...=Ab welchen Adminlevel das CMD benutzt werden darf
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_WHITE, "Benutzung: /togreport [Playerid]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    if(IsPlayerConnected(giveplayerid) && (giveplayerid != INVALID_PLAYER_ID))
    {
    if(pReport[playerid]==0)
    {
    pReportBlock[giveplayerid]=0;
    SendClientMessage(playerid,COLOR_GREY,"Report wurde für diesen Spieler wieder eingeschaltet!");
    }
    else
    {
    pReportBlock[giveplayerid]=1;
    SendClientMessage(playerid,COLOR_GREY,"Report wurde für diesen Spieler ausgeschaltet!");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Falsche ID !");
    return 1;
    }
    }
    return 1;
    }


    /report
    if(strcmp(cmd, "/report", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new pName[MAX_PLAYER_NAME]
    GetPlayerName(playerid,pName, sizeof(pName));
    if(pReportBlock[playerid] == 1) { return SendClientMessage(playerid,COLOR_GREY,"Du darfst dieses Befehl nicht benutzen!"); }
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Verwendung: /report [text]");
    return 1;
    }
    format(string, sizeof(string), "Report von %s: %s", pName, (result));
    ABroadCast(COLOR_YELLOW,string,1);
    SendClientMessage(playerid, COLOR_YELLOW, "Dein Report wurde an die Admins gesendet.");
    }
    return 1;
    }


    /report is aus nem irgendsonem alten GF-Edit kopiert, und ich habe es HIER geschrieben, es ist ungetestet.

  • Vielen Dank :)
    Ist alles richtig gewesen, nur bei
    new pName[MAX_PLAYER_NAME] hat ein Simikolon gefehlt oder wie auch imemr es geschrieben wird :D


    danke danke^^


    //edit, geht doch nicht, er sperrt den report einfach nicht ;(
    Es steht dort immer der report wurde wieder angeschaltet, aber er wird nicht gesperrt :s

    Einmal editiert, zuletzt von Deadwalker ()

  • Liegt dran weil er in der if Abfrage am Ende ein ==0 stehen hat und dann pReportBlock[giveplayerid] = 0;
    Richtig ist es so:
    if(strcmp(cmd,"/togreport",true)==0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pAdmin] < CHANGEME_CHANGEME_CHANGEME) { return 1; } //CHANGEME_CH...=Ab welchen Adminlevel das CMD benutzt werden darf
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_WHITE, "Benutzung: /togreport [Playerid]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    if(IsPlayerConnected(giveplayerid) && (giveplayerid != INVALID_PLAYER_ID))
    {
    if(pReport[playerid]==0)
    {
    pReportBlock[giveplayerid]=1;
    SendClientMessage(playerid,COLOR_GREY,"Report wurde für diesen Spieler wieder eingeschaltet!");
    }
    else
    {
    pReportBlock[giveplayerid]=0;
    SendClientMessage(playerid,COLOR_GREY,"Report wurde für diesen Spieler ausgeschaltet!");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Falsche ID !");
    return 1;
    }
    }
    return 1;
    }


    Viel Spaß :)