Double Barrel Shotgun

Double Barrel Shotgun 1.2

Нет прав для скачивания
Код:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <xs>
#include <hl_wpnmod>

#define PLUGIN "dbarrel"
#define VERSION "1.2"
#define AUTHOR "dima_mark7"

// Weapon settings
#define WEAPON_NAME             "weapon_dbarrel"
#define WEAPON_SLOT            2
#define WEAPON_POSITION            1
#define WEAPON_PRIMARY_AMMO        "buckshot"
#define WEAPON_PRIMARY_AMMO_MAX        125
#define WEAPON_SECONDARY_AMMO        ""
#define WEAPON_SECONDARY_AMMO_MAX    -1
#define WEAPON_MAX_CLIP            2
#define WEAPON_DEFAULT_AMMO        32
#define WEAPON_FLAGS            0
#define WEAPON_WEIGHT            15
#define WEAPON_DAMAGE            40.0

// Hud
#define WEAPON_HUD_TXT            "sprites/weapon_dbarrel.txt"
#define WEAPON_HUD_AMMO            "sprites/ammo_dbarrel.spr"
#define WEAPON_HUD_SPR            "sprites/weapon_dbarrel.spr"

// Models
#define MODEL_WORLD            "models/w_dbarrel.mdl"
#define MODEL_VIEW            "models/v_dbarrel_hev.mdl"
#define MODEL_PLAYER            "models/p_dbarrel.mdl"

// Sounds
#define SOUND_FIRE            "weapons/dbarrel_shoot.wav"
#define SOUND_DRAW            "weapons/dbarrel_draw.wav"
#define SOUND_RELOAD_1            "weapons/dbarrel_foley1.wav"
#define SOUND_RELOAD_2            "weapons/dbarrel_foley2.wav"
#define SOUND_RELOAD_3            "weapons/dbarrel_foley3.wav"
#define SOUND_RELOAD_4            "weapons/dbarrel_foley4.wav"

// Animation
#define ANIM_EXTENSION            "shotgun"

enum _:dbarrel
{
    DB_IDLE,
    DB_SHOOT_1,
    DB_SHOOT_2,
    DB_SHOOT_3,
    DB_RELOAD,
    DB_DRAW
}

public plugin_precache()
{
    PRECACHE_MODEL(MODEL_VIEW);
    PRECACHE_MODEL(MODEL_WORLD);
    PRECACHE_MODEL(MODEL_PLAYER);
    
    PRECACHE_SOUND(SOUND_FIRE);
    PRECACHE_SOUND(SOUND_DRAW);
    PRECACHE_SOUND(SOUND_RELOAD_1);
    PRECACHE_SOUND(SOUND_RELOAD_2);
    PRECACHE_SOUND(SOUND_RELOAD_3);
    PRECACHE_SOUND(SOUND_RELOAD_4);

    PRECACHE_GENERIC(WEAPON_HUD_TXT);
    PRECACHE_GENERIC(WEAPON_HUD_SPR);
    PRECACHE_GENERIC(WEAPON_HUD_AMMO);
}    

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    new idbarrel = wpnmod_register_weapon
    (
        WEAPON_NAME,
        WEAPON_SLOT,
        WEAPON_POSITION,
        WEAPON_PRIMARY_AMMO,
        WEAPON_PRIMARY_AMMO_MAX,
        WEAPON_SECONDARY_AMMO,
        WEAPON_SECONDARY_AMMO_MAX,
        WEAPON_MAX_CLIP,
        WEAPON_FLAGS,
        WEAPON_WEIGHT
    );
    
    wpnmod_register_weapon_forward(idbarrel, Fwd_Wpn_Spawn, "dbarrel_spawn");
    wpnmod_register_weapon_forward(idbarrel, Fwd_Wpn_Deploy, "dbarrel_deploy");
    wpnmod_register_weapon_forward(idbarrel, Fwd_Wpn_Idle, "dbarrel_idle");
    wpnmod_register_weapon_forward(idbarrel, Fwd_Wpn_PrimaryAttack, "dbarrel_primaryattack");
    wpnmod_register_weapon_forward(idbarrel, Fwd_Wpn_Reload, "dbarrel_reload");
    wpnmod_register_weapon_forward(idbarrel, Fwd_Wpn_Holster, "dbarrel_holster");
}

