A command like /report that saves in a text file inside scriptfiles
#1

I want a command that saves the text after the command like:

/report [saves all text here]

and that also says which player sent it
Reply
#2

as dcmd (don't forget to define this command at "OnPlayerCommandText")

pawn Код:
dcmd_report(playerid, params[])
{
    new tmp[256], idx;
    tmp = strtok(params, idx);
    if(!strlen(tmp)){
        SendClientMessage(playerid, COLOR, "/report [id] [text]");
        return 1;
    }else{
        new id = strval(tmp);
        new reson[256];
        reason = strrest(params, idx);
        if(!strlen(reason)){
            SendClientMessahe(playerid, COLOR, "/report [id] [text]");
            return 1;
        }else{
            if(IsPlayerConnected(id)){
                new name[MAX_PLAYER_NAME], name2[MAX_PLAYER_NAME];
                GetPlayerName(playerid, name, sizeof(name));
                GetPlayerName(id, name2, sizeof(name2));
                new string[256];
                format(string, sizeof(string), "*%s reported %s: %s", name, name2, reason);
                new File:log = fopen("Report.txt", io_append);
                fwrite(log, string);
                fclose(log);
            }else{
                SendClientMessage(playerid, COLOR, "This player is not connected.");
                return 1;
            }
        }
    }
    return 1;
}
the stock for strrest
pawn Код:
stock strrest(const string[], index)
{
    new length = strlen(string),offset = index,result[256];
    while ((index < length) && ((index - offset) < (sizeof(result) - 1)) && (string[index] > '\r'))
    {
        result[index - offset] = string[index];
        index++;
    }
    result[index - offset] = EOS;
    return result;
}
just wrote it, so I don't know whether this will work. If not tell me
Reply
#3

Do you think you could make it in strcmp?
Reply
#4

pawn Код:
new cmd[128];
new idx;
if(strcmp(cmd, "/report", true) == 0)
{
    new tmp[128], idx;
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)){
        SendClientMessage(playerid, COLOR, "/report [id] [text]");
        return 1;
    }else{
        new id = strval(tmp);
        new reson[256];
        reason = strrest(cmdtext, idx);
        if(!strlen(reason)){
            SendClientMessahe(playerid, COLOR, "/report [id] [text]");
            return 1;
        }else{
            if(IsPlayerConnected(id)){
                new name[MAX_PLAYER_NAME], name2[MAX_PLAYER_NAME];
                GetPlayerName(playerid, name, sizeof(name));
                GetPlayerName(id, name2, sizeof(name2));
                new string[256];
                format(string, sizeof(string), "*%s reported %s: %s", name, name2, reason);
                new File:log = fopen("Report.txt", io_append);
                fwrite(log, string);
                fclose(log);
            }else{
                SendClientMessage(playerid, COLOR, "This player is not connected.");
                return 1;
            }
        }
    }
    return 1;
}
Reply
#5

I have

pawn Код:
new cmd[256], idx;
    cmd = strtok(cmdtext, idx);
    if(strcmp(cmd, "/report", true) == 0)
    {
    new tmp[128], idx;
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)){
        SendClientMessage(playerid, COLOR_LIGHTRED, "/report [id] [text]");
        return 1;
    }else{
        new id = strval(tmp);
        new reason[256];
        reason = strrest(cmdtext, idx);
        if(!strlen(reason)){
            SendClientMessage(playerid, COLOR_LIGHTRED, "/report [id] [text]");
            return 1;
        }else{
            if(IsPlayerConnected(id)){
                new name[MAX_PLAYER_NAME], name2[MAX_PLAYER_NAME];
                GetPlayerName(playerid, name, sizeof(name));
                GetPlayerName(id, name2, sizeof(name2));
                new string[256];
                format(string, sizeof(string), "*%s reported %s: %s", name, name2, reason);
                new File:log = fopen("Report.txt", io_append);
                fwrite(log, string);
                fclose(log);
            }else{
                SendClientMessage(playerid, COLOR_LIGHTRED, "This player is not connected.");
                return 1;
            }
        }
    }
and I get these:


Quote:

C:\Users\dell\Desktop\Urban FreeRoam\gamemodes\UTDM.pwn(730) : warning 219: local variable "idx" shadows a variable at a preceding level
C:\Users\dell\Desktop\Urban FreeRoam\gamemodes\UTDM.pwn(73 : error 017: undefined symbol "strrest"
C:\Users\dell\Desktop\Urban FreeRoam\gamemodes\UTDM.pwn(73 : error 033: array must be indexed (variable "reason")
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase


2 Errors.

Reply
#6

Oh sorry, didn't add the stock,
I still get this though:

Quote:

C:\Users\dell\Desktop\Urban FreeRoam\gamemodes\UTDM.pwn(730) : warning 219: local variable "idx" shadows a variable at a preceding level
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase


1 Warning.

Reply
#7

have idx defined before?
Reply
#8

Got it working, thanks!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)