Kwarde

[PAWN] PM System

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