Guest User

N-AFK System by Nqavroopsingh

a guest
Jan 1st, 2013
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.00 KB | None | 0 0
  1. //=========================AFK SYSTEM BY NAVROOPSINGH===========================
  2. //=========================AFK SYSTEM V1.0======================================
  3. //=========================PLEASE DO NOT REMOVE THE CREDITS=====================
  4. //==============================================================================
  5. // Includes
  6. //==============================================================================
  7.  
  8. #include <a_samp>
  9. #include <zcmd>
  10.  
  11. //==============================================================================
  12. // Defines
  13. //==============================================================================
  14.  
  15. #define green 0xFF0000 //COLOUR GREEN
  16. #define red 0xFF0000FF // COLOUR RED
  17. #define orange 0xFF9900AA // COLOUR ORANGE
  18. #define TIMEFORMAT(%0,%1,%2) (((%0)*3600+(%1)*60+(%2))*1000) //Time format, dont touch it if you are newbie.
  19. #define AFK_MINUTES 30 //Minutes, a player can stay in AFK. Default is 30.
  20. #define AFK_SECONDS 0 //Seconds along minutes and hours, a player can stay in AFK.
  21. #define AFK_HOUR 1 //Hours along minutes and seconds, a player can stay in AFK.
  22. #define Disable_AFKCHAT == true //Change it from true to false if you don't want AFK users to be restricted in Chatting.
  23. #define sname "SERVER" //Change the SERVER to your hostname but it must be typed between the quotes(").
  24.  
  25. //==============================================================================
  26. // Variables
  27. //==============================================================================
  28.  
  29.  
  30. new File:kicklog;
  31. new AFK[MAX_PLAYERS];
  32. new Text3D: tAFK[MAX_PLAYERS];
  33. new AFKcount;
  34. //==============================================================================
  35. // TextDraws
  36. //==============================================================================
  37. new Text:Textdraw0;
  38. new Text:kick;
  39. new Text:Textdraw1;
  40. new Text:Textdraw3;
  41. new Text:Textdraw4;
  42. new Text:Textdraw5;
  43.  
  44. public OnFilterScriptInit()
  45. {
  46. Textdraw0 = TextDrawCreate(251.000000, 30.000000, " ");
  47. TextDrawBackgroundColor(Textdraw0, 255);
  48. TextDrawFont(Textdraw0, 1);
  49. TextDrawLetterSize(Textdraw0, 0.500000, 1.000000);
  50. TextDrawColor(Textdraw0, -1);
  51. TextDrawSetOutline(Textdraw0, 0);
  52. TextDrawSetProportional(Textdraw0, 1);
  53. TextDrawSetShadow(Textdraw0, 1);
  54.  
  55. kick = TextDrawCreate(199.000000, 141.000000, "You are kicked from the server!");
  56. TextDrawBackgroundColor(kick, 255);
  57. TextDrawFont(kick, 1);
  58. TextDrawLetterSize(kick, 0.500000, 1.899999);
  59. TextDrawColor(kick, -16776961);
  60. TextDrawSetOutline(kick, 1);
  61. TextDrawSetProportional(kick, 1);
  62.  
  63. Textdraw1 = TextDrawCreate(228.000000, 281.000000, "EXCEEDED 90 MINUTES!");
  64. TextDrawBackgroundColor(Textdraw1, 255);
  65. TextDrawFont(Textdraw1, 2);
  66. TextDrawLetterSize(Textdraw1, 0.500000, 2.799999);
  67. TextDrawColor(Textdraw1, 65535);
  68. TextDrawSetOutline(Textdraw1, 0);
  69. TextDrawSetProportional(Textdraw1, 1);
  70. TextDrawSetShadow(Textdraw1, 3);
  71.  
  72.  
  73. Textdraw3 = TextDrawCreate(208.000000, 170.000000, "YOU ARE NOW IN AFK MODE");
  74. TextDrawBackgroundColor(Textdraw3, -16776961);
  75. TextDrawFont(Textdraw3, 2);
  76. TextDrawLetterSize(Textdraw3, 0.430000, 2.499999);
  77. TextDrawColor(Textdraw3, 255);
  78. TextDrawSetOutline(Textdraw3, 1);
  79. TextDrawSetProportional(Textdraw3, 1);
  80.  
  81. Textdraw4 = TextDrawCreate(344.000000, 147.000000, "AFK");
  82. TextDrawBackgroundColor(Textdraw4, -65281);
  83. TextDrawFont(Textdraw4, 3);
  84. TextDrawLetterSize(Textdraw4, 0.500000, 1.799999);
  85. TextDrawColor(Textdraw4, -16776961);
  86. TextDrawSetOutline(Textdraw4, 1);
  87. TextDrawSetProportional(Textdraw4, 1);
  88.  
  89. Textdraw5 = TextDrawCreate(189.000000, 311.000000, "BE BACK WITHIN 90 MINUTES!");
  90. TextDrawBackgroundColor(Textdraw5, 16777215);
  91. TextDrawFont(Textdraw5, 2);
  92. TextDrawLetterSize(Textdraw5, 0.500000, 3.000000);
  93. TextDrawColor(Textdraw5, 65535);
  94. TextDrawSetOutline(Textdraw5, 1);
  95. TextDrawSetProportional(Textdraw5, 1);
  96.  
  97. AFKcount = 0;
  98.  
  99. print("\n--------------------------------------");
  100. print(" N-AFK System v1.0 By Navroop Loaded!");
  101. print("--------------------------------------\n");
  102. return 1;
  103. }
  104.  
  105. //==============================================================================
  106. // Script
  107. //==============================================================================
  108. new Float:xpos,Float:ypos,Float:zpos;
  109. new ainterior;
  110. new Float:hp[MAX_PLAYERS];
  111. new Float:armour[MAX_PLAYERS];
  112.  
  113.  
  114. CMD:afk(playerid,params[])
  115. {
  116. if(AFK[playerid] == 1)
  117. {
  118. return SendClientMessage(playerid, red, "You are already in AFK. Use /back");
  119. }
  120. new Lname[MAX_PLAYER_NAME];
  121. new string[128];
  122. TextDrawShowForPlayer(playerid, Textdraw3);
  123. TextDrawShowForPlayer(playerid, Textdraw5);
  124. GetPlayerName(playerid,Lname,sizeof(Lname));
  125. GetPlayerPos(playerid,xpos,ypos,zpos);
  126. ainterior = GetPlayerInterior(playerid);
  127. GetPlayerHealth(playerid,hp[playerid]);
  128. GetPlayerArmour(playerid,armour[playerid]);
  129. SetPlayerHealth(playerid,100000);
  130. SetPlayerArmour(playerid,0);
  131. SetPlayerInterior(playerid,3);
  132. SetPlayerPos(playerid,-2668.868408,1410.360107,906.460937);
  133. TogglePlayerControllable(playerid,0);
  134. GameTextForPlayer(playerid,"~r~ AFK ] MODE",3000,3);
  135. tAFK[playerid] = Create3DTextLabel("AFK-MODE", 0xFF0000FF, 0.0, 0.0, 2.0, 40, 0, 0);
  136. Attach3DTextLabelToPlayer(tAFK[playerid],playerid, 0.0, 0.0, 0.4);
  137. PlayerPlaySound(playerid,1185,2944.7271,-729.7914,1.9063);
  138. ApplyAnimation(playerid,"DANCING","dance_loop", 4.1,1,1,1,1,1);
  139. format(string, sizeof(string), "%s is now Away From Keyboard {FF0000}(AFK)", Lname);
  140. SendClientMessageToAll(green,string);
  141. AFK[playerid]=1;
  142. SetTimerEx("Kicktimer", TIMEFORMAT(AFK_HOUR, AFK_MINUTES, AFK_SECONDS),false,"d",playerid);
  143. AFKcount++;
  144. return 1;
  145. }
  146.  
  147. CMD:back(playerid,params[])
  148. {
  149. if(AFK[playerid] == 0)
  150. {
  151. SendClientMessage(playerid, red, "You are not in AFK to use this command.");
  152. }
  153. else
  154. {
  155. SpawnPlayer(playerid);
  156. new string[192];
  157. new Bname[MAX_PLAYER_NAME];
  158. GetPlayerName(playerid,Bname,sizeof(Bname));
  159. SetPlayerPos(playerid,xpos,ypos,zpos);
  160. SetPlayerInterior(playerid,ainterior);
  161. SetPlayerHealth(playerid,hp[playerid]);
  162. SetPlayerArmour(playerid,armour[playerid]);
  163. PlayerPlaySound(playerid,1056,0.0,0.0,0.0);
  164. Delete3DTextLabel(tAFK[playerid]);
  165. format(string, sizeof(string), "%s is now back from {FF0000} AFK", Bname);
  166. SendClientMessageToAll(green,string);
  167. AFK[playerid]=0;
  168. TextDrawHideForPlayer(playerid, Textdraw3);
  169. TextDrawHideForPlayer(playerid, Textdraw4);
  170. TextDrawHideForPlayer(playerid, Textdraw5);
  171. new str1[128];
  172. format(str1, sizeof(str1),"Welcome Back To %s", sname);
  173. SendClientMessage(playerid, orange, str1);
  174. AFKcount--;
  175. }
  176. return 1;
  177. }
  178.  
  179. CMD:afkplayers(playerid,params[])
  180. {
  181. new string[128];
  182. new Lsname[MAX_PLAYER_NAME];
  183. new cstring[128];
  184. SendClientMessage(playerid, orange, "______________________________________");
  185. SendClientMessage(playerid, orange, "");
  186. SendClientMessage(playerid, green, " Players in AFK MODE");
  187. SendClientMessage(playerid, orange, "______________________________________");
  188. format(cstring,sizeof(cstring),"There are currently %d player(s) in AFK mode.", AFKcount);
  189. SendClientMessage(playerid, orange, cstring);
  190. for(new i = 0; i< MAX_PLAYERS; i++)
  191. {
  192. if(IsPlayerConnected(i))
  193. {
  194. if(AFK[i] == 1)
  195. {
  196. GetPlayerName(i,Lsname,sizeof(Lsname));
  197. format(string,sizeof(string),"%s (ID:%d) is Away From Keyboard {FF0000}(AFK)\r\n", Lsname, i);
  198. SendClientMessage(playerid, orange, string);
  199. }
  200. }
  201. }
  202. return 1;
  203. }
  204.  
  205. #if defined Disable_AFKCHAT == true
  206. public OnPlayerText(playerid,text[])
  207. {
  208. if(AFK[playerid] == 1)
  209. {
  210. SendClientMessage(playerid, red, "You cannot talk while you are in AFK-MODE.");
  211. }
  212. return 0;
  213. }
  214. #endif
  215.  
  216. forward Kicktimer(playerid);
  217.  
  218. public Kicktimer(playerid)
  219. {
  220. if(AFK[playerid] == 1)
  221. {
  222. TextDrawHideForPlayer(playerid, Textdraw3);
  223. TextDrawHideForPlayer(playerid, Textdraw4);
  224. TextDrawHideForPlayer(playerid, Textdraw5);
  225. new string[192];
  226. new Lstring[192];
  227. new ip[16];
  228. new Kname[MAX_PLAYER_NAME];
  229. kicklog = fopen("LAFK_Kicklogs.txt", io_append);
  230. GetPlayerName(playerid,Kname,sizeof(Kname));
  231. format(string, sizeof(string), "%s(ID:%d) has been kicked from the server(Reason:Exceeded 90 minutes in AFK)", Kname, playerid);
  232. SendClientMessageToAll(red,string);
  233. GetPlayerIp(playerid, ip, sizeof(ip));
  234. format(Lstring, sizeof(Lstring), "%s (IP:%i) has been kicked from the server(Reason:Exceeded 90 minutes in AFK)\r\n", Kname, ip);
  235. fwrite(kicklog,Lstring);
  236. fclose(kicklog);
  237. TextDrawShowForPlayer(playerid,kick);
  238. TextDrawShowForPlayer(playerid,Textdraw1);
  239. Kick(playerid);
  240. }
  241. return 1;
  242. }
  243.  
  244.  
  245. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  246. {
  247. TextDrawHideForPlayer(playerid,kick);
  248. TextDrawHideForPlayer(playerid,Textdraw1);
  249. TextDrawHideForPlayer(playerid,Textdraw3);
  250. TextDrawHideForPlayer(playerid,Textdraw4);
  251. TextDrawHideForPlayer(playerid,Textdraw5);
  252. return 1;
  253. }
  254.  
  255. public OnPlayerExitVehicle(playerid, vehicleid)
  256. {
  257. TextDrawHideForPlayer(playerid,kick);
  258. TextDrawHideForPlayer(playerid,Textdraw1);
  259. TextDrawHideForPlayer(playerid,Textdraw3);
  260. TextDrawHideForPlayer(playerid,Textdraw4);
  261. TextDrawHideForPlayer(playerid,Textdraw5);
  262. return 1;
  263. }
  264.  
  265.  
  266.  
  267. public OnPlayerSpawn(playerid)
  268. {
  269. TextDrawHideForPlayer(playerid,kick);
  270. TextDrawHideForPlayer(playerid,Textdraw1);
  271. TextDrawHideForPlayer(playerid,Textdraw3);
  272. TextDrawHideForPlayer(playerid,Textdraw4);
  273. TextDrawHideForPlayer(playerid,Textdraw5);
  274. AFK[playerid] = 0;
  275. return 1;
  276. }
  277.  
  278. public OnPlayerStateChange(playerid, newstate, oldstate)
  279. {
  280. if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
  281. {
  282. TextDrawHideForPlayer(playerid,kick);
  283. TextDrawHideForPlayer(playerid,Textdraw1);
  284. TextDrawHideForPlayer(playerid,Textdraw3);
  285. TextDrawHideForPlayer(playerid,Textdraw4);
  286. TextDrawHideForPlayer(playerid,Textdraw5);
  287. }
  288. return 1;
  289. }
  290.  
  291. public OnPlayerConnect(playerid)
  292. {
  293. AFK[playerid] = 0;
  294. return 1;
  295. }
Advertisement
Add Comment
Please, Sign In to add comment