Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Counter Strike 1.6 AMXX Weapon Glock 18 Custom
- // System :
- // There Are 2 diferrent system : 1. Shoot Mode, 2. Evolution
- /* 1. Shoot Mode
- Right Click to change shoot mode type
- there are 3 type
- 1. Normal
- 2. Auto
- 3. Burst
- */
- /* 2. Evolution
- if you can give damage to enemy with 80 times, this weapon can evolution to
- powerful weapons and strong damage
- */
- /* Credits :
- 1. Romeo (Creator Model Weapons)
- gamebanana profiles : https://gamebanana.com/members/1304740
- 2. Mellowzy (Added some System)
- */
- #include <amxmodx>
- #include <engine>
- #include <fakemeta>
- #include <fakemeta_util>
- #include <hamsandwich>
- #include <cstrike>
- #include <fun>
- #include <xs>
- #define PLUGIN "glock 18 custom"
- #define VERSION "1.0"
- #define AUTHOR "Mellowzy"
- #define RECOIL 0.25
- #define DEFAULT_CLIP 40
- #define DEFAULT_BPAMMO 254
- #define RELOAD_TIME 2.0
- #define weapon_events "events/deagle.sc"
- #define model_old "models/w_deagle.mdl"
- #define SPD_NORMAL 0.95
- #define SPD_AUTO 0.20
- #define SPD_BURST 0.15
- #define MAX_EVO 80
- #define G18 CSW_DEAGLE
- #define glock18_custom "weapon_deagle"
- #define WP_KEY 221132
- #define TASK_CHANGE 2010102010
- #define TASK_EVO 1212133912
- new const glock_evo_model[3][] = {
- "models/zth/evo/v_glock18_evo.mdl",
- "models/zth/evo/p_glock18_evo.mdl",
- "models/zth/evo/w_glock18_evo.mdl"
- }
- new const glock_nonevo_model[3][] = {
- "models/zth/normal/v_glock18_custom.mdl",
- "models/zth/normal/p_glock18_custom.mdl",
- "models/zth/normal/w_glock18_custom.mdl"
- }
- new const glock_18_custom_sound[9][] = {
- "weapons/glock18_custom1.wav",
- "weapons/glock18_custom2.wav",
- "weapons/TMP/Valentine/draw.wav",
- "weapons/TMP/Valentine/magin.wav",
- "weapons/TMP/Valentine/magout.wav",
- "weapons/TMP/Valentine/ready.wav",
- "weapons/TMP/Valentine/slideback.wav",
- "weapons/TMP/Valentine/sliderelease.wav",
- "weapons/TMP/Valentine/levelup.wav"
- }
- enum
- {
- glock_custom_idle = 0,
- glock_custom_reload,
- glock_custom_draw,
- glock_custom_shoot1,
- glock_custom_shoot2,
- glock_custom_shoot3
- }
- enum
- {
- NORMAL = 0,
- AUTO,
- BURST
- }
- enum
- {
- NONE = 0,
- EVO
- }
- new iState, ShootCountToEVO[33], Trail
- new g_NumEvo[33]
- new g_had_wp[33], m_iBlood[2], Float:g_recoil[33], g_clip[33]
- new g_smokepuff_id, g_Event_FS, g_glockmode[33], StartEvo
- new shoot_count[33], cvar_damage, cvar_damageevo
- 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)
- public plugin_init()
- {
- register_plugin(PLUGIN, VERSION, AUTHOR)
- register_message(get_user_msgid("DeathMsg"), "message_DeathMsg");
- register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
- register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
- register_forward(FM_CmdStart, "fw_CmdStart")
- register_forward(FM_SetModel, "fw_SetModel")
- register_forward(FM_PlaybackEvent, "fw_PlaybackEvent")
- RegisterHam(Ham_Item_AddToPlayer, glock18_custom, "ham_add_wp", 1)
- RegisterHam(Ham_TraceAttack, "worldspawn", "ham_traceattack", 1)
- RegisterHam(Ham_TraceAttack, "player", "ham_traceattack", 1)
- RegisterHam(Ham_Weapon_WeaponIdle, glock18_custom, "fw_Weapon_WeaponIdle_Post", 1)
- RegisterHam(Ham_Item_Deploy, glock18_custom, "fw_Item_Deploy_Post", 1)
- RegisterHam(Ham_Item_PostFrame, glock18_custom, "fw_PostFrame")
- RegisterHam(Ham_Weapon_Reload, glock18_custom, "fw_Reload")
- RegisterHam(Ham_Weapon_Reload, glock18_custom, "fw_Reload_Post", 1)
- RegisterHam(Ham_Weapon_PrimaryAttack, glock18_custom, "fw_PrimaryAttack")
- RegisterHam(Ham_Weapon_PrimaryAttack, glock18_custom, "fw_PrimaryAttack_Post", 1)
- RegisterHam(Ham_Spawn, "player", "fw_spawn_post", 1)
- cvar_damage = register_cvar("glock18_custom_dmg", "15.0")
- cvar_damageevo = register_cvar("glock18_evo_dmg", "25.0")
- register_concmd("get_glock18_custom", "get_weapon")
- register_clcmd("glock18_custom", "hook_change")
- }
- public plugin_precache()
- {
- for(new i = 0; i < sizeof(glock_nonevo_model); i++)
- engfunc(EngFunc_PrecacheModel, glock_nonevo_model[i])
- for(new i = 0; i < sizeof(glock_evo_model); i++)
- engfunc(EngFunc_PrecacheModel, glock_evo_model[i])
- for(new i = 0; i < sizeof(glock_18_custom_sound); i++)
- engfunc(EngFunc_PrecacheSound, glock_18_custom_sound[i])
- precache_generic("sprites/glock18_custom.txt")
- precache_model("sprites/smoke_ia.spr")
- m_iBlood[0] = precache_model("sprites/blood.spr")
- m_iBlood[1] = precache_model("sprites/bloodspray.spr")
- g_smokepuff_id = engfunc(EngFunc_PrecacheModel, "sprites/wall_puff1.spr")
- Trail = precache_model("sprites/zbeam2.spr")
- register_forward(FM_PrecacheEvent, "fw_PrecacheEvent_Post", 1)
- }
- public fw_PrecacheEvent_Post(type, const name[])
- {
- if(equal(weapon_events, name)) g_Event_FS = get_orig_retval()
- }
- public hook_change(id)
- {
- engclient_cmd(id, glock18_custom)
- return PLUGIN_HANDLED
- }
- public plugin_natives()
- {
- register_native("get_glock18_custom", "get_weapon", 1)
- }
- public get_weapon(id)
- {
- if(!is_user_alive(id))
- return
- drop_weapons(id, 2)
- g_had_wp[id] = 1
- g_glockmode[id] = NORMAL
- shoot_count[id] = 0
- iState = NONE
- ShootCountToEVO[id] = 0
- StartEvo = 0
- give_item(id, glock18_custom)
- g_NumEvo[id] = MAX_EVO
- static ent; ent = fm_get_user_weapon_entity(id, G18)
- if(pev_valid(ent)) cs_set_weapon_ammo(ent, DEFAULT_CLIP)
- cs_set_user_bpammo(id, G18, DEFAULT_BPAMMO)
- engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, get_user_msgid("CurWeapon"), {0, 0, 0}, id)
- write_byte(1)
- write_byte(G18)
- write_byte(DEFAULT_CLIP)
- message_end()
- }
- public remove_weapon(id)
- {
- g_had_wp[id] = 0
- shoot_count[id] = 0
- g_glockmode[id] = NORMAL
- ShootCountToEVO[id] = 0
- StartEvo = 0
- iState = NONE
- g_NumEvo[id] = MAX_EVO
- }
- public fw_spawn_post(id)
- {
- remove_weapon(id)
- }
- public client_connect(id)remove_weapon(id)
- public client_disconnected(id)remove_weapon(id)
- public event_checkweapon(id)
- {
- if(!is_user_alive(id))
- return PLUGIN_HANDLED
- if(get_user_weapon(id) != G18 || !g_had_wp[id])
- return PLUGIN_HANDLED
- set_pev(id, pev_viewmodel2, iState == NONE ? glock_nonevo_model[0] : glock_evo_model[0])
- set_pev(id, pev_weaponmodel2, iState == NONE ? glock_nonevo_model[1] : glock_evo_model[1])
- return PLUGIN_HANDLED
- }
- public message_DeathMsg(msg_id, msg_dest, id)
- {
- static szTruncatedWeapon[33], iAttacker, iVictim
- get_msg_arg_string(4, szTruncatedWeapon, charsmax(szTruncatedWeapon))
- iAttacker = get_msg_arg_int(1)
- iVictim = get_msg_arg_int(2)
- if(!is_user_connected(iAttacker) || iAttacker == iVictim)
- return PLUGIN_CONTINUE
- if(equal(szTruncatedWeapon, "deagle") && get_user_weapon(iAttacker) == G18)
- {
- if(g_had_wp[id])
- {
- switch(iState)
- {
- case NONE: set_msg_arg_string(4, "Glock 18 Custom")
- case EVO:set_msg_arg_string(4, "Glock 18 Evo")
- }
- }
- }
- return PLUGIN_CONTINUE
- }
- public fw_UpdateClientData_Post(id, sendweapons, cd_handle)
- {
- if(!is_user_alive(id) || !is_user_connected(id))
- return FMRES_IGNORED
- if(get_user_weapon(id) != G18 || !g_had_wp[id])
- return FMRES_IGNORED
- set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001)
- return FMRES_HANDLED
- }
- public fw_CmdStart(id, uc_handle, seed)
- {
- if(!is_user_alive(id) || !is_user_connected(id))
- return FMRES_HANDLED
- if(get_user_weapon(id) != G18 || !g_had_wp[id])
- return FMRES_HANDLED
- static Weapon; Weapon = fm_find_ent_by_owner(-1, glock18_custom, id);
- if(!pev_valid(Weapon)) return FMRES_HANDLED
- if(get_pdata_float(id, 83, 5) > 0.0 || get_pdata_float(Weapon, 46, 4) > 0.0 || get_pdata_float(Weapon, 47, 4) > 0.0)
- return FMRES_HANDLED
- static CurButton
- CurButton = get_uc(uc_handle, UC_Buttons)
- if(CurButton & IN_ATTACK2)
- {
- Glock18Create_NextAttack(id, 1.0)
- Glock18Create_TimeIdle(id, G18, 1.0)
- switch(g_glockmode[id])
- {
- case NORMAL: set_task(0.3, "ChangeAuto", id+TASK_CHANGE)
- case AUTO: set_task(0.3, "ChangeBurst", id+TASK_CHANGE)
- case BURST:set_task(0.3, "ChangeNormal", id+TASK_CHANGE)
- }
- }
- return FMRES_HANDLED
- }
- public ChangeNormal(id)
- {
- id -= TASK_CHANGE
- g_glockmode[id] = NORMAL
- Glock18Send_Anim(id, glock_custom_idle)
- Glock18Create_NextAttack(id, 0.3)
- Glock18Create_TimeIdle(id, G18, 0.3)
- Set_Sound(id, CHAN_WEAPON, glock_18_custom_sound[7])
- client_print(id, print_center, "Mode : Normal")
- }
- public ChangeAuto(id)
- {
- id -= TASK_CHANGE
- g_glockmode[id] = AUTO
- Glock18Send_Anim(id, glock_custom_idle)
- Glock18Create_NextAttack(id, 0.3)
- Glock18Create_TimeIdle(id, G18, 0.3)
- Set_Sound(id, CHAN_WEAPON, glock_18_custom_sound[7])
- client_print(id, print_center, "Mode : Auto")
- }
- public ChangeBurst(id)
- {
- id -= TASK_CHANGE
- g_glockmode[id] = BURST
- Glock18Send_Anim(id, glock_custom_idle)
- Glock18Create_NextAttack(id, 0.3)
- Glock18Create_TimeIdle(id, G18, 0.3)
- Set_Sound(id, CHAN_WEAPON, glock_18_custom_sound[7])
- client_print(id, print_center, "Mode : Burst")
- }
- public fw_SetModel(ent, const model[])
- {
- if(!is_valid_ent(ent))
- return FMRES_IGNORED
- static szClassName[33]
- entity_get_string(ent, EV_SZ_classname, szClassName, charsmax(szClassName))
- if(!equal(szClassName, "weaponbox"))
- return FMRES_IGNORED
- static iOwner
- iOwner = entity_get_edict(ent, EV_ENT_owner)
- if(equal(model, model_old))
- {
- static at4cs
- at4cs = find_ent_by_owner(-1, glock18_custom, ent)
- if(!is_valid_ent(at4cs))
- return FMRES_IGNORED;
- if(g_had_wp[iOwner])
- {
- set_pev(at4cs, pev_impulse, WP_KEY)
- g_had_wp[iOwner] = 0
- shoot_count[iOwner] = 0
- g_glockmode[iOwner] = NORMAL
- ShootCountToEVO[iOwner] = 0
- StartEvo = 0
- engfunc(EngFunc_SetModel, ent, iState == NONE ? glock_nonevo_model[2] : glock_evo_model[2])
- return FMRES_SUPERCEDE
- }
- }
- return FMRES_IGNORED
- }
- public Event_CurWeapon(id)
- {
- if(!is_user_alive(id) || !is_user_connected(id))
- return FMRES_HANDLED
- if(get_user_weapon(id) != G18 || !g_had_wp[id])
- return FMRES_HANDLED
- static Float:Delay, Float:Delay2
- static Ent; Ent = fm_get_user_weapon_entity(id, G18)
- if(!pev_valid(Ent)) return FMRES_HANDLED
- new Float:ispeed[33]
- switch(g_glockmode[id])
- {
- case NORMAL: ispeed[id] = SPD_NORMAL
- case AUTO: ispeed[id] = SPD_AUTO
- case BURST: ispeed[id] = SPD_BURST
- }
- Delay = get_pdata_float(Ent, 46, 4) * ispeed[id]
- Delay2 = get_pdata_float(Ent, 47, 4) * ispeed[id]
- if(Delay > 0.0)
- {
- set_pdata_float(Ent, 46, Delay, 4)
- set_pdata_float(Ent, 47, Delay2, 4)
- }
- return FMRES_HANDLED
- }
- public fw_Weapon_WeaponIdle_Post(Ent)
- {
- if(pev_valid(Ent) != 2)
- return HAM_IGNORED
- static Id; Id = get_pdata_cbase(Ent, 41, 4)
- if(get_pdata_cbase(Id, 373) != Ent)
- return HAM_IGNORED
- if(!g_had_wp[Id])
- return HAM_IGNORED
- if(get_pdata_float(Ent, 48, 4) <= 0.1)
- {
- Glock18Send_Anim(Id, glock_custom_idle)
- }
- return HAM_IGNORED
- }
- public fw_Item_Deploy_Post(Ent)
- {
- if(pev_valid(Ent) != 2)
- return
- static Id; Id = get_pdata_cbase(Ent, 41, 4)
- if(get_pdata_cbase(Id, 373) != Ent)
- return
- if(!g_had_wp[Id])
- return
- set_pev(Id, pev_viewmodel2, iState == NONE ? glock_nonevo_model[0] : glock_evo_model[0])
- set_pev(Id, pev_weaponmodel2, iState == NONE ? glock_nonevo_model[1] : glock_evo_model[1])
- Glock18Send_Anim(Id, glock_custom_draw)
- }
- public fw_PlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
- {
- if (!is_user_connected(invoker))
- return FMRES_IGNORED
- if(get_user_weapon(invoker) != G18 || !g_had_wp[invoker])
- return FMRES_IGNORED
- if(eventid != g_Event_FS)
- return FMRES_IGNORED
- engfunc(EngFunc_PlaybackEvent, flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
- new iAnim[33]
- iAnim[invoker] ++
- switch(iAnim[invoker])
- {
- case 0:
- {
- iAnim[invoker] = glock_custom_shoot1
- }
- case 1:
- {
- iAnim[invoker] = glock_custom_shoot2
- }
- case 2:
- {
- iAnim[invoker] = glock_custom_shoot3
- }
- }
- Glock18Send_Anim(invoker, iAnim[invoker])
- Set_Sound(invoker, CHAN_WEAPON, glock_18_custom_sound[0])
- return FMRES_IGNORED
- }
- public ham_add_wp(ent, id)
- {
- if(!pev_valid(ent))
- return HAM_IGNORED
- if(pev(ent, pev_impulse) == WP_KEY)
- {
- g_had_wp[id] = 1
- set_pev(ent, pev_impulse, 0)
- }
- message_begin(MSG_ONE, get_user_msgid("WeaponList"), {0,0,0}, id)
- write_string("glock18_custom")
- write_byte(8)
- write_byte(35)
- write_byte(-1)
- write_byte(-1)
- write_byte(1)
- write_byte(1)
- write_byte(G18)
- message_end()
- return HAM_IGNORED
- }
- public ham_item_postframe(iEnt)
- {
- if (!pev_valid(iEnt)) return HAM_IGNORED
- new id = pev(iEnt, pev_owner)
- if(!is_user_alive(id) || !is_user_connected(id))
- return HAM_IGNORED
- if(get_user_weapon(id) != G18 || !g_had_wp[id])
- return HAM_IGNORED
- return HAM_IGNORED
- }
- public ham_traceattack(ent, attacker, Float:Damage, Float:fDir[3], ptr, iDamageType)
- {
- if(!is_user_alive(attacker) || !is_user_connected(attacker))
- return HAM_IGNORED
- if(get_user_weapon(attacker) != G18 || !g_had_wp[attacker])
- return HAM_IGNORED
- static Float:flEnd[3], Float:vecPlane[3]
- get_tr2(ptr, TR_vecEndPos, flEnd)
- get_tr2(ptr, TR_vecPlaneNormal, vecPlane)
- if(!is_user_alive(ent))
- {
- make_bullet(attacker, flEnd)
- fake_smoke(attacker, ptr)
- } else {
- static Float:flEnd[3]
- get_tr2(ptr, TR_vecEndPos, flEnd)
- create_blood(flEnd)
- }
- static Float:iHitgroup
- new Float:MultifDamage, Float: Mode_flDamage, Float:StateDmg
- get_tr2(ptr, TR_iHitgroup, iHitgroup)
- switch(g_glockmode[attacker])
- {
- case NORMAL:Mode_flDamage = 5.0
- case AUTO: Mode_flDamage = 1.5
- case BURST: Mode_flDamage = 2.0
- }
- switch(iHitgroup)
- {
- case HIT_HEAD: MultifDamage = 2.75
- case HIT_STOMACH: MultifDamage = 1.25
- case HIT_LEFTLEG: MultifDamage = 0.75
- case HIT_RIGHTLEG: MultifDamage = 0.75
- case HIT_GENERIC: MultifDamage = 2.75
- default: MultifDamage = 1.0
- }
- switch(iState)
- {
- case NONE: StateDmg = get_pcvar_float(cvar_damage) * 1.5
- case EVO:
- {
- StateDmg = get_pcvar_float(cvar_damageevo) * 4.5
- Shoot_Special(attacker)
- }
- }
- SetHamParamFloat(3, StateDmg * Mode_flDamage * MultifDamage)
- return HAM_HANDLED
- }
- public Shoot_Special(id)
- {
- if(!is_user_alive(id) || !is_user_connected(id))
- return
- static Float:StartOrigin[3], Float:EndOrigin[3], Float:EndOrigin2[3]
- Stock_Get_Postion(id, 40.0, 7.5, -5.0, StartOrigin)
- Stock_Get_Postion(id, 4096.0, 0.0, 0.0, EndOrigin)
- static TrResult; TrResult = create_tr2()
- engfunc(EngFunc_TraceLine, StartOrigin, EndOrigin, IGNORE_MONSTERS, id, TrResult)
- get_tr2(TrResult, TR_vecEndPos, EndOrigin2)
- free_tr2(TrResult)
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
- write_byte(TE_BEAMPOINTS)
- engfunc(EngFunc_WriteCoord, StartOrigin[0])
- engfunc(EngFunc_WriteCoord, StartOrigin[1])
- engfunc(EngFunc_WriteCoord, StartOrigin[2])
- engfunc(EngFunc_WriteCoord, EndOrigin2[0])
- engfunc(EngFunc_WriteCoord, EndOrigin2[1])
- engfunc(EngFunc_WriteCoord, EndOrigin2[2])
- write_short(Trail)
- write_byte(0)
- write_byte(0)
- write_byte(10)
- write_byte(10)
- write_byte(0)
- write_byte(200)
- write_byte(0)
- write_byte(0)
- write_byte(200)
- write_byte(0)
- message_end()
- }
- public fw_PrimaryAttack(ent)
- {
- static id; id = pev(ent, pev_owner)
- set_pdata_int( ent, 64, -1)
- pev(id, pev_punchangle, g_recoil[id])
- return HAM_IGNORED
- }
- public fw_PrimaryAttack_Post(ent)
- {
- static id; id = pev(ent,pev_owner)
- if(g_had_wp[id])
- {
- if(g_glockmode[id] == BURST)
- {
- shoot_count[id] ++
- if(shoot_count[id] == 3)
- {
- shoot_count[id] = 0
- Glock18Create_NextAttack(id, 0.3)
- Glock18Create_TimeIdle(id, G18, 0.3)
- }
- }
- set_task(0.0, "CreateEvo", id+TASK_EVO)
- static Float:push[3]
- pev(id,pev_punchangle,push)
- xs_vec_sub(push, g_recoil[id],push)
- push[1] += random_float(-1.5, 1.5)
- xs_vec_mul_scalar(push, RECOIL,push)
- xs_vec_add(push, g_recoil[id], push)
- set_pev(id, pev_punchangle, push)
- }
- return HAM_IGNORED
- }
- public CreateEvo(id)
- {
- id -= TASK_EVO
- if(!is_user_alive(id))
- return
- if(!g_had_wp[id])
- return
- StartEvo = 1
- ShootCountToEVO[id] ++
- if(ShootCountToEVO[id] > g_NumEvo[id])
- {
- if(StartEvo)
- {
- iState = EVO
- set_pev(id, pev_viewmodel2, glock_evo_model[0])
- set_pev(id, pev_weaponmodel2, glock_evo_model[1])
- set_hudmessage(255, 0, 0, -1.0, -1.0)
- show_hudmessage(id, "Weapon Evolution!")
- Set_Sound(id, CHAN_VOICE, glock_18_custom_sound[8])
- g_NumEvo[id] = 999999
- }
- }
- }
- public fw_PostFrame(ent)
- {
- if(!pev_valid(ent))
- return HAM_IGNORED
- static id
- id = pev(ent, pev_owner)
- if(is_user_alive(id) && is_user_connected(id) && g_had_wp[id])
- {
- static Float:flNextAttack; flNextAttack = get_pdata_float(id, 83, 5)
- static bpammo
- bpammo = cs_get_user_bpammo(id, G18)
- static iClip; iClip = get_pdata_int(ent, 51, 4)
- static fInReload; fInReload = get_pdata_int(ent, 54, 4)
- if(fInReload && flNextAttack <= 0.0)
- {
- static temp1
- temp1 = min(DEFAULT_CLIP - iClip, bpammo)
- set_pdata_int(ent, 51, iClip + temp1, 4)
- cs_set_user_bpammo(id, G18, bpammo - temp1)
- set_pdata_int(ent, 54, 0, 4)
- fInReload = 0
- }
- }
- return HAM_IGNORED
- }
- public fw_Reload(ent)
- {
- if(!pev_valid(ent))
- return HAM_IGNORED
- static id
- id = pev(ent, pev_owner)
- if(is_user_alive(id) && is_user_connected(id) && g_had_wp[id])
- {
- g_clip[id] = -1
- static bpammo
- bpammo = cs_get_user_bpammo(id, G18)
- static iClip; iClip = get_pdata_int(ent, 51, 4)
- if (bpammo <= 0)
- return HAM_SUPERCEDE
- if(iClip >= DEFAULT_CLIP)
- return HAM_SUPERCEDE
- g_clip[id] = iClip
- }
- return HAM_IGNORED
- }
- public fw_Reload_Post(ent)
- {
- if(!pev_valid(ent))
- return HAM_IGNORED
- static id
- id = pev(ent, pev_owner)
- if(is_user_alive(id) && is_user_connected(id) && g_had_wp[id])
- {
- if (g_clip[id] == -1)
- return HAM_IGNORED
- static Float:reload_time
- reload_time = RELOAD_TIME
- set_pdata_int(ent, 51, g_clip[id], 4)
- set_pdata_float(ent, 48, reload_time, 4)
- set_pdata_float(id, 83, reload_time, 5)
- set_pdata_int(ent, 54, 1, 4)
- Glock18Send_Anim(id, glock_custom_reload)
- }
- return HAM_IGNORED
- }
- stock Glock18Send_Anim(iPlayer, iAnim)
- {
- set_pev(iPlayer, pev_weaponanim, iAnim)
- message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, iPlayer)
- write_byte(iAnim)
- write_byte(pev(iPlayer,pev_body))
- message_end()
- }
- stock drop_weapons(iPlayer, Slot)
- {
- new item = get_pdata_cbase(iPlayer, 367+Slot, 4)
- while(item > 0)
- {
- static classname[24]
- pev(item, pev_classname, classname, charsmax(classname))
- engclient_cmd(iPlayer, "drop", classname)
- item = get_pdata_cbase(item, 42, 5)
- }
- set_pdata_cbase(iPlayer, 367, -1, 4)
- }
- stock make_bullet(id, Float:Origin[3])
- {
- // Find target
- new decal = random_num(41, 45)
- const loop_time = 2
- static Body, Target
- get_user_aiming(id, Target, Body, 999999)
- if(is_user_connected(Target))
- return
- for(new i = 0; i < loop_time; i++)
- {
- // Put decal on "world" (a wall)
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
- write_byte(TE_WORLDDECAL)
- engfunc(EngFunc_WriteCoord, Origin[0])
- engfunc(EngFunc_WriteCoord, Origin[1])
- engfunc(EngFunc_WriteCoord, Origin[2])
- write_byte(decal)
- message_end()
- // Show sparcles
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
- write_byte(TE_GUNSHOTDECAL)
- engfunc(EngFunc_WriteCoord, Origin[0])
- engfunc(EngFunc_WriteCoord, Origin[1])
- engfunc(EngFunc_WriteCoord, Origin[2])
- write_short(id)
- write_byte(decal)
- message_end()
- }
- }
- public fake_smoke(id, trace_result)
- {
- static Float:vecSrc[3], Float:vecEnd[3], TE_FLAG
- get_weapon_attachment(id, vecSrc)
- global_get(glb_v_forward, vecEnd)
- xs_vec_mul_scalar(vecEnd, 8192.0, vecEnd)
- xs_vec_add(vecSrc, vecEnd, vecEnd)
- get_tr2(trace_result, TR_vecEndPos, vecSrc)
- get_tr2(trace_result, TR_vecPlaneNormal, vecEnd)
- xs_vec_mul_scalar(vecEnd, 2.5, vecEnd)
- xs_vec_add(vecSrc, vecEnd, vecEnd)
- TE_FLAG |= TE_EXPLFLAG_NODLIGHTS
- TE_FLAG |= TE_EXPLFLAG_NOSOUND
- TE_FLAG |= TE_EXPLFLAG_NOPARTICLES
- engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, vecEnd, 0)
- write_byte(TE_EXPLOSION)
- engfunc(EngFunc_WriteCoord, vecEnd[0])
- engfunc(EngFunc_WriteCoord, vecEnd[1])
- engfunc(EngFunc_WriteCoord, vecEnd[2] - 10.0)
- write_short(g_smokepuff_id)
- write_byte(2)
- write_byte(50)
- write_byte(TE_FLAG)
- message_end()
- }
- stock get_weapon_attachment(id, Float:output[3], Float:fDis = 40.0)
- {
- new Float:vfEnd[3], viEnd[3]
- get_user_origin(id, viEnd, 3)
- IVecFVec(viEnd, vfEnd)
- new Float:fOrigin[3], Float:fAngle[3]
- pev(id, pev_origin, fOrigin)
- pev(id, pev_view_ofs, fAngle)
- xs_vec_add(fOrigin, fAngle, fOrigin)
- new Float:fAttack[3]
- xs_vec_sub(vfEnd, fOrigin, fAttack)
- xs_vec_sub(vfEnd, fOrigin, fAttack)
- new Float:fRate
- fRate = fDis / vector_length(fAttack)
- xs_vec_mul_scalar(fAttack, fRate, fAttack)
- xs_vec_add(fOrigin, fAttack, output)
- }
- stock create_blood(const Float:origin[3])
- {
- // Show some blood :)
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
- write_byte(TE_BLOODSPRITE)
- engfunc(EngFunc_WriteCoord, origin[0])
- engfunc(EngFunc_WriteCoord, origin[1])
- engfunc(EngFunc_WriteCoord, origin[2])
- write_short(m_iBlood[1])
- write_short(m_iBlood[0])
- write_byte(75)
- write_byte(5)
- message_end()
- }
- stock Glock18Create_NextAttack(iPlayer, Float:NextAttack)
- {
- if(!is_user_alive(iPlayer))
- return
- set_pdata_float(iPlayer, 83, NextAttack, 5)
- }
- stock Glock18Create_TimeIdle(iPlayer, CSW_WPN, Float:TimeIdle)
- {
- static Glock; Glock = fm_get_user_weapon_entity(iPlayer, CSW_WPN)
- if(!pev_valid(Glock)) return
- set_pdata_float(Glock, 46, TimeIdle, 4)
- set_pdata_float(Glock, 47, TimeIdle, 4)
- set_pdata_float(Glock, 48, TimeIdle + 1.0, 4)
- }
- stock Set_Sound(id, channel, const sound[])
- {
- emit_sound(id, channel, sound, 1.0, ATTN_NORM, 0, PITCH_NORM)
- }
- stock is_wall_between_points(Float:start[3], Float:end[3], ignore_ent)
- {
- static ptr
- ptr = create_tr2()
- engfunc(EngFunc_TraceLine, start, end, IGNORE_MONSTERS, ignore_ent, ptr)
- static Float:EndPos[3]
- get_tr2(ptr, TR_vecEndPos, EndPos)
- free_tr2(ptr)
- return floatround(get_distance_f(end, EndPos))
- }
- stock get_angle_to_target(id, const Float:fTarget[3], Float:TargetSize = 0.0)
- {
- static Float:fOrigin[3], iAimOrigin[3], Float:fAimOrigin[3], Float:fV1[3]
- pev(id, pev_origin, fOrigin)
- get_user_origin(id, iAimOrigin, 3) // end position from eyes
- IVecFVec(iAimOrigin, fAimOrigin)
- xs_vec_sub(fAimOrigin, fOrigin, fV1)
- static Float:fV2[3]
- xs_vec_sub(fTarget, fOrigin, fV2)
- static iResult; iResult = get_angle_between_vectors(fV1, fV2)
- if(TargetSize > 0.0)
- {
- static Float:fTan; fTan = TargetSize / get_distance_f(fOrigin, fTarget)
- static fAngleToTargetSize; fAngleToTargetSize = floatround(floatatan(fTan, degrees))
- iResult -= (iResult > 0) ? fAngleToTargetSize : -fAngleToTargetSize
- }
- return iResult
- }
- stock get_angle_between_vectors(const Float:fV1[3], const Float:fV2[3])
- {
- static Float:fA1[3], Float:fA2[3]
- engfunc(EngFunc_VecToAngles, fV1, fA1)
- engfunc(EngFunc_VecToAngles, fV2, fA2)
- static iResult; iResult = floatround(fA1[1] - fA2[1])
- iResult = iResult % 360
- iResult = (iResult > 180) ? (iResult - 360) : iResult
- return iResult
- }
- stock Stock_Get_Postion(id,Float:forw,Float:right, Float:up,Float:vStart[])
- {
- static Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]
- pev(id, pev_origin, vOrigin)
- pev(id, pev_view_ofs,vUp) //for player
- xs_vec_add(vOrigin,vUp,vOrigin)
- pev(id, pev_v_angle, vAngle) // if normal entity ,use pev_angles
- angle_vector(vAngle,ANGLEVECTOR_FORWARD,vForward) //or use EngFunc_AngleVectors
- angle_vector(vAngle,ANGLEVECTOR_RIGHT,vRight)
- angle_vector(vAngle,ANGLEVECTOR_UP,vUp)
- vStart[0] = vOrigin[0] + vForward[0] * forw + vRight[0] * right + vUp[0] * up
- vStart[1] = vOrigin[1] + vForward[1] * forw + vRight[1] * right + vUp[1] * up
- vStart[2] = vOrigin[2] + vForward[2] * forw + vRight[2] * right + vUp[2] * up
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement