Guest User

Untitled

a guest
Jan 7th, 2018
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.29 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. new HasBBX[MAX_PLAYERS];
  4. new BBXIsReady[MAX_PLAYERS];
  5. new BBXPerjectile[MAX_PLAYERS];
  6. new BBXFlare[MAX_PLAYERS];
  7. forward BBXCleanup(BBXPerjectileid,BBXFlareid);
  8.  
  9. // HOLDING(keys)
  10. #define HOLDING(%0) \
  11. ((newkeys & (%0)) == (%0))
  12. // PRESSED(keys)
  13. #define PRESSED(%0) \
  14. (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
  15. // RELEASED(keys)
  16. #define RELEASED(%0) \
  17. (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
  18.  
  19.  
  20.  
  21. ////////////////////////////////////////////////////////////////////////////////
  22. ////////////////////////////////////////////////////////////////////////////////
  23. ////////////////////////////////////////////////////////////////////////////////
  24. public OnPlayerCommandText(playerid, cmdtext[])
  25. {
  26. if (strcmp(cmdtext, "/flaregun", true)==0)
  27. {
  28. ResetPlayerWeapons(playerid);
  29. GivePlayerWeapon(playerid,34,420);
  30. HasBBX[playerid] = 1;
  31. SendClientMessage(playerid,0xFFFF0000,"given a flaregun.");
  32. ReloadBBX(playerid);
  33.  
  34. return 1;
  35. }
  36. else if (strcmp(cmdtext, "/reloadme", true)==0)
  37. {
  38. ReloadBBX(playerid);
  39. return 1;
  40. }
  41. else if (strcmp(cmdtext, "/reloadtest", true)==0)
  42. {
  43. SendClientMessage(playerid,0xFFFF0000,"reload anim differentiater");
  44. ReloadBBX(playerid);
  45. return 1;
  46. }
  47. return 0;
  48. }
  49. ////////////////////////////////////////////////////////////////////////////////
  50. ////////////////////////////////////////////////////////////////////////////////
  51. ////////////////////////////////////////////////////////////////////////////////
  52.  
  53. #define KEY_AIM 128
  54. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  55. {
  56. new HoldingBBX;
  57. HoldingBBX = GetPlayerWeapon(playerid);
  58. if(HasBBX[playerid] == 1)
  59. {
  60. if(HoldingBBX == 34)
  61. {
  62. if (PRESSED( KEY_AIM ))//start aiming
  63. {
  64. if(BBXIsReady[playerid] == 1)
  65. {
  66. GiveBBXRound(playerid);
  67. // BBXIsReady[playerid] = 0;
  68. return 1;
  69. }
  70. }
  71. }
  72. }
  73.  
  74. if (PRESSED( KEY_FIRE ))
  75. {
  76. if(BBXIsReady[playerid] == 0) return 1;
  77. SetTimerEx("ReloadBBX",200,false,"i", playerid);
  78. // ReloadBBX(playerid);
  79. BBXIsReady[playerid] = 0;
  80. return 1;
  81. }
  82. return 1;
  83. }
  84. ////////////////////////////////////////////////////////////////////////////////
  85. // if(BBXIsReady[playerid] == 1)
  86. // {
  87. // ReloadBBX(playerid);
  88. // SendClientMessage(playerid,0xFFFF0000,"fire key pressed");
  89. // BBXIsReady[playerid] = 0;
  90. // {
  91. // if(BBXIsReady[playerid] == 0)
  92. // {
  93. // SendClientMessage(playerid,0xFFFF0000,"bbx not rdy");
  94. // }
  95. // }
  96. // }
  97. ////////////////////////////////////////////////////////////////////////////////
  98.  
  99. forward ReloadBBX(playerid);
  100. public ReloadBBX(playerid)
  101. {
  102. if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_DUCK)
  103. {
  104. SetTimerEx("BBXReloaded",2000,false,"i", playerid);
  105. BBXStartRelAnimC(playerid);
  106. // SendClientMessage(playerid,0xFFFF0000,"[BBX] crouched Reloading...");
  107. }
  108. if(GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK)
  109. {
  110. SetTimerEx("BBXReloaded",2000,false,"i", playerid);
  111. BBXStartRelAnim(playerid);
  112. // SendClientMessage(playerid,0xFFFF0000,"[BBX] standing Reloading...");
  113. return 1;
  114. }
  115. return 1;
  116. }
  117.  
  118. forward BBXReloaded(playerid);
  119. public BBXReloaded(playerid)
  120. {
  121. StopRelAnim(playerid);
  122. // SendClientMessage(playerid,0xFF00FF00,"[BBX9k] Reloaded.");
  123. BBXIsReady[playerid] = 1;
  124. ClearAnimations(playerid);
  125. return 1;
  126. }
  127.  
  128. forward GiveBBXRound(playerid);
  129. public GiveBBXRound(playerid)
  130. {
  131. if(BBXIsReady[playerid] == 0) return 1;
  132. new myBBXinfo[2];
  133. new Float:bbxpos[3],Float:pidFA;
  134. GetPosFaInFrontOfPlayer(playerid, 0.80, bbxpos[0], bbxpos[1], bbxpos[2], pidFA);
  135.  
  136. BBXPerjectile[playerid] = CreateObject(3065, bbxpos[0], bbxpos[1], bbxpos[2] + 0.68, 0.0, 0.0, pidFA,300.0);
  137. BBXFlare[playerid] = CreateObject(19294, bbxpos[0], bbxpos[1], bbxpos[2] + 0.68, 0.0, 0.0, pidFA,300.0);
  138. // AttachCameraToObject(playerid, BBXFlare[playerid]);
  139. AttachObjectToObject(BBXFlare[playerid],BBXPerjectile[playerid],0.0,0.0,0.0, 0.0,0.0,0.0,1);
  140.  
  141. SetTimerEx("BBXCleanup",4000,false,"ii",BBXPerjectile[playerid],BBXFlare[playerid]);//delete ball 4 sec after shoot key
  142. SetTimerEx("BBXCleanup",4000,false,"ii",BBXPerjectile[playerid],BBXFlare[playerid]);//fix camera
  143. GetPlayerWeaponData(playerid,6,myBBXinfo[0],myBBXinfo[1]);
  144. GivePlayerWeapon(playerid,34, 1);
  145. // BBXIsReady[playerid] = 0;
  146. return 1;
  147. }
  148.  
  149. forward BBXStartRelAnimC(playerid);
  150. public BBXStartRelAnimC(playerid)
  151. {
  152. // TogglePlayerControllable(playerid,0);
  153. SetTimerEx("StopRelAnim",1750,false,"i", playerid);
  154. ApplyAnimation(playerid,"RIFLE","RIFLE_crouchfire",4.1,0,1,1,1,1,1);
  155. ApplyAnimation(playerid,"RIFLE","RIFLE_crouchfire",4.1,0,1,1,1,1,1);
  156. SetPlayerAttachedObject(playerid,7,358, 6, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 1.000000, 1.000000);
  157. return 1;
  158. }
  159.  
  160. forward BBXStartRelAnim(playerid);
  161. public BBXStartRelAnim(playerid)
  162. {
  163. // TogglePlayerControllable(playerid,0);
  164. SetTimerEx("StopRelAnim",1750,false,"i", playerid);
  165. ApplyAnimation(playerid,"RIFLE","RIFLE_load",4.1,0,1,1,1,1,1);
  166. ApplyAnimation(playerid,"RIFLE","RIFLE_load",4.1,0,1,1,1,1,1);
  167. SetPlayerAttachedObject(playerid,7,358, 6, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000, 1.000000, 1.000000);
  168. return 1;
  169. }
  170.  
  171. forward StopRelAnim(playerid);
  172. public StopRelAnim(playerid)
  173. {
  174. ClearAnimations(playerid);
  175. GivePlayerWeapon(playerid,34, 1);
  176. RemovePlayerAttachedObject(playerid, 7);
  177. // TogglePlayerControllable(playerid,1);
  178. return 1;
  179. }
  180. /*
  181. forward FixCamera(playerid);
  182. public FixCamera(playerid)
  183. {
  184. SetCameraBehindPlayer(playerid);
  185. return 1;
  186. }
  187. */
  188. public BBXCleanup(BBXPerjectileid,BBXFlareid)
  189. {
  190. DestroyObject(BBXPerjectileid);
  191. DestroyObject(BBXFlareid);
  192.  
  193. return 1;
  194. }
  195. forward GetPosFaInFrontOfPlayer(playerid, Float:OffDist, &Float:Pxx, &Float:Pyy, &Float:Pzz, &Float:Fa);
  196. public GetPosFaInFrontOfPlayer(playerid, Float:OffDist, &Float:Pxx, &Float:Pyy, &Float:Pzz, &Float:Fa)
  197. {
  198. if(!IsPlayerConnected(playerid)) return 0;
  199. new
  200. Float:playerpos[3],
  201. Float:FacingA;
  202. GetPlayerPos(playerid, playerpos[0], playerpos[1], playerpos[2]);
  203. GetPlayerFacingAngle(playerid, FacingA);
  204. Pxx = (playerpos[0] + OffDist * floatsin(-FacingA,degrees));
  205. Pyy = (playerpos[1] + OffDist * floatcos(-FacingA,degrees));
  206. Pzz = playerpos[2];
  207. Fa = (FacingA > 180) ? (FacingA - 180) : (FacingA + 180);
  208. return 1;
  209. }
Advertisement
Add Comment
Please, Sign In to add comment