Guest User

Untitled

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