Advertisement
Guest User

Plasma Riffle Like LS But Need to Fix it

a guest
Oct 8th, 2021
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.61 KB | None | 0 0
  1. /*======================================================*\
  2. || [ZP] Extra Item : Plasma Rifle ||
  3. || by Sh0oT3R ||
  4. \*======================================================*/
  5.  
  6. #include <amxmodx>
  7. #include <amxmisc>
  8. #include <hamsandwich>
  9. #include <engine>
  10. #include <cstrike>
  11. #include <fakemeta>
  12. #include <xs>
  13. #include <zp50_core>
  14. #include <zp50_class_plasma>
  15. #include <zp50_class_survivor>
  16. #include <zp50_class_nemesis>
  17. #include <zp50_class_assassin>
  18. #include <zp50_class_dragon>
  19. #include <zp50_item_zombie_madness>
  20. #include <fun>
  21. #include <bulletdamage>
  22.  
  23.  
  24. #define fm_create_entity(%1) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, %1))
  25. #define fm_get_user_velocity(%1,%2) pev(%1, pev_velocity, %2)
  26.  
  27. #define VERSION "1.0"
  28. #define AUTHOR "Sh0oT3R"
  29.  
  30.  
  31. #define CSW_WPN CSW_FAMAS
  32. new const weapon[] = "weapon_famas"
  33.  
  34. new const spr_beam[] = "sprites/plasma/plasma_beam.spr"
  35. new const spr_exp[] = "sprites/plasma/plasma_exp.spr"
  36. new const spr_blood[] = "sprites/blood.spr"
  37. new const snd_fire[][] = { "plasma/plasma_fire.wav" }
  38. new const snd_reload[][] = { "plasma/plasma_reload.wav" }
  39. new const snd_hit[][] = { "plasma/plasma_hit.wav" }
  40. new cvar_firerate, cvar_hitsd, cvar_reloadspd, cvar_dmg, cvar_dmgmul
  41.  
  42. new bool:g_HasRifle[33]
  43. new g_iCurWpn[33], Float:g_flLastFireTime[33]
  44. new g_sprBeam, g_sprExp, g_sprBlood, g_msgDamage, g_msgScreenFade, g_msgScreenShake
  45.  
  46.  
  47. const m_pPlayer = 41
  48. const m_fInReload = 54
  49. const m_pActiveItem = 373
  50. const m_flNextAttack = 83
  51. const m_flTimeWeaponIdle = 48
  52. const m_flNextPrimaryAttack = 46
  53. const m_flNextSecondaryAttack = 47
  54.  
  55. const UNIT_SECOND = (1<<12)
  56. const ENG_NULLENT = -1
  57. const WPN_MAXCLIP = 25
  58. const ANIM_FIRE = 5
  59. const ANIM_DRAW = 10
  60. const ANIM_RELOAD = 9
  61. const EV_INT_WEAPONKEY = EV_INT_impulse
  62. const WPNKEY = 2816
  63.  
  64. public plugin_init()
  65. {
  66. register_plugin("[ZP] Extra Item: Plasma Rifle", VERSION, AUTHOR)
  67.  
  68. register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0");
  69. register_event("CurWeapon", "event_CurWeapon", "b", "1=1")
  70.  
  71. register_forward(FM_CmdStart, "fw_CmdStart")
  72. register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
  73.  
  74.  
  75.  
  76. RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
  77. RegisterHam(Ham_Item_Deploy, weapon, "fw_Deploy_Post", 1)
  78. RegisterHam(Ham_Item_AddToPlayer, weapon, "fw_AddToPlayer")
  79. RegisterHam(Ham_Weapon_Reload, weapon, "fw_Reload_Post", 1)
  80. RegisterHam(Ham_Item_PostFrame, weapon, "fw_PostFrame")
  81. cvar_firerate = register_cvar("zp_plasma_riffle_firerate", "0.2")
  82. cvar_hitsd = register_cvar("zp_plasma_riffle_hitsd", "0.7")
  83. cvar_reloadspd = register_cvar("zp_plasma_riffle_reload_spd", "5")
  84. cvar_dmg = register_cvar("zp_plasma_riffle_dmg", "250")
  85. cvar_dmgmul = register_cvar("zp_plasma_riffle_dmg_x", "3")
  86.  
  87.  
  88.  
  89. g_msgDamage = get_user_msgid("Damage")
  90. g_msgScreenFade = get_user_msgid("ScreenFade")
  91. g_msgScreenShake = get_user_msgid("ScreenShake")
  92. }
  93.  
  94. public zp_fw_core_cure_post(id, attacker)
  95. {
  96. if(zp_class_plasma_get(id))
  97. {
  98.  
  99. g_HasRifle[id] = true
  100. give_item(id, "weapon_famas")
  101. fm_set_user_bpammo(id, CSW_FAMAS, 90)
  102. }
  103.  
  104. }
  105.  
  106. public plugin_precache()
  107. {
  108. precache_model("models/zombie_plague/plasma/v_plasma.mdl")
  109. precache_model("models/zombie_plague/plasma/p_plasma.mdl")
  110.  
  111. g_sprBlood = precache_model(spr_blood)
  112. g_sprBeam = precache_model(spr_beam)
  113. g_sprExp = precache_model(spr_exp)
  114.  
  115. static i
  116. for(i = 0; i < sizeof snd_fire; i++)
  117. precache_sound(snd_fire[i])
  118. for(i = 0; i < sizeof snd_hit; i++)
  119. precache_sound(snd_hit[i])
  120. for(i = 0; i < sizeof snd_reload; i++)
  121. precache_sound(snd_reload[i])
  122. }
  123.  
  124.  
  125. public event_CurWeapon(id)
  126. {
  127. if(!is_user_alive(id))
  128. return PLUGIN_CONTINUE
  129.  
  130. g_iCurWpn[id] = read_data(2)
  131.  
  132. if(zp_core_is_zombie(id) || zp_class_survivor_get(id))
  133. return PLUGIN_CONTINUE
  134.  
  135. if(!g_HasRifle[id] || g_iCurWpn[id] != CSW_WPN)
  136. return PLUGIN_CONTINUE
  137.  
  138. entity_set_string(id, EV_SZ_viewmodel, "models/zombie_plague/plasma/v_plasma.mdl")
  139. entity_set_string(id, EV_SZ_weaponmodel, "models/zombie_plague/plasma/p_plasma.mdl")
  140. return PLUGIN_CONTINUE
  141. }
  142. public zp_fw_core_cure_pre(id)
  143. {
  144. g_HasRifle[id] = false
  145. }
  146. public zp_fw_core_infect_post(id)
  147. {
  148. g_HasRifle[id] = false
  149. }
  150. public fw_PlayerKilled(victim, attacker, shouldgib)
  151. {
  152. if(is_user_alive(victim))
  153. {
  154. g_HasRifle[victim] = false
  155. return HAM_HANDLED
  156. }
  157. return HAM_IGNORED
  158. }
  159.  
  160. public Event_NewRound()
  161. {
  162. for (new i = 1; i <= get_maxplayers(); i++)
  163. {
  164. g_HasRifle[i] = false
  165. }
  166. }
  167. public client_putinserver(id)
  168. {
  169. g_HasRifle[id] = false
  170. }
  171. public client_disconnect(id)
  172. {
  173. g_HasRifle[id] = false
  174. }
  175.  
  176. public fw_CmdStart(id, handle, seed)
  177. {
  178. if(!is_user_alive(id))
  179. return FMRES_IGNORED
  180.  
  181. if(!g_HasRifle[id])
  182. return FMRES_IGNORED
  183.  
  184. if(zp_core_is_zombie(id) || zp_class_survivor_get(id))
  185. return FMRES_IGNORED
  186.  
  187. if(g_iCurWpn[id] != CSW_WPN)
  188. return FMRES_IGNORED
  189.  
  190. static iButton
  191. iButton = get_uc(handle, UC_Buttons)
  192.  
  193. if(iButton & IN_ATTACK)
  194. {
  195. set_uc(handle, UC_Buttons, iButton & ~IN_ATTACK)
  196.  
  197. static Float:flCurTime
  198. flCurTime = halflife_time()
  199.  
  200. if(flCurTime - g_flLastFireTime[id] < get_pcvar_float(cvar_firerate))
  201. return FMRES_IGNORED
  202.  
  203. static iWpnID, iClip
  204. iWpnID = get_pdata_cbase(id, m_pActiveItem, 5)
  205. iClip = cs_get_weapon_ammo(iWpnID)
  206.  
  207. if(get_pdata_int(iWpnID, m_fInReload, 4))
  208. return FMRES_IGNORED
  209.  
  210. set_pdata_float(iWpnID, m_flNextPrimaryAttack, get_pcvar_float(cvar_firerate), 4)
  211. set_pdata_float(iWpnID, m_flNextSecondaryAttack, get_pcvar_float(cvar_firerate), 4)
  212. set_pdata_float(iWpnID, m_flTimeWeaponIdle, get_pcvar_float(cvar_firerate), 4)
  213. g_flLastFireTime[id] = flCurTime
  214. if(iClip <= 0)
  215. {
  216. ExecuteHamB(Ham_Weapon_PlayEmptySound, iWpnID)
  217. return FMRES_IGNORED
  218. }
  219. primary_attack(id)
  220. make_punch(id, 50)
  221. cs_set_weapon_ammo(iWpnID, --iClip)
  222.  
  223. return FMRES_IGNORED
  224. }
  225.  
  226. return FMRES_IGNORED
  227. }
  228. public fw_UpdateClientData_Post(id, sendweapons, handle)
  229. {
  230. if(!is_user_alive(id))
  231. return FMRES_IGNORED
  232.  
  233. if(!g_HasRifle[id])
  234. return FMRES_IGNORED
  235.  
  236. if(zp_core_is_zombie(id) || zp_class_survivor_get(id))
  237. return FMRES_IGNORED
  238.  
  239. if(g_iCurWpn[id] != CSW_WPN)
  240. return FMRES_IGNORED
  241.  
  242. set_cd(handle, CD_flNextAttack, halflife_time() + 0.001)
  243. return FMRES_HANDLED
  244. }
  245. public fw_Deploy_Post(wpn)
  246. {
  247. static id
  248. id = get_pdata_cbase(wpn, m_pPlayer, 4)
  249.  
  250. if(is_user_connected(id) && g_HasRifle[id])
  251. {
  252. set_wpnanim(id, ANIM_DRAW)
  253. }
  254. return HAM_IGNORED
  255. }
  256. public fw_AddToPlayer(wpn, id)
  257. {
  258. if(is_valid_ent(wpn) && is_user_connected(id) && entity_get_int(wpn, EV_INT_WEAPONKEY) == WPNKEY)
  259. {
  260. g_HasRifle[id] = true
  261. entity_set_int(wpn, EV_INT_WEAPONKEY, 0)
  262. return HAM_HANDLED
  263. }
  264. return HAM_IGNORED
  265. }
  266. public fw_PostFrame(wpn)
  267. {
  268. static id
  269. id = get_pdata_cbase(wpn, m_pPlayer, 4)
  270.  
  271. if(is_user_alive(id) && g_HasRifle[id])
  272. {
  273. static Float:flNextAttack, iBpAmmo, iClip, iInReload
  274. iInReload = get_pdata_int(wpn, m_fInReload, 4)
  275. flNextAttack = get_pdata_float(id, m_flNextAttack, 5)
  276. iBpAmmo = cs_get_user_bpammo(id, CSW_WPN)
  277. iClip = cs_get_weapon_ammo(wpn)
  278.  
  279. if(iInReload && flNextAttack <= 0.0)
  280. {
  281. new iRemClip = min(WPN_MAXCLIP - iClip, iBpAmmo)
  282. cs_set_weapon_ammo(wpn, iClip + iRemClip)
  283. cs_set_user_bpammo(id, CSW_WPN, iBpAmmo-iRemClip)
  284. iInReload = 0
  285. set_pdata_int(wpn, m_fInReload, 0, 4)
  286. }
  287. static iButton
  288. iButton = get_user_button(id)
  289.  
  290. if((iButton & IN_ATTACK2 && get_pdata_float(wpn, m_flNextSecondaryAttack, 4) <= 0.0) || (iButton & IN_ATTACK && get_pdata_float(wpn, m_flNextPrimaryAttack, 4) <= 0.0))
  291. return
  292.  
  293. if(iButton & IN_RELOAD && !iInReload)
  294. {
  295. if(iClip >= WPN_MAXCLIP)
  296. {
  297. entity_set_int(id, EV_INT_button, iButton & ~IN_RELOAD)
  298. set_wpnanim(id, 0)
  299. }
  300. else if(iClip == WPN_MAXCLIP)
  301. {
  302. if(iBpAmmo)
  303. {
  304. reload(id, wpn, 1)
  305. }
  306. }
  307. }
  308. }
  309. }
  310. public fw_Reload_Post(wpn)
  311. {
  312. static id
  313. id = get_pdata_cbase(wpn, m_pPlayer, 4)
  314.  
  315. if(is_user_alive(id) && g_HasRifle[id] && get_pdata_int(wpn, m_fInReload, 4))
  316. {
  317. reload(id, wpn)
  318. }
  319. }
  320. public primary_attack(id)
  321. {
  322. set_wpnanim(id, ANIM_FIRE)
  323. entity_set_vector(id, EV_VEC_punchangle, Float:{ -1.5, 0.0, 0.0 })
  324.  
  325. emit_sound(id, CHAN_WEAPON, snd_hit[random_num(0, sizeof snd_hit - 1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  326.  
  327. static iTarget, iBody, iEndOrigin[3], iStartOrigin[3]
  328. get_user_origin(id, iStartOrigin, 1)
  329. get_user_origin(id, iEndOrigin, 3)
  330. fire_effects(iStartOrigin, iEndOrigin)
  331. get_user_aiming(id, iTarget, iBody)
  332.  
  333. new iEnt = create_entity("info_target")
  334.  
  335. static Float:flOrigin[3]
  336. IVecFVec(iEndOrigin, flOrigin)
  337. entity_set_origin(iEnt, flOrigin)
  338. remove_entity(iEnt)
  339.  
  340. if(is_user_alive(iTarget) && zp_core_is_zombie(iTarget) || is_valid_ent(iTarget) && entity_get_float(iTarget, EV_FL_takedamage) != 0.0)
  341. {
  342. if(get_pcvar_float(cvar_hitsd) > 0.0)
  343. {
  344. static Float:flVelocity[3]
  345. fm_get_user_velocity(iTarget, flVelocity)
  346. xs_vec_mul_scalar(flVelocity, get_pcvar_float(cvar_hitsd), flVelocity)
  347. fm_set_user_velocity(iTarget, flVelocity)
  348. }
  349.  
  350. new Float:iDamage, iBloodScale
  351.  
  352. if(iBody == HIT_GENERIC)
  353. {
  354. new Text[34]
  355. new current_damage = get_pcvar_num(cvar_dmg)*get_pcvar_num(cvar_dmgmul)
  356. format(Text, charsmax(Text) - 1, "%s", current_damage)
  357. bd_show_text(id, id, Text, 12)
  358. iDamage = get_pcvar_float(cvar_dmg)
  359. iBloodScale = 10
  360. }
  361. else
  362. {
  363. iDamage = get_pcvar_float(cvar_dmg)*get_pcvar_float(cvar_dmgmul)
  364. iBloodScale = 25
  365. }
  366.  
  367. if(is_user_alive(iTarget) && zp_core_is_zombie(iTarget))
  368. {
  369.  
  370. extra_dmg(iTarget, id , floatround(iDamage), "Plasma Rifle") // Isso vai fazer dar Pack Por dano :)
  371. make_blood(iTarget, iBloodScale)
  372. damage_effects(iTarget)
  373.  
  374. }
  375. else ExecuteHamB(Ham_TakeDamage, iTarget, 0, id, iDamage, DMG_BULLET) // Tirar dano de Boss
  376.  
  377. emit_sound(id, CHAN_WEAPON, snd_fire[random_num(0, sizeof snd_fire - 1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  378.  
  379. }
  380. }
  381. stock fire_effects(iStartOrigin[3], iEndOrigin[3])
  382. {
  383. message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
  384. write_byte(0)
  385. write_coord(iStartOrigin[0])
  386. write_coord(iStartOrigin[1])
  387. write_coord(iStartOrigin[2])
  388. write_coord(iEndOrigin[0])
  389. write_coord(iEndOrigin[1])
  390. write_coord(iEndOrigin[2])
  391. write_short(g_sprBeam)
  392. write_byte(1)
  393. write_byte(5)
  394. write_byte(10)
  395. write_byte(25)
  396. write_byte(0)
  397. write_byte(0)
  398. write_byte(255)
  399. write_byte(0)
  400. write_byte(100)
  401. write_byte(0)
  402. message_end()
  403.  
  404. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  405. write_byte(3)
  406. write_coord(iEndOrigin[0])
  407. write_coord(iEndOrigin[1])
  408. write_coord(iEndOrigin[2])
  409. write_short(g_sprExp)
  410. write_byte(10)
  411. write_byte(15)
  412. write_byte(4)
  413. message_end()
  414. }
  415. stock reload(id, wpn, force_reload = 0)
  416. {
  417. set_pdata_float(id, m_flNextAttack, get_pcvar_float(cvar_reloadspd), 5)
  418. set_wpnanim(id, ANIM_RELOAD)
  419. emit_sound(id, CHAN_WEAPON, snd_reload[random_num(0, sizeof snd_reload - 1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  420.  
  421. if(force_reload)
  422. set_pdata_int(wpn, m_fInReload, 1, 4)
  423. }
  424. stock damage_effects(id)
  425. {
  426. message_begin(MSG_ONE_UNRELIABLE, g_msgDamage, _, id)
  427. write_byte(0)
  428. write_byte(0)
  429. write_long(DMG_NERVEGAS)
  430. write_coord(0)
  431. write_coord(0)
  432. write_coord(0)
  433. message_end()
  434.  
  435. message_begin(MSG_ONE_UNRELIABLE, g_msgScreenFade, {0,0,0}, id)
  436. write_short(1<<13)
  437. write_short(1<<14)
  438. write_short(0x0000)
  439. write_byte(0)
  440. write_byte(255)
  441. write_byte(0)
  442. write_byte(100)
  443. message_end()
  444.  
  445. message_begin(MSG_ONE, g_msgScreenShake, {0,0,0}, id)
  446. write_short(0xFFFF)
  447. write_short(1<<13)
  448. write_short(0xFFFF)
  449. message_end()
  450. }
  451. stock make_blood(id, scale)
  452. {
  453. new Float:iVictimOrigin[3]
  454. pev(id, pev_origin, iVictimOrigin)
  455.  
  456. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  457. write_byte(115)
  458. write_coord(floatround(iVictimOrigin[0]+random_num(-20,20)))
  459. write_coord(floatround(iVictimOrigin[1]+random_num(-20,20)))
  460. write_coord(floatround(iVictimOrigin[2]+random_num(-20,20)))
  461. write_short(g_sprBlood)
  462. write_short(g_sprBlood)
  463. write_byte(248)
  464. write_byte(scale)
  465. message_end()
  466. }
  467. stock set_wpnanim(id, anim)
  468. {
  469. entity_set_int(id, EV_INT_weaponanim, anim)
  470. message_begin(MSG_ONE, SVC_WEAPONANIM, {0, 0, 0}, id)
  471. write_byte(anim)
  472. write_byte(entity_get_int(id, EV_INT_body))
  473. message_end()
  474. }
  475. stock make_punch(id, velamount)
  476. {
  477. static Float:flNewVelocity[3], Float:flCurrentVelocity[3]
  478. velocity_by_aim(id, -velamount, flNewVelocity)
  479. get_user_velocity(id, flCurrentVelocity)
  480. xs_vec_add(flNewVelocity, flCurrentVelocity, flNewVelocity)
  481. set_user_velocity(id, flNewVelocity)
  482. }
  483. stock fm_give_item(index, const item[])
  484. {
  485. if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
  486. return 0;
  487.  
  488. new ent = fm_create_entity(item);
  489. if (!pev_valid(ent))
  490. return 0;
  491.  
  492. new Float:origin[3];
  493. pev(index, pev_origin, origin);
  494. set_pev(ent, pev_origin, origin);
  495. set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN);
  496. dllfunc(DLLFunc_Spawn, ent);
  497.  
  498. new save = pev(ent, pev_solid);
  499. dllfunc(DLLFunc_Touch, ent, index);
  500. if (pev(ent, pev_solid) != save)
  501. return ent;
  502.  
  503. engfunc(EngFunc_RemoveEntity, ent);
  504.  
  505. return -1;
  506. }
  507.  
  508. stock fm_set_user_bpammo(id, weaponid, amnt)
  509. {
  510. static offset;
  511. switch(weaponid)
  512. {
  513. case CSW_AWP: offset = 377;
  514. case CSW_SCOUT,CSW_AK47,CSW_G3SG1: offset = 378;
  515. case CSW_M249: offset = 379;
  516. case CSW_FAMAS,CSW_M4A1,CSW_AUG,CSW_SG550,CSW_GALI,CSW_SG552: offset = 380;
  517. case CSW_M3,CSW_XM1014: offset = 381;
  518. case CSW_USP,CSW_UMP45,CSW_MAC10: offset = 382;
  519. case CSW_FIVESEVEN,CSW_P90: offset = 383;
  520. case CSW_DEAGLE: offset = 384;
  521. case CSW_P228: offset = 385;
  522. case CSW_GLOCK18,CSW_MP5NAVY,CSW_TMP,CSW_ELITE: offset = 386;
  523. case CSW_FLASHBANG: offset = 387;
  524. case CSW_HEGRENADE: offset = 388;
  525. case CSW_SMOKEGRENADE: offset = 389;
  526. default: return 0;
  527. }
  528. set_pdata_int(id,offset,amnt,5);
  529.  
  530. return 1;
  531. }
  532.  
  533. stock extra_dmg(id, attacker, damage, weaponDescription[])
  534. {
  535. new dmgcount[33]
  536.  
  537. if ( pev(id, pev_takedamage) == DAMAGE_NO ) return;
  538. if ( damage <= 0 ) return;
  539.  
  540. new userHealth = get_user_health(id);
  541.  
  542. if (userHealth - damage <= 0 )
  543. {
  544. dmgcount[attacker] += userHealth - damage;
  545. set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET);
  546. ExecuteHamB(Ham_Killed, id, attacker, 2);
  547. set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT);
  548.  
  549.  
  550. message_begin(MSG_BROADCAST, get_user_msgid("DeathMsg"));
  551. write_byte(attacker);
  552. write_byte(id);
  553. write_byte(0);
  554. write_string(weaponDescription);
  555. message_end();
  556.  
  557. set_pev(attacker, pev_frags, float(get_user_frags(attacker) + 1));
  558.  
  559. new kname[32], vname[32], kauthid[32], vauthid[32], kteam[10], vteam[10];
  560.  
  561. get_user_name(attacker, kname, 31);
  562. get_user_team(attacker, kteam, 9);
  563. get_user_authid(attacker, kauthid, 31);
  564.  
  565. get_user_name(id, vname, 31);
  566. get_user_team(id, vteam, 9);
  567. get_user_authid(id, vauthid, 31);
  568.  
  569. log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^"",
  570. kname, get_user_userid(attacker), kauthid, kteam,
  571. vname, get_user_userid(id), vauthid, vteam, weaponDescription);
  572. }
  573. else
  574. {
  575. ExecuteHamB(Ham_TakeDamage, id, 0, attacker, float(damage), DMG_BULLET)
  576.  
  577. //set_pev(id, pev_health, pev(id, pev_health) - float(damage));
  578. }
  579. }
  580. stock fm_set_user_velocity(entity, const Float:vector[3]) {
  581. set_pev(entity, pev_velocity, vector);
  582.  
  583. return 1;
  584. }
  585.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement