Advertisement
Guest User

nMessage.pwn

a guest
Feb 13th, 2015
256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.44 KB | None | 0 0
  1. #include <a_samp>
  2. #include <zcmd>
  3. #include <sscanf2>
  4.  
  5. #define C_USAGE "{FFEA00}"
  6. #define C_ERROR "{FF0000}"
  7. #define C_PM "{AEFF00}"
  8. #define C_ADMIN "{C0C0C0}"
  9.  
  10. stock SendAdminPM(text[])
  11. {
  12.     for(new i = 0; i < MAX_PLAYERS; i++)
  13.     {
  14.         if(IsPlayerConnected(i))
  15.         {
  16.             if(IsPlayerAdmin(i))
  17.             {
  18.                 SendClientMessage(i, -1, text);
  19.             }
  20.         }
  21.     }
  22.     return 1;
  23. }
  24.  
  25. new ReadPMs;
  26. new Blocks[MAX_PLAYERS][MAX_PLAYERS];
  27. new LastPM[MAX_PLAYERS];
  28. new FirstPM[MAX_PLAYERS];
  29.  
  30. public OnFilterScriptInit()
  31. {
  32.     print("\n-------------------------------------------");
  33.     print("nMessage by Nick\nAdvanced messaging system!");
  34.     print("-------------------------------------------\n");
  35.    
  36.     return 1;
  37. }
  38.  
  39. public OnPlayerConnect(playerid)
  40. {
  41.     FirstPM[playerid] = 1;
  42.     LastPM[playerid] = 0;
  43.     return 1;
  44. }
  45.  
  46. public OnPlayerDisconnect(playerid, reason)
  47. {
  48.     FirstPM[playerid] = 0;
  49.     LastPM[playerid] = 0;
  50.    
  51.     for(new i; i < MAX_PLAYERS; i++)
  52.     {
  53.         if(IsPlayerConnected(i))
  54.         {
  55.             if(LastPM[i] == playerid)
  56.             {
  57.                 LastPM[i] = -1;
  58.             }
  59.         }
  60.     }
  61.     return 1;
  62. }
  63.  
  64. public OnPlayerText(playerid, text[])
  65. {
  66.     if(text[0] == '@' && LastPM[playerid] > -1)
  67.     {
  68.         new pmer[200];
  69.         format(pmer, 200, "%d %s", LastPM[playerid], text[1]);
  70.  
  71.         cmd_pm(playerid, pmer);
  72.        
  73.         return 0;
  74.     }
  75.     return 1;
  76. }
  77.  
  78. CMD:pm(playerid, params[])
  79. {
  80.     new pid, message[128], string[144], pname[24], pname2[24];
  81.    
  82.     if(sscanf(params, "us[128]", pid, message)) return SendClientMessage(playerid, -1, C_USAGE"Usage: /pm [playerid/name] [message]");
  83.  
  84.     if(!IsPlayerConnected(pid)) return SendClientMessage(playerid, -1, C_ERROR"Error: That player isn't connected!");
  85.    
  86.     if(Blocks[playerid][pid] == 1) return SendClientMessage(playerid, -1, C_ERROR"Error: You've blocked this player. Use /unblock to unblock them.");
  87.    
  88.     if(Blocks[pid][playerid] == 1) return SendClientMessage(playerid, -1, C_ERROR"Error: You are blocked from sending messages to this player.");
  89.    
  90.     GetPlayerName(playerid, pname, 24);
  91.     GetPlayerName(pid, pname2, 24);
  92.  
  93.     format(string, sizeof(string), C_PM"PM to %s: {FFFFFF}%s", pname2, message);
  94.     SendClientMessage(playerid, -1, string);
  95.    
  96.     format(string, sizeof(string), C_PM"PM from %s: {FFFFFF}%s", pname, message);
  97.     SendClientMessage(pid, -1, string);
  98.    
  99.     if(ReadPMs == 1)
  100.     {
  101.         format(string, sizeof(string), C_ADMIN"[Read PMs] PM from %s to %s: %s", pname, pname2, message);
  102.         SendAdminPM(string);
  103.     }
  104.    
  105.     LastPM[pid] = playerid;
  106.    
  107.     switch(FirstPM[pid])
  108.     {
  109.         case 1: SendClientMessage(playerid, -1, "TIP: Use '@' followed by your message to reply to your last PM!");
  110.     }
  111.    
  112.     FirstPM[pid] = 0;
  113.    
  114.     return 1;
  115. }
  116.  
  117. CMD:readpms(playerid, params[])
  118. {
  119.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, C_ERROR"Error: You don't have permission to use this command.");
  120.    
  121.     ReadPMs = ( ReadPMs == 1 ) ? 0 : 1;
  122.    
  123.     switch(ReadPMs)
  124.     {
  125.         case 0: SendClientMessage(playerid, -1, "Read PMs disabled.");
  126.         case 1: SendClientMessage(playerid, -1, "Read PMs enabled.");
  127.     }
  128.     return 1;
  129. }
  130.  
  131. CMD:block(playerid, params[])
  132. {
  133.     new pid, pname2[24], string[144];
  134.    
  135.     if(sscanf(params, "u", pid)) return SendClientMessage(playerid, -1, C_USAGE"Usage: /block [playerid/name]");
  136.    
  137.     if(!IsPlayerConnected(pid)) return SendClientMessage(playerid, -1, C_ERROR"Error: That player isn't connected!");
  138.    
  139.     if(Blocks[playerid][pid] == 1) return SendClientMessage(playerid, -1, C_ERROR"Error: You've already blocked this player. Use /unblock to unblock them.");
  140.    
  141.     if(IsPlayerAdmin(pid)) return SendClientMessage(playerid, -1, C_ERROR"Error: You cannot block an administrator!");
  142.    
  143.     Blocks[playerid][pid] = 1;
  144.    
  145.     GetPlayerName(pid, pname2, 24);
  146.    
  147.     format(string, sizeof(string), "You have blocked %s.", pname2);
  148.     SendClientMessage(playerid, -1, string);
  149.    
  150.     return 1;
  151. }
  152.  
  153. CMD:unblock(playerid, params[])
  154. {
  155.     new pid, pname2[24], string[144];
  156.  
  157.     if(sscanf(params, "u", pid)) return SendClientMessage(playerid, -1, C_USAGE"Usage: /unblock [playerid/name]");
  158.  
  159.     if(!IsPlayerConnected(pid)) return SendClientMessage(playerid, -1, C_ERROR"Error: That player isn't connected!");
  160.  
  161.     if(Blocks[playerid][pid] == 0) return SendClientMessage(playerid, -1, C_ERROR"Error: You haven't blocked this player.");
  162.  
  163.     Blocks[playerid][pid] = 0;
  164.  
  165.     GetPlayerName(pid, pname2, 24);
  166.  
  167.     format(string, sizeof(string), "You have unblocked %s.", pname2);
  168.     SendClientMessage(playerid, -1, string);
  169.  
  170.     return 1;
  171. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement