Skocz do zawartości

Nowy szablon forum

mygo.pl

Stworzyliśmy dla Was nowy wygląd forum. Z pewnością znajdziesz rzeczy, które wg Ciebie mogą zostać zmienione - wspomnij o tym w specjalnym wątku.

Czytaj więcej

Jak założyć własną sieć

serwerów CS

Zastanawiasz się nad prowadzeniem własnej sieci serwerów? Przeczytaj podstawowe informacje, na które należy zwrócić uwagę, przy takim projekcie.

Czytaj więcej

Tworzymy spis sieci

dodaj swoją

Dodaj sieć do której należysz, pozwoli to na promocję i budowę ogólnopolskiej bazy sieci CS.

Czytaj więcej

RSSProblem plugin sound fire


MYGO.pl
 Udostępnij

Rekomendowane odpowiedzi

  • RSSy
Hello. I need help. I put this plugin on the server, but you can't hear the sounds fires from the weapons, namely the sounds from Sound_Fire.

Code:

#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <xs>
#include <cstrike>
#include <zombieplague>

enum
{
        anim_idle,
        anim_reload,
        anim_draw,
        anim_shoot1,
        anim_shoot2,
        anim_shoot3
}

#define ENG_NULLENT                -1
#define EV_INT_WEAPONKEY        EV_INT_impulse
#define HK23_WEAPONKEY        700
#define MG3_WEAPONKEY        701
#define M249_WEAPONKEY        702
#define QBB95_WEAPONKEY        702
#define M249EX_WEAPONKEY 703
#define MAX_PLAYERS                            32
const USE_STOPPED = 0
const OFFSET_ACTIVE_ITEM = 373
const OFFSET_WEAPONOWNER = 41
const OFFSET_LINUX = 5
const OFFSET_LINUX_WEAPONS = 4
#define WEAP_LINUX_XTRA_OFF                        4
#define m_fKnown                                44
#define m_flNextPrimaryAttack                        46
#define m_flTimeWeaponIdle                        48
#define m_iClip                                        51
#define m_fInReload                                54
#define PLAYER_LINUX_XTRA_OFF                        5
#define m_flNextAttack                                83
#define MG3_RELOAD_TIME 5.0
#define QBB95_RELOAD_TIME 3.9
#define M249EX_RELOAD_TIME 4.0
const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10",
                        "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550",
                        "weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
                        "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",
                        "weapon_ak47", "weapon_knife", "weapon_p90" }

new const Sound_Fire[][] = { "weapons/hk23-1.wav", "weapons/mg3-1.wav", "weapons/qbb95-1.wav", "weapons/m249ex-1.wav" }
new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 }
new HK23_V_MODEL[64] = "models/v_hk23.mdl"
new HK23_P_MODEL[64] = "models/p_hk23.mdl"
new HK23_W_MODEL[64] = "models/w_hk23.mdl"
new MG3_V_MODEL[64] = "models/v_mg3.mdl"
new MG3_P_MODEL[64] = "models/p_mg3.mdl"
new MG3_W_MODEL[64] = "models/w_mg3.mdl"
new QBB95_V_MODEL[64] = "models/v_qbb95ex.mdl"
new QBB95_P_MODEL[64] = "models/p_qbb95ex.mdl"
new QBB95_W_MODEL[64] = "models/w_qbb95ex.mdl"
new M249EX_V_MODEL[64] = "models/v_m249ex.mdl"
new M249EX_P_MODEL[64] = "models/p_m249ex.mdl"
new M249EX_W_MODEL[64] = "models/w_m249ex.mdl"
new cvar_dmg_hk23, cvar_recoil_hk23, g_itemid_hk23, cvar_spd_hk23, cvar_hk23_ammo, cvar_clip_hk23
new cvar_dmg_mg3, cvar_recoil_mg3, g_itemid_mg3, cvar_clip_mg3, cvar_mg3_ammo
new cvar_dmg_qbb95, cvar_recoil_qbb95, g_itemid_qbb95, cvar_clip_qbb95, cvar_spd_qbb95,  cvar_qbb95_ammo
new cvar_dmg_m249ex, cvar_recoil_m249ex, g_itemid_m249ex, cvar_clip_m249ex, cvar_spd_m249ex,  cvar_m249ex_ammo
new g_has_hk23[33], g_has_mg3[33], g_has_qbb95[33], g_has_m249ex[33], g_MaxPlayers, Float:cl_pushangle[MAX_PLAYERS + 1][3], m_iBlood[2], g_orig_event_m249, g_IsInPrimaryAttack, g_clip_ammo[33], g_mg3_TmpClip[33]

public plugin_init()
{
        register_plugin("[ZP] Extra: New Weapons", "1.0", "Crock")
        register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
        register_event("CurWeapon","CurrentWeapon","be","1=1")
        RegisterHam(Ham_Item_AddToPlayer, "weapon_m249", "fw_Aug_AddToPlayer")
        RegisterHam(Ham_Use, "func_tank", "fw_UseStationary_Post", 1)
        RegisterHam(Ham_Use, "func_tankmortar", "fw_UseStationary_Post", 1)
        RegisterHam(Ham_Use, "func_tankrocket", "fw_UseStationary_Post", 1)
        RegisterHam(Ham_Use, "func_tanklaser", "fw_UseStationary_Post", 1)
        for (new i = 1; i < sizeof WEAPONENTNAMES; i++)
                if (WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES[i], "fw_Item_Deploy_Post", 1)
        RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_m249", "fw_Aug_PrimaryAttack")
        RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_m249", "fw_Aug_PrimaryAttack_Post", 1)
        RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
        RegisterHam(Ham_Item_PostFrame, "weapon_m249", "MG3__ItemPostFrame");
        RegisterHam(Ham_Weapon_Reload, "weapon_m249", "MG3__Reload");
        RegisterHam(Ham_Weapon_Reload, "weapon_m249", "MG3__Reload_Post", 1);
        register_forward(FM_SetModel, "fw_SetModel")
        register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
        register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
       
        cvar_dmg_hk23 = register_cvar("zp_hk23_dmg", "1")
        cvar_recoil_hk23 = register_cvar("zp_hk23_recoil", "0.8")
        cvar_spd_hk23 = register_cvar("zp_hk23_spd", "0.8")
        cvar_clip_hk23 = register_cvar("zp_hk23_clip", "100")
        cvar_hk23_ammo = register_cvar("zp_hk23_ammo", "300")
       
        cvar_dmg_mg3 = register_cvar("zp_mg3_dmg", "1")
        cvar_recoil_mg3 = register_cvar("zp_mg3_recoil", "0.8")
        cvar_clip_mg3 = register_cvar("zp_mg3_clip", "150")
        cvar_mg3_ammo = register_cvar("zp_mg3_ammo", "300")
       
        cvar_dmg_qbb95 = register_cvar("zp_qbb95_dmg", "1")
        cvar_recoil_qbb95 = register_cvar("zp_qbb95_recoil", "0.7")
        cvar_clip_qbb95 = register_cvar("zp_qbb95_clip", "75")
        cvar_spd_qbb95 = register_cvar("zp_qbb95_spd", "0")
        cvar_qbb95_ammo = register_cvar("zp_qbb95_ammo", "140")
       
        cvar_dmg_m249ex = register_cvar("zp_m249ex_dmg", "1")
        cvar_recoil_m249ex = register_cvar("zp_m249ex_recoil", "0.4")
        cvar_clip_m249ex = register_cvar("zp_m249ex_clip", "120")
        cvar_spd_m249ex = register_cvar("zp_m249ex_spd", "0")
        cvar_m249ex_ammo = register_cvar("zp_m249ex_ammo", "140")
       
        g_itemid_hk23 = zp_register_extra_item("[HK23]", 35, ZP_TEAM_HUMAN)
        g_itemid_mg3 = zp_register_extra_item("[MG3]", 50, ZP_TEAM_HUMAN)
        g_itemid_qbb95 = zp_register_extra_item("[QBB95]", 30, ZP_TEAM_HUMAN)
        g_itemid_m249ex = zp_register_extra_item("[m249ex]", 40, ZP_TEAM_HUMAN)
        g_MaxPlayers = get_maxplayers()
}

public plugin_precache()
{
    //precache_sound("weapons/hk23_foley1.wav")
    //precache_sound("weapons/hk23_foley2.wav")
    //precache_sound("weapons/hk23_foley3.wav")
    //precache_sound("weapons/hk23_draw.wav")
    //precache_sound("weapons/mg3_open.wav")
    //precache_sound("weapons/mg3_clipout.wav")
    //precache_sound("weapons/mg3_clipin.wav")
    //precache_sound("weapons/mg3_close.wav")
    //precache_sound("weapons/mg3_cliplock.wav")
    //precache_sound("weapons/qbb95_clipout.wav")
    //precache_sound("weapons/qbb95_clipin.wav")
    //precache_sound("weapons/qbb95_clipon.wav")
    //precache_sound("weapons/qbb95_draw.wav")
    //precache_sound("weapons/m249ex_clipout1.wav")
    //precache_sound("weapons/m249ex_clipout2.wav")
    //precache_sound("weapons/m249ex_clipin1.wav")
    //precache_sound("weapons/m249ex_clipin2.wav")
    //precache_sound("weapons/m249ex_clipin3.wav")
    precache_model(HK23_V_MODEL)
    precache_model(HK23_P_MODEL)
    precache_model(HK23_W_MODEL)
    precache_model(MG3_V_MODEL)
    precache_model(MG3_P_MODEL)
    precache_model(MG3_W_MODEL)
    precache_model(QBB95_V_MODEL)
    precache_model(QBB95_P_MODEL)
    precache_model(QBB95_W_MODEL)
    precache_model(M249EX_V_MODEL)
    precache_model(M249EX_P_MODEL)
    precache_model(M249EX_W_MODEL)
    for(new i = 0; i < sizeof Sound_Fire; i++)
            precache_sound(Sound_Fire[i])       
    m_iBlood[0] = precache_model("sprites/blood.spr")
    m_iBlood[1] = precache_model("sprites/bloodspray.spr")

    register_forward(FM_PrecacheEvent, "fwPrecacheEvent_Post", 1)
}

public zp_user_humanized_post(id)
{
        g_has_hk23[id] = false
        g_has_mg3[id] = false
        g_has_qbb95[id] = false
        g_has_m249ex[id] = false
}

public fwPrecacheEvent_Post(type, const name[])
{
        if (equal("events/m249.sc", name))
        {
                g_orig_event_m249 = get_orig_retval()
                return FMRES_HANDLED
        }

        return FMRES_IGNORED
}

public client_connect(id)
{
        g_has_hk23[id] = false
        g_has_mg3[id] = false
        g_has_qbb95[id] = false
        g_has_m249ex[id] = false
}

public client_disconnect(id)
{
        g_has_hk23[id] = false
        g_has_mg3[id] = false
        g_has_qbb95[id] = false
        g_has_m249ex[id] = false
}

public zp_user_infected_post(id)
{
        if (zp_get_user_zombie(id))
        {
                g_has_hk23[id] = false
                g_has_mg3[id] = false
                g_has_qbb95[id] = false
                g_has_m249ex[id] = false
        }
}

public fw_SetModel(entity, model[])
{
        if(!is_valid_ent(entity))
                return FMRES_IGNORED;
       
        static szClassName[33]
        entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName))
               
        if(!equal(szClassName, "weaponbox"))
                return FMRES_IGNORED;
       
        static iOwner
       
        iOwner = entity_get_edict(entity, EV_ENT_owner)
       
        if(equal(model, "models/w_m249.mdl"))
        {
                static iStoredAugID
               
                iStoredAugID = find_ent_by_owner(ENG_NULLENT, "weapon_m249", entity)
       
                if(!is_valid_ent(iStoredAugID))
                        return FMRES_IGNORED;
       
                if(g_has_hk23[iOwner])
                {
                        entity_set_int(iStoredAugID, EV_INT_WEAPONKEY, HK23_WEAPONKEY)
                       
                        g_has_hk23[iOwner] = false
                       
                        entity_set_model(entity, HK23_W_MODEL)
                       
                        return FMRES_SUPERCEDE;
                }
                else if(g_has_mg3[iOwner])
                {
                        entity_set_int(iStoredAugID, EV_INT_WEAPONKEY, MG3_WEAPONKEY)
                       
                        g_has_mg3[iOwner] = false
                       
                        entity_set_model(entity, MG3_W_MODEL)
                       
                        return FMRES_SUPERCEDE;
                }
                else if(g_has_qbb95[iOwner])
                {
                        entity_set_int(iStoredAugID, EV_INT_WEAPONKEY, QBB95_WEAPONKEY)
                       
                        g_has_qbb95[iOwner] = false
                       
                        entity_set_model(entity, QBB95_W_MODEL)
                       
                        return FMRES_SUPERCEDE;
                }
                else if(g_has_m249ex[iOwner])
                {
                        entity_set_int(iStoredAugID, EV_INT_WEAPONKEY, M249EX_WEAPONKEY)
                       
                        g_has_m249ex[iOwner] = false
                       
                        entity_set_model(entity, M249EX_W_MODEL)
                       
                        return FMRES_SUPERCEDE;
                }
        }
       
        return FMRES_IGNORED;
}

public zp_extra_item_selected(id, itemid)
{
        if(itemid == g_itemid_hk23)
        {
                drop_weapons(id, 1);
                new iWep2 = give_item(id,"weapon_m249")
                if( iWep2 > 0 )
                {
                        cs_set_weapon_ammo( iWep2, get_pcvar_num(cvar_clip_hk23) )
                        cs_set_user_bpammo (id, CSW_M249, get_pcvar_num(cvar_hk23_ammo))
                }
                g_has_hk23[id] = true;
        }
        else if(itemid == g_itemid_mg3)
        {
                drop_weapons(id, 1);
                new iWep2 = give_item(id,"weapon_m249")
                if( iWep2 > 0 )
                {
                        cs_set_weapon_ammo( iWep2, get_pcvar_num(cvar_clip_mg3) )
                        cs_set_user_bpammo (id, CSW_M249, get_pcvar_num(cvar_mg3_ammo))
                }
                g_has_mg3[id] = true;
        }
        else if(itemid == g_itemid_qbb95)
        {
                drop_weapons(id, 1);
                new iWep3 = give_item(id,"weapon_m249")
                if( iWep3 > 0 )
                {
                        cs_set_weapon_ammo( iWep3, get_pcvar_num(cvar_clip_qbb95) )
                        cs_set_user_bpammo (id, CSW_M249, get_pcvar_num(cvar_qbb95_ammo))
                }
                g_has_qbb95[id] = true;
        }
        else if(itemid == g_itemid_m249ex)
        {
                drop_weapons(id, 1);
                new iWep2 = give_item(id,"weapon_m249")
                if( iWep2 > 0 )
                {
                        cs_set_weapon_ammo( iWep2, get_pcvar_num(cvar_clip_m249ex) )
                        cs_set_user_bpammo (id, CSW_M249, get_pcvar_num(cvar_m249ex_ammo))
                }
                g_has_m249ex[id] = true;
        }
}

public fw_Aug_AddToPlayer(Aug, id)
{
        if(!is_valid_ent(Aug) || !is_user_connected(id))
                return HAM_IGNORED;
       
        if(entity_get_int(Aug, EV_INT_WEAPONKEY) == HK23_WEAPONKEY)
        {
                g_has_hk23[id] = true
               
                entity_set_int(Aug, EV_INT_WEAPONKEY, 0)
               
                return HAM_HANDLED;
        }
        else if(entity_get_int(Aug, EV_INT_WEAPONKEY) == MG3_WEAPONKEY)
        {
                g_has_mg3[id] = true
               
                entity_set_int(Aug, EV_INT_WEAPONKEY, 0)
               
                return HAM_HANDLED;
        }
        else if(entity_get_int(Aug, EV_INT_WEAPONKEY) == QBB95_WEAPONKEY)
        {
                g_has_qbb95[id] = true
               
                entity_set_int(Aug, EV_INT_WEAPONKEY, 0)
               
                return HAM_HANDLED;
        }
        else if(entity_get_int(Aug, EV_INT_WEAPONKEY) == M249EX_WEAPONKEY)
        {
                g_has_m249ex[id] = true
               
                entity_set_int(Aug, EV_INT_WEAPONKEY, 0)
               
                return HAM_HANDLED;
        }       
       
        return HAM_IGNORED;
}

public fw_UseStationary_Post(entity, caller, activator, use_type)
{
        if (use_type == USE_STOPPED && is_user_connected(caller))
                replace_weapon_models(caller, get_user_weapon(caller))
}

public fw_Item_Deploy_Post(weapon_ent)
{
        static owner
        owner = fm_cs_get_weapon_ent_owner(weapon_ent)
       
        static weaponid
        weaponid = cs_get_weapon_id(weapon_ent)
       
        replace_weapon_models(owner, weaponid)
}

public CurrentWeapon(id)
{
    replace_weapon_models(id, read_data(2))

    if(read_data(2) != CSW_M249 || !g_has_hk23[id] && !g_has_qbb95[id] && !g_has_m249ex[id])
          return
   
    static Float:iSpeed
    if(g_has_hk23[id])
          iSpeed = get_pcvar_float(cvar_spd_hk23)
    else if(g_has_qbb95[id])
          iSpeed = get_pcvar_float(cvar_spd_qbb95)
    else if(g_has_m249ex[id])
          iSpeed = get_pcvar_float(cvar_spd_m249ex)                 
   
    static weapon[32],Ent
    get_weaponname(read_data(2),weapon,31)
    Ent = find_ent_by_owner(-1,weapon,id)
    if(Ent)
    {
          static Float:Delay, Float:M_Delay
          Delay = get_pdata_float( Ent, 46, 4) * iSpeed
          M_Delay = get_pdata_float( Ent, 47, 4) * iSpeed
          if (Delay > 0.0)
          {
              set_pdata_float(Ent, 46, Delay, 4)
              set_pdata_float(Ent, 47, M_Delay, 4)
          }
    }
}

replace_weapon_models(id, weaponid)
{
        switch (weaponid)
        {
                case CSW_M249:
                {
                        if (zp_get_user_zombie(id) || zp_get_user_survivor(id))
                                return;
                       
                        if(g_has_hk23[id])
                        {
                                set_pev(id, pev_viewmodel2, HK23_V_MODEL)
                                set_pev(id, pev_weaponmodel2, HK23_P_MODEL)
                        }
                        else if(g_has_mg3[id])
                        {
                                set_pev(id, pev_viewmodel2, MG3_V_MODEL)
                                set_pev(id, pev_weaponmodel2, MG3_P_MODEL)
                        }
                        else if(g_has_qbb95[id])
                        {
                                set_pev(id, pev_viewmodel2, QBB95_V_MODEL)
                                set_pev(id, pev_weaponmodel2, QBB95_P_MODEL)
                        }
                        else if(g_has_m249ex[id])
                        {
                                set_pev(id, pev_viewmodel2, M249EX_V_MODEL)
                                set_pev(id, pev_weaponmodel2, M249EX_P_MODEL)
                        }                       
                }
        }
}

public fw_UpdateClientData_Post(Player, SendWeapons, CD_Handle)
{
        if(!is_user_alive(Player) || (get_user_weapon(Player) != CSW_M249 || !g_has_hk23[Player] && !g_has_mg3[Player] && !g_has_qbb95[Player] && !g_has_m249ex[Player]))

                return FMRES_IGNORED
       
        set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001)
        return FMRES_HANDLED
}

public fw_Aug_PrimaryAttack(Weapon)
{
        new Player = get_pdata_cbase(Weapon, 41, 5)
       
        if (!g_has_hk23[Player] && !g_has_mg3[Player] && !g_has_qbb95[Player] && !g_has_m249ex[Player])
                return;
       
        g_IsInPrimaryAttack = 1
        pev(Player,pev_punchangle,cl_pushangle[Player])
       
        g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon)
}

public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
{
        if (eventid != g_orig_event_m249 || !g_IsInPrimaryAttack)
                return FMRES_IGNORED
        if (!(1 <= invoker <= g_MaxPlayers))
                return FMRES_IGNORED

        playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
        return FMRES_SUPERCEDE
}

public fw_Aug_PrimaryAttack_Post(Weapon)
{
        g_IsInPrimaryAttack = 0
        new Player = get_pdata_cbase(Weapon, 41, 5)
       
        if(g_has_hk23[Player])
        {
                new Float:push[3]
                pev(Player,pev_punchangle,push)
                xs_vec_sub(push,cl_pushangle[Player],push)
               
                xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_hk23),push)
                xs_vec_add(push,cl_pushangle[Player],push)
                set_pev(Player,pev_punchangle,push)
               
                if (!g_clip_ammo[Player])
                        return
               
                emit_sound(Player, CHAN_WEAPON, Sound_Fire[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
                UTIL_PlayWeaponAnimation(Player, anim_reload)
       
                make_blood_and_bulletholes(Player)
        }
        else if(g_has_mg3[Player])
        {
                new Float:push[3]
                pev(Player,pev_punchangle,push)
                xs_vec_sub(push,cl_pushangle[Player],push)
               
                xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_mg3),push)
                xs_vec_add(push,cl_pushangle[Player],push)
                set_pev(Player,pev_punchangle,push)
               
                if (!g_clip_ammo[Player])
                        return
               
                emit_sound(Player, CHAN_WEAPON, Sound_Fire[1], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
                UTIL_PlayWeaponAnimation(Player, anim_reload)
       
                make_blood_and_bulletholes(Player)
        }
        else if(g_has_qbb95[Player])
        {
                new Float:push[3]
                pev(Player,pev_punchangle,push)
                xs_vec_sub(push,cl_pushangle[Player],push)
               
                xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_qbb95),push)
                xs_vec_add(push,cl_pushangle[Player],push)
                set_pev(Player,pev_punchangle,push)
               
                if (!g_clip_ammo[Player])
                        return
               
                emit_sound(Player, CHAN_WEAPON, Sound_Fire[2], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

                switch(random_num(0,1))
                {
                case 0:
                  UTIL_PlayWeaponAnimation(Player, anim_reload)
                case 1:
                  UTIL_PlayWeaponAnimation(Player, anim_draw)
                }
       
                make_blood_and_bulletholes(Player)
        }
        else if(g_has_m249ex[Player])
        {
                new Float:push[3]
                pev(Player,pev_punchangle,push)
                xs_vec_sub(push,cl_pushangle[Player],push)
               
                xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_m249ex),push)
                xs_vec_add(push,cl_pushangle[Player],push)
                set_pev(Player,pev_punchangle,push)
               
                if (!g_clip_ammo[Player])
                        return
               
                emit_sound(Player, CHAN_WEAPON, Sound_Fire[3], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

                switch(random_num(0,1))
                {
                case 0:
                  UTIL_PlayWeaponAnimation(Player, anim_reload)
                case 1:
                  UTIL_PlayWeaponAnimation(Player, anim_draw)
                }
       
                make_blood_and_bulletholes(Player)
        }       
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
{
        if (victim != attacker && is_user_connected(attacker))
        {
                if(get_user_weapon(attacker) == CSW_M249)
                {
                        if(g_has_hk23[attacker])
                                SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmg_hk23))
                        else if(g_has_mg3[attacker])
                                SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmg_mg3))
                        else if(g_has_qbb95[attacker])
                                SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmg_qbb95))
                        else if(g_has_m249ex[attacker])
                                SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmg_m249ex))
                }
        }
}

public message_DeathMsg(msg_id, msg_dest, id)
{
        static szTruncatedWeapon[33], iAttacker, iVictim
       
        get_msg_arg_string(4, szTruncatedWeapon, charsmax(szTruncatedWeapon))
       
        iAttacker = get_msg_arg_int(1)
        iVictim = get_msg_arg_int(2)
       
        if(!is_user_connected(iAttacker) || iAttacker == iVictim)
                return PLUGIN_CONTINUE
       
        if(equal(szTruncatedWeapon, "m249") && get_user_weapon(iAttacker) == CSW_M249)
        {
                if(g_has_hk23[iAttacker])
                        set_msg_arg_string(4, "hk23")
                else if(g_has_mg3[iAttacker])
                        set_msg_arg_string(4, "mg3")
                else if(g_has_qbb95[iAttacker])
                        set_msg_arg_string(4, "qbb95")
                else if(g_has_m249ex[iAttacker])
                        set_msg_arg_string(4, "m249ex")                       
        }
       
        return PLUGIN_CONTINUE
}

stock fm_cs_get_current_weapon_ent(id)
{
        return get_pdata_cbase(id, OFFSET_ACTIVE_ITEM, OFFSET_LINUX);
}

stock fm_cs_get_weapon_ent_owner(ent)
{
        return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS);
}

stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
{
        set_pev(Player, pev_weaponanim, Sequence)
       
        message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
        write_byte(Sequence)
        write_byte(pev(Player, pev_body))
        message_end()
}

stock make_blood_and_bulletholes(id)
{
        new aimOrigin[3], target, body
        get_user_origin(id, aimOrigin, 3)
        get_user_aiming(id, target, body)
       
        if(target > 0 && target <= g_MaxPlayers && zp_get_user_zombie(target))
        {
                new Float:fStart[3], Float:fEnd[3], Float:fRes[3], Float:fVel[3]
                pev(id, pev_origin, fStart)
               
                velocity_by_aim(id, 64, fVel)
               
                fStart[0] = float(aimOrigin[0])
                fStart[1] = float(aimOrigin[1])
                fStart[2] = float(aimOrigin[2])
                fEnd[0] = fStart[0]+fVel[0]
                fEnd[1] = fStart[1]+fVel[1]
                fEnd[2] = fStart[2]+fVel[2]
               
                new res
                engfunc(EngFunc_TraceLine, fStart, fEnd, 0, target, res)
                get_tr2(res, TR_vecEndPos, fRes)
               
                message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
                write_byte(TE_BLOODSPRITE)
                write_coord(floatround(fStart[0]))
                write_coord(floatround(fStart[1]))
                write_coord(floatround(fStart[2]))
                write_short( m_iBlood [ 1 ])
                write_short( m_iBlood [ 0 ] )
                write_byte(70)
                write_byte(random_num(1,2))
                message_end()
               
               
        }
        else if(!is_user_connected(target))
        {
                if(target)
                {
                        message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
                        write_byte(TE_DECAL)
                        write_coord(aimOrigin[0])
                        write_coord(aimOrigin[1])
                        write_coord(aimOrigin[2])
                        write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] )
                        write_short(target)
                        message_end()
                }
                else
                {
                        message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
                        write_byte(TE_WORLDDECAL)
                        write_coord(aimOrigin[0])
                        write_coord(aimOrigin[1])
                        write_coord(aimOrigin[2])
                        write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] )
                        message_end()
                }
               
                message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
                write_byte(TE_GUNSHOTDECAL)
                write_coord(aimOrigin[0])
                write_coord(aimOrigin[1])
                write_coord(aimOrigin[2])
                write_short(id)
                write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] )
                message_end()
        }
}

public MG3__ItemPostFrame(weapon_entity)
{
    new id = pev(weapon_entity, pev_owner)
    if (!is_user_connected(id))
          return HAM_IGNORED;

    if (!g_has_mg3[id] && !g_has_qbb95[id] && !g_has_m249ex[id])
          return HAM_IGNORED;
   
    static iClipExtra

    if(g_has_mg3[id])
          iClipExtra = get_pcvar_num(cvar_clip_mg3)
    else if(g_has_qbb95[id])
          iClipExtra = get_pcvar_num(cvar_clip_qbb95)
    else if(g_has_m249ex[id])
          iClipExtra = get_pcvar_num(cvar_clip_m249ex)                 

    new Float:flNextAttack = get_pdata_float(id, m_flNextAttack, PLAYER_LINUX_XTRA_OFF)

    new iBpAmmo = cs_get_user_bpammo(id, CSW_M249);
    new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)

    new fInReload = get_pdata_int(weapon_entity, m_fInReload, WEAP_LINUX_XTRA_OFF)

    if( fInReload && flNextAttack <= 0.0 )
    {
          new j = min(iClipExtra - iClip, iBpAmmo)
   
          set_pdata_int(weapon_entity, m_iClip, iClip + j, WEAP_LINUX_XTRA_OFF)
          cs_set_user_bpammo(id, CSW_M249, iBpAmmo-j);
         
          set_pdata_int(weapon_entity, m_fInReload, 0, WEAP_LINUX_XTRA_OFF)
          fInReload = 0
    }

    return HAM_IGNORED;
}

public MG3__Reload(weapon_entity)
{
    new id = pev(weapon_entity, pev_owner)
    if (!is_user_connected(id))
          return HAM_IGNORED;

    if (!g_has_mg3[id] && !g_has_qbb95[id] && !g_has_m249ex[id])
          return HAM_IGNORED;

    static iClipExtra

    if(g_has_mg3[id])
          iClipExtra = get_pcvar_num(cvar_clip_mg3)
    else if(g_has_qbb95[id])
          iClipExtra = get_pcvar_num(cvar_clip_qbb95)
    else if(g_has_m249ex[id])
          iClipExtra = get_pcvar_num(cvar_clip_m249ex)

    g_mg3_TmpClip[id] = -1;

    new iBpAmmo = cs_get_user_bpammo(id, CSW_M249);
    new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)

    if (iBpAmmo <= 0)
          return HAM_SUPERCEDE;

    if (iClip >= iClipExtra)
          return HAM_SUPERCEDE;


    g_mg3_TmpClip[id] = iClip;

    return HAM_IGNORED;
}

public MG3__Reload_Post(weapon_entity)
{
        new id = pev(weapon_entity, pev_owner)
        if (!is_user_connected(id))
                return HAM_IGNORED;

        if (!g_has_mg3[id] && !g_has_qbb95[id] && !g_has_m249ex[id])
                return HAM_IGNORED;

        if (g_mg3_TmpClip[id] == -1)
                return HAM_IGNORED;

        static Float:iReloadTime
        if(g_has_mg3[id])
                iReloadTime = MG3_RELOAD_TIME
        else if(g_has_qbb95[id])
                iReloadTime = QBB95_RELOAD_TIME
        else if(g_has_m249ex[id])
                iReloadTime = M249EX_RELOAD_TIME

        set_pdata_int(weapon_entity, m_iClip, g_mg3_TmpClip[id], WEAP_LINUX_XTRA_OFF)

        set_pdata_float(weapon_entity, m_flTimeWeaponIdle, iReloadTime, WEAP_LINUX_XTRA_OFF)

        set_pdata_float(id, m_flNextAttack, iReloadTime, PLAYER_LINUX_XTRA_OFF)

        set_pdata_int(weapon_entity, m_fInReload, 1, WEAP_LINUX_XTRA_OFF)

        UTIL_PlayWeaponAnimation(id, 3)

        return HAM_IGNORED;
}

stock drop_weapons(id, dropwhat)
{
    static weapons[32], num, i, weaponid
    num = 0
    get_user_weapons(id, weapons, num)
   
    for (i = 0; i < num; i++)
    {
          weaponid = weapons[i]
         
          if (dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
          {
              static wname[32]
              get_weaponname(weaponid, wname, sizeof wname - 1)
              engclient_cmd(id, "drop", wname)
          }
    }
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/

Przeczytaj cały wpis

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...