public dbarrel_spawn(const iItem)
{
    SET_MODEL(iItem, MODEL_WORLD);
    wpnmod_set_offset_int(iItem, Offset_iDefaultAmmo, WEAPON_DEFAULT_AMMO);
}

public dbarrel_deploy(const iItem, const iPlayer, const iClip)
{
    return wpnmod_default_deploy(iItem, MODEL_VIEW, MODEL_PLAYER, DB_DRAW, ANIM_EXTENSION);
}

public dbarrel_holster(const iItem)
{
    wpnmod_set_offset_int(iItem, Offset_iInReload, 0);
}

public dbarrel_idle(const iItem, const iPlayer, const iClip)
{
    wpnmod_reset_empty_sound(iItem);
    
    if (wpnmod_get_offset_float(iItem, Offset_flTimeWeaponIdle) > 0.0)
    {
        return;
    }
    
    wpnmod_send_weapon_anim(iItem, DB_IDLE);
    wpnmod_set_offset_float(iItem, Offset_flTimeWeaponIdle, 1.5);
}

public dbarrel_reload(const iItem, const iPlayer, const iClip, const iAmmo)
{
    if (iAmmo <= 0 || iClip >= WEAPON_MAX_CLIP)
    {
        return;
    }
    
    wpnmod_default_reload(iItem, WEAPON_MAX_CLIP, DB_RELOAD, 1.67);
}

public dbarrel_primaryattack(const iItem, const iPlayer, iClip)
{
    static Float: flZVel;
    static Float: vecAngle[3];
    static Float: vecForward[3];
    static Float: vecVelocity[3];
    static Float: vecPunchangle[3];
    
    if (pev(iPlayer, pev_waterlevel) == 3 || iClip <= 0)
    {
        wpnmod_play_empty_sound(iItem);
        wpnmod_set_offset_float(iItem, Offset_flNextPrimaryAttack, 0.15);
        return;
    }
    
    wpnmod_set_offset_int(iItem, Offset_iClip, iClip -= 1);
    wpnmod_set_offset_int(iPlayer, Offset_iWeaponVolume, LOUD_GUN_VOLUME);
    wpnmod_set_offset_int(iPlayer, Offset_iWeaponFlash, BRIGHT_GUN_FLASH);
    wpnmod_fire_bullets(iPlayer,iPlayer,8,VECTOR_CONE_15DEGREES,3048.0,WEAPON_DAMAGE,DMG_BULLET,8)
    wpnmod_set_offset_float(iItem, Offset_flNextPrimaryAttack, 0.7);
    wpnmod_set_offset_float(iItem, Offset_flTimeWeaponIdle, 7.0);
    
    wpnmod_set_player_anim(iPlayer, PLAYER_ATTACK1);
    wpnmod_send_weapon_anim(iItem, random_num(DB_SHOOT_1, DB_SHOOT_2));

    emit_sound(iPlayer, CHAN_WEAPON, SOUND_FIRE, 0.9, ATTN_NORM, 0, PITCH_NORM);
    
    global_get(glb_v_forward, vecForward);
    
    pev(iPlayer, pev_v_angle, vecAngle);
    pev(iPlayer, pev_velocity, vecVelocity);
    pev(iPlayer, pev_punchangle, vecPunchangle);
    
    xs_vec_add(vecAngle, vecPunchangle, vecPunchangle);
    engfunc(EngFunc_MakeVectors, vecPunchangle);
    
    flZVel = vecVelocity[2];
    
    xs_vec_mul_scalar(vecForward, 35.0, vecPunchangle);
    xs_vec_sub(vecVelocity, vecPunchangle, vecVelocity);
    
    vecPunchangle[2] = 0.0;
    vecVelocity[2] = flZVel;
    
    vecPunchangle[0] = random_float(-2.0, 2.0);
    vecPunchangle[1] = random_float(-2.0, 2.0);
     
    set_pev(iPlayer, pev_velocity, vecVelocity);
    set_pev(iPlayer, pev_punchangle, vecPunchangle);
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/
Назад
Верх