Advertisement
Guest User

Taser system by rootcause

a guest
Jun 6th, 2016
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.42 KB | None | 0 0
  1. #define FILTERSCRIPT
  2. #include <a_samp>
  3. #undef MAX_PLAYERS
  4. #define MAX_PLAYERS (100)
  5.  
  6. #include <progress2>
  7.  
  8. #define TASER_BASETIME (3) // zaidejas bus nukratytas 3 sekundem
  9. #define TASER_INDEX (4) // setplayerattachedobject index tazer object
  10.  
  11. enum e_taser
  12. {
  13. bool: TaserEnabled,
  14. TaserCountdown,
  15. GetupTimer,
  16. TaserUpdate,
  17. bool: TaserCharged,
  18. ChargeTimer
  19. };
  20.  
  21. new
  22. TaserData[MAX_PLAYERS][e_taser],
  23. PlayerBar: ChargeBar[MAX_PLAYERS];
  24.  
  25. new
  26. RGY[100] = {
  27. 0xFF0000FF, 0xFF0500FF, 0xFF0A00FF, 0xFF0F00FF, 0xFF1400FF, 0xFF1900FF, 0xFF1E00FF, 0xFF2300FF, 0xFF2800FF, 0xFF2D00FF,
  28. 0xFF3300FF, 0xFF3800FF, 0xFF3D00FF, 0xFF4200FF, 0xFF4700FF, 0xFF4C00FF, 0xFF5100FF, 0xFF5600FF, 0xFF5B00FF, 0xFF6000FF,
  29. 0xFF6600FF, 0xFF6B00FF, 0xFF7000FF, 0xFF7500FF, 0xFF7A00FF, 0xFF7F00FF, 0xFF8400FF, 0xFF8900FF, 0xFF8E00FF, 0xFF9300FF,
  30. 0xFF9900FF, 0xFF9E00FF, 0xFFA300FF, 0xFFA800FF, 0xFFAD00FF, 0xFFB200FF, 0xFFB700FF, 0xFFBC00FF, 0xFFC100FF, 0xFFC600FF,
  31. 0xFFCC00FF, 0xFFD100FF, 0xFFD600FF, 0xFFDB00FF, 0xFFE000FF, 0xFFE500FF, 0xFFEA00FF, 0xFFEF00FF, 0xFFF400FF, 0xFFF900FF,
  32. 0xFFFF00FF, 0xF9FF00FF, 0xF4FF00FF, 0xEFFF00FF, 0xEAFF00FF, 0xE4FF00FF, 0xDFFF00FF, 0xDAFF00FF, 0xD5FF00FF, 0xD0FF00FF,
  33. 0xCAFF00FF, 0xC5FF00FF, 0xC0FF00FF, 0xBBFF00FF, 0xB6FF00FF, 0xB0FF00FF, 0xABFF00FF, 0xA6FF00FF, 0xA1FF00FF, 0x9CFF00FF,
  34. 0x96FF00FF, 0x91FF00FF, 0x8CFF00FF, 0x87FF00FF, 0x82FF00FF, 0x7CFF00FF, 0x77FF00FF, 0x72FF00FF, 0x6DFF00FF, 0x68FF00FF,
  35. 0x62FF00FF, 0x5DFF00FF, 0x58FF00FF, 0x53FF00FF, 0x4EFF00FF, 0x48FF00FF, 0x43FF00FF, 0x3EFF00FF, 0x39FF00FF, 0x34FF00FF,
  36. 0x2EFF00FF, 0x29FF00FF, 0x24FF00FF, 0x1FFF00FF, 0x1AFF00FF, 0x14FF00FF, 0x0FFF00FF, 0x0AFF00FF, 0x05FF00FF, 0x00FF00FF
  37. };
  38.  
  39. stock IsACopSkin(skinid)
  40. {
  41. // Policijos skin, policininku su siuo skin negalesite nutazerinti.
  42. switch(skinid)
  43. {
  44. case 265..267, 280..288, 300..302, 306, 307, 309..311: return 1;
  45. default: return 0;
  46. }
  47.  
  48. return 0;
  49. }
  50.  
  51. public OnFilterScriptInit()
  52. {
  53. for(new i, maxp = GetPlayerPoolSize(); i <= maxp; ++i)
  54. {
  55. if(!IsPlayerConnected(i)) continue;
  56. TaserData[i][TaserEnabled] = false;
  57. TaserData[i][TaserCharged] = true;
  58. TaserData[i][TaserCountdown] = 0;
  59. TaserData[i][GetupTimer] = -1;
  60. TaserData[i][ChargeTimer] = -1;
  61.  
  62. ApplyAnimation(i, "KNIFE", "null", 0.0, 0, 0, 0, 0, 0, 0);
  63. ApplyAnimation(i, "CRACK", "null", 0.0, 0, 0, 0, 0, 0, 0);
  64. }
  65.  
  66. return 1;
  67. }
  68.  
  69. public OnFilterScriptExit()
  70. {
  71. for(new i, maxp = GetPlayerPoolSize(); i <= maxp; ++i)
  72. {
  73. if(!IsPlayerConnected(i)) continue;
  74. if(!TaserData[i][TaserEnabled]) continue;
  75. RemovePlayerAttachedObject(i, TASER_INDEX);
  76. DestroyPlayerProgressBar(i, ChargeBar[i]);
  77. }
  78.  
  79. return 1;
  80. }
  81.  
  82. public OnPlayerConnect(playerid)
  83. {
  84. TaserData[playerid][TaserEnabled] = false;
  85. TaserData[playerid][TaserCharged] = true;
  86. TaserData[playerid][TaserCountdown] = 0;
  87. TaserData[playerid][GetupTimer] = -1;
  88. TaserData[playerid][ChargeTimer] = -1;
  89.  
  90. ApplyAnimation(playerid, "KNIFE", "null", 0.0, 0, 0, 0, 0, 0, 0);
  91. ApplyAnimation(playerid, "CRACK", "null", 0.0, 0, 0, 0, 0, 0, 0);
  92. return 1;
  93. }
  94.  
  95. public OnPlayerDisconnect(playerid, reason)
  96. {
  97. if(TaserData[playerid][GetupTimer] != -1)
  98. {
  99. KillTimer(TaserData[playerid][GetupTimer]);
  100. TaserData[playerid][GetupTimer] = -1;
  101. }
  102.  
  103. if(TaserData[playerid][ChargeTimer] != -1)
  104. {
  105. KillTimer(TaserData[playerid][ChargeTimer]);
  106. TaserData[playerid][ChargeTimer] = -1;
  107. }
  108.  
  109. return 1;
  110. }
  111.  
  112. public OnPlayerUpdate(playerid)
  113. {
  114. if(TaserData[playerid][TaserEnabled] && TaserData[playerid][TaserUpdate] < tickcount())
  115. {
  116. if(GetPlayerWeapon(playerid) == 0) {
  117. SetPlayerAttachedObject(playerid, TASER_INDEX, 18642, 6, 0.0795, 0.015, 0.0295, 180.0, 0.0, 0.0);
  118. }else{
  119. RemovePlayerAttachedObject(playerid, TASER_INDEX);
  120. }
  121.  
  122. TaserData[playerid][TaserUpdate] = tickcount()+100;
  123. }
  124.  
  125. return 1;
  126. }
  127.  
  128. public OnPlayerCommandText(playerid, cmdtext[])
  129. {
  130. if(!strcmp(cmdtext, "/tazeris"))
  131. {
  132. if(!IsACopSkin(GetPlayerSkin(playerid))) return SendClientMessage(playerid, 0xE74C3CFF, "KLAIDA: {FFFFFF}Ši komanda tik policijos darbuotojams.");
  133. if(!TaserData[playerid][TaserCharged]) return SendClientMessage(playerid, 0xE74C3CFF, "KLAIDA: {FFFFFF}Jūs negalite naudoti šios komandos, nes tazeris nepilnai užsikroves.");
  134. TaserData[playerid][TaserEnabled] = !TaserData[playerid][TaserEnabled];
  135. new string[64];
  136. format(string, sizeof(string), "TAZERIS: {FFFFFF}%s.", (TaserData[playerid][TaserEnabled]) ? ("{2ECC71}ĮJUNGTAS") : ("{E74C3C}IŠJUNGTAS"));
  137. SendClientMessage(playerid, 0x3498DBFF, string);
  138.  
  139. if(TaserData[playerid][TaserEnabled]) {
  140. SetPlayerArmedWeapon(playerid, 0);
  141. SetPlayerAttachedObject(playerid, TASER_INDEX, 18642, 6, 0.0795, 0.015, 0.0295, 180.0, 0.0, 0.0);
  142. TaserData[playerid][TaserUpdate] = tickcount()+100;
  143.  
  144. ChargeBar[playerid] = CreatePlayerProgressBar(playerid, 548.000000, 58.000000, 62.000000, 4.699999, 0x00FF00FF, 100.0, 0);
  145. SetPlayerProgressBarValue(playerid, ChargeBar[playerid], 100.0);
  146. }else{
  147. RemovePlayerAttachedObject(playerid, TASER_INDEX);
  148. DestroyPlayerProgressBar(playerid, ChargeBar[playerid]);
  149. }
  150.  
  151. return 1;
  152. }
  153.  
  154. return 0;
  155. }
  156.  
  157. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  158. {
  159. if(newkeys & KEY_FIRE && TaserData[playerid][TaserEnabled] && GetPlayerWeapon(playerid) == 0 && !IsPlayerInAnyVehicle(playerid) && TaserData[playerid][TaserCharged])
  160. {
  161. TaserData[playerid][TaserCharged] = false;
  162.  
  163. new Float: x, Float: y, Float: z, Float: health, string[64];
  164. GetPlayerPos(playerid, x, y, z);
  165. PlayerPlaySound(playerid, 6003, 0.0, 0.0, 0.0);
  166. ApplyAnimation(playerid, "KNIFE", "KNIFE_3", 4.1, 0, 1, 1, 0, 0, 1);
  167. SetPlayerProgressBarColour(playerid, ChargeBar[playerid], RGY[0]);
  168. SetPlayerProgressBarValue(playerid, ChargeBar[playerid], 0.0);
  169. TaserData[playerid][ChargeTimer] = SetTimerEx("Pakrautas", 100, true, "i", playerid);
  170.  
  171. for(new i, maxp = GetPlayerPoolSize(); i <= maxp; ++i)
  172. {
  173. if(!IsPlayerConnected(i)) continue;
  174. if(playerid == i) continue;
  175. if(TaserData[i][TaserCountdown] != 0) continue;
  176. if(IsPlayerInAnyVehicle(i)) continue;
  177. if(IsACopSkin(GetPlayerSkin(i))) continue;
  178. if(GetPlayerDistanceFromPoint(i, x, y, z) > 2.0) continue;
  179. ClearAnimations(i, 1);
  180. TogglePlayerControllable(i, false);
  181. ApplyAnimation(i, "CRACK", "crckdeth2", 4.1, 0, 0, 0, 1, 0, 1);
  182. PlayerPlaySound(i, 6003, 0.0, 0.0, 0.0);
  183.  
  184. GetPlayerHealth(i, health);
  185. TaserData[i][TaserCountdown] = TASER_BASETIME + floatround((100 - health) / 12);
  186. format(string, sizeof(string), "TAZERIS: {FFFFFF}Jūs buvote nukrėstas elektrošoko %d sekundėm(-ėmis)!", TaserData[i][TaserCountdown]);
  187. SendClientMessage(i, 0x3498DBFF, string);
  188. format(string, sizeof(string), "~n~~n~~n~~b~~h~~h~Nukratytas: ~g~~h~~h~%d", TaserData[i][TaserCountdown]);
  189. GameTextForPlayer(i, string, 1000, 3);
  190. TaserData[i][GetupTimer] = SetTimerEx("TaserGetUp", 1000, true, "i", i);
  191. break;
  192. }
  193. }
  194.  
  195. return 1;
  196. }
  197.  
  198. forward TaserGetUp(playerid);
  199. public TaserGetUp(playerid)
  200. {
  201. if(TaserData[playerid][TaserCountdown] > 1) {
  202. new string[48];
  203. TaserData[playerid][TaserCountdown]--;
  204. format(string, sizeof(string), "~n~~n~~n~~b~~h~~h~Nukratytas: ~g~~h~~h~%d", TaserData[playerid][TaserCountdown]);
  205. GameTextForPlayer(playerid, string, 1000, 3);
  206. }else if(TaserData[playerid][TaserCountdown] == 1) {
  207. TogglePlayerControllable(playerid, true);
  208. ClearAnimations(playerid, 1);
  209. KillTimer(TaserData[playerid][GetupTimer]);
  210. TaserData[playerid][GetupTimer] = -1;
  211. TaserData[playerid][TaserCountdown] = 0;
  212. GameTextForPlayer(playerid, "~n~~n~~n~~g~~h~~h~Tazerio efektas baigesi", 1000, 3);
  213. }
  214.  
  215. return 1;
  216. }
  217.  
  218. forward Pakrautas(playerid);
  219. public Pakrautas(playerid)
  220. {
  221. new Float: charge = GetPlayerProgressBarValue(playerid, ChargeBar[playerid]);
  222. charge++;
  223. if(charge >= 100.0)
  224. {
  225. charge = 100.0;
  226. TaserData[playerid][TaserCharged] = true;
  227. KillTimer(TaserData[playerid][ChargeTimer]);
  228. TaserData[playerid][ChargeTimer] = -1;
  229. PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  230. SendClientMessage(playerid, 0x3498DBFF, "TAZERIS: {FFFFFF}Tazeris pasikrovė, dabar galite jį naudoti.");
  231. }
  232.  
  233. if(charge < 100.0) SetPlayerProgressBarColour(playerid, ChargeBar[playerid], RGY[ floatround(charge) ]);
  234. SetPlayerProgressBarValue(playerid, ChargeBar[playerid], charge);
  235. return 1;
  236. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement