hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.04.27. 12:11



Jelenlévő felhasználók

Jelenleg 535 felhasználó van jelen :: 1 regisztrált, 0 rejtett és 534 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: Google [Bot] az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 5 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Jetpack no hang no csík :D
HozzászólásElküldve: 2012.12.28. 21:56 
Offline
Nagyúr
Avatar

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

_________________
Kép
Kép
Kép


A hozzászólást 1 alkalommal szerkesztették, utoljára Vath 2013.01.01. 21:09-kor.

Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Jetpack no hang no csík :D
HozzászólásElküldve: 2013.01.01. 20:42 
Offline
Veterán
Avatar

Csatlakozott: 2012.09.01. 22:19
Hozzászólások: 1697
Megköszönt másnak: 26 alkalommal
Megköszönték neki: 302 alkalommal
SMA-nélkül senki nem fogja kivenni neked.

_________________
Valami új kezdete...
Kép
Egyedi pluginok készítése pénzért (Banki átutalás, PayPal) -> Privát üzenet


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Jetpack no hang no csík :D
HozzászólásElküldve: 2013.01.01. 21:09 
Offline
Nagyúr
Avatar

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

_________________
Kép
Kép
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Jetpack no hang no csík :D
HozzászólásElküldve: 2013.01.02. 11:17 
Offline
Veterán
Avatar

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

_________________
Valami új kezdete...
Kép
Egyedi pluginok készítése pénzért (Banki átutalás, PayPal) -> Privát üzenet

Ők köszönték meg crazy` nek ezt a hozzászólást: Vath (2013.01.03. 09:55)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Jetpack no hang no csík :D
HozzászólásElküldve: 2013.01.03. 09:55 
Offline
Nagyúr
Avatar

Csatlakozott: 2011.09.07. 18:41
Hozzászólások: 642
Megköszönt másnak: 15 alkalommal
Megköszönték neki: 6 alkalommal
Köszöntem szépen! :D

_________________
Kép
Kép
Kép


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 5 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 23 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole