hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2025.07.04. 22:22



Jelenlévő felhasználók

Jelenleg 391 felhasználó van jelen :: 3 regisztrált, 0 rejtett és 388 vendég

A legtöbb felhasználó (2761 fő) 2025.01.09. 20:06-kor tartózkodott itt.

Regisztrált felhasználók: Bing [Bot], Google [Bot], Majestic-12 [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  [3 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Smoker Zombi Húzás R betűre
HozzászólásElküldve:2016.11.28. 12:47 
Offline
Beavatott
Avatar

Csatlakozott:2013.11.24. 19:19
Hozzászólások:76
Megköszönt másnak: 24 alkalommal
Valaki meg tudná csinálni hogy ne legyen menü csak R betűvel húzzon ?


Csatolmány:
smoker-zombi.sma [13.16KiB]
Letöltve 95 alkalommal.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Smoker Zombi Húzás R betűre
HozzászólásElküldve:2016.11.28. 13:12 
Offline
Fórum Moderátor
Avatar

Csatlakozott:2014.05.01. 13:18
Hozzászólások:628
Megköszönt másnak: 61 alkalommal
Megköszönték neki: 105 alkalommal
sZmolka írta:
Valaki meg tudná csinálni hogy ne legyen menü csak R betűvel húzzon ?


Csatolmány:
smoker-zombi.sma


Nem próbáltam ki, mert maga a forrás tele van felesleges dologgal, de amit kértél azt átírtam benne. Elméletben működnie is kell.

  1. #include <amxmodx>
  2. #include <zombieplague>
  3. #include <fakemeta>
  4. #include <hamsandwich>
  5. #include <engine>
  6.  
  7. #define PLUGIN "Smoker Zombi by sZmolka"
  8. #define VERSION "1.0"
  9. #define AUTHOR "sZmolka"
  10.  
  11. new g_zclass_smoker, g_Line
  12. new g_sndMiss[] = "zombie_plague/Smoker_TongueHit_miss.wav"
  13. new g_sndDrag[] = "zombie_plague/Smoker_TongueHit_drag.wav"
  14. new g_hooked[33], g_hooksLeft[33], g_unable2move[33], g_ovr_dmg[33]
  15. new Float:g_lastHook[33]
  16. new bool: g_bind_use[33] = false, bool: g_drag_i[33] = false
  17. new cvar_maxdrags, cvar_dragspeed, cvar_cooldown, cvar_dmg2stop, cvar_mates, cvar_extrahook, cvar_unb2move, cvar_nemesis, cvar_survivor, cvar_headstop;
  18.  
  19. new const zclass_name[] = { "Smoker" }
  20. new const zclass_info[] = { "huzas VIP" }
  21. new const zclass_model[] = { "zombie_red" }
  22. new const zclass_clawmodel[] = { "v_knife_zombie5.mdl" }
  23. const zclass_health = 1700
  24. const zclass_speed = 240
  25. const Float:zclass_gravity = 0.9
  26. const Float:zclass_knockback = 1.0
  27.  
  28. public plugin_init()
  29. {
  30. register_dictionary("zp_zclass_smoker.txt");
  31. cvar_headstop = register_cvar("zp_smoker_headstop", "0");
  32. RegisterHam(Ham_TraceAttack, "player", "forward_trace_attack");
  33.  
  34. cvar_dragspeed = register_cvar("zp_smoker_dragspeed", "150")
  35. cvar_maxdrags = register_cvar("zp_smoker_maxdrags", "15")
  36. cvar_cooldown = register_cvar("zp_smoker_cooldown", "5")
  37. cvar_dmg2stop = register_cvar("zp_smoker_dmg2stop", "350")
  38. cvar_mates = register_cvar("zp_smoker_mates", "0")
  39. cvar_extrahook = register_cvar("zp_smoker_extrahook", "2")
  40. cvar_unb2move = register_cvar("zp_smoker_unable_move", "0")
  41. cvar_nemesis = register_cvar("zp_smoker_nemesis", "0")
  42. cvar_survivor = register_cvar("zp_smoker_survivor", "1")
  43. register_event("ResetHUD", "newSpawn", "b")
  44. register_event("DeathMsg", "smoker_death", "a")
  45. register_forward(FM_PlayerPreThink, "fw_PlayerPreThink")
  46. RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  47.  
  48.  
  49. }
  50. public plugin_precache()
  51. {
  52. register_plugin(PLUGIN, VERSION, AUTHOR)
  53. g_zclass_smoker = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
  54. precache_sound(g_sndDrag)
  55. precache_sound(g_sndMiss)
  56. g_Line = precache_model("sprites/zbeam4.spr")
  57. }
  58.  
  59. public forward_trace_attack()
  60. {
  61.     if(!get_pcvar_num(cvar_headstop))
  62.         return PLUGIN_HANDLED;
  63.    
  64.     new victim = read_data(1);
  65.     new attacker = read_data(2);
  66.     new where = read_data(5);
  67.    
  68.     if(zp_get_user_zombie(victim) && !zp_get_user_zombie(attacker) && (get_tr2(where, TR_iHitgroup) == HIT_HEAD))
  69.         drag_end(victim);
  70.        
  71.     return PLUGIN_HANDLED;
  72. }
  73.  
  74. public zp_user_infected_post(id, infector)
  75. {
  76.     if ((zp_get_user_zombie_class(infector) == g_zclass_smoker) && (get_pcvar_num(cvar_extrahook) > 0))
  77.     {
  78.         g_hooksLeft[infector] = g_hooksLeft[infector] + get_pcvar_num(cvar_extrahook)
  79.         set_hudmessage(255, 0, 0, -1.0, 0.45, 0, 0.0, 3.0, 0.01, 0.01, -1)
  80.         show_hudmessage(infector, "+%d drag%s!", get_pcvar_num(cvar_extrahook), (get_pcvar_num(cvar_extrahook) < 2) ? "" : "s")
  81.     }
  82.        
  83.     if (zp_get_user_zombie_class(id) == g_zclass_smoker)
  84.         g_hooksLeft[id] = get_pcvar_num(cvar_maxdrags)
  85. }
  86.  
  87. public newSpawn(id)
  88. {
  89. if (g_hooked[id])
  90. drag_end(id)
  91. }
  92.  
  93. public drag_start(id) // starts drag, checks if player is Smoker, checks cvars
  94. {
  95. if (zp_get_user_zombie(id) && (zp_get_user_zombie_class(id) == g_zclass_smoker) && !g_drag_i[id]) {
  96.  
  97. static Float:cdown
  98. cdown = get_pcvar_float(cvar_cooldown)
  99.  
  100. if (!is_user_alive(id)) {
  101. client_print(id, print_chat, "[ZP] %L", id, "CANT_DRAG_DEAD");
  102. return PLUGIN_HANDLED
  103. }
  104.  
  105. if (g_hooksLeft[id] <= 0) {
  106. client_print(id, print_chat, "[ZP] %L", id, "CANT_DRAG_ANYMORE");
  107. return PLUGIN_HANDLED
  108. }
  109.  
  110. if (get_gametime() - g_lastHook[id] < cdown) {
  111. client_print(id, print_chat, "[ZP] %L", id, "CANT_DRAG_WAIT", get_pcvar_float(cvar_cooldown) - (get_gametime() - g_lastHook[id]));
  112. return PLUGIN_HANDLED
  113. }
  114.  
  115. new hooktarget, body
  116. get_user_aiming(id, hooktarget, body)
  117.  
  118. if (zp_get_user_nemesis(id) && get_pcvar_num(cvar_nemesis) == 0) {
  119. client_print(id, print_chat, "[ZP] %L", id, "CANT_DRAG_NEMESIS");
  120. return PLUGIN_HANDLED
  121. }
  122.  
  123. if (is_user_alive(hooktarget)) {
  124. if (!zp_get_user_zombie(hooktarget))
  125. {
  126. if (zp_get_user_survivor(hooktarget) && get_pcvar_num(cvar_survivor) == 0) {
  127. client_print(id, print_chat, "[ZP] %L", id, "CANT_DRAG_SURVIVOR");
  128. return PLUGIN_HANDLED
  129. }
  130.  
  131. g_hooked[id] = hooktarget
  132. emit_sound(hooktarget, CHAN_BODY, g_sndDrag, 1.0, ATTN_NORM, 0, PITCH_HIGH)
  133. }
  134. else
  135. {
  136. if (get_pcvar_num(cvar_mates) == 1)
  137. {
  138. g_hooked[id] = hooktarget
  139. emit_sound(hooktarget, CHAN_BODY, g_sndDrag, 1.0, ATTN_NORM, 0, PITCH_HIGH)
  140. }
  141. else
  142. {
  143. client_print(id, print_chat, "[ZP] %L", id, "CANT_DRAG_TEAM");
  144. return PLUGIN_HANDLED
  145. }
  146. }
  147.  
  148. if (get_pcvar_float(cvar_dragspeed) <= 0.0)
  149. cvar_dragspeed = 1
  150.  
  151. new parm[2]
  152. parm[0] = id
  153. parm[1] = hooktarget
  154.  
  155. set_task(0.1, "smoker_reelin", id, parm, 2, "b")
  156. harpoon_target(parm)
  157.  
  158. g_hooksLeft[id]--
  159. client_print(id, print_chat, "[ZP] %L", id, "CAN_DRAG_TIMES", g_hooksLeft[id]);
  160. g_drag_i[id] = true
  161.  
  162. if(get_pcvar_num(cvar_unb2move) == 1)
  163. g_unable2move[hooktarget] = true
  164.  
  165. if(get_pcvar_num(cvar_unb2move) == 2)
  166. g_unable2move[id] = true
  167.  
  168. if(get_pcvar_num(cvar_unb2move) == 3)
  169. {
  170. g_unable2move[hooktarget] = true
  171. g_unable2move[id] = true
  172. }
  173. } else {
  174. g_hooked[id] = 33
  175. noTarget(id)
  176. emit_sound(hooktarget, CHAN_BODY, g_sndMiss, 1.0, ATTN_NORM, 0, PITCH_HIGH)
  177. g_drag_i[id] = true
  178. g_hooksLeft[id]--
  179. client_print(id, print_chat, "[ZP] %L", id, "CAN_DRAG_TIMES", g_hooksLeft[id]);
  180. }
  181. }
  182. else
  183. return PLUGIN_HANDLED
  184.  
  185. return PLUGIN_CONTINUE
  186. }
  187.  
  188. public smoker_reelin(parm[]) // dragging player to smoker
  189. {
  190. new id = parm[0]
  191. new victim = parm[1]
  192.  
  193. if (!g_hooked[id] || !is_user_alive(victim))
  194. {
  195. drag_end(id)
  196. return
  197. }
  198.  
  199. new Float:fl_Velocity[3]
  200. new idOrigin[3], vicOrigin[3]
  201.  
  202. get_user_origin(victim, vicOrigin)
  203. get_user_origin(id, idOrigin)
  204.  
  205. new distance = get_distance(idOrigin, vicOrigin)
  206.  
  207. if (distance > 1) {
  208. new Float:fl_Time = distance / get_pcvar_float(cvar_dragspeed)
  209.  
  210. fl_Velocity[0] = (idOrigin[0] - vicOrigin[0]) / fl_Time
  211. fl_Velocity[1] = (idOrigin[1] - vicOrigin[1]) / fl_Time
  212. fl_Velocity[2] = (idOrigin[2] - vicOrigin[2]) / fl_Time
  213. } else {
  214. fl_Velocity[0] = 0.0
  215. fl_Velocity[1] = 0.0
  216. fl_Velocity[2] = 0.0
  217. }
  218.  
  219. entity_set_vector(victim, EV_VEC_velocity, fl_Velocity) //<- rewritten. now uses engine
  220. }
  221.  
  222. public drag_end(id) // drags end function
  223. {
  224. g_hooked[id] = 0
  225. beam_remove(id)
  226. remove_task(id)
  227.  
  228. if (g_drag_i[id])
  229. g_lastHook[id] = get_gametime()
  230.  
  231. g_drag_i[id] = false
  232. g_unable2move[id] = false
  233. }
  234.  
  235. public smoker_death() // if smoker dies drag off
  236. {
  237. new id = read_data(2)
  238.  
  239. beam_remove(id)
  240.  
  241. if (g_hooked[id])
  242. drag_end(id)
  243. }
  244.  
  245. public fw_TakeDamage(victim, inflictor, attacker, Float:damage) // if take damage drag off
  246. {
  247. if (is_user_alive(attacker) && (get_pcvar_num(cvar_dmg2stop) > 0))
  248. {
  249. g_ovr_dmg[victim] = g_ovr_dmg[victim] + floatround(damage)
  250. if (g_ovr_dmg[victim] >= get_pcvar_num(cvar_dmg2stop))
  251. {
  252. g_ovr_dmg[victim] = 0
  253. drag_end(victim)
  254. return HAM_IGNORED;
  255. }
  256. }
  257.  
  258. return HAM_IGNORED;
  259. }
  260.  
  261. public fw_PlayerPreThink(id)
  262. {
  263.     if (!is_user_alive(id))
  264.         return FMRES_IGNORED;
  265.    
  266.     new button = get_user_button(id);
  267.     new oldbutton = get_user_oldbutton(id);
  268.    
  269.     if (g_bind_use[id] && zp_get_user_zombie(id) && (zp_get_user_zombie_class(id) == g_zclass_smoker))
  270.     {
  271.         if (!(oldbutton & IN_RELOAD) && (button & IN_RELOAD))
  272.             drag_start(id)
  273.    
  274.         if ((oldbutton & IN_RELOAD) && !(button & IN_RELOAD))
  275.             drag_end(id)
  276.     }
  277.  
  278.     if (!g_drag_i[id])
  279.         g_unable2move[id] = false
  280.  
  281.     if (g_unable2move[id] && get_pcvar_num(cvar_unb2move) > 0)
  282.         set_pev(id, pev_maxspeed, 1.0)
  283.  
  284.     return PLUGIN_CONTINUE
  285. }
  286.  
  287. public client_disconnect(id) // if client disconnects drag off
  288. {
  289. if (id <= 0 || id > 32)
  290. return
  291.  
  292. if (g_hooked[id])
  293. drag_end(id)
  294.  
  295. if(g_unable2move[id])
  296. g_unable2move[id] = false
  297. }
  298.  
  299. public harpoon_target(parm[]) // set beam (ex. tongue:) if target is player
  300. {
  301. new id = parm[0]
  302. new hooktarget = parm[1]
  303.  
  304. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  305. write_byte(8) // TE_BEAMENTS
  306. write_short(id)
  307. write_short(hooktarget)
  308. write_short(g_Line) // sprite index
  309. write_byte(0) // start frame
  310. write_byte(0) // framerate
  311. write_byte(200) // life
  312. write_byte(8) // width
  313. write_byte(1) // noise
  314. write_byte(155) // r, g, b
  315. write_byte(155) // r, g, b
  316. write_byte(55) // r, g, b
  317. write_byte(90) // brightness
  318. write_byte(10) // speed
  319. message_end()
  320. }
  321.  
  322. public noTarget(id) // set beam if target isn't player
  323. {
  324. new endorigin[3]
  325.  
  326. get_user_origin(id, endorigin, 3)
  327.  
  328. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  329. write_byte( TE_BEAMENTPOINT ); // TE_BEAMENTPOINT
  330. write_short(id)
  331. write_coord(endorigin[0])
  332. write_coord(endorigin[1])
  333. write_coord(endorigin[2])
  334. write_short(g_Line) // sprite index
  335. write_byte(0) // start frame
  336. write_byte(0) // framerate
  337. write_byte(200) // life
  338. write_byte(8) // width
  339. write_byte(1) // noise
  340. write_byte(155) // r, g, b
  341. write_byte(155) // r, g, b
  342. write_byte(55) // r, g, b
  343. write_byte(75) // brightness
  344. write_byte(0) // speed
  345. message_end()
  346. }
  347.  
  348. public beam_remove(id) // remove beam
  349. {
  350. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  351. write_byte(99) //TE_KILLBEAM
  352. write_short(id) //entity
  353. message_end()
  354. }


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Smoker Zombi Húzás R betűre
HozzászólásElküldve:2016.11.28. 16:17 
Offline
Jómunkásember

Csatlakozott:2016.06.20. 10:23
Hozzászólások:489
Megköszönt másnak: 47 alkalommal
Megköszönték neki: 15 alkalommal
bind R +drag XD ér R betü a húzas :D

_________________
BfS* #Team ~Global Offensive IP: 213.181.206.26:27059

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  [3 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 3 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