Advertisement
Kwarde

[PAWN] PM System

Jul 6th, 2010
569
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 8.78 KB | None | 0 0
  1. /*
  2.     Personal Message system v1.1 by Kwarde
  3.  
  4.     There is:
  5.     /pm
  6.     /togpm (Receive PM's : On or Off (PERSONLA))
  7.     /apm (admin cmd, with this you can turn the whole pm off)
  8.     /samp (admin cmd, Send Admin Message (to all or to one person))
  9.     /togpriv (admin cmd, Toggle Private Messages)
  10.     /pmhelp (credits and info)
  11.     An PM log
  12.    
  13.     CREDITS:
  14.     Kwarde - The full maker
  15.    
  16.     Just enjoy,
  17.     And don't remove this credits
  18. */
  19.  
  20. #include <a_samp>
  21.  
  22. #define COLOR_GREEN 0x00FF00AA
  23. #define COLOR_RED 0xFF0000AA
  24. #define COLOR_WHITE 0xFFFFFFAA
  25.  
  26. new sendername[MAX_PLAYER_NAME];
  27. new receivername[MAX_PLAYER_NAME];
  28. new pname[MAX_PLAYER_NAME];
  29. new message[265];
  30.  
  31. // CONFIG //
  32. new PmActivated = 1; //Pm in begin activated: 0 = deactivated, 1 = activated
  33. new PmForPlayerActivated[MAX_PLAYERS] = 1; //Pm For Player In begin activated: 0 = deactivated, 1 = activated
  34. new private = 1; //If an admin turn PM on/off, or if an admin send an PM to all, show name? 1 = show only 'an admin', 0 = 'admin ADMIN_NAME'
  35. //********//
  36.  
  37. public OnPlayerConnect(playerid) SendClientMessage(playerid, COLOR_GREEN, "** PM System By Kwarde: Use /pmhelp");
  38.  
  39. public OnPlayerCommandText(playerid, cmdtext[])
  40. {
  41.     new tmp[265], string[265];
  42.     new cmd[128], idx;
  43.     new giveplayerid;
  44.     GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
  45.    
  46.     cmd = strtok(cmdtext, idx);
  47.    
  48.     if(!strcmp(cmd, "/pm", true))
  49.     {
  50.         GetPlayerName(playerid, sendername, sizeof sendername);
  51.         GetPlayerName(giveplayerid, receivername, sizeof receivername);
  52.         tmp = strtok(cmdtext, idx);
  53.         if(!strlen(tmp))
  54.         {
  55.             SendClientMessage(playerid, COLOR_WHITE, "USAGE: /pm [playerid] [message]");
  56.             return 1;
  57.         }
  58.         giveplayerid = strval(tmp);
  59.         message = strrest(cmdtext, idx);
  60.         if(!strlen(message))
  61.         {
  62.             SendClientMessage(playerid, COLOR_WHITE, "USAGE: /pm [playerid] [message]");
  63.             return 1;
  64.         }
  65.         if(giveplayerid != playerid)
  66.         {
  67.             if(PmActivated == 1)
  68.             {
  69.                 if(IsPlayerConnected(giveplayerid))
  70.                 {
  71.                     if(PmForPlayerActivated[giveplayerid] == 1)
  72.                     {
  73.                         format(string, sizeof string, ">> %s(%d): %s", receivername, giveplayerid, message);
  74.                         SendClientMessage(playerid, COLOR_GREEN, string);
  75.                         format(string, sizeof string, "** %s(%d): %s", sendername, playerid, message);
  76.                         SendClientMessage(giveplayerid, COLOR_GREEN, string);
  77.                         format(string, sizeof string, "[PM] %s to %s: %s", sendername, receivername, message);
  78.                         new File:PmLog = fopen("pm.log", io_append);
  79.                         fwrite(PmLog, string);
  80.                         fclose(PmLog);
  81.                     }
  82.                     else
  83.                     {
  84.                         format(string, sizeof string, "-PmServ- %s has turned PM off!", receivername);
  85.                         SendClientMessage(playerid, COLOR_RED, string);
  86.                     }
  87.                 }
  88.                 else
  89.                 {
  90.                     SendClientMessage(playerid, COLOR_RED, "-PmServ- That player isn't connected!");
  91.                 }
  92.             }
  93.             else
  94.             {
  95.                 SendClientMessage(playerid, COLOR_RED, "-PmServ- An admin has turned PM off!");
  96.             }
  97.         }
  98.         else
  99.         {
  100.             SendClientMessage(playerid, COLOR_RED, "-PmServ- You can't send an personal message to yourself!");
  101.         }
  102.         return 1;
  103.     }
  104.     if(!strcmp(cmd, "/togpm", true))
  105.     {
  106.         if(PmActivated == 1)
  107.         {
  108.             if(PmForPlayerActivated[playerid] == 1)
  109.             {
  110.                 PmForPlayerActivated[playerid] = 0;
  111.                 SendClientMessage(playerid, COLOR_GREEN, "-PmServ- You have turned PM off! You can't receive any personal message now");
  112.             }
  113.             else if(PmForPlayerActivated[playerid] == 0)
  114.             {
  115.                 PmForPlayerActivated[playerid] = 1;
  116.                 SendClientMessage(playerid, COLOR_GREEN, "-PmServ- You have turned PM on! You can now receive any personal message");
  117.                 return 1;
  118.             }
  119.             else
  120.             {
  121.                 SendClientMessage(playerid, COLOR_RED, "-OperServ- -PmServ- An error occured! Variable PmForPlayerActivated returned something else then 1 or 0");
  122.                 print("An error in PmForPlayerActivated occured");
  123.             }
  124.         }
  125.         else
  126.         {
  127.             SendClientMessage(playerid, COLOR_RED, "-PmServ- An admin has turned the PM off!");
  128.         }
  129.         return 1;
  130.     }
  131.    
  132.     if(!strcmp(cmd, "/apm", true))
  133.     {
  134.         if(IsPlayerAdmin(playerid))
  135.         {
  136.             if(PmActivated == 1)
  137.             {
  138.                 PmActivated = 0;
  139.                 if(private == 0)
  140.                 {
  141.                     format(string, sizeof string, "-PmServ- Admin %s has tured the PM system OFF!", pname);
  142.                     SendClientMessageToAll(COLOR_RED, string);
  143.                 }
  144.                 else
  145.                 {
  146.                     SendClientMessageToAll(COLOR_RED, "-PmServ- An admin has turned the PM system OFF!");
  147.                 }
  148.                 return 1;
  149.             }
  150.             else
  151.             {
  152.                 PmActivated = 1;
  153.                 if(private == 0)
  154.                 {
  155.                     format(string, sizeof string, "-PmServ- Admin %s has tured the PM system ON!", pname);
  156.                     SendClientMessageToAll(COLOR_RED, string);
  157.                 }
  158.                 else
  159.                 {
  160.                     SendClientMessageToAll(COLOR_RED, "-PmServ- An admin has turned the PM system ON!");
  161.                 }
  162.                 return 1;
  163.             }
  164.         }
  165.         else
  166.         {
  167.             SendClientMessage(playerid, COLOR_RED, "-PmServ- You are not an RCON admin!");
  168.         }
  169.         return 1;
  170.     }
  171.    
  172.     if(!strcmp(cmd, "/samp", true))
  173.     {
  174.         if(IsPlayerAdmin(playerid))
  175.         {
  176.             tmp = strtok(cmdtext, idx);
  177.             if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /samp [playerid OR 'all'] [message]");
  178.             message = strrest(cmdtext, idx);
  179.             if(!strlen(message)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /samp [playerid OR 'all'] [message]");
  180.             if(!strcmp(tmp, "all", true))
  181.             {
  182.                 if(private == 1)
  183.                 {
  184.                     format(string, sizeof string, "[PM] ADMIN: %s", message);
  185.                     SendClientMessageToAll(COLOR_GREEN, string);
  186.                 }
  187.                 else
  188.                 {
  189.                     format(string, sizeof string, "[PM] ADMIN %s(%d): %s", pname, playerid, message);
  190.                     SendClientMessageToAll(COLOR_GREEN, string);
  191.                 }
  192.                 return 1;
  193.             }
  194.             else
  195.             {
  196.                 giveplayerid = strval(tmp);
  197.                 if(private == 1)
  198.                 {
  199.                     format(string, sizeof string, "[PM] ADMIN: %s", message);
  200.                     SendClientMessage(giveplayerid, COLOR_GREEN, string);
  201.                 }
  202.                 else
  203.                 {
  204.                     format(string, sizeof string, "[PM] ADMIN %s(%d): %s", pname, playerid, message);
  205.                     SendClientMessage(giveplayerid, COLOR_GREEN, string);
  206.                 }
  207.                 return 1;
  208.             }
  209.         }
  210.         else
  211.         {
  212.             SendClientMessage(playerid, COLOR_RED, "-PmServ- You are not an RCON admin!");
  213.         }
  214.         return 1;
  215.     }
  216.    
  217.     if(!strcmp(cmd, "/togpriv", true))
  218.     {
  219.         if(IsPlayerAdmin(playerid))
  220.         {
  221.             if(private == 1)
  222.             {
  223.                 private = 0;
  224.                 SendClientMessage(playerid, COLOR_RED, "** ADMIN Messages are not private anymore!");
  225.             }
  226.             else
  227.             {
  228.                 private = 1;
  229.                 SendClientMessage(playerid, COLOR_GREEN, "** ADMIN PM's are now private (again)!");
  230.             }
  231.             return 1;
  232.         }
  233.         else
  234.         {
  235.             SendClientMessage(playerid, COLOR_RED, "-PmServ- You are not an RCON admin!");
  236.         }
  237.         return 1;
  238.     }
  239.            
  240.    
  241.     if(!strcmp(cmd, "/pmhelp", true))
  242.     {
  243.         SendClientMessage(playerid, COLOR_RED, "---------------------");
  244.         SendClientMessage(playerid, COLOR_WHITE, "* Personal Message system - By Kwarde");
  245.         SendClientMessage(playerid, COLOR_WHITE, "* Here are all the commands");
  246.         SendClientMessage(playerid, 0xFFFFFFAA, "");
  247.         SendClientMessage(playerid, COLOR_WHITE, "/pm [playerid] [message] : Will send an personal message");
  248.         SendClientMessage(playerid, COLOR_WHITE, "/togpm : Will toggle PM for you on/or off: You can't receive any message then!");
  249.         if(IsPlayerAdmin(playerid))
  250.         {
  251.             SendClientMessage(playerid, COLOR_GREEN, "/apm : ADMIN COMMAND - Will toggle the whole PM on or off");
  252.             SendClientMessage(playerid, COLOR_GREEN, "/samp : ADMIN COMMAND - Will send an ADMIN message to an person, or to everyone");
  253.             SendClientMessage(playerid, COLOR_GREEN, "/togpriv : ADMIN COMMAND - Toggle Private Admin PM's");
  254.         }
  255.         SendClientMessage(playerid, 0xFFFFFFAA, "");
  256.         SendClientMessage(playerid, COLOR_RED, "PLEASE NOTE THAT ALL MESSAGED WILL BE SAVED INTO A FILE");
  257.         SendClientMessage(playerid, COLOR_RED, "SO IF YOU GONNA DO SOMETHING THAT'S WRONG, WE WILL SEE IT!");
  258.         SendClientMessage(playerid, COLOR_RED, "----------------------");
  259.     }
  260.     return 0;
  261. }
  262.  
  263. strrest(const string[], &index)
  264. {
  265.     new length = strlen(string);
  266.     while ((index < length) && (string[index] <= ' '))
  267.     {
  268.         index++;
  269.     }
  270.     new offset = index;
  271.     new result[128];
  272.     while ((index < length) && ((index - offset) < (sizeof(result) - 1)))
  273.     {
  274.         result[index - offset] = string[index];
  275.         index++;
  276.     }
  277.     result[index - offset] = EOS;
  278.     return result;
  279. }
  280.  
  281. strtok(const str[], &index)
  282. {
  283.     new length = strlen(str);
  284.     while ((index < length) && (str[index] <= ' '))
  285.     {
  286.         index++;
  287.     }
  288.  
  289.     new offset = index;
  290.     new result[20];
  291.     while ((index < length) && (str[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  292.     {
  293.         result[index - offset] = str[index];
  294.         index++;
  295.     }
  296.     result[index - offset] = EOS;
  297.     return result;
  298. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement