Advertisement
Arxero

Untitled

Aug 19th, 2018
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.50 KB | None | 0 0
  1. /*|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|*
  2. *.
  3. * [ZP] Extra Item Jetpack+Bazooka 3.2
  4. *
  5. *|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|*
  6. *
  7. * Original Plugin:
  8. * AMX Jetpack
  9. * BY
  10. * (c) Copyright 2005, KleeneX
  11. * This file is provided as is (no warranties)
  12. *
  13. * CREDITS:
  14. * KleeneX |>>>| Original Plugin (http://forums.alliedmods.net/showthread.php?p=119727)
  15. * Bad_Bud |>>>| TS_Jetpack (http://forums.alliedmods.net/showthread.php?s=e5aba95dfbb0814ebafe553d555b1e51&t=55709&highlight=TS_Jetpack)
  16. * MeRcyLeZZ |>>>| bug fix, some code from [ZP] Stamina (http://forums.alliedmods.net/showpost.php?p=675697&postcount=1300)
  17. * mogel |>>>| Icon code form Predator-Mod (http://forums.alliedmods.net/showthread.php?s=e5aba95dfbb0814ebafe553d555b1e51&t=67305&highlight=predator)
  18. *
  19. *|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|*
  20. *
  21. * Plagued Version 3.2 by B!gBud
  22. *
  23. *
  24. * Allows Humans buy a Jetpack+Bazooka in Zombie Plague [4.0]
  25. *
  26. *
  27. * CVARS:
  28. * zp_jetpack 2 // 0 = Off / 1 = have Knive & Hold ATTACK / 2 = Hold JUMP and DUCK
  29. *
  30. * zp_jp_forward_speed 300 // Set the forward speed(when you fly and press FORWARD)
  31. * zp_jp_up_speed 35 // Set the UP speed(when you press ATTACK and JUMP up)
  32. * zp_jp_accelerate 100 // How fast you get to the max ForwardSpeed
  33. *
  34. * zp_jp_rocket_delay 12 // How long you got to wait to shoot the next rocket(in sec.)
  35. * zp_jp_rocket_speed 1500 // Set the rocket Speed
  36. * zp_jp_rocket_damage 1500 // Set the max rocket Damage
  37. * zp_jp_damage_radius 350 // Set the radius of a rocket explosion
  38. *
  39. * zp_jp_max_engery 100 // Set the max Energy for the Jetpack
  40. * zp_jp_engery 10 // Set how many Energy need the JP to fly (time interval is "zp_jp_energy_cal")
  41. * zp_jp_regain_energy 3 // Set how fast you get JP_Energy back, when you on the ground (time interval is "zp_jp_energy_cal")
  42. * zp_jp_energy_cal 1.0 // Set time interval for "zp_jp_engery" & "zp_jp_regain_energy"
  43. * zp_jp_oneround 1 // 0 = jetpack stay on a new round if someone alive / 1 = jetpack for One Round only
  44. *
  45. *|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|**|_/=\_|*/
  46.  
  47. #include <amxmodx>
  48. #include <fun>
  49. #include <engine>
  50. #include <fakemeta>
  51. #include <hamsandwich>
  52. #include <cstrike>
  53.  
  54. #define PLUGINNAME "Extra Item Jetpack+Bazooka"
  55. #define VERSION "3.2"
  56. #define AUTHOR "B!gBud"
  57.  
  58. #define ACCESS_LEVEL ADMIN_LEVEL_A
  59. #define VOTE_ACCESS ADMIN_CFG
  60.  
  61. #define TE_EXPLOSION 3
  62. #define TE_BEAMFOLLOW 22
  63. #define TE_BEAMCYLINDER 21
  64.  
  65. #define JETPACK_COST 30 // set how may ammopacks the Jatpack+Rocket cost
  66.  
  67. new ROCKET_MDL[64] = "models/rpgrocket.mdl"
  68. new ROCKET_SOUND[64] = "weapons/rocketfire1.wav"
  69. new getrocket[64] = "items/9mmclip2.wav"
  70.  
  71. new bool:fly[33] = false
  72. new bool:rocket[33] = false
  73. new bool:rksound[33] = false
  74. new bool:shot[33] = false
  75.  
  76. new Float:gltime = 0.0
  77. new Float:last_Rocket[33] = 0.0
  78. new Float:jp_cal[33] = 0.0
  79. new Float:jp_soun[33] = 0.0
  80. new flame, explosion, trail, white
  81. new g_flyEnergy[33], hasjet[33]
  82. new cvar_jetpack, cvar_jetpackSpeed, cvar_jetpackUpSpeed, cvar_jetpackAcrate ,cvar_RocketDelay, cvar_RocketSpeed, cvar_RocketDmg, cvar_Dmg_range, cvar_fly_max_engery, cvar_fly_engery, cvar_regain_energy, cvar_cal_time, cvar_oneround
  83.  
  84. new p_JetpackCost
  85. new p_BuyJetpack
  86.  
  87.  
  88. public plugin_init() {
  89. register_plugin(PLUGINNAME, VERSION, AUTHOR)
  90.  
  91. register_clcmd("say /jpdrop","cmdDrop")
  92. register_clcmd("say_team /jpdrop","cmdDrop")
  93.  
  94. register_clcmd("say /jphelp","cmdHelp",0,": Displays Jetpack help")
  95. register_clcmd("say /jetpack", "cmdBuy")
  96.  
  97. new ver[64]
  98. format(ver,63,"%s v%s",PLUGINNAME,VERSION)
  99. register_cvar("zp_jp_version",ver,FCVAR_SERVER)
  100.  
  101. p_JetpackCost = register_cvar("Jetpack_Money_Cost", "100") // Cost of Jetpack in CS Money
  102. p_BuyJetpack = register_cvar("Jetpack_buy", "1") // If you don't want to buy jetpack set it to 0
  103.  
  104. cvar_jetpack = register_cvar("zp_jetpack", "2")
  105.  
  106. cvar_jetpackSpeed=register_cvar("zp_jp_forward_speed","300.0")
  107. cvar_jetpackUpSpeed=register_cvar("zp_jp_up_speed","35.0")
  108. cvar_jetpackAcrate=register_cvar("zp_jp_accelerate","100.0")
  109.  
  110. cvar_RocketDelay=register_cvar("zp_jp_rocket_delay","12.0")
  111. cvar_RocketSpeed=register_cvar("zp_jp_rocket_speed","1500")
  112. cvar_RocketDmg=register_cvar("zp_jp_rocket_damage","1500")
  113. cvar_Dmg_range=register_cvar("zp_jp_damage_radius","350")
  114.  
  115. cvar_fly_max_engery = register_cvar("zp_jp_max_engery", "100")
  116. cvar_fly_engery = register_cvar("zp_jp_engery", "10")
  117. cvar_regain_energy = register_cvar("zp_jp_regain_energy", "3")
  118. cvar_cal_time = register_cvar("zp_jp_energy_cal", "1.0")
  119. cvar_oneround = register_cvar("zp_jp_oneround", "0")
  120.  
  121.  
  122. register_event("CurWeapon", "check_models", "be")
  123. register_event("DeathMsg", "player_die", "a")
  124. register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
  125.  
  126. register_forward(FM_StartFrame, "fm_startFrame")
  127. register_forward(FM_EmitSound, "emitsound")
  128. }
  129.  
  130. public plugin_precache() {
  131. precache_model("models/p_egon.mdl")
  132. precache_model("models/v_egon.mdl")
  133. precache_model("models/w_egon.mdl")
  134. precache_sound("jetpack.wav")
  135. precache_sound("jp_blow.wav")
  136.  
  137. precache_model(ROCKET_MDL)
  138. precache_sound(ROCKET_SOUND)
  139. precache_sound(getrocket)
  140.  
  141. explosion = precache_model("sprites/zerogxplode.spr")
  142. trail = precache_model("sprites/smoke.spr")
  143. flame = precache_model("sprites/xfireball3.spr")
  144. white = precache_model("sprites/white.spr")
  145. }
  146.  
  147. public client_putinserver(id) {
  148. fly[id] = false
  149. rocket[id] = false
  150. hasjet[id] = 0
  151. g_flyEnergy[id] = 0
  152. }
  153.  
  154. public client_disconnect(id) {
  155. fly[id] = false
  156. rocket[id] = false
  157. hasjet[id] = 0
  158. g_flyEnergy[id] = 0
  159. }
  160.  
  161. public event_round_start()
  162. {
  163. remove_jetpacks();
  164. if (get_pcvar_num(cvar_oneround) == 1) {
  165. for (new id; id <= 32; id++) hasjet[id] = 0, g_flyEnergy[id] = 0, fly[id] = false;
  166. }
  167. }
  168.  
  169. public fm_startFrame(){
  170.  
  171. gltime = get_gametime()
  172. static id
  173. for (id = 1; id <= 32; id++)
  174. {
  175. jp_forward(id)
  176. }
  177. }
  178.  
  179. public jp_forward(player) {
  180.  
  181. if (!is_user_alive(player))
  182. return FMRES_IGNORED
  183.  
  184. if (!hasjet[player])
  185. return FMRES_IGNORED
  186.  
  187. if(jp_cal[player] < gltime){
  188. jp_energy(player); jp_cal[player] = gltime + get_pcvar_float(cvar_cal_time)
  189. }
  190.  
  191. check_rocket(player)
  192.  
  193. new clip,ammo
  194. new wpnid = get_user_weapon(player,clip,ammo)
  195. if (wpnid == CSW_KNIFE){
  196. if(get_pcvar_num(cvar_jetpack) == 1){
  197. if(!(pev(player, pev_flags)&FL_ONGROUND) && pev(player,pev_button)&IN_ATTACK){
  198. if((g_flyEnergy[player] > get_pcvar_num(cvar_fly_max_engery)*0.3) && (g_flyEnergy[player] <= get_pcvar_num(cvar_fly_max_engery))){
  199. if(jp_soun[player] < gltime){
  200. emit_sound(player,CHAN_ITEM,"jetpack.wav",1.0,ATTN_NORM,1,PITCH_HIGH)
  201. jp_soun[player] = gltime + 1.0
  202. }
  203. }
  204. else if((g_flyEnergy[player] > 0) && (g_flyEnergy[player] < get_pcvar_num(cvar_fly_max_engery)*0.3)){
  205. if(jp_soun[player] < gltime){
  206. emit_sound(player,CHAN_ITEM,"jp_blow.wav",1.0,ATTN_NORM,1,PITCH_HIGH)
  207. jp_soun[player] = gltime + 1.0
  208. }
  209. }
  210. }
  211. human_fly(player)
  212. attack(player)
  213. }
  214. if((pev(player,pev_button)&IN_ATTACK2)){
  215. attack2(player)
  216. }
  217. }
  218. if((get_pcvar_num(cvar_jetpack) == 2 && !(pev(player, pev_flags)&FL_ONGROUND)) && (pev(player,pev_button)&IN_JUMP && pev(player,pev_button)&IN_DUCK)){
  219. if((g_flyEnergy[player] > get_pcvar_num(cvar_fly_max_engery)*0.3) && (g_flyEnergy[player] <= get_pcvar_num(cvar_fly_max_engery))){
  220. if(jp_soun[player] < gltime){
  221. emit_sound(player,CHAN_ITEM,"jetpack.wav",1.0,ATTN_NORM,1,PITCH_HIGH)
  222. jp_soun[player] = gltime + 1.0
  223. }
  224. }
  225. else if((g_flyEnergy[player] > 0) && (g_flyEnergy[player] < get_pcvar_num(cvar_fly_max_engery)*0.3)){
  226. if(jp_soun[player] < gltime){
  227. emit_sound(player,CHAN_ITEM,"jp_blow.wav",1.0,ATTN_NORM,1,PITCH_HIGH)
  228. jp_soun[player] = gltime + 1.0
  229. }
  230. }
  231. human_fly(player)
  232. attack(player)
  233. }
  234. // Icon Show system
  235. /*if (!is_user_alive(player) && zp_get_user_zombie(player) && zp_get_user_nemesis(player) && zp_get_user_survivor(player))
  236. Icon_Energy({0, 255, 0}, 0, player);
  237. //Icon_Energy({128, 128, 0}, 0, player);
  238. //Icon_Energy({255, 255, 0}, 0, player);
  239.  
  240. }*/
  241. if((g_flyEnergy[player] >= get_pcvar_num(cvar_fly_max_engery)*0.8) && (g_flyEnergy[player] <= get_pcvar_num(cvar_fly_max_engery))){
  242. Icon_Energy({0, 255, 0}, 1, player); // Green
  243. }
  244. else if((g_flyEnergy[player] >= get_pcvar_num(cvar_fly_max_engery)*0.5) && (g_flyEnergy[player] < get_pcvar_num(cvar_fly_max_engery)*0.8)){
  245. Icon_Energy({255, 255, 0}, 1, player); // yellow
  246. }
  247. else if((g_flyEnergy[player] >= get_pcvar_num(cvar_fly_max_engery)*0.3) && (g_flyEnergy[player] < get_pcvar_num(cvar_fly_max_engery)*0.5)){
  248. Icon_Energy({255, 215, 0}, 2, player);
  249. }
  250. else if((g_flyEnergy[player] > 0) && (g_flyEnergy[player] < get_pcvar_num(cvar_fly_max_engery)*0.3)){
  251. Icon_Energy({255, 0, 0}, 1, player);
  252. }
  253.  
  254. return FMRES_IGNORED
  255. }
  256.  
  257. public jp_energy(player) {
  258.  
  259. if (!(pev(player, pev_flags)&FL_ONGROUND) && pev(player,pev_button)&IN_ATTACK)
  260. {
  261. // Get our current velocity
  262. new clip,ammo
  263. new wpnid = get_user_weapon(player,clip,ammo)
  264. if (wpnid == CSW_KNIFE)
  265. {
  266. // flying
  267. if(g_flyEnergy[player] > get_pcvar_num(cvar_fly_max_engery)*0.09)
  268. g_flyEnergy[player] = g_flyEnergy[player] - get_pcvar_num(cvar_fly_engery); // Increase distance counter
  269. }
  270. }
  271. else if ((get_pcvar_num(cvar_jetpack) == 2 && !(pev(player, pev_flags)&FL_ONGROUND)) && (pev(player,pev_button)&IN_JUMP && pev(player,pev_button)&IN_DUCK))
  272. {
  273. if(g_flyEnergy[player] > get_pcvar_num(cvar_fly_max_engery)*0.09)
  274. g_flyEnergy[player] = g_flyEnergy[player] - get_pcvar_num(cvar_fly_engery); // Increase distance counter
  275. }
  276. // Walking/Runnig
  277. if (pev(player, pev_flags) & FL_ONGROUND)
  278. g_flyEnergy[player] = g_flyEnergy[player] + get_pcvar_num(cvar_regain_energy);// Decrease distance counter
  279. }
  280.  
  281. public attack(player) {
  282. //code snippa from TS_Jetpack 1.0 - Jetpack plugin for The Specialists.
  283. //http://forums.alliedmods.net/showthread.php?s=3ea22295e3e5a292fa82899676583326&t=55709&highlight=jetpack
  284. //By: Bad_Bud
  285. if(fly[player])
  286. {
  287. static Float:JetpackData[3]
  288. pev(player,pev_velocity,JetpackData)
  289.  
  290. new fOrigin[3],Float:Aim[3]
  291. VelocityByAim(player, 10, Aim)
  292. get_user_origin(player,fOrigin)
  293. fOrigin[0] -= floatround(Aim[0])
  294. fOrigin[1] -= floatround(Aim[1])
  295. fOrigin[2] -= floatround(Aim[2])
  296.  
  297.  
  298. if((pev(player,pev_button)&IN_FORWARD) && !(pev(player, pev_flags) & FL_ONGROUND))
  299. {
  300.  
  301. message_begin(MSG_ALL,SVC_TEMPENTITY)
  302. write_byte(17)
  303. write_coord(fOrigin[0])
  304. write_coord(fOrigin[1])
  305. write_coord(fOrigin[2])
  306. write_short(flame)
  307. write_byte(10)
  308. write_byte(255)
  309. message_end()
  310.  
  311. static Float:Speed
  312. Speed=floatsqroot(JetpackData[0]*JetpackData[0]+JetpackData[1]*JetpackData[1])
  313.  
  314. if(Speed!=0.0)//Makes players only lay down if their speed isn't 0; if they are thrusting forward.
  315. {
  316. set_pev(player,pev_gaitsequence,0)
  317. set_pev(player,pev_sequence,111)
  318. }
  319.  
  320. if(Speed<get_pcvar_float(cvar_jetpackSpeed))
  321. Speed+=get_pcvar_float(cvar_jetpackAcrate)
  322.  
  323. static Float:JetpackData2[3]
  324. pev(player,pev_angles,JetpackData2)
  325. JetpackData2[2]=0.0//Remove the Z value/
  326.  
  327. angle_vector(JetpackData2,ANGLEVECTOR_FORWARD,JetpackData2)
  328. JetpackData2[0]*=Speed
  329. JetpackData2[1]*=Speed
  330.  
  331. JetpackData[0]=JetpackData2[0]
  332. JetpackData[1]=JetpackData2[1]
  333. }
  334.  
  335. if(JetpackData[2]<get_pcvar_float(cvar_jetpackSpeed)&&JetpackData[2]>0.0)//Jetpacks get more power on the way down -- it helps landing.
  336. JetpackData[2]+=get_pcvar_float(cvar_jetpackUpSpeed)
  337. else if(JetpackData[2]<0.0)
  338. JetpackData[2]+=(get_pcvar_float(cvar_jetpackUpSpeed)*1.15)
  339.  
  340. set_pev(player,pev_velocity,JetpackData)
  341. }
  342. }
  343.  
  344. public attack2(player) {
  345.  
  346. if (rocket[player])
  347. {
  348.  
  349. new rocket = create_entity("info_target")
  350. if(rocket == 0) return PLUGIN_CONTINUE
  351.  
  352. entity_set_string(rocket, EV_SZ_classname, "zp_jp_rocket")
  353. entity_set_model(rocket, ROCKET_MDL)
  354.  
  355. entity_set_size(rocket, Float:{0.0, 0.0, 0.0}, Float:{0.0, 0.0, 0.0})
  356. entity_set_int(rocket, EV_INT_movetype, MOVETYPE_FLY)
  357. entity_set_int(rocket, EV_INT_solid, SOLID_BBOX)
  358.  
  359. new Float:vSrc[3]
  360. entity_get_vector(player, EV_VEC_origin, vSrc)
  361.  
  362. new Float:Aim[3],Float:origin[3]
  363. VelocityByAim(player, 64, Aim)
  364. entity_get_vector(player,EV_VEC_origin,origin)
  365.  
  366. vSrc[0] += Aim[0]
  367. vSrc[1] += Aim[1]
  368. entity_set_origin(rocket, vSrc)
  369.  
  370. new Float:velocity[3], Float:angles[3]
  371. VelocityByAim(player, get_pcvar_num(cvar_RocketSpeed), velocity)
  372.  
  373. entity_set_vector(rocket, EV_VEC_velocity, velocity)
  374. vector_to_angle(velocity, angles)
  375. entity_set_vector(rocket, EV_VEC_angles, angles)
  376. entity_set_edict(rocket,EV_ENT_owner,player)
  377. entity_set_float(rocket, EV_FL_takedamage, 1.0)
  378.  
  379. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  380. write_byte(TE_BEAMFOLLOW)
  381. write_short(rocket)
  382. write_short(trail)
  383. write_byte(25)
  384. write_byte(5)
  385. write_byte(224)
  386. write_byte(224)
  387. write_byte(255)
  388. write_byte(255)
  389. message_end()
  390.  
  391. emit_sound(rocket, CHAN_WEAPON, ROCKET_SOUND, 1.0, ATTN_NORM, 0, PITCH_NORM)
  392.  
  393. shot[player] = true
  394. last_Rocket[player] = gltime + get_pcvar_num(cvar_RocketDelay)
  395. }
  396. return PLUGIN_CONTINUE
  397. }
  398.  
  399. public check_models(id) {
  400.  
  401. if(hasjet[id]) {
  402. new clip,ammo
  403. new wpnid = get_user_weapon(id,clip,ammo)
  404.  
  405. if ( wpnid == CSW_KNIFE ) {
  406. switchmodel(id)
  407. }
  408. return PLUGIN_CONTINUE
  409. }
  410. return PLUGIN_CONTINUE
  411. }
  412.  
  413. public switchmodel(id) {
  414. entity_set_string(id,EV_SZ_viewmodel,"models/v_egon.mdl")
  415. entity_set_string(id,EV_SZ_weaponmodel,"models/p_egon.mdl")
  416. }
  417.  
  418. public remove_jetpacks() {
  419. new nextitem = find_ent_by_class(-1,"zp_jp_jetpack")
  420. while(nextitem) {
  421. remove_entity(nextitem)
  422. nextitem = find_ent_by_class(-1,"zp_jp_jetpack")
  423. }
  424. return PLUGIN_CONTINUE
  425. }
  426.  
  427. public emitsound(entity, channel, const sample[]) {
  428. if(is_user_alive(entity)) {
  429. new clip,ammo
  430. new weapon = get_user_weapon(entity,clip,ammo)
  431.  
  432. if(hasjet[entity] && weapon == CSW_KNIFE) {
  433. if(equal(sample,"weapons/knife_slash1.wav")) return FMRES_SUPERCEDE
  434. if(equal(sample,"weapons/knife_slash2.wav")) return FMRES_SUPERCEDE
  435.  
  436. if(equal(sample,"weapons/knife_deploy1.wav")) return FMRES_SUPERCEDE
  437. if(equal(sample,"weapons/knife_hitwall1.wav")) return FMRES_SUPERCEDE
  438.  
  439. if(equal(sample,"weapons/knife_hit1.wav")) return FMRES_SUPERCEDE
  440. if(equal(sample,"weapons/knife_hit2.wav")) return FMRES_SUPERCEDE
  441. if(equal(sample,"weapons/knife_hit3.wav")) return FMRES_SUPERCEDE
  442. if(equal(sample,"weapons/knife_hit4.wav")) return FMRES_SUPERCEDE
  443.  
  444. if(equal(sample,"weapons/knife_stab.wav")) return FMRES_SUPERCEDE
  445. }
  446. }
  447. return FMRES_IGNORED
  448. }
  449.  
  450. public Icon_Show(icon[], color[3], mode, player) {
  451.  
  452. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("StatusIcon"), {0,0,0}, player);
  453. write_byte(mode); // status (0=hide, 1=show, 2=flash)
  454. write_string(icon); // sprite name
  455. write_byte(color[0]); // red
  456. write_byte(color[1]); // green
  457. write_byte(color[2]); // blue
  458. message_end();
  459.  
  460. }
  461.  
  462. public Icon_Energy(color[3], mode, player) {
  463.  
  464. Icon_Show("item_longjump", color, mode, player)
  465. }
  466.  
  467. public human_fly(player) {
  468.  
  469. if (g_flyEnergy[player] <= get_pcvar_num(cvar_fly_max_engery)*0.1)
  470. {
  471. jp_off(player);
  472. }
  473. if (g_flyEnergy[player] > get_pcvar_num(cvar_fly_max_engery)*0.1)
  474. {
  475. jp_on(player);
  476. }
  477. }
  478.  
  479. public jp_on(player) {
  480.  
  481. fly[player] = true
  482.  
  483. }
  484.  
  485. public jp_off(player) {
  486.  
  487. fly[player] = false
  488.  
  489. }
  490.  
  491. public check_rocket(player) {
  492.  
  493. if (last_Rocket[player] > gltime)
  494. {
  495. rk_forbidden(player)
  496. rksound[player] = true
  497. }
  498. else
  499. {
  500.  
  501. if (shot[player])
  502. {
  503. rksound[player] = false
  504. shot[player] = false
  505. }
  506. rk_sound(player)
  507. rk_allow(player)
  508. }
  509.  
  510. }
  511.  
  512. public rk_allow(player) {
  513.  
  514. rocket[player] = true
  515. }
  516.  
  517. public rk_forbidden(player) {
  518.  
  519. rocket[player] = false
  520.  
  521. }
  522.  
  523. public rk_sound(player) {
  524.  
  525. if (!rksound[player])
  526. {
  527. engfunc(EngFunc_EmitSound, player, CHAN_WEAPON, getrocket, 1.0, ATTN_NORM, 0, PITCH_NORM)
  528. client_print(player, print_center, "[Bazooka] Reloaded & Ready !!!")
  529. rksound[player] = true
  530. }
  531. else if (rksound[player])
  532. {
  533.  
  534. }
  535.  
  536. }
  537.  
  538. public cmdHelp(id) {
  539.  
  540. new g_max = get_pcvar_num(cvar_fly_max_engery)
  541. new g_lost = get_pcvar_num(cvar_fly_engery)
  542. new g_back = get_pcvar_num(cvar_regain_energy)
  543. new g_dmg = get_pcvar_num(cvar_RocketDmg)
  544. new g_delay = get_pcvar_num(cvar_RocketDelay)
  545.  
  546. new jpmotd[2048], title[64], dpos = 0
  547. format(title,63,"[ZP] %s ver.%s",PLUGINNAME,VERSION)
  548.  
  549.  
  550. dpos += format(jpmotd[dpos],2047-dpos,"<html><head><style type=^"text/css^">pre{color:#FF0505;}body{background:#000000;margin-left:16px;margin-top:1px;}</style></head><pre><body>")
  551. dpos += format(jpmotd[dpos],2047-dpos,"<b>%s</b>^n^n",title)
  552.  
  553. dpos += format(jpmotd[dpos],2047-dpos,"How to use:^n")
  554. dpos += format(jpmotd[dpos],2047-dpos,"=============^n^n")
  555. if(get_pcvar_num(cvar_jetpack) == 1) {
  556. dpos += format(jpmotd[dpos],2047-dpos,"- choose/have Knive & use/hold ATTACK to fly^n")
  557. dpos += format(jpmotd[dpos],2047-dpos,"^n")
  558. dpos += format(jpmotd[dpos],2047-dpos,"- choose/have Knive(Bazooka) & use ATTACK2 to shoot a Rocket^n^n")
  559. }
  560. else if(get_pcvar_num(cvar_jetpack) == 2){
  561. dpos += format(jpmotd[dpos],2047-dpos,"- use/hold JUMP & DUCK to flyn")
  562. dpos += format(jpmotd[dpos],2047-dpos,"^n")
  563. dpos += format(jpmotd[dpos],2047-dpos,"choose/have Knive(Bazooka) & use ATTACK2 to shoot a Rocket^n^n")
  564. }
  565. dpos += format(jpmotd[dpos],2047-dpos,"INFO's^n")
  566. dpos += format(jpmotd[dpos],2047-dpos,"MAX Energy set to : <b>%i Units</b>^n^n", g_max)
  567. dpos += format(jpmotd[dpos],2047-dpos,"Jetpack need %i Units per 1 Sec. to work^n", g_lost)
  568. dpos += format(jpmotd[dpos],2047-dpos,"Energy regain %i Units per 1 Sec. (when you are on the ground)^n^n", g_back)
  569. dpos += format(jpmotd[dpos],2047-dpos,"MAX Rocket Dmg set to: <b>%i dmg</b>^n",g_dmg)
  570. dpos += format(jpmotd[dpos],2047-dpos,"New Rocket comes ervry <b>%i Sec.</b>^n^n", g_delay )
  571. dpos += format(jpmotd[dpos],2047-dpos,"-Have Fun!^n")
  572.  
  573.  
  574. show_motd(id,jpmotd,title)
  575. }
  576.  
  577. public player_die() {
  578.  
  579. new id = read_data(2)
  580. if(hasjet[id]) {
  581. drop_jetpack(id)
  582. hasjet[id] = 0
  583. rocket[id] = false
  584. g_flyEnergy[id] = 0
  585. }
  586.  
  587. return PLUGIN_CONTINUE
  588. }
  589.  
  590. public cmdDrop(id) {
  591.  
  592. if(hasjet[id]) {
  593. new clip,ammo
  594. new weapon = get_user_weapon(id,clip,ammo)
  595. if(weapon == CSW_KNIFE) {
  596. drop_jetpack(id)
  597. entity_set_string(id,EV_SZ_viewmodel,"models/v_knife.mdl")
  598. entity_set_string(id,EV_SZ_weaponmodel,"models/p_knife.mdl")
  599. return PLUGIN_HANDLED
  600. }
  601. }
  602. return PLUGIN_CONTINUE
  603. }
  604.  
  605. public drop_jetpack(player) {
  606. if(hasjet[player]) {
  607. new Float:Aim[3],Float:origin[3]
  608. VelocityByAim(player, 64, Aim)
  609. entity_get_vector(player,EV_VEC_origin,origin)
  610.  
  611. origin[0] += Aim[0]
  612. origin[1] += Aim[1]
  613.  
  614. new jetpack = create_entity("info_target")
  615. entity_set_string(jetpack,EV_SZ_classname,"zp_jp_jetpack")
  616. entity_set_model(jetpack,"models/w_egon.mdl")
  617.  
  618. entity_set_size(jetpack,Float:{-16.0,-16.0,-16.0},Float:{16.0,16.0,16.0})
  619. entity_set_int(jetpack,EV_INT_solid,1)
  620.  
  621. entity_set_int(jetpack,EV_INT_movetype,6)
  622.  
  623. entity_set_vector(jetpack,EV_VEC_origin,origin)
  624.  
  625. Icon_Energy({255, 255, 0}, 0, player)
  626. Icon_Energy({128, 128, 0}, 0, player )
  627. Icon_Energy({0, 255, 0}, 0, player)
  628.  
  629. hasjet[player] = 0
  630. rocket[player] = false
  631. }
  632. }
  633.  
  634. public pfn_touch(ptr, ptd) {
  635. if(is_valid_ent(ptr)) {
  636. new classname[32]
  637. entity_get_string(ptr,EV_SZ_classname,classname,31)
  638.  
  639. if(equal(classname, "zp_jp_jetpack")) {
  640. if(is_valid_ent(ptd)) {
  641. new id = ptd
  642. if(id > 0 && id < 34) {
  643. if(!hasjet[id] && is_user_alive(id)) {
  644.  
  645. hasjet[id] = 1
  646. g_flyEnergy[id] = get_pcvar_num(cvar_fly_max_engery)
  647. rocket[id] = true
  648. client_cmd(id,"spk items/gunpickup2.wav")
  649. engclient_cmd(id,"weapon_knife")
  650. switchmodel(id)
  651. remove_entity(ptr)
  652. }
  653. }
  654. }
  655. }else if(equal(classname, "zp_jp_rocket")) {
  656. new Float:fOrigin[3]
  657. new iOrigin[3]
  658. entity_get_vector(ptr, EV_VEC_origin, fOrigin)
  659. FVecIVec(fOrigin,iOrigin)
  660. jp_radius_damage(ptr)
  661.  
  662. message_begin(MSG_BROADCAST,SVC_TEMPENTITY,iOrigin)
  663. write_byte(TE_EXPLOSION)
  664. write_coord(iOrigin[0])
  665. write_coord(iOrigin[1])
  666. write_coord(iOrigin[2])
  667. write_short(explosion)
  668. write_byte(30)
  669. write_byte(15)
  670. write_byte(0)
  671. message_end()
  672.  
  673. message_begin(MSG_ALL,SVC_TEMPENTITY,iOrigin)
  674. write_byte(TE_BEAMCYLINDER)
  675. write_coord(iOrigin[0])
  676. write_coord(iOrigin[1])
  677. write_coord(iOrigin[2])
  678. write_coord(iOrigin[0])
  679. write_coord(iOrigin[1])
  680. write_coord(iOrigin[2]+200)
  681. write_short(white)
  682. write_byte(0)
  683. write_byte(1)
  684. write_byte(6)
  685. write_byte(8)
  686. write_byte(1)
  687. write_byte(255)
  688. write_byte(255)
  689. write_byte(192)
  690. write_byte(128)
  691. write_byte(5)
  692. message_end()
  693.  
  694. if(is_valid_ent(ptd)) {
  695. new classname2[32]
  696. entity_get_string(ptd,EV_SZ_classname,classname2,31)
  697.  
  698. if(equal(classname2,"func_breakable"))
  699. force_use(ptr,ptd)
  700. }
  701.  
  702. remove_entity(ptr)
  703. }
  704. }
  705. return PLUGIN_CONTINUE
  706. }
  707.  
  708. public zp_user_infected_pre(player, infector){
  709.  
  710. Icon_Energy({0, 255, 0}, 0, player);
  711. cmdDrop(player);
  712. hasjet[player] = 0;
  713. g_flyEnergy[player] = 0;
  714. rocket[player] = false;
  715. }
  716.  
  717. public cmdBuy(player){
  718. if (get_pcvar_num(p_BuyJetpack) == 1)
  719. cs_get_user_money(player + get_pcvar_num(p_JetpackCost))
  720. new clip,ammo
  721. new weapon = get_user_weapon(player,clip,ammo)
  722. client_print(player, print_chat, "[ZP] say /jphelp for Display the help page")
  723. hasjet[player] = 1
  724. g_flyEnergy[player] = get_pcvar_num(cvar_fly_max_engery)
  725. rocket[player] = true
  726. client_cmd(player,"spk items/gunpickup2.wav")
  727. if(weapon == CSW_KNIFE){
  728. switchmodel(player)
  729. }
  730. else
  731. {
  732. engclient_cmd(player,"weapon_knife"),switchmodel(player)
  733. }
  734. }
  735.  
  736. stock jp_radius_damage(entity) {
  737. new id = entity_get_edict(entity,EV_ENT_owner)
  738. for(new i = 1; i < 33; i++) {
  739. if(is_user_alive(i)) {
  740. new dist = floatround(entity_range(entity,i))
  741.  
  742. if(dist <= get_pcvar_num(cvar_Dmg_range)) {
  743. new hp = get_user_health(i)
  744. new Float:damage = get_pcvar_float(cvar_RocketDmg)-(get_pcvar_float(cvar_RocketDmg)/get_pcvar_float(cvar_Dmg_range))*float(dist)
  745.  
  746. new Origin[3]
  747. get_user_origin(i,Origin)
  748.  
  749. if(get_user_team(id) != get_user_team(i)) {
  750. if(hp > damage)
  751. jp_take_damage(i,floatround(damage),Origin,DMG_BLAST)
  752. else
  753. log_kill(id,i,"Jetpack Rocket",0)
  754. }
  755. }
  756. }
  757. }
  758. }
  759.  
  760. stock log_kill(killer, victim, weapon[], headshot)
  761. {
  762. // code from MeRcyLeZZ
  763. set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET)
  764. ExecuteHamB(Ham_Killed, victim, killer, 2) // set last param to 2 if you want victim to gib
  765. set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT)
  766.  
  767.  
  768. message_begin(MSG_BROADCAST, get_user_msgid("DeathMsg"))
  769. write_byte(killer)
  770. write_byte(victim)
  771. write_byte(headshot)
  772. write_string(weapon)
  773. message_end()
  774. //
  775.  
  776. if(get_user_team(killer)!=get_user_team(victim))
  777. set_user_frags(killer,get_user_frags(killer) +1)
  778. if(get_user_team(killer)==get_user_team(victim))
  779. set_user_frags(killer,get_user_frags(killer) -1)
  780.  
  781. new kname[32], vname[32], kauthid[32], vauthid[32], kteam[10], vteam[10]
  782.  
  783. get_user_name(killer, kname, 31)
  784. get_user_team(killer, kteam, 9)
  785. get_user_authid(killer, kauthid, 31)
  786.  
  787. get_user_name(victim, vname, 31)
  788. get_user_team(victim, vteam, 9)
  789. get_user_authid(victim, vauthid, 31)
  790.  
  791. log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^"",
  792. kname, get_user_userid(killer), kauthid, kteam,
  793. vname, get_user_userid(victim), vauthid, vteam, weapon)
  794.  
  795. return PLUGIN_CONTINUE;
  796. }
  797.  
  798. stock jp_take_damage(victim,damage,origin[3],bit) {
  799. message_begin(MSG_ONE,get_user_msgid("Damage"),{0,0,0},victim)
  800. write_byte(21)
  801. write_byte(20)
  802. write_long(bit)
  803. write_coord(origin[0])
  804. write_coord(origin[1])
  805. write_coord(origin[2])
  806. message_end()
  807.  
  808. set_user_health(victim,get_user_health(victim)-damage)
  809. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement