hlmod.hu

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



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: nincs regisztrált felhasználó 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  [ 8 hozzászólás ] 
Szerző Üzenet
HozzászólásElküldve: 2014.01.15. 20:03 
Offline
Senior Tag

Csatlakozott: 2013.05.22. 17:06
Hozzászólások: 205
Megköszönt másnak: 88 alkalommal
Üdv mindenikinek eben a témában azt szeretném elérni ,hogy valaki akiért a pluginok hoz az csináljón egy normális le írást hogyan kel Zombie Fegyverből át convertálás CoD:MW3 Mod ba! ÉS + ne ilyem hülyeségekel ,hogy kódal keljen elő hozni PL:ha valaki be írj hogy /fegyver akkor bejőn akor ott ki is tudja választani a megadot kasztot pl ha sikolyos akor sikolyos ha plasma ak plasma!

_________________
Ha, segítettél mindig meg köszönöm!
De ha, segítettem köszönd meg Te is ! LIKE


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2014.01.15. 20:38 
Offline
Őskövület
Avatar

Csatlakozott: 2012.02.27. 09:42
Hozzászólások: 2588
Megköszönt másnak: 25 alkalommal
Megköszönték neki: 418 alkalommal
ebbe semmi ördöngösség nincs egyszerűen át kell írni a zombi fegyver publikra majd belerakni 1 menübe ha megmondod pontosan melyik zombi fegyvert szeretnéd átírni és adsz hozzá 1 forráskódot átírom neked.

UI: erről találsz leírást is valahol a fórumon csak keresgélj ha magad szeretnéd megcsinálni.

_________________
Kép

Ők köszönték meg CrB nek ezt a hozzászólást: nyalka17 (2014.01.15. 20:40)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2014.01.15. 20:56 
Offline
Senior Tag

Csatlakozott: 2013.05.22. 17:06
Hozzászólások: 205
Megköszönt másnak: 88 alkalommal
1 pil küldök vagy 3 mat csak telón vagyok

edit: rem nem gond hogy igy küldöm de telon vok már tod is letölteni nekem csak az sma kel töbit letőltöm zombie-mod.ru/counter-strike/zombie-plague/extra_items/3480-zp-extra-item-gitar-by-zombie-modru.html

_________________
Ha, segítettél mindig meg köszönöm!
De ha, segítettem köszönd meg Te is ! LIKE


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2014.01.15. 21:24 
Offline
Őskövület
Avatar

Csatlakozott: 2012.02.27. 09:42
Hozzászólások: 2588
Megköszönt másnak: 25 alkalommal
Megköszönték neki: 418 alkalommal
nyalka17 írta:
1 pil küldök vagy 3 mat csak telón vagyok

edit: rem nem gond hogy igy küldöm de telon vok már tod is letölteni nekem csak az sma kel töbit letőltöm zombie-mod.ru/counter-strike/zombie-plague/extra_items/3480-zp-extra-item-gitar-by-zombie-modru.html


nem gond csak 1 a baj vele, hogy nem publikus a forráskódja.. :D

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2014.01.15. 21:28 
Offline
Senior Tag

Csatlakozott: 2013.05.22. 17:06
Hozzászólások: 205
Megköszönt másnak: 88 alkalommal
bocs de ezt nem értem! :(

edit: mit jelent a publikus nincs át convertál vagy mi?

_________________
Ha, segítettél mindig meg köszönöm!
De ha, segítettem köszönd meg Te is ! LIKE


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2014.01.15. 21:31 
Offline
Őskövület
Avatar

Csatlakozott: 2012.02.27. 09:42
Hozzászólások: 2588
Megköszönt másnak: 25 alkalommal
Megköszönték neki: 418 alkalommal
nah akkor :D

lényeg: letöltöd a zip et és nincs benne sma fájl így nem tudod szerkeszteni a plugint.

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2014.01.16. 01:44 
Offline
Senior Tag

Csatlakozott: 2013.05.22. 17:06
Hozzászólások: 205
Megköszönt másnak: 88 alkalommal
kedves crazy itt van amit átkellene :xicon_e_biggrin:
Csatolmány:
12484-zp_extra_at4cs.sma [17.75 KiB]
Letöltve 81 alkalommal.

Csatolmány:
12355-zp_extra_guitar.sma [15.68 KiB]
Letöltve 88 alkalommal.

_________________
Ha, segítettél mindig meg köszönöm!
De ha, segítettem köszönd meg Te is ! LIKE


Hozzászólás jelentése
Vissza a tetejére
   
HozzászólásElküldve: 2014.01.16. 15:09 
Offline
Őskövület
Avatar

Csatlakozott: 2012.02.27. 09:42
Hozzászólások: 2588
Megköszönt másnak: 25 alkalommal
Megköszönték neki: 418 alkalommal
nyalka17 írta:
kedves crazy itt van amit átkellene :xicon_e_biggrin:
Csatolmány:
12484-zp_extra_at4cs.sma

Csatolmány:
12355-zp_extra_guitar.sma


at4cs: próbáld
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <engine>
  3. #include <fakemeta>
  4. #include <fakemeta_util>
  5. #include <hamsandwich>
  6. #include <cstrike>
  7.  
  8.  
  9. #define PLUGIN "[ZP] Extra Item: AT4CS"
  10. #define VERSION "1.0"
  11. #define AUTHOR "Dias"
  12.  
  13. #define weapon_at4cs "weapon_m249"
  14. #define CSW_AT4CS CSW_M249
  15.  
  16. #define TASK_CHECKRELOAD 111112
  17. #define TASK_RELOAD 111113
  18.  
  19.  
  20. new g_had_at4cs[33], Float:g_lastfire[33], Float:g_lastaim[33], g_aiming[33],
  21. g_smoke_id, g_spr_trail, g_spr_exp, is_reloading[33],
  22. cvar_radius, cvar_maxdamage
  23.  
  24. new const v_model[] = "models/zombie_plague/v_at4ex.mdl"
  25. new const p_model[] = "models/zombie_plague/p_at4ex.mdl"
  26. new const w_model[] = "models/zombie_plague/w_at4ex.mdl"
  27. new const s_model[] = "models/zombie_plague/s_rocket.mdl"
  28.  
  29. new const at4cs_sound[5][] = {
  30. "weapons/at4-1.wav", // Fire Sound
  31. "weapons/at4_clipin1.wav", // Clip in 1
  32. "weapons/at4_clipin2.wav", // Clip in 2
  33. "weapons/at4_clipin3.wav", // Clip in 3
  34. "weapons/at4_draw.wav" // Draw
  35. }
  36.  
  37. public plugin_init()
  38. {
  39. register_plugin(PLUGIN, VERSION, AUTHOR)
  40.  
  41. register_event("CurWeapon", "event_curweapon", "be", "1=1")
  42. register_event("HLTV", "event_newround", "a", "1=0", "2=0")
  43.  
  44. register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
  45. register_forward(FM_CmdStart, "fw_CmdStart")
  46. register_forward(FM_SetModel, "fw_SetModel")
  47.  
  48. register_think("at4ex_rocket", "fw_rocket_think")
  49. register_touch("at4ex_rocket", "*", "fw_rocket_touch")
  50.  
  51. RegisterHam(Ham_Weapon_Reload, weapon_at4cs, "fw_WeaponReload")
  52. RegisterHam(Ham_Item_AddToPlayer, weapon_at4cs, "fw_AddToPlayer", 1)
  53.  
  54. cvar_radius = register_cvar("zp_at4cs_radius", "400.0")
  55. cvar_maxdamage = register_cvar("zp_at4cs_maxdamage", "1250.0")
  56. register_clcmd("say /fegyver", "addweap")
  57. register_clcmd("weapon_at4cs", "hook_weapon")
  58. }
  59.  
  60. public hook_weapon(id)
  61. {
  62. engclient_cmd(id, weapon_at4cs)
  63. return PLUGIN_HANDLED
  64. }
  65.  
  66. public plugin_precache()
  67. {
  68. engfunc(EngFunc_PrecacheModel, v_model)
  69. engfunc(EngFunc_PrecacheModel, p_model)
  70. engfunc(EngFunc_PrecacheModel, w_model)
  71. engfunc(EngFunc_PrecacheModel, s_model)
  72.  
  73. engfunc(EngFunc_PrecacheGeneric, "sprites/weapon_at4cs.txt")
  74. engfunc(EngFunc_PrecacheGeneric, "sprites/at4cs.spr")
  75.  
  76. g_smoke_id = engfunc(EngFunc_PrecacheModel, "sprites/effects/rainsplash.spr")
  77. g_spr_trail = engfunc(EngFunc_PrecacheModel,"sprites/xbeam3.spr")
  78. g_spr_exp = engfunc(EngFunc_PrecacheModel,"sprites/zerogxplode.spr")
  79.  
  80. for(new i = 0; i < sizeof(at4cs_sound); i++)
  81. engfunc(EngFunc_PrecacheSound, at4cs_sound[i])
  82. }
  83.  
  84. public addweap(id)
  85. {
  86.  
  87. g_had_at4cs[id] = 1
  88. is_reloading[id] = 0
  89. g_aiming[id] = 0
  90.  
  91. fm_give_item(id, weapon_at4cs)
  92.  
  93. static at4cs
  94. at4cs = fm_get_user_weapon_entity(id, CSW_AT4CS)
  95.  
  96. cs_set_weapon_ammo(at4cs, 1)
  97. cs_set_user_bpammo(id, CSW_AT4CS, 10)
  98.  
  99. return PLUGIN_CONTINUE
  100. }
  101. public event_newround()
  102. {
  103. remove_entity_name("at4ex_rocket")
  104.  
  105. for(new i = 0; i < get_maxplayers(); i++)
  106. {
  107. if(is_user_alive(i) && is_user_connected(i))
  108. {
  109. remove_task(i+TASK_CHECKRELOAD)
  110. remove_task(i+TASK_RELOAD)
  111. }
  112. }
  113. }
  114.  
  115. public event_curweapon(id)
  116. {
  117. if(!is_user_alive(id) || !is_user_connected(id))
  118. return PLUGIN_HANDLED
  119.  
  120. set_pev(id, pev_viewmodel2, v_model)
  121. set_pev(id, pev_weaponmodel2, p_model)
  122.  
  123. return PLUGIN_CONTINUE
  124. }
  125.  
  126. public fw_UpdateClientData_Post(id, sendweapons, cd_handle)
  127. {
  128. if(!is_user_alive(id) || !is_user_connected(id))
  129. return FMRES_IGNORED
  130.  
  131. if(get_user_weapon(id) != CSW_AT4CS || !g_had_at4cs[id])
  132. return FMRES_IGNORED
  133.  
  134. set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001)
  135.  
  136. return FMRES_HANDLED
  137. }
  138.  
  139. public fw_AddToPlayer(ent, id)
  140. {
  141. if(!is_valid_ent(ent) || !is_user_alive(id))
  142. return HAM_IGNORED
  143.  
  144. if(entity_get_int(ent, EV_INT_impulse) == 61296)
  145. {
  146. g_had_at4cs[id] = 1
  147. entity_set_int(id, EV_INT_impulse, 0)
  148.  
  149. return HAM_HANDLED
  150. }
  151.  
  152. if(g_had_at4cs[id])
  153. {
  154. message_begin(MSG_ONE, get_user_msgid("WeaponList"), _, id)
  155. write_string("weapon_at4cs"); // WeaponName
  156. write_byte(3) // PrimaryAmmoID
  157. write_byte(1) // PrimaryAmmoMaxAmount
  158. write_byte(-1) // SecondaryAmmoID
  159. write_byte(-1) // SecondaryAmmoMaxAmount
  160. write_byte(0) // SlotID (0...N)
  161. write_byte(4) // NumberInSlot (1...N)
  162. write_byte(CSW_AT4CS) // WeaponID
  163. write_byte(0) // Flags
  164. message_end()
  165. }
  166.  
  167. return HAM_HANDLED
  168. }
  169.  
  170. public fw_CmdStart(id, uc_handle, seed)
  171. {
  172. if(!is_user_alive(id) || !is_user_connected(id))
  173. return FMRES_IGNORED
  174.  
  175. if(get_user_weapon(id) != CSW_AT4CS || !g_had_at4cs[id])
  176. return FMRES_IGNORED
  177.  
  178.  
  179. static CurButton
  180. CurButton = get_uc(uc_handle, UC_Buttons)
  181.  
  182. if(CurButton & IN_ATTACK)
  183. {
  184. static Float:CurTime
  185. CurTime = get_gametime()
  186.  
  187. static at4cs
  188. at4cs = fm_find_ent_by_owner(-1, weapon_at4cs, id)
  189.  
  190. if(cs_get_weapon_ammo(at4cs) > 0 && !is_reloading[id])
  191. {
  192. if(CurTime - 4.5 > g_lastfire[id])
  193. {
  194. set_weapon_anim(id, 1)
  195. emit_sound(id, CHAN_WEAPON, at4cs_sound[0], 1.0, ATTN_NORM, 0, PITCH_NORM)
  196.  
  197. create_rocket(id)
  198.  
  199. static Float:Punch_Angles[3]
  200.  
  201. Punch_Angles[0] = -20.0
  202. Punch_Angles[1] = 0.0
  203. Punch_Angles[2] = 0.0
  204.  
  205. set_pev(id, pev_punchangle, Punch_Angles)
  206. cs_set_weapon_ammo(at4cs, cs_get_weapon_ammo(at4cs) - 1)
  207.  
  208. if(cs_get_weapon_ammo(at4cs) <= 0 && !is_reloading[id])
  209. {
  210. if(cs_get_user_bpammo(id, CSW_AT4CS) > 0)
  211. {
  212. set_task(1.0, "at4cs_reload", id)
  213. }
  214. }
  215.  
  216. if(cs_get_user_zoom(id))
  217. cs_set_user_zoom(id, CS_RESET_ZOOM, 1)
  218.  
  219. g_lastfire[id] = CurTime
  220. }
  221. } else {
  222. if(!is_reloading[id])
  223. {
  224. if(cs_get_user_bpammo(id, CSW_AT4CS) > 0)
  225. {
  226. if(CurTime - 1.0 > g_lastfire[id])
  227. {
  228. at4cs_reload(id)
  229. g_lastfire[id] = CurTime
  230. }
  231. }
  232. }
  233. }
  234. }
  235.  
  236. if(CurButton & IN_ATTACK2)
  237. {
  238. static Float:CurTime
  239. CurTime = get_gametime()
  240.  
  241. if((CurTime - 0.5 > g_lastaim[id]) && !is_reloading[id])
  242. {
  243. if(!g_aiming[id])
  244. {
  245. cs_set_user_zoom(id, CS_SET_FIRST_ZOOM, 1)
  246. g_aiming[id] = 1
  247. } else {
  248. cs_set_user_zoom(id, CS_RESET_ZOOM, 1)
  249. g_aiming[id] = 0
  250. }
  251.  
  252. g_lastaim[id] = CurTime
  253. }
  254. }
  255.  
  256. CurButton &= ~IN_ATTACK
  257. set_uc(uc_handle, UC_Buttons, CurButton)
  258.  
  259. CurButton &= ~IN_RELOAD
  260. set_uc(uc_handle, UC_Buttons, CurButton)
  261.  
  262. return FMRES_HANDLED
  263. }
  264.  
  265. public fw_SetModel(ent, const model[])
  266. {
  267. if(!is_valid_ent(ent))
  268. return FMRES_IGNORED
  269.  
  270. static szClassName[33]
  271. entity_get_string(ent, EV_SZ_classname, szClassName, charsmax(szClassName))
  272.  
  273. if(!equal(szClassName, "weaponbox"))
  274. return FMRES_IGNORED
  275.  
  276. static iOwner
  277. iOwner = entity_get_edict(ent, EV_ENT_owner)
  278.  
  279. if(equal(model, "models/w_m249.mdl"))
  280. {
  281. static at4cs
  282. at4cs = find_ent_by_owner(-1, "weapon_m249", ent)
  283.  
  284. if(!is_valid_ent(at4cs))
  285. return FMRES_IGNORED;
  286.  
  287. if(g_had_at4cs[iOwner])
  288. {
  289. entity_set_int(at4cs, EV_INT_impulse, 61296)
  290. g_had_at4cs[iOwner] = 0
  291. entity_set_model(ent, w_model)
  292.  
  293. return FMRES_SUPERCEDE
  294. }
  295. }
  296.  
  297. return FMRES_IGNORED
  298. }
  299.  
  300. public at4cs_reload(id)
  301. {
  302. if(is_reloading[id])
  303. return
  304.  
  305. is_reloading[id] = 1
  306. set_weapon_anim(id, 3)
  307.  
  308. set_task(0.1, "checking_reload", id+TASK_CHECKRELOAD, _, _, "b")
  309. set_task(4.0, "reload_complete", id+TASK_RELOAD)
  310. }
  311.  
  312. public checking_reload(id)
  313. {
  314. id -= TASK_CHECKRELOAD
  315.  
  316. if(cs_get_user_zoom(id))
  317. cs_set_user_zoom(id, CS_RESET_ZOOM, 1)
  318.  
  319. if(get_user_weapon(id) != CSW_AT4CS || !g_had_at4cs[id])
  320. {
  321. remove_task(id+TASK_CHECKRELOAD)
  322. remove_task(id+TASK_RELOAD)
  323.  
  324. is_reloading[id] = 0
  325. }
  326. }
  327.  
  328. public reload_complete(id)
  329. {
  330. id -= TASK_RELOAD
  331.  
  332. if(!is_reloading[id])
  333. return
  334.  
  335. remove_task(id+TASK_CHECKRELOAD)
  336.  
  337. static at4cs
  338. at4cs = fm_find_ent_by_owner(-1, weapon_at4cs, id)
  339.  
  340. cs_set_weapon_ammo(at4cs, 1)
  341. cs_set_user_bpammo(id, CSW_AT4CS, cs_get_user_bpammo(id, CSW_AT4CS) - 1)
  342. is_reloading[id] = 0
  343. }
  344.  
  345. public fw_WeaponReload(ent)
  346. {
  347. static id
  348. id = pev(ent, pev_owner)
  349.  
  350. if(!is_user_alive(id) || !is_user_connected(id))
  351. return HAM_IGNORED
  352.  
  353. if(get_user_weapon(id) != CSW_AT4CS || !g_had_at4cs[id])
  354. return HAM_IGNORED
  355.  
  356. static Float:CurTime
  357. CurTime = get_gametime()
  358.  
  359. if(!is_reloading[id])
  360. {
  361. if(cs_get_user_bpammo(id, CSW_AT4CS) > 0)
  362. {
  363. if(CurTime - 1.0 > g_lastfire[id])
  364. {
  365. at4cs_reload(id)
  366. g_lastfire[id] = CurTime
  367. }
  368. }
  369. }
  370.  
  371. return HAM_SUPERCEDE
  372. }
  373.  
  374. public create_rocket(id)
  375. {
  376. new ent, Float:Origin[3], Float:Angles[3], Float:Velocity[3]
  377.  
  378. ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
  379. engfunc(EngFunc_GetAttachment, id, 0, Origin, Angles)
  380. pev(id, pev_angles, Angles)
  381.  
  382. set_pev(ent, pev_origin, Origin)
  383. set_pev(ent, pev_angles, Angles)
  384. set_pev(ent, pev_solid, 2)
  385. set_pev(ent, pev_movetype, 5)
  386. set_pev(ent, pev_classname, "at4ex_rocket")
  387. set_pev(ent, pev_owner, id)
  388. engfunc(EngFunc_SetModel, ent, s_model)
  389.  
  390. set_pev(ent, pev_mins, {-1.0, -1.0, -1.0})
  391. set_pev(ent, pev_maxs, {1.0, 1.0, 1.0})
  392.  
  393. velocity_by_aim(id, 1750, Velocity)
  394. set_pev(ent, pev_velocity, Velocity)
  395.  
  396. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  397. write_byte(TE_BEAMFOLLOW) // TE id
  398. write_short(ent) // entity:attachment to follow
  399. write_short(g_spr_trail) // sprite index
  400. write_byte(25) // life in 0.1's
  401. write_byte(2) // line width in 0.1's
  402. write_byte(255) // r
  403. write_byte(255) // g
  404. write_byte(255) // b
  405. write_byte(200) // brightness
  406. message_end()
  407.  
  408. set_pev(ent, pev_iuser4, 0)
  409. set_pev(ent, pev_nextthink, halflife_time() + 0.1)
  410. }
  411.  
  412. public fw_rocket_think(ent)
  413. {
  414. if(!pev_valid(ent))
  415. return
  416.  
  417. static Float:Origin[3]
  418. pev(ent, pev_origin, Origin)
  419.  
  420. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  421. write_byte(TE_SPRITE)
  422. engfunc(EngFunc_WriteCoord, Origin[0])
  423. engfunc(EngFunc_WriteCoord, Origin[1])
  424. engfunc(EngFunc_WriteCoord, Origin[2])
  425. write_short(g_smoke_id)
  426. write_byte(2)
  427. write_byte(200)
  428. message_end()
  429.  
  430. if(pev(ent, pev_iuser4) == 0)
  431. {
  432. static Victim
  433. Victim = FindClosesEnemy(ent)
  434.  
  435. if(is_user_alive(Victim))
  436. {
  437. set_pev(ent, pev_iuser4, Victim)
  438. }
  439. } else {
  440. static Victim
  441. Victim = pev(ent, pev_iuser4)
  442.  
  443. if(is_user_alive(Victim))
  444. {
  445. static Float:VicOrigin[3]
  446. pev(Victim, pev_origin, VicOrigin)
  447.  
  448. turn_to_target(ent, Origin, Victim, VicOrigin)
  449. hook_ent(ent, Victim, 500.0)
  450. } else {
  451. set_pev(ent, pev_iuser4, 0)
  452. }
  453. }
  454.  
  455. set_pev(ent, pev_nextthink, halflife_time() + 0.075)
  456. }
  457.  
  458. public fw_rocket_touch(rocket, touch)
  459. {
  460. if(!pev_valid(rocket))
  461. return
  462.  
  463. if(is_user_alive(touch) && pev(rocket, pev_owner) == touch)
  464. return
  465.  
  466. static Float:Origin[3]
  467. pev(rocket, pev_origin, Origin)
  468.  
  469. message_begin(MSG_BROADCAST ,SVC_TEMPENTITY)
  470. write_byte(TE_EXPLOSION)
  471. engfunc(EngFunc_WriteCoord, Origin[0])
  472. engfunc(EngFunc_WriteCoord, Origin[1])
  473. engfunc(EngFunc_WriteCoord, Origin[2])
  474. write_short(g_spr_exp) // sprite index
  475. write_byte(20) // scale in 0.1's
  476. write_byte(30) // framerate
  477. write_byte(0) // flags
  478. message_end()
  479.  
  480. static owner, iVictim
  481.  
  482. iVictim = -1
  483. owner = pev(rocket, pev_owner)
  484.  
  485. while((iVictim = find_ent_in_sphere(iVictim, Origin, get_pcvar_float(cvar_radius))) != 0)
  486. {
  487. if((0 < iVictim < 32) && is_user_alive(iVictim)
  488. && iVictim != owner)
  489. {
  490. new Float:MaxDamage, Float:Damage
  491.  
  492. MaxDamage = get_pcvar_float(cvar_maxdamage)
  493. Damage = random_float(MaxDamage - random_float(0.0, 100.0), MaxDamage + random_float(0.0, 100.0))
  494.  
  495. ExecuteHam(Ham_TakeDamage, iVictim, 0, owner, 0, DMG_BULLET)
  496.  
  497. static health
  498. health = get_user_health(iVictim)
  499.  
  500. if(health - Damage >= 1)
  501. {
  502. fm_set_user_health(iVictim, health - floatround(Damage))
  503. }
  504. else
  505. {
  506. death_message(owner, iVictim, 1)
  507. }
  508. }
  509. }
  510.  
  511. engfunc(EngFunc_RemoveEntity, rocket)
  512. }
  513.  
  514. stock set_weapon_anim(id, anim)
  515. {
  516. set_pev(id, pev_weaponanim, anim)
  517.  
  518. message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, id)
  519. write_byte(anim)
  520. write_byte(pev(id,pev_body))
  521. message_end()
  522. }
  523.  
  524. stock death_message(Killer, Victim, ScoreBoard)
  525. {
  526. // Block death msg
  527. set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET)
  528. ExecuteHamB(Ham_Killed, Victim, Killer, 2)
  529. set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT)
  530.  
  531. // Death
  532. make_deathmsg(Killer, Victim, 0, "")
  533.  
  534. // Update score board
  535. if (ScoreBoard)
  536. {
  537. message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"))
  538. write_byte(Killer) // id
  539. write_short(pev(Killer, pev_frags)) // frags
  540. write_short(cs_get_user_deaths(Killer)) // deaths
  541. write_short(0) // class?
  542. write_short(get_user_team(Killer)) // team
  543. message_end()
  544.  
  545. message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"))
  546. write_byte(Victim) // id
  547. write_short(pev(Victim, pev_frags)) // frags
  548. write_short(cs_get_user_deaths(Victim)) // deaths
  549. write_short(0) // class?
  550. write_short(get_user_team(Victim)) // team
  551. message_end()
  552. }
  553. }
  554.  
  555. stock FindClosesEnemy(entid)
  556. {
  557. new Float:Dist
  558. new Float:maxdistance=300.0
  559. new indexid=0
  560. for(new i=1;i<=get_maxplayers();i++){
  561. if(is_user_alive(i) && is_valid_ent(i) && can_see_fm(entid, i)
  562. && pev(entid, pev_owner) != i && cs_get_user_team(pev(entid, pev_owner)) != cs_get_user_team(i))
  563. {
  564. Dist = entity_range(entid, i)
  565. if(Dist <= maxdistance)
  566. {
  567. maxdistance=Dist
  568. indexid=i
  569.  
  570. return indexid
  571. }
  572. }
  573. }
  574. return 0
  575. }
  576.  
  577. stock bool:can_see_fm(entindex1, entindex2)
  578. {
  579. if (!entindex1 || !entindex2)
  580. return false
  581.  
  582. if (pev_valid(entindex1) && pev_valid(entindex1))
  583. {
  584. new flags = pev(entindex1, pev_flags)
  585. if (flags & EF_NODRAW || flags & FL_NOTARGET)
  586. {
  587. return false
  588. }
  589.  
  590. new Float:lookerOrig[3]
  591. new Float:targetBaseOrig[3]
  592. new Float:targetOrig[3]
  593. new Float:temp[3]
  594.  
  595. pev(entindex1, pev_origin, lookerOrig)
  596. pev(entindex1, pev_view_ofs, temp)
  597. lookerOrig[0] += temp[0]
  598. lookerOrig[1] += temp[1]
  599. lookerOrig[2] += temp[2]
  600.  
  601. pev(entindex2, pev_origin, targetBaseOrig)
  602. pev(entindex2, pev_view_ofs, temp)
  603. targetOrig[0] = targetBaseOrig [0] + temp[0]
  604. targetOrig[1] = targetBaseOrig [1] + temp[1]
  605. targetOrig[2] = targetBaseOrig [2] + temp[2]
  606.  
  607. engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) // checks the had of seen player
  608. if (get_tr2(0, TraceResult:TR_InOpen) && get_tr2(0, TraceResult:TR_InWater))
  609. {
  610. return false
  611. }
  612. else
  613. {
  614. new Float:flFraction
  615. get_tr2(0, TraceResult:TR_flFraction, flFraction)
  616. if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
  617. {
  618. return true
  619. }
  620. else
  621. {
  622. targetOrig[0] = targetBaseOrig [0]
  623. targetOrig[1] = targetBaseOrig [1]
  624. targetOrig[2] = targetBaseOrig [2]
  625. engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) // checks the body of seen player
  626. get_tr2(0, TraceResult:TR_flFraction, flFraction)
  627. if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
  628. {
  629. return true
  630. }
  631. else
  632. {
  633. targetOrig[0] = targetBaseOrig [0]
  634. targetOrig[1] = targetBaseOrig [1]
  635. targetOrig[2] = targetBaseOrig [2] - 17.0
  636. engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) // checks the legs of seen player
  637. get_tr2(0, TraceResult:TR_flFraction, flFraction)
  638. if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
  639. {
  640. return true
  641. }
  642. }
  643. }
  644. }
  645. }
  646. return false
  647. }
  648.  
  649. stock turn_to_target(ent, Float:Ent_Origin[3], target, Float:Vic_Origin[3])
  650. {
  651. if(target)
  652. {
  653. new Float:newAngle[3]
  654. entity_get_vector(ent, EV_VEC_angles, newAngle)
  655. new Float:x = Vic_Origin[0] - Ent_Origin[0]
  656. new Float:z = Vic_Origin[1] - Ent_Origin[1]
  657.  
  658. new Float:radians = floatatan(z/x, radian)
  659. newAngle[1] = radians * (180 / 3.14)
  660. if (Vic_Origin[0] < Ent_Origin[0])
  661. newAngle[1] -= 180.0
  662.  
  663. entity_set_vector(ent, EV_VEC_angles, newAngle)
  664. }
  665. }
  666.  
  667. stock hook_ent(ent, victim, Float:speed)
  668. {
  669. static Float:fl_Velocity[3]
  670. static Float:VicOrigin[3], Float:EntOrigin[3]
  671.  
  672. pev(ent, pev_origin, EntOrigin)
  673. pev(victim, pev_origin, VicOrigin)
  674.  
  675. static Float:distance_f
  676. distance_f = get_distance_f(EntOrigin, VicOrigin)
  677.  
  678. if (distance_f > 10.0)
  679. {
  680. new Float:fl_Time = distance_f / speed
  681.  
  682. fl_Velocity[0] = (VicOrigin[0] - EntOrigin[0]) / fl_Time
  683. fl_Velocity[1] = (VicOrigin[1] - EntOrigin[1]) / fl_Time
  684. fl_Velocity[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time
  685. } else
  686. {
  687. fl_Velocity[0] = 0.0
  688. fl_Velocity[1] = 0.0
  689. fl_Velocity[2] = 0.0
  690. }
  691.  
  692. entity_set_vector(ent, EV_VEC_velocity, fl_Velocity)
  693. }
  694.  

gitár:
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <engine>
  3. #include <fakemeta>
  4. #include <fun>
  5. #include <hamsandwich>
  6. #include <xs>
  7. #include <cstrike>
  8.  
  9.  
  10. enum
  11. {
  12. anim_idle,
  13. anim_reload,
  14. anim_draw,
  15. anim_shoot1,
  16. anim_shoot2,
  17. anim_shoot3
  18. }
  19.  
  20. #define ENG_NULLENT -1
  21. #define EV_INT_WEAPONKEY EV_INT_impulse
  22.  
  23. #define guitar_WEAPONKEY 700
  24.  
  25. #define MAX_PLAYERS 32
  26. const USE_STOPPED = 0
  27. const OFFSET_ACTIVE_ITEM = 373
  28. const OFFSET_WEAPONOWNER = 41
  29. const OFFSET_LINUX = 5
  30. const OFFSET_LINUX_WEAPONS = 4
  31. #define WEAP_LINUX_XTRA_OFF 4
  32. #define m_fKnown 44
  33. #define m_flNextPrimaryAttack 46
  34. #define m_flTimeWeaponIdle 48
  35. #define m_iClip 51
  36. #define m_fInReload 54
  37. #define PLAYER_LINUX_XTRA_OFF 5
  38. #define m_flNextAttack 83
  39.  
  40. #define guitar_RELOAD_TIME 3.0
  41.  
  42. const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_GALIL)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_GALIL)
  43. new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10",
  44. "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_galil",
  45. "weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
  46. "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",
  47. "weapon_ak47", "weapon_knife", "weapon_galil" }
  48.  
  49. new const Sound_Fire[][] = { "cso_wpn/gt-1.wav" }
  50. new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 }
  51. new guitar_V_MODEL[64] = "models/v_guitar.mdl"
  52. new guitar_P_MODEL[64] = "models/p_guitar.mdl"
  53. new guitar_W_MODEL[64] = "models/w_guitar.mdl"
  54.  
  55. new cvar_dmg_guitar, cvar_recoil_guitar, cvar_spd_guitar, cvar_guitar_ammo, cvar_clip_guitar
  56.  
  57. new g_has_guitar[33], g_MaxPlayers, Float:cl_pushangle[MAX_PLAYERS + 1][3], m_iBlood[2], g_orig_event_m249, g_IsInPrimaryAttack, g_clip_ammo[33], g_guitar_TmpClip[33]
  58.  
  59. public plugin_init()
  60. {
  61. register_plugin("Weapon >Guitar<", "1.0", "Crock")
  62. register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
  63. register_event("CurWeapon","CurrentWeapon","be","1=1")
  64. RegisterHam(Ham_Item_AddToPlayer, "weapon_galil", "fw_Aug_AddToPlayer")
  65. RegisterHam(Ham_Use, "func_tank", "fw_UseStationary_Post", 1)
  66. RegisterHam(Ham_Use, "func_tankmortar", "fw_UseStationary_Post", 1)
  67. RegisterHam(Ham_Use, "func_tankrocket", "fw_UseStationary_Post", 1)
  68. RegisterHam(Ham_Use, "func_tanklaser", "fw_UseStationary_Post", 1)
  69. for (new i = 1; i < sizeof WEAPONENTNAMES; i++)
  70. if (WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES[i], "fw_Item_Deploy_Post", 1)
  71. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_galil", "fw_Aug_PrimaryAttack")
  72. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_galil", "fw_Aug_PrimaryAttack_Post", 1)
  73. RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  74. RegisterHam(Ham_Item_PostFrame, "weapon_galil", "guitar__ItemPostFrame");
  75. RegisterHam(Ham_Weapon_Reload, "weapon_galil", "guitar__Reload");
  76. RegisterHam(Ham_Weapon_Reload, "weapon_galil", "guitar__Reload_Post", 1);
  77. register_forward(FM_SetModel, "fw_SetModel")
  78. register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
  79. register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
  80.  
  81. cvar_dmg_guitar = register_cvar("guitar_damage", "2.67")
  82. cvar_recoil_guitar = register_cvar("guitar_recoil", "0.78")
  83. cvar_spd_guitar = register_cvar("guitar_speed", "0.87")
  84. cvar_clip_guitar = register_cvar("guitar_clip", "40")
  85. cvar_guitar_ammo = register_cvar("guitar_ammo", "180")
  86.  
  87. register_clcmd("say /fegyo", "addweap")
  88. register_logevent("logevent_round_start", 2, "1=Round_Start")
  89.  
  90. g_MaxPlayers = get_maxplayers()
  91. }
  92.  
  93. public plugin_precache()
  94. {
  95. precache_sound("weapons/gt-1.wav")
  96. precache_sound("weapons/gt_clipon.wav")
  97. precache_sound("weapons/gt_dr.wav")
  98. precache_sound("weapons/gt_in.wav")
  99. precache_sound("weapons/gt_clipout.wav")
  100. precache_model(guitar_V_MODEL)
  101. precache_model(guitar_P_MODEL)
  102. precache_model(guitar_W_MODEL)
  103. for(new i = 0; i < sizeof Sound_Fire; i++)
  104. precache_sound(Sound_Fire[i])
  105. m_iBlood[0] = precache_model("sprites/blood.spr")
  106. m_iBlood[1] = precache_model("sprites/bloodspray.spr")
  107.  
  108. register_forward(FM_PrecacheEvent, "fwPrecacheEvent_Post", 1)
  109. }
  110.  
  111. public logevent_round_start(id)
  112. {
  113. g_has_guitar[id] = false
  114. }
  115.  
  116. public fwPrecacheEvent_Post(type, const name[])
  117. {
  118. if (equal("events/galil.sc", name))
  119. {
  120. g_orig_event_m249 = get_orig_retval()
  121. return FMRES_HANDLED
  122. }
  123.  
  124. return FMRES_IGNORED
  125. }
  126.  
  127. public client_connect(id)
  128. {
  129. g_has_guitar[id] = false
  130. }
  131.  
  132. public client_disconnect(id)
  133. {
  134. g_has_guitar[id] = false
  135. }
  136. public fw_SetModel(entity, model[])
  137. {
  138. if(!is_valid_ent(entity))
  139. return FMRES_IGNORED;
  140.  
  141. static szClassName[33]
  142. entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName))
  143.  
  144. if(!equal(szClassName, "weaponbox"))
  145. return FMRES_IGNORED;
  146.  
  147. static iOwner
  148.  
  149. iOwner = entity_get_edict(entity, EV_ENT_owner)
  150.  
  151. if(equal(model, "models/w_galil.mdl"))
  152. {
  153. static iStoredAugID
  154.  
  155. iStoredAugID = find_ent_by_owner(ENG_NULLENT, "weapon_galil", entity)
  156.  
  157. if(!is_valid_ent(iStoredAugID))
  158. return FMRES_IGNORED;
  159.  
  160. if(g_has_guitar[iOwner])
  161. {
  162. entity_set_int(iStoredAugID, EV_INT_WEAPONKEY, guitar_WEAPONKEY)
  163.  
  164. g_has_guitar[iOwner] = false
  165.  
  166. entity_set_model(entity, guitar_W_MODEL)
  167.  
  168. return FMRES_SUPERCEDE;
  169. }
  170. }
  171.  
  172. return FMRES_IGNORED;
  173. }
  174.  
  175. public addweap(id)
  176. {
  177. drop_weapons(id, 1);
  178. new iWep2 = give_item(id,"weapon_galil")
  179. if( iWep2 > 0 )
  180. {
  181. cs_set_weapon_ammo( iWep2, get_pcvar_num(cvar_clip_guitar) )
  182. cs_set_user_bpammo (id, CSW_GALIL, get_pcvar_num(cvar_guitar_ammo))
  183. }
  184. g_has_guitar[id] = true;
  185.  
  186. }
  187.  
  188. public fw_Aug_AddToPlayer(Aug, id)
  189. {
  190. if(!is_valid_ent(Aug) || !is_user_connected(id))
  191. return HAM_IGNORED;
  192.  
  193. if(entity_get_int(Aug, EV_INT_WEAPONKEY) == guitar_WEAPONKEY)
  194. {
  195. g_has_guitar[id] = true
  196.  
  197. entity_set_int(Aug, EV_INT_WEAPONKEY, 0)
  198.  
  199. return HAM_HANDLED;
  200. }
  201. return HAM_IGNORED;
  202. }
  203.  
  204. public fw_UseStationary_Post(entity, caller, activator, use_type)
  205. {
  206. if (use_type == USE_STOPPED && is_user_connected(caller))
  207. replace_weapon_models(caller, get_user_weapon(caller))
  208. }
  209.  
  210. public fw_Item_Deploy_Post(weapon_ent)
  211. {
  212. static owner
  213. owner = fm_cs_get_weapon_ent_owner(weapon_ent)
  214.  
  215. static weaponid
  216. weaponid = cs_get_weapon_id(weapon_ent)
  217.  
  218. replace_weapon_models(owner, weaponid)
  219. }
  220.  
  221. public CurrentWeapon(id)
  222. {
  223. replace_weapon_models(id, read_data(2))
  224.  
  225. if(read_data(2) != CSW_GALIL || !g_has_guitar[id])
  226. return
  227.  
  228. static Float:iSpeed
  229. if(g_has_guitar[id])
  230. iSpeed = get_pcvar_float(cvar_spd_guitar)
  231.  
  232. static weapon[32],Ent
  233. get_weaponname(read_data(2),weapon,31)
  234. Ent = find_ent_by_owner(-1,weapon,id)
  235. if(Ent)
  236. {
  237. static Float:Delay, Float:M_Delay
  238. Delay = get_pdata_float( Ent, 46, 4) * iSpeed
  239. M_Delay = get_pdata_float( Ent, 47, 4) * iSpeed
  240. if (Delay > 0.0)
  241. {
  242. set_pdata_float(Ent, 46, Delay, 4)
  243. set_pdata_float(Ent, 47, M_Delay, 4)
  244. }
  245. }
  246. }
  247.  
  248. replace_weapon_models(id, weaponid)
  249. {
  250. switch (weaponid)
  251. {
  252. case CSW_GALIL:
  253. {
  254.  
  255. if(g_has_guitar[id])
  256. {
  257. set_pev(id, pev_viewmodel2, guitar_V_MODEL)
  258. set_pev(id, pev_weaponmodel2, guitar_P_MODEL)
  259. }
  260. }
  261. }
  262. }
  263.  
  264. public fw_UpdateClientData_Post(Player, SendWeapons, CD_Handle)
  265. {
  266. if(!is_user_alive(Player) || (get_user_weapon(Player) != CSW_GALIL || !g_has_guitar[Player]))
  267.  
  268. return FMRES_IGNORED
  269.  
  270. set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001)
  271. return FMRES_HANDLED
  272. }
  273.  
  274. public fw_Aug_PrimaryAttack(Weapon)
  275. {
  276. new Player = get_pdata_cbase(Weapon, 41, 5)
  277.  
  278. if (!g_has_guitar[Player])
  279. return;
  280.  
  281. g_IsInPrimaryAttack = 1
  282. pev(Player,pev_punchangle,cl_pushangle[Player])
  283.  
  284. g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon)
  285. }
  286.  
  287. public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
  288. {
  289. if (eventid != g_orig_event_m249 || !g_IsInPrimaryAttack)
  290. return FMRES_IGNORED
  291. if (!(1 <= invoker <= g_MaxPlayers))
  292. return FMRES_IGNORED
  293.  
  294. playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
  295. return FMRES_SUPERCEDE
  296. }
  297.  
  298. public fw_Aug_PrimaryAttack_Post(Weapon)
  299. {
  300. g_IsInPrimaryAttack = 0
  301. new Player = get_pdata_cbase(Weapon, 41, 5)
  302.  
  303. if(g_has_guitar[Player])
  304. {
  305. new Float:push[3]
  306. pev(Player,pev_punchangle,push)
  307. xs_vec_sub(push,cl_pushangle[Player],push)
  308.  
  309. xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_guitar),push)
  310. xs_vec_add(push,cl_pushangle[Player],push)
  311. set_pev(Player,pev_punchangle,push)
  312.  
  313. if (!g_clip_ammo[Player])
  314. return
  315.  
  316. emit_sound(Player, CHAN_WEAPON, Sound_Fire[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  317.  
  318. switch(random_num(0,2))
  319. {
  320. case 0:
  321. UTIL_PlayWeaponAnimation(Player, anim_shoot1)
  322. case 1:
  323. UTIL_PlayWeaponAnimation(Player, anim_shoot2)
  324. case 2:
  325. UTIL_PlayWeaponAnimation(Player, anim_shoot3)
  326. }
  327.  
  328. make_blood_and_bulletholes(Player)
  329. }
  330. }
  331.  
  332. public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
  333. {
  334. if (victim != attacker && is_user_connected(attacker))
  335. {
  336. if(get_user_weapon(attacker) == CSW_GALIL)
  337. {
  338. if(g_has_guitar[attacker])
  339. SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmg_guitar))
  340. }
  341. }
  342. }
  343.  
  344. public message_DeathMsg(msg_id, msg_dest, id)
  345. {
  346. static szTruncatedWeapon[33], iAttacker, iVictim
  347.  
  348. get_msg_arg_string(4, szTruncatedWeapon, charsmax(szTruncatedWeapon))
  349.  
  350. iAttacker = get_msg_arg_int(1)
  351. iVictim = get_msg_arg_int(2)
  352.  
  353. if(!is_user_connected(iAttacker) || iAttacker == iVictim)
  354. return PLUGIN_CONTINUE
  355.  
  356. if(equal(szTruncatedWeapon, "galil") && get_user_weapon(iAttacker) == CSW_GALIL)
  357. {
  358. if(g_has_guitar[iAttacker])
  359. set_msg_arg_string(4, "[guitar]")
  360. }
  361.  
  362. return PLUGIN_CONTINUE
  363. }
  364.  
  365. stock fm_cs_get_current_weapon_ent(id)
  366. {
  367. return get_pdata_cbase(id, OFFSET_ACTIVE_ITEM, OFFSET_LINUX);
  368. }
  369.  
  370. stock fm_cs_get_weapon_ent_owner(ent)
  371. {
  372. return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS);
  373. }
  374.  
  375. stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
  376. {
  377. set_pev(Player, pev_weaponanim, Sequence)
  378.  
  379. message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
  380. write_byte(Sequence)
  381. write_byte(pev(Player, pev_body))
  382. message_end()
  383. }
  384.  
  385. stock make_blood_and_bulletholes(id)
  386. {
  387. new aimOrigin[3], target, body
  388. get_user_origin(id, aimOrigin, 3)
  389. get_user_aiming(id, target, body)
  390.  
  391. if(target > 0 && target <= g_MaxPlayers)
  392. {
  393. new Float:fStart[3], Float:fEnd[3], Float:fRes[3], Float:fVel[3]
  394. pev(id, pev_origin, fStart)
  395.  
  396. velocity_by_aim(id, 64, fVel)
  397.  
  398. fStart[0] = float(aimOrigin[0])
  399. fStart[1] = float(aimOrigin[1])
  400. fStart[2] = float(aimOrigin[2])
  401. fEnd[0] = fStart[0]+fVel[0]
  402. fEnd[1] = fStart[1]+fVel[1]
  403. fEnd[2] = fStart[2]+fVel[2]
  404.  
  405. new res
  406. engfunc(EngFunc_TraceLine, fStart, fEnd, 0, target, res)
  407. get_tr2(res, TR_vecEndPos, fRes)
  408.  
  409. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  410. write_byte(TE_BLOODSPRITE)
  411. write_coord(floatround(fStart[0]))
  412. write_coord(floatround(fStart[1]))
  413. write_coord(floatround(fStart[2]))
  414. write_short( m_iBlood [ 1 ])
  415. write_short( m_iBlood [ 0 ] )
  416. write_byte(70)
  417. write_byte(random_num(1,2))
  418. message_end()
  419.  
  420.  
  421. }
  422. else if(!is_user_connected(target))
  423. {
  424. if(target)
  425. {
  426. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  427. write_byte(TE_DECAL)
  428. write_coord(aimOrigin[0])
  429. write_coord(aimOrigin[1])
  430. write_coord(aimOrigin[2])
  431. write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] )
  432. write_short(target)
  433. message_end()
  434. }
  435. else
  436. {
  437. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  438. write_byte(TE_WORLDDECAL)
  439. write_coord(aimOrigin[0])
  440. write_coord(aimOrigin[1])
  441. write_coord(aimOrigin[2])
  442. write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] )
  443. message_end()
  444. }
  445.  
  446. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  447. write_byte(TE_GUNSHOTDECAL)
  448. write_coord(aimOrigin[0])
  449. write_coord(aimOrigin[1])
  450. write_coord(aimOrigin[2])
  451. write_short(id)
  452. write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] )
  453. message_end()
  454. }
  455. }
  456.  
  457. public guitar__ItemPostFrame(weapon_entity)
  458. {
  459. new id = pev(weapon_entity, pev_owner)
  460. if (!is_user_connected(id))
  461. return HAM_IGNORED;
  462.  
  463. if (!g_has_guitar[id])
  464. return HAM_IGNORED;
  465.  
  466. static iClipExtra
  467.  
  468. if(g_has_guitar[id])
  469. iClipExtra = get_pcvar_num(cvar_clip_guitar)
  470.  
  471. new Float:flNextAttack = get_pdata_float(id, m_flNextAttack, PLAYER_LINUX_XTRA_OFF)
  472.  
  473. new iBpAmmo = cs_get_user_bpammo(id, CSW_GALIL);
  474. new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)
  475.  
  476. new fInReload = get_pdata_int(weapon_entity, m_fInReload, WEAP_LINUX_XTRA_OFF)
  477.  
  478. if( fInReload && flNextAttack <= 0.0 )
  479. {
  480. new j = min(iClipExtra - iClip, iBpAmmo)
  481.  
  482. set_pdata_int(weapon_entity, m_iClip, iClip + j, WEAP_LINUX_XTRA_OFF)
  483. cs_set_user_bpammo(id, CSW_GALIL, iBpAmmo-j);
  484.  
  485. set_pdata_int(weapon_entity, m_fInReload, 0, WEAP_LINUX_XTRA_OFF)
  486. fInReload = 0
  487. }
  488.  
  489. return HAM_IGNORED;
  490. }
  491.  
  492. public guitar__Reload(weapon_entity)
  493. {
  494. new id = pev(weapon_entity, pev_owner)
  495. if (!is_user_connected(id))
  496. return HAM_IGNORED;
  497.  
  498. if (!g_has_guitar[id])
  499. return HAM_IGNORED;
  500.  
  501. static iClipExtra
  502.  
  503. if(g_has_guitar[id])
  504. iClipExtra = get_pcvar_num(cvar_clip_guitar)
  505.  
  506. g_guitar_TmpClip[id] = -1;
  507.  
  508. new iBpAmmo = cs_get_user_bpammo(id, CSW_GALIL);
  509. new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)
  510.  
  511. if (iBpAmmo <= 0)
  512. return HAM_SUPERCEDE;
  513.  
  514. if (iClip >= iClipExtra)
  515. return HAM_SUPERCEDE;
  516.  
  517. g_guitar_TmpClip[id] = iClip;
  518.  
  519. return HAM_IGNORED;
  520. }
  521.  
  522. public guitar__Reload_Post(weapon_entity)
  523. {
  524. new id = pev(weapon_entity, pev_owner)
  525. if (!is_user_connected(id))
  526. return HAM_IGNORED;
  527.  
  528. if (!g_has_guitar[id])
  529. return HAM_IGNORED;
  530.  
  531. if (g_guitar_TmpClip[id] == -1)
  532. return HAM_IGNORED;
  533.  
  534. static Float:iReloadTime
  535. if(g_has_guitar[id])
  536. iReloadTime = guitar_RELOAD_TIME
  537.  
  538. set_pdata_int(weapon_entity, m_iClip, g_guitar_TmpClip[id], WEAP_LINUX_XTRA_OFF)
  539.  
  540. set_pdata_float(weapon_entity, m_flTimeWeaponIdle, iReloadTime, WEAP_LINUX_XTRA_OFF)
  541.  
  542. set_pdata_float(id, m_flNextAttack, iReloadTime, PLAYER_LINUX_XTRA_OFF)
  543.  
  544. set_pdata_int(weapon_entity, m_fInReload, 1, WEAP_LINUX_XTRA_OFF)
  545.  
  546. UTIL_PlayWeaponAnimation(id, 1)
  547.  
  548. return HAM_IGNORED;
  549. }
  550.  
  551. stock drop_weapons(id, dropwhat)
  552. {
  553. static weapons[32], num, i, weaponid
  554. num = 0
  555. get_user_weapons(id, weapons, num)
  556.  
  557. for (i = 0; i < num; i++)
  558. {
  559. weaponid = weapons[i]
  560.  
  561. if (dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
  562. {
  563. static wname[32]
  564. get_weaponname(weaponid, wname, sizeof wname - 1)
  565. engclient_cmd(id, "drop", wname)
  566. }
  567. }
  568. }
  569.  

_________________
Kép

Ők köszönték meg CrB nek ezt a hozzászólást: nyalka17 (2014.01.16. 19:36)
  Népszerűség: 2.27%


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


Ki van itt

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