hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.05.01. 07:13



Jelenlévő felhasználók

Jelenleg 277 felhasználó van jelen :: 2 regisztrált, 0 rejtett és 275 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], 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  [ 1 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Firecracker
HozzászólásElküldve: 2013.07.24. 15:22 
Offline
Veterán
Avatar

Csatlakozott: 2013.03.26. 20:20
Hozzászólások: 1846
Megköszönt másnak: 27 alkalommal
Megköszönték neki: 120 alkalommal
Átírtam ezt a plugin, mert eredetileg a deagle-t hookolta le, de buggolt.
Aza nagy problémám, h a deagle-t átírtam usp-re és nem jeleníti meg az ammot(35)

Vki megcsinálná, hogy írja az ammot?
Előre is köszi :D

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. #define PLUGIN "CSO Shooting Star"
  9. #define VERSION "1.0"
  10. #define AUTHOR "Dias"
  11.  
  12. #define DAMAGE 70
  13. #define RADIUS 150
  14. #define AMMO 35
  15.  
  16. #define V_MODEL "models/b20_d2/male/v_firecracker.mdl"
  17. #define P_MODEL "models/b20_d2/p_firecracker.mdl"
  18. #define W_MODEL "models/b20_d2/w_firecracker.mdl"
  19. #define S_MODEL "models/b20_d2/shell_firecracker.mdl"
  20.  
  21. new const WeaponSounds[8][] =
  22. {
  23. "weapons/firecracker-1.wav",
  24. "weapons/firecracker-2.wav",
  25. "weapons/firecracker_draw.wav",
  26. "weapons/firecracker_bounce1.wav",
  27. "weapons/firecracker_bounce2.wav",
  28. "weapons/firecracker_bounce3.wav",
  29. "weapons/firecracker-wick.wav",
  30. "weapons/firecracker_explode.wav"
  31. }
  32.  
  33. new const WeaponResources[7][] =
  34. {
  35. "sprites/spark1.spr",
  36. "sprites/mooncake.spr",
  37. "sprites/muzzleflash18.spr",
  38. "sprites/scope_vip_grenade.spr",
  39. "sprites/weapon_firecracker_b20.txt",
  40. "sprites/b20_d2/weapon_firecracker_1.spr",
  41. "sprites/b20_d2/weapon_firecracker_2.spr"
  42. }
  43.  
  44. enum
  45. {
  46. FC_ANIM_IDLE = 0,
  47. FC_ANIM_SHOOT1,
  48. FC_ANIM_SHOOT2,
  49. FC_ANIM_DRAW
  50. }
  51.  
  52. #define CSW_FIRECRACKER CSW_USP
  53. #define weapon_firecracker "weapon_usp"
  54.  
  55. #define OLD_W_MODEL "models/w_usp.mdl"
  56. #define WEAPON_EVENT "events/usp.sc"
  57. #define WEAPON_SECRETCODE 2222
  58.  
  59. new g_Had_Firecracker[33], g_SpecialShoot[33], g_Old_Weapon[33], Float:g_LastShoot[33]
  60. new g_firecracker_event, g_ham_bot, g_Exp_SprId, g_Exp2_SprId, g_MF_SprId, g_Trail_SprId
  61.  
  62. public plugin_init()
  63. {
  64. register_plugin(PLUGIN, VERSION, AUTHOR)
  65.  
  66. register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
  67. register_event("DeathMsg", "Event_DeathMsg", "a")
  68.  
  69. register_think("grenade2", "fw_Grenade_Think")
  70. register_touch("grenade2", "*", "fw_Grenade_Touch")
  71.  
  72. register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
  73. register_forward(FM_PlaybackEvent, "fw_PlaybackEvent")
  74. register_forward(FM_SetModel, "fw_SetModel")
  75. register_forward(FM_CmdStart, "fw_CmdStart")
  76.  
  77. RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack")
  78. RegisterHam(Ham_TraceAttack, "player", "fw_TraceAttack")
  79. RegisterHam(Ham_Weapon_PrimaryAttack, weapon_firecracker, "fw_Item_PrimaryAttack")
  80. RegisterHam(Ham_Weapon_Reload, weapon_firecracker, "fw_Weapon_Reload")
  81. RegisterHam(Ham_Item_AddToPlayer, weapon_firecracker, "fw_Item_AddToPlayer_Post", 1)
  82.  
  83. register_clcmd("weapon_firecracker_b20", "Hook_Weapon")
  84. }
  85.  
  86. public plugin_precache()
  87. {
  88. engfunc(EngFunc_PrecacheModel, V_MODEL)
  89. engfunc(EngFunc_PrecacheModel, P_MODEL)
  90. engfunc(EngFunc_PrecacheModel, W_MODEL)
  91. engfunc(EngFunc_PrecacheModel, S_MODEL)
  92.  
  93. new i
  94. for(i = 0; i < sizeof(WeaponSounds); i++)
  95. engfunc(EngFunc_PrecacheSound, WeaponSounds[i])
  96. for(i = 0; i < sizeof(WeaponResources); i++)
  97. {
  98. if(i == 0) g_Exp_SprId = engfunc(EngFunc_PrecacheModel, WeaponResources[i])
  99. else if(i == 1) g_Exp2_SprId = engfunc(EngFunc_PrecacheModel, WeaponResources[i])
  100. else if(i == 2) g_MF_SprId = engfunc(EngFunc_PrecacheModel, WeaponResources[i])
  101. else if(i == 4) engfunc(EngFunc_PrecacheGeneric, WeaponResources[i])
  102. else engfunc(EngFunc_PrecacheModel, WeaponResources[i])
  103. }
  104.  
  105. g_Trail_SprId = engfunc(EngFunc_PrecacheModel, "sprites/laserbeam.spr")
  106.  
  107. register_forward(FM_PrecacheEvent, "fw_PrecacheEvent_Post", 1)
  108. }
  109.  
  110. public fw_PrecacheEvent_Post(type, const name[])
  111. {
  112. if(equal(WEAPON_EVENT, name))
  113. g_firecracker_event = get_orig_retval()
  114. }
  115.  
  116. public client_putinserver(id)
  117. {
  118. if(!g_ham_bot && is_user_bot(id))
  119. {
  120. g_ham_bot = 1
  121. set_task(0.1, "Do_Register_HamBot", id)
  122. }
  123. }
  124.  
  125. public Do_Register_HamBot(id)
  126. {
  127. RegisterHamFromEntity(Ham_TraceAttack, id, "fw_TraceAttack")
  128. }
  129.  
  130. public Hook_Weapon(id)
  131. {
  132. engclient_cmd(id, weapon_firecracker)
  133. return PLUGIN_HANDLED
  134. }
  135.  
  136. public firecracker(id)
  137. {
  138. if(!is_user_alive(id))
  139. return
  140.  
  141. g_Had_Firecracker[id] = 1
  142. g_SpecialShoot[id] = 0
  143.  
  144. fm_give_item(id, weapon_firecracker)
  145.  
  146. static Ent; Ent = fm_get_user_weapon_entity(id, CSW_FIRECRACKER)
  147. if(pev_valid(Ent)) cs_set_weapon_ammo(Ent, 0)
  148.  
  149. // Update Ammo
  150. cs_set_user_bpammo(id, CSW_FIRECRACKER, AMMO)
  151.  
  152. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("AmmoX"), _, id)
  153. write_byte(1)
  154. write_byte(AMMO)
  155. message_end()
  156. }
  157.  
  158. public Remove_Firecracker(id)
  159. {
  160. if(!is_user_connected(id))
  161. return
  162.  
  163. g_Had_Firecracker[id] = 0
  164. g_SpecialShoot[id] = 0
  165. }
  166.  
  167. public Event_CurWeapon(id)
  168. {
  169. if(!is_user_alive(id))
  170. return
  171.  
  172. static CSWID; CSWID = read_data(2)
  173.  
  174. if((CSWID == CSW_FIRECRACKER) && g_Had_Firecracker[id])
  175. {
  176. if(g_Old_Weapon[id] != CSW_FIRECRACKER) // DRAW
  177. {
  178. set_pev(id, pev_viewmodel2, V_MODEL)
  179. set_pev(id, pev_weaponmodel2, P_MODEL)
  180.  
  181. set_weapon_anim(id, FC_ANIM_DRAW)
  182. }
  183.  
  184. engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, get_user_msgid("CurWeapon"), {0, 0, 0}, id)
  185. write_byte(1)
  186. write_byte(CSW_FIRECRACKER)
  187. write_byte(-1)
  188. message_end()
  189.  
  190. static Ent; Ent = fm_get_user_weapon_entity(id, CSW_FIRECRACKER)
  191. if(pev_valid(Ent) && !cs_get_weapon_ammo(Ent)) cs_set_weapon_ammo(Ent, 0)
  192. }
  193.  
  194. g_Old_Weapon[id] = CSWID
  195. }
  196.  
  197. public Event_DeathMsg()
  198. {
  199. static Victim; Victim = read_data(2)
  200. Remove_Firecracker(Victim)
  201. }
  202.  
  203. public fw_UpdateClientData_Post(id, sendweapons, cd_handle)
  204. {
  205. if(!is_user_alive(id) || !is_user_connected(id))
  206. return FMRES_IGNORED
  207. if(get_user_weapon(id) == CSW_FIRECRACKER && g_Had_Firecracker[id])
  208. set_cd(cd_handle, CD_flNextAttack, get_gametime() + 0.001)
  209.  
  210. return FMRES_HANDLED
  211. }
  212.  
  213. public fw_PlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
  214. {
  215. if (!is_user_connected(invoker))
  216. return FMRES_IGNORED
  217. if(get_user_weapon(invoker) != CSW_FIRECRACKER || !g_Had_Firecracker[invoker])
  218. return FMRES_IGNORED
  219. if(eventid != g_firecracker_event)
  220. return FMRES_IGNORED
  221.  
  222. engfunc(EngFunc_PlaybackEvent, flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
  223.  
  224. Handle_Shoot(invoker)
  225.  
  226. return FMRES_SUPERCEDE
  227. }
  228.  
  229. public fw_SetModel(entity, model[])
  230. {
  231. if(!pev_valid(entity))
  232. return FMRES_IGNORED
  233.  
  234. static Classname[32]
  235. pev(entity, pev_classname, Classname, sizeof(Classname))
  236.  
  237. if(!equal(Classname, "weaponbox"))
  238. return FMRES_IGNORED
  239.  
  240. static iOwner
  241. iOwner = pev(entity, pev_owner)
  242.  
  243. if(equal(model, OLD_W_MODEL))
  244. {
  245. static weapon; weapon = fm_find_ent_by_owner(-1, weapon_firecracker, entity)
  246.  
  247. if(!pev_valid(weapon))
  248. return FMRES_IGNORED;
  249.  
  250. if(g_Had_Firecracker[iOwner])
  251. {
  252. Remove_Firecracker(iOwner)
  253.  
  254. set_pev(weapon, pev_impulse, WEAPON_SECRETCODE)
  255. engfunc(EngFunc_SetModel, entity, W_MODEL)
  256.  
  257. return FMRES_SUPERCEDE
  258. }
  259. }
  260.  
  261. return FMRES_IGNORED;
  262. }
  263.  
  264. public fw_CmdStart(id, uc_handle, seed)
  265. {
  266. if (!is_user_alive(id))
  267. return
  268. if(get_user_weapon(id) != CSW_FIRECRACKER || !g_Had_Firecracker[id])
  269. return
  270.  
  271. static CurButton; CurButton = get_uc(uc_handle, UC_Buttons)
  272. if((CurButton & IN_ATTACK) && !(pev(id, pev_oldbuttons) & IN_ATTACK))
  273. {
  274. CurButton &= ~IN_ATTACK
  275. set_uc(uc_handle, UC_Buttons, CurButton)
  276.  
  277. if(get_pdata_float(id, 83, 5) > 0.0)
  278. return
  279. if(cs_get_user_bpammo(id, CSW_FIRECRACKER) <= 0)
  280. return
  281.  
  282. g_SpecialShoot[id] = 0
  283. Handle_Shoot(id)
  284. }
  285. if((CurButton & IN_ATTACK2) && !(pev(id, pev_oldbuttons) & IN_ATTACK2))
  286. {
  287. if(get_pdata_float(id, 83, 5) > 0.0)
  288. return
  289. if(cs_get_user_bpammo(id, CSW_FIRECRACKER) <= 0)
  290. return
  291.  
  292. static Ent; Ent = fm_get_user_weapon_entity(id, CSW_FIRECRACKER)
  293. if(pev_valid(Ent))
  294. {
  295. g_SpecialShoot[id] = 1
  296. Handle_Shoot(id)
  297. g_SpecialShoot[id] = 0
  298. }
  299. }
  300. if(CurButton & IN_RELOAD)
  301. {
  302. CurButton &= ~IN_RELOAD
  303. set_uc(uc_handle, UC_Buttons, CurButton)
  304. }
  305. }
  306.  
  307. public fw_TraceAttack(Victim, Attacker, Float:Damage, Float:Direction[3], Ptr, DamageBits)
  308. {
  309. if(!is_user_alive(Attacker))
  310. return HAM_IGNORED
  311. if(get_user_weapon(Attacker) != CSW_FIRECRACKER || !g_Had_Firecracker[Attacker])
  312. return HAM_IGNORED
  313.  
  314. return HAM_SUPERCEDE
  315. }
  316.  
  317. public fw_Item_PrimaryAttack(ent)
  318. {
  319. if(!pev_valid(ent))
  320. return HAM_IGNORED
  321.  
  322. static id; id = pev(ent, pev_owner)
  323. if(!is_user_alive(id) || !g_Had_Firecracker[id])
  324. return HAM_IGNORED
  325.  
  326. static Float:PunchAngles[3]
  327.  
  328. PunchAngles[0] = PunchAngles[1] = PunchAngles[2] = 0.0
  329. set_pev(id, pev_punchangle, PunchAngles)
  330.  
  331. return HAM_HANDLED
  332. }
  333.  
  334. public fw_Weapon_Reload(ent)
  335. {
  336. static id; id = pev(ent, pev_owner)
  337.  
  338. if(is_user_alive(id) && g_Had_Firecracker[id])
  339. return HAM_SUPERCEDE
  340.  
  341. return HAM_IGNORED;
  342. }
  343.  
  344. public fw_Item_AddToPlayer_Post(ent, id)
  345. {
  346. if(!pev_valid(ent))
  347. return HAM_IGNORED
  348.  
  349. if(pev(ent, pev_impulse) == WEAPON_SECRETCODE)
  350. {
  351. g_Had_Firecracker[id] = 1
  352. set_pev(ent, pev_impulse, 0)
  353. }
  354.  
  355. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("WeaponList"), .player = id)
  356. write_string(g_Had_Firecracker[id] == 1 ? "weapon_firecracker_b20" : "weapon_m4a1")
  357. write_byte(8) // PrimaryAmmoID
  358. write_byte(35) // PrimaryAmmoMaxAmount
  359. write_byte(-1) // SecondaryAmmoID
  360. write_byte(-1) // SecondaryAmmoMaxAmount
  361. write_byte(1) // SlotID (0...N)
  362. write_byte(1) // NumberInSlot (1...N)
  363. write_byte(g_Had_Firecracker[id] == 1 ? CSW_FIRECRACKER : CSW_M4A1) // WeaponID
  364. write_byte(0) // Flags
  365. message_end()
  366.  
  367. return HAM_HANDLED
  368. }
  369.  
  370. public fw_Grenade_Think(Ent)
  371. {
  372. if(!pev_valid(Ent))
  373. return
  374.  
  375. static Float:Origin[3]
  376. pev(Ent, pev_origin, Origin)
  377.  
  378. message_begin(MSG_ALL, SVC_TEMPENTITY)
  379. write_byte(TE_SPARKS)
  380. engfunc(EngFunc_WriteCoord, Origin[0])
  381. engfunc(EngFunc_WriteCoord, Origin[1])
  382. engfunc(EngFunc_WriteCoord, Origin[2])
  383. message_end()
  384.  
  385. if(get_gametime() - 0.75 > pev(Ent, pev_fuser1))
  386. {
  387. emit_sound(Ent, CHAN_BODY, WeaponSounds[6], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  388. set_pev(Ent, pev_fuser1, get_gametime())
  389. }
  390.  
  391. if(get_gametime() - pev(Ent, pev_fuser2) >= 2.0)
  392. {
  393. Grenade_Explosion(Ent)
  394. return
  395. }
  396.  
  397. set_pev(Ent, pev_nextthink, get_gametime() + 0.1)
  398. }
  399.  
  400. public fw_Grenade_Touch(Ent, Id)
  401. {
  402. if(!pev_valid(Ent))
  403. return
  404.  
  405. static Bounce; Bounce = pev(Ent, pev_iuser1)
  406. if(Bounce)
  407. {
  408. /*
  409. static Float:Velocity[3]
  410. pev(Ent, pev_velocity, Velocity)
  411.  
  412. xs_vec_mul_scalar(Velocity, 0.9, Velocity)
  413. set_pev(Ent, pev_velocity, Velocity)*/
  414.  
  415. emit_sound(Ent, CHAN_BODY, WeaponSounds[random_num(3, 5)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  416. } else {
  417. Grenade_Explosion(Ent)
  418. }
  419. }
  420.  
  421. public Grenade_Explosion(Ent)
  422. {
  423. static Float:Origin[3], TE_FLAG
  424. pev(Ent, pev_origin, Origin)
  425.  
  426. TE_FLAG |= TE_EXPLFLAG_NODLIGHTS
  427. TE_FLAG |= TE_EXPLFLAG_NOSOUND
  428. TE_FLAG |= TE_EXPLFLAG_NOPARTICLES
  429.  
  430. engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, Origin)
  431. write_byte(TE_EXPLOSION)
  432. engfunc(EngFunc_WriteCoord, Origin[0])
  433. engfunc(EngFunc_WriteCoord, Origin[1])
  434. engfunc(EngFunc_WriteCoord, Origin[2] + 36.0)
  435. write_short(g_Exp_SprId)
  436. write_byte(10)
  437. write_byte(30)
  438. write_byte(TE_FLAG)
  439. message_end()
  440.  
  441. engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, Origin)
  442. write_byte(TE_EXPLOSION)
  443. engfunc(EngFunc_WriteCoord, Origin[0])
  444. engfunc(EngFunc_WriteCoord, Origin[1])
  445. engfunc(EngFunc_WriteCoord, Origin[2] + 36.0)
  446. write_short(g_Exp2_SprId)
  447. write_byte(10)
  448. write_byte(30)
  449. write_byte(TE_FLAG)
  450. message_end()
  451.  
  452. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  453. write_byte(TE_WORLDDECAL)
  454. engfunc(EngFunc_WriteCoord, Origin[0])
  455. engfunc(EngFunc_WriteCoord, Origin[1])
  456. engfunc(EngFunc_WriteCoord, Origin[2])
  457. write_byte(random_num(46, 48))
  458. message_end()
  459.  
  460. emit_sound(Ent, CHAN_BODY, WeaponSounds[7], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  461. Check_RadiusDamage(Ent, pev(Ent, pev_owner))
  462.  
  463. engfunc(EngFunc_RemoveEntity, Ent)
  464. }
  465.  
  466. public Handle_Shoot(id)
  467. {
  468. if(get_gametime() - 2.5 > g_LastShoot[id])
  469. {
  470. g_LastShoot[id] = get_gametime()
  471.  
  472. static Ent; Ent = fm_get_user_weapon_entity(id, CSW_FIRECRACKER)
  473. if(!pev_valid(Ent)) return
  474.  
  475. static Ammo; Ammo = cs_get_user_bpammo(id, CSW_FIRECRACKER)
  476. if(Ammo <= 0) return
  477.  
  478. Ammo--
  479. cs_set_user_bpammo(id, CSW_FIRECRACKER, Ammo)
  480.  
  481. if(Ammo <= 0)
  482. {
  483. set_weapon_anim(id, FC_ANIM_SHOOT2)
  484. emit_sound(id, CHAN_WEAPON, WeaponSounds[1], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  485. } else {
  486. set_weapon_anim(id, FC_ANIM_SHOOT1)
  487. emit_sound(id, CHAN_WEAPON, WeaponSounds[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  488. }
  489.  
  490. Make_Muzzleflash(id)
  491. Make_PunchAngles(id)
  492.  
  493. set_weapons_timeidle(id, 2.5)
  494. set_player_nextattack(id, 2.5)
  495.  
  496. Make_Grenade(id, g_SpecialShoot[id])
  497. }
  498. }
  499.  
  500. public Make_Muzzleflash(id)
  501. {
  502. static Float:Origin[3], TE_FLAG
  503. get_position(id, 80.0, 20.0, -10.0, Origin)
  504.  
  505. TE_FLAG |= TE_EXPLFLAG_NODLIGHTS
  506. TE_FLAG |= TE_EXPLFLAG_NOSOUND
  507. TE_FLAG |= TE_EXPLFLAG_NOPARTICLES
  508.  
  509. engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, Origin, id)
  510. write_byte(TE_EXPLOSION)
  511. engfunc(EngFunc_WriteCoord, Origin[0])
  512. engfunc(EngFunc_WriteCoord, Origin[1])
  513. engfunc(EngFunc_WriteCoord, Origin[2])
  514. write_short(g_MF_SprId)
  515. write_byte(3)
  516. write_byte(20)
  517. write_byte(TE_FLAG)
  518. message_end()
  519. }
  520.  
  521. public Make_PunchAngles(id)
  522. {
  523. static Float:PunchAngles[3]
  524.  
  525. PunchAngles[0] = random_float(-2.0, 0.0)
  526. PunchAngles[1] = random_float(-1.0, 1.0)
  527.  
  528. set_pev(id, pev_punchangle, PunchAngles)
  529. }
  530.  
  531. public Make_Grenade(id, Bounce)
  532. {
  533. static Ent; Ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
  534. if(!pev_valid(Ent)) return
  535.  
  536. static Float:Origin[3], Float:Angles[3]
  537.  
  538. get_position(id, 50.0, 10.0, 0.0, Origin)
  539. pev(id, pev_angles, Angles)
  540.  
  541. set_pev(Ent, pev_movetype, MOVETYPE_BOUNCE)
  542. set_pev(Ent, pev_solid, SOLID_BBOX)
  543. set_pev(Ent, pev_nextthink, get_gametime() + 0.1)
  544.  
  545. set_pev(Ent, pev_classname, "grenade2")
  546. engfunc(EngFunc_SetModel, Ent, S_MODEL)
  547. set_pev(Ent, pev_origin, Origin)
  548. set_pev(Ent, pev_angles, Angles)
  549. set_pev(Ent, pev_owner, id)
  550.  
  551. set_pev(Ent, pev_iuser1, Bounce)
  552. set_pev(Ent, pev_fuser2, get_gametime())
  553.  
  554. // Create Velocity
  555. static Float:Velocity[3], Float:TargetOrigin[3]
  556.  
  557. fm_get_aim_origin(id, TargetOrigin)
  558. get_speed_vector(Origin, TargetOrigin, 700.0, Velocity)
  559.  
  560. set_pev(Ent, pev_velocity, Velocity)
  561.  
  562. // Make a Beam
  563. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  564. write_byte(TE_BEAMFOLLOW)
  565. write_short(Ent) // entity
  566. write_short(g_Trail_SprId) // sprite
  567. write_byte(10) // life
  568. write_byte(3) // width
  569. write_byte(255) // r
  570. write_byte(170) // g
  571. write_byte(212) // b
  572. write_byte(200) // brightness
  573. message_end()
  574. }
  575.  
  576. public Check_RadiusDamage(Ent, Id)
  577. {
  578. static Attacker
  579. if(!is_user_connected(Id)) Attacker = 0
  580. else Attacker = Id
  581.  
  582. for(new i = 0; i < get_maxplayers(); i++)
  583. {
  584. if(!is_user_alive(i))
  585. continue
  586. if(i == Attacker)
  587. continue
  588. if(entity_range(Ent, i) > float(RADIUS))
  589. continue
  590.  
  591. ExecuteHamB(Ham_TakeDamage, i, 0, Attacker, float(DAMAGE), DMG_BULLET)
  592. }
  593. }
  594.  
  595. stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3])
  596. {
  597. new_velocity[0] = origin2[0] - origin1[0]
  598. new_velocity[1] = origin2[1] - origin1[1]
  599. new_velocity[2] = origin2[2] - origin1[2]
  600. new Float:num; num = floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
  601. new_velocity[0] *= num
  602. new_velocity[1] *= num
  603. new_velocity[2] *= num
  604.  
  605. return 1;
  606. }
  607.  
  608. stock get_position(id,Float:forw, Float:right, Float:up, Float:vStart[])
  609. {
  610. static Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]
  611.  
  612. pev(id, pev_origin, vOrigin)
  613. pev(id, pev_view_ofs, vUp) //for player
  614. xs_vec_add(vOrigin, vUp, vOrigin)
  615. pev(id, pev_v_angle, vAngle) // if normal entity ,use pev_angles
  616.  
  617. angle_vector(vAngle,ANGLEVECTOR_FORWARD, vForward) //or use EngFunc_AngleVectors
  618. angle_vector(vAngle,ANGLEVECTOR_RIGHT, vRight)
  619. angle_vector(vAngle,ANGLEVECTOR_UP, vUp)
  620.  
  621. vStart[0] = vOrigin[0] + vForward[0] * forw + vRight[0] * right + vUp[0] * up
  622. vStart[1] = vOrigin[1] + vForward[1] * forw + vRight[1] * right + vUp[1] * up
  623. vStart[2] = vOrigin[2] + vForward[2] * forw + vRight[2] * right + vUp[2] * up
  624. }
  625.  
  626. stock set_weapon_anim(id, anim)
  627. {
  628. if(!is_user_alive(id))
  629. return
  630.  
  631. set_pev(id, pev_weaponanim, anim)
  632.  
  633. message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, {0, 0, 0}, id)
  634. write_byte(anim)
  635. write_byte(pev(id, pev_body))
  636. message_end()
  637. }
  638.  
  639. stock set_weapons_timeidle(id, Float:TimeIdle)
  640. {
  641. if(!is_user_alive(id))
  642. return
  643.  
  644. static Ent; Ent = fm_get_user_weapon_entity(id, CSW_FIRECRACKER)
  645. if(!pev_valid(Ent))
  646. return
  647.  
  648. set_pdata_float(Ent, 46, TimeIdle, 4)
  649. set_pdata_float(Ent, 47, TimeIdle, 4)
  650. set_pdata_float(Ent, 48, TimeIdle + 1.0, 4)
  651. }
  652.  
  653. stock set_player_nextattack(id, Float:nexttime)
  654. {
  655. if(!is_user_alive(id))
  656. return
  657.  
  658. set_pdata_float(id, 83, nexttime, 5)
  659. }
  660.  

_________________
Projektem:

[CSO2] Ghost Mod
CSO2 GamePlay video: https://www.youtube.com/watch?feature=p ... iOS4Ik1Yrk


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


Ki van itt

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