HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2. #include <engine>
  3. #include <fakemeta>
  4. #include <fakemeta_util>
  5. #include <hamsandwich>
  6. #include <cstrike>
  7. #include <fun>
  8. #include <xs>
  9. //#include <zombieplague>
  10.  
  11. #define PLUGIN "Lightning BIG-EYE"
  12. #define VERSION "1.0"
  13. #define AUTHOR "Dias"
  14. #define MAGYAROSITAS_BY "Patrik3"
  15.  
  16. #define DAMAGE 17
  17. #define BURST_NUM 5
  18. #define BURST_DELAY 0.025
  19. #define RECOIL 0.25
  20. #define DEFAULT_CLIP 40
  21.  
  22. #define WP_BASEON CSW_FIVESEVEN
  23. #define wp_baseon_classname "weapon_fiveseven"
  24. #define WP_KEY 221132
  25.  
  26. #define TASK_BURST 123123
  27.  
  28. new const wp_model[3][] = {
  29. "models/v_waterpistol.mdl",
  30. "models/p_waterpistol.mdl",
  31. "models/w_waterpistol.mdl"
  32. }
  33.  
  34. new const wp_sound[6][] = {
  35. "weapons/waterpistol_clipin1.wav",
  36. "weapons/waterpistol_clipin2.wav",
  37. "weapons/waterpistol_clipout1.wav",
  38. "weapons/waterpistol_draw.wav",
  39. "weapons/waterpistol_idle.wav",
  40. "weapons/waterpistol_shoot1.wav"
  41. }
  42.  
  43. new const wp_file[3][] = {
  44. "sprites/weapon_waterpistol.txt",
  45. "sprites/640hud52_2.spr",
  46. "sprites/640hud7_2.spr"
  47. }
  48.  
  49. // HardCode
  50. new g_had_wp[33], Float:g_last_fire[33], m_iBlood[2],
  51. g_iBurstNum[33], g_iBurst[33], Float:g_last_shoot[33], Float:g_recoil[33], g_clip[33]
  52. new g_wp, g_smokepuff_id
  53.  
  54. const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_MAC10)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_MAC10)|(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_P90)
  55.  
  56. public plugin_init()
  57. {
  58. register_plugin(PLUGIN, VERSION, AUTHOR)
  59.  
  60. register_event("CurWeapon", "event_checkweapon", "be", "1=1")
  61.  
  62. register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
  63. register_forward(FM_CmdStart, "fw_CmdStart")
  64. register_forward(FM_SetModel, "fw_SetModel")
  65.  
  66. RegisterHam(Ham_Spawn, "player", "fw_spawn_post", 1)
  67. RegisterHam(Ham_Item_AddToPlayer, wp_baseon_classname, "ham_add_wp", 1)
  68. RegisterHam(Ham_Item_PostFrame, wp_baseon_classname, "ham_item_postframe")
  69. RegisterHam(Ham_TraceAttack, "worldspawn", "ham_traceattack", 1)
  70. RegisterHam(Ham_TraceAttack, "player", "ham_traceattack", 1)
  71.  
  72. RegisterHam(Ham_Item_PostFrame, wp_baseon_classname, "fw_PostFrame")
  73. RegisterHam(Ham_Weapon_Reload, wp_baseon_classname, "fw_Reload")
  74. RegisterHam(Ham_Weapon_Reload, wp_baseon_classname, "fw_Reload_Post", 1)
  75. RegisterHam(Ham_Weapon_PrimaryAttack, wp_baseon_classname, "fw_PrimaryAttack")
  76. RegisterHam(Ham_Weapon_PrimaryAttack, wp_baseon_classname, "fw_PrimaryAttack_Post", 1)
  77.  
  78. register_clcmd("weapon_waterpistol", "hook_change")
  79. register_clcmd("admin_get_waterpistol", "get_weapon", ADMIN_KICK)
  80.  
  81. //g_wp = zp_register_extra_item("Lightning BIG-EYE", 15, ZP_TEAM_HUMAN)
  82. }
  83.  
  84. public plugin_precache()
  85. {
  86. for(new i = 0; i < sizeof(wp_model); i++)
  87. engfunc(EngFunc_PrecacheModel, wp_model[i])
  88. for(new i = 0; i < sizeof(wp_sound); i++)
  89. engfunc(EngFunc_PrecacheSound, wp_sound[i])
  90.  
  91. engfunc(EngFunc_PrecacheGeneric, wp_file[0])
  92. engfunc(EngFunc_PrecacheModel, wp_file[1])
  93. engfunc(EngFunc_PrecacheModel, wp_file[2])
  94.  
  95. m_iBlood[0] = precache_model("sprites/blood.spr")
  96. m_iBlood[1] = precache_model("sprites/bloodspray.spr")
  97. g_smokepuff_id = engfunc(EngFunc_PrecacheModel, "sprites/wall_puff1.spr")
  98. }
  99.  
  100. public zp_extra_item_selected(id, itemid)
  101. {
  102. if(itemid != g_wp)
  103. return PLUGIN_HANDLED
  104.  
  105. get_weapon(id)
  106.  
  107. return PLUGIN_HANDLED
  108. }
  109.  
  110. public get_weapon(id)
  111. {
  112. drop_weapons(id, 2)
  113.  
  114. g_had_wp[id] = 1
  115. g_iBurst[id] = 0
  116.  
  117. g_iBurstNum[id] = BURST_NUM
  118.  
  119. give_item(id, wp_baseon_classname)
  120. engclient_cmd(id, wp_baseon_classname)
  121.  
  122. cs_set_user_bpammo(id, CSW_FIVESEVEN, 200)
  123.  
  124. static ent; ent = fm_get_user_weapon_entity(id, CSW_FIVESEVEN)
  125. if(pev_valid(ent)) cs_set_weapon_ammo(ent, DEFAULT_CLIP)
  126.  
  127. engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, get_user_msgid("CurWeapon"), {0, 0, 0}, id)
  128. write_byte(1)
  129. write_byte(CSW_FIVESEVEN)
  130. write_byte(DEFAULT_CLIP)
  131. message_end()
  132. }
  133.  
  134. public fw_spawn_post(id)
  135. {
  136. remove_weapon(id)
  137. }
  138.  
  139. public zp_user_infected_post(id)
  140. {
  141. remove_weapon(id)
  142. }
  143.  
  144. public remove_weapon(id)
  145. {
  146. g_had_wp[id] = 0
  147. g_iBurst[id] = 0
  148. g_iBurstNum[id] = 0
  149. }
  150.  
  151. public hook_change(id)
  152. {
  153. engclient_cmd(id, wp_baseon_classname)
  154. return PLUGIN_HANDLED
  155. }
  156.  
  157. public event_checkweapon(id)
  158. {
  159. if(!is_user_alive(id) || !is_user_connected(id))
  160. return PLUGIN_HANDLED
  161. //if(zp_get_user_zombie(id) || zp_get_user_survivor(id))
  162. // return PLUGIN_HANDLED
  163. if(get_user_weapon(id) != WP_BASEON || !g_had_wp[id])
  164. return PLUGIN_HANDLED
  165.  
  166. set_pev(id, pev_viewmodel2, wp_model[0])
  167. set_pev(id, pev_weaponmodel2, wp_model[1])
  168.  
  169. return PLUGIN_HANDLED
  170. }
  171.  
  172. public fw_UpdateClientData_Post(id, sendweapons, cd_handle)
  173. {
  174. if(!is_user_alive(id) || !is_user_connected(id))
  175. return FMRES_IGNORED
  176. //if(zp_get_user_zombie(id) || zp_get_user_survivor(id))
  177. // return FMRES_IGNORED
  178. if(get_user_weapon(id) != WP_BASEON || !g_had_wp[id])
  179. return FMRES_IGNORED
  180.  
  181. set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001)
  182.  
  183. return FMRES_HANDLED
  184. }
  185.  
  186. public fw_CmdStart(id, uc_handle, seed)
  187. {
  188. if(!is_user_alive(id) || !is_user_connected(id))
  189. return FMRES_HANDLED
  190. //if(zp_get_user_zombie(id) || zp_get_user_survivor(id))
  191. // return FMRES_HANDLED
  192. if(get_user_weapon(id) != WP_BASEON || !g_had_wp[id])
  193. return FMRES_HANDLED
  194.  
  195. static CurButton
  196. CurButton = get_uc(uc_handle, UC_Buttons)
  197.  
  198. if(CurButton & IN_ATTACK)
  199. {
  200. CurButton &= ~IN_ATTACK
  201. set_uc(uc_handle, UC_Buttons, CurButton)
  202.  
  203. static Float:CurTime
  204. CurTime = get_gametime()
  205.  
  206. new Float:flNextAttack ; flNextAttack = get_pdata_float(id, 83, 5)
  207.  
  208. if (flNextAttack > 0.0)
  209. return FMRES_IGNORED
  210.  
  211. if(CurTime - 0.5 > g_last_fire[id])
  212. {
  213. static ent
  214. ent = find_ent_by_owner(-1, wp_baseon_classname, id)
  215.  
  216. if(cs_get_weapon_ammo(ent) <= 0)
  217. return FMRES_IGNORED
  218.  
  219. g_iBurst[id] = 1
  220. g_iBurstNum[id] = BURST_NUM
  221.  
  222. g_last_fire[id] = CurTime
  223. }
  224. }
  225.  
  226. return FMRES_HANDLED
  227. }
  228.  
  229. public fw_SetModel(ent, const model[])
  230. {
  231. if(!is_valid_ent(ent))
  232. return FMRES_IGNORED
  233.  
  234. static szClassName[33]
  235. entity_get_string(ent, EV_SZ_classname, szClassName, charsmax(szClassName))
  236.  
  237. if(!equal(szClassName, "weaponbox"))
  238. return FMRES_IGNORED
  239.  
  240. static iOwner
  241. iOwner = entity_get_edict(ent, EV_ENT_owner)
  242.  
  243. if(equal(model, "models/w_fiveseven.mdl"))
  244. {
  245. static at4cs
  246. at4cs = find_ent_by_owner(-1, "weapon_fiveseven", ent)
  247.  
  248. if(!is_valid_ent(at4cs))
  249. return FMRES_IGNORED;
  250.  
  251. if(g_had_wp[iOwner])
  252. {
  253. entity_set_int(at4cs, EV_INT_impulse, WP_KEY)
  254. g_had_wp[iOwner] = 0
  255. entity_set_model(ent, wp_model[2])
  256.  
  257. return FMRES_SUPERCEDE
  258. }
  259. }
  260.  
  261. return FMRES_IGNORED
  262. }
  263.  
  264. public client_PostThink(id)
  265. {
  266. if(!is_user_alive(id) || !is_user_connected(id))
  267. return
  268. //if(zp_get_user_zombie(id) || zp_get_user_survivor(id))
  269. // return
  270. if(get_user_weapon(id) != WP_BASEON || !g_had_wp[id])
  271. return
  272. if(!g_iBurst[id] || !g_iBurstNum[id])
  273. return
  274.  
  275. static Float:CurTime
  276. CurTime = get_gametime()
  277.  
  278. if(CurTime - BURST_DELAY > g_last_shoot[id])
  279. {
  280. do_burst(id)
  281. g_last_shoot[id] = CurTime
  282. }
  283. }
  284.  
  285. public do_burst(id)
  286. {
  287. static ent
  288. ent = find_ent_by_owner(-1, wp_baseon_classname, id)
  289.  
  290. if(!pev_valid(ent))
  291. return
  292.  
  293. if(g_iBurstNum[id] > 0 && g_iBurst[id] && cs_get_weapon_ammo(ent) > 0)
  294. {
  295. ExecuteHamB(Ham_Weapon_PrimaryAttack, ent)
  296.  
  297. set_weapon_anim(id, 1)
  298. emit_sound(id, CHAN_WEAPON, wp_sound[5], 1.0, ATTN_NORM, 0, PITCH_NORM)
  299.  
  300. g_iBurstNum[id]--
  301. } else {
  302. g_iBurst[id] = 0
  303. remove_task(id+TASK_BURST)
  304. }
  305. }
  306.  
  307. public ham_add_wp(ent, id)
  308. {
  309. if(entity_get_int(ent, EV_INT_impulse) == WP_KEY)
  310. {
  311. g_had_wp[id] = 1
  312. }
  313.  
  314. if(g_had_wp[id])
  315. {
  316. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("WeaponList"), _, id)
  317. write_string("weapon_waterpistol")
  318. write_byte(7)
  319. write_byte(100)
  320. write_byte(-1)
  321. write_byte(-1)
  322. write_byte(1)
  323. write_byte(6)
  324. write_byte(WP_BASEON)
  325. write_byte(0)
  326. message_end()
  327. } else {
  328. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("WeaponList"), _, id)
  329. write_string("weapon_fiveseven")
  330. write_byte(7)
  331. write_byte(100)
  332. write_byte(-1)
  333. write_byte(-1)
  334. write_byte(1)
  335. write_byte(6)
  336. write_byte(WP_BASEON)
  337. write_byte(0)
  338. message_end()
  339. }
  340. }
  341.  
  342. public ham_item_postframe(iEnt)
  343. {
  344. if (!pev_valid(iEnt)) return HAM_IGNORED
  345.  
  346. new id = pev(iEnt, pev_owner)
  347.  
  348. if(!is_user_alive(id) || !is_user_connected(id))
  349. return HAM_IGNORED
  350. //if(zp_get_user_zombie(id) || zp_get_user_survivor(id))
  351. // return HAM_IGNORED
  352. if(get_user_weapon(id) != WP_BASEON || !g_had_wp[id])
  353. return HAM_IGNORED
  354.  
  355. return HAM_IGNORED
  356. }
  357.  
  358. public ham_traceattack(ent, attacker, Float:Damage, Float:fDir[3], ptr, iDamageType)
  359. {
  360. if(!is_user_alive(attacker) || !is_user_connected(attacker))
  361. return HAM_IGNORED
  362. //if(zp_get_user_zombie(id) || zp_get_user_survivor(id))
  363. // return HAM_IGNORED
  364. if(get_user_weapon(attacker) != WP_BASEON || !g_had_wp[attacker])
  365. return HAM_IGNORED
  366.  
  367. static Float:flEnd[3], Float:vecPlane[3]
  368.  
  369. get_tr2(ptr, TR_vecEndPos, flEnd)
  370. get_tr2(ptr, TR_vecPlaneNormal, vecPlane)
  371.  
  372. if(!is_user_alive(ent))
  373. {
  374. make_bullet(attacker, flEnd)
  375. fake_smoke(attacker, ptr)
  376. } else {
  377. static Float:flEnd[3]
  378. get_tr2(ptr, TR_vecEndPos, flEnd)
  379.  
  380. create_blood(flEnd)
  381. }
  382.  
  383. SetHamParamFloat(3, float(DAMAGE))
  384.  
  385. return HAM_HANDLED
  386. }
  387.  
  388. public fw_PrimaryAttack(ent)
  389. {
  390. static id; id = pev(ent, pev_owner)
  391.  
  392. pev(id, pev_punchangle, g_recoil[id])
  393.  
  394. return HAM_IGNORED
  395. }
  396.  
  397. public fw_PrimaryAttack_Post(ent)
  398. {
  399. static id; id = pev(ent,pev_owner)
  400. if(g_had_wp[id])
  401. {
  402. static Float:push[3]
  403. pev(id,pev_punchangle,push)
  404. xs_vec_sub(push, g_recoil[id],push)
  405.  
  406. push[1] += random_float(-1.5, 1.5)
  407. xs_vec_mul_scalar(push, RECOIL,push)
  408. xs_vec_add(push, g_recoil[id], push)
  409. set_pev(id, pev_punchangle, push)
  410. }
  411.  
  412. return HAM_IGNORED
  413. }
  414.  
  415.  
  416. public fw_PostFrame(ent)
  417. {
  418. if(!pev_valid(ent))
  419. return HAM_IGNORED
  420.  
  421. static id
  422. id = pev(ent, pev_owner)
  423.  
  424. if(is_user_alive(id) && is_user_connected(id) && g_had_wp[id])
  425. {
  426. static Float:flNextAttack; flNextAttack = get_pdata_float(id, 83, 5)
  427.  
  428. static bpammo
  429. bpammo = cs_get_user_bpammo(id, CSW_FIVESEVEN)
  430.  
  431. static iClip; iClip = get_pdata_int(ent, 51, 4)
  432. static fInReload; fInReload = get_pdata_int(ent, 54, 4)
  433.  
  434. if(fInReload && flNextAttack <= 0.0)
  435. {
  436. static temp1
  437. temp1 = min(DEFAULT_CLIP - iClip, bpammo)
  438.  
  439. set_pdata_int(ent, 51, iClip + temp1, 4)
  440. cs_set_user_bpammo(id, CSW_FIVESEVEN, bpammo - temp1)
  441.  
  442. set_pdata_int(ent, 54, 0, 4)
  443.  
  444. fInReload = 0
  445. }
  446. }
  447.  
  448. return HAM_IGNORED
  449. }
  450.  
  451. public fw_Reload(ent)
  452. {
  453. if(!pev_valid(ent))
  454. return HAM_IGNORED
  455.  
  456. static id
  457. id = pev(ent, pev_owner)
  458.  
  459. if(is_user_alive(id) && is_user_connected(id) && g_had_wp[id])
  460. {
  461. g_clip[id] = -1
  462.  
  463. static bpammo
  464. bpammo = cs_get_user_bpammo(id, CSW_FIVESEVEN)
  465.  
  466. static iClip; iClip = get_pdata_int(ent, 51, 4)
  467.  
  468. if (bpammo <= 0)
  469. return HAM_SUPERCEDE
  470.  
  471. if(iClip >= DEFAULT_CLIP)
  472. return HAM_SUPERCEDE
  473.  
  474.  
  475. g_clip[id] = iClip
  476. }
  477.  
  478. return HAM_IGNORED
  479. }
  480.  
  481. public fw_Reload_Post(ent)
  482. {
  483. if(!pev_valid(ent))
  484. return HAM_IGNORED
  485.  
  486. static id
  487. id = pev(ent, pev_owner)
  488.  
  489. if(is_user_alive(id) && is_user_connected(id) && g_had_wp[id])
  490. {
  491. if (g_clip[id] == -1)
  492. return HAM_IGNORED
  493.  
  494. static Float:reload_time
  495. reload_time = 2.2
  496.  
  497. set_pdata_int(ent, 51, g_clip[id], 4)
  498. set_pdata_float(ent, 48, reload_time, 4)
  499. set_pdata_float(id, 83, reload_time, 5)
  500. set_pdata_int(ent, 54, 1, 4)
  501.  
  502. set_weapon_anim(id, 4)
  503. }
  504.  
  505. return HAM_IGNORED
  506. }
  507.  
  508. stock set_weapon_anim(id, anim)
  509. {
  510. set_pev(id, pev_weaponanim, anim)
  511.  
  512. message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, id)
  513. write_byte(anim)
  514. write_byte(pev(id,pev_body))
  515. message_end()
  516. }
  517.  
  518. stock drop_weapons(id, dropwhat)
  519. {
  520. static weapons[32], num, i, weaponid
  521. num = 0
  522. get_user_weapons(id, weapons, num)
  523.  
  524. for (i = 0; i < num; i++)
  525. {
  526. weaponid = weapons[i]
  527.  
  528. if (dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
  529. {
  530. static wname[32]
  531. get_weaponname(weaponid, wname, sizeof wname - 1)
  532. engclient_cmd(id, "drop", wname)
  533. }
  534. }
  535. }
  536.  
  537. stock make_bullet(id, Float:Origin[3])
  538. {
  539. // Find target
  540. new decal = random_num(41, 45)
  541. const loop_time = 2
  542.  
  543. static Body, Target
  544. get_user_aiming(id, Target, Body, 999999)
  545.  
  546. if(is_user_connected(Target))
  547. return
  548.  
  549. for(new i = 0; i < loop_time; i++)
  550. {
  551. // Put decal on "world" (a wall)
  552. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  553. write_byte(TE_WORLDDECAL)
  554. engfunc(EngFunc_WriteCoord, Origin[0])
  555. engfunc(EngFunc_WriteCoord, Origin[1])
  556. engfunc(EngFunc_WriteCoord, Origin[2])
  557. write_byte(decal)
  558. message_end()
  559.  
  560. // Show sparcles
  561. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  562. write_byte(TE_GUNSHOTDECAL)
  563. engfunc(EngFunc_WriteCoord, Origin[0])
  564. engfunc(EngFunc_WriteCoord, Origin[1])
  565. engfunc(EngFunc_WriteCoord, Origin[2])
  566. write_short(id)
  567. write_byte(decal)
  568. message_end()
  569. }
  570. }
  571.  
  572. public fake_smoke(id, trace_result)
  573. {
  574. static Float:vecSrc[3], Float:vecEnd[3], TE_FLAG
  575.  
  576. get_weapon_attachment(id, vecSrc)
  577. global_get(glb_v_forward, vecEnd)
  578.  
  579. xs_vec_mul_scalar(vecEnd, 8192.0, vecEnd)
  580. xs_vec_add(vecSrc, vecEnd, vecEnd)
  581.  
  582. get_tr2(trace_result, TR_vecEndPos, vecSrc)
  583. get_tr2(trace_result, TR_vecPlaneNormal, vecEnd)
  584.  
  585. xs_vec_mul_scalar(vecEnd, 2.5, vecEnd)
  586. xs_vec_add(vecSrc, vecEnd, vecEnd)
  587.  
  588. TE_FLAG |= TE_EXPLFLAG_NODLIGHTS
  589. TE_FLAG |= TE_EXPLFLAG_NOSOUND
  590. TE_FLAG |= TE_EXPLFLAG_NOPARTICLES
  591.  
  592. engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, vecEnd, 0)
  593. write_byte(TE_EXPLOSION)
  594. engfunc(EngFunc_WriteCoord, vecEnd[0])
  595. engfunc(EngFunc_WriteCoord, vecEnd[1])
  596. engfunc(EngFunc_WriteCoord, vecEnd[2] - 10.0)
  597. write_short(g_smokepuff_id)
  598. write_byte(2)
  599. write_byte(50)
  600. write_byte(TE_FLAG)
  601. message_end()
  602. }
  603.  
  604.  
  605. stock get_weapon_attachment(id, Float:output[3], Float:fDis = 40.0)
  606. {
  607. new Float:vfEnd[3], viEnd[3]
  608. get_user_origin(id, viEnd, 3)
  609. IVecFVec(viEnd, vfEnd)
  610.  
  611. new Float:fOrigin[3], Float:fAngle[3]
  612.  
  613. pev(id, pev_origin, fOrigin)
  614. pev(id, pev_view_ofs, fAngle)
  615.  
  616. xs_vec_add(fOrigin, fAngle, fOrigin)
  617.  
  618. new Float:fAttack[3]
  619.  
  620. xs_vec_sub(vfEnd, fOrigin, fAttack)
  621. xs_vec_sub(vfEnd, fOrigin, fAttack)
  622.  
  623. new Float:fRate
  624.  
  625. fRate = fDis / vector_length(fAttack)
  626. xs_vec_mul_scalar(fAttack, fRate, fAttack)
  627.  
  628. xs_vec_add(fOrigin, fAttack, output)
  629. }
  630.  
  631.  
  632. stock create_blood(const Float:origin[3])
  633. {
  634. // Show some blood :)
  635. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  636. write_byte(TE_BLOODSPRITE)
  637. engfunc(EngFunc_WriteCoord, origin[0])
  638. engfunc(EngFunc_WriteCoord, origin[1])
  639. engfunc(EngFunc_WriteCoord, origin[2])
  640. write_short(m_iBlood[1])
  641. write_short(m_iBlood[0])
  642. write_byte(75)
  643. write_byte(5)
  644. message_end()
  645. }
  646. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  647. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
  648. */
  649.