Guest User

STDutchBas

a guest
Oct 8th, 2009
553
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.64 KB | None | 0 0
  1. //==============================================================================
  2. //..................DutchBas' AFK and BRB system................................
  3. //==============================================================================
  4.  
  5. #include <a_samp>
  6.  
  7. #include <dutils>
  8. #include <dini>
  9. #include <dudb>
  10. #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
  11.  
  12. #pragma unused strtok
  13. #pragma unused ret_memcpy
  14.  
  15. new isafk[MAX_PLAYERS];
  16. new afktime[MAX_PLAYERS];
  17. new brbtime[MAX_PLAYERS];
  18. new aname[MAX_PLAYER_NAME];
  19.  
  20. #define COLOR_SYSTEM 0xF5FF9FAA
  21.  
  22. stock SystemMessage(playerid,msg[])
  23. {
  24. if ((IsPlayerConnected(playerid))&&(strlen(msg)>0)) {
  25. SendClientMessage(playerid,COLOR_SYSTEM,msg);
  26. }
  27. return 1;
  28. }
  29.  
  30. forward playerafk(playerid);
  31. forward playerbrb(playerid);
  32.  
  33. //===========================================================================
  34.  
  35. public OnFilterScriptInit()
  36. {
  37. print("\n----------------------------------");
  38. print(" AFK and BRB - by DutchBas. (2009)");
  39. print("----------------------------------\n");
  40.  
  41. return 1;
  42. }
  43. //===========================================================================
  44.  
  45. public OnFilterScriptExit()
  46. {
  47. for(new i = 0; i < GetMaxPlayers(); i++)
  48. {
  49. if(IsPlayerConnected(i))
  50. {
  51. TogglePlayerControllable(i, 1);
  52. afktime[i] = 0;
  53. isafk[i] = 0;
  54. }
  55. }
  56.  
  57. print("\n AFK / BRB System unloaded.");
  58. print(" All players AFK/BRB status have been reset.\n");
  59.  
  60.  
  61. return 1;
  62. }
  63.  
  64. //==========================================================================
  65.  
  66. public OnPlayerCommandText(playerid,cmdtext[]) {
  67. dcmd(afk, 3, cmdtext);
  68. dcmd(back, 4, cmdtext);
  69. dcmd(brb, 3, cmdtext);
  70. dcmd(afklist, 7, cmdtext);
  71. dcmd(resetafk, 8, cmdtext);
  72. return false;
  73. }
  74.  
  75. dcmd_afk(playerid,params[])
  76. {
  77. #pragma unused params
  78. if(afktime[playerid] == 1)
  79. {
  80. SystemMessage(playerid, "You have recently been AFK, and cannot use /AFK for 2 minutes.");
  81. }
  82. if(afktime[playerid] == 0)
  83. {
  84. if(isafk[playerid] == 1)
  85. {
  86. SystemMessage(playerid, "You're already AFK.");
  87. }
  88. if(isafk[playerid] == 0)
  89. {
  90. new name[256];
  91. new afk[256];
  92. GetPlayerName(playerid,name, sizeof(name));
  93. format(afk, sizeof(afk), "~r~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~r~ %s ~w~ is now AFK.", name);
  94. GameTextForAll(afk,4000,3);
  95. TogglePlayerControllable(playerid,0);
  96. SetPlayerVirtualWorld(playerid, 5);
  97. isafk[playerid] = 1;
  98. afktime[playerid] = 1;
  99. SetTimerEx("playerafk", 1000*60*2, false, "b", playerid);
  100. GetPlayerName(playerid, aname, sizeof(aname));
  101. strins(aname,"[AFK]",0, MAX_PLAYER_NAME );
  102. SetPlayerName(playerid,aname);
  103. }
  104. }
  105. return true;
  106. }
  107.  
  108. dcmd_back(playerid,params[])
  109. {
  110. #pragma unused params
  111. if(isafk[playerid] == 0)
  112. {
  113. SystemMessage(playerid, "You are not AFK or BRB.");
  114. }
  115. if(isafk[playerid] == 1)
  116. {
  117. new name[256];
  118. new back[256];
  119. GetPlayerName(playerid, aname, sizeof(aname));
  120. strdel(aname,0,5);
  121. SetPlayerName(playerid,aname);
  122. GetPlayerName(playerid,name, sizeof(name));
  123. format(back, sizeof(back), "~r~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~r~ %s ~w~ is now back.", name);
  124. GameTextForAll(back,4000,3);
  125. TogglePlayerControllable(playerid,1);
  126. SetPlayerVirtualWorld(playerid, 0);
  127. isafk[playerid] = 0;
  128. }
  129. return true;
  130. }
  131.  
  132. dcmd_brb(playerid,params[])
  133. {
  134. #pragma unused params
  135. if(brbtime[playerid] == 1)
  136. {
  137. SystemMessage(playerid, "You have recently been BRB, and cannot use /BRB for 15 seconds.");
  138. }
  139. if(brbtime[playerid] == 0)
  140. {
  141. if(isafk[playerid] == 1)
  142. {
  143. SystemMessage(playerid, "You're already BRB.");
  144. }
  145. if(isafk[playerid] == 0)
  146. {
  147. new name[256];
  148. new brb[256];
  149. GetPlayerName(playerid,name, sizeof(name));
  150. format(brb, sizeof(brb), "~r~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~r~ %s ~w~ will BRB.", name);
  151. GameTextForAll(brb,4000,3);
  152. TogglePlayerControllable(playerid,0);
  153. isafk[playerid] = 1;
  154. brbtime[playerid] = 1;
  155. SetTimerEx("playerbrb", 15000, false, "d", playerid);
  156. GetPlayerName(playerid, aname, sizeof(aname));
  157. strins(aname,"[BRB]",0, MAX_PLAYER_NAME );
  158. SetPlayerName(playerid,aname);
  159. }
  160. }
  161. return true;
  162. }
  163.  
  164. dcmd_afklist(playerid,params[])
  165. {
  166. #pragma unused params
  167. SystemMessage(playerid, "AFK Players:");
  168. for(new i = 0; i < GetMaxPlayers(); i++)
  169. {
  170. if(IsPlayerConnected(i))
  171. {
  172. if(isafk[i] == 1)
  173. {
  174. new name[256];
  175. new afklist[256];
  176. GetPlayerName(i,name, sizeof(name));
  177. format(afklist, sizeof(afklist), "%s", name);
  178. SystemMessage(playerid, afklist);
  179. }
  180. }
  181. }
  182. return true;
  183. }
  184.  
  185. dcmd_resetafk(playerid,params[])
  186. {
  187. #pragma unused params
  188. if(IsPlayerAdmin(playerid))
  189. {
  190. for(new i = 0; i < GetMaxPlayers(); i++)
  191. {
  192. TogglePlayerControllable(i, 1);
  193. afktime[i] = 0;
  194. isafk[i] = 0;
  195. }
  196. }
  197.  
  198. return true;
  199. }
  200.  
  201. //============================================================================
  202.  
  203. public OnPlayerText(playerid, text[])
  204. {
  205. if(isafk[playerid] == 1)
  206. {
  207. SystemMessage(playerid, "You can not use chat when you're AFK or BRB.");
  208. return 0;
  209. }
  210. return 1;
  211. }
  212.  
  213. //=============================================================================
  214.  
  215. public OnPlayerDisconnect(playerid) {
  216. afktime[playerid] = 0;
  217. isafk[playerid] = 0;
  218. return false;
  219. }
  220.  
  221. //=============================================================================
  222.  
  223. public playerafk(playerid)
  224. {
  225. afktime[playerid] = 0;
  226. }
  227.  
  228. public playerbrb(playerid)
  229. {
  230. brbtime[playerid] = 0;
  231. }
Advertisement
Add Comment
Please, Sign In to add comment