hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.06.06. 19:48



Jelenlévő felhasználók

Jelenleg 195 felhasználó van jelen :: 1 regisztrált, 0 rejtett és 194 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: [ZP] Extra cucc: Jetpack Sprite kivétel
HozzászólásElküldve: 2013.02.24. 14:36 
Offline
Minden6ó
Avatar

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

_________________
<<eb@>>Team Website - Közösség
17Buddies - Általam készített pályák.
GameBanana - Általam készített pályák/vágott hangok.

Kép
Kép


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

_________________
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ásElküldve: 2013.02.24. 15:43 
Offline
Minden6ó
Avatar

Csatlakozott: 2011.01.19. 12:14
Hozzászólások: 4292
Megköszönt másnak: 219 alkalommal
Megköszönték neki: 287 alkalommal
hlmod.hu/viewtopic.php?f=9&t=7274&p=57658&hilit=+Jetpack#p57658 úgyan az. De teszteltem és nem volt bene az extra cucok közt nem volt bene.

_________________
<<eb@>>Team Website - Közösség
17Buddies - Általam készített pályák.
GameBanana - Általam készített pályák/vágott hangok.

Kép
Kép


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2013.02.24. 17:07 
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
pedig több dolgot kivettem mint ott, szal nem ugyanaz.
javítva:
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <fun>
  3. #include <engine>
  4. #include <fakemeta>
  5. #include <hamsandwich>
  6. #include <zombieplague>
  7.  
  8. #define PLUGINNAME "Extra Item Jetpack+Bazooka"
  9. #define VERSION "3.2"
  10. #define AUTHOR "B!gBud"
  11.  
  12. #define ACCESS_LEVEL ADMIN_LEVEL_A
  13. #define VOTE_ACCESS ADMIN_CFG
  14.  
  15. #define TE_EXPLOSION 3
  16. #define TE_BEAMFOLLOW 22
  17. #define TE_BEAMCYLINDER 21
  18.  
  19. #define JETPACK_COST 100 // set how may ammopacks the Jatpack+Rocket cost
  20.  
  21. new ROCKET_MDL[64] = "models/rpgrocket.mdl"
  22. new ROCKET_SOUND[64] = "weapons/rocketfire1.wav"
  23. new getrocket[64] = "items/9mmclip2.wav"
  24.  
  25. new bool:fly[33] = false
  26. new bool:rocket[33] = false
  27. new bool:rksound[33] = false
  28. new bool:shot[33] = false
  29.  
  30. new Float:gltime = 0.0
  31. new Float:last_Rocket[33] = 0.0
  32. new Float:jp_cal[33] = 0.0
  33. new Float:jp_soun[33] = 0.0
  34. new flame, explosion, trail, white
  35. new g_flyEnergy[33], hasjet[33]
  36. 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
  37.  
  38.  
  39. public plugin_init() {
  40. register_plugin(PLUGINNAME, VERSION, AUTHOR)
  41.  
  42. g_item_jetpack = zp_register_extra_item("\rJetpack+Bazooka\y", JETPACK_COST, ZP_TEAM_HUMAN)
  43.  
  44.  
  45. new ver[64]
  46. format(ver,63,"%s v%s",PLUGINNAME,VERSION)
  47. register_cvar("zp_jp_version",ver,FCVAR_SERVER)
  48.  
  49. cvar_jetpack = register_cvar("zp_jetpack", "2")
  50.  
  51. cvar_jetpackSpeed=register_cvar("zp_jp_forward_speed","300.0")
  52. cvar_jetpackUpSpeed=register_cvar("zp_jp_up_speed","35.0")
  53. cvar_jetpackAcrate=register_cvar("zp_jp_accelerate","100.0")
  54.  
  55. cvar_RocketDelay=register_cvar("zp_jp_rocket_delay","12.0")
  56. cvar_RocketSpeed=register_cvar("zp_jp_rocket_speed","1500")
  57. cvar_RocketDmg=register_cvar("zp_jp_rocket_damage","1500")
  58. cvar_Dmg_range=register_cvar("zp_jp_damage_radius","350")
  59.  
  60. cvar_fly_max_engery = register_cvar("zp_jp_max_engery", "100")
  61. cvar_fly_engery = register_cvar("zp_jp_engery", "10")
  62. cvar_regain_energy = register_cvar("zp_jp_regain_energy", "3")
  63. cvar_cal_time = register_cvar("zp_jp_energy_cal", "1.0")
  64. cvar_oneround = register_cvar("zp_jp_oneround", "0")
  65.  
  66.  
  67. register_event("CurWeapon", "check_models", "be")
  68. register_event("DeathMsg", "player_die", "a")
  69. register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
  70.  
  71. register_forward(FM_StartFrame, "fm_startFrame")
  72. register_forward(FM_EmitSound, "emitsound")
  73. }
  74.  
  75. public plugin_precache() {
  76. precache_model("models/p_egon.mdl")
  77. precache_model("models/v_egon.mdl")
  78. precache_model("models/w_egon.mdl")
  79. precache_sound("jetpack.wav")
  80. precache_sound("jp_blow.wav")
  81.  
  82. precache_model(ROCKET_MDL)
  83. precache_sound(ROCKET_SOUND)
  84. precache_sound(getrocket)
  85.  
  86. explosion = precache_model("sprites/zerogxplode.spr")
  87. white = precache_model("sprites/white.spr")
  88. }
  89.  
  90. public client_putinserver(id) {
  91. fly[id] = false
  92. rocket[id] = false
  93. hasjet[id] = 0
  94. g_flyEnergy[id] = 0
  95. }
  96.  
  97. public client_disconnect(id) {
  98. fly[id] = false
  99. rocket[id] = false
  100. hasjet[id] = 0
  101. g_flyEnergy[id] = 0
  102. }
  103.  
  104. public event_round_start()
  105. {
  106. remove_jetpacks();
  107. if (get_pcvar_num(cvar_oneround) == 1) {
  108. for (new id; id <= 32; id++) hasjet[id] = 0, g_flyEnergy[id] = 0, fly[id] = false;
  109. }
  110. }
  111.  
  112. public fm_startFrame(){
  113.  
  114. gltime = get_gametime()
  115. static id
  116. for (id = 1; id <= 32; id++)
  117. {
  118. jp_forward(id)
  119. }
  120. }
  121.  
  122. public jp_forward(player) {
  123.  
  124. if (!is_user_alive(player) || (zp_get_user_zombie(player) || zp_get_user_nemesis(player) || zp_get_user_survivor(player)))
  125. return FMRES_IGNORED
  126.  
  127. if (!hasjet[player])
  128. return FMRES_IGNORED
  129.  
  130. if(jp_cal[player] < gltime){
  131. jp_energy(player); jp_cal[player] = gltime + get_pcvar_float(cvar_cal_time)
  132. }
  133.  
  134. check_rocket(player)
  135.  
  136. new clip,ammo
  137. new wpnid = get_user_weapon(player,clip,ammo)
  138. if (wpnid == CSW_KNIFE){
  139. if(get_pcvar_num(cvar_jetpack) == 1){
  140. if(!(pev(player, pev_flags)&FL_ONGROUND) && pev(player,pev_button)&IN_ATTACK){
  141. if((g_flyEnergy[player] > get_pcvar_num(cvar_fly_max_engery)*0.3) && (g_flyEnergy[player] <= get_pcvar_num(cvar_fly_max_engery))){
  142. if(jp_soun[player] < gltime){
  143. emit_sound(player,CHAN_ITEM,"jetpack.wav",1.0,ATTN_NORM,1,PITCH_HIGH)
  144. jp_soun[player] = gltime + 1.0
  145. }
  146. }
  147. else if((g_flyEnergy[player] > 0) && (g_flyEnergy[player] < get_pcvar_num(cvar_fly_max_engery)*0.3)){
  148. if(jp_soun[player] < gltime){
  149. emit_sound(player,CHAN_ITEM,"jp_blow.wav",1.0,ATTN_NORM,1,PITCH_HIGH)
  150. jp_soun[player] = gltime + 1.0
  151. }
  152. }
  153. }
  154. human_fly(player)
  155. attack(player)
  156. }
  157. if((pev(player,pev_button)&IN_ATTACK2)){
  158. attack2(player)
  159. }
  160. }
  161. 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) && get_user_weapon(player) == CSW_KNIFE)
  162. {
  163. if((g_flyEnergy[player] > get_pcvar_num(cvar_fly_max_engery)*0.3) && (g_flyEnergy[player] <= get_pcvar_num(cvar_fly_max_engery)))
  164. {
  165. if(jp_soun[player] < gltime)
  166. {
  167. if(get_user_weapon(player) == CSW_KNIFE)
  168. {
  169. emit_sound(player,CHAN_ITEM,"jetpack.wav",1.0,ATTN_NORM,1,PITCH_HIGH)
  170. jp_soun[player] = gltime + 1.0
  171. }
  172. }
  173. }
  174. else if((g_flyEnergy[player] > 0) && (g_flyEnergy[player] < get_pcvar_num(cvar_fly_max_engery)*0.3))
  175. {
  176. if(jp_soun[player] < gltime)
  177. {
  178. if(get_user_weapon(player) == CSW_KNIFE)
  179. {
  180. emit_sound(player,CHAN_ITEM,"jp_blow.wav",1.0,ATTN_NORM,1,PITCH_HIGH)
  181. jp_soun[player] = gltime + 1.0
  182. }
  183. }
  184. }
  185. human_fly(player)
  186. attack(player)
  187. }
  188. if((g_flyEnergy[player] >= get_pcvar_num(cvar_fly_max_engery)*0.8) && (g_flyEnergy[player] <= get_pcvar_num(cvar_fly_max_engery)))
  189. {
  190. Icon_Energy({0, 255, 0}, 1, player); // Green
  191. }
  192. 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))
  193. {
  194. Icon_Energy({255, 255, 0}, 1, player); // yellow
  195. }
  196. 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))
  197. {
  198. Icon_Energy({255, 215, 0}, 2, player);
  199. }
  200. else if((g_flyEnergy[player] > 0) && (g_flyEnergy[player] < get_pcvar_num(cvar_fly_max_engery)*0.3))
  201. {
  202. Icon_Energy({255, 0, 0}, 1, player);
  203. }
  204. return FMRES_IGNORED
  205. }
  206.  
  207. public jp_energy(player) {
  208.  
  209. if (!(pev(player, pev_flags)&FL_ONGROUND) && pev(player,pev_button)&IN_ATTACK)
  210. {
  211. // Get our current velocity
  212. new clip,ammo
  213. new wpnid = get_user_weapon(player,clip,ammo)
  214. if (wpnid == CSW_KNIFE)
  215. {
  216. // flying
  217. if(g_flyEnergy[player] > get_pcvar_num(cvar_fly_max_engery)*0.09)
  218. g_flyEnergy[player] = g_flyEnergy[player] - get_pcvar_num(cvar_fly_engery); // Increase distance counter
  219. }
  220. }
  221. 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))
  222. {
  223. if(g_flyEnergy[player] > get_pcvar_num(cvar_fly_max_engery)*0.09)
  224. g_flyEnergy[player] = g_flyEnergy[player] - get_pcvar_num(cvar_fly_engery); // Increase distance counter
  225. }
  226. // Walking/Runnig
  227. if (pev(player, pev_flags) & FL_ONGROUND)
  228. g_flyEnergy[player] = g_flyEnergy[player] + get_pcvar_num(cvar_regain_energy);// Decrease distance counter
  229. }
  230.  
  231. public attack(player) {
  232. //code snippa from TS_Jetpack 1.0 - Jetpack plugin for The Specialists.
  233. //http://forums.alliedmods.net/showthread.php?s=3ea22295e3e5a292fa82899676583326&t=55709&highlight=jetpack
  234. //By: Bad_Bud
  235. if(fly[player])
  236. {
  237. static Float:JetpackData[3]
  238. pev(player,pev_velocity,JetpackData)
  239.  
  240. new fOrigin[3],Float:Aim[3]
  241. VelocityByAim(player, 10, Aim)
  242. get_user_origin(player,fOrigin)
  243. fOrigin[0] -= floatround(Aim[0])
  244. fOrigin[1] -= floatround(Aim[1])
  245. fOrigin[2] -= floatround(Aim[2])
  246.  
  247.  
  248. if((pev(player,pev_button)&IN_FORWARD) && !(pev(player, pev_flags) & FL_ONGROUND))
  249. {
  250.  
  251. message_begin(MSG_ALL,SVC_TEMPENTITY)
  252. write_byte(17)
  253. write_coord(fOrigin[0])
  254. write_coord(fOrigin[1])
  255. write_coord(fOrigin[2])
  256. write_short(flame)
  257. write_byte(10)
  258. write_byte(255)
  259. message_end()
  260.  
  261. static Float:Speed
  262. Speed=floatsqroot(JetpackData[0]*JetpackData[0]+JetpackData[1]*JetpackData[1])
  263.  
  264. if(Speed!=0.0)//Makes players only lay down if their speed isn't 0; if they are thrusting forward.
  265. {
  266. set_pev(player,pev_gaitsequence,0)
  267. set_pev(player,pev_sequence,111)
  268. }
  269.  
  270. if(Speed<get_pcvar_float(cvar_jetpackSpeed))
  271. Speed+=get_pcvar_float(cvar_jetpackAcrate)
  272.  
  273. static Float:JetpackData2[3]
  274. pev(player,pev_angles,JetpackData2)
  275. JetpackData2[2]=0.0//Remove the Z value/
  276.  
  277. angle_vector(JetpackData2,ANGLEVECTOR_FORWARD,JetpackData2)
  278. JetpackData2[0]*=Speed
  279. JetpackData2[1]*=Speed
  280.  
  281. JetpackData[0]=JetpackData2[0]
  282. JetpackData[1]=JetpackData2[1]
  283. }
  284.  
  285. if(JetpackData[2]<get_pcvar_float(cvar_jetpackSpeed)&&JetpackData[2]>0.0)//Jetpacks get more power on the way down -- it helps landing.
  286. JetpackData[2]+=get_pcvar_float(cvar_jetpackUpSpeed)
  287. else if(JetpackData[2]<0.0)
  288. JetpackData[2]+=(get_pcvar_float(cvar_jetpackUpSpeed)*1.15)
  289.  
  290. set_pev(player,pev_velocity,JetpackData)
  291. }
  292. }
  293.  
  294. public attack2(player) {
  295.  
  296. if (rocket[player])
  297. {
  298.  
  299. new rocket = create_entity("info_target")
  300. if(rocket == 0) return PLUGIN_CONTINUE
  301.  
  302. entity_set_string(rocket, EV_SZ_classname, "zp_jp_rocket")
  303. entity_set_model(rocket, ROCKET_MDL)
  304.  
  305. entity_set_size(rocket, Float:{0.0, 0.0, 0.0}, Float:{0.0, 0.0, 0.0})
  306. entity_set_int(rocket, EV_INT_movetype, MOVETYPE_FLY)
  307. entity_set_int(rocket, EV_INT_solid, SOLID_BBOX)
  308.  
  309. new Float:vSrc[3]
  310. entity_get_vector(player, EV_VEC_origin, vSrc)
  311.  
  312. new Float:Aim[3],Float:origin[3]
  313. VelocityByAim(player, 64, Aim)
  314. entity_get_vector(player,EV_VEC_origin,origin)
  315.  
  316. vSrc[0] += Aim[0]
  317. vSrc[1] += Aim[1]
  318. entity_set_origin(rocket, vSrc)
  319.  
  320. new Float:velocity[3], Float:angles[3]
  321. VelocityByAim(player, get_pcvar_num(cvar_RocketSpeed), velocity)
  322.  
  323. entity_set_vector(rocket, EV_VEC_velocity, velocity)
  324. vector_to_angle(velocity, angles)
  325. entity_set_vector(rocket, EV_VEC_angles, angles)
  326. entity_set_edict(rocket,EV_ENT_owner,player)
  327. entity_set_float(rocket, EV_FL_takedamage, 1.0)
  328.  
  329. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  330. write_byte(TE_BEAMFOLLOW)
  331. write_short(rocket)
  332. write_short(trail)
  333. write_byte(25)
  334. write_byte(5)
  335. write_byte(224)
  336. write_byte(224)
  337. write_byte(255)
  338. write_byte(255)
  339. message_end()
  340.  
  341. emit_sound(rocket, CHAN_WEAPON, ROCKET_SOUND, 1.0, ATTN_NORM, 0, PITCH_NORM)
  342.  
  343. shot[player] = true
  344. last_Rocket[player] = gltime + get_pcvar_num(cvar_RocketDelay)
  345. }
  346. return PLUGIN_CONTINUE
  347. }
  348.  
  349. public check_models(id) {
  350.  
  351. if (zp_get_user_zombie(id) || zp_get_user_nemesis(id) || zp_get_user_survivor(id))
  352. return FMRES_IGNORED
  353.  
  354. if(hasjet[id]) {
  355. new clip,ammo
  356. new wpnid = get_user_weapon(id,clip,ammo)
  357.  
  358. if ( wpnid == CSW_KNIFE ) {
  359. switchmodel(id)
  360. }
  361. return PLUGIN_CONTINUE
  362. }
  363. return PLUGIN_CONTINUE
  364. }
  365.  
  366. public switchmodel(id) {
  367. entity_set_string(id,EV_SZ_viewmodel,"models/v_egon.mdl")
  368. entity_set_string(id,EV_SZ_weaponmodel,"models/p_egon.mdl")
  369. }
  370.  
  371. public remove_jetpacks() {
  372. new nextitem = find_ent_by_class(-1,"zp_jp_jetpack")
  373. while(nextitem) {
  374. remove_entity(nextitem)
  375. nextitem = find_ent_by_class(-1,"zp_jp_jetpack")
  376. }
  377. return PLUGIN_CONTINUE
  378. }
  379.  
  380. public emitsound(entity, channel, const sample[]) {
  381. if(is_user_alive(entity)) {
  382. new clip,ammo
  383. new weapon = get_user_weapon(entity,clip,ammo)
  384.  
  385. if(hasjet[entity] && weapon == CSW_KNIFE) {
  386. if(equal(sample,"weapons/knife_slash1.wav")) return FMRES_SUPERCEDE
  387. if(equal(sample,"weapons/knife_slash2.wav")) return FMRES_SUPERCEDE
  388.  
  389. if(equal(sample,"weapons/knife_deploy1.wav")) return FMRES_SUPERCEDE
  390. if(equal(sample,"weapons/knife_hitwall1.wav")) return FMRES_SUPERCEDE
  391.  
  392. if(equal(sample,"weapons/knife_hit1.wav")) return FMRES_SUPERCEDE
  393. if(equal(sample,"weapons/knife_hit2.wav")) return FMRES_SUPERCEDE
  394. if(equal(sample,"weapons/knife_hit3.wav")) return FMRES_SUPERCEDE
  395. if(equal(sample,"weapons/knife_hit4.wav")) return FMRES_SUPERCEDE
  396.  
  397. if(equal(sample,"weapons/knife_stab.wav")) return FMRES_SUPERCEDE
  398. }
  399. }
  400. return FMRES_IGNORED
  401. }
  402.  
  403. public Icon_Show(icon[], color[3], mode, player)
  404. {
  405. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("StatusIcon"), {0,0,0}, player);
  406. write_byte(mode); // status (0=hide, 1=show, 2=flash)
  407. write_string(icon); // sprite name
  408. write_byte(color[0]); // red
  409. write_byte(color[1]); // green
  410. write_byte(color[2]); // blue
  411. message_end();
  412. }
  413.  
  414. public Icon_Energy(color[3], mode, player) {
  415.  
  416. Icon_Show("item_longjump", color, mode, player)
  417. }
  418.  
  419. public human_fly(player) {
  420.  
  421. if (g_flyEnergy[player] <= get_pcvar_num(cvar_fly_max_engery)*0.1)
  422. {
  423. jp_off(player);
  424. }
  425. if (g_flyEnergy[player] > get_pcvar_num(cvar_fly_max_engery)*0.1)
  426. {
  427. jp_on(player);
  428. }
  429. }
  430.  
  431. public jp_on(player) {
  432.  
  433. fly[player] = true
  434.  
  435. }
  436.  
  437. public jp_off(player) {
  438.  
  439. fly[player] = false
  440.  
  441. }
  442.  
  443. public check_rocket(player) {
  444.  
  445. if (last_Rocket[player] > gltime)
  446. {
  447. rk_forbidden(player)
  448. rksound[player] = true
  449. }
  450. else
  451. {
  452.  
  453. if (shot[player])
  454. {
  455. rksound[player] = false
  456. shot[player] = false
  457. }
  458. rk_sound(player)
  459. rk_allow(player)
  460. }
  461.  
  462. }
  463.  
  464. public rk_allow(player) {
  465.  
  466. rocket[player] = true
  467. }
  468.  
  469. public rk_forbidden(player) {
  470.  
  471. rocket[player] = false
  472.  
  473. }
  474.  
  475. public rk_sound(player) {
  476.  
  477. if (!rksound[player])
  478. {
  479. engfunc(EngFunc_EmitSound, player, CHAN_WEAPON, getrocket, 1.0, ATTN_NORM, 0, PITCH_NORM)
  480. client_print(player, print_center, "* Bazooka UJRATOLTVE *")
  481. rksound[player] = true
  482. }
  483. else if (rksound[player])
  484. {
  485.  
  486. }
  487.  
  488. }
  489.  
  490. public player_die() {
  491.  
  492. new id = read_data(2)
  493. if(hasjet[id])
  494. {
  495. hasjet[id] = 0
  496. rocket[id] = false
  497. g_flyEnergy[id] = 0
  498. }
  499.  
  500. return PLUGIN_CONTINUE
  501. }
  502.  
  503. public pfn_touch(ptr, ptd)
  504. {
  505. if(is_valid_ent(ptr))
  506. {
  507. new classname[32]
  508. entity_get_string(ptr,EV_SZ_classname,classname,31)
  509.  
  510. if(equal(classname, "zp_jp_rocket"))
  511. {
  512. new Float:fOrigin[3]
  513. new iOrigin[3]
  514. entity_get_vector(ptr, EV_VEC_origin, fOrigin)
  515. FVecIVec(fOrigin,iOrigin)
  516. jp_radius_damage(ptr)
  517.  
  518. message_begin(MSG_BROADCAST,SVC_TEMPENTITY,iOrigin)
  519. write_byte(TE_EXPLOSION)
  520. write_coord(iOrigin[0])
  521. write_coord(iOrigin[1])
  522. write_coord(iOrigin[2])
  523. write_short(explosion)
  524. write_byte(30)
  525. write_byte(15)
  526. write_byte(0)
  527. message_end()
  528.  
  529. message_begin(MSG_ALL,SVC_TEMPENTITY,iOrigin)
  530. write_byte(TE_BEAMCYLINDER)
  531. write_coord(iOrigin[0])
  532. write_coord(iOrigin[1])
  533. write_coord(iOrigin[2])
  534. write_coord(iOrigin[0])
  535. write_coord(iOrigin[1])
  536. write_coord(iOrigin[2]+200)
  537. write_short(white)
  538. write_byte(0)
  539. write_byte(1)
  540. write_byte(6)
  541. write_byte(8)
  542. write_byte(1)
  543. write_byte(255)
  544. write_byte(255)
  545. write_byte(192)
  546. write_byte(128)
  547. write_byte(5)
  548. message_end()
  549.  
  550. if(is_valid_ent(ptd))
  551. {
  552. new classname2[32]
  553. entity_get_string(ptd,EV_SZ_classname,classname2,31)
  554.  
  555. if(equal(classname2,"func_breakable"))
  556. force_use(ptr,ptd)
  557. }
  558.  
  559. remove_entity(ptr)
  560. }
  561. }
  562. return PLUGIN_CONTINUE
  563. }
  564.  
  565. public zp_user_infected_pre(player, infector){
  566.  
  567. Icon_Energy({0, 255, 0}, 0, player);
  568. hasjet[player] = 0;
  569. g_flyEnergy[player] = 0;
  570. rocket[player] = false;
  571. }
  572.  
  573. public zp_extra_item_selected(player, itemid){
  574.  
  575.  
  576. new clip,ammo
  577. new weapon = get_user_weapon(player,clip,ammo)
  578.  
  579. if (itemid == g_item_jetpack)
  580. {
  581. hasjet[player] = 1
  582. g_flyEnergy[player] = get_pcvar_num(cvar_fly_max_engery)
  583. rocket[player] = true
  584. client_cmd(player,"spk items/gunpickup2.wav")
  585.  
  586. if(weapon == CSW_KNIFE)
  587. {
  588. switchmodel(player)
  589. }
  590. else
  591. {
  592. engclient_cmd(player,"weapon_knife"),switchmodel(player)
  593. }
  594. }
  595. }
  596.  
  597. stock jp_radius_damage(entity) {
  598. new id = entity_get_edict(entity,EV_ENT_owner)
  599. for(new i = 1; i < 33; i++) {
  600. if(is_user_alive(i)) {
  601. new dist = floatround(entity_range(entity,i))
  602.  
  603. if(dist <= get_pcvar_num(cvar_Dmg_range)) {
  604. new hp = get_user_health(i)
  605. new Float:damage = get_pcvar_float(cvar_RocketDmg)-(get_pcvar_float(cvar_RocketDmg)/get_pcvar_float(cvar_Dmg_range))*float(dist)
  606.  
  607. new Origin[3]
  608. get_user_origin(i,Origin)
  609.  
  610. if(zp_get_user_zombie(id) != zp_get_user_zombie(i)) {
  611. if(hp > damage)
  612. jp_take_damage(i,floatround(damage),Origin,DMG_BLAST)
  613. else
  614. log_kill(id,i,"Jetpack Rocket",0)
  615. }
  616. }
  617. }
  618. }
  619. }
  620.  
  621. stock log_kill(killer, victim, weapon[], headshot)
  622. {
  623. // code from MeRcyLeZZ
  624. set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET)
  625. ExecuteHamB(Ham_Killed, victim, killer, 2) // set last param to 2 if you want victim to gib
  626. set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT)
  627.  
  628.  
  629. message_begin(MSG_BROADCAST, get_user_msgid("DeathMsg"))
  630. write_byte(killer)
  631. write_byte(victim)
  632. write_byte(headshot)
  633. write_string(weapon)
  634. message_end()
  635. //
  636.  
  637. if(get_user_team(killer)!=get_user_team(victim))
  638. set_user_frags(killer,get_user_frags(killer) +1)
  639. if(get_user_team(killer)==get_user_team(victim))
  640. set_user_frags(killer,get_user_frags(killer) -1)
  641.  
  642. new kname[32], vname[32], kauthid[32], vauthid[32], kteam[10], vteam[10]
  643.  
  644. get_user_name(killer, kname, 31)
  645. get_user_team(killer, kteam, 9)
  646. get_user_authid(killer, kauthid, 31)
  647.  
  648. get_user_name(victim, vname, 31)
  649. get_user_team(victim, vteam, 9)
  650. get_user_authid(victim, vauthid, 31)
  651.  
  652. log_message("^"%s<%d><%s><%s>^" MEGOLVE ^"%s<%d><%s><%s>^" with ^"%s^"",
  653. kname, get_user_userid(killer), kauthid, kteam,
  654. vname, get_user_userid(victim), vauthid, vteam, weapon)
  655.  
  656. return PLUGIN_CONTINUE;
  657. }
  658.  
  659. stock jp_take_damage(victim,damage,origin[3],bit) {
  660. message_begin(MSG_ONE,get_user_msgid("Damage"),{0,0,0},victim)
  661. write_byte(21)
  662. write_byte(20)
  663. write_long(bit)
  664. write_coord(origin[0])
  665. write_coord(origin[1])
  666. write_coord(origin[2])
  667. message_end()
  668.  
  669. set_user_health(victim,get_user_health(victim)-damage)
  670. }

_________________
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: norbee.16 (2014.06.29. 20:01)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2013.02.24. 17:26 
Offline
Minden6ó
Avatar

Csatlakozott: 2011.01.19. 12:14
Hozzászólások: 4292
Megköszönt másnak: 219 alkalommal
Megköszönték neki: 287 alkalommal
Oké, én a másikat próbáltam ki amit chasheprnek írtál át. Maj le tesztelem és leírom mi a helyzet :)

_________________
<<eb@>>Team Website - Közösség
17Buddies - Általam készített pályák.
GameBanana - Általam készített pályák/vágott hangok.

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 13 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