Advertisement
Guest User

Snowball System by DjReven

a guest
Dec 24th, 2014
404
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.50 KB | None | 0 0
  1. /*
  2.  
  3. Filterscript by DjReven
  4. Skype: dominik.kunze99
  5. Do not remove the credits!
  6.  
  7. */
  8.  
  9. #include <a_samp>
  10. new SnowballActiviert[MAX_PLAYERS];
  11. new SnowballShootWait[MAX_PLAYERS];
  12. new Snowballvalue[MAX_PLAYERS];
  13.  
  14. public OnFilterScriptInit()
  15. {
  16. print("\n--------------------------------------");
  17. print(" Blank Filterscript by your name here");
  18. print("--------------------------------------\n");
  19. return 1;
  20. }
  21.  
  22. public OnFilterScriptExit()
  23. {
  24. return 1;
  25. }
  26.  
  27. public OnPlayerConnect(playerid)
  28. {
  29. return 1;
  30. }
  31.  
  32. public OnPlayerDisconnect(playerid, reason)
  33. {
  34. SnowballActiviert[playerid] = 0;
  35. SnowballShootWait[playerid] = 0;
  36. Snowballvalue[playerid] = 0;
  37. return 1;
  38. }
  39.  
  40. public OnPlayerCommandText(playerid, cmdtext[])
  41. {
  42. if(strcmp(cmdtext,"/snowball",true)==0)
  43. {
  44. if(SnowballActiviert[playerid] == 0)
  45. {
  46. SnowballActiviert[playerid] = 1;
  47. SendClientMessage(playerid,0xFFFFFFFF,"Du kannst nun mit LMB auf User Visieren und mit RMB auf diese schießen.");
  48. return 1;
  49. }else{
  50. SnowballActiviert[playerid] = 0;
  51. SendClientMessage(playerid,0xFFFFFFFF,"Du schießt jetzt keine Schneebälle mehr!");
  52. return 1;
  53. }
  54. }
  55. if(strcmp(cmdtext,"/credits",true)==0)
  56. {
  57. SendClientMessage(playerid,0xFFFFFFFF,"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
  58. SendClientMessage(playerid,0xFFFFFFFF,"Snowball System by DjReven");
  59. SendClientMessage(playerid,0xFFFFFFFF,"Skype: dominik.kunze99");
  60. SendClientMessage(playerid,0xFFFFFFFF,"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
  61. }
  62. return 0;
  63. }
  64. Float:DistanceCameraTargetToLocation(Float:CamX, Float:CamY, Float:CamZ, Float:ObjX, Float:ObjY, Float:ObjZ, Float:FrX, Float:FrY, Float:FrZ) {
  65.  
  66. new Float:TGTDistance;
  67.  
  68. TGTDistance = floatsqroot((CamX - ObjX) * (CamX - ObjX) + (CamY - ObjY) * (CamY - ObjY) + (CamZ - ObjZ) * (CamZ - ObjZ));
  69.  
  70. new Float:tmpX, Float:tmpY, Float:tmpZ;
  71.  
  72. tmpX = FrX * TGTDistance + CamX;
  73. tmpY = FrY * TGTDistance + CamY;
  74. tmpZ = FrZ * TGTDistance + CamZ;
  75.  
  76. return floatsqroot((tmpX - ObjX) * (tmpX - ObjX) + (tmpY - ObjY) * (tmpY - ObjY) + (tmpZ - ObjZ) * (tmpZ - ObjZ));
  77. }
  78.  
  79. stock Float:GetPointAngleToPoint(Float:x2, Float:y2, Float:X, Float:Y) {
  80.  
  81. new Float:DX, Float:DY;
  82. new Float:angle;
  83.  
  84. DX = floatabs(floatsub(x2,X));
  85. DY = floatabs(floatsub(y2,Y));
  86.  
  87. if (DY == 0.0 || DX == 0.0) {
  88. if(DY == 0 && DX > 0) angle = 0.0;
  89. else if(DY == 0 && DX < 0) angle = 180.0;
  90. else if(DY > 0 && DX == 0) angle = 90.0;
  91. else if(DY < 0 && DX == 0) angle = 270.0;
  92. else if(DY == 0 && DX == 0) angle = 0.0;
  93. }
  94. else {
  95. angle = atan(DX/DY);
  96.  
  97. if(X > x2 && Y <= y2) angle += 90.0;
  98. else if(X <= x2 && Y < y2) angle = floatsub(90.0, angle);
  99. else if(X < x2 && Y >= y2) angle -= 90.0;
  100. else if(X >= x2 && Y > y2) angle = floatsub(270.0, angle);
  101. }
  102.  
  103. return floatadd(angle, 90.0);
  104. }
  105.  
  106. stock GetXYInFrontOfPoint(&Float:x, &Float:y, Float:angle, Float:distance) {
  107. x += (distance * floatsin(-angle, degrees));
  108. y += (distance * floatcos(-angle, degrees));
  109. }
  110.  
  111. stock IsPlayerAimingAt(playerid, Float:x, Float:y, Float:z, Float:radius) {
  112. new Float:camera_x,Float:camera_y,Float:camera_z,Float:vector_x,Float:vector_y,Float:vector_z;
  113. GetPlayerCameraPos(playerid, camera_x, camera_y, camera_z);
  114. GetPlayerCameraFrontVector(playerid, vector_x, vector_y, vector_z);
  115.  
  116. new Float:vertical, Float:horizontal;
  117.  
  118. switch (GetPlayerWeapon(playerid)) {
  119. case 34,35,36: {
  120. if (DistanceCameraTargetToLocation(camera_x, camera_y, camera_z, x, y, z, vector_x, vector_y, vector_z) < radius) return true;
  121. return false;
  122. }
  123. case 30,31: {vertical = 4.0; horizontal = -1.6;}
  124. case 33: {vertical = 2.7; horizontal = -1.0;}
  125. default: {vertical = 6.0; horizontal = -2.2;}
  126. }
  127.  
  128. new Float:angle = GetPointAngleToPoint(0, 0, floatsqroot(vector_x*vector_x+vector_y*vector_y), vector_z) - 270.0;
  129. new Float:resize_x, Float:resize_y, Float:resize_z = floatsin(angle+vertical, degrees);
  130. GetXYInFrontOfPoint(resize_x, resize_y, GetPointAngleToPoint(0, 0, vector_x, vector_y)+horizontal, floatcos(angle+vertical, degrees));
  131.  
  132. if (DistanceCameraTargetToLocation(camera_x, camera_y, camera_z, x, y, z, resize_x, resize_y, resize_z) < radius) return true;
  133. return false;
  134. }
  135. stock IsPlayerAimingAtPlayer(playerid, targetplayerid) {
  136. new Float:x, Float:y, Float:z;
  137. GetPlayerPos(targetplayerid, x, y, z);
  138. return IsPlayerAimingAt(playerid, x, y, z, 1.1);
  139. }
  140. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  141. {
  142. if((newkeys & KEY_HANDBRAKE) && (newkeys & KEY_FIRE))
  143. {
  144. if(GetPlayerWeapon(playerid) == 0 || GetPlayerWeapon(playerid) == 1)
  145. {
  146. if(SnowballActiviert[playerid] == 1)
  147. {
  148. if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_DUCK)
  149. {
  150. if(Snowballvalue[playerid] >= 5)
  151. {
  152. SendClientMessage(playerid,0xFFFFFFFF,"Du besitzt schon 5 Schneebälle!");
  153. return 1;
  154. }else{
  155. Snowballvalue[playerid] += 1;
  156. SendClientMessage(playerid,0xFFFFFFFF,"Du hast ein Schneeball gebaut!");
  157. return 1;
  158. }
  159. }else{
  160. if(SnowballShootWait[playerid] == 0)
  161. {
  162. if(Snowballvalue[playerid] >= 1)
  163. {
  164. SnowballShootWait[playerid] = 1;
  165. Snowballvalue[playerid] -= 1;
  166. SetTimerEx("SnowballShootActivieren",2000,0,"u",playerid);
  167. ApplyAnimation(playerid, "GRENADE", "WEAPON_throw", 4.0, 0, 0, 0, 0, 0, 1);
  168. for(new i=0; i<MAX_PLAYERS; i++)
  169. {
  170. if(IsPlayerConnected(i))
  171. {
  172. if(IsPlayerAimingAtPlayer(playerid,i))
  173. {
  174. if(playerid != i)
  175. {
  176. new Float:x,
  177. Float:y,
  178. Float:z;
  179. GetPlayerPos(playerid,x,y,z);
  180. if(IsPlayerInRangeOfPoint(i,20.0,x,y,z))
  181. {
  182. if(!IsPlayerInAnyVehicle(i))
  183. {
  184. ApplyAnimation(i,"FIGHT_B","HitB_1",4.0, 0, 0, 0, 0, 0, 1);
  185. return 1;
  186. }
  187. }
  188. }
  189. }
  190. }
  191. }
  192. }else{
  193. SendClientMessage(playerid,0xFFFFFFFF,"Du besitzt keinen Schnellball!");
  194. return 1;
  195. }
  196. }
  197. }
  198. }
  199. }
  200. }
  201. return 1;
  202. }
  203.  
  204. forward SnowballShootActivieren(playerid);
  205. public SnowballShootActivieren(playerid)
  206. {
  207. SnowballShootWait[playerid] = 0;
  208. return 1;
  209. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement