Need help with /reply and /ignore
#1

Fixed!
Reply
#2

pawn Код:
new LastPM[MAX_PLAYERS] = -1;

    CMD:privatemessage(playerid,params[])
    {
        new targetid, msg[256];
        if(sscanf(params, "us[256]", targetid, msg)) return SendClientMessage(playerid, LIGHTBLUE,"[ USAGE: /privatemessage (name/id) (Message) ]");
        if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, red, "[ ERROR: Player is not online! ]");
        if(pm[targetid] == false) return SendClientMessage(playerid, red,"[ ERROR: Player has blocked private messages! ]");
        if(targetid == playerid) return SendClientMessage(playerid, red, "[ ERROR: You can't send private message to yourself! ]");
        new string[256], Name1[MAX_PLAYER_NAME], Name2[MAX_PLAYER_NAME];
        GetPlayerName(playerid, Name1, sizeof(Name1));
        GetPlayerName(targetid, Name2, sizeof(Name2));
        format(string, sizeof(string),"Private Message from %s(%d): %s", Name1, playerid, msg);
        SendClientMessage(targetid,COLOR_PINK, string);
        format(string, sizeof(string),"Private Message sent to %s(%d): %s", Name2, targetid, msg);
        SendClientMessage(playerid,COLOR_PINK, string);
        new File:file=fopen("/Database/Logs/PrivateMessageChatLog.log", io_append), hour, minute, second, year, month, day;
        LastPM[targetid] = playerid;
        gettime(hour, minute, second);
        getdate(year, month, day);
        format(string, sizeof(string), "[%d/%d/%d | %d:%d:%d] [ %s to %s: %s ]\r\n", day, month, year, hour, minute, second, Name1, Name2, msg);
        fwrite(file, string);
        fclose(file);
        return 1;
    }

    CMD:reply(playerid,params[])
    {
        new targetid = LastPM[playerid], msg[256];
        if(sscanf(params, "s[256]", msg)) return SendClientMessage(playerid, LIGHTBLUE,"[ USAGE: /privatemessage (name/id) (Message) ]");
        if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, red, "[ ERROR: Player is not online! ]");
        if(pm[targetid] == false) return SendClientMessage(playerid, red,"[ ERROR: Player has blocked private messages! ]");
        if(targetid == playerid) return SendClientMessage(playerid, red, "[ ERROR: You can't send private message to yourself! ]");
        new string[256], Name1[MAX_PLAYER_NAME], Name2[MAX_PLAYER_NAME];
        GetPlayerName(playerid, Name1, sizeof(Name1));
        GetPlayerName(targetid, Name2, sizeof(Name2));
        format(string, sizeof(string),"Private Message from %s(%d): %s", Name1, playerid, msg);
        SendClientMessage(targetid,COLOR_PINK, string);
        format(string, sizeof(string),"Private Message sent to %s(%d): %s", Name2, targetid, msg);
        SendClientMessage(playerid,COLOR_PINK, string);
        new File:file=fopen("/Database/Logs/PrivateMessageChatLog.log", io_append), hour, minute, second, year, month, day;
        LastPM[targetid] = playerid;
        gettime(hour, minute, second);
        getdate(year, month, day);
        format(string, sizeof(string), "[%d/%d/%d | %d:%d:%d] [ %s to %s: %s ]\r\n", day, month, year, hour, minute, second, Name1, Name2, msg);
        fwrite(file, string);
        fclose(file);
        return 1;
    }

    CMD:blockprivatemessage(playerid, params[])
    {
        if(pm[playerid] == false)
        {
            pm[playerid] = true;
            SendClientMessage(playerid, -1,"{A90202}[ You have turned on receiving private messages, you will receive private messages now! ]");
        }
        else
        {
            pm[playerid] = false;
            SendClientMessage(playerid, -1,"{A90202}[ You have turned off receiving private messages, you will no longer receive private messages! ]");
        }
        return 1;
    }
here is /reply cmd, what does /ignore do?
Reply
#3

/ignore id, so you wouldn't receive any private messages whom you ignored.
Reply
#4

here you go:

pawn Код:
new LastPM[MAX_PLAYERS] = -1, bool:Ignored[MAX_PLAYERS][MAX_PLAYERS];

    CMD:privatemessage(playerid,params[])
    {
        new targetid, msg[256];
        if(sscanf(params, "us[256]", targetid, msg)) return SendClientMessage(playerid, LIGHTBLUE,"[ USAGE: /privatemessage (name/id) (Message) ]");
        if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, red, "[ ERROR: Player is not online! ]");
        if(pm[targetid] == false) return SendClientMessage(playerid, red,"[ ERROR: Player has blocked private messages! ]");
        if(Ignored[targetid][playerid]) return SendClientMessage(playerid, red, "[ ERROR: Player has blocked in-comming private messages from you! ]");
        if(targetid == playerid) return SendClientMessage(playerid, red, "[ ERROR: You can't send private message to yourself! ]");
        new string[256], Name1[MAX_PLAYER_NAME], Name2[MAX_PLAYER_NAME];
        GetPlayerName(playerid, Name1, sizeof(Name1));
        GetPlayerName(targetid, Name2, sizeof(Name2));
        format(string, sizeof(string),"Private Message from %s(%d): %s", Name1, playerid, msg);
        SendClientMessage(targetid,COLOR_PINK, string);
        format(string, sizeof(string),"Private Message sent to %s(%d): %s", Name2, targetid, msg);
        SendClientMessage(playerid,COLOR_PINK, string);
        new File:file=fopen("/Database/Logs/PrivateMessageChatLog.log", io_append), hour, minute, second, year, month, day;
        LastPM[targetid] = playerid;
        gettime(hour, minute, second);
        getdate(year, month, day);
        format(string, sizeof(string), "[%d/%d/%d | %d:%d:%d] [ %s to %s: %s ]\r\n", day, month, year, hour, minute, second, Name1, Name2, msg);
        fwrite(file, string);
        fclose(file);
        return 1;
    }

    CMD:reply(playerid,params[])
    {
        new targetid = LastPM[playerid], msg[256];
        if(sscanf(params, "s[256]", msg)) return SendClientMessage(playerid, LIGHTBLUE,"[ USAGE: /reply (Message) ]");
        if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, red, "[ ERROR: Player is not online! ]");
        if(pm[targetid] == false) return SendClientMessage(playerid, red,"[ ERROR: Player has blocked private messages! ]");
        if(Ignored[targetid][playerid]) return SendClientMessage(playerid, red, "[ ERROR: Player has blocked in-comming private messages from you! ]");
        if(targetid == playerid) return SendClientMessage(playerid, red, "[ ERROR: You can't send private message to yourself! ]");
        new string[256], Name1[MAX_PLAYER_NAME], Name2[MAX_PLAYER_NAME];
        GetPlayerName(playerid, Name1, sizeof(Name1));
        GetPlayerName(targetid, Name2, sizeof(Name2));
        format(string, sizeof(string),"Private Message from %s(%d): %s", Name1, playerid, msg);
        SendClientMessage(targetid,COLOR_PINK, string);
        format(string, sizeof(string),"Private Message sent to %s(%d): %s", Name2, targetid, msg);
        SendClientMessage(playerid,COLOR_PINK, string);
        new File:file=fopen("/Database/Logs/PrivateMessageChatLog.log", io_append), hour, minute, second, year, month, day;
        LastPM[targetid] = playerid;
        gettime(hour, minute, second);
        getdate(year, month, day);
        format(string, sizeof(string), "[%d/%d/%d | %d:%d:%d] [ %s to %s: %s ]\r\n", day, month, year, hour, minute, second, Name1, Name2, msg);
        fwrite(file, string);
        fclose(file);
        return 1;
    }

    CMD:blockprivatemessage(playerid, params[])
    {
        if(pm[playerid] == false)
        {
            pm[playerid] = true;
            SendClientMessage(playerid, -1,"{A90202}[ You have turned on receiving private messages, you will receive private messages now! ]");
        }
        else
        {
            pm[playerid] = false;
            SendClientMessage(playerid, -1,"{A90202}[ You have turned off receiving private messages, you will no longer receive private messages! ]");
        }
        return 1;
    }

    CMD:ignore(playerid, params[])
    {
       new targetid, str[128], pName[MAX_PLAYER_NAME];
       if(sscanf(params, "u", targetid)) return SendClientMessage(playerid, LIGHTBLUE, "[ USAGE: /blockpm (name/id)");
       if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, red, "[ ERROR: Player is not online! ]");
       if(targetid == INVALID_PLAYER_ID) return SendClientMessage(playerid, red, "[ ERROR: Invalid Player ID. ]");
       GetPlayerName(targetid, pName, sizeof(pName));
       if(Ignored[playerid][targetid])
       {
           blockPM[playerid][targetid] = false;
           format(str, sizeof(str), "Up Comming Private Message from %s Unblocked!", pName);
           SendClientMessage(playerid, -1, str);
       }
       else if(!Ignored[playerid][targetid])
       {
           blockPM[playerid][targetid] = true;
           format(str, sizeof(str), "Up Comming Private Message from %s blocked!", pName);
           SendClientMessage(playerid, -1, str);
       }
       return 1;
    }
Reply
#5

Fixed!
Reply
#6

pawn Код:
new lastSender[MAX_PLAYERS] = -1, bool:IsIgnored[MAX_PLAYERS][MAX_PLAYERS];

// lastSender is the variable that we'll use to get the last player's ID that has messaged someone.
// IsIgnored[the player who is ignored][the player that has ignored the other player].


