Advertisement
EvanAbagail

Evan's Private Messaging System

Nov 16th, 2014
383
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 6.03 KB | None | 0 0
  1. #include <a_samp>
  2. #include zcmd
  3. #include sscanf2
  4. #include foreach
  5.  
  6. #define COLOR_YELLOW 0xFFFF00AA
  7. #define COLOR_ORANGE 0xFF9900AA
  8. #define DIALOG_PM 3378
  9.  
  10. #define SOURCE_NONE 0
  11. #define SOURCE_PM_COMMAND 1
  12. #define SOURCE_SCORE_BOARD 2
  13. new PMTogged[MAX_PLAYERS];
  14. new BlockedBy[MAX_PLAYERS] = 999;
  15.  
  16. forward SendRCONAlert(color, string[]);
  17. public SendRCONAlert(color, string[])
  18. {
  19.         foreach(Player, i)
  20.         {
  21.                         if(IsPlayerAdmin(i))
  22.                         {
  23.                                 SendClientMessage(i, color, string);
  24.                         }
  25.         }
  26. }
  27.  
  28. CMD:nopm(playerid, params[])
  29. {
  30.         if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Only administrators can toggle recieveing private messages.");
  31.         if(!PMTogged[playerid])
  32.         {
  33.                 PMTogged[playerid] = 1;
  34.                 SendClientMessage(playerid, -1, "You will no longer accept private messages.");
  35.         }
  36.         else
  37.         {
  38.                 PMTogged[playerid] = 0;
  39.                 SendClientMessage(playerid, -1, "You will now accept private messages..");
  40.         }
  41.         return 1;
  42. }
  43.  
  44. CMD:nopmid(playerid, params[])
  45. {
  46.         if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Only administrators can toggle recieveing private messages.");
  47.         new giveplayerid;
  48.         if(sscanf(params, "u", giveplayerid)) return SendClientMessage(playerid, -1, "USAGE: [/nopmid] [id]");
  49.         if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid, -1, "The playerID/Part-Of-Name Entered is not connected.");
  50.         if(BlockedBy[giveplayerid] != playerid) return Block(giveplayerid, playerid);
  51.         if(BlockedBy[giveplayerid] == playerid) return Unblock(giveplayerid, playerid);
  52.         return 1;
  53. }
  54.  
  55. CMD:pm(playerid, params[])
  56. {
  57.                 new giveplayerid, string[128], message[128];
  58.                 if(sscanf(params, "us[81]", giveplayerid, message)) return SendClientMessage(playerid, -1, "USAGE: /pm [playerid] [message]");
  59.                 if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid, -1, "You have specified an invalid playerid/part-of-name. Please try again");
  60.                 if(PMTogged[giveplayerid] == 1) return SendClientMessage(playerid, -1, "That player currently has disabled private messaging.");
  61.                 if(BlockedBy[playerid] == giveplayerid) return SendClientMessage(playerid, -1, "That player has disabled recieving private messages from you.");
  62.                 format(string, sizeof(string), "PM From %s(%d): %s", GetPlayersName(playerid), playerid, message);
  63.                 SendClientMessage(giveplayerid, COLOR_ORANGE, string);
  64.                 format(string, sizeof(string), "PM To %s(%d): %s", GetPlayersName(giveplayerid), giveplayerid, message);
  65.                 SendClientMessage(playerid, COLOR_ORANGE, string);
  66.                 format(string, sizeof(string), "AdmWarn: %s(%d) has PMed %s(%d) with message: %s.", GetPlayersName(playerid), playerid, GetPlayersName(giveplayerid), giveplayerid, message);
  67.                 SendRCONAlert(COLOR_YELLOW, string);
  68.                 CallLocalFunction("OnPlayerPM", "uus", playerid, giveplayerid, message, SOURCE_PM_COMMAND);
  69.                 // LogPM(string);
  70.                 return 1;
  71. }
  72.  
  73. stock Block(giveplayerid, playerid)
  74. {
  75. BlockedBy[giveplayerid] = playerid;
  76. SendClientMessage(playerid, -1, "You have blocked that player from Private Messaging you!");
  77. return 1;
  78. }
  79. stock Unblock(giveplayerid, playerid)
  80. {
  81. BlockedBy[giveplayerid] = 999;
  82. SendClientMessage(playerid, -1, "You have unblocked that player from Private Messaging you!");
  83. return 1;
  84. }
  85. stock GetPlayersName(playerid)
  86. {
  87.         new name[MAX_PLAYER_NAME];
  88.         GetPlayerName(playerid, name, sizeof(name));
  89.         return name;
  90. }
  91.  
  92. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  93. {
  94.   if(PMTogged[clickedplayerid] == 1) return SendClientMessage(playerid, -1, "That player isn't accepting any private messages.");
  95.   if(BlockedBy[playerid] == clickedplayerid) return SendClientMessage(playerid, -1, "That player has blocked you from private messaging them.");
  96.   SetPVarInt(playerid, "PMBox", clickedplayerid);
  97.   ShowPlayerDialog(playerid,DIALOG_PM, DIALOG_STYLE_INPUT, "Private Messaging", "Please enter the text to send to the player.", "Send", "Cancel");
  98.   return 1;
  99. }
  100.  
  101. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  102. {
  103.     if(dialogid == DIALOG_PM)
  104.     {
  105.         if(response)
  106.         {
  107.             if(isnull(inputtext)) return ShowPlayerDialog(playerid,DIALOG_PM,DIALOG_STYLE_INPUT,"Private Messaging", "Please enter the text to send to the player.", "Send", "Cancel");
  108.             new message[128];
  109.             format(message, sizeof(message), "%s", inputtext);
  110.             new string[128];
  111.             new giveplayerid = GetPVarInt(playerid, "PMBox");
  112.             format(string, sizeof(string), "PM From %s(%d): %s", GetPlayersName(playerid), playerid, message);
  113.             SendClientMessage(giveplayerid, COLOR_ORANGE, string);
  114.             format(string, sizeof(string), "PM To %s(%d): %s", GetPlayersName(giveplayerid), giveplayerid, message);
  115.             SendClientMessage(playerid, COLOR_ORANGE, string);
  116.             format(string, sizeof(string), "AdmWarn: %s(%d) has PMed %s(%d) with message: %s.", GetPlayersName(playerid), playerid, GetPlayersName(giveplayerid), giveplayerid, message);
  117.             SendRCONAlert(COLOR_YELLOW, string);
  118.             CallLocalFunction("OnPlayerPM", "uus", playerid, giveplayerid, message, SOURCE_SCORE_BOARD);
  119.             SetPVarInt(playerid, "PMBox", INVALID_PLAYER_ID);
  120.         }
  121.         else
  122.         {
  123.             SendClientMessage(playerid, -1, "You have stopped yourself from sending the message.");
  124.         }
  125.         return 1;
  126.     }
  127.  
  128.     return 0;
  129. }
  130.  
  131. public OnPlayerConnect(playerid)
  132. {
  133.     SetPVarInt(playerid, "PMBox", INVALID_PLAYER_ID);
  134. return 1;
  135. }
  136.  
  137. public OnPlayerDisconnect(playerid)
  138. {
  139.     DeletePVar(playerid, "PMBox");
  140. return 1;
  141. }
  142.  
  143. forward OnPlayerPM(playerid, giveplayerid, message, source=SOURCE_NONE);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement