Solved Air Buster

Unpaid Requests, Public Plugins
Post Reply
czirimbolo
Veteran Member
Veteran Member
Poland
Posts: 598
Joined: 7 years ago
Contact:

Air Buster

#1

Post by czirimbolo » 6 years ago

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
Image

johnnysins2000
Veteran Member
Veteran Member
Paraguay
Posts: 678
Joined: 7 years ago
Location: Paraguay
Contact:

#2

Post by johnnysins2000 » 6 years ago

OK Tonight Bro ... I will convert it For You!
Nobody Is That Busy If They Make Time :roll:

johnnysins2000
Veteran Member
Veteran Member
Paraguay
Posts: 678
Joined: 7 years ago
Location: Paraguay
Contact:

#3

Post by johnnysins2000 » 6 years ago

Air Buster
    1. #include <zombie_escape>
    2. #include <cstrike>
    3. #include <fakemeta_util>
    4. #include <xs>
    5.  
    6. #define PLUGIN "Air Burster (Limited)"
    7. #define VERSION "2015"
    8. #define AUTHOR "Dias + ZE DEV TEAM"
    9.  
    10. #define V_MODEL "models/v_airburster.mdl"
    11. #define P_MODEL "models/p_airburster.mdl"
    12. #define W_MODEL "models/w_airburster.mdl"
    13.  
    14. #define RADIUS 405
    15.  
    16. #define CLIP 4
    17. #define BPAMMOX 40
    18.  
    19. #define TIME_DRAW 0.75
    20. #define TIME_SHOOT 1.25
    21. #define TIME_RELOAD 5.0
    22.  
    23. #define CSW_CANNON CSW_MP5NAVY
    24. #define weapon_cannon "weapon_mp5navy"
    25.  
    26. #define WEAPON_EVENT "events/mp5n.sc"
    27. #define WEAPON_W_MODEL "models/w_mp5.mdl"
    28. #define WEAPON_ANIMEXT "m249"
    29. #define WEAPON_SECRET_CODE 2086
    30.  
    31. #define CANNONFIRE_CLASSNAME "air"
    32.  
    33. // Fire Start
    34. #define WEAPON_ATTACH_F 30.0
    35. #define WEAPON_ATTACH_R 6.0
    36. #define WEAPON_ATTACH_U -2.0
    37.  
    38. new const WeaponSounds[8][] =
    39. {
    40.     "weapons/airburster_shoot2.wav",
    41.     "weapons/airburster_idle.wav",
    42.     "weapons/airburster_draw.wav",
    43.     "weapons/airburster_clipin1.wav",
    44.     "weapons/airburster_clipin2.wav",
    45.     "weapons/airburster_clipin3.wav",
    46.     "weapons/airburster_clipin4.wav",
    47.     "weapons/airburster_clipout.wav"
    48. }
    49.  
    50. new const WeaponResources[5][] =
    51. {
    52.     "sprites/ef_aircyclone.spr",
    53.     "sprites/ef_airexplosion.spr",
    54.     "sprites/weapon_airburster.txt",
    55.     "sprites/640hud130_2.spr",
    56.     "sprites/640hud14_2.spr"
    57. }
    58.  
    59. enum
    60. {
    61.     CANNON_ANIM_IDLE = 0,
    62.     CANNON_ANIM_SHOOT,
    63.     CANNON_ANIM_SHOOT_END,
    64.     CANNON_ANIM_RELOAD,
    65.     CANNON_ANIM_DRAW,
    66.     CANNON_ANIM_SHOOT2
    67. }
    68.  
    69. // MACROS
    70. #define Get_BitVar(%1,%2) (%1 & (1 << (%2 & 31)))
    71. #define Set_BitVar(%1,%2) %1 |= (1 << (%2 & 31))
    72. #define UnSet_BitVar(%1,%2) %1 &= ~(1 << (%2 & 31))
    73.  
    74. new g_Had_Cannon, g_InTempingAttack, g_Clip[33], g_CodeNumber
    75. new g_OldWeapon[33], Float:g_LastAttack[33], Float:g_NextTime[33], g_PreAmmo[33]
    76. new g_SmokePuff_SprId, g_MsgCurWeapon, g_MsgAmmoX, g_MsgWeaponList, g_iItemID
    77.  
    78. // Safety
    79. new g_HamBot
    80. new g_IsConnected, g_IsAlive, g_PlayerWeapon[33]
    81.  
    82. public plugin_init()
    83. {
    84.     register_plugin(PLUGIN, VERSION, AUTHOR)
    85.     g_iItemID = ze_register_item("Air Buster", 75)
    86.    
    87.     Register_SafetyFunc()
    88.     register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
    89.  
    90.     register_think(CANNONFIRE_CLASSNAME, "fw_Cannon_Think")
    91.     register_touch(CANNONFIRE_CLASSNAME, "*", "fw_Cannon_Touch")   
    92.    
    93.     register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
    94.     register_forward(FM_CmdStart, "fw_CmdStart")
    95.     register_forward(FM_SetModel, "fw_SetModel")   
    96.     register_forward(FM_EmitSound, "fw_EmitSound")
    97.     register_forward(FM_TraceLine, "fw_TraceLine")
    98.     register_forward(FM_TraceHull, "fw_TraceHull")
    99.    
    100.     RegisterHam(Ham_Item_PostFrame, weapon_cannon, "fw_Item_PostFrame")
    101.     RegisterHam(Ham_Weapon_Reload, weapon_cannon, "fw_Weapon_Reload")
    102.     RegisterHam(Ham_Weapon_Reload, weapon_cannon, "fw_Weapon_Reload_Post", 1)  
    103.     RegisterHam(Ham_Item_AddToPlayer, weapon_cannon, "fw_Item_AddToPlayer_Post", 1)
    104.     RegisterHam(Ham_Weapon_WeaponIdle, weapon_cannon, "fw_Weapon_WeaponIdle_Post", 1)
    105.    
    106.     g_MsgCurWeapon = get_user_msgid("CurWeapon")
    107.     g_MsgAmmoX = get_user_msgid("AmmoX")
    108.     g_MsgWeaponList = get_user_msgid("WeaponList")
    109.    
    110.     register_clcmd("weapon_airburster", "HookWeapon")
    111. }
    112.  
    113. public plugin_precache()
    114. {
    115.     engfunc(EngFunc_PrecacheModel, V_MODEL)
    116.     engfunc(EngFunc_PrecacheModel, P_MODEL)
    117.     engfunc(EngFunc_PrecacheModel, W_MODEL)
    118.    
    119.     new i
    120.     for(i = 0; i < sizeof(WeaponSounds); i++)
    121.         engfunc(EngFunc_PrecacheSound, WeaponSounds[i])
    122.     for(i = 0; i < sizeof(WeaponResources); i++)
    123.     {
    124.         if(i == 1) g_CodeNumber = precache_model(WeaponResources[i])
    125.         else if(i == 2) engfunc(EngFunc_PrecacheGeneric, WeaponResources[i])
    126.         else engfunc(EngFunc_PrecacheModel, WeaponResources[i])
    127.     }
    128.    
    129.     g_SmokePuff_SprId = engfunc(EngFunc_PrecacheModel, "sprites/smokepuff.spr")
    130. }
    131.  
    132. public client_putinserver(id)
    133. {
    134.     Safety_Connected(id)
    135.     if(!g_HamBot && is_user_bot(id))
    136.     {
    137.         g_HamBot = 1
    138.         set_task(0.1, "Register_HamBot", id)
    139.     }
    140. }
    141. public client_disconnect(id) Safety_Disconnected(id)
    142. public Register_HamBot(id)
    143. {
    144.     Register_SafetyFuncBot(id)
    145. }
    146.  
    147. public ze_select_item_pre(id, itemid)
    148. {
    149.     // This not our item?
    150.     if (itemid != g_iItemID)
    151.         return ZE_ITEM_AVAILABLE
    152.    
    153.     // Available for Humans only, So don't show it for zombies
    154.     if (ze_is_user_zombie(id))
    155.         return ZE_ITEM_DONT_SHOW
    156.    
    157.     // Finally return that it's available
    158.     return ZE_ITEM_AVAILABLE
    159. }
    160.  
    161. public ze_select_item_post(id, itemid)
    162. {
    163.     // This is not our item, Block it here and don't execute the blew code
    164.     if (itemid != g_iItemID)
    165.         return
    166.    
    167.     Get_Cannon(id)
    168. }
    169.  
    170. public Get_Cannon(id)
    171. {
    172.     Set_BitVar(g_Had_Cannon, id)
    173.     UnSet_BitVar(g_InTempingAttack, id)
    174.     g_NextTime[id] = 0.0
    175.    
    176.     give_item(id, weapon_cannon)
    177.    
    178.     cs_set_user_bpammo(id, CSW_CANNON, BPAMMOX)
    179.     static Ent; Ent = fm_get_user_weapon_entity(id, CSW_CANNON)
    180.     if(!pev_valid(Ent)) return
    181.    
    182.     cs_set_weapon_ammo(Ent, CLIP)
    183.     Update_Ammo2(id, CLIP, BPAMMOX)
    184. }
    185.  
    186. public Remove_Cannon(id)
    187. {
    188.     UnSet_BitVar(g_Had_Cannon, id)
    189.     UnSet_BitVar(g_InTempingAttack, id)
    190. }
    191.  
    192. public HookWeapon(id)
    193. {
    194.     engclient_cmd(id, weapon_cannon)
    195.     return PLUGIN_HANDLED
    196. }
    197.  
    198. public Event_CurWeapon(id)
    199. {
    200.     if(!is_alive(id))
    201.         return
    202.        
    203.     static CSWID; CSWID = read_data(2)
    204.     if((CSWID == CSW_CANNON && g_OldWeapon[id] != CSW_CANNON) && Get_BitVar(g_Had_Cannon, id))
    205.     {
    206.         set_pev(id, pev_viewmodel2, V_MODEL)
    207.         set_pev(id, pev_weaponmodel2, P_MODEL)
    208.        
    209.         set_weapon_anim(id, CANNON_ANIM_DRAW)
    210.         set_pdata_float(id, 83, TIME_DRAW, 5)
    211.        
    212.         remove_task(id+2092015)
    213.        
    214.         g_PreAmmo[id] = cs_get_user_bpammo(id, CSW_CANNON)
    215.         set_pdata_string(id, (492) * 4, WEAPON_ANIMEXT, -1 , 20)
    216.         //update_ammo(id, -1, g_CannonRound[id])
    217.     } else if((CSWID == CSW_CANNON && g_OldWeapon[id] == CSW_CANNON) && Get_BitVar(g_Had_Cannon, id)) {
    218.         //update_ammo(id, -1, g_CannonRound[id])
    219.     } else if((CSWID != CSW_CANNON && g_OldWeapon[id] == CSW_CANNON) && Get_BitVar(g_Had_Cannon, id)) {
    220.         //cs_set_user_bpammo(id, CSW_CANNON, g_PreAmmo[id])
    221.     }
    222.    
    223.     g_OldWeapon[id] = CSWID
    224. }
    225.  
    226. public fw_Cannon_Think(iEnt)
    227. {
    228.     if(!pev_valid(iEnt))
    229.         return
    230.    
    231.     static Float:fFrame, Float:fNextThink, Float:fScale
    232.     pev(iEnt, pev_frame, fFrame)
    233.     pev(iEnt, pev_scale, fScale)
    234.    
    235.     // effect exp
    236.     static iMoveType; iMoveType = pev(iEnt, pev_movetype)
    237.     if (iMoveType == MOVETYPE_NONE)
    238.     {
    239.         fNextThink = 0.0015
    240.         fFrame += random_float(0.25, 0.75)
    241.         fScale += 0.01
    242.        
    243.         fScale = floatmin(1.5, fFrame)
    244.         if(fFrame > 21.0)
    245.         {
    246.             engfunc(EngFunc_RemoveEntity, iEnt)
    247.             return
    248.         }
    249.     } else {
    250.         fNextThink = 0.045
    251.        
    252.         fFrame += random_float(0.5, 1.0)
    253.         fScale += 0.001
    254.        
    255.         fFrame = floatmin(21.0, fFrame)
    256.         fScale = floatmin(1.5, fFrame)
    257.     }
    258.    
    259.     set_pev(iEnt, pev_frame, fFrame)
    260.     set_pev(iEnt, pev_scale, fScale)
    261.     set_pev(iEnt, pev_nextthink, halflife_time() + fNextThink)
    262.    
    263.     // time remove
    264.     static Float:fTimeRemove
    265.     pev(iEnt, pev_fuser1, fTimeRemove)
    266.     if(get_gametime() >= fTimeRemove)
    267.     {
    268.         static Float:Amount; pev(iEnt, pev_renderamt, Amount)
    269.         if(Amount <= 5.0)
    270.         {
    271.             engfunc(EngFunc_RemoveEntity, iEnt)
    272.             return
    273.         } else {
    274.             Amount -= 5.0
    275.             set_pev(iEnt, pev_renderamt, Amount)
    276.         }
    277.     }
    278. }
    279.  
    280. public fw_Cannon_Touch(ent, id)
    281. {
    282.     if(!pev_valid(ent))
    283.         return
    284.        
    285.     if(pev_valid(id))
    286.     {
    287.         static Classname[32]
    288.         pev(id, pev_classname, Classname, sizeof(Classname))
    289.        
    290.         if(equal(Classname, CANNONFIRE_CLASSNAME)) return
    291.     }
    292.        
    293.     set_pev(ent, pev_movetype, MOVETYPE_NONE)
    294.     set_pev(ent, pev_solid, SOLID_NOT)
    295. }
    296.  
    297. public fw_UpdateClientData_Post(id, sendweapons, cd_handle)
    298. {
    299.     if(!is_alive(id))
    300.         return FMRES_IGNORED
    301.     if(get_player_weapon(id) != CSW_CANNON || !Get_BitVar(g_Had_Cannon, id))
    302.         return FMRES_IGNORED
    303.    
    304.     set_cd(cd_handle, CD_flNextAttack, get_gametime() + 0.001)
    305.    
    306.     return FMRES_HANDLED
    307. }
    308.  
    309. public fw_CmdStart(id, uc_handle, seed)
    310. {
    311.     if(!is_alive(id))
    312.         return FMRES_IGNORED
    313.     if(get_player_weapon(id) != CSW_CANNON || !Get_BitVar(g_Had_Cannon, id))
    314.         return FMRES_IGNORED
    315.    
    316.     static CurButton
    317.     CurButton = get_uc(uc_handle, UC_Buttons)
    318.    
    319.     if(CurButton & IN_ATTACK)
    320.     {
    321.         CurButton &= ~IN_ATTACK
    322.         set_uc(uc_handle, UC_Buttons, CurButton)
    323.        
    324.         HandleShoot_Cannon(id)
    325.     }
    326.    
    327.     return FMRES_HANDLED
    328. }
    329.  
    330. public fw_SetModel(entity, model[])
    331. {
    332.     if(!pev_valid(entity))
    333.         return FMRES_IGNORED
    334.    
    335.     static szClassName[33]
    336.     pev(entity, pev_classname, szClassName, charsmax(szClassName))
    337.    
    338.     if(!equal(szClassName, "weaponbox"))
    339.         return FMRES_IGNORED
    340.    
    341.     static id
    342.     id = pev(entity, pev_owner)
    343.    
    344.     if(equal(model, WEAPON_W_MODEL))
    345.     {
    346.         static weapon
    347.         weapon = fm_find_ent_by_owner(-1, weapon_cannon, entity)
    348.        
    349.         if(!pev_valid(weapon))
    350.             return FMRES_IGNORED
    351.        
    352.         if(Get_BitVar(g_Had_Cannon, id))
    353.         {
    354.             set_pev(weapon, pev_impulse, WEAPON_SECRET_CODE)
    355.            
    356.             engfunc(EngFunc_SetModel, entity, W_MODEL)
    357.             cs_set_user_bpammo(id, CSW_CANNON, g_PreAmmo[id])
    358.             Remove_Cannon(id)
    359.            
    360.             return FMRES_SUPERCEDE
    361.         }
    362.     }
    363.  
    364.     return FMRES_IGNORED
    365. }
    366.  
    367. public fw_EmitSound(id, channel, const sample[], Float:volume, Float:attn, flags, pitch)
    368. {
    369.     if(!is_alive(id))
    370.         return FMRES_IGNORED
    371.     if(!Get_BitVar(g_InTempingAttack, id))
    372.         return FMRES_IGNORED
    373.        
    374.     if(sample[8] == 'k' && sample[9] == 'n' && sample[10] == 'i')
    375.     {
    376.         if(sample[14] == 's' && sample[15] == 'l' && sample[16] == 'a')
    377.             return FMRES_SUPERCEDE
    378.         if (sample[14] == 'h' && sample[15] == 'i' && sample[16] == 't')
    379.         {
    380.             if (sample[17] == 'w')  return FMRES_SUPERCEDE
    381.             else  return FMRES_SUPERCEDE
    382.         }
    383.         if (sample[14] == 's' && sample[15] == 't' && sample[16] == 'a')
    384.             return FMRES_SUPERCEDE;
    385.     }
    386.    
    387.     return FMRES_IGNORED
    388. }
    389.  
    390. public fw_TraceLine(Float:vector_start[3], Float:vector_end[3], ignored_monster, id, handle)
    391. {
    392.     if(!is_alive(id))
    393.         return FMRES_IGNORED   
    394.     if(!Get_BitVar(g_InTempingAttack, id))
    395.         return FMRES_IGNORED
    396.    
    397.     static Float:vecStart[3], Float:vecEnd[3], Float:v_angle[3], Float:v_forward[3], Float:view_ofs[3], Float:fOrigin[3]
    398.    
    399.     pev(id, pev_origin, fOrigin)
    400.     pev(id, pev_view_ofs, view_ofs)
    401.     xs_vec_add(fOrigin, view_ofs, vecStart)
    402.     pev(id, pev_v_angle, v_angle)
    403.    
    404.     engfunc(EngFunc_MakeVectors, v_angle)
    405.     get_global_vector(GL_v_forward, v_forward)
    406.  
    407.     xs_vec_mul_scalar(v_forward, 0.0, v_forward)
    408.     xs_vec_add(vecStart, v_forward, vecEnd)
    409.    
    410.     engfunc(EngFunc_TraceLine, vecStart, vecEnd, ignored_monster, id, handle)
    411.    
    412.     return FMRES_SUPERCEDE
    413. }
    414.  
    415. public fw_TraceHull(Float:vector_start[3], Float:vector_end[3], ignored_monster, hull, id, handle)
    416. {
    417.     if(!is_alive(id))
    418.         return FMRES_IGNORED   
    419.     if(!Get_BitVar(g_InTempingAttack, id))
    420.         return FMRES_IGNORED
    421.    
    422.     static Float:vecStart[3], Float:vecEnd[3], Float:v_angle[3], Float:v_forward[3], Float:view_ofs[3], Float:fOrigin[3]
    423.    
    424.     pev(id, pev_origin, fOrigin)
    425.     pev(id, pev_view_ofs, view_ofs)
    426.     xs_vec_add(fOrigin, view_ofs, vecStart)
    427.     pev(id, pev_v_angle, v_angle)
    428.    
    429.     engfunc(EngFunc_MakeVectors, v_angle)
    430.     get_global_vector(GL_v_forward, v_forward)
    431.    
    432.     xs_vec_mul_scalar(v_forward, 0.0, v_forward)
    433.     xs_vec_add(vecStart, v_forward, vecEnd)
    434.    
    435.     engfunc(EngFunc_TraceHull, vecStart, vecEnd, ignored_monster, hull, id, handle)
    436.    
    437.     return FMRES_SUPERCEDE
    438. }
    439.  
    440. public fw_Item_AddToPlayer_Post(ent, id)
    441. {
    442.     if(!pev_valid(ent))
    443.         return HAM_IGNORED
    444.        
    445.     if(pev(ent, pev_impulse) == WEAPON_SECRET_CODE)
    446.     {
    447.         Remove_Cannon(id)
    448.         Set_BitVar(g_Had_Cannon, id)
    449.     }
    450.    
    451.     if(Get_BitVar(g_Had_Cannon, id))
    452.     {
    453.         message_begin(MSG_ONE_UNRELIABLE, g_MsgWeaponList, _, id)
    454.         write_string("weapon_airburster")
    455.         write_byte(10)
    456.         write_byte(20)
    457.         write_byte(-1)
    458.         write_byte(-1)
    459.         write_byte(0)
    460.         write_byte(7)
    461.         write_byte(CSW_CANNON)
    462.         write_byte(0)
    463.         message_end()
    464.     }
    465.    
    466.     return HAM_HANDLED 
    467. }
    468.  
    469.  
    470. public fw_Item_PostFrame(ent)
    471. {
    472.     static id; id = pev(ent, pev_owner)
    473.     if(!is_alive(id))
    474.         return HAM_IGNORED
    475.     if(!Get_BitVar(g_Had_Cannon, id))
    476.         return HAM_IGNORED 
    477.    
    478.     static Float:flNextAttack; flNextAttack = get_pdata_float(id, 83, 5)
    479.     static bpammo; bpammo = cs_get_user_bpammo(id, CSW_CANNON)
    480.    
    481.     static iClip; iClip = get_pdata_int(ent, 51, 4)
    482.     static fInReload; fInReload = get_pdata_int(ent, 54, 4)
    483.    
    484.     if(fInReload && flNextAttack <= 0.0)
    485.     {
    486.         static temp1
    487.         temp1 = min(CLIP - iClip, bpammo)
    488.  
    489.         set_pdata_int(ent, 51, iClip + temp1, 4)
    490.         cs_set_user_bpammo(id, CSW_CANNON, bpammo - temp1)     
    491.        
    492.         set_pdata_int(ent, 54, 0, 4)
    493.         fInReload = 0
    494.     }      
    495.    
    496.     return HAM_IGNORED
    497. }
    498.  
    499. public fw_Weapon_Reload(ent)
    500. {
    501.     static id; id = pev(ent, pev_owner)
    502.     if(!is_alive(id))
    503.         return HAM_IGNORED
    504.     if(!Get_BitVar(g_Had_Cannon, id))
    505.         return HAM_IGNORED 
    506.  
    507.     g_Clip[id] = -1
    508.        
    509.     static BPAmmo; BPAmmo = cs_get_user_bpammo(id, CSW_CANNON)
    510.     static iClip; iClip = get_pdata_int(ent, 51, 4)
    511.        
    512.     if(BPAmmo <= 0)
    513.         return HAM_SUPERCEDE
    514.     if(iClip >= CLIP)
    515.         return HAM_SUPERCEDE       
    516.            
    517.     g_Clip[id] = iClip 
    518.    
    519.     return HAM_HANDLED
    520. }
    521.  
    522. public fw_Weapon_Reload_Post(ent)
    523. {
    524.     static id; id = pev(ent, pev_owner)
    525.     if(!is_alive(id))
    526.         return HAM_IGNORED
    527.     if(!Get_BitVar(g_Had_Cannon, id))
    528.         return HAM_IGNORED 
    529.    
    530.     if((get_pdata_int(ent, 54, 4) == 1))
    531.     { // Reload
    532.         if(g_Clip[id] == -1)
    533.             return HAM_IGNORED
    534.        
    535.         set_pdata_int(ent, 51, g_Clip[id], 4)
    536.         set_weapon_anim(id, CANNON_ANIM_RELOAD)
    537.        
    538.         set_player_nextattack(id, TIME_RELOAD)
    539.     }
    540.    
    541.     return HAM_HANDLED
    542. }
    543.  
    544. public fw_Weapon_WeaponIdle_Post( iEnt )
    545. {
    546.     if(pev_valid(iEnt) != 2)
    547.         return
    548.     static Id; Id = get_pdata_cbase(iEnt, 41, 4)
    549.     if(get_pdata_cbase(Id, 373) != iEnt)
    550.         return
    551.     if(!Get_BitVar(g_Had_Cannon, Id))
    552.         return
    553.        
    554.     if(get_pdata_float(iEnt, 48, 4) <= 0.25)
    555.     {
    556.        
    557.     }  
    558. }
    559.  
    560. public HandleShoot_Cannon(id)
    561. {
    562.     if(get_pdata_float(id, 83, 5) > 0.0)
    563.         return
    564.        
    565.     static Ent; Ent = fm_get_user_weapon_entity(id, CSW_CANNON)
    566.     if(!pev_valid(Ent)) return
    567.        
    568.     if(cs_get_weapon_ammo(Ent) <= 0)
    569.         return
    570.     if(get_gametime() - TIME_SHOOT <= g_LastAttack[id])
    571.     {
    572.         set_player_nextattack(id, g_LastAttack[id] - get_gametime())
    573.         return
    574.     }
    575.  
    576.     Create_FakeAttack(id)
    577.     set_weapon_anim(id, CANNON_ANIM_SHOOT2)
    578.  
    579.     cs_set_weapon_ammo(Ent, cs_get_weapon_ammo(Ent) - 1)
    580.     emit_sound(id, CHAN_WEAPON, WeaponSounds[0], 1.0, 0.4, 0, 94 + random_num(0, 15))
    581.    
    582.     set_task(0.5, "Make_FireSmoke", id)
    583.     Create_CannonFire(id, 1)
    584.    
    585.     Make_Push(id)
    586.     Check_RadiusDamage(id)
    587.  
    588.     set_player_nextattack(id, TIME_SHOOT)
    589.     set_weapons_timeidle(id, CSW_CANNON, TIME_SHOOT)
    590.    
    591.     if(!cs_get_weapon_ammo(Ent) && cs_get_user_bpammo(id, CSW_CANNON))
    592.     {
    593.         remove_task(id+2092015)
    594.         set_task(TIME_SHOOT, "Check_Reload", id+2092015)
    595.     }
    596.    
    597.     g_LastAttack[id] = get_gametime()
    598.     g_NextTime[id] = get_gametime()
    599. }
    600.  
    601. public Check_Reload(id)
    602. {
    603.     id -= 2092015
    604.    
    605.     if(!is_alive(id))
    606.         return
    607.     if(get_player_weapon(id) != CSW_CANNON || !Get_BitVar(g_Had_Cannon, id))
    608.         return
    609.        
    610.     static Ent; Ent = fm_get_user_weapon_entity(id, CSW_CANNON)
    611.     if(!pev_valid(Ent)) return
    612.        
    613.     set_player_nextattack(id, 0.0)
    614.     set_weapons_timeidle(id, CSW_CANNON, 0.0)
    615.     ExecuteHamB(Ham_Weapon_Reload, Ent)
    616. }
    617.  
    618. public Create_CannonFire(id, OffSet)
    619. {
    620.     const MAX_FIRE = 12
    621.     static Float:StartOrigin[3], Float:TargetOrigin[MAX_FIRE][3], Float:Speed[MAX_FIRE]
    622.  
    623.     // Get Target
    624.     get_position(id, random_float(30.0, 40.0), 0.0, WEAPON_ATTACH_U - 5.0, StartOrigin)
    625.    
    626.     engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, StartOrigin, 0)
    627.     write_byte(TE_EXPLOSION)
    628.     engfunc(EngFunc_WriteCoord, StartOrigin[0])
    629.     engfunc(EngFunc_WriteCoord, StartOrigin[1])
    630.     engfunc(EngFunc_WriteCoord, StartOrigin[2])
    631.     write_short(g_CodeNumber)
    632.     write_byte(5)
    633.     write_byte(20)
    634.     write_byte(TE_EXPLFLAG_NOPARTICLES | TE_EXPLFLAG_NOSOUND)
    635.     message_end()
    636.    
    637.     // -- Left
    638.     get_position(id, 100.0, random_float(-10.0, -35.0), WEAPON_ATTACH_U, TargetOrigin[0]); Speed[0] = 150.0
    639.     get_position(id, 100.0, random_float(-10.0, -35.0), WEAPON_ATTACH_U, TargetOrigin[1]); Speed[1] = 180.0
    640.     get_position(id, 100.0, random_float(-10.0, -35.0), WEAPON_ATTACH_U, TargetOrigin[2]); Speed[2] = 210.0
    641.     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
    642.     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
    643.  
    644.     // -- Center
    645.     get_position(id, 100.0, 0.0, WEAPON_ATTACH_U - random_float(5.0, 10.0), TargetOrigin[5]); Speed[5] = 200.0
    646.     get_position(id, 100.0, 0.0, WEAPON_ATTACH_U + random_float(5.0, 10.0), TargetOrigin[6]); Speed[6] = 200.0
    647.    
    648.     // -- Right
    649.     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
    650.     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
    651.     get_position(id, 100.0, random_float(10.0, 35.0), WEAPON_ATTACH_U, TargetOrigin[9]); Speed[9] = 210.0
    652.     get_position(id, 100.0, random_float(10.0, 35.0), WEAPON_ATTACH_U, TargetOrigin[10]); Speed[10] = 240.0
    653.     get_position(id, 100.0, random_float(10.0, 35.0), WEAPON_ATTACH_U, TargetOrigin[11]); Speed[11] = 300.0
    654.  
    655.     for(new i = 0; i < MAX_FIRE; i++)
    656.     {
    657.         // Get Start
    658.         get_position(id, random_float(30.0, 40.0), 0.0, WEAPON_ATTACH_U, StartOrigin)
    659.         Create_Fire(id, StartOrigin, TargetOrigin[i], Speed[i] * 1.0, OffSet)
    660.     }
    661. }
    662.  
    663. public Create_Fire(id, Float:Origin[3], Float:TargetOrigin[3], Float:Speed, Offset)
    664. {
    665.     static Ent; Ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite"))
    666.     if(!pev_valid(Ent)) return
    667.    
    668.     static Float:Velocity[3], Float:MyVel[3]
    669.     pev(id, pev_velocity, MyVel)
    670.  
    671.     // Set info for ent
    672.     set_pev(Ent, pev_movetype, MOVETYPE_FLY)
    673.     set_pev(Ent, pev_rendermode, kRenderTransAdd)
    674.     set_pev(Ent, pev_renderamt, 75.0)
    675.     set_pev(Ent, pev_fuser1, get_gametime() + 0.75) // time remove
    676.     set_pev(Ent, pev_scale, random_float(0.25, 0.75))
    677.     set_pev(Ent, pev_nextthink, halflife_time() + 0.05)
    678.    
    679.     entity_set_string(Ent, EV_SZ_classname, CANNONFIRE_CLASSNAME)
    680.     engfunc(EngFunc_SetModel, Ent, WeaponResources[0])
    681.     set_pev(Ent, pev_mins, Float:{-1.0, -1.0, -1.0})
    682.     set_pev(Ent, pev_maxs, Float:{1.0, 1.0, 1.0})
    683.     set_pev(Ent, pev_origin, Origin)
    684.     set_pev(Ent, pev_gravity, 0.01)
    685.     set_pev(Ent, pev_solid, SOLID_TRIGGER)
    686.     set_pev(Ent, pev_frame, 0.0)
    687.     set_pev(Ent, pev_owner, id)
    688.     set_pev(Ent, pev_iuser4, Offset)
    689.    
    690.     xs_vec_mul_scalar(MyVel, 0.5, MyVel)
    691.     get_speed_vector(Origin, TargetOrigin, Speed, Velocity)
    692.     xs_vec_add(Velocity, MyVel, Velocity)
    693.    
    694.     set_pev(Ent, pev_velocity, Velocity)
    695. }
    696.  
    697. public Make_FireSmoke(id)
    698. {
    699.     static Float:Origin[3]
    700.     get_position(id, WEAPON_ATTACH_F + 8.0, WEAPON_ATTACH_R, WEAPON_ATTACH_U - 14.0, Origin)
    701.    
    702.     message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
    703.     write_byte(TE_EXPLOSION)
    704.     engfunc(EngFunc_WriteCoord, Origin[0])
    705.     engfunc(EngFunc_WriteCoord, Origin[1])
    706.     engfunc(EngFunc_WriteCoord, Origin[2])
    707.     write_short(g_SmokePuff_SprId)
    708.     write_byte(5)
    709.     write_byte(15)
    710.     write_byte(14)
    711.     message_end()
    712. }
    713.  
    714. public Check_RadiusDamage(id)
    715. {
    716.     static Victim; Victim = -1
    717.     static Float:Origin[3]; pev(id, pev_origin, Origin)
    718.     static Float:Speed
    719.     static Float:Target[3]
    720.  
    721.     while((Victim = find_ent_in_sphere(Victim, Origin, float(RADIUS))) != 0)
    722.     {
    723.         if(Victim == id)
    724.             continue
    725.         if(!is_alive(Victim))
    726.             continue
    727.         pev(Victim, pev_origin, Target)
    728.         if(!is_in_viewcone(id, Target, 1))
    729.             continue
    730.  
    731.         if(cs_get_user_team(id) != cs_get_user_team(Victim))
    732.         {
    733.             Speed = float(RADIUS) - entity_range(id, Victim)
    734.             hook_ent2(Victim, Origin, Speed, 10.0 , 2)
    735.         }
    736.     }
    737. }
    738.  
    739. public Create_FakeAttack(id)
    740. {
    741.     static Ent; Ent = fm_get_user_weapon_entity(id, CSW_KNIFE)
    742.     if(!pev_valid(Ent)) return
    743.    
    744.     Set_BitVar(g_InTempingAttack, id)
    745.     ExecuteHamB(Ham_Weapon_PrimaryAttack, Ent)
    746.    
    747.     // Set Real Attack Anim
    748.     static iAnimDesired,  szAnimation[64]
    749.  
    750.     formatex(szAnimation, charsmax(szAnimation), (pev(id, pev_flags) & FL_DUCKING) ? "crouch_shoot_%s" : "ref_shoot_%s", WEAPON_ANIMEXT)
    751.     if((iAnimDesired = lookup_sequence(id, szAnimation)) == -1)
    752.         iAnimDesired = 0
    753.    
    754.     set_pev(id, pev_sequence, iAnimDesired)
    755.     UnSet_BitVar(g_InTempingAttack, id)
    756. }
    757.  
    758. public Make_Push(id)
    759. {
    760.     static Float:VirtualVec[3]
    761.     VirtualVec[0] = random_float(-5.0, -10.0)
    762.     VirtualVec[1] = random_float(1.0, -1.0)
    763.     VirtualVec[2] = 0.0
    764.    
    765.     set_pev(id, pev_punchangle, VirtualVec)    
    766. }
    767.  
    768. public Update_Ammo2(id, Ammo, BpAmmo)
    769. {
    770.     message_begin(MSG_ONE_UNRELIABLE, g_MsgCurWeapon, _, id)
    771.     write_byte(1)
    772.     write_byte(CSW_CANNON)
    773.     write_byte(Ammo)
    774.     message_end()
    775.    
    776.     message_begin(MSG_ONE_UNRELIABLE, g_MsgAmmoX, _, id)
    777.     write_byte(10)
    778.     write_byte(BpAmmo)
    779.     message_end()
    780.    
    781.     cs_set_user_bpammo(id, CSW_CANNON, BpAmmo)
    782. }
    783.  
    784. stock get_angle_between_vectors(const Float:fV1[3], const Float:fV2[3])
    785. {
    786.     static Float:fA1[3], Float:fA2[3]
    787.     engfunc(EngFunc_VecToAngles, fV1, fA1)
    788.     engfunc(EngFunc_VecToAngles, fV2, fA2)
    789.    
    790.     static iResult; iResult = floatround(fA1[1] - fA2[1])
    791.     iResult = iResult % 360
    792.     iResult = (iResult > 180) ? (iResult - 360) : iResult
    793.    
    794.     return iResult
    795. }
    796.  
    797. stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3])
    798. {
    799.     new_velocity[0] = origin2[0] - origin1[0]
    800.     new_velocity[1] = origin2[1] - origin1[1]
    801.     new_velocity[2] = origin2[2] - origin1[2]
    802.     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]))
    803.     new_velocity[0] *= num
    804.     new_velocity[1] *= num
    805.     new_velocity[2] *= num
    806.    
    807.     return 1;
    808. }
    809.  
    810. stock set_weapons_timeidle(id, WeaponId ,Float:TimeIdle)
    811. {
    812.     static entwpn; entwpn = fm_get_user_weapon_entity(id, WeaponId)
    813.     if(!pev_valid(entwpn))
    814.         return
    815.        
    816.     set_pdata_float(entwpn, 46, TimeIdle, 4)
    817.     set_pdata_float(entwpn, 47, TimeIdle, 4)
    818.     set_pdata_float(entwpn, 48, TimeIdle + 0.5, 4)
    819. }
    820.  
    821. stock set_player_nextattack(id, Float:nexttime)
    822. {
    823.     set_pdata_float(id, 83, nexttime, 5)
    824. }
    825.  
    826. stock set_weapon_anim(id, anim)
    827. {
    828.     set_pev(id, pev_weaponanim, anim)
    829.    
    830.     message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, {0, 0, 0}, id)
    831.     write_byte(anim)
    832.     write_byte(pev(id, pev_body))
    833.     message_end()
    834. }
    835.  
    836. stock get_position(id,Float:forw, Float:right, Float:up, Float:vStart[])
    837. {
    838.     static Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]
    839.    
    840.     pev(id, pev_origin, vOrigin)
    841.     pev(id, pev_view_ofs,vUp) //for player
    842.     xs_vec_add(vOrigin,vUp,vOrigin)
    843.     pev(id, pev_v_angle, vAngle) // if normal entity ,use pev_angles
    844.    
    845.     angle_vector(vAngle,ANGLEVECTOR_FORWARD,vForward) //or use EngFunc_AngleVectors
    846.     angle_vector(vAngle,ANGLEVECTOR_RIGHT,vRight)
    847.     angle_vector(vAngle,ANGLEVECTOR_UP,vUp)
    848.    
    849.     vStart[0] = vOrigin[0] + vForward[0] * forw + vRight[0] * right + vUp[0] * up
    850.     vStart[1] = vOrigin[1] + vForward[1] * forw + vRight[1] * right + vUp[1] * up
    851.     vStart[2] = vOrigin[2] + vForward[2] * forw + vRight[2] * right + vUp[2] * up
    852. }
    853.  
    854. stock hook_ent2(ent, Float:VicOrigin[3], Float:speed, Float:multi, type)
    855. {
    856.     static Float:fl_Velocity[3]
    857.     static Float:EntOrigin[3]
    858.     static Float:EntVelocity[3]
    859.    
    860.     pev(ent, pev_velocity, EntVelocity)
    861.     pev(ent, pev_origin, EntOrigin)
    862.     static Float:distance_f
    863.     distance_f = get_distance_f(EntOrigin, VicOrigin)
    864.    
    865.     static Float:fl_Time; fl_Time = distance_f / speed
    866.     static Float:fl_Time2; fl_Time2 = distance_f / (speed * multi)
    867.    
    868.     if(type == 1)
    869.     {
    870.         fl_Velocity[0] = ((VicOrigin[0] - EntOrigin[0]) / fl_Time2) * 1.5
    871.         fl_Velocity[1] = ((VicOrigin[1] - EntOrigin[1]) / fl_Time2) * 1.5
    872.         fl_Velocity[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time       
    873.     } else if(type == 2) {
    874.         fl_Velocity[0] = ((EntOrigin[0] - VicOrigin[0]) / fl_Time2) * 1.5
    875.         fl_Velocity[1] = ((EntOrigin[1] - VicOrigin[1]) / fl_Time2) * 1.5
    876.         fl_Velocity[2] = (EntOrigin[2] - VicOrigin[2]) / fl_Time
    877.     }
    878.  
    879.     xs_vec_add(EntVelocity, fl_Velocity, fl_Velocity)
    880.     set_pev(ent, pev_velocity, fl_Velocity)
    881. }
    882.  
    883. /* ===============================
    884. ------------- SAFETY -------------
    885. =================================*/
    886. public Register_SafetyFunc()
    887. {
    888.     register_event("CurWeapon", "Safety_CurWeapon", "be", "1=1")
    889.    
    890.     RegisterHam(Ham_Spawn, "player", "fw_Safety_Spawn_Post", 1)
    891.     RegisterHam(Ham_Killed, "player", "fw_Safety_Killed_Post", 1)
    892. }
    893.  
    894. public Register_SafetyFuncBot(id)
    895. {
    896.     RegisterHamFromEntity(Ham_Spawn, id, "fw_Safety_Spawn_Post", 1)
    897.     RegisterHamFromEntity(Ham_Killed, id, "fw_Safety_Killed_Post", 1)
    898. }
    899.  
    900. public Safety_Connected(id)
    901. {
    902.     Set_BitVar(g_IsConnected, id)
    903.     UnSet_BitVar(g_IsAlive, id)
    904.    
    905.     g_PlayerWeapon[id] = 0
    906. }
    907.  
    908. public Safety_Disconnected(id)
    909. {
    910.     UnSet_BitVar(g_IsConnected, id)
    911.     UnSet_BitVar(g_IsAlive, id)
    912.    
    913.     g_PlayerWeapon[id] = 0
    914. }
    915.  
    916. public Safety_CurWeapon(id)
    917. {
    918.     if(!is_alive(id))
    919.         return
    920.        
    921.     static CSW; CSW = read_data(2)
    922.     if(g_PlayerWeapon[id] != CSW) g_PlayerWeapon[id] = CSW
    923. }
    924.  
    925. public fw_Safety_Spawn_Post(id)
    926. {
    927.     if(!is_user_alive(id))
    928.         return
    929.        
    930.     Set_BitVar(g_IsAlive, id)
    931. }
    932.  
    933. public fw_Safety_Killed_Post(id)
    934. {
    935.     UnSet_BitVar(g_IsAlive, id)
    936. }
    937.  
    938. public is_connected(id)
    939. {
    940.     if(!(1 <= id <= 32))
    941.         return 0
    942.     if(!Get_BitVar(g_IsConnected, id))
    943.         return 0
    944.  
    945.     return 1
    946. }
    947.  
    948. public is_alive(id)
    949. {
    950.     if(!is_connected(id))
    951.         return 0
    952.     if(!Get_BitVar(g_IsAlive, id))
    953.         return 0
    954.        
    955.     return 1
    956. }
    957.  
    958. public get_player_weapon(id)
    959. {
    960.     if(!is_alive(id))
    961.         return 0
    962.    
    963.     return g_PlayerWeapon[id]
    964. }


Here Test it
Nobody Is That Busy If They Make Time :roll:

czirimbolo
Veteran Member
Veteran Member
Poland
Posts: 598
Joined: 7 years ago
Contact:

#4

Post by czirimbolo » 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
Image

johnnysins2000
Veteran Member
Veteran Member
Paraguay
Posts: 678
Joined: 7 years ago
Location: Paraguay
Contact:

#5

Post by johnnysins2000 » 6 years ago

czirimbolo 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
Ok Tomorrow bro ! I will convert this one
Nobody Is That Busy If They Make Time :roll:

johnnysins2000
Veteran Member
Veteran Member
Paraguay
Posts: 678
Joined: 7 years ago
Location: Paraguay
Contact:

#6

Post by johnnysins2000 » 6 years ago

Air buster From zombie-mod.ru
    1. #include <zombie_escape>
    2.  
    3. #define pDataKey_CustomAmmo 3
    4.  
    5. //Linux extra offsets
    6. #define pData_Player                5
    7. #define pData_Item                4
    8.  
    9. // CWeaponBox
    10. #define pDataKey_WeaponBoxItems            34
    11.  
    12. //CBasePlayerItem
    13. #define pDataKey_iOwner                41
    14. #define pDataKey_iNext                42
    15. #define pDataKey_iId                43
    16.  
    17. //CBasePlayerWeapon
    18. #define pDataKey_flNextPrimaryAttack        46
    19. #define pDataKey_flNextSecondaryAttack        47
    20. #define pDataKey_flNextTimeWeaponIdle        48
    21. #define pDataKey_iPrimaryAmmoType        49
    22. #define pDataKey_iClip                51
    23. #define pDataKey_iInReload            54
    24. #define pDataKey_iSpecialReload            55
    25. #define pDataKey_iState                74
    26.  
    27. //CBaseMonster
    28. #define pDataKey_iLastHitGroup            75
    29. #define pDataKey_flNextAttack            83
    30.  
    31. //CBasePlayer
    32. #define m_flPainShock                           108
    33. #define pDataKey_iPlayerItems            367
    34. #define pDataKey_iActiveItem            373    
    35. #define pDataKey_ibpAmmo            376
    36. #define pDataKey_iPlayerWeaponAnim        492
    37.  
    38. #define PLUGIN "AirBurster"
    39. #define VERSION "1.0"
    40. #define AUTHOR "Chrescoe1 + ZE DEV TEAM"
    41.  
    42. #define WEAPON_KEY                82813
    43. #define Is_CustomItem(%0)            (pev(%0,pev_impulse)==WEAPON_KEY)
    44.  
    45. //Weapon Settings
    46. #define weapon_name    "weapon_m249"
    47. #define weapon_new    "weapon_airburster"
    48.  
    49. #define model_v        "models/dm/v_airburster.mdl"
    50. #define model_p        "models/dm/p_airburster.mdl"
    51. #define model_w        "models/dm/w_airburster.mdl"
    52. #define body_w        0
    53.  
    54. #define weapon_punchangle    0.0
    55. #define weapon_aspeed        0.097
    56.  
    57. #define weapon_ammo        50
    58. #define weapon_bpammo        100
    59.  
    60. #define sound_shot "weapons/airburster_shoot.wav"
    61.  
    62. new const sounds_dump[][]={
    63.     "weapons/airburster_shoot.wav"
    64. };
    65. /*new const precache_dump[][]={
    66.     "sprites/dm_balrog7.txt",
    67.     "sprites/640hud2.spr",
    68.     "sprites/640hud76.spr"
    69. };*/
    70.  
    71. new AllocString_V,AllocString_P;
    72.  
    73. //DM Register Item
    74. new g_iItemID, g_steam;
    75.  
    76. #define DMG_ENTS    4
    77. new const damage_entites[DMG_ENTS][]={"player","info_target","hostage_entity","func_breakable"}
    78. new HamHook:tr_fwds[DMG_ENTS];
    79. 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])
    80. stock trblock_enable(){for(new i=0;i<DMG_ENTS;i++)EnableHamForward(tr_fwds[i]);}
    81. stock trblock_disable(){for(new i=0;i<DMG_ENTS;i++)DisableHamForward(tr_fwds[i]);}
    82. public HookHam_TakeTrace(victim,inflictor,attacker, Float:damage){SetHamParamFloat(3,0.0);return HAM_SUPERCEDE;}
    83.  
    84. #define model_fire    "sprites/ef_aircyclone.spr"
    85. #define classname_fire    "airthrower"
    86.  
    87. new frames;
    88. //AMXX
    89. public plugin_precache(){
    90.     engfunc(EngFunc_PrecacheModel,model_v);
    91.     engfunc(EngFunc_PrecacheModel,model_p);
    92.     engfunc(EngFunc_PrecacheModel,model_w);
    93.     new a=engfunc(EngFunc_PrecacheModel,model_fire);
    94.     frames= engfunc(EngFunc_ModelFrames,a);
    95.     g_steam=engfunc(EngFunc_PrecacheModel,"sprites/ef_aircyclone.spr");
    96.     AllocString_V = engfunc(EngFunc_AllocString, model_v);
    97.     AllocString_P = engfunc(EngFunc_AllocString, model_p);
    98.     new i;
    99.     for(i=0;i<sizeof(sounds_dump);i++)engfunc(EngFunc_PrecacheSound,sounds_dump[i]);
    100.     //for(i=0;i<sizeof(precache_dump);i++)engfunc(EngFunc_PrecacheGeneric,precache_dump[i]);
    101. }
    102. public plugin_init() {
    103.     register_plugin(PLUGIN, VERSION, AUTHOR);
    104.     g_iItemID = ze_register_item("Air Buster", 10)
    105.    
    106.     RegisterHam(Ham_Item_Deploy,weapon_name,"HookHam_Weapon_Deploy",1);
    107.     RegisterHam(Ham_Item_AddToPlayer,weapon_name,"HookHam_Weapon_Add",1);
    108.     RegisterHam(Ham_Item_PostFrame,weapon_name,"HookHam_Weapon_Frame",0);
    109.    
    110.     RegisterHam(Ham_Weapon_Reload,weapon_name,"HookHam_Weapon_Reload",0);
    111.     RegisterHam(Ham_Weapon_WeaponIdle,weapon_name,"HookHam_Weapon_Idle",0);
    112.     RegisterHam(Ham_Weapon_PrimaryAttack,weapon_name,"HookHam_Weapon_PrimaryAttack",0);
    113.    
    114.     RegisterHam(Ham_Spawn,"weaponbox","HookHam_WeaponBox_Spawn",1);
    115.     register_forward(FM_SetModel,"HookFm_SetModel",0);
    116.     register_forward(FM_UpdateClientData,"HookFm_UpdateClientData",1);
    117.    
    118.     register_think(classname_fire, "Flame_Think");
    119.     register_touch(classname_fire,"*","Flame_Touch");
    120.    
    121.     register_clcmd(weapon_new,"hook_item");
    122.     trace_register();
    123.     // Add your code here...
    124. }
    125. public plugin_natives ()
    126. {
    127.     register_native("priveleges_adm_buster", "native_give_weapon_add", 1)
    128. }
    129.  
    130. public native_give_weapon_add(id)
    131.     airbooster_items(id)
    132.  
    133. //Cl Cmds
    134. public hook_item(id){
    135.     engclient_cmd(id,weapon_name);
    136.     return PLUGIN_HANDLED;
    137. }
    138.  
    139. public ze_select_item_pre(id, itemid)
    140. {
    141.     // This not our item?
    142.     if (itemid != g_iItemID)
    143.         return ZE_ITEM_AVAILABLE
    144.    
    145.     // Available for Humans only, So don't show it for zombies
    146.     if (ze_is_user_zombie(id))
    147.         return ZE_ITEM_DONT_SHOW
    148.    
    149.     // Finally return that it's available
    150.     return ZE_ITEM_AVAILABLE
    151. }
    152.  
    153. public ze_select_item_post(id, itemid)
    154. {
    155.     // This is not our item, Block it here and don't execute the blew code
    156.     if (itemid != g_iItemID)
    157.         return
    158.    
    159.     airbooster_items(id)
    160. }
    161.  
    162. public airbooster_items(id)
    163. {
    164.         UTIL_DropWeapon(id,1);
    165.         new weapon=make_weapon();if(weapon<=0) return;
    166.         if(!ExecuteHamB(Ham_AddPlayerItem, id, weapon)) {engfunc(EngFunc_RemoveEntity, weapon);return;}
    167.         ExecuteHam(Ham_Item_AttachToPlayer,weapon, id);
    168.         new ammotype = pDataKey_ibpAmmo +pDataKey_CustomAmmo;
    169.         new ammo=get_pdata_int(id, ammotype,pData_Player);
    170.         if(ammo< weapon_bpammo)set_pdata_int(id, ammotype, weapon_bpammo,pData_Player);
    171.         set_pdata_int(weapon,pDataKey_iClip,weapon_ammo,pData_Item);
    172.         emit_sound(id, CHAN_ITEM, "items/gunpickup2.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
    173.         engclient_cmd(id,weapon_name);
    174. }
    175.  
    176. //Ham hooks
    177. public HookHam_Weapon_Deploy(ent){
    178.     if(!Is_CustomItem(ent))return HAM_IGNORED;
    179.     new id=get_pdata_cbase(ent,pDataKey_iOwner,pData_Item);
    180.     set_pev_string(id, pev_viewmodel2, AllocString_V);
    181.     set_pev_string(id, pev_weaponmodel2, AllocString_P);
    182.     set_pdata_float(ent,pDataKey_flNextPrimaryAttack,1.2,pData_Item);
    183.     set_pdata_float(ent,pDataKey_flNextSecondaryAttack,1.2,pData_Item);
    184.     set_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,1.2,pData_Item);
    185.     Play_WeaponAnim(id,4);
    186.     return HAM_IGNORED;
    187. }
    188. public HookHam_Weapon_Add(ent,id){
    189.     new imp=pev(ent, pev_impulse);
    190.     if(imp==WEAPON_KEY)Weaponlist(id,true),set_pdata_int(id, pDataKey_ibpAmmo +pDataKey_CustomAmmo,pev(ent,pev_iuser1),pData_Player);
    191.     else if(imp==0)Weaponlist(id,false);
    192.     return HAM_IGNORED;
    193. }
    194. public HookHam_Weapon_Frame(ent){
    195.     if(!Is_CustomItem(ent)) return HAM_IGNORED;
    196.     if(get_pdata_int(ent, pDataKey_iInReload,pData_Item)){
    197.         new id = get_pdata_cbase(ent, pDataKey_iOwner,pData_Item);
    198.         new clip,ammotype,ammo,j;
    199.         clip = get_pdata_int(ent, pDataKey_iClip,pData_Item);
    200.         ammotype = pDataKey_ibpAmmo +pDataKey_CustomAmmo;
    201.         ammo = get_pdata_int(id, ammotype,pData_Player);
    202.         j = min(weapon_ammo - clip, ammo);
    203.         set_pdata_int(ent, pDataKey_iClip, clip+j,pData_Item);
    204.         set_pdata_int(id, ammotype, ammo-j,pData_Player);
    205.         set_pdata_int(ent, pDataKey_iInReload,0,pData_Item);
    206.     } else if(get_pdata_int(ent,pDataKey_iClip)<=0){
    207.         new id = get_pdata_cbase(ent, pDataKey_iOwner,pData_Item);
    208.         if(get_pdata_int(id,pDataKey_ibpAmmo+pDataKey_CustomAmmo)>0&&!(pev(id,pev_button)&IN_ATTACK))
    209.             ExecuteHamB(Ham_Weapon_Reload,ent);
    210.     } else if(get_pdata_int(ent,pDataKey_iState,pData_Item)>0){
    211.         new id=get_pdata_cbase(ent, pDataKey_iOwner,pData_Item)
    212.         if(!(pev( id,pev_button)&IN_ATTACK)|| get_pdata_int(ent, pDataKey_iClip,pData_Item)<=0){
    213.             set_pdata_int(ent,pDataKey_iState,0,pData_Item);
    214.             Play_WeaponAnim(id,2);
    215.             set_pdata_float(ent,pDataKey_flNextPrimaryAttack,0.8,pData_Item);
    216.             set_pdata_float(ent,pDataKey_flNextSecondaryAttack,0.8,pData_Item);
    217.             set_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,2.0,pData_Item);
    218.         }
    219.     }
    220.     return HAM_IGNORED;
    221. }
    222. public HookHam_Weapon_Reload(ent){
    223.     if(!Is_CustomItem(ent)) return HAM_IGNORED;
    224.     new clip = get_pdata_int(ent, pDataKey_iClip, pData_Item);
    225.     if(clip >= weapon_ammo) return HAM_SUPERCEDE;
    226.    
    227.     new id = get_pdata_cbase(ent, pDataKey_iOwner, pData_Item);
    228.     if(get_pdata_int(id,pDataKey_ibpAmmo+pDataKey_CustomAmmo,pData_Player)<=0)return HAM_SUPERCEDE;
    229.    
    230.     set_pdata_int(ent, pDataKey_iClip, 0, pData_Item);
    231.     ExecuteHam(Ham_Weapon_Reload, ent);
    232.     set_pdata_int(ent, pDataKey_iClip, clip, pData_Item);
    233.     set_pdata_int(ent, pDataKey_iInReload, 1, pData_Item);
    234.     new Float:time_reload=4.65;
    235.     set_pdata_float(ent,pDataKey_flNextPrimaryAttack,time_reload,pData_Item);
    236.     set_pdata_float(ent,pDataKey_flNextSecondaryAttack,time_reload,pData_Item);
    237.     set_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,time_reload,pData_Item);
    238.     set_pdata_float(id,pDataKey_flNextAttack,time_reload,pData_Player) ;
    239.     Play_WeaponAnim(id,3);
    240.     return HAM_SUPERCEDE;
    241. }
    242. public HookHam_Weapon_Idle(ent){
    243.     if(!Is_CustomItem(ent))return HAM_IGNORED;
    244.     if(get_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,pData_Item)>0.0)return HAM_IGNORED;
    245.     set_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,1.7,pData_Item);
    246.     Play_WeaponAnim(get_pdata_cbase(ent,pDataKey_iOwner,pData_Item),0);
    247.     return HAM_SUPERCEDE;
    248. }
    249. public HookHam_Weapon_PrimaryAttack(ent){
    250.     if(!Is_CustomItem(ent))return HAM_IGNORED;
    251.     new ammo=get_pdata_int(ent,pDataKey_iClip,pData_Item);
    252.     if(ammo<=0){
    253.         ExecuteHam(Ham_Weapon_PlayEmptySound, ent);
    254.         set_pdata_float(ent,pDataKey_flNextPrimaryAttack,weapon_aspeed,pData_Item);
    255.         return HAM_SUPERCEDE;
    256.     }
    257.    
    258.     new id=get_pdata_cbase(ent,pDataKey_iOwner,pData_Item)
    259.     new Float:user_punchangle[3];pev(id,pev_punchangle,user_punchangle)
    260.     new Float:oldidle=get_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,pData_Item);
    261.     new fm_playbackevent=register_forward(FM_PlaybackEvent,"HookFm_PlayBackEvent",false)
    262.     trblock_enable()
    263.    
    264.     ExecuteHam(Ham_Weapon_PrimaryAttack,ent);
    265.    
    266.     trblock_disable()
    267.     unregister_forward(FM_PlaybackEvent,fm_playbackevent,false)
    268.    
    269.     new Float:user_newpunch[3];pev(id,pev_punchangle,user_newpunch)
    270.     user_newpunch[0]=user_punchangle[0]+(user_newpunch[0]-user_punchangle[0])*weapon_punchangle
    271.     user_newpunch[1]=user_punchangle[1]+(user_newpunch[1]-user_punchangle[1])*weapon_punchangle
    272.     user_newpunch[2]=user_punchangle[2]+(user_newpunch[2]-user_punchangle[2])*weapon_punchangle
    273.     set_pev(id,pev_punchangle,user_newpunch)
    274.    
    275.     set_pdata_int(ent,pDataKey_iClip,ammo-1,pData_Item)
    276.    
    277.     if(pev(id,pev_weaponanim)!=1||get_pdata_int(ent,pDataKey_iState,pData_Item)!=1){
    278.         set_pdata_int(ent,pDataKey_iState,1,pData_Item)
    279.         Play_WeaponAnim(id,1);
    280.         set_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,2.1,pData_Item);
    281.     }else if(oldidle<=0.0){
    282.         set_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,2.1,pData_Item);
    283.         Play_WeaponAnim(id,1);
    284.     }else set_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,oldidle,pData_Item);
    285.    
    286.     emit_sound(id, CHAN_WEAPON,sound_shot,VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
    287.    
    288.     set_pdata_float(ent,pDataKey_flNextPrimaryAttack,weapon_aspeed,pData_Item)
    289.    
    290.    
    291.     //Create grnaede...
    292.     new Float:Origin[3];pev(id,pev_origin,Origin);
    293.     new Float:vOfs[3];pev(id,pev_view_ofs,vOfs);
    294.     Origin[0]+=vOfs[0];
    295.     Origin[1]+=vOfs[1];
    296.     Origin[2]+=vOfs[2];
    297.    
    298.     new Float:vAngle[3];pev(id,pev_v_angle,vAngle);
    299.     new Float:Vec[3];velocity_by_aim(id,1,Vec);
    300.     vAngle[0]=-vAngle[0];
    301.    
    302.     new Float:FireOrigin[3]
    303.     FireOrigin[0]=Vec[0]*25.0+Origin[0];
    304.     FireOrigin[1]=Vec[1]*25.0+Origin[1];
    305.     FireOrigin[2]=Vec[2]*25.0+Origin[2];
    306.     Vec[0]*=500.0;
    307.     Vec[1]*=500.0;
    308.     Vec[2]*=500.0;
    309.        
    310.     new tr=create_tr2();
    311.     engfunc(EngFunc_TraceLine,Origin,FireOrigin,IGNORE_MONSTERS,id,tr);
    312.     get_tr2(tr, TR_vecEndPos, FireOrigin);
    313.     free_tr2(tr);    
    314.        
    315.     static info_target;
    316.     if(!info_target)info_target= engfunc(EngFunc_AllocString, "info_target")
    317.    
    318.     new fire=engfunc(EngFunc_CreateNamedEntity,info_target)
    319.     set_pev(fire, pev_classname, classname_fire);
    320.     engfunc(EngFunc_SetModel, fire, model_fire);
    321.     engfunc(EngFunc_SetSize ,fire,Float:{ 0.0, 0.0, 0.0 },Float:{ 0.0, 0.0, 0.0 })
    322.     engfunc(EngFunc_SetOrigin, fire, Origin);
    323.     set_pev(fire, pev_solid, SOLID_TRIGGER);
    324.     set_pev(fire, pev_movetype, MOVETYPE_FLY);
    325.     set_pev(fire, pev_velocity, Vec);
    326.     set_pev(fire, pev_owner, id);
    327.     fm_set_rendering(fire,kRenderFxNone,255,255,255,kRenderTransAdd,255)
    328.     set_pev(fire,pev_scale ,0.01)
    329.     set_pev (fire,pev_nextthink,get_gametime()+0.06);
    330.     return HAM_SUPERCEDE
    331. }
    332. public HookHam_WeaponBox_Spawn(ent)state SetModel: Enabled;
    333. //Fakemeta
    334. public HookFm_SetModel(const ent,const str[]) <SetModel: Enabled>{
    335.     state SetModel: Disabled;
    336.     if(!ent||!pev_valid(ent))return FMRES_HANDLED;
    337.     static i, classname[32], item; pev(ent, pev_classname, classname, 31);
    338.     if(!equal(classname, "weaponbox")) return FMRES_IGNORED;
    339.     for(i = 0; i < 6; i++) {
    340.         item = get_pdata_cbase(ent, pDataKey_WeaponBoxItems + i, pData_Item);
    341.         if(item > 0 && Is_CustomItem(item)) {
    342.             engfunc(EngFunc_SetModel, ent, model_w);
    343.             set_pev(ent,pev_body,body_w);
    344.             static owner;owner=pev(ent,pev_owner);
    345.             if(1<=owner<=32)
    346.                 set_pev(item,pev_iuser1,get_pdata_int(owner, pDataKey_ibpAmmo +pDataKey_CustomAmmo,pData_Player)),
    347.                 set_pdata_int(owner, pDataKey_ibpAmmo +pDataKey_CustomAmmo,0,pData_Player);
    348.             return FMRES_SUPERCEDE;
    349.         }
    350.     }
    351.     return FMRES_IGNORED;
    352. }
    353. public HookFm_SetModel() <SetModel: Disabled> { return FMRES_IGNORED;}
    354. public HookFm_SetModel() <> { return FMRES_IGNORED;}
    355. public HookFm_PlayBackEvent()return FMRES_SUPERCEDE;
    356. public HookFm_UpdateClientData(const id,const SendWeapons,const CD_Handle){
    357.     static item;item=get_pdata_cbase(id, pDataKey_iActiveItem,pData_Player);
    358.     if(item<=0||!Is_CustomItem(item))return FMRES_IGNORED;
    359.     set_cd(CD_Handle, CD_flNextAttack,99999.0);
    360.     return FMRES_HANDLED;
    361. }
    362. //Stocks
    363. stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) {
    364.     new Float:RenderColor[3];
    365.     RenderColor[0] = float(r);
    366.     RenderColor[1] = float(g);
    367.     RenderColor[2] = float(b);
    368.  
    369.     set_pev(entity, pev_renderfx, fx);
    370.     set_pev(entity, pev_rendercolor, RenderColor);
    371.     set_pev(entity, pev_rendermode, render);
    372.     set_pev(entity, pev_renderamt, float(amount));
    373.  
    374.     return 1;
    375. }
    376. stock make_weapon(){
    377.     new ent;
    378.     static g_AllocString_E;
    379.     if(g_AllocString_E||(g_AllocString_E=engfunc(EngFunc_AllocString,weapon_name)))
    380.         ent = engfunc(EngFunc_CreateNamedEntity, g_AllocString_E);
    381.     else return -1;
    382.     if(ent <= 0) return -1;
    383.     set_pev(ent, pev_spawnflags, SF_NORESPAWN);
    384.     set_pev(ent, pev_impulse, WEAPON_KEY);
    385.     ExecuteHam(Ham_Spawn, ent);
    386.     set_pdata_int(ent,pDataKey_iPrimaryAmmoType,15,pData_Item);
    387.     return ent;
    388. }
    389. stock Play_WeaponAnim(const id,const anim){
    390.     set_pev(id, pev_weaponanim,anim);
    391.     message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, id);
    392.     write_byte(anim);
    393.     write_byte(0);
    394.     message_end();
    395. }
    396. //3,    200,-1, -1, 0, 4, 20, 0,    // weapon_m249
    397. stock Weaponlist(const id,const bool:set) {
    398.     static Msg_WeaponList;
    399.     if(!Msg_WeaponList&&!(Msg_WeaponList=get_user_msgid("WeaponList")))return;
    400.     message_begin(MSG_ONE, Msg_WeaponList, {0,0,0}, id);
    401.     if(set==true){
    402.         write_string(weapon_new);
    403.         write_byte(pDataKey_CustomAmmo);
    404.         write_byte(weapon_bpammo);
    405.     }else{
    406.         write_string(weapon_name);
    407.         write_byte(3);
    408.         write_byte(200);
    409.     }
    410.     write_byte(-1);
    411.     write_byte(-1);
    412.     write_byte(0);
    413.     write_byte(4);
    414.     write_byte(20);
    415.     message_end();
    416. }
    417.  
    418. //Visit to AGHL.ru
    419. stock UTIL_DropWeapon(const id,const slot){
    420.     static iEntity; iEntity = get_pdata_cbase(id, (pDataKey_iPlayerItems + slot), pData_Player);
    421.     if(iEntity > 0) {
    422.         static iNext,szWeaponName[32];
    423.         do{
    424.             iNext = get_pdata_cbase(iEntity, pDataKey_iNext, 4);
    425.             if(get_weaponname(get_pdata_int(iEntity, pDataKey_iId, 4), szWeaponName, 31))
    426.                 engclient_cmd(id, "drop", szWeaponName);
    427.         } while(( iEntity = iNext) > 0);
    428.     }
    429. }
    430. //Fire
    431. public Flame_Think(ent){
    432.     new owner=pev(ent,pev_owner);
    433.     if(!is_user_connected(owner)){
    434.         engfunc(EngFunc_RemoveEntity,ent);
    435.         return;
    436.     }
    437.     new Float:fFrame;pev(ent,pev_frame,fFrame);
    438.     new Float:fOrigin[3];pev(ent,pev_origin,fOrigin);
    439.     if(pev(ent,pev_waterlevel)>0||fFrame>=(frames-1.0)){
    440.         /*
    441.         engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, fOrigin, 0);
    442.         write_byte(TE_EXPLOSION);
    443.         engfunc(EngFunc_WriteCoord, fOrigin[0])
    444.         engfunc(EngFunc_WriteCoord, fOrigin[1])
    445.         engfunc(EngFunc_WriteCoord, fOrigin[2])
    446.         write_short(g_steam); // sprite
    447.         write_byte(random_num(1,6)); // scale in 0.1
    448.         write_byte(random_num(10,30)); // framerate
    449.         write_byte(TE_EXPLFLAG_NODLIGHTS|TE_EXPLFLAG_NOSOUND|TE_EXPLFLAG_NOPARTICLES); // flags
    450.         message_end() ;
    451.         */
    452.         engfunc(EngFunc_RemoveEntity, ent);
    453.         return;
    454.     }
    455.     new Float:fScale;pev(ent,pev_scale,fScale);
    456.    
    457.     static mp;if(!mp)mp=get_maxplayers();
    458.     new target;
    459.     while((target = engfunc(EngFunc_FindEntityInSphere, target, fOrigin,35.0))> 0){
    460.         if(target==owner||target==ent)continue
    461.         if(pev(target,pev_takedamage)==DAMAGE_NO)continue
    462.         new solid=pev(target,pev_solid);if(solid==SOLID_NOT||solid==SOLID_TRIGGER)continue
    463.         new Float:Health;pev(target,pev_health,Health);if(Health<=0.0)continue
    464.         if(target<=mp){
    465.             if(!is_user_connected(target)||!ze_is_user_zombie(target))continue;
    466.            
    467.             //new Float:user_pain=get_pdata_float(target,m_flPainShock,5);
    468.            
    469.             //set_pdata_int(target,pDataKey_iLastHitGroup,HIT_GENERIC,pData_Player);
    470.            
    471.             new Float:user_velocity[3];
    472.             pev(target,pev_velocity,user_velocity);
    473.            
    474.             ExecuteHamB(Ham_TakeDamage, target, ent, owner,5.0, DMG_BULLET);
    475.            
    476.             //set_pdata_float(target, m_flPainShock,user_pain,5);
    477.             if(is_user_alive(target)){
    478.                 new Float:vlen=floatsqroot(user_velocity[0]*user_velocity[0]+user_velocity[1]*user_velocity[1]);
    479.                 user_velocity[0]=user_velocity[0]/vlen*floatmax(-60.0,vlen-16.0);
    480.                 user_velocity[1]=user_velocity[1]/vlen*floatmax(-60.0,vlen-16.0);
    481.                 set_pev(target,pev_velocity,user_velocity);
    482.             }
    483.         }else ExecuteHamB(Ham_TakeDamage, target, ent, owner,5.0, DMG_BULLET)
    484.     }
    485.     set_pev(ent,pev_scale,fScale+0.075)
    486.     set_pev(ent,pev_frame,fFrame+1.0)
    487.     set_pev (ent,pev_nextthink,get_gametime()+0.035)
    488. }
    489. public Flame_Touch(ent,touch){
    490.     new owner=pev(ent,pev_owner);
    491.     if(!is_user_connected(owner)){
    492.         engfunc(EngFunc_RemoveEntity,ent);
    493.         return;
    494.     }
    495.     if(touch>0&&pev_valid(touch)){
    496.         static mp;if(!mp)mp=get_maxplayers();
    497.         if(touch<=mp){
    498.             if(!is_user_connected(touch)||!ze_is_user_zombie(touch))return;
    499.            
    500.             //set_pdata_int(touch,pDataKey_iLastHitGroup,HIT_GENERIC,pData_Player);
    501.             //new Float:user_pain=get_pdata_float(touch,m_flPainShock,5);
    502.            
    503.             new Float:user_velocity[3];
    504.             pev(touch,pev_velocity,user_velocity);
    505.            
    506.             ExecuteHamB(Ham_TakeDamage, touch, ent, owner,75.0, DMG_BULLET);
    507.            
    508.             //set_pdata_float(touch, m_flPainShock,user_pain,5);
    509.            
    510.             if(is_user_alive(touch)){
    511.                 new Float:vlen=floatsqroot(user_velocity[0]*user_velocity[0]+user_velocity[1]*user_velocity[1]);
    512.                 user_velocity[0]=user_velocity[0]/vlen*floatmax(-16.0,vlen-16.0);
    513.                 user_velocity[1]=user_velocity[1]/vlen*floatmax(-16.0,vlen-16.0);
    514.                 set_pev(touch,pev_velocity,user_velocity);
    515.             }
    516.         }else ExecuteHamB(Ham_TakeDamage, touch, ent,owner,75.0, DMG_BULLET);
    517.     }
    518.  
    519.     new Float:fOrigin[3];pev(ent,pev_origin,fOrigin)
    520.     engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, fOrigin, 0);
    521.     write_byte(TE_EXPLOSION);
    522.     engfunc(EngFunc_WriteCoord, fOrigin[0])
    523.     engfunc(EngFunc_WriteCoord, fOrigin[1])
    524.     engfunc(EngFunc_WriteCoord, fOrigin[2])
    525.     write_short(g_steam); // sprite
    526.     write_byte(random_num(1,6)); // scale in 0.1
    527.     write_byte(random_num(10,30)); // framerate
    528.     write_byte(TE_EXPLFLAG_NODLIGHTS|TE_EXPLFLAG_NOSOUND|TE_EXPLFLAG_NOPARTICLES); // flags
    529.     message_end() ;
    530.            
    531.     engfunc(EngFunc_RemoveEntity, ent)
    532. }


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 :roll:

User avatar
Raheem
Mod Developer
Mod Developer
Posts: 2214
Joined: 7 years ago
Contact:

#7

Post by Raheem » 6 years ago

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

johnnysins2000
Veteran Member
Veteran Member
Paraguay
Posts: 678
Joined: 7 years ago
Location: Paraguay
Contact:

#8

Post by johnnysins2000 » 6 years ago

Raheem wrote: 6 years ago Johnny, As you have time so test the plugin before post so it will be better.
Ok I will come Tonight On Pc again to test this
Nobody Is That Busy If They Make Time :roll:

czirimbolo
Veteran Member
Veteran Member
Poland
Posts: 598
Joined: 7 years ago
Contact:

#9

Post by czirimbolo » 6 years ago

It's not working, I see this gun in weapons menu, buy it and nothing happens..
Image

johnnysins2000
Veteran Member
Veteran Member
Paraguay
Posts: 678
Joined: 7 years ago
Location: Paraguay
Contact:

#10

Post by johnnysins2000 » 6 years ago

czirimbolo wrote: 6 years ago It's not working, I see this gun in weapons menu, buy it and nothing happens..
I will fix it wait
Nobody Is That Busy If They Make Time :roll:

johnnysins2000
Veteran Member
Veteran Member
Paraguay
Posts: 678
Joined: 7 years ago
Location: Paraguay
Contact:

#11

Post by johnnysins2000 » 6 years ago

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 :roll:

czirimbolo
Veteran Member
Veteran Member
Poland
Posts: 598
Joined: 7 years ago
Contact:

#12

Post by czirimbolo » 6 years ago

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
Image

johnnysins2000
Veteran Member
Veteran Member
Paraguay
Posts: 678
Joined: 7 years ago
Location: Paraguay
Contact:

#13

Post by johnnysins2000 » 6 years ago

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
Nobody Is That Busy If They Make Time :roll:

johnnysins2000
Veteran Member
Veteran Member
Paraguay
Posts: 678
Joined: 7 years ago
Location: Paraguay
Contact:

#14

Post by johnnysins2000 » 6 years ago

Ok done the thing u wanted i have it and i have tested it!


Code Updated :)
Nobody Is That Busy If They Make Time :roll:

czirimbolo
Veteran Member
Veteran Member
Poland
Posts: 598
Joined: 7 years ago
Contact:

#15

Post by czirimbolo » 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 :)
Image

User avatar
Raheem
Mod Developer
Mod Developer
Posts: 2214
Joined: 7 years ago
Contact:

#16

Post by Raheem » 6 years ago

Marked as solved and don't forget to share it in our extra-item section ;)
He who fails to plan is planning to fail

johnnysins2000
Veteran Member
Veteran Member
Paraguay
Posts: 678
Joined: 7 years ago
Location: Paraguay
Contact:

#17

Post by johnnysins2000 » 6 years ago

czirimbolo 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 :)
#define pDataKey_iClip 51

change this line for more bullets
Nobody Is That Busy If They Make Time :roll:

czirimbolo
Veteran Member
Veteran Member
Poland
Posts: 598
Joined: 7 years ago
Contact:

#18

Post by czirimbolo » 6 years ago

ok, but which sma. file did you convert? the first one or from zombie mod ru?
Image

johnnysins2000
Veteran Member
Veteran Member
Paraguay
Posts: 678
Joined: 7 years ago
Location: Paraguay
Contact:

#19

Post by johnnysins2000 » 6 years ago

czirimbolo wrote: 6 years ago ok, but which sma. file did you convert? the first one or from zombie mod ru?
Zombie-Mod.ru one bro.... I have updated that code
Nobody Is That Busy If They Make Time :roll:

Post Reply

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

Register

Sign in

Who is online

Users browsing this forum: Yandex [Bot] and 5 guests