CMD:privatemessage(playerid,params[])
{
    new targetid, msg[256];
    if(sscanf(params, "us[256]", targetid, msg)) return SendClientMessage(playerid, LIGHTBLUE,"[ USAGE: /privatemessage (name/id) (Message) ]");
    if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, red, "[ ERROR: Player is not online! ]");
    if(!pm[targetid]) return SendClientMessage(playerid, red,"[ ERROR: Player has blocked private messages! ]");
    if(IsIgnored[playerid][targetid]) return SendClientMessage(playerid, red, "[ ERROR: This player ignores you! ]");
    if(targetid == playerid) return SendClientMessage(playerid, red, "[ ERROR: You can't send private message to yourself! ]");
    new string[256], Name1[MAX_PLAYER_NAME], Name2[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name1, sizeof(Name1));
    GetPlayerName(targetid, Name2, sizeof(Name2));
    format(string, sizeof(string),"Private Message from %s(%d): %s", Name1, playerid, msg);
    SendClientMessage(targetid,COLOR_PINK, string);
    format(string, sizeof(string),"Private Message sent to %s(%d): %s", Name2, targetid, msg);
    SendClientMessage(playerid,COLOR_PINK, string);
    lastSender[targetid] =playerid;
    new File:file=fopen("/Database/Logs/PrivateMessageChatLog.log", io_append), hour, minute, second, year, month, day;
    gettime(hour, minute, second);
    getdate(year, month, day);
    format(string, sizeof(string), "[%d/%d/%d | %d:%d:%d] [ %s to %s: %s ]\r\n", day, month, year, hour, minute, second, Name1, Name2, msg);
    fwrite(file, string);
    fclose(file);
    return 1;
}
CMD:reply(playerid, params[])
{
    new targetid = lastSender[playerid], msg[256];
    if(sscanf(params, "us[256]", targetid, msg)) return SendClientMessage(playerid, LIGHTBLUE,"[ USAGE: /privatemessage (name/id) (Message) ]");
    if(!IsPlayerConnected(targetid) && targetid != -1) return SendClientMessage(playerid, red, "[ ERROR: Player is not online! ]");
    if(!pm[targetid]) return SendClientMessage(playerid, red,"[ ERROR: Player has blocked private messages! ]");
    if(IsIgnored[playerid][targetid]) return SendClientMessage(playerid, red, "[ ERROR: This player ignores you! ]");
    if(targetid == playerid) return SendClientMessage(playerid, red, "[ ERROR: You can't reply yourself! ]");
    if(targetid == -1) return SendClientMessage(playerid, red, "[ ERROR: No one has sent you a message recently, you cannot reply. ]");
    new string[256], Name1[MAX_PLAYER_NAME], Name2[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name1, sizeof(Name1));
    GetPlayerName(targetid, Name2, sizeof(Name2));
    format(string, sizeof(string),"Private Message from %s(%d): %s", Name1, playerid, msg);
    SendClientMessage(targetid,COLOR_PINK, string);
    format(string, sizeof(string),"Private Message sent to %s(%d): %s", Name2, targetid, msg);
    SendClientMessage(playerid,COLOR_PINK, string);
    lastSender[targetid] =playerid;
    new File:file=fopen("/Database/Logs/PrivateMessageChatLog.log", io_append), hour, minute, second, year, month, day;
    gettime(hour, minute, second);
    getdate(year, month, day);
    format(string, sizeof(string), "[%d/%d/%d | %d:%d:%d] [ %s to %s: %s ]\r\n", day, month, year, hour, minute, second, Name1, Name2, msg);
    fwrite(file, string);
    fclose(file);
    return 1;
}
CMD:blockprivatemessage(playerid, params[])
{
    if(!pm[playerid])
    {
        pm[playerid] = true;
        SendClientMessage(playerid, -1,"{A90202}[ You have turned on receiving private messages, you will receive private messages now! ]");
    }
    else if(pm[playerid])
    {
        pm[playerid] = false;
        SendClientMessage(playerid, -1,"{A90202}[ You have turned off receiving private messages, you will no longer receive private messages! ]");
    }
    return 1;
}

CMD:ignore(playerid, params[])
{
    new targetid, playerName[MAX_PLAYER_NAME];
    if(sscanf(params, "u", targetid)) return SendClientMessage(playerid, LIGHTBLUE,"[ USAGE: /ignore (name/id) ]");
    if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, red, "[ ERROR: Player is not online! ]");
    if(targetid == playerid) return SendClientMessage(playerid, red, "[ ERROR: You cannot apply this to yourself! ]");

    new string[128];
    GetPlayerName(targetid, playerName, sizeof(playerName));
    if(IsIgnored[targetid][playerid])
    {
        format(string, sizeof(string), "Messages coming from %s have been unblocked.", playerName);
        SendClientMessage(playerid, red, string);
        IsIgnored[targetid][playerid] =false;
    }
    else if(!IsIgnored[targetid][playerid])
    {
        format(string, sizeof(string), "Messages coming from %s have been blocked.", playerName);
        SendClientMessage(playerid, red, string);
        IsIgnored[targetid][playerid] =true;
    }
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)