Advertisement
Lordz

L-AFK System v1.0

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