Air Buster
-
- Veteran Member
- Posts: 598
- Joined: 7 years ago
- Contact:
Air Buster
hey, can someone convert this gun to zombie escape mod?
- Attachments
-
- CSO Air Burster (Limited) (2015).rar
- (990.28 KiB) Downloaded 321 times
- CSO Air Burster (Limited) (2015).rar
- (990.28 KiB) Downloaded 321 times
-
- Veteran Member
- Posts: 678
- Joined: 7 years ago
- Location: Paraguay
- Contact:
-
- Veteran Member
- Posts: 678
- Joined: 7 years ago
- Location: Paraguay
- Contact:
Air Buster
Here Test it
- #include <zombie_escape>
- #include <cstrike>
- #include <fakemeta_util>
- #include <xs>
- #define PLUGIN "Air Burster (Limited)"
- #define VERSION "2015"
- #define AUTHOR "Dias + ZE DEV TEAM"
- #define V_MODEL "models/v_airburster.mdl"
- #define P_MODEL "models/p_airburster.mdl"
- #define W_MODEL "models/w_airburster.mdl"
- #define RADIUS 405
- #define CLIP 4
- #define BPAMMOX 40
- #define TIME_DRAW 0.75
- #define TIME_SHOOT 1.25
- #define TIME_RELOAD 5.0
- #define CSW_CANNON CSW_MP5NAVY
- #define weapon_cannon "weapon_mp5navy"
- #define WEAPON_EVENT "events/mp5n.sc"
- #define WEAPON_W_MODEL "models/w_mp5.mdl"
- #define WEAPON_ANIMEXT "m249"
- #define WEAPON_SECRET_CODE 2086
- #define CANNONFIRE_CLASSNAME "air"
- // Fire Start
- #define WEAPON_ATTACH_F 30.0
- #define WEAPON_ATTACH_R 6.0
- #define WEAPON_ATTACH_U -2.0
- new const WeaponSounds[8][] =
- {
- "weapons/airburster_shoot2.wav",
- "weapons/airburster_idle.wav",
- "weapons/airburster_draw.wav",
- "weapons/airburster_clipin1.wav",
- "weapons/airburster_clipin2.wav",
- "weapons/airburster_clipin3.wav",
- "weapons/airburster_clipin4.wav",
- "weapons/airburster_clipout.wav"
- }
- new const WeaponResources[5][] =
- {
- "sprites/ef_aircyclone.spr",
- "sprites/ef_airexplosion.spr",
- "sprites/weapon_airburster.txt",
- "sprites/640hud130_2.spr",
- "sprites/640hud14_2.spr"
- }
- enum
- {
- CANNON_ANIM_IDLE = 0,
- CANNON_ANIM_SHOOT,
- CANNON_ANIM_SHOOT_END,
- CANNON_ANIM_RELOAD,
- CANNON_ANIM_DRAW,
- CANNON_ANIM_SHOOT2
- }
- // 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_Cannon, g_InTempingAttack, g_Clip[33], g_CodeNumber
- new g_OldWeapon[33], Float:g_LastAttack[33], Float:g_NextTime[33], g_PreAmmo[33]
- new g_SmokePuff_SprId, g_MsgCurWeapon, g_MsgAmmoX, g_MsgWeaponList, g_iItemID
- // Safety
- new g_HamBot
- new g_IsConnected, g_IsAlive, g_PlayerWeapon[33]
- public plugin_init()
- {
- register_plugin(PLUGIN, VERSION, AUTHOR)
- g_iItemID = ze_register_item("Air Buster", 75)
- Register_SafetyFunc()
- register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
- register_think(CANNONFIRE_CLASSNAME, "fw_Cannon_Think")
- register_touch(CANNONFIRE_CLASSNAME, "*", "fw_Cannon_Touch")
- register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
- register_forward(FM_CmdStart, "fw_CmdStart")
- register_forward(FM_SetModel, "fw_SetModel")
- register_forward(FM_EmitSound, "fw_EmitSound")
- register_forward(FM_TraceLine, "fw_TraceLine")
- register_forward(FM_TraceHull, "fw_TraceHull")
- RegisterHam(Ham_Item_PostFrame, weapon_cannon, "fw_Item_PostFrame")
- RegisterHam(Ham_Weapon_Reload, weapon_cannon, "fw_Weapon_Reload")
- RegisterHam(Ham_Weapon_Reload, weapon_cannon, "fw_Weapon_Reload_Post", 1)
- RegisterHam(Ham_Item_AddToPlayer, weapon_cannon, "fw_Item_AddToPlayer_Post", 1)
- RegisterHam(Ham_Weapon_WeaponIdle, weapon_cannon, "fw_Weapon_WeaponIdle_Post", 1)
- g_MsgCurWeapon = get_user_msgid("CurWeapon")
- g_MsgAmmoX = get_user_msgid("AmmoX")
- g_MsgWeaponList = get_user_msgid("WeaponList")
- register_clcmd("weapon_airburster", "HookWeapon")
- }
- public plugin_precache()
- {
- engfunc(EngFunc_PrecacheModel, V_MODEL)
- engfunc(EngFunc_PrecacheModel, P_MODEL)
- engfunc(EngFunc_PrecacheModel, W_MODEL)
- new i
- for(i = 0; i < sizeof(WeaponSounds); i++)
- engfunc(EngFunc_PrecacheSound, WeaponSounds[i])
- for(i = 0; i < sizeof(WeaponResources); i++)
- {
- if(i == 1) g_CodeNumber = precache_model(WeaponResources[i])
- else if(i == 2) engfunc(EngFunc_PrecacheGeneric, WeaponResources[i])
- else engfunc(EngFunc_PrecacheModel, WeaponResources[i])
- }
- g_SmokePuff_SprId = engfunc(EngFunc_PrecacheModel, "sprites/smokepuff.spr")
- }
- public client_putinserver(id)
- {
- Safety_Connected(id)
- if(!g_HamBot && is_user_bot(id))
- {
- g_HamBot = 1
- set_task(0.1, "Register_HamBot", id)
- }
- }
- public client_disconnect(id) Safety_Disconnected(id)
- public Register_HamBot(id)
- {
- Register_SafetyFuncBot(id)
- }
- 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_Cannon(id)
- }
- public Get_Cannon(id)
- {
- Set_BitVar(g_Had_Cannon, id)
- UnSet_BitVar(g_InTempingAttack, id)
- g_NextTime[id] = 0.0
- give_item(id, weapon_cannon)
- cs_set_user_bpammo(id, CSW_CANNON, BPAMMOX)
- static Ent; Ent = fm_get_user_weapon_entity(id, CSW_CANNON)
- if(!pev_valid(Ent)) return
- cs_set_weapon_ammo(Ent, CLIP)
- Update_Ammo2(id, CLIP, BPAMMOX)
- }
- public Remove_Cannon(id)
- {
- UnSet_BitVar(g_Had_Cannon, id)
- UnSet_BitVar(g_InTempingAttack, id)
- }
- public HookWeapon(id)
- {
- engclient_cmd(id, weapon_cannon)
- return PLUGIN_HANDLED
- }
- public Event_CurWeapon(id)
- {
- if(!is_alive(id))
- return
- static CSWID; CSWID = read_data(2)
- if((CSWID == CSW_CANNON && g_OldWeapon[id] != CSW_CANNON) && Get_BitVar(g_Had_Cannon, id))
- {
- set_pev(id, pev_viewmodel2, V_MODEL)
- set_pev(id, pev_weaponmodel2, P_MODEL)
- set_weapon_anim(id, CANNON_ANIM_DRAW)
- set_pdata_float(id, 83, TIME_DRAW, 5)
- remove_task(id+2092015)
- g_PreAmmo[id] = cs_get_user_bpammo(id, CSW_CANNON)
- set_pdata_string(id, (492) * 4, WEAPON_ANIMEXT, -1 , 20)
- //update_ammo(id, -1, g_CannonRound[id])
- } else if((CSWID == CSW_CANNON && g_OldWeapon[id] == CSW_CANNON) && Get_BitVar(g_Had_Cannon, id)) {
- //update_ammo(id, -1, g_CannonRound[id])
- } else if((CSWID != CSW_CANNON && g_OldWeapon[id] == CSW_CANNON) && Get_BitVar(g_Had_Cannon, id)) {
- //cs_set_user_bpammo(id, CSW_CANNON, g_PreAmmo[id])
- }
- g_OldWeapon[id] = CSWID
- }
- public fw_Cannon_Think(iEnt)
- {
- if(!pev_valid(iEnt))
- return
- static Float:fFrame, Float:fNextThink, Float:fScale
- pev(iEnt, pev_frame, fFrame)
- pev(iEnt, pev_scale, fScale)
- // effect exp
- static iMoveType; iMoveType = pev(iEnt, pev_movetype)
- if (iMoveType == MOVETYPE_NONE)
- {
- fNextThink = 0.0015
- fFrame += random_float(0.25, 0.75)
- fScale += 0.01
- fScale = floatmin(1.5, fFrame)
- if(fFrame > 21.0)
- {
- engfunc(EngFunc_RemoveEntity, iEnt)
- return
- }
- } else {
- fNextThink = 0.045
- fFrame += random_float(0.5, 1.0)
- fScale += 0.001
- fFrame = floatmin(21.0, fFrame)
- fScale = floatmin(1.5, fFrame)
- }
- set_pev(iEnt, pev_frame, fFrame)
- set_pev(iEnt, pev_scale, fScale)
- set_pev(iEnt, pev_nextthink, halflife_time() + fNextThink)
- // time remove
- static Float:fTimeRemove
- pev(iEnt, pev_fuser1, fTimeRemove)
- if(get_gametime() >= fTimeRemove)
- {
- static Float:Amount; pev(iEnt, pev_renderamt, Amount)
- if(Amount <= 5.0)
- {
- engfunc(EngFunc_RemoveEntity, iEnt)
- return
- } else {
- Amount -= 5.0
- set_pev(iEnt, pev_renderamt, Amount)
- }
- }
- }
- public fw_Cannon_Touch(ent, id)
- {
- if(!pev_valid(ent))
- return
- if(pev_valid(id))
- {
- static Classname[32]
- pev(id, pev_classname, Classname, sizeof(Classname))
- if(equal(Classname, CANNONFIRE_CLASSNAME)) return
- }
- set_pev(ent, pev_movetype, MOVETYPE_NONE)
- set_pev(ent, pev_solid, SOLID_NOT)
- }
- public fw_UpdateClientData_Post(id, sendweapons, cd_handle)
- {
- if(!is_alive(id))
- return FMRES_IGNORED
- if(get_player_weapon(id) != CSW_CANNON || !Get_BitVar(g_Had_Cannon, id))
- return FMRES_IGNORED
- set_cd(cd_handle, CD_flNextAttack, get_gametime() + 0.001)
- return FMRES_HANDLED
- }
- public fw_CmdStart(id, uc_handle, seed)
- {
- if(!is_alive(id))
- return FMRES_IGNORED
- if(get_player_weapon(id) != CSW_CANNON || !Get_BitVar(g_Had_Cannon, id))
- return FMRES_IGNORED
- static CurButton
- CurButton = get_uc(uc_handle, UC_Buttons)
- if(CurButton & IN_ATTACK)
- {
- CurButton &= ~IN_ATTACK
- set_uc(uc_handle, UC_Buttons, CurButton)
- HandleShoot_Cannon(id)
- }
- return FMRES_HANDLED
- }
- 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, WEAPON_W_MODEL))
- {
- static weapon
- weapon = fm_find_ent_by_owner(-1, weapon_cannon, entity)
- if(!pev_valid(weapon))
- return FMRES_IGNORED
- if(Get_BitVar(g_Had_Cannon, id))
- {
- set_pev(weapon, pev_impulse, WEAPON_SECRET_CODE)
- engfunc(EngFunc_SetModel, entity, W_MODEL)
- cs_set_user_bpammo(id, CSW_CANNON, g_PreAmmo[id])
- Remove_Cannon(id)
- return FMRES_SUPERCEDE
- }
- }
- return FMRES_IGNORED
- }
- public fw_EmitSound(id, channel, const sample[], Float:volume, Float:attn, flags, pitch)
- {
- if(!is_alive(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_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_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 fw_Item_AddToPlayer_Post(ent, id)
- {
- if(!pev_valid(ent))
- return HAM_IGNORED
- if(pev(ent, pev_impulse) == WEAPON_SECRET_CODE)
- {
- Remove_Cannon(id)
- Set_BitVar(g_Had_Cannon, id)
- }
- if(Get_BitVar(g_Had_Cannon, id))
- {
- message_begin(MSG_ONE_UNRELIABLE, g_MsgWeaponList, _, id)
- write_string("weapon_airburster")
- write_byte(10)
- write_byte(20)
- write_byte(-1)
- write_byte(-1)
- write_byte(0)
- write_byte(7)
- write_byte(CSW_CANNON)
- write_byte(0)
- message_end()
- }
- return HAM_HANDLED
- }
- public fw_Item_PostFrame(ent)
- {
- static id; id = pev(ent, pev_owner)
- if(!is_alive(id))
- return HAM_IGNORED
- if(!Get_BitVar(g_Had_Cannon, id))
- return HAM_IGNORED
- static Float:flNextAttack; flNextAttack = get_pdata_float(id, 83, 5)
- static bpammo; bpammo = cs_get_user_bpammo(id, CSW_CANNON)
- 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_CANNON, 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_alive(id))
- return HAM_IGNORED
- if(!Get_BitVar(g_Had_Cannon, id))
- return HAM_IGNORED
- g_Clip[id] = -1
- static BPAmmo; BPAmmo = cs_get_user_bpammo(id, CSW_CANNON)
- 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_alive(id))
- return HAM_IGNORED
- if(!Get_BitVar(g_Had_Cannon, 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_weapon_anim(id, CANNON_ANIM_RELOAD)
- set_player_nextattack(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_Cannon, Id))
- return
- if(get_pdata_float(iEnt, 48, 4) <= 0.25)
- {
- }
- }
- public HandleShoot_Cannon(id)
- {
- if(get_pdata_float(id, 83, 5) > 0.0)
- return
- static Ent; Ent = fm_get_user_weapon_entity(id, CSW_CANNON)
- if(!pev_valid(Ent)) return
- if(cs_get_weapon_ammo(Ent) <= 0)
- return
- if(get_gametime() - TIME_SHOOT <= g_LastAttack[id])
- {
- set_player_nextattack(id, g_LastAttack[id] - get_gametime())
- return
- }
- Create_FakeAttack(id)
- set_weapon_anim(id, CANNON_ANIM_SHOOT2)
- cs_set_weapon_ammo(Ent, cs_get_weapon_ammo(Ent) - 1)
- emit_sound(id, CHAN_WEAPON, WeaponSounds[0], 1.0, 0.4, 0, 94 + random_num(0, 15))
- set_task(0.5, "Make_FireSmoke", id)
- Create_CannonFire(id, 1)
- Make_Push(id)
- Check_RadiusDamage(id)
- set_player_nextattack(id, TIME_SHOOT)
- set_weapons_timeidle(id, CSW_CANNON, TIME_SHOOT)
- if(!cs_get_weapon_ammo(Ent) && cs_get_user_bpammo(id, CSW_CANNON))
- {
- remove_task(id+2092015)
- set_task(TIME_SHOOT, "Check_Reload", id+2092015)
- }
- g_LastAttack[id] = get_gametime()
- g_NextTime[id] = get_gametime()
- }
- public Check_Reload(id)
- {
- id -= 2092015
- if(!is_alive(id))
- return
- if(get_player_weapon(id) != CSW_CANNON || !Get_BitVar(g_Had_Cannon, id))
- return
- static Ent; Ent = fm_get_user_weapon_entity(id, CSW_CANNON)
- if(!pev_valid(Ent)) return
- set_player_nextattack(id, 0.0)
- set_weapons_timeidle(id, CSW_CANNON, 0.0)
- ExecuteHamB(Ham_Weapon_Reload, Ent)
- }
- public Create_CannonFire(id, OffSet)
- {
- const MAX_FIRE = 12
- static Float:StartOrigin[3], Float:TargetOrigin[MAX_FIRE][3], Float:Speed[MAX_FIRE]
- // Get Target
- get_position(id, random_float(30.0, 40.0), 0.0, WEAPON_ATTACH_U - 5.0, StartOrigin)
- engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, StartOrigin, 0)
- write_byte(TE_EXPLOSION)
- engfunc(EngFunc_WriteCoord, StartOrigin[0])
- engfunc(EngFunc_WriteCoord, StartOrigin[1])
- engfunc(EngFunc_WriteCoord, StartOrigin[2])
- write_short(g_CodeNumber)
- write_byte(5)
- write_byte(20)
- write_byte(TE_EXPLFLAG_NOPARTICLES | TE_EXPLFLAG_NOSOUND)
- message_end()
- // -- Left
- get_position(id, 100.0, random_float(-10.0, -35.0), WEAPON_ATTACH_U, TargetOrigin[0]); Speed[0] = 150.0
- get_position(id, 100.0, random_float(-10.0, -35.0), WEAPON_ATTACH_U, TargetOrigin[1]); Speed[1] = 180.0
- get_position(id, 100.0, random_float(-10.0, -35.0), WEAPON_ATTACH_U, TargetOrigin[2]); Speed[2] = 210.0
- get_position(id, 100.0, random_float(-10.0, -30.0), WEAPON_ATTACH_U + random_float(-5.0, 5.0), TargetOrigin[3]); Speed[3] = 240.0
- get_position(id, 100.0, random_float(-10.0, -15.0), WEAPON_ATTACH_U + random_float(-5.0, 5.0), TargetOrigin[4]); Speed[4] = 300.0
- // -- Center
- get_position(id, 100.0, 0.0, WEAPON_ATTACH_U - random_float(5.0, 10.0), TargetOrigin[5]); Speed[5] = 200.0
- get_position(id, 100.0, 0.0, WEAPON_ATTACH_U + random_float(5.0, 10.0), TargetOrigin[6]); Speed[6] = 200.0
- // -- Right
- get_position(id, 100.0, random_float(10.0, 15.0), WEAPON_ATTACH_U + random_float(-5.0, 5.0), TargetOrigin[7]); Speed[7] = 150.0
- get_position(id, 100.0, random_float(10.0, 30.0) , WEAPON_ATTACH_U + random_float(-5.0, 5.0), TargetOrigin[8]); Speed[8] = 180.0
- get_position(id, 100.0, random_float(10.0, 35.0), WEAPON_ATTACH_U, TargetOrigin[9]); Speed[9] = 210.0
- get_position(id, 100.0, random_float(10.0, 35.0), WEAPON_ATTACH_U, TargetOrigin[10]); Speed[10] = 240.0
- get_position(id, 100.0, random_float(10.0, 35.0), WEAPON_ATTACH_U, TargetOrigin[11]); Speed[11] = 300.0
- for(new i = 0; i < MAX_FIRE; i++)
- {
- // Get Start
- get_position(id, random_float(30.0, 40.0), 0.0, WEAPON_ATTACH_U, StartOrigin)
- Create_Fire(id, StartOrigin, TargetOrigin[i], Speed[i] * 1.0, OffSet)
- }
- }
- public Create_Fire(id, Float:Origin[3], Float:TargetOrigin[3], Float:Speed, Offset)
- {
- static Ent; Ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite"))
- if(!pev_valid(Ent)) return
- static Float:Velocity[3], Float:MyVel[3]
- pev(id, pev_velocity, MyVel)
- // Set info for ent
- set_pev(Ent, pev_movetype, MOVETYPE_FLY)
- set_pev(Ent, pev_rendermode, kRenderTransAdd)
- set_pev(Ent, pev_renderamt, 75.0)
- set_pev(Ent, pev_fuser1, get_gametime() + 0.75) // time remove
- set_pev(Ent, pev_scale, random_float(0.25, 0.75))
- set_pev(Ent, pev_nextthink, halflife_time() + 0.05)
- entity_set_string(Ent, EV_SZ_classname, CANNONFIRE_CLASSNAME)
- engfunc(EngFunc_SetModel, Ent, WeaponResources[0])
- set_pev(Ent, pev_mins, Float:{-1.0, -1.0, -1.0})
- set_pev(Ent, pev_maxs, Float:{1.0, 1.0, 1.0})
- set_pev(Ent, pev_origin, Origin)
- set_pev(Ent, pev_gravity, 0.01)
- set_pev(Ent, pev_solid, SOLID_TRIGGER)
- set_pev(Ent, pev_frame, 0.0)
- set_pev(Ent, pev_owner, id)
- set_pev(Ent, pev_iuser4, Offset)
- xs_vec_mul_scalar(MyVel, 0.5, MyVel)
- get_speed_vector(Origin, TargetOrigin, Speed, Velocity)
- xs_vec_add(Velocity, MyVel, Velocity)
- set_pev(Ent, pev_velocity, Velocity)
- }
- public Make_FireSmoke(id)
- {
- static Float:Origin[3]
- get_position(id, WEAPON_ATTACH_F + 8.0, WEAPON_ATTACH_R, WEAPON_ATTACH_U - 14.0, 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_SmokePuff_SprId)
- write_byte(5)
- write_byte(15)
- write_byte(14)
- message_end()
- }
- public Check_RadiusDamage(id)
- {
- static Victim; Victim = -1
- static Float:Origin[3]; pev(id, pev_origin, Origin)
- static Float:Speed
- static Float:Target[3]
- while((Victim = find_ent_in_sphere(Victim, Origin, float(RADIUS))) != 0)
- {
- if(Victim == id)
- continue
- if(!is_alive(Victim))
- continue
- pev(Victim, pev_origin, Target)
- if(!is_in_viewcone(id, Target, 1))
- continue
- if(cs_get_user_team(id) != cs_get_user_team(Victim))
- {
- Speed = float(RADIUS) - entity_range(id, Victim)
- hook_ent2(Victim, Origin, Speed, 10.0 , 2)
- }
- }
- }
- public Create_FakeAttack(id)
- {
- static Ent; Ent = fm_get_user_weapon_entity(id, CSW_KNIFE)
- if(!pev_valid(Ent)) return
- Set_BitVar(g_InTempingAttack, id)
- ExecuteHamB(Ham_Weapon_PrimaryAttack, Ent)
- // Set Real Attack Anim
- static iAnimDesired, szAnimation[64]
- formatex(szAnimation, charsmax(szAnimation), (pev(id, pev_flags) & FL_DUCKING) ? "crouch_shoot_%s" : "ref_shoot_%s", WEAPON_ANIMEXT)
- if((iAnimDesired = lookup_sequence(id, szAnimation)) == -1)
- iAnimDesired = 0
- set_pev(id, pev_sequence, iAnimDesired)
- UnSet_BitVar(g_InTempingAttack, id)
- }
- public Make_Push(id)
- {
- static Float:VirtualVec[3]
- VirtualVec[0] = random_float(-5.0, -10.0)
- VirtualVec[1] = random_float(1.0, -1.0)
- VirtualVec[2] = 0.0
- set_pev(id, pev_punchangle, VirtualVec)
- }
- public Update_Ammo2(id, Ammo, BpAmmo)
- {
- message_begin(MSG_ONE_UNRELIABLE, g_MsgCurWeapon, _, id)
- write_byte(1)
- write_byte(CSW_CANNON)
- write_byte(Ammo)
- message_end()
- message_begin(MSG_ONE_UNRELIABLE, g_MsgAmmoX, _, id)
- write_byte(10)
- write_byte(BpAmmo)
- message_end()
- cs_set_user_bpammo(id, CSW_CANNON, BpAmmo)
- }
- 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 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]
- static Float:num; 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_weapons_timeidle(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_player_nextattack(id, Float:nexttime)
- {
- set_pdata_float(id, 83, nexttime, 5)
- }
- stock set_weapon_anim(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 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
- }
- stock hook_ent2(ent, Float:VicOrigin[3], Float:speed, Float:multi, type)
- {
- static Float:fl_Velocity[3]
- static Float:EntOrigin[3]
- static Float:EntVelocity[3]
- pev(ent, pev_velocity, EntVelocity)
- pev(ent, pev_origin, EntOrigin)
- static Float:distance_f
- distance_f = get_distance_f(EntOrigin, VicOrigin)
- static Float:fl_Time; fl_Time = distance_f / speed
- static Float:fl_Time2; fl_Time2 = distance_f / (speed * multi)
- if(type == 1)
- {
- fl_Velocity[0] = ((VicOrigin[0] - EntOrigin[0]) / fl_Time2) * 1.5
- fl_Velocity[1] = ((VicOrigin[1] - EntOrigin[1]) / fl_Time2) * 1.5
- fl_Velocity[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time
- } else if(type == 2) {
- fl_Velocity[0] = ((EntOrigin[0] - VicOrigin[0]) / fl_Time2) * 1.5
- fl_Velocity[1] = ((EntOrigin[1] - VicOrigin[1]) / fl_Time2) * 1.5
- fl_Velocity[2] = (EntOrigin[2] - VicOrigin[2]) / fl_Time
- }
- xs_vec_add(EntVelocity, fl_Velocity, fl_Velocity)
- set_pev(ent, pev_velocity, fl_Velocity)
- }
- /* ===============================
- ------------- 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_connected(id)
- {
- if(!(1 <= id <= 32))
- return 0
- if(!Get_BitVar(g_IsConnected, id))
- return 0
- return 1
- }
- public is_alive(id)
- {
- if(!is_connected(id))
- return 0
- if(!Get_BitVar(g_IsAlive, id))
- return 0
- return 1
- }
- public get_player_weapon(id)
- {
- if(!is_alive(id))
- return 0
- return g_PlayerWeapon[id]
- }
Here Test it
Nobody Is That Busy If They Make Time
-
- Veteran Member
- Posts: 598
- Joined: 7 years ago
- Contact:
hmm Its working but not as I wanted, can you convert this plugin?
https://zombie-mod.ru/counter-strike/zo ... rster.html
https://zombie-mod.ru/counter-strike/zo ... rster.html
-
- Veteran Member
- Posts: 678
- Joined: 7 years ago
- Location: Paraguay
- Contact:
Ok Tomorrow bro ! I will convert this oneczirimbolo wrote: ↑6 years ago hmm Its working but not as I wanted, can you convert this plugin?
https://zombie-mod.ru/counter-strike/zo ... rster.html
Nobody Is That Busy If They Make Time
-
- Veteran Member
- Posts: 678
- Joined: 7 years ago
- Location: Paraguay
- Contact:
Air buster From zombie-mod.ru
Code updated and working the way u want
I think it will be better if i post this with resources since the sprite used in this u won't find !
- #include <zombie_escape>
- #define pDataKey_CustomAmmo 3
- //Linux extra offsets
- #define pData_Player 5
- #define pData_Item 4
- // CWeaponBox
- #define pDataKey_WeaponBoxItems 34
- //CBasePlayerItem
- #define pDataKey_iOwner 41
- #define pDataKey_iNext 42
- #define pDataKey_iId 43
- //CBasePlayerWeapon
- #define pDataKey_flNextPrimaryAttack 46
- #define pDataKey_flNextSecondaryAttack 47
- #define pDataKey_flNextTimeWeaponIdle 48
- #define pDataKey_iPrimaryAmmoType 49
- #define pDataKey_iClip 51
- #define pDataKey_iInReload 54
- #define pDataKey_iSpecialReload 55
- #define pDataKey_iState 74
- //CBaseMonster
- #define pDataKey_iLastHitGroup 75
- #define pDataKey_flNextAttack 83
- //CBasePlayer
- #define m_flPainShock 108
- #define pDataKey_iPlayerItems 367
- #define pDataKey_iActiveItem 373
- #define pDataKey_ibpAmmo 376
- #define pDataKey_iPlayerWeaponAnim 492
- #define PLUGIN "AirBurster"
- #define VERSION "1.0"
- #define AUTHOR "Chrescoe1 + ZE DEV TEAM"
- #define WEAPON_KEY 82813
- #define Is_CustomItem(%0) (pev(%0,pev_impulse)==WEAPON_KEY)
- //Weapon Settings
- #define weapon_name "weapon_m249"
- #define weapon_new "weapon_airburster"
- #define model_v "models/dm/v_airburster.mdl"
- #define model_p "models/dm/p_airburster.mdl"
- #define model_w "models/dm/w_airburster.mdl"
- #define body_w 0
- #define weapon_punchangle 0.0
- #define weapon_aspeed 0.097
- #define weapon_ammo 50
- #define weapon_bpammo 100
- #define sound_shot "weapons/airburster_shoot.wav"
- new const sounds_dump[][]={
- "weapons/airburster_shoot.wav"
- };
- /*new const precache_dump[][]={
- "sprites/dm_balrog7.txt",
- "sprites/640hud2.spr",
- "sprites/640hud76.spr"
- };*/
- new AllocString_V,AllocString_P;
- //DM Register Item
- new g_iItemID, g_steam;
- #define DMG_ENTS 4
- new const damage_entites[DMG_ENTS][]={"player","info_target","hostage_entity","func_breakable"}
- new HamHook:tr_fwds[DMG_ENTS];
- trace_register()for(new i=0;i<DMG_ENTS;i++)tr_fwds[i]=RegisterHam(Ham_TraceAttack,damage_entites[i],"HookHam_TakeTrace",0),DisableHamForward(tr_fwds[i])
- stock trblock_enable(){for(new i=0;i<DMG_ENTS;i++)EnableHamForward(tr_fwds[i]);}
- stock trblock_disable(){for(new i=0;i<DMG_ENTS;i++)DisableHamForward(tr_fwds[i]);}
- public HookHam_TakeTrace(victim,inflictor,attacker, Float:damage){SetHamParamFloat(3,0.0);return HAM_SUPERCEDE;}
- #define model_fire "sprites/ef_aircyclone.spr"
- #define classname_fire "airthrower"
- new frames;
- //AMXX
- public plugin_precache(){
- engfunc(EngFunc_PrecacheModel,model_v);
- engfunc(EngFunc_PrecacheModel,model_p);
- engfunc(EngFunc_PrecacheModel,model_w);
- new a=engfunc(EngFunc_PrecacheModel,model_fire);
- frames= engfunc(EngFunc_ModelFrames,a);
- g_steam=engfunc(EngFunc_PrecacheModel,"sprites/ef_aircyclone.spr");
- AllocString_V = engfunc(EngFunc_AllocString, model_v);
- AllocString_P = engfunc(EngFunc_AllocString, model_p);
- new i;
- for(i=0;i<sizeof(sounds_dump);i++)engfunc(EngFunc_PrecacheSound,sounds_dump[i]);
- //for(i=0;i<sizeof(precache_dump);i++)engfunc(EngFunc_PrecacheGeneric,precache_dump[i]);
- }
- public plugin_init() {
- register_plugin(PLUGIN, VERSION, AUTHOR);
- g_iItemID = ze_register_item("Air Buster", 10)
- RegisterHam(Ham_Item_Deploy,weapon_name,"HookHam_Weapon_Deploy",1);
- RegisterHam(Ham_Item_AddToPlayer,weapon_name,"HookHam_Weapon_Add",1);
- RegisterHam(Ham_Item_PostFrame,weapon_name,"HookHam_Weapon_Frame",0);
- RegisterHam(Ham_Weapon_Reload,weapon_name,"HookHam_Weapon_Reload",0);
- RegisterHam(Ham_Weapon_WeaponIdle,weapon_name,"HookHam_Weapon_Idle",0);
- RegisterHam(Ham_Weapon_PrimaryAttack,weapon_name,"HookHam_Weapon_PrimaryAttack",0);
- RegisterHam(Ham_Spawn,"weaponbox","HookHam_WeaponBox_Spawn",1);
- register_forward(FM_SetModel,"HookFm_SetModel",0);
- register_forward(FM_UpdateClientData,"HookFm_UpdateClientData",1);
- register_think(classname_fire, "Flame_Think");
- register_touch(classname_fire,"*","Flame_Touch");
- register_clcmd(weapon_new,"hook_item");
- trace_register();
- // Add your code here...
- }
- public plugin_natives ()
- {
- register_native("priveleges_adm_buster", "native_give_weapon_add", 1)
- }
- public native_give_weapon_add(id)
- airbooster_items(id)
- //Cl Cmds
- public hook_item(id){
- engclient_cmd(id,weapon_name);
- 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
- airbooster_items(id)
- }
- public airbooster_items(id)
- {
- UTIL_DropWeapon(id,1);
- new weapon=make_weapon();if(weapon<=0) return;
- if(!ExecuteHamB(Ham_AddPlayerItem, id, weapon)) {engfunc(EngFunc_RemoveEntity, weapon);return;}
- ExecuteHam(Ham_Item_AttachToPlayer,weapon, id);
- new ammotype = pDataKey_ibpAmmo +pDataKey_CustomAmmo;
- new ammo=get_pdata_int(id, ammotype,pData_Player);
- if(ammo< weapon_bpammo)set_pdata_int(id, ammotype, weapon_bpammo,pData_Player);
- set_pdata_int(weapon,pDataKey_iClip,weapon_ammo,pData_Item);
- emit_sound(id, CHAN_ITEM, "items/gunpickup2.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
- engclient_cmd(id,weapon_name);
- }
- //Ham hooks
- public HookHam_Weapon_Deploy(ent){
- if(!Is_CustomItem(ent))return HAM_IGNORED;
- new id=get_pdata_cbase(ent,pDataKey_iOwner,pData_Item);
- set_pev_string(id, pev_viewmodel2, AllocString_V);
- set_pev_string(id, pev_weaponmodel2, AllocString_P);
- set_pdata_float(ent,pDataKey_flNextPrimaryAttack,1.2,pData_Item);
- set_pdata_float(ent,pDataKey_flNextSecondaryAttack,1.2,pData_Item);
- set_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,1.2,pData_Item);
- Play_WeaponAnim(id,4);
- return HAM_IGNORED;
- }
- public HookHam_Weapon_Add(ent,id){
- new imp=pev(ent, pev_impulse);
- if(imp==WEAPON_KEY)Weaponlist(id,true),set_pdata_int(id, pDataKey_ibpAmmo +pDataKey_CustomAmmo,pev(ent,pev_iuser1),pData_Player);
- else if(imp==0)Weaponlist(id,false);
- return HAM_IGNORED;
- }
- public HookHam_Weapon_Frame(ent){
- if(!Is_CustomItem(ent)) return HAM_IGNORED;
- if(get_pdata_int(ent, pDataKey_iInReload,pData_Item)){
- new id = get_pdata_cbase(ent, pDataKey_iOwner,pData_Item);
- new clip,ammotype,ammo,j;
- clip = get_pdata_int(ent, pDataKey_iClip,pData_Item);
- ammotype = pDataKey_ibpAmmo +pDataKey_CustomAmmo;
- ammo = get_pdata_int(id, ammotype,pData_Player);
- j = min(weapon_ammo - clip, ammo);
- set_pdata_int(ent, pDataKey_iClip, clip+j,pData_Item);
- set_pdata_int(id, ammotype, ammo-j,pData_Player);
- set_pdata_int(ent, pDataKey_iInReload,0,pData_Item);
- } else if(get_pdata_int(ent,pDataKey_iClip)<=0){
- new id = get_pdata_cbase(ent, pDataKey_iOwner,pData_Item);
- if(get_pdata_int(id,pDataKey_ibpAmmo+pDataKey_CustomAmmo)>0&&!(pev(id,pev_button)&IN_ATTACK))
- ExecuteHamB(Ham_Weapon_Reload,ent);
- } else if(get_pdata_int(ent,pDataKey_iState,pData_Item)>0){
- new id=get_pdata_cbase(ent, pDataKey_iOwner,pData_Item)
- if(!(pev( id,pev_button)&IN_ATTACK)|| get_pdata_int(ent, pDataKey_iClip,pData_Item)<=0){
- set_pdata_int(ent,pDataKey_iState,0,pData_Item);
- Play_WeaponAnim(id,2);
- set_pdata_float(ent,pDataKey_flNextPrimaryAttack,0.8,pData_Item);
- set_pdata_float(ent,pDataKey_flNextSecondaryAttack,0.8,pData_Item);
- set_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,2.0,pData_Item);
- }
- }
- return HAM_IGNORED;
- }
- public HookHam_Weapon_Reload(ent){
- if(!Is_CustomItem(ent)) return HAM_IGNORED;
- new clip = get_pdata_int(ent, pDataKey_iClip, pData_Item);
- if(clip >= weapon_ammo) return HAM_SUPERCEDE;
- new id = get_pdata_cbase(ent, pDataKey_iOwner, pData_Item);
- if(get_pdata_int(id,pDataKey_ibpAmmo+pDataKey_CustomAmmo,pData_Player)<=0)return HAM_SUPERCEDE;
- set_pdata_int(ent, pDataKey_iClip, 0, pData_Item);
- ExecuteHam(Ham_Weapon_Reload, ent);
- set_pdata_int(ent, pDataKey_iClip, clip, pData_Item);
- set_pdata_int(ent, pDataKey_iInReload, 1, pData_Item);
- new Float:time_reload=4.65;
- set_pdata_float(ent,pDataKey_flNextPrimaryAttack,time_reload,pData_Item);
- set_pdata_float(ent,pDataKey_flNextSecondaryAttack,time_reload,pData_Item);
- set_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,time_reload,pData_Item);
- set_pdata_float(id,pDataKey_flNextAttack,time_reload,pData_Player) ;
- Play_WeaponAnim(id,3);
- return HAM_SUPERCEDE;
- }
- public HookHam_Weapon_Idle(ent){
- if(!Is_CustomItem(ent))return HAM_IGNORED;
- if(get_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,pData_Item)>0.0)return HAM_IGNORED;
- set_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,1.7,pData_Item);
- Play_WeaponAnim(get_pdata_cbase(ent,pDataKey_iOwner,pData_Item),0);
- return HAM_SUPERCEDE;
- }
- public HookHam_Weapon_PrimaryAttack(ent){
- if(!Is_CustomItem(ent))return HAM_IGNORED;
- new ammo=get_pdata_int(ent,pDataKey_iClip,pData_Item);
- if(ammo<=0){
- ExecuteHam(Ham_Weapon_PlayEmptySound, ent);
- set_pdata_float(ent,pDataKey_flNextPrimaryAttack,weapon_aspeed,pData_Item);
- return HAM_SUPERCEDE;
- }
- new id=get_pdata_cbase(ent,pDataKey_iOwner,pData_Item)
- new Float:user_punchangle[3];pev(id,pev_punchangle,user_punchangle)
- new Float:oldidle=get_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,pData_Item);
- new fm_playbackevent=register_forward(FM_PlaybackEvent,"HookFm_PlayBackEvent",false)
- trblock_enable()
- ExecuteHam(Ham_Weapon_PrimaryAttack,ent);
- trblock_disable()
- unregister_forward(FM_PlaybackEvent,fm_playbackevent,false)
- new Float:user_newpunch[3];pev(id,pev_punchangle,user_newpunch)
- user_newpunch[0]=user_punchangle[0]+(user_newpunch[0]-user_punchangle[0])*weapon_punchangle
- user_newpunch[1]=user_punchangle[1]+(user_newpunch[1]-user_punchangle[1])*weapon_punchangle
- user_newpunch[2]=user_punchangle[2]+(user_newpunch[2]-user_punchangle[2])*weapon_punchangle
- set_pev(id,pev_punchangle,user_newpunch)
- set_pdata_int(ent,pDataKey_iClip,ammo-1,pData_Item)
- if(pev(id,pev_weaponanim)!=1||get_pdata_int(ent,pDataKey_iState,pData_Item)!=1){
- set_pdata_int(ent,pDataKey_iState,1,pData_Item)
- Play_WeaponAnim(id,1);
- set_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,2.1,pData_Item);
- }else if(oldidle<=0.0){
- set_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,2.1,pData_Item);
- Play_WeaponAnim(id,1);
- }else set_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,oldidle,pData_Item);
- emit_sound(id, CHAN_WEAPON,sound_shot,VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
- set_pdata_float(ent,pDataKey_flNextPrimaryAttack,weapon_aspeed,pData_Item)
- //Create grnaede...
- new Float:Origin[3];pev(id,pev_origin,Origin);
- new Float:vOfs[3];pev(id,pev_view_ofs,vOfs);
- Origin[0]+=vOfs[0];
- Origin[1]+=vOfs[1];
- Origin[2]+=vOfs[2];
- new Float:vAngle[3];pev(id,pev_v_angle,vAngle);
- new Float:Vec[3];velocity_by_aim(id,1,Vec);
- vAngle[0]=-vAngle[0];
- new Float:FireOrigin[3]
- FireOrigin[0]=Vec[0]*25.0+Origin[0];
- FireOrigin[1]=Vec[1]*25.0+Origin[1];
- FireOrigin[2]=Vec[2]*25.0+Origin[2];
- Vec[0]*=500.0;
- Vec[1]*=500.0;
- Vec[2]*=500.0;
- new tr=create_tr2();
- engfunc(EngFunc_TraceLine,Origin,FireOrigin,IGNORE_MONSTERS,id,tr);
- get_tr2(tr, TR_vecEndPos, FireOrigin);
- free_tr2(tr);
- static info_target;
- if(!info_target)info_target= engfunc(EngFunc_AllocString, "info_target")
- new fire=engfunc(EngFunc_CreateNamedEntity,info_target)
- set_pev(fire, pev_classname, classname_fire);
- engfunc(EngFunc_SetModel, fire, model_fire);
- engfunc(EngFunc_SetSize ,fire,Float:{ 0.0, 0.0, 0.0 },Float:{ 0.0, 0.0, 0.0 })
- engfunc(EngFunc_SetOrigin, fire, Origin);
- set_pev(fire, pev_solid, SOLID_TRIGGER);
- set_pev(fire, pev_movetype, MOVETYPE_FLY);
- set_pev(fire, pev_velocity, Vec);
- set_pev(fire, pev_owner, id);
- fm_set_rendering(fire,kRenderFxNone,255,255,255,kRenderTransAdd,255)
- set_pev(fire,pev_scale ,0.01)
- set_pev (fire,pev_nextthink,get_gametime()+0.06);
- return HAM_SUPERCEDE
- }
- public HookHam_WeaponBox_Spawn(ent)state SetModel: Enabled;
- //Fakemeta
- public HookFm_SetModel(const ent,const str[]) <SetModel: Enabled>{
- state SetModel: Disabled;
- if(!ent||!pev_valid(ent))return FMRES_HANDLED;
- static i, classname[32], item; pev(ent, pev_classname, classname, 31);
- if(!equal(classname, "weaponbox")) return FMRES_IGNORED;
- for(i = 0; i < 6; i++) {
- item = get_pdata_cbase(ent, pDataKey_WeaponBoxItems + i, pData_Item);
- if(item > 0 && Is_CustomItem(item)) {
- engfunc(EngFunc_SetModel, ent, model_w);
- set_pev(ent,pev_body,body_w);
- static owner;owner=pev(ent,pev_owner);
- if(1<=owner<=32)
- set_pev(item,pev_iuser1,get_pdata_int(owner, pDataKey_ibpAmmo +pDataKey_CustomAmmo,pData_Player)),
- set_pdata_int(owner, pDataKey_ibpAmmo +pDataKey_CustomAmmo,0,pData_Player);
- return FMRES_SUPERCEDE;
- }
- }
- return FMRES_IGNORED;
- }
- public HookFm_SetModel() <SetModel: Disabled> { return FMRES_IGNORED;}
- public HookFm_SetModel() <> { return FMRES_IGNORED;}
- public HookFm_PlayBackEvent()return FMRES_SUPERCEDE;
- public HookFm_UpdateClientData(const id,const SendWeapons,const CD_Handle){
- static item;item=get_pdata_cbase(id, pDataKey_iActiveItem,pData_Player);
- if(item<=0||!Is_CustomItem(item))return FMRES_IGNORED;
- set_cd(CD_Handle, CD_flNextAttack,99999.0);
- return FMRES_HANDLED;
- }
- //Stocks
- stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) {
- new Float:RenderColor[3];
- RenderColor[0] = float(r);
- RenderColor[1] = float(g);
- RenderColor[2] = float(b);
- set_pev(entity, pev_renderfx, fx);
- set_pev(entity, pev_rendercolor, RenderColor);
- set_pev(entity, pev_rendermode, render);
- set_pev(entity, pev_renderamt, float(amount));
- return 1;
- }
- stock make_weapon(){
- new ent;
- static g_AllocString_E;
- if(g_AllocString_E||(g_AllocString_E=engfunc(EngFunc_AllocString,weapon_name)))
- ent = engfunc(EngFunc_CreateNamedEntity, g_AllocString_E);
- else return -1;
- if(ent <= 0) return -1;
- set_pev(ent, pev_spawnflags, SF_NORESPAWN);
- set_pev(ent, pev_impulse, WEAPON_KEY);
- ExecuteHam(Ham_Spawn, ent);
- set_pdata_int(ent,pDataKey_iPrimaryAmmoType,15,pData_Item);
- return ent;
- }
- stock Play_WeaponAnim(const id,const anim){
- set_pev(id, pev_weaponanim,anim);
- message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, id);
- write_byte(anim);
- write_byte(0);
- message_end();
- }
- //3, 200,-1, -1, 0, 4, 20, 0, // weapon_m249
- stock Weaponlist(const id,const bool:set) {
- static Msg_WeaponList;
- if(!Msg_WeaponList&&!(Msg_WeaponList=get_user_msgid("WeaponList")))return;
- message_begin(MSG_ONE, Msg_WeaponList, {0,0,0}, id);
- if(set==true){
- write_string(weapon_new);
- write_byte(pDataKey_CustomAmmo);
- write_byte(weapon_bpammo);
- }else{
- write_string(weapon_name);
- write_byte(3);
- write_byte(200);
- }
- write_byte(-1);
- write_byte(-1);
- write_byte(0);
- write_byte(4);
- write_byte(20);
- message_end();
- }
- //Visit to AGHL.ru
- stock UTIL_DropWeapon(const id,const slot){
- static iEntity; iEntity = get_pdata_cbase(id, (pDataKey_iPlayerItems + slot), pData_Player);
- if(iEntity > 0) {
- static iNext,szWeaponName[32];
- do{
- iNext = get_pdata_cbase(iEntity, pDataKey_iNext, 4);
- if(get_weaponname(get_pdata_int(iEntity, pDataKey_iId, 4), szWeaponName, 31))
- engclient_cmd(id, "drop", szWeaponName);
- } while(( iEntity = iNext) > 0);
- }
- }
- //Fire
- public Flame_Think(ent){
- new owner=pev(ent,pev_owner);
- if(!is_user_connected(owner)){
- engfunc(EngFunc_RemoveEntity,ent);
- return;
- }
- new Float:fFrame;pev(ent,pev_frame,fFrame);
- new Float:fOrigin[3];pev(ent,pev_origin,fOrigin);
- if(pev(ent,pev_waterlevel)>0||fFrame>=(frames-1.0)){
- /*
- engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, fOrigin, 0);
- write_byte(TE_EXPLOSION);
- engfunc(EngFunc_WriteCoord, fOrigin[0])
- engfunc(EngFunc_WriteCoord, fOrigin[1])
- engfunc(EngFunc_WriteCoord, fOrigin[2])
- write_short(g_steam); // sprite
- write_byte(random_num(1,6)); // scale in 0.1
- write_byte(random_num(10,30)); // framerate
- write_byte(TE_EXPLFLAG_NODLIGHTS|TE_EXPLFLAG_NOSOUND|TE_EXPLFLAG_NOPARTICLES); // flags
- message_end() ;
- */
- engfunc(EngFunc_RemoveEntity, ent);
- return;
- }
- new Float:fScale;pev(ent,pev_scale,fScale);
- static mp;if(!mp)mp=get_maxplayers();
- new target;
- while((target = engfunc(EngFunc_FindEntityInSphere, target, fOrigin,35.0))> 0){
- if(target==owner||target==ent)continue
- if(pev(target,pev_takedamage)==DAMAGE_NO)continue
- new solid=pev(target,pev_solid);if(solid==SOLID_NOT||solid==SOLID_TRIGGER)continue
- new Float:Health;pev(target,pev_health,Health);if(Health<=0.0)continue
- if(target<=mp){
- if(!is_user_connected(target)||!ze_is_user_zombie(target))continue;
- //new Float:user_pain=get_pdata_float(target,m_flPainShock,5);
- //set_pdata_int(target,pDataKey_iLastHitGroup,HIT_GENERIC,pData_Player);
- new Float:user_velocity[3];
- pev(target,pev_velocity,user_velocity);
- ExecuteHamB(Ham_TakeDamage, target, ent, owner,5.0, DMG_BULLET);
- //set_pdata_float(target, m_flPainShock,user_pain,5);
- if(is_user_alive(target)){
- new Float:vlen=floatsqroot(user_velocity[0]*user_velocity[0]+user_velocity[1]*user_velocity[1]);
- user_velocity[0]=user_velocity[0]/vlen*floatmax(-60.0,vlen-16.0);
- user_velocity[1]=user_velocity[1]/vlen*floatmax(-60.0,vlen-16.0);
- set_pev(target,pev_velocity,user_velocity);
- }
- }else ExecuteHamB(Ham_TakeDamage, target, ent, owner,5.0, DMG_BULLET)
- }
- set_pev(ent,pev_scale,fScale+0.075)
- set_pev(ent,pev_frame,fFrame+1.0)
- set_pev (ent,pev_nextthink,get_gametime()+0.035)
- }
- public Flame_Touch(ent,touch){
- new owner=pev(ent,pev_owner);
- if(!is_user_connected(owner)){
- engfunc(EngFunc_RemoveEntity,ent);
- return;
- }
- if(touch>0&&pev_valid(touch)){
- static mp;if(!mp)mp=get_maxplayers();
- if(touch<=mp){
- if(!is_user_connected(touch)||!ze_is_user_zombie(touch))return;
- //set_pdata_int(touch,pDataKey_iLastHitGroup,HIT_GENERIC,pData_Player);
- //new Float:user_pain=get_pdata_float(touch,m_flPainShock,5);
- new Float:user_velocity[3];
- pev(touch,pev_velocity,user_velocity);
- ExecuteHamB(Ham_TakeDamage, touch, ent, owner,75.0, DMG_BULLET);
- //set_pdata_float(touch, m_flPainShock,user_pain,5);
- if(is_user_alive(touch)){
- new Float:vlen=floatsqroot(user_velocity[0]*user_velocity[0]+user_velocity[1]*user_velocity[1]);
- user_velocity[0]=user_velocity[0]/vlen*floatmax(-16.0,vlen-16.0);
- user_velocity[1]=user_velocity[1]/vlen*floatmax(-16.0,vlen-16.0);
- set_pev(touch,pev_velocity,user_velocity);
- }
- }else ExecuteHamB(Ham_TakeDamage, touch, ent,owner,75.0, DMG_BULLET);
- }
- new Float:fOrigin[3];pev(ent,pev_origin,fOrigin)
- engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, fOrigin, 0);
- write_byte(TE_EXPLOSION);
- engfunc(EngFunc_WriteCoord, fOrigin[0])
- engfunc(EngFunc_WriteCoord, fOrigin[1])
- engfunc(EngFunc_WriteCoord, fOrigin[2])
- write_short(g_steam); // sprite
- write_byte(random_num(1,6)); // scale in 0.1
- write_byte(random_num(10,30)); // framerate
- write_byte(TE_EXPLFLAG_NODLIGHTS|TE_EXPLFLAG_NOSOUND|TE_EXPLFLAG_NOPARTICLES); // flags
- message_end() ;
- engfunc(EngFunc_RemoveEntity, ent)
- }
Code updated and working the way u want
I think it will be better if i post this with resources since the sprite used in this u won't find !
Last edited by johnnysins2000 6 years ago, edited 1 time in total.
Nobody Is That Busy If They Make Time
Johnny, As you have time so test the plugin before post so it will be better.
He who fails to plan is planning to fail
-
- Veteran Member
- Posts: 678
- Joined: 7 years ago
- Location: Paraguay
- Contact:
Ok I will come Tonight On Pc again to test this
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:
I will fix it waitczirimbolo wrote: ↑6 years ago It's not working, I see this gun in weapons menu, buy it and nothing happens..
Nobody Is That Busy If They Make Time
-
- Veteran Member
- Posts: 678
- Joined: 7 years ago
- Location: Paraguay
- Contact:
Ok czrimbolo i have tested it as well and fix it but yes u are right the item does not appear i will suggest that tell me which thing u want in dias Air Buster Code?
Nobody Is That Busy If They Make Time
-
- Veteran Member
- Posts: 598
- Joined: 7 years ago
- Contact:
That first gun which I uploaded here is good, working well but it's shooting like shotgun when you compiled it. However I am looking for this gun:
https://www.youtube.com/watch?v=-pF7D_j0UoE
https://www.youtube.com/watch?v=-pF7D_j0UoE
-
- Veteran Member
- Posts: 678
- Joined: 7 years ago
- Location: Paraguay
- Contact:
I see The Original Air buster does shoot like a shotgun bro
http://cso.wikia.com/wiki/Air_Burster U CAN READ ABOUT IT HERE BUT ANYWAY I THINK I HAVE SOMETHING LIKE THAT I WILL CHECK IN RUSSIAN MODS WAIT
http://cso.wikia.com/wiki/Air_Burster U CAN READ ABOUT IT HERE BUT ANYWAY I THINK I HAVE SOMETHING LIKE THAT I WILL CHECK IN RUSSIAN MODS WAIT
Nobody Is That Busy If They Make Time
-
- Veteran Member
- Posts: 678
- Joined: 7 years ago
- Location: Paraguay
- Contact:
Ok done the thing u wanted i have it and i have tested it!
Code Updated
Code Updated
Nobody Is That Busy If They Make Time
-
- Veteran Member
- Posts: 598
- Joined: 7 years ago
- Contact:
Everything works now, thanks johnny. One more thing, can you increase the clip? I mean, more bullets in one clip would be nice
Marked as solved and don't forget to share it in our extra-item section
He who fails to plan is planning to fail
-
- Veteran Member
- Posts: 678
- Joined: 7 years ago
- Location: Paraguay
- Contact:
#define pDataKey_iClip 51czirimbolo wrote: ↑6 years ago Everything works now, thanks johnny. One more thing, can you increase the clip? I mean, more bullets in one clip would be nice
change this line for more bullets
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:
Zombie-Mod.ru one bro.... I have updated that codeczirimbolo wrote: ↑6 years ago ok, but which sma. file did you convert? the first one or from zombie mod ru?
Nobody Is That Busy If They Make Time
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: Yandex [Bot] and 5 guests