cso skull 11 and vulcanus 7
-
- Veteran Member
- Posts: 598
- Joined: 7 years ago
- Contact:
cso skull 11 and vulcanus 7
Hello,
can someone convert those guns to our zombie escape mod?
can someone convert those guns to our zombie escape mod?
- Attachments
-
- vulkanus-7.rar
- (1.66 MiB) Downloaded 357 times
- vulkanus-7.rar
- (1.66 MiB) Downloaded 357 times
-
- CSO Skull-11.rar
- (664.17 KiB) Downloaded 364 times
- CSO Skull-11.rar
- (664.17 KiB) Downloaded 364 times
Last edited by czirimbolo 6 years ago, edited 1 time in total.
-
- Veteran Member
- Posts: 678
- Joined: 7 years ago
- Location: Paraguay
- Contact:
OK I will convert them this Evening
Nobody Is That Busy If They Make Time
-
- Veteran Member
- Posts: 598
- Joined: 7 years ago
- Contact:
-
- Veteran Member
- Posts: 678
- Joined: 7 years ago
- Location: Paraguay
- Contact:
Vulcanus 7
- //=========================================================================
- #define CSW_BALROG7 CSW_M249
- new const g_weapon_entity[]= "weapon_m249"
- new const g_weaponbox_model[]= "models/w_m249.mdl"
- #define WEAPON_NAME "Vulcanus-7"
- #define WEAPON_COST 0
- #define SLOT 1
- #define DAMAGE 1.2
- #define RATE_OF_FIRE 0.1
- #define CLIP 120
- #define AMMO 200
- #define TIME_RELOAD 4.0
- #define ANIM_IDLE 0
- #define ANIM_SHOOT_1 6
- #define ANIM_RELOAD 11
- #define ANIM_DRAW 13
- #define BODY_NUMBER 0
- new const MODELS[][]={
- "models/xXx_kz/v_vulcanus7.mdl",
- "models/xXx_kz/p_vulcanus7a.mdl",
- "models/xXx_kz/w_vulcanus7a.mdl"
- }
- new const SOUNDS[][]= {
- "weapons/vulcanus7-1.wav",
- "weapons/vulcanus7-2.wav",
- "weapons/vulcanus_shootc1_change.wav",
- "weapons/vulcanus_reloada_1.wav",
- "weapons/vulcanus_reloada_2.wav",
- "weapons/vulcanus_reloada_3.wav"
- }
- #define WEAPONLIST "unix_vulcanus7"
- new const SPRITES[][]= {
- "sprites/xXx_kz/640hud7.spr",
- "sprites/xXx_kz/640hud129.spr"
- }
- new const GrenadeModel[]="models/grenade.mdl"
- //=========================================================================
- #include <zombie_escape>
- #include <xs>
- #include <fakemeta_util>
- new g_msgWeaponList,g_wpn_variables[10],g_iszWeaponKey,g_index_smoke,g_index_shell, g_Beam_SprId
- new trail_spr, explode_spr, smoke_spr, g_iItemID
- new Blood[2]
- #define is_valid_weapon(%1) (pev_valid(%1)&&pev(%1, pev_impulse) == g_iszWeaponKey)
- #define M1_MODE (1<<1)
- public plugin_precache() {
- for(new i;i<=charsmax(MODELS);i++)precache_model(MODELS[i])
- for(new i;i<=charsmax(SOUNDS);i++)precache_sound(SOUNDS[i])
- for(new i;i<=charsmax(SPRITES);i++) precache_generic(SPRITES[i])
- new tmp[32];formatex(tmp,charsmax(tmp),"sprites/%s.txt",WEAPONLIST)
- precache_generic(tmp)
- for(new i;i<=charsmax(SPRITES);i++)precache_generic(SPRITES[i])
- g_index_smoke=precache_model("sprites/wall_puff1.spr")
- g_index_shell=precache_model("models/rshell.mdl")
- g_Beam_SprId = engfunc(EngFunc_PrecacheModel, "sprites/laserbeam.spr")
- trail_spr=precache_model("sprites/shellchrome.spr")
- explode_spr=precache_model("sprites/fexplo.spr")
- smoke_spr=precache_model("sprites/black_smoke4.spr")
- Blood[0] = precache_model("sprites/bloodspray.spr")
- Blood[1] = precache_model("sprites/blood.spr")
- precache_model(GrenadeModel)
- g_iszWeaponKey = engfunc(EngFunc_AllocString, WEAPON_NAME)
- register_clcmd(WEAPONLIST, "clcmd_weapon")
- register_message(78, "message_weaponlist")
- }
- public plugin_init() {
- register_forward(FM_CmdStart, "fm_cmdstart")
- g_iItemID = ze_register_item("Vulcanus", 25)
- register_forward(FM_SetModel, "fm_setmodel")
- register_forward(FM_UpdateClientData, "fm_updateclientdata_post", 1)
- register_forward(FM_PlaybackEvent, "fm_playbackevent")
- RegisterHam(Ham_Item_Deploy, g_weapon_entity, "ham_item_deploy_post",1)
- RegisterHam(Ham_Weapon_PrimaryAttack, g_weapon_entity, "ham_weapon_primaryattack")
- RegisterHam(Ham_Weapon_Reload, g_weapon_entity, "ham_weapon_reload")
- RegisterHam(Ham_Weapon_WeaponIdle, g_weapon_entity, "ham_weapon_idle")
- RegisterHam(Ham_Item_PostFrame, g_weapon_entity, "ham_item_postframe")
- RegisterHam(Ham_Item_AddToPlayer, g_weapon_entity, "ham_item_addtoplayer")
- RegisterHam(Ham_RemovePlayerItem, "player", "ham_player_removeitem")
- RegisterHam(Ham_TraceAttack, "player", "ham_traceattack_post",1)
- RegisterHam(Ham_TraceAttack, "worldspawn", "ham_traceattack_post",1)
- RegisterHam(Ham_TraceAttack, "func_breakable", "ham_traceattack_post",1)
- RegisterHam(Ham_TakeDamage, "player", "ham_takedamage")
- RegisterHam(Ham_TakeDamage, "func_breakable", "ham_takedamage")
- register_touch("vulcanus7_gr", "*", "fwTouch")
- g_msgWeaponList=get_user_msgid("WeaponList")
- g_iszWeaponKey=engfunc(EngFunc_AllocString, WEAPON_NAME)
- }
- public clcmd_weapon(id)engclient_cmd(id, g_weapon_entity)
- public message_weaponlist(msg_id,msg_dest,id)if(get_msg_arg_int(8)==CSW_BALROG7)for(new i=2;i<=9;i++)g_wpn_variables[i]=get_msg_arg_int(i)
- public fm_cmdstart(id,uc_handle,seed){
- if(!is_user_alive(id))return
- static weapon_ent;weapon_ent=get_pdata_cbase(id,373,5)
- if(!is_valid_weapon(weapon_ent)) return
- if((get_uc(uc_handle,UC_Buttons)&IN_ATTACK2)&&get_pdata_float(weapon_ent,46,4)<=0.0){
- if(get_pdata_int(weapon_ent, 74, 4)&M1_MODE){
- set_pdata_int(weapon_ent, 74, get_pdata_int(weapon_ent, 74, 4)&~M1_MODE, 4)
- set_pdata_float(weapon_ent,46,0.5,4)
- set_pdata_float(weapon_ent,47,0.5,4)
- set_pdata_float(weapon_ent,48,2.0,4)
- play_weapon_animation(id, ANIM_SHOOT_1+3)
- emit_sound(id, CHAN_ITEM, SOUNDS[2], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
- GrenadeAttack(id)
- }
- }
- }
- public fm_setmodel(model_entity,model[]){
- if(!pev_valid(model_entity))return FMRES_IGNORED
- if(!equal(model,g_weaponbox_model))return FMRES_IGNORED
- static weap;weap=fm_find_ent_by_owner(-1,g_weapon_entity,model_entity)
- if(!is_valid_weapon(weap))return FMRES_IGNORED
- fm_entity_set_model(model_entity,MODELS[2])
- set_pev(model_entity,pev_body,BODY_NUMBER)
- return FMRES_SUPERCEDE
- }
- public fm_updateclientdata_post(id,SendWeapons,CD_Handle){
- if(!is_user_alive(id))return
- static weapon_ent; weapon_ent=get_pdata_cbase(id,373,5)
- if(!is_valid_weapon(weapon_ent))return
- set_cd(CD_Handle, CD_flNextAttack, get_gametime() + 0.001)
- }
- public fm_playbackevent(flags,id){
- if(!is_user_alive(id))return FMRES_IGNORED
- static weapon_ent;weapon_ent=get_pdata_cbase(id, 373, 5)
- if(!is_valid_weapon(weapon_ent))return FMRES_IGNORED
- return FMRES_SUPERCEDE
- }
- public ham_item_deploy_post(weapon_ent){
- if(!is_valid_weapon(weapon_ent))return
- static id;id=get_pdata_cbase(weapon_ent,41,4)
- set_pev(id, pev_viewmodel2, MODELS[0]),set_pev(id, pev_weaponmodel2, MODELS[1])
- play_weapon_animation(id, (get_pdata_int(weapon_ent, 74, 4)&M1_MODE)?ANIM_DRAW+1:ANIM_DRAW),set_pdata_float(id, 83, 0.5, 5)
- }
- public ham_weapon_primaryattack(weapon_entity) {
- if(!is_valid_weapon(weapon_entity))return HAM_IGNORED
- if(get_pdata_float(weapon_entity,46,4)>0.0||!get_pdata_int(weapon_entity,51,4))return HAM_IGNORED
- static id; id = get_pdata_cbase(weapon_entity, 41, 4)
- if(get_pdata_int(weapon_entity, 74, 4)&M1_MODE){
- if(get_pdata_int(weapon_entity, 64, 4)==9){
- play_weapon_animation(id, ANIM_SHOOT_1+2)
- emit_sound(id, CHAN_ITEM, SOUNDS[1], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
- }
- else{
- emit_sound(id, CHAN_ITEM, SOUNDS[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
- play_weapon_animation(id, ANIM_SHOOT_1+1)
- }
- } else if(get_pdata_int(weapon_entity, 64, 4)==29) {
- emit_sound(id, CHAN_ITEM, SOUNDS[1], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
- set_pdata_int(weapon_entity, 74, get_pdata_int(weapon_entity, 74, 4)|M1_MODE, 4)
- play_weapon_animation(id, ANIM_SHOOT_1+2)
- } else {
- emit_sound(id, CHAN_WEAPON, SOUNDS[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
- play_weapon_animation(id, ANIM_SHOOT_1)
- }
- ExecuteHam(Ham_Weapon_PrimaryAttack, weapon_entity)
- set_pdata_float(weapon_entity,46, RATE_OF_FIRE,4)
- set_pdata_int(weapon_entity,57,g_index_shell,4)
- set_pdata_float(id,111,get_gametime())
- return HAM_SUPERCEDE
- }
- public ham_weapon_reload(weapon_entity) {
- if(!is_valid_weapon(weapon_entity))return HAM_IGNORED
- static id; id = get_pdata_cbase(weapon_entity,41,4)
- static bpammo;bpammo=get_pdata_int(id,376+get_pdata_int(weapon_entity,49,4),5)
- static clip;clip=get_pdata_int(weapon_entity,51,4)
- if(!bpammo||clip==CLIP)return HAM_SUPERCEDE
- ExecuteHam(Ham_Weapon_Reload,weapon_entity)
- play_weapon_animation(id,(get_pdata_int(weapon_entity, 74, 4)&M1_MODE)?ANIM_RELOAD+1:ANIM_RELOAD)
- set_pdata_int(id,363,90,5)
- set_pdata_float(id,83,TIME_RELOAD,5)
- set_pdata_float(weapon_entity,46,TIME_RELOAD,4)
- set_pdata_int(weapon_entity,54,1,4)
- return HAM_SUPERCEDE
- }
- public ham_weapon_idle(ent) {
- if(!is_valid_weapon(ent))return HAM_IGNORED
- static id; id = get_pdata_cbase(ent, 41, 4)
- if(get_pdata_float(ent, 48, 4)>0.0)return HAM_IGNORED
- if(get_pdata_int(ent, 74, 4)&M1_MODE)
- play_weapon_animation(id, ANIM_IDLE+1)
- else play_weapon_animation(id, ANIM_IDLE)
- set_pdata_float(ent, 48, 5.0, 4)
- return HAM_SUPERCEDE
- }
- public ham_item_postframe(weapon_entity) {
- if(!is_valid_weapon(weapon_entity)) return
- static id; id = get_pdata_cbase(weapon_entity,41,4)
- if(get_pdata_int(weapon_entity, 54, 4)&&get_pdata_float(id, 83, 5)<=0.0){
- static bpammo;bpammo=get_pdata_int(id, 376 + get_pdata_int(weapon_entity, 49, 4), 5)
- static clip;clip=get_pdata_int(weapon_entity, 51, 4)
- for(new i=clip; i<CLIP;i++)if(bpammo)bpammo--,clip++
- set_pdata_int(weapon_entity,54,0,4)
- set_pdata_int(weapon_entity,51,clip,4)
- set_pdata_int(id,376+get_pdata_int(weapon_entity,49,4),bpammo,5)
- }
- }
- public ham_item_addtoplayer(weapon_entity,id)if(is_valid_weapon(weapon_entity))set_weaponlist(id,1)
- public ham_player_removeitem(id,weapon_entity) if(is_valid_weapon(weapon_entity)) set_weaponlist(id)
- public ham_traceattack_post(pEntity,attacker,Float:flDamage,Float:direction[3],ptr,damage_type) {
- if(!is_user_connected(attacker)||!(damage_type&DMG_BULLET))return
- static weapon_entity;weapon_entity=get_pdata_cbase(attacker, 373, 5)
- if(!is_valid_weapon(weapon_entity))return
- new Float:vecEnd[3],Float:vecPlane[3]
- get_tr2(ptr,TR_vecEndPos,vecEnd)
- get_tr2(ptr,TR_vecPlaneNormal,vecPlane)
- xs_vec_mul_scalar(vecPlane,5.0,vecPlane)
- if(!is_user_alive(pEntity)){
- message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
- write_byte(TE_GUNSHOTDECAL)
- engfunc(EngFunc_WriteCoord,vecEnd[0])
- engfunc(EngFunc_WriteCoord,vecEnd[1])
- engfunc(EngFunc_WriteCoord,vecEnd[2])
- write_short(pEntity)
- write_byte(random_num(41,45))
- message_end()
- xs_vec_add(vecEnd,vecPlane,vecEnd)
- message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
- write_byte(TE_EXPLOSION)
- engfunc(EngFunc_WriteCoord,vecEnd[0])
- engfunc(EngFunc_WriteCoord,vecEnd[1])
- engfunc(EngFunc_WriteCoord,vecEnd[2]-10.0)
- write_short(g_index_smoke)
- write_byte(3)
- write_byte(50)
- write_byte(TE_EXPLFLAG_NOSOUND|TE_EXPLFLAG_NODLIGHTS|TE_EXPLFLAG_NOPARTICLES)
- message_end()
- }
- if((get_pdata_int(weapon_entity,64,4)==30)||((get_pdata_int(weapon_entity, 74, 4)&M1_MODE)&&get_pdata_int(weapon_entity,64,4)==10)) {
- new Float:Origin[3]
- get_weapon_position(attacker, Origin, .add_forward=10.0, .add_right=3.0, .add_up=-2.5)
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
- write_byte(TE_BEAMPOINTS)
- engfunc(EngFunc_WriteCoord, Origin[0])
- engfunc(EngFunc_WriteCoord, Origin[1])
- engfunc(EngFunc_WriteCoord, Origin[2])
- engfunc(EngFunc_WriteCoord, vecEnd[0])
- engfunc(EngFunc_WriteCoord, vecEnd[1])
- engfunc(EngFunc_WriteCoord, vecEnd[2])
- write_short(g_Beam_SprId)
- write_byte(0)
- write_byte(0)
- write_byte(10)
- write_byte(10)
- write_byte(0)
- write_byte(218)
- write_byte(165)
- write_byte(32)
- write_byte(150)
- write_byte(0)
- message_end()
- set_pdata_int(weapon_entity,64,0,4)
- if(is_user_alive(pEntity))xs_vec_add(vecEnd,vecPlane,vecEnd)
- new victim=FM_NULLENT, Float:temp, Float:damage, Float:radius=100.0, Float:vOrigin[3]
- while((victim=engfunc(EngFunc_FindEntityInSphere,victim, vecEnd, radius))!=0) {
- damage=200.0
- if(pev(victim, pev_takedamage)!=DAMAGE_NO&&pev(victim, pev_solid)!=SOLID_NOT) {
- if(is_user_connected(victim)) { if(is_user_alive(victim)&&ze_is_user_zombie(victim)) {
- pev(victim,pev_origin,vOrigin),xs_vec_sub(vecEnd,vOrigin,vOrigin)
- temp=vector_length(vOrigin)
- if(temp<1.0)temp=1.0
- if(temp>radius)temp=radius
- damage-=(damage/radius)*temp
- ExecuteHamB(Ham_TakeDamage, victim, attacker, attacker, damage, DMG_NEVERGIB)
- }
- } else ExecuteHamB(Ham_TakeDamage,victim,attacker,attacker,damage,DMG_BULLET|DMG_NEVERGIB)
- }
- }
- }
- }
- public ham_takedamage(victim,inflictor,attacker,Float:damage,damage_type){
- if(!is_user_connected(attacker)||attacker==victim||!(damage_type&DMG_BULLET))return
- static weapon_ent; weapon_ent=get_pdata_cbase(attacker,373,5)
- if(is_valid_weapon(weapon_ent))SetHamParamFloat(4,damage*DAMAGE)
- }
- public ze_select_item_pre(id, itemid)
- {
- // This not our item?
- if (itemid != g_iItemID)
- return ZE_ITEM_AVAILABLE
- // Available for Humans only, So don't show it for zombies
- if (ze_is_user_zombie(id))
- return ZE_ITEM_DONT_SHOW
- // Finally return that it's available
- return ZE_ITEM_AVAILABLE
- }
- public ze_select_item_post(id, itemid)
- {
- // This is not our item, Block it here and don't execute the blew code
- if (itemid != g_iItemID)
- return
- give_balrog(id)
- }
- public give_balrog(id)
- {
- new Ent=give_weapon(id)
- set_pdata_int(id,376+get_pdata_int(Ent,49,4),AMMO,5)
- }
- public give_weapon(id){
- new Float:Origin[3]
- pev(id, pev_origin, Origin)
- new wName[32],iItem=get_pdata_cbase(id, 367 + 1, 5);
- while (pev_valid(iItem)==2)pev(iItem,pev_classname,wName,31),engclient_cmd(id,"drop",wName),iItem=get_pdata_cbase(id, 367 + 1, 5);
- new iWeapon=engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,g_weapon_entity))
- if(!pev_valid(iWeapon)) return 0
- dllfunc(DLLFunc_Spawn, iWeapon)
- engfunc(EngFunc_SetOrigin, iWeapon, Origin)
- set_pev(iWeapon, pev_impulse, g_iszWeaponKey)
- set_pdata_int(iWeapon, 51, CLIP, 4)
- new save = pev(iWeapon,pev_solid)
- dllfunc(DLLFunc_Touch,iWeapon,id)
- if(pev(iWeapon, pev_solid)!=save)return iWeapon
- engfunc(EngFunc_RemoveEntity,iWeapon)
- return 0
- }
- public fwTouch(ent, id)
- {
- if(pev(ent, pev_owner)==id)
- return
- new Float:Origin[3]
- pev(ent, pev_origin, Origin)
- set_pev(ent, pev_movetype, MOVETYPE_NONE)
- set_pev(ent, pev_solid, SOLID_NOT)
- message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
- write_byte(TE_EXPLOSION)
- engfunc(EngFunc_WriteCoord, Origin[0]+random_float(20.0, 35.0))
- engfunc(EngFunc_WriteCoord, Origin[1]+random_float(20.0, 35.0))
- engfunc(EngFunc_WriteCoord, Origin[2]+50.0)
- write_short(explode_spr)
- write_byte(random_num(13,16))
- write_byte(random_num(20,22))
- write_byte(0)
- message_end()
- message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
- write_byte(TE_EXPLOSION)
- engfunc(EngFunc_WriteCoord, Origin[0])
- engfunc(EngFunc_WriteCoord, Origin[1])
- engfunc(EngFunc_WriteCoord, Origin[2]+90.0)
- write_short(explode_spr)
- write_byte(random_num(18,22))
- write_byte(random_num(20,22))
- write_byte(0)
- message_end()
- message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
- write_byte(TE_SMOKE)
- engfunc(EngFunc_WriteCoord, Origin[0])
- engfunc(EngFunc_WriteCoord, Origin[1])
- engfunc(EngFunc_WriteCoord, Origin[2]+10)
- write_short(smoke_spr)
- write_byte(20)
- write_byte(20)
- message_end()
- new victim=FM_NULLENT, Float:vOrigin[3], Float:temp, attacker, Float:damage, Float:radius
- attacker=pev(ent, pev_owner)
- radius=200.0
- while((victim=fm_find_ent_in_sphere(victim, Origin, radius))!=0)
- {
- if(pev(victim, pev_takedamage)!=DAMAGE_NO&&pev(victim, pev_solid)!=SOLID_NOT)
- {
- damage=500.0
- if(1<=victim<=32)
- {
- if(is_user_alive(victim)&&ze_is_user_zombie(victim))
- {
- pev(victim, pev_origin, vOrigin)
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
- write_byte(TE_BLOODSPRITE)
- engfunc(EngFunc_WriteCoord, vOrigin[0])
- engfunc(EngFunc_WriteCoord, vOrigin[1])
- engfunc(EngFunc_WriteCoord, vOrigin[2])
- write_short(Blood[0])
- write_short(Blood[1])
- write_byte(76)
- write_byte(10)
- message_end()
- temp=vector_distance(Origin, vOrigin)
- //xs_vec_normalize(vOrigin, vOrigin)
- //xs_vec_mul_scalar(vOrigin, KNOCKBACK, vOrigin)
- //xs_vec_neg(vOrigin, vOrigin)
- //vOrigin[2]+=KNOCKBACK
- //set_pev(victim, pev_velocity, vOrigin)
- if(temp<1.0)temp=1.0
- if(temp>radius)temp=radius
- damage-=(damage/radius)*temp
- if(damage<50.0) damage=50.0
- ExecuteHamB(Ham_TakeDamage, victim, ent, attacker, damage, DMG_BULLET|DMG_NEVERGIB)
- }
- }
- else
- ExecuteHamB(Ham_TakeDamage, victim, ent, attacker, damage, DMG_BULLET|DMG_NEVERGIB)
- }
- }
- fm_remove_entity(ent)
- }
- public GrenadeAttack(id)
- {
- new Float:Origin[3], Float:AimOrigin[3], Float:Velocity[3], Float:PlayerVelocity[3]
- pev(id, pev_velocity, PlayerVelocity)
- new ent=fm_create_entity("info_target")
- if(!ent) return
- set_pev(ent, pev_classname, "vulcanus7_gr")
- set_pev(ent, pev_owner, id)
- get_weapon_position(id, Origin, .add_forward=60.0, .add_right=12.0, .add_up=-5.0)
- set_pev(ent, pev_origin, Origin)
- fm_entity_set_model(ent,GrenadeModel)
- set_pev(ent, pev_solid, SOLID_BBOX)
- set_pev(ent, pev_movetype, MOVETYPE_FLY)
- set_pev(ent, pev_effects, EF_LIGHT)
- fm_entity_set_size(ent,Float:{0.0, 0.0, 0.0},Float:{0.0, 0.0, 0.0})
- set_pev(ent, pev_gravity, 0.8)
- fm_get_aim_origin(id, AimOrigin)
- xs_vec_sub(AimOrigin, Origin, AimOrigin)
- xs_vec_normalize(AimOrigin, Velocity)
- xs_vec_mul_scalar(Velocity, 1500.0, Velocity)
- vector_to_angle(AimOrigin, AimOrigin)
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
- write_byte(TE_BEAMFOLLOW)
- write_short(ent)
- write_short(trail_spr)
- write_byte(25)
- write_byte(3)
- write_byte(180)
- write_byte(180)
- write_byte(180)
- write_byte(250)
- message_end()
- xs_vec_add(Velocity, PlayerVelocity, Velocity)
- set_pev(ent, pev_angles, AimOrigin)
- set_pev(ent, pev_velocity, Velocity)
- }
- stock play_weapon_animation(id,sequence)set_pev(id, pev_weaponanim, sequence),message_begin(MSG_ONE,SVC_WEAPONANIM,_,id),write_byte(sequence),write_byte(0),message_end()
- stock set_weaponlist(id,num=0){
- message_begin(MSG_ONE,g_msgWeaponList,_,id)
- write_string(num?WEAPONLIST:g_weapon_entity)
- for(new i=2;i<=9;i++)write_byte(g_wpn_variables[i])
- message_end()
- }
- stock get_weapon_position(id, Float:fOrigin[3], Float:add_forward=0.0, Float:add_right=0.0, Float:add_up=0.0)
- {
- static Float:Angles[3],Float:ViewOfs[3], Float:vAngles[3]
- static Float:Forward[3], Float:Right[3], Float:Up[3]
- pev(id, pev_v_angle, vAngles)
- pev(id, pev_origin, fOrigin)
- pev(id, pev_view_ofs, ViewOfs)
- xs_vec_add(fOrigin, ViewOfs, fOrigin)
- pev(id, pev_v_angle, Angles)
- engfunc(EngFunc_MakeVectors, Angles)
- global_get(glb_v_forward, Forward)
- global_get(glb_v_right, Right)
- global_get(glb_v_up, Up)
- xs_vec_mul_scalar(Forward, add_forward, Forward)
- xs_vec_mul_scalar(Right, add_right, Right)
- xs_vec_mul_scalar(Up, add_up, Up)
- fOrigin[0]=fOrigin[0]+Forward[0]+Right[0]+Up[0]
- fOrigin[1]=fOrigin[1]+Forward[1]+Right[1]+Up[1]
- fOrigin[2]=fOrigin[2]+Forward[2]+Right[2]+Up[2]
- }
Nobody Is That Busy If They Make Time
-
- Veteran Member
- Posts: 678
- Joined: 7 years ago
- Location: Paraguay
- Contact:
Skull 11
- #include <zombie_escape>
- #include <fakemeta_util>
- #include <cstrike>
- #define PLUGIN "[CSO] Skull-11"
- #define VERSION "1.0"
- #define AUTHOR "Dias+ ZE DEV TEAM"
- #define CSW_GATLING CSW_M3
- #define weapon_gatling "weapon_m3"
- #define WEAPON_ANIMEXT "m249"
- #define DEFAULT_W_MODEL "models/w_m3.mdl"
- #define WEAPON_SECRET_CODE 1942
- #define old_event "events/m3.sc"
- #define DAMAGE 112
- #define SPEED 0.35
- #define RECOIL 0.75
- #define RELOAD_TIME 4.0
- #define DEFAULT_CLIP 28
- #define DEFAULT_BPAMMO 180
- new const WeaponModel[3][] =
- {
- "models/v_skull11.mdl", // V
- "models/p_skull11.mdl", // P
- "models/w_skull11.mdl" // W
- }
- new const WeaponSound[4][] =
- {
- "weapons/skull11_shoot1.wav",
- "weapons/skull11_boltpull.wav",
- "weapons/skull11_clipin.wav",
- "weapons/skull11_clipout.wav"
- }
- enum
- {
- GATLING_ANIM_IDLE = 0,
- GATLING_ANIM_SHOOT1,
- GATLING_ANIM_SHOOT2,
- GATLING_ANIM_RELOAD,
- GATLING_ANIM_DRAW
- }
- const PDATA_SAFE = 2
- const OFFSET_LINUX_WEAPONS = 4
- const OFFSET_LINUX_PLAYER = 5
- const OFFSET_WEAPONOWNER = 41
- const m_iClip = 51
- const m_fInReload = 54
- const m_flNextAttack = 83
- const m_szAnimExtention = 492
- new g_iItemID
- new g_had_gatling[33], Float:g_punchangles[33][3], g_gatling_event, g_smokepuff_id, m_iBlood[2], g_ham_bot
- new g_Zoom, Float:g_ZoomTime[33]
- // MACROS
- #define Get_BitVar(%1,%2) (%1 & (1 << (%2 & 31)))
- #define Set_BitVar(%1,%2) %1 |= (1 << (%2 & 31))
- #define UnSet_BitVar(%1,%2) %1 &= ~(1 << (%2 & 31))
- public plugin_init()
- {
- register_plugin(PLUGIN, VERSION, AUTHOR)
- g_iItemID = ze_register_item("Skull 11", 35)
- register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
- register_forward(FM_CmdStart, "fw_CmdStart")
- register_forward(FM_SetModel, "fw_SetModel")
- register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
- register_forward(FM_PlaybackEvent, "fw_PlaybackEvent")
- RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack")
- RegisterHam(Ham_TraceAttack, "player", "fw_TraceAttack")
- RegisterHam(Ham_Item_Deploy, weapon_gatling, "fw_Item_Deploy_Post", 1)
- RegisterHam(Ham_Weapon_Reload, weapon_gatling, "fw_Weapon_Reload_Post", 1)
- RegisterHam(Ham_Item_PostFrame, weapon_gatling, "fw_Item_PostFrame")
- RegisterHam(Ham_Item_AddToPlayer, weapon_gatling, "fw_Item_AddToPlayer_Post", 1)
- RegisterHam(Ham_Weapon_PrimaryAttack, weapon_gatling, "fw_Weapon_PrimaryAttack")
- RegisterHam(Ham_Weapon_PrimaryAttack, weapon_gatling, "fw_Weapon_PrimaryAttack_Post", 1)
- }
- public plugin_precache()
- {
- new i
- for(i = 0; i < sizeof(WeaponModel); i++)
- engfunc(EngFunc_PrecacheModel, WeaponModel[i])
- for(i = 0; i < sizeof(WeaponSound); i++)
- engfunc(EngFunc_PrecacheSound, WeaponSound[i])
- g_smokepuff_id = engfunc(EngFunc_PrecacheModel, "sprites/wall_puff1.spr")
- m_iBlood[0] = engfunc(EngFunc_PrecacheModel, "sprites/blood.spr")
- m_iBlood[1] = engfunc(EngFunc_PrecacheModel, "sprites/bloodspray.spr")
- register_forward(FM_PrecacheEvent, "fw_PrecacheEvent_Post", 1)
- }
- public fw_PrecacheEvent_Post(type, const name[])
- {
- if(equal(old_event, name))
- g_gatling_event = get_orig_retval()
- }
- public client_putinserver(id)
- {
- if(is_user_bot(id) && !g_ham_bot)
- {
- g_ham_bot = 1
- set_task(0.1, "Do_Register_Ham", id)
- }
- }
- public Do_Register_Ham(id)
- {
- RegisterHamFromEntity(Ham_TraceAttack, id, "fw_TraceAttack")
- }
- public zd_weapon_addammo(id, itemid)
- {
- if(itemid == g_iItemID) cs_set_user_bpammo(id, CSW_GATLING, DEFAULT_BPAMMO)
- }
- public ze_select_item_pre(id, itemid)
- {
- // This not our item?
- if (itemid != g_iItemID)
- return ZE_ITEM_AVAILABLE
- // Available for Humans only, So don't show it for zombies
- if (ze_is_user_zombie(id))
- return ZE_ITEM_DONT_SHOW
- // Finally return that it's available
- return ZE_ITEM_AVAILABLE
- }
- public ze_select_item_post(id, itemid)
- {
- // This is not our item, Block it here and don't execute the blew code
- if (itemid != g_iItemID)
- return
- get_gatling(id)
- }
- public get_gatling(id)
- {
- UnSet_BitVar(g_Zoom, id)
- g_had_gatling[id] = 1
- give_item(id, weapon_gatling)
- // Set Clip
- static ent; ent = fm_get_user_weapon_entity(id, CSW_GATLING)
- if(pev_valid(ent)) cs_set_weapon_ammo(ent, DEFAULT_CLIP)
- // Set BpAmmo
- cs_set_user_bpammo(id, CSW_GATLING, DEFAULT_BPAMMO)
- // Update Ammo
- update_ammo(id, CSW_GATLING, DEFAULT_CLIP, DEFAULT_BPAMMO)
- }
- public remove_gatling(id)
- {
- g_had_gatling[id] = 0
- }
- public hook_weapon(id)
- {
- client_cmd(id, weapon_gatling)
- return PLUGIN_HANDLED
- }
- public Event_CurWeapon(id)
- {
- if(!is_user_alive(id))
- return
- if(get_user_weapon(id) != CSW_GATLING || !g_had_gatling[id])
- return
- // Speed
- static ent; ent = fm_get_user_weapon_entity(id, CSW_GATLING)
- if(!pev_valid(ent))
- return
- set_pdata_float(ent, 46, get_pdata_float(ent, 46, OFFSET_LINUX_WEAPONS) * SPEED, OFFSET_LINUX_WEAPONS)
- }
- public fw_CmdStart(id, uc_handle, seed)
- {
- if(!is_user_alive(id))
- return
- if(get_user_weapon(id) != CSW_GATLING || !g_had_gatling[id])
- return
- static CurButton; CurButton = get_uc(uc_handle, UC_Buttons)
- if(CurButton & IN_ATTACK2)
- {
- if(get_gametime() - 0.5 > g_ZoomTime[id])
- {
- if(!Get_BitVar(g_Zoom, id))
- {
- Set_BitVar(g_Zoom, id)
- client_print(id, print_center, "Changed to Slug Mode")
- } else {
- UnSet_BitVar(g_Zoom, id)
- client_print(id, print_center, "Changed to Normal Mode")
- }
- g_ZoomTime[id] = get_gametime()
- }
- }
- if(CurButton & IN_RELOAD)
- {
- CurButton &= ~IN_RELOAD
- set_uc(uc_handle, UC_Buttons, CurButton)
- static ent; ent = fm_get_user_weapon_entity(id, CSW_GATLING)
- if(!pev_valid(ent)) return
- static fInReload; fInReload = get_pdata_int(ent, m_fInReload, OFFSET_LINUX_WEAPONS)
- static Float:flNextAttack; flNextAttack = get_pdata_float(id, m_flNextAttack, OFFSET_LINUX_PLAYER)
- if (flNextAttack > 0.0)
- return
- if (fInReload)
- {
- set_weapon_anim(id, GATLING_ANIM_IDLE)
- return
- }
- if(cs_get_weapon_ammo(ent) >= DEFAULT_CLIP)
- {
- set_weapon_anim(id, GATLING_ANIM_IDLE)
- return
- }
- fw_Weapon_Reload_Post(ent)
- }
- }
- public fw_SetModel(entity, model[])
- {
- if(!pev_valid(entity))
- return FMRES_IGNORED
- static szClassName[33]
- pev(entity, pev_classname, szClassName, charsmax(szClassName))
- if(!equal(szClassName, "weaponbox"))
- return FMRES_IGNORED
- static id
- id = pev(entity, pev_owner)
- if(equal(model, DEFAULT_W_MODEL))
- {
- static weapon
- weapon = fm_find_ent_by_owner(-1, weapon_gatling, entity)
- if(!pev_valid(weapon))
- return FMRES_IGNORED
- if(g_had_gatling[id])
- {
- set_pev(weapon, pev_impulse, WEAPON_SECRET_CODE)
- engfunc(EngFunc_SetModel, entity, WeaponModel[2])
- remove_gatling(id)
- return FMRES_SUPERCEDE
- }
- }
- return FMRES_IGNORED
- }
- public fw_TraceAttack(ent, attacker, Float:Damage, Float:fDir[3], ptr, iDamageType)
- {
- if(!is_user_alive(attacker))
- return HAM_IGNORED
- if(get_user_weapon(attacker) != CSW_GATLING || !g_had_gatling[attacker])
- return HAM_IGNORED
- if(!is_user_alive(ent))
- {
- static Float:flEnd[3], Float:vecPlane[3]
- get_tr2(ptr, TR_vecEndPos, flEnd)
- get_tr2(ptr, TR_vecPlaneNormal, vecPlane)
- if(!Get_BitVar(g_Zoom, attacker))
- {
- make_bullet(attacker, flEnd)
- fake_smoke(attacker, ptr)
- } else {
- static Float:Target[3];
- fm_get_aim_origin(attacker, Target)
- set_tr2(ptr, TR_vecEndPos, Target)
- get_tr2(ptr, TR_vecEndPos, flEnd)
- make_bullet(attacker, flEnd)
- fake_smoke(attacker, ptr)
- }
- }
- SetHamParamFloat(3, float(DAMAGE) / 6.0)
- return HAM_HANDLED
- }
- 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) != CSW_GATLING || !g_had_gatling[id])
- return FMRES_IGNORED
- set_cd(cd_handle, CD_flNextAttack, get_gametime() + 0.001)
- return FMRES_HANDLED
- }
- 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) == CSW_GATLING && g_had_gatling[invoker] && eventid == g_gatling_event)
- {
- engfunc(EngFunc_PlaybackEvent, flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
- Event_Gatling_Shoot(invoker)
- return FMRES_SUPERCEDE
- }
- return FMRES_HANDLED
- }
- public fw_Item_Deploy_Post(ent)
- {
- static id; id = fm_cs_get_weapon_ent_owner(ent)
- if (!pev_valid(id))
- return
- static weaponid
- weaponid = cs_get_weapon_id(ent)
- if(weaponid != CSW_GATLING)
- return
- if(!g_had_gatling[id])
- return
- set_pev(id, pev_viewmodel2, WeaponModel[0])
- set_pev(id, pev_weaponmodel2, WeaponModel[1])
- set_weapon_anim(id, GATLING_ANIM_DRAW)
- set_pdata_string(id, m_szAnimExtention * 4, WEAPON_ANIMEXT, -1 , 20)
- }
- public fw_Weapon_Reload_Post(ent)
- {
- static id; id = pev(ent, pev_owner)
- if(g_had_gatling[id])
- {
- static CurBpAmmo; CurBpAmmo = cs_get_user_bpammo(id, CSW_GATLING)
- if(CurBpAmmo <= 0)
- return HAM_IGNORED
- set_pdata_int(ent, 55, 0, OFFSET_LINUX_WEAPONS)
- set_pdata_float(id, 83, RELOAD_TIME, OFFSET_LINUX_PLAYER)
- set_pdata_float(ent, 48, RELOAD_TIME + 0.5, OFFSET_LINUX_WEAPONS)
- set_pdata_float(ent, 46, RELOAD_TIME + 0.25, OFFSET_LINUX_WEAPONS)
- set_pdata_float(ent, 47, RELOAD_TIME + 0.25, OFFSET_LINUX_WEAPONS)
- set_pdata_int(ent, m_fInReload, 1, OFFSET_LINUX_WEAPONS)
- set_weapon_anim(id, GATLING_ANIM_RELOAD)
- return HAM_HANDLED
- }
- return HAM_IGNORED
- }
- public fw_Item_PostFrame(ent)
- {
- static id; id = pev(ent, pev_owner)
- if(!g_had_gatling[id]) return
- static iBpAmmo ; iBpAmmo = get_pdata_int(id, 381, OFFSET_LINUX_PLAYER)
- static iClip ; iClip = get_pdata_int(ent, m_iClip, OFFSET_LINUX_WEAPONS)
- static iMaxClip ; iMaxClip = DEFAULT_CLIP
- if(get_pdata_int(ent, m_fInReload, OFFSET_LINUX_WEAPONS) && get_pdata_float(id, m_flNextAttack, OFFSET_LINUX_PLAYER) <= 0.0)
- {
- static j; j = min(iMaxClip - iClip, iBpAmmo)
- set_pdata_int(ent, m_iClip, iClip + j, OFFSET_LINUX_WEAPONS)
- set_pdata_int(id, 381, iBpAmmo-j, OFFSET_LINUX_PLAYER)
- set_pdata_int(ent, m_fInReload, 0, OFFSET_LINUX_WEAPONS)
- cs_set_weapon_ammo(ent, DEFAULT_CLIP)
- update_ammo(id, CSW_GATLING, cs_get_weapon_ammo(ent), cs_get_user_bpammo(id, CSW_GATLING))
- return
- }
- }
- public fw_Item_AddToPlayer_Post(ent, id)
- {
- if(!pev_valid(ent))
- return HAM_IGNORED
- if(pev(ent, pev_impulse) == WEAPON_SECRET_CODE)
- {
- remove_gatling(id)
- g_had_gatling[id] = 1
- update_ammo(id, CSW_GATLING, cs_get_weapon_ammo(ent), cs_get_user_bpammo(id, CSW_GATLING))
- }
- return HAM_IGNORED
- }
- public fw_Weapon_PrimaryAttack(ent)
- {
- static id; id = pev(ent, pev_owner)
- if(!g_had_gatling[id])
- return
- pev(id, pev_punchangle, g_punchangles[id])
- }
- public fw_Weapon_PrimaryAttack_Post(ent)
- {
- static id; id = pev(ent, pev_owner)
- if(!g_had_gatling[id])
- return
- static Float:push[3]
- pev(id, pev_punchangle, push)
- xs_vec_sub(push, g_punchangles[id], push)
- xs_vec_mul_scalar(push, RECOIL, push)
- xs_vec_add(push, g_punchangles[id], push)
- set_pev(id, pev_punchangle, push)
- }
- public update_ammo(id, csw_id, clip, bpammo)
- {
- if(!is_user_alive(id))
- return
- message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("CurWeapon"), _, id)
- write_byte(1)
- write_byte(csw_id)
- write_byte(clip)
- message_end()
- message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("AmmoX"), _, id)
- write_byte(3)
- write_byte(bpammo)
- message_end()
- }
- public Event_Gatling_Shoot(id)
- {
- set_weapon_anim(id, random_num(GATLING_ANIM_SHOOT1, GATLING_ANIM_SHOOT2))
- emit_sound(id, CHAN_WEAPON, WeaponSound[0], 1.0, ATTN_NORM, 0, PITCH_NORM)
- }
- stock fm_cs_get_weapon_ent_owner(ent)
- {
- if (pev_valid(ent) != PDATA_SAFE)
- return -1
- return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS)
- }
- stock set_weapon_anim(id, anim)
- {
- if(!is_user_alive(id))
- return
- set_pev(id, pev_weaponanim, anim)
- message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, id)
- write_byte(anim)
- write_byte(0)
- message_end()
- }
- stock drop_weapons(id, dropwhat)
- {
- static weapons[32], num, i, weaponid
- num = 0
- get_user_weapons(id, weapons, num)
- 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)
- for (i = 0; i < num; i++)
- {
- weaponid = weapons[i]
- if (dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
- {
- static wname[32]
- get_weaponname(weaponid, wname, sizeof wname - 1)
- engclient_cmd(id, "drop", wname)
- }
- }
- }
- 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()
- }
Nobody Is That Busy If They Make Time
-
- Veteran Member
- Posts: 598
- Joined: 7 years ago
- Contact:
Many thanks johnny, everything works fine!
A got for you 2 new guns to convert, can you try it?
Thanatos-5 and Coilgun
A got for you 2 new guns to convert, can you try it?
Thanatos-5 and Coilgun
- Attachments
-
- CSO Coilgun 2015.rar
- (862.78 KiB) Downloaded 308 times
- CSO Coilgun 2015.rar
- (862.78 KiB) Downloaded 308 times
-
- CSO Thanatos-5 2015.rar
- (842.07 KiB) Downloaded 291 times
- CSO Thanatos-5 2015.rar
- (842.07 KiB) Downloaded 291 times
-
- Veteran Member
- Posts: 678
- Joined: 7 years ago
- Location: Paraguay
- Contact:
OK broczirimbolo wrote: ↑6 years ago Many thanks johnny, everything works fine!
A got for you 2 new guns to convert, can you try it?
Thanatos-5 and Coilgun
Nobody Is That Busy If They Make Time
-
- Veteran Member
- Posts: 678
- Joined: 7 years ago
- Location: Paraguay
- Contact:
Thanatos 5
- #include <zombie_escape>
- #include <fakemeta_util>
- #include <cstrike>
- #define PLUGIN "[CSO] Thanatos-5"
- #define VERSION "1.0"
- #define AUTHOR "Dias no Pendragon + ZE DEV TEAM"
- #define DAMAGE_A 29 // 58 for zombie
- #define DAMAGE_B 150 // 300 for zombie
- #define CLIP 30
- #define SCYTHE_RADIUS 120.0
- #define V_MODEL "models/v_thanatos5.mdl"
- #define P_MODEL "models/p_thanatos5.mdl"
- #define W_MODEL "models/w_thanatos5.mdl"
- #define S_MODEL "models/thanatos5_bulleta.mdl"
- new const WeaponSounds[12][] =
- {
- "weapons/thanatos5-1.wav",
- "weapons/thanatos5_shootb2_1.wav",
- "weapons/thanatos5_explode1.wav",
- "weapons/thanatos5_explode2.wav",
- "weapons/thanatos5_explode3.wav",
- "weapons/thanatos5_changea_1.wav",
- "weapons/thanatos5_changea_2.wav",
- "weapons/thanatos5_changea_3.wav",
- "weapons/thanatos5_changea_4.wav",
- "weapons/thanatos5_reloada_1.wav",
- "weapons/thanatos5_reloada_2.wav",
- "weapons/thanatos5_reloada_3.wav"
- }
- new const WeaponResources[6][] =
- {
- "sprites/thanatos5_explode.spr",
- "sprites/thanatos5_explode2.spr",
- "sprites/640hud7_2.spr",
- "sprites/640hud14_2.spr",
- "sprites/640hud125_2.spr",
- "sprites/weapon_thanatos5.txt"
- }
- enum
- {
- ANIM_IDLE_A = 0,
- ANIM_IDLE_B,
- ANIM_SHOOT_A1,
- ANIM_SHOOT_A2,
- ANIM_SHOOT_A3,
- ANIM_SHOOT_B1,
- ANIM_SHOOT_B2,
- ANIM_SHOOT_B3,
- ANIM_SHOOT_SPECIAL,
- ANIM_RELOAD_A,
- ANIM_RELOAD_B,
- ANIM_CHANGE,
- ANIM_DRAW_A,
- ANIM_DRAW_B
- }
- #define TASK_RELOAD 31515
- #define SCYTHE_CLASSNAME "mines"
- #define SCYTHE_CLASSNAME2 "mines2"
- #define CSW_THANATOS5 CSW_M4A1
- #define weapon_thanatos5 "weapon_m4a1"
- // Fire Start
- #define THANATOS5_OLDMODEL "models/w_m4a1.mdl"
- const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(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_P90)
- const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
- // MACROS
- #define Get_BitVar(%1,%2) (%1 & (1 << (%2 & 31)))
- #define Set_BitVar(%1,%2) %1 |= (1 << (%2 & 31))
- #define UnSet_BitVar(%1,%2) %1 &= ~(1 << (%2 & 31))
- new g_Had_Thanatos5, g_Thanatos5_Clip[33], g_GrenadeMode
- new g_MsgCurWeapon, g_MsgStatusIcon, g_MsgWeaponList, g_InTempingAttack, g_MaxPlayers, g_iItemID
- new g_Event_Thanatos5, g_ShellId, g_SmokePuff_SprId, g_HamBot, spr_trail, g_Exp_SprID, g_Exp2_SprID
- public plugin_init()
- {
- register_plugin(PLUGIN, VERSION, AUTHOR)
- g_iItemID = ze_register_item("Thanatos 5", 40)
- register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0")
- register_think(SCYTHE_CLASSNAME, "fw_Scythe_Think")
- register_think(SCYTHE_CLASSNAME2, "fw_Scythe_Think2")
- register_forward(FM_UpdateClientData,"fw_UpdateClientData_Post", 1)
- register_forward(FM_PlaybackEvent, "fw_PlaybackEvent")
- register_forward(FM_SetModel, "fw_SetModel")
- register_forward(FM_CmdStart, "fw_CmdStart")
- register_forward(FM_EmitSound, "fw_EmitSound")
- register_forward(FM_TraceLine, "fw_TraceLine")
- register_forward(FM_TraceHull, "fw_TraceHull")
- RegisterHam(Ham_Item_Deploy, weapon_thanatos5, "fw_Item_Deploy_Post", 1)
- RegisterHam(Ham_Item_AddToPlayer, weapon_thanatos5, "fw_Item_AddToPlayer_Post", 1)
- RegisterHam(Ham_Item_PostFrame, weapon_thanatos5, "fw_Item_PostFrame")
- RegisterHam(Ham_Weapon_Reload, weapon_thanatos5, "fw_Weapon_Reload")
- RegisterHam(Ham_Weapon_Reload, weapon_thanatos5, "fw_Weapon_Reload_Post", 1)
- RegisterHam(Ham_Weapon_WeaponIdle, weapon_thanatos5, "fw_Weapon_WeaponIdle_Post", 1)
- RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack_World")
- RegisterHam(Ham_TraceAttack, "player", "fw_TraceAttack_Player")
- g_MsgCurWeapon = get_user_msgid("CurWeapon")
- g_MsgStatusIcon = get_user_msgid("StatusIcon")
- g_MsgWeaponList = get_user_msgid("WeaponList")
- g_MaxPlayers = get_maxplayers()
- register_clcmd("weapon_thanatos5", "Hook_Weapon")
- }
- public plugin_precache()
- {
- precache_model(V_MODEL)
- precache_model(P_MODEL)
- precache_model(W_MODEL)
- precache_model(S_MODEL)
- for(new i = 0; i < sizeof(WeaponSounds); i++)
- precache_sound(WeaponSounds[i])
- g_Exp_SprID = precache_model(WeaponResources[0])
- g_Exp2_SprID = precache_model(WeaponResources[1])
- precache_model(WeaponResources[2])
- precache_model(WeaponResources[3])
- precache_model(WeaponResources[4])
- precache_generic(WeaponResources[5])
- g_ShellId = precache_model("models/rshell.mdl")
- g_SmokePuff_SprId = precache_model("sprites/wall_puff1.spr")
- spr_trail = engfunc(EngFunc_PrecacheModel, "sprites/laserbeam.spr")
- register_forward(FM_PrecacheEvent, "fw_PrecacheEvent_Post", 1)
- }
- public fw_PrecacheEvent_Post(type, const name[])
- {
- if(equal("events/m4a1.sc", name)) g_Event_Thanatos5 = get_orig_retval()
- }
- public client_putinserver(id)
- {
- if(!g_HamBot && is_user_bot(id))
- {
- g_HamBot = 1
- set_task(0.1, "Do_Register_HamBot", id)
- }
- }
- public Do_Register_HamBot(id)
- {
- RegisterHamFromEntity(Ham_TraceAttack, id, "fw_TraceAttack_Player")
- }
- public Event_NewRound() remove_entity_name(SCYTHE_CLASSNAME)
- public Hook_Weapon(id)
- {
- engclient_cmd(id, weapon_thanatos5)
- return PLUGIN_HANDLED
- }
- public ze_select_item_pre(id, itemid)
- {
- // This not our item?
- if (itemid != g_iItemID)
- return ZE_ITEM_AVAILABLE
- // Available for Humans only, So don't show it for zombies
- if (ze_is_user_zombie(id))
- return ZE_ITEM_DONT_SHOW
- // Finally return that it's available
- return ZE_ITEM_AVAILABLE
- }
- public ze_select_item_post(id, itemid)
- {
- // This is not our item, Block it here and don't execute the blew code
- if (itemid != g_iItemID)
- return
- Get_Thanatos5(id)
- }
- public Get_Thanatos5(id)
- {
- drop_weapons(id, 1)
- Set_BitVar(g_Had_Thanatos5, id)
- UnSet_BitVar(g_GrenadeMode, id)
- give_item(id, weapon_thanatos5)
- static Ent; Ent = fm_get_user_weapon_entity(id, CSW_THANATOS5)
- if(pev_valid(Ent)) cs_set_weapon_ammo(Ent, CLIP)
- message_begin(MSG_ONE_UNRELIABLE, g_MsgWeaponList, _, id)
- write_string("weapon_thanatos5")
- write_byte(4)
- write_byte(90)
- write_byte(-1)
- write_byte(-1)
- write_byte(0)
- write_byte(6)
- write_byte(CSW_THANATOS5)
- write_byte(0)
- message_end()
- Update_Ammo(id, CLIP)
- Update_SpecialAmmo(id, 1, 0)
- cs_set_user_bpammo(id, CSW_THANATOS5, 200)
- }
- public Remove_Thanatos5(id)
- {
- if(is_user_connected(id))
- Update_SpecialAmmo(id, 1, 0)
- UnSet_BitVar(g_Had_Thanatos5, id)
- UnSet_BitVar(g_GrenadeMode, id)
- }
- public Update_Ammo(id, Ammo)
- {
- if(!is_user_alive(id))
- return
- engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, g_MsgCurWeapon, {0, 0, 0}, id)
- write_byte(1)
- write_byte(CSW_THANATOS5)
- write_byte(Ammo)
- message_end()
- }
- public fw_UpdateClientData_Post(id, sendweapons, cd_handle)
- {
- if(!is_user_alive(id))
- return FMRES_IGNORED
- if(get_user_weapon(id) == CSW_THANATOS5 && Get_BitVar(g_Had_Thanatos5, id))
- set_cd(cd_handle, CD_flNextAttack, get_gametime() + 0.001)
- return FMRES_HANDLED
- }
- 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) != CSW_THANATOS5 || !Get_BitVar(g_Had_Thanatos5, invoker))
- return FMRES_IGNORED
- if(eventid != g_Event_Thanatos5)
- return FMRES_IGNORED
- engfunc(EngFunc_PlaybackEvent, flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
- if(Get_BitVar(g_GrenadeMode, invoker)) Set_WeaponAnim(invoker, ANIM_SHOOT_B1)
- else Set_WeaponAnim(invoker, ANIM_SHOOT_A1)
- emit_sound(invoker, CHAN_WEAPON, WeaponSounds[0], 1.0, ATTN_NORM, 0, PITCH_NORM)
- Eject_Shell(invoker, g_ShellId, 0.01)
- return FMRES_IGNORED
- }
- public Update_SpecialAmmo(id, Ammo, On)
- {
- static AmmoSprites[33], Color[3]
- format(AmmoSprites, sizeof(AmmoSprites), "number_%d", Ammo)
- switch(Ammo)
- {
- case 1..3: { Color[0] = 0; Color[1] = 200; Color[2] = 0; }
- case 4..5: { Color[0] = 200; Color[1] = 200; Color[2] = 0; }
- case 6..10: { Color[0] = 200; Color[1] = 0; Color[2] = 0; }
- }
- message_begin(MSG_ONE_UNRELIABLE, g_MsgStatusIcon, {0,0,0}, id)
- write_byte(On)
- write_string(AmmoSprites)
- write_byte(Color[0]) // red
- write_byte(Color[1]) // green
- write_byte(Color[2]) // blue
- message_end()
- }
- public fw_SetModel(entity, model[])
- {
- if(!pev_valid(entity))
- return FMRES_IGNORED
- static Classname[32]
- pev(entity, pev_classname, Classname, sizeof(Classname))
- if(!equal(Classname, "weaponbox"))
- return FMRES_IGNORED
- static iOwner
- iOwner = pev(entity, pev_owner)
- if(equal(model, THANATOS5_OLDMODEL))
- {
- static weapon; weapon = find_ent_by_owner(-1, weapon_thanatos5, entity)
- if(!pev_valid(weapon))
- return FMRES_IGNORED;
- if(Get_BitVar(g_Had_Thanatos5, iOwner))
- {
- set_pev(weapon, pev_impulse, 3152015)
- set_pev(weapon, pev_iuser4, Get_BitVar(g_GrenadeMode, iOwner) ? 1 : 0)
- engfunc(EngFunc_SetModel, entity, W_MODEL)
- Remove_Thanatos5(iOwner)
- return FMRES_SUPERCEDE
- }
- }
- return FMRES_IGNORED;
- }
- public fw_CmdStart(id, uc_handle, seed)
- {
- if(!is_user_alive(id))
- return FMRES_IGNORED
- if(get_user_weapon(id) != CSW_THANATOS5 || !Get_BitVar(g_Had_Thanatos5, id))
- return FMRES_IGNORED
- static PressedButton
- PressedButton = get_uc(uc_handle, UC_Buttons)
- if(PressedButton & IN_ATTACK2)
- {
- if(get_pdata_float(id, 83, 5) > 0.0)
- return FMRES_IGNORED
- PressedButton &= ~IN_ATTACK2
- set_uc(uc_handle, UC_Buttons, PressedButton)
- if(!Get_BitVar(g_GrenadeMode, id))
- {
- set_pdata_float(id, 83, 5.0, 5)
- Set_WeaponIdleTime(id, CSW_THANATOS5, 5.0)
- Set_WeaponAnim(id, ANIM_CHANGE)
- remove_task(id+TASK_RELOAD)
- set_task(4.75, "Complete_Reload", id+TASK_RELOAD)
- } else {
- Shoot_Scythe(id)
- }
- }
- return FMRES_HANDLED
- }
- public Complete_Reload(id)
- {
- id -= TASK_RELOAD
- if(!is_user_alive(id))
- return
- if(get_user_weapon(id) != CSW_THANATOS5 || !Get_BitVar(g_Had_Thanatos5, id))
- return
- if(Get_BitVar(g_GrenadeMode, id))
- return
- Set_BitVar(g_GrenadeMode, id)
- set_pdata_float(id, 83, 0.0, 5)
- Set_WeaponIdleTime(id, CSW_THANATOS5, 0.0)
- Set_WeaponAnim(id, ANIM_IDLE_B)
- Update_SpecialAmmo(id, 1, 1)
- }
- public Shoot_Scythe(id)
- {
- emit_sound(id, CHAN_WEAPON, WeaponSounds[1], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
- Create_FakeAttackAnim(id)
- Set_WeaponAnim(id, ANIM_SHOOT_SPECIAL)
- Update_SpecialAmmo(id, 1, 0)
- set_pdata_float(id, 83, 2.0, 5)
- Set_WeaponIdleTime(id, CSW_THANATOS5, 2.0)
- UnSet_BitVar(g_GrenadeMode, id)
- // Fake Punch
- //static Float:Origin[3]
- //Origin[0] = random_float(-2.5, -5.0)
- //set_pev(id, pev_punchangle, Origin)
- // Scythe
- Create_Scythe(id)
- }
- public fw_EmitSound(id, channel, const sample[], Float:volume, Float:attn, flags, pitch)
- {
- if(!is_user_connected(id))
- return FMRES_IGNORED
- if(!Get_BitVar(g_InTempingAttack, id))
- return FMRES_IGNORED
- if(sample[8] == 'k' && sample[9] == 'n' && sample[10] == 'i')
- {
- if(sample[14] == 's' && sample[15] == 'l' && sample[16] == 'a')
- return FMRES_SUPERCEDE
- if (sample[14] == 'h' && sample[15] == 'i' && sample[16] == 't')
- {
- if (sample[17] == 'w') return FMRES_SUPERCEDE
- else return FMRES_SUPERCEDE
- }
- if (sample[14] == 's' && sample[15] == 't' && sample[16] == 'a')
- return FMRES_SUPERCEDE;
- }
- return FMRES_IGNORED
- }
- public fw_TraceLine(Float:vector_start[3], Float:vector_end[3], ignored_monster, id, handle)
- {
- if(!is_user_alive(id))
- return FMRES_IGNORED
- if(!Get_BitVar(g_InTempingAttack, id))
- return FMRES_IGNORED
- static Float:vecStart[3], Float:vecEnd[3], Float:v_angle[3], Float:v_forward[3], Float:view_ofs[3], Float:fOrigin[3]
- pev(id, pev_origin, fOrigin)
- pev(id, pev_view_ofs, view_ofs)
- xs_vec_add(fOrigin, view_ofs, vecStart)
- pev(id, pev_v_angle, v_angle)
- engfunc(EngFunc_MakeVectors, v_angle)
- get_global_vector(GL_v_forward, v_forward)
- xs_vec_mul_scalar(v_forward, 0.0, v_forward)
- xs_vec_add(vecStart, v_forward, vecEnd)
- engfunc(EngFunc_TraceLine, vecStart, vecEnd, ignored_monster, id, handle)
- return FMRES_SUPERCEDE
- }
- public fw_TraceHull(Float:vector_start[3], Float:vector_end[3], ignored_monster, hull, id, handle)
- {
- if(!is_user_alive(id))
- return FMRES_IGNORED
- if(!Get_BitVar(g_InTempingAttack, id))
- return FMRES_IGNORED
- static Float:vecStart[3], Float:vecEnd[3], Float:v_angle[3], Float:v_forward[3], Float:view_ofs[3], Float:fOrigin[3]
- pev(id, pev_origin, fOrigin)
- pev(id, pev_view_ofs, view_ofs)
- xs_vec_add(fOrigin, view_ofs, vecStart)
- pev(id, pev_v_angle, v_angle)
- engfunc(EngFunc_MakeVectors, v_angle)
- get_global_vector(GL_v_forward, v_forward)
- xs_vec_mul_scalar(v_forward, 0.0, v_forward)
- xs_vec_add(vecStart, v_forward, vecEnd)
- engfunc(EngFunc_TraceHull, vecStart, vecEnd, ignored_monster, hull, id, handle)
- return FMRES_SUPERCEDE
- }
- public Create_FakeAttackAnim(id)
- {
- Set_BitVar(g_InTempingAttack, id)
- static Ent; Ent = fm_get_user_weapon_entity(id, CSW_KNIFE)
- if(pev_valid(Ent)) ExecuteHamB(Ham_Weapon_PrimaryAttack, Ent)
- UnSet_BitVar(g_InTempingAttack, id)
- }
- 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(!Get_BitVar(g_Had_Thanatos5, Id))
- return
- set_pev(Id, pev_viewmodel2, V_MODEL)
- set_pev(Id, pev_weaponmodel2, P_MODEL)
- if(Get_BitVar(g_GrenadeMode, Id)) Set_WeaponAnim(Id, ANIM_DRAW_B)
- else Set_WeaponAnim(Id, ANIM_DRAW_A)
- }
- public fw_Item_AddToPlayer_Post(Ent, id)
- {
- if(!pev_valid(Ent))
- return HAM_IGNORED
- if(pev(Ent, pev_impulse) == 3152015)
- {
- Set_BitVar(g_Had_Thanatos5, id)
- set_pev(Ent, pev_impulse, 0)
- if(pev(Ent, pev_iuser4))
- {
- Set_BitVar(g_GrenadeMode, id)
- Update_SpecialAmmo(id, 1, 1)
- }
- message_begin(MSG_ONE_UNRELIABLE, g_MsgWeaponList, _, id)
- write_string("weapon_thanatos5")
- write_byte(4)
- write_byte(90)
- write_byte(-1)
- write_byte(-1)
- write_byte(0)
- write_byte(6)
- write_byte(CSW_THANATOS5)
- write_byte(0)
- message_end()
- }
- return HAM_HANDLED
- }
- public fw_Weapon_WeaponIdle_Post( iEnt )
- {
- if(pev_valid(iEnt) != 2)
- return
- static Id; Id = get_pdata_cbase(iEnt, 41, 4)
- if(get_pdata_cbase(Id, 373) != iEnt)
- return
- if(!Get_BitVar(g_Had_Thanatos5, Id))
- return
- if(get_pdata_float(iEnt, 48, 4) <= 0.25)
- {
- if(Get_BitVar(g_GrenadeMode, Id)) Set_WeaponAnim(Id, ANIM_IDLE_B)
- else Set_WeaponAnim(Id, ANIM_IDLE_A)
- set_pdata_float(iEnt, 48, 20.0, 4)
- }
- }
- public fw_TraceAttack_World(Victim, Attacker, Float:Damage, Float:Direction[3], Ptr, DamageBits)
- {
- if(!is_user_connected(Attacker))
- return HAM_IGNORED
- if(get_user_weapon(Attacker) != CSW_THANATOS5 || !Get_BitVar(g_Had_Thanatos5, Attacker))
- return HAM_IGNORED
- static Float:flEnd[3], Float:vecPlane[3]
- get_tr2(Ptr, TR_vecEndPos, flEnd)
- get_tr2(Ptr, TR_vecPlaneNormal, vecPlane)
- Make_BulletHole(Attacker, flEnd, Damage)
- Make_BulletSmoke(Attacker, Ptr)
- SetHamParamFloat(3, float(DAMAGE_A))
- return HAM_IGNORED
- }
- public fw_TraceAttack_Player(Victim, Attacker, Float:Damage, Float:Direction[3], Ptr, DamageBits)
- {
- if(!is_user_connected(Attacker))
- return HAM_IGNORED
- if(get_user_weapon(Attacker) != CSW_THANATOS5 || !Get_BitVar(g_Had_Thanatos5, Attacker))
- return HAM_IGNORED
- SetHamParamFloat(3, float(DAMAGE_A))
- return HAM_IGNORED
- }
- public fw_Item_PostFrame(ent)
- {
- static id; id = pev(ent, pev_owner)
- if(!is_user_alive(id))
- return HAM_IGNORED
- if(!Get_BitVar(g_Had_Thanatos5, id))
- return HAM_IGNORED
- static Float:flNextAttack; flNextAttack = get_pdata_float(id, 83, 5)
- static bpammo; bpammo = cs_get_user_bpammo(id, CSW_THANATOS5)
- 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(CLIP - iClip, bpammo)
- set_pdata_int(ent, 51, iClip + temp1, 4)
- cs_set_user_bpammo(id, CSW_THANATOS5, bpammo - temp1)
- set_pdata_int(ent, 54, 0, 4)
- fInReload = 0
- }
- return HAM_IGNORED
- }
- public fw_Weapon_Reload(ent)
- {
- static id; id = pev(ent, pev_owner)
- if(!is_user_alive(id))
- return HAM_IGNORED
- if(!Get_BitVar(g_Had_Thanatos5, id))
- return HAM_IGNORED
- g_Thanatos5_Clip[id] = -1
- static BPAmmo; BPAmmo = cs_get_user_bpammo(id, CSW_THANATOS5)
- static iClip; iClip = get_pdata_int(ent, 51, 4)
- if(BPAmmo <= 0)
- return HAM_SUPERCEDE
- if(iClip >= CLIP)
- return HAM_SUPERCEDE
- g_Thanatos5_Clip[id] = iClip
- return HAM_HANDLED
- }
- public fw_Weapon_Reload_Post(ent)
- {
- static id; id = pev(ent, pev_owner)
- if(!is_user_alive(id))
- return HAM_IGNORED
- if(!Get_BitVar(g_Had_Thanatos5, id))
- return HAM_IGNORED
- if((get_pdata_int(ent, 54, 4) == 1))
- { // Reload
- if(g_Thanatos5_Clip[id] == -1)
- return HAM_IGNORED
- set_pdata_int(ent, 51, g_Thanatos5_Clip[id], 4)
- set_pdata_float(id, 83, 3.0, 5)
- if(Get_BitVar(g_GrenadeMode, id)) Set_WeaponAnim(id, ANIM_RELOAD_B)
- else Set_WeaponAnim(id, ANIM_RELOAD_A)
- }
- return HAM_HANDLED
- }
- public Create_Scythe(id)
- {
- new iEnt = create_entity("info_target")
- static Float:Origin[3], Float:Angles[3], Float:TargetOrigin[3], Float:Velocity[3]
- get_weapon_attachment(id, Origin, 40.0)
- get_position(id, 1024.0, 6.0, 0.0, TargetOrigin)
- pev(id, pev_v_angle, Angles)
- Angles[0] *= -1.0
- // set info for ent
- set_pev(iEnt, pev_movetype, MOVETYPE_PUSHSTEP)
- entity_set_string(iEnt, EV_SZ_classname, SCYTHE_CLASSNAME)
- engfunc(EngFunc_SetModel, iEnt, S_MODEL)
- set_pev(iEnt, pev_mins, Float:{-1.0, -1.0, -1.0})
- set_pev(iEnt, pev_maxs, Float:{1.0, 1.0, 1.0})
- set_pev(iEnt, pev_origin, Origin)
- set_pev(iEnt, pev_gravity, 1.0)
- set_pev(iEnt, pev_angles, Angles)
- set_pev(iEnt, pev_solid, SOLID_TRIGGER)
- set_pev(iEnt, pev_owner, id)
- set_pev(iEnt, pev_iuser1, get_user_team(id))
- set_pev(iEnt, pev_iuser2, 0)
- set_pev(iEnt, pev_fuser1, get_gametime() + 1.5)
- get_speed_vector(Origin, TargetOrigin, 900.0, Velocity)
- set_pev(iEnt, pev_velocity, Velocity)
- set_pev(iEnt, pev_nextthink, get_gametime() + 0.1)
- // Animation
- set_pev(iEnt, pev_animtime, get_gametime())
- set_pev(iEnt, pev_framerate, 2.0)
- set_pev(iEnt, pev_sequence, 0)
- // Make a Beam
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
- write_byte(TE_BEAMFOLLOW)
- write_short(iEnt) // entity
- write_short(spr_trail) // sprite
- write_byte(20) // life
- write_byte(2) // width
- write_byte(200) // r
- write_byte(200); // g
- write_byte(200); // b
- write_byte(200); // brightness
- message_end();
- }
- public fw_Scythe_Think(Ent)
- {
- if(!pev_valid(Ent))
- return
- static Float:Time; pev(Ent, pev_fuser1, Time)
- static Team; Team = pev(Ent, pev_iuser1)
- if(Time <= get_gametime())
- {
- static Float:Origin[3];
- pev(Ent, pev_origin, Origin)
- Thanatos5_Explose(Origin)
- emit_sound(Ent, CHAN_BODY, WeaponSounds[2], VOL_NORM, ATTN_NONE, 0, PITCH_NORM)
- static ID; ID = pev(Ent, pev_owner)
- if(!is_user_connected(ID))
- {
- set_pev(Ent, pev_flags, FL_KILLME)
- set_pev(Ent, pev_nextthink, get_gametime() + 0.1)
- return
- }
- Thanatos5_Damage(ID, Team, Origin)
- Create_ScytheSystem(ID, Ent, 1)
- set_pev(Ent, pev_flags, FL_KILLME)
- set_pev(Ent, pev_nextthink, get_gametime() + 0.1)
- return
- }
- set_pev(Ent, pev_nextthink, get_gametime() + 0.1)
- }
- public Create_ScytheSystem(id, Ent, Next)
- {
- static Float:Origin[4][3]
- static Float:Start[3]; pev(Ent, pev_origin, Start)
- get_position(Ent, 100.0, 0.0, 100.0, Origin[0])
- get_position(Ent, -100.0, 0.0, 100.0, Origin[1])
- get_position(Ent, 0.0, -100.0, 100.0, Origin[2])
- get_position(Ent, 0.0, 100.0, 100.0, Origin[3])
- for(new i = 0; i < 4; i++)
- Create_Mine(id, Start, Origin[i], Next)
- }
- public Create_Mine(id, Float:Origin[3], Float:TargetOrigin[3], Next)
- {
- new iEnt = create_entity("info_target")
- static Float:Velocity[3]
- // set info for ent
- set_pev(iEnt, pev_movetype, MOVETYPE_PUSHSTEP)
- entity_set_string(iEnt, EV_SZ_classname, SCYTHE_CLASSNAME2)
- engfunc(EngFunc_SetModel, iEnt, S_MODEL)
- set_pev(iEnt, pev_mins, Float:{-1.0, -1.0, -1.0})
- set_pev(iEnt, pev_maxs, Float:{1.0, 1.0, 1.0})
- set_pev(iEnt, pev_origin, Origin)
- set_pev(iEnt, pev_gravity, 1.0)
- set_pev(iEnt, pev_solid, SOLID_TRIGGER)
- set_pev(iEnt, pev_owner, id)
- set_pev(iEnt, pev_iuser1, get_user_team(id))
- set_pev(iEnt, pev_iuser2, Next)
- set_pev(iEnt, pev_fuser1, get_gametime() + 1.5)
- get_speed_vector(Origin, TargetOrigin, 250.0, Velocity)
- set_pev(iEnt, pev_velocity, Velocity)
- set_pev(iEnt, pev_nextthink, get_gametime() + 0.1)
- // Animation
- set_pev(iEnt, pev_animtime, get_gametime())
- set_pev(iEnt, pev_framerate, 2.0)
- set_pev(iEnt, pev_sequence, 0)
- // Make a Beam
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
- write_byte(TE_BEAMFOLLOW)
- write_short(iEnt) // entity
- write_short(spr_trail) // sprite
- write_byte(10) // life
- write_byte(2) // width
- write_byte(200) // r
- write_byte(200); // g
- write_byte(200); // b
- write_byte(200); // brightness
- message_end();
- }
- public fw_Scythe_Think2(Ent)
- {
- if(!pev_valid(Ent))
- return
- static Float:Time; pev(Ent, pev_fuser1, Time)
- static Next; Next = pev(Ent, pev_iuser2)
- static Team; Team = pev(Ent, pev_iuser1)
- if(Time <= get_gametime())
- {
- static Float:Origin[3];
- pev(Ent, pev_origin, Origin)
- Thanatos5_Explose(Origin)
- emit_sound(Ent, CHAN_BODY, WeaponSounds[2], VOL_NORM, ATTN_NONE, 0, PITCH_NORM)
- static ID; ID = pev(Ent, pev_owner)
- if(!is_user_connected(ID))
- {
- set_pev(Ent, pev_flags, FL_KILLME)
- set_pev(Ent, pev_nextthink, get_gametime() + 0.1)
- return
- }
- Thanatos5_Damage(ID, Team, Origin)
- if(Next) Create_ScytheSystem(ID, Ent, 0)
- set_pev(Ent, pev_flags, FL_KILLME)
- set_pev(Ent, pev_nextthink, get_gametime() + 0.1)
- return
- }
- set_pev(Ent, pev_nextthink, get_gametime() + 0.1)
- }
- public Thanatos5_Explose(Float:Origin[3])
- {
- message_begin(MSG_BROADCAST ,SVC_TEMPENTITY)
- write_byte(TE_EXPLOSION)
- engfunc(EngFunc_WriteCoord, Origin[0])
- engfunc(EngFunc_WriteCoord, Origin[1])
- engfunc(EngFunc_WriteCoord, Origin[2])
- write_short(g_Exp_SprID) // sprite index
- write_byte(5) // scale in 0.1's
- write_byte(30) // framerate
- write_byte(TE_EXPLFLAG_NOSOUND) // flags
- message_end()
- message_begin(MSG_BROADCAST ,SVC_TEMPENTITY)
- write_byte(TE_EXPLOSION)
- engfunc(EngFunc_WriteCoord, Origin[0])
- engfunc(EngFunc_WriteCoord, Origin[1])
- engfunc(EngFunc_WriteCoord, Origin[2])
- write_short(g_Exp2_SprID) // sprite index
- write_byte(5) // scale in 0.1's
- write_byte(30) // framerate
- write_byte(TE_EXPLFLAG_NOSOUND | TE_EXPLFLAG_NODLIGHTS) // flags
- message_end()
- }
- public Thanatos5_Damage(id, Team, Float:Origin[3])
- {
- static Float:MyOrigin[3]
- for(new i = 0; i < g_MaxPlayers; i++)
- {
- if(!is_user_alive(id))
- continue
- if(get_user_team(i) == Team)
- continue
- if(id == i)
- continue
- pev(i, pev_origin, MyOrigin)
- if(get_distance_f(Origin, MyOrigin) > SCYTHE_RADIUS)
- continue
- ExecuteHamB(Ham_TakeDamage, i, 0, id, float(DAMAGE_B), DMG_BULLET)
- }
- }
- // Drop primary/secondary weapons
- stock drop_weapons(id, dropwhat)
- {
- // Get user weapons
- static weapons[32], num, i, weaponid
- num = 0 // reset passed weapons count (bugfix)
- get_user_weapons(id, weapons, num)
- // Loop through them and drop primaries or secondaries
- for (i = 0; i < num; i++)
- {
- // Prevent re-indexing the array
- weaponid = weapons[i]
- if ((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
- {
- // Get weapon entity
- static wname[32]; get_weaponname(weaponid, wname, charsmax(wname))
- engclient_cmd(id, "drop", wname)
- }
- }
- }
- stock Set_WeaponAnim(id, anim)
- {
- set_pev(id, pev_weaponanim, anim)
- message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, {0, 0, 0}, id)
- write_byte(anim)
- write_byte(pev(id, pev_body))
- message_end()
- }
- stock Eject_Shell(id, Shell_ModelIndex, Float:Time) // By Dias
- {
- static Ent; Ent = get_pdata_cbase(id, 373, 5)
- if(!pev_valid(Ent))
- return
- set_pdata_int(Ent, 57, Shell_ModelIndex, 4)
- set_pdata_float(id, 111, get_gametime() + Time)
- }
- stock Make_BulletHole(id, Float:Origin[3], Float:Damage)
- {
- // Find target
- static Decal; Decal = random_num(41, 45)
- static LoopTime;
- if(Damage > 100.0) LoopTime = 2
- else LoopTime = 1
- for(new i = 0; i < LoopTime; 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()
- }
- }
- stock Make_BulletSmoke(id, TrResult)
- {
- 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(TrResult, TR_vecEndPos, vecSrc)
- get_tr2(TrResult, 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_SprId)
- write_byte(2)
- write_byte(50)
- write_byte(TE_FLAG)
- message_end()
- }
- stock get_weapon_attachment(id, Float:output[3], Float:fDis = 40.0)
- {
- static Float:vfEnd[3], viEnd[3]
- get_user_origin(id, viEnd, 3)
- IVecFVec(viEnd, vfEnd)
- static Float:fOrigin[3], Float:fAngle[3]
- pev(id, pev_origin, fOrigin)
- pev(id, pev_view_ofs, fAngle)
- xs_vec_add(fOrigin, fAngle, fOrigin)
- static Float:fAttack[3]
- xs_vec_sub(vfEnd, fOrigin, fAttack)
- xs_vec_sub(vfEnd, fOrigin, fAttack)
- static Float:fRate
- fRate = fDis / vector_length(fAttack)
- xs_vec_mul_scalar(fAttack, fRate, fAttack)
- xs_vec_add(fOrigin, fAttack, output)
- }
- stock get_position(id,Float:forw, Float:right, Float:up, Float:vStart[])
- {
- new 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
- }
- stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3])
- {
- new_velocity[0] = origin2[0] - origin1[0]
- new_velocity[1] = origin2[1] - origin1[1]
- new_velocity[2] = origin2[2] - origin1[2]
- new Float:num = floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
- new_velocity[0] *= num
- new_velocity[1] *= num
- new_velocity[2] *= num
- return 1;
- }
- stock Set_WeaponIdleTime(id, WeaponId ,Float:TimeIdle)
- {
- static entwpn; entwpn = fm_get_user_weapon_entity(id, WeaponId)
- if(!pev_valid(entwpn))
- return
- set_pdata_float(entwpn, 46, TimeIdle, 4)
- set_pdata_float(entwpn, 47, TimeIdle, 4)
- set_pdata_float(entwpn, 48, TimeIdle + 0.5, 4)
- }
- #include <zombie_escape>
- #include <fakemeta_util>
- #include <cstrike>
- #include <xs>
- #define PLUGIN "[CSO] Coilgun"
- #define VERSION "1.0"
- #define AUTHOR "Dias + ZE DEV TEAM"
- #define DAMAGE 31 // 62 for zombie
- #define CLIP 100
- #define BPAMMO 200
- #define TIME_RELOAD 3.5
- #define TIME_SHOOT 1.0
- #define MODEL_V "models/v_coilmg.mdl"
- #define MODEL_P "models/p_coilmg.mdl"
- #define MODEL_W "models/w_coilmg.mdl"
- #define DARTPISTOL_OLDMODEL "models/w_m249.mdl"
- new const WeaponSounds[5][] =
- {
- "weapons/coilmg-1.wav",
- "weapons/coilmg_exp1.wav",
- "weapons/coilmg_exp2.wav",
- "weapons/coilmg_clipin.wav",
- "weapons/coilmg_clipout.wav"
- }
- new const WeaponResources[3][] =
- {
- "sprites/weapon_coilmg.txt",
- "sprites/640hud8_2.spr",
- "sprites/640hud129_2.spr"
- }
- new const Muzzleflash[] = "sprites/muzzleflash19.spr"
- new const Electric_Sprite[] = "sprites/ef_coilmg.spr"
- enum
- {
- ANIME_IDLE = 0,
- ANIME_RELOAD,
- ANIME_DRAW,
- ANIME_SHOOT,
- ANIME_SHOOT2,
- ANIME_SHOOT3
- }
- // MACROS
- #define Get_BitVar(%1,%2) (%1 & (1 << (%2 & 31)))
- #define Set_BitVar(%1,%2) %1 |= (1 << (%2 & 31))
- #define UnSet_BitVar(%1,%2) %1 &= ~(1 << (%2 & 31))
- // Vars
- new g_Had_Coilgun, g_Clip[33]
- new g_SprID, g_Event_Coilgun, g_SmokePuff_SprId
- new g_MaxPlayers, g_MsgWeaponList, g_MsgCurWeapon
- new g_Muzzleflash_Ent[33], g_Muzzleflash, g_iItemID
- // Safety
- new g_IsConnected, g_IsAlive, g_PlayerWeapon[33], g_HamBot
- public plugin_init()
- {
- register_plugin(PLUGIN, VERSION, AUTHOR)
- g_iItemID = ze_register_item("Coil Gun", 40)
- // Safety
- Register_SafetyFunc()
- register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
- // Forward
- register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
- register_forward(FM_PlaybackEvent, "fw_PlaybackEvent")
- register_forward(FM_CmdStart, "fw_CmdStart")
- register_forward(FM_SetModel, "fw_SetModel")
- register_forward(FM_AddToFullPack, "fw_AddToFullPack_Post", 1)
- register_forward(FM_CheckVisibility, "fw_CheckVisibility")
- // Ham
- RegisterHam(Ham_Item_Deploy, "weapon_m249", "fw_Item_Deploy_Post", 1)
- RegisterHam(Ham_Item_AddToPlayer, "weapon_m249", "fw_Item_AddToPlayer_Post", 1)
- RegisterHam(Ham_Weapon_WeaponIdle, "weapon_m249", "fw_Weapon_WeaponIdle_Post", 1)
- RegisterHam(Ham_Item_PostFrame, "weapon_m249", "fw_Item_PostFrame")
- RegisterHam(Ham_Weapon_Reload, "weapon_m249", "fw_Weapon_Reload")
- RegisterHam(Ham_Weapon_Reload, "weapon_m249", "fw_Weapon_Reload_Post", 1)
- RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_m249", "fw_Weapon_PrimaryAttack_Post", 1)
- RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack_World")
- RegisterHam(Ham_TraceAttack, "player", "fw_TraceAttack_Player")
- g_MaxPlayers = get_maxplayers()
- g_MsgCurWeapon = get_user_msgid("CurWeapon")
- g_MsgWeaponList = get_user_msgid("WeaponList")
- register_clcmd("weapon_coilmg", "Hook_Weapon")
- }
- public plugin_precache()
- {
- precache_model(MODEL_V)
- precache_model(MODEL_P)
- precache_model(MODEL_W)
- for(new i = 0; i < sizeof(WeaponSounds); i++)
- precache_sound(WeaponSounds[i])
- precache_generic(WeaponResources[0])
- precache_model(WeaponResources[1])
- precache_model(WeaponResources[2])
- g_SprID = precache_model(Electric_Sprite)
- precache_model(Muzzleflash)
- g_SmokePuff_SprId = engfunc(EngFunc_PrecacheModel, "sprites/wall_puff1.spr")
- register_forward(FM_PrecacheEvent, "fw_PrecacheEvent_Post", 1)
- }
- public fw_PrecacheEvent_Post(type, const name[])
- {
- if(equal("events/m249.sc", name)) g_Event_Coilgun = get_orig_retval()
- }
- public client_putinserver(id)
- {
- Safety_Connected(id)
- if(!g_HamBot && is_user_bot(id))
- {
- g_HamBot = 1
- set_task(0.1, "Do_Register_HamBot", id)
- }
- }
- public Do_Register_HamBot(id)
- {
- Register_SafetyFuncBot(id)
- RegisterHamFromEntity(Ham_TraceAttack, id, "fw_TraceAttack_Player")
- }
- public client_disconnect(id)
- {
- Safety_Disconnected(id)
- Muzzleflash_Reset(id)
- }
- public Hook_Weapon(id)
- {
- engclient_cmd(id, "weapon_m249")
- return PLUGIN_HANDLED
- }
- public ze_select_item_pre(id, itemid)
- {
- // This not our item?
- if (itemid != g_iItemID)
- return ZE_ITEM_AVAILABLE
- // Available for Humans only, So don't show it for zombies
- if (ze_is_user_zombie(id))
- return ZE_ITEM_DONT_SHOW
- // Finally return that it's available
- return ZE_ITEM_AVAILABLE
- }
- public ze_select_item_post(id, itemid)
- {
- // This is not our item, Block it here and don't execute the blew code
- if (itemid != g_iItemID)
- return
- Get_Coilgun(id)
- }
- public Get_Coilgun(id)
- {
- Set_BitVar(g_Had_Coilgun, id)
- give_item(id, "weapon_m249")
- // Clip & Ammo
- static Ent; Ent = fm_get_user_weapon_entity(id, CSW_M249)
- if(!pev_valid(Ent)) return
- cs_set_weapon_ammo(Ent, CLIP)
- cs_set_user_bpammo(id, CSW_M249, BPAMMO)
- message_begin(MSG_ONE_UNRELIABLE, g_MsgCurWeapon, _, id)
- write_byte(1)
- write_byte(CSW_M249)
- write_byte(CLIP)
- message_end()
- MuzzleFlash_Set(id, Muzzleflash, 0.1)
- }
- public Remove_Coilgun(id)
- {
- UnSet_BitVar(g_Had_Coilgun, id)
- }
- public Event_CurWeapon(id)
- {
- static CSW; CSW = read_data(2)
- if(CSW != CSW_M249)
- return
- if(!Get_BitVar(g_Had_Coilgun, id))
- return
- static Float:Delay, Float:Delay2
- static Ent; Ent = fm_get_user_weapon_entity(id, CSW_M249)
- if(!pev_valid(Ent)) return
- Delay = get_pdata_float(Ent, 46, 4) * TIME_SHOOT
- Delay2 = get_pdata_float(Ent, 47, 4) * TIME_SHOOT
- if(Delay > 0.0)
- {
- set_pdata_float(Ent, 46, Delay, 4)
- set_pdata_float(Ent, 47, Delay2, 4)
- }
- }
- public fw_UpdateClientData_Post(id, sendweapons, cd_handle)
- {
- if(!is_alive(id))
- return FMRES_IGNORED
- if(get_user_weapon(id) == CSW_M249 && Get_BitVar(g_Had_Coilgun, id))
- set_cd(cd_handle, CD_flNextAttack, get_gametime() + 0.001)
- return FMRES_HANDLED
- }
- public fw_PlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
- {
- if (!is_connected(invoker))
- return FMRES_IGNORED
- if(get_player_weapon(invoker) != CSW_M249 || !Get_BitVar(g_Had_Coilgun, invoker))
- return FMRES_IGNORED
- if(eventid != g_Event_Coilgun)
- return FMRES_IGNORED
- engfunc(EngFunc_PlaybackEvent, flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
- Set_WeaponAnim(invoker, ANIME_SHOOT)
- emit_sound(invoker, CHAN_WEAPON, WeaponSounds[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
- return FMRES_SUPERCEDE
- }
- public fw_SetModel(entity, model[])
- {
- if(!pev_valid(entity))
- return FMRES_IGNORED
- static Classname[32]
- pev(entity, pev_classname, Classname, sizeof(Classname))
- if(!equal(Classname, "weaponbox"))
- return FMRES_IGNORED
- static iOwner
- iOwner = pev(entity, pev_owner)
- if(equal(model, DARTPISTOL_OLDMODEL))
- {
- static weapon; weapon = find_ent_by_owner(-1, "weapon_m249", entity)
- if(!pev_valid(weapon))
- return FMRES_IGNORED;
- if(Get_BitVar(g_Had_Coilgun, iOwner))
- {
- set_pev(weapon, pev_impulse, 1372015)
- engfunc(EngFunc_SetModel, entity, MODEL_W)
- Remove_Coilgun(iOwner)
- return FMRES_SUPERCEDE
- }
- }
- return FMRES_IGNORED;
- }
- public fw_CmdStart(id, uc_handle, seed)
- {
- if(!is_alive(id))
- return FMRES_IGNORED
- if(get_user_weapon(id) != CSW_M249 || !Get_BitVar(g_Had_Coilgun, id))
- return FMRES_IGNORED
- return FMRES_HANDLED
- }
- public fw_AddToFullPack_Post(esState, iE, iEnt, iHost, iHostFlags, iPlayer, pSet)
- {
- if(iEnt != g_Muzzleflash_Ent[iHost])
- return
- if(Get_BitVar(g_Muzzleflash, iHost))
- {
- set_es(esState, ES_Frame, float(random_num(0, 2)))
- set_es(esState, ES_RenderMode, kRenderTransAdd)
- set_es(esState, ES_RenderAmt, 255.0)
- UnSet_BitVar(g_Muzzleflash, iHost)
- }
- set_es(esState, ES_Skin, iHost)
- set_es(esState, ES_Body, 1)
- set_es(esState, ES_AimEnt, iHost)
- set_es(esState, ES_MoveType, MOVETYPE_FOLLOW)
- }
- public fw_CheckVisibility(iEntity, pSet)
- {
- if(pev(iEntity, pev_impulse) != 2015)
- return FMRES_IGNORED
- forward_return(FMV_CELL, 1)
- return FMRES_SUPERCEDE
- }
- 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(!Get_BitVar(g_Had_Coilgun, Id))
- return
- set_pev(Id, pev_viewmodel2, MODEL_V)
- set_pev(Id, pev_weaponmodel2, MODEL_P)
- Set_WeaponAnim(Id, ANIME_DRAW)
- }
- public fw_Item_AddToPlayer_Post(Ent, id)
- {
- if(!pev_valid(Ent))
- return HAM_IGNORED
- if(pev(Ent, pev_impulse) == 1372015)
- {
- Set_BitVar(g_Had_Coilgun, id)
- set_pev(Ent, pev_impulse, 0)
- }
- if(Get_BitVar(g_Had_Coilgun, id))
- {
- message_begin(MSG_ONE_UNRELIABLE, g_MsgWeaponList, _, id)
- write_string("weapon_coilmg")
- write_byte(3)
- write_byte(200)
- write_byte(-1)
- write_byte(-1)
- write_byte(0)
- write_byte(4)
- write_byte(CSW_M249)
- write_byte(0)
- message_end()
- }
- return HAM_HANDLED
- }
- public fw_Item_PostFrame(ent)
- {
- static id; id = pev(ent, pev_owner)
- if(!is_user_alive(id))
- return HAM_IGNORED
- if(!Get_BitVar(g_Had_Coilgun, id))
- return HAM_IGNORED
- static Float:flNextAttack; flNextAttack = get_pdata_float(id, 83, 5)
- static bpammo; bpammo = cs_get_user_bpammo(id, CSW_M249)
- 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(CLIP - iClip, bpammo)
- set_pdata_int(ent, 51, iClip + temp1, 4)
- cs_set_user_bpammo(id, CSW_M249, bpammo - temp1)
- set_pdata_int(ent, 54, 0, 4)
- fInReload = 0
- }
- return HAM_IGNORED
- }
- public fw_Weapon_Reload(ent)
- {
- static id; id = pev(ent, pev_owner)
- if(!is_user_alive(id))
- return HAM_IGNORED
- if(!Get_BitVar(g_Had_Coilgun, id))
- return HAM_IGNORED
- g_Clip[id] = -1
- static BPAmmo; BPAmmo = cs_get_user_bpammo(id, CSW_M249)
- static iClip; iClip = get_pdata_int(ent, 51, 4)
- if(BPAmmo <= 0)
- return HAM_SUPERCEDE
- if(iClip >= CLIP)
- return HAM_SUPERCEDE
- g_Clip[id] = iClip
- return HAM_HANDLED
- }
- public fw_Weapon_Reload_Post(ent)
- {
- static id; id = pev(ent, pev_owner)
- if(!is_user_alive(id))
- return HAM_IGNORED
- if(!Get_BitVar(g_Had_Coilgun, id))
- return HAM_IGNORED
- if((get_pdata_int(ent, 54, 4) == 1))
- { // Reload
- if(g_Clip[id] == -1)
- return HAM_IGNORED
- set_pdata_int(ent, 51, g_Clip[id], 4)
- Set_WeaponAnim(id, ANIME_RELOAD)
- Set_PlayerNextAttack(id, TIME_RELOAD)
- }
- return HAM_HANDLED
- }
- public fw_Weapon_WeaponIdle_Post( iEnt )
- {
- if(pev_valid(iEnt) != 2)
- return
- static Id; Id = get_pdata_cbase(iEnt, 41, 4)
- if(get_pdata_cbase(Id, 373) != iEnt)
- return
- if(!Get_BitVar(g_Had_Coilgun, Id))
- return
- //if(get_pdata_float(iEnt, 48, 4) <= 0.25)
- //{
- //Set_WeaponAnim(Id, g_Ammo[Id] > 0 ? ANIME_IDLE : ANIME_IDLE_EMPTY)
- //set_pdata_float(iEnt, 48, 20.0, 4)
- //}
- }
- public fw_TraceAttack_World(Victim, Attacker, Float:Damage, Float:Direction[3], Ptr, DamageBits)
- {
- if(!is_connected(Attacker))
- return HAM_IGNORED
- if(get_player_weapon(Attacker) != CSW_M249 || !Get_BitVar(g_Had_Coilgun, Attacker))
- return HAM_IGNORED
- static Float:flEnd[3], Float:vecPlane[3]
- get_tr2(Ptr, TR_vecEndPos, flEnd)
- get_tr2(Ptr, TR_vecPlaneNormal, vecPlane)
- Make_BulletHole(Attacker, flEnd, Damage)
- Make_BulletSmoke(Attacker, Ptr)
- SetHamParamFloat(3, float(DAMAGE))
- return HAM_HANDLED
- }
- public fw_TraceAttack_Player(Victim, Attacker, Float:Damage, Float:Direction[3], Ptr, DamageBits)
- {
- if(!is_connected(Attacker))
- return HAM_IGNORED
- if(get_player_weapon(Attacker) != CSW_M249 || !Get_BitVar(g_Had_Coilgun, Attacker))
- return HAM_IGNORED
- SetHamParamFloat(3, float(DAMAGE))
- static Float:Origin[3]; pev(Victim, pev_origin, Origin)
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
- write_byte(TE_EXPLOSION)
- engfunc(EngFunc_WriteCoord, Origin[0])
- engfunc(EngFunc_WriteCoord, Origin[1])
- engfunc(EngFunc_WriteCoord, Origin[2])
- write_short(g_SprID)
- write_byte(6)
- write_byte(15)
- write_byte(TE_EXPLFLAG_NODLIGHTS | TE_EXPLFLAG_NOPARTICLES | TE_EXPLFLAG_NOSOUND)
- message_end()
- emit_sound(Victim, CHAN_STATIC, WeaponSounds[random_num(1, 2)], VOL_NORM, ATTN_NONE, 0, PITCH_NORM)
- Check_Damage(Attacker, Victim, Origin, Attacker)
- return HAM_HANDLED
- }
- public Check_Damage(Atk, id, Float:Origin[3], Except)
- {
- for(new i = 0; i < g_MaxPlayers; i++)
- {
- if(!is_alive(i))
- continue
- if(entity_range(id, i) > 48.0)
- continue
- if(Except == i)
- continue
- if(id != i) ExecuteHamB(Ham_TakeDamage, i, 0, id, float(DAMAGE), DMG_BURN)
- }
- }
- public fw_Weapon_PrimaryAttack_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(!Get_BitVar(g_Had_Coilgun, Id))
- return
- if(cs_get_weapon_ammo(Ent) > 0) Muzzleflash_Activate(Id)
- }
- public MuzzleFlash_Set(id, const Muzzleflash[], Float:Scale)
- {
- if(!is_user_connected(id))
- return
- if(!pev_valid(g_Muzzleflash_Ent[id]))
- g_Muzzleflash_Ent[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
- engfunc(EngFunc_SetModel, g_Muzzleflash_Ent[id], Muzzleflash)
- set_pev(g_Muzzleflash_Ent[id], pev_scale, Scale)
- set_pev(g_Muzzleflash_Ent[id], pev_rendermode, kRenderTransTexture)
- set_pev(g_Muzzleflash_Ent[id], pev_renderamt, 0.0)
- set_pev(g_Muzzleflash_Ent[id], pev_impulse, 2015)
- }
- public Muzzleflash_Reset(id)
- {
- if(1 > id || id > 32)
- return
- if(pev_valid(g_Muzzleflash_Ent[id])) set_pev(id, pev_flags, FL_KILLME)
- }
- public Muzzleflash_Activate(id) Set_BitVar(g_Muzzleflash, id)
- /* ===============================
- ------------- SAFETY -------------
- =================================*/
- public Register_SafetyFunc()
- {
- register_event("CurWeapon", "Safety_CurWeapon", "be", "1=1")
- RegisterHam(Ham_Spawn, "player", "fw_Safety_Spawn_Post", 1)
- RegisterHam(Ham_Killed, "player", "fw_Safety_Killed_Post", 1)
- }
- public Register_SafetyFuncBot(id)
- {
- RegisterHamFromEntity(Ham_Spawn, id, "fw_Safety_Spawn_Post", 1)
- RegisterHamFromEntity(Ham_Killed, id, "fw_Safety_Killed_Post", 1)
- }
- public Safety_Connected(id)
- {
- Set_BitVar(g_IsConnected, id)
- UnSet_BitVar(g_IsAlive, id)
- g_PlayerWeapon[id] = 0
- }
- public Safety_Disconnected(id)
- {
- UnSet_BitVar(g_IsConnected, id)
- UnSet_BitVar(g_IsAlive, id)
- g_PlayerWeapon[id] = 0
- }
- public Safety_CurWeapon(id)
- {
- if(!is_alive(id))
- return
- static CSW; CSW = read_data(2)
- if(g_PlayerWeapon[id] != CSW) g_PlayerWeapon[id] = CSW
- }
- public fw_Safety_Spawn_Post(id)
- {
- if(!is_user_alive(id))
- return
- Set_BitVar(g_IsAlive, id)
- }
- public fw_Safety_Killed_Post(id)
- {
- UnSet_BitVar(g_IsAlive, id)
- }
- public is_alive(id)
- {
- if(!(1 <= id <= 32))
- return 0
- if(!Get_BitVar(g_IsConnected, id))
- return 0
- if(!Get_BitVar(g_IsAlive, id))
- return 0
- return 1
- }
- public is_connected(id)
- {
- if(!(1 <= id <= 32))
- return 0
- if(!Get_BitVar(g_IsConnected, id))
- return 0
- return 1
- }
- public get_player_weapon(id)
- {
- if(!is_alive(id))
- return 0
- return g_PlayerWeapon[id]
- }
- /* ===============================
- --------- End of SAFETY ----------
- =================================*/
- stock Set_WeaponAnim(id, anim)
- {
- set_pev(id, pev_weaponanim, anim)
- message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, {0, 0, 0}, id)
- write_byte(anim)
- write_byte(pev(id, pev_body))
- message_end()
- }
- stock Make_BulletHole(id, Float:Origin[3], Float:Damage)
- {
- // Find target
- static Decal; Decal = random_num(41, 45)
- static LoopTime;
- if(Damage > 100.0) LoopTime = 2
- else LoopTime = 1
- for(new i = 0; i < LoopTime; 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()
- }
- }
- stock Make_BulletSmoke(id, TrResult)
- {
- 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(TrResult, TR_vecEndPos, vecSrc)
- get_tr2(TrResult, 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_SprId)
- write_byte(2)
- write_byte(50)
- write_byte(TE_FLAG)
- message_end()
- }
- stock get_weapon_attachment(id, Float:output[3], Float:fDis = 40.0)
- {
- static Float:vfEnd[3], viEnd[3]
- get_user_origin(id, viEnd, 3)
- IVecFVec(viEnd, vfEnd)
- static Float:fOrigin[3], Float:fAngle[3]
- pev(id, pev_origin, fOrigin)
- pev(id, pev_view_ofs, fAngle)
- xs_vec_add(fOrigin, fAngle, fOrigin)
- static Float:fAttack[3]
- xs_vec_sub(vfEnd, fOrigin, fAttack)
- xs_vec_sub(vfEnd, fOrigin, fAttack)
- static Float:fRate
- fRate = fDis / vector_length(fAttack)
- xs_vec_mul_scalar(fAttack, fRate, fAttack)
- xs_vec_add(fOrigin, fAttack, output)
- }
- stock get_position(id,Float:forw, Float:right, Float:up, Float:vStart[])
- {
- new 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
- }
- stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3])
- {
- new_velocity[0] = origin2[0] - origin1[0]
- new_velocity[1] = origin2[1] - origin1[1]
- new_velocity[2] = origin2[2] - origin1[2]
- new Float:num = floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
- new_velocity[0] *= num
- new_velocity[1] *= num
- new_velocity[2] *= num
- return 1;
- }
- stock Set_WeaponIdleTime(id, WeaponId ,Float:TimeIdle)
- {
- static entwpn; entwpn = fm_get_user_weapon_entity(id, WeaponId)
- if(!pev_valid(entwpn))
- return
- set_pdata_float(entwpn, 46, TimeIdle, 4)
- set_pdata_float(entwpn, 47, TimeIdle, 4)
- set_pdata_float(entwpn, 48, TimeIdle + 0.5, 4)
- }
- stock Set_PlayerNextAttack(id, Float:nexttime)
- {
- set_pdata_float(id, 83, nexttime, 5)
- }
- stock Get_Position(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
- }
- /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
- *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1042\\ f0\\ fs16 \n\\ par }
- */
Nobody Is That Busy If They Make Time
-
- Veteran Member
- Posts: 598
- Joined: 7 years ago
- Contact:
I got crash, error: 'weapons/ric_conc-2.wav' failed to precache because the item count is over the 512 limit.
edit:
ok I turned off some plugins and guns works. Many thanks johnny!
edit:
ok I turned off some plugins and guns works. Many thanks johnny!
-
- Veteran Member
- Posts: 678
- Joined: 7 years ago
- Location: Paraguay
- Contact:
Can u post these extra items in extra items section in the way I and Raheem Post it ?czirimbolo wrote: ↑6 years ago I got crash, error: 'weapons/ric_conc-2.wav' failed to precache because the item count is over the 512 limit.
edit:
ok I turned off some plugins and guns works. Many thanks johnny!
Nobody Is That Busy If They Make Time
-
- Veteran Member
- Posts: 598
- Joined: 7 years ago
- Contact:
-
- Member
- Posts: 1
- Joined: 7 years ago
- Location: Denmark
- Contact:
Roger
Many thanks for these contacts. I will let you and everyone else know how I get on
Many thanks for these contacts. I will let you and everyone else know how I get on
- Night Fury
- Mod Developer
- Posts: 677
- Joined: 7 years ago
- Contact:
What?! Is this anther account?RichardGhval wrote: ↑6 years ago Roger
Many thanks for these contacts. I will let you and everyone else know how I get on
Create an account or sign in to join the discussion
You need to be a member in order to post a reply
Create an account
Not a member? register to join our community
Members can start their own topics & subscribe to topics
It’s free and only takes a minute
Sign in
Who is online
Users browsing this forum: No registered users and 5 guests