AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Help minigun (https://forums.alliedmods.net/showthread.php?t=313949)

M E R T 01-29-2019 09:56

Help minigun
 
Hello guys please help me..

below code how to add minigun weapon?

i don't give "weapon_m249"

i want to give minigun but how to add this code??

end below minigun plugin have.

OciXCrom 01-29-2019 15:46

Re: Help minigun
 
Put your code in [php] or [code] tags in order to make it readable.

M E R T 01-29-2019 16:07

Re: Help minigun
 
This rambo mode code.

Code:

// Credits: Eriurias
#include <amxmodx>
#include <cstrike>
#include <fun>
#include <fakemeta>
#include <hamsandwich>
#include <deathrun_modes>

#pragma semicolon 1

#define PLUGIN "Deathrun Mode: Rambo"
#define VERSION "1.0.0"
#define AUTHOR "Mistrick"

#define MIN_DIFF 8.0
#define MAX_OVERHEAT 200
#define BIG_HEAT 4
#define SMALL_HEAT 2

const XO_CBASEPLAYERWEAPON = 4;
const m_pPlayer = 41;
const m_iClip = 51;

enum (+=100)
{
        TASK_OVERHEAT_TICK = 150
};

enum _:Hooks
{
        Hook_AddToFullPack,
        Hook_CS_Item_CanDrop,
        Hook_Weapon_PrimaryAttack,
        Hook_Spawn,
        Hook_Player_PreThink
};

new HamHook:g_hHooks[Hooks];
new g_bEnabled, g_iModeRambo, g_iCurMode;
new g_iOverHeat[33], Float:g_fOldAngles[33][3];

public plugin_init()
{
        register_plugin(PLUGIN, VERSION, AUTHOR);
       
        DisableHamForward(HamHook:g_hHooks[Hook_CS_Item_CanDrop] = RegisterHam(Ham_CS_Item_CanDrop, "weapon_m249", "Ham_Minigun_CanDrop_Pre", false));
        DisableHamForward(HamHook:g_hHooks[Hook_Weapon_PrimaryAttack] = RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_m249", "Ham_Minigun_PrimaryAttack_Pre", false));
        DisableHamForward(HamHook:g_hHooks[Hook_Spawn] = RegisterHam(Ham_Spawn, "player", "Ham_PlayerSpawn_Post", true));
        DisableHamForward(HamHook:g_hHooks[Hook_Player_PreThink] = RegisterHam(Ham_Player_PreThink, "player", "Ham_Player_PreThink_Pre", false));
       
        register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0");
        register_message(get_user_msgid("CurWeapon"), "Message_CurWeapon");
       
        g_iModeRambo = dr_register_mode
        (
                .Name = "DRM_MODE_RAMBO",
                .Mark = "rambo",
                .RoundDelay = 0,
                .CT_BlockWeapons = 0,
                .TT_BlockWeapons = 1,
                .CT_BlockButtons = 0,
                .TT_BlockButtons = 1,
                .Bhop = 1,
                .Usp = 1,
                .Hide = 0
        );
}
public client_disconnect(id)
{
        remove_task(id + TASK_OVERHEAT_TICK);
}
public Event_NewRound()
{
        DisableHooks();
}
public Ham_PlayerSpawn_Post(id)
{
        if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_T)
        {
                give_item(id, "weapon_m249");
                g_iOverHeat[id] = 0;
                set_task(0.1, "Task_OverHeat_Tick", id + TASK_OVERHEAT_TICK, .flags = "b");
        }
}
public Message_CurWeapon(msg, dest, id)
{
        if(g_iCurMode == g_iModeRambo && get_msg_arg_int(1) && get_msg_arg_int(2) == CSW_M249 && cs_get_user_team(id) == CS_TEAM_T)
        {
                set_msg_arg_int(2, ARG_BYTE, CSW_KNIFE);
                set_msg_arg_int(3, ARG_BYTE, -1);
        }
}
public Ham_Minigun_CanDrop_Pre(weapon)
{
        new player = get_pdata_cbase(weapon, m_pPlayer, XO_CBASEPLAYERWEAPON);
       
        if(cs_get_user_team(player) == CS_TEAM_T)
        {
                SetHamReturnInteger(false);
                return HAM_SUPERCEDE;
        }
        return HAM_IGNORED;
}
public Ham_Minigun_PrimaryAttack_Pre(weapon)
{
        new player = get_pdata_cbase(weapon, m_pPlayer, XO_CBASEPLAYERWEAPON);
       
        if(cs_get_user_team(player) != CS_TEAM_T) return HAM_IGNORED;
       
        cs_set_weapon_ammo(weapon, 100);
       
        new Float:angles[3]; pev(player, pev_angles, angles);
        new Float:diff = get_distance_f(angles, g_fOldAngles[player]);
        g_fOldAngles[player] = angles;
       
        g_iOverHeat[player] += (diff < MIN_DIFF) ? BIG_HEAT : SMALL_HEAT;
       
        SendMessage_BarTime2(player, MAX_OVERHEAT / 10, 100 - g_iOverHeat[player] * 100 / MAX_OVERHEAT);
       
        return HAM_IGNORED;
}
public Task_OverHeat_Tick(id)
{
        id -= TASK_OVERHEAT_TICK;
       
        if(g_iOverHeat[id] > 0)
        {
                g_iOverHeat[id]--;
        }
}
public Ham_Player_PreThink_Pre(id)
{
        if(g_iOverHeat[id] > MAX_OVERHEAT)
        {
                set_pev(id, pev_button, pev(id,pev_button) & ~IN_ATTACK);
        }
}
public FM_AddToFullPack_Post(es, e, ent, host, flags, player, pSet)
{
        if(player && host != ent)
        {
                if(cs_get_user_team(host) == CS_TEAM_T && cs_get_user_team(ent) == CS_TEAM_CT)
                {
                        set_es(es, ES_RenderAmt, false);
                        set_es(es, ES_RenderMode, kRenderTransAlpha);
                }
        }
}
public dr_selected_mode(id, mode)
{
        if(g_iCurMode == g_iModeRambo)
        {
                for(new i = 1; i < 33; i++)
                {
                        remove_task(i + TASK_OVERHEAT_TICK);
                        if(is_user_alive(i)) SendMessage_BarTime2(i, 0, 100);
                }
                DisableHooks();
        }
       
        g_iCurMode = mode;
       
        if(mode == g_iModeRambo)
        {
                EnableHooks();
               
                give_item(id, "weapon_m249");
                g_iOverHeat[id] = 0;
                set_task(0.1, "Task_OverHeat_Tick", id + TASK_OVERHEAT_TICK, .flags = "b");
        }
}
EnableHooks()
{
        g_bEnabled = true;
       
        g_hHooks[Hook_AddToFullPack] = HamHook:register_forward(FM_AddToFullPack, "FM_AddToFullPack_Post", true);
        for(new i = Hook_CS_Item_CanDrop; i < Hooks; i++)
        {
                EnableHamForward(g_hHooks[i]);
        }
}
DisableHooks()
{
        if(g_bEnabled)
        {
                g_bEnabled = false;
               
                unregister_forward(FM_AddToFullPack, _:g_hHooks[Hook_AddToFullPack], true);
                for(new i = Hook_CS_Item_CanDrop; i < Hooks; i++)
                {
                        DisableHamForward(g_hHooks[i]);
                }
        }
}
stock SendMessage_BarTime2(id, duration, startpercent)
{
        static BarTime2; if(!BarTime2) BarTime2 = get_user_msgid("BarTime2");
       
        message_begin(MSG_ONE, BarTime2, .player = id);
        write_short(duration);
        write_short(startpercent);
        message_end();
}


This minigun code:

Code:

#include <amxmodx>
#include <engine>
#include <fakemeta_util>
#include <cstrike>
#include <hamsandwich>
#include <amxmisc>

#define MAX_PLAYERS 32
#define MAX_BLOOD_DISTANCE        64
#define LOADUP_TIME                0.75
#define SHUTDOWN_TIME        1.7
#define SHAKE_FORCE                -5.0 //(must be negative value)
new const GUNSHOT_DECALS[] = {41, 42, 43, 44, 45}        // Gunshot decal list
new Float:cl_pushangle[MAX_PLAYERS + 1][3]
// Plugin information
new const PLUGIN[] = "WPN Minigun"
new const VERSION[] = "1.31"
new const AUTHOR[] = "CLLlAgOB"
// other
new bool:super_p_m249[33], m249, bool:atk2[33], bool:atk1[33],
bool:delay[33],bool:oldCLIP[33], clipp[33],clipstart,
mcost,msg[128],bool:frstCLIP[33],msgtext,g_MaxPlayers,
Float:g_lastShot[33], Float:g_nextSound[33], g_plAction[33],
bool:canfire[33],oneround,only_adminCB,MsgSayText
// Blood
new g_blood
new g_bloodspray
// Models
new P_MODEL[] = "models/wpnmod/m134/p_minigun.mdl"
new V_MODEL[] = "models/wpnmod/m134/v_minigun.mdl"
new W_MODEL[] = "models/wpnmod/m134/w_minigun.mdl"
// Sounds
new m_SOUND[][] = {"wpnmod/minigun/hw_shoot1.wav", "wpnmod/minigun/hw_spin.wav", "wpnmod/minigun/hw_spinup.wav", "wpnmod/minigun/hw_spindown.wav"}
new g_noammo_sounds[][] = {"weapons/dryfire_rifle.wav"}

enum {
        anim_idle,
        anim_idle2,
        anim_gentleidle,
        anim_stillidle,
        anim_draw,
        anim_holster,
        anim_spinup,
        anim_spindown,
        anim_spinidle,
        anim_spinfire,
        anim_spinidledown
}

// Types
enum {
        act_none,
        act_load_up,
        act_run
}

public plugin_init() {
        register_plugin(PLUGIN, VERSION, AUTHOR)
        register_dictionary("minigun.txt")
        MsgSayText = get_user_msgid("SayText")
        clipstart =        register_cvar("amx_ammo_mini","50")
        m249 =                        register_cvar("amx_speed_mini","0.9")
        oneround =                register_cvar("amx_oneround","0")
        mcost =                register_cvar("amx_cost_mini","16000")
        only_adminCB =        register_cvar("amx_only_adm_buy","0")
        register_forward(FM_PlayerPreThink,"PreThink")
        new weapon_name[20], wpn = CSW_M249
        get_weaponname( wpn , weapon_name, charsmax(weapon_name))
        RegisterHam(Ham_Weapon_PrimaryAttack, weapon_name, "fw_primary_attack")
        RegisterHam(Ham_Weapon_PrimaryAttack, weapon_name, "fw_primary_attack_post",1)
        register_forward(FM_StartFrame, "fwd_StartFrame")
        register_forward(FM_EmitSound,"fwd_emitsound")
        register_forward(FM_UpdateClientData, "UpdateClientData_Post", 1)
        register_event("CurWeapon","event_curweapon","be", "1=1")
        register_event("DeathMsg","unminigun","a")
        register_clcmd("say /minigun","buymini")
        register_concmd("amx_minigun_give", "cmdMinigun_give", ADMIN_LEVEL_A, "<@all or name/id> <ammo>")
        register_clcmd("drop","dropcmd")
        msgtext = get_user_msgid("StatusText")
        g_MaxPlayers = get_maxplayers()
        //events
        register_logevent("event_start", 2, "1=Round_Start")
        register_event("TextMsg", "fwEvGameWillRestartIn", "a", "2=#Game_will_restart_in")
        register_event("HLTV", "event_start_freezetime", "a", "1=0", "2=0")
}

public plugin_precache() {
        precache_model(P_MODEL)
        precache_model(V_MODEL)
        precache_model(W_MODEL)
        precache_sound(m_SOUND[0])
        precache_sound(m_SOUND[1])
        precache_sound(m_SOUND[2])
        precache_sound(m_SOUND[3])
        g_blood = precache_model("sprites/blood.spr")
        g_bloodspray = precache_model("sprites/bloodspray.spr")
}
public unminigun(){
        new id = read_data(2)
        if(super_p_m249[id] && !is_user_alive(id)) {
                new Float:Aim[3],Float:origin[3]
                VelocityByAim(id, 64, Aim)
                entity_get_vector(id,EV_VEC_origin,origin)
               
                origin[0] += Aim[0]
                origin[1] += Aim[1]
               
                new minigun = create_entity("info_target")
                entity_set_string(minigun,EV_SZ_classname,"minigun")
                entity_set_model(minigun,W_MODEL)       
               
                entity_set_size(minigun,Float:{-2.0,-2.0,-2.0},Float:{5.0,5.0,5.0})
                entity_set_int(minigun,EV_INT_solid,1)
               
                entity_set_int(minigun,EV_INT_movetype,6)
                entity_set_int(minigun, EV_INT_iuser1, clipp[id])
                entity_set_vector(minigun,EV_VEC_origin,origin)
                super_p_m249[id] = false
                ammo_hud(id,0)
                return PLUGIN_HANDLED
        }
        return PLUGIN_CONTINUE
}

public cmdMinigun_give(id, level, cid) {
        if (!cmd_access(id, level, cid, 3)) {
                return PLUGIN_HANDLED
        }
       
        new arg[32], arg2[8], name2[32], bool:ammo, argument2
        read_argv(1,arg,31)
        read_argv(2,arg2,7)
        argument2 = str_to_num(arg2)
        if(argument2>0) ammo = false
        else argument2 = get_pcvar_num(clipstart)
        if ( equali(arg,"@all") ){
                new plist[32],pnum
                get_players(plist,pnum,"a")
                if (pnum==0)
                        {
                        console_print(id,"[Minigun] This client is invalid")
                        return PLUGIN_HANDLED
                }
                for (new i=0; i<pnum; i++)
                        {
                        give_weapon(plist[i], argument2, ammo)
                        client_print(plist[i], print_chat, "[Minigun] %L", LANG_PLAYER, "MINIGUN_ADMIN_GIVE_ALL",argument2)
                }
        }
        else
        {
                get_user_name(id,name2,31)
                new player = cmd_target(id,arg,7)
                if (!player)
                        {
                        console_print(id,"[Minigun] Give Minigun Failed")
                        return PLUGIN_HANDLED
                }
                new name[32]
                get_user_name(player,name,31)
                give_weapon(player, argument2, ammo)
                client_print(0, print_chat, "[Minigun] %L", LANG_PLAYER,"MINIGUN_ADMIN_GIVE",name,argument2)
                return PLUGIN_HANDLED
        }
        return PLUGIN_HANDLED
}

public buymini(id) {
        if ((!(get_user_flags(id) & ADMIN_IMMUNITY) || !(get_user_flags(id) & ADMIN_RESERVATION)) && get_pcvar_num(only_adminCB)) {
                format(msg,256,"[Minigun] %L", LANG_PLAYER,"MINIGUN_ADMIN_BUY")
                message_begin(MSG_ONE,MsgSayText,{0,0,0},id)
                write_byte(id)
                write_string(msg)
                message_end()
                return PLUGIN_HANDLED
        }
        new money = cs_get_user_money(id)
        new price = get_pcvar_num(mcost)
        if(!is_user_alive(id))
               
                client_print(id, print_chat, "[Minigun] %L", LANG_PLAYER,"MINIGUN_ALIVE")
        else if(super_p_m249[id])
                client_print(id, print_chat, "[Minigun] %L", LANG_PLAYER,"MINIGUN_ALREADY")
        else if(money < price)
                client_print(id, print_chat, "[Minigun] %L", LANG_PLAYER,"MINIGUN_NO_MONEY")
        else{               
                cs_set_user_money(id, money - price) 
                give_weapon(id, 0, 1)
                client_print(id, print_chat, "[Minigun] %L", LANG_PLAYER,"MINIGUN_BUY",price)
        }
        return PLUGIN_HANDLED
}

public dropcmd(id) {
        new weapon = get_user_weapon(id)
        if(super_p_m249[id] && weapon == CSW_M249 && is_user_alive(id)) {
                new Float:Aim[3],Float:origin[3]
                VelocityByAim(id, 64, Aim)
                entity_get_vector(id,EV_VEC_origin,origin)
               
                origin[0] += Aim[0]
                origin[1] += Aim[1]
               
                new minigun = create_entity("info_target")
                entity_set_string(minigun,EV_SZ_classname,"minigun")
                entity_set_model(minigun,W_MODEL)       
               
                entity_set_size(minigun,Float:{-2.0,-2.0,-2.0},Float:{5.0,5.0,5.0})
                entity_set_int(minigun,EV_INT_solid,1)
               
                entity_set_int(minigun,EV_INT_movetype,6)
                entity_set_int(minigun, EV_INT_iuser1, clipp[id])
                entity_set_vector(minigun,EV_VEC_origin,origin)
                super_p_m249[id] = false
                canfire[id] = false
                remowegun(id)
                ammo_hud(id,0)
                g_plAction[id] = false
                return PLUGIN_HANDLED
        }
        return PLUGIN_CONTINUE
}

public pfn_touch(ptr, ptd) {
        if(is_valid_ent(ptr)) {
                new classname[32]
                entity_get_string(ptr,EV_SZ_classname,classname,31)
               
                if(equal(classname, "minigun")) {
                        if(is_valid_ent(ptd)) {
                                new id = ptd
                                if(id > 0 && id < 34) {
                                        if(!super_p_m249[id] && is_user_alive(id)) {
                                                give_weapon(id,entity_get_int(ptr, EV_INT_iuser1), 0)
                                                canfire[id] = true
                                                remove_entity(ptr)
                                        }
                                }
                        }
                }
        }
}

public remove_miniguns() {
        new nextitem  = find_ent_by_class(-1,"minigun")
        while(nextitem) {
                remove_entity(nextitem)
                nextitem = find_ent_by_class(-1,"minigun")
        }
        return PLUGIN_CONTINUE
}
public event_start_freezetime(){
        remove_miniguns()
        static iPlayers[32], iPlayersNum, i
        get_players(iPlayers, iPlayersNum, "a")
       
        if(!get_pcvar_num(only_adminCB)){
                for (i = 0; i < iPlayersNum; ++i){
                        if(!super_p_m249[iPlayers[i]]){
                                set_task(random_float(0.1,1.0),"msghelp",iPlayers[i])
                        }
                }
        }
        if(get_pcvar_num(oneround)){
                for (i = 0; i < iPlayersNum; ++i){
                        if(super_p_m249[iPlayers[i]]){
                                super_p_m249[iPlayers[i]] = false
                                remowegun(iPlayers[i])
                        }
                }
        } else {
                for (i = 0; i < iPlayersNum; ++i){
                        g_plAction[iPlayers[i]] = false
                        canfire[iPlayers[i]] = false
                        frstCLIP[iPlayers[i]] = true       
                        set_task(0.1,"event_curweapon",iPlayers[i])
                        }
        }
}
// remove gun M249 and save all guns
public remowegun(id) {
        new wpnList[32]
        new number,weapname[24]
        get_user_weapons(id,wpnList,number)
        fm_strip_user_weapons(id)
        for (new i = 0;i < number ;i++) {
                if (wpnList[i] != CSW_M249) {
                get_weaponname(wpnList[i], weapname, 23)
                fm_give_item(id,weapname)
                }
        }
}

public msghelp(id){
        client_print(id, print_chat, "[Minigun] %L", LANG_PLAYER,"MINIGUN_FOR_BUY")
        client_print(id, print_chat, "[Minigun] %L", LANG_PLAYER,"MINIGUN_PRICE",get_pcvar_num(mcost))
}

public event_start(){
        static iPlayers[32], iPlayersNum, i
        get_players(iPlayers, iPlayersNum, "a")
        for (i = 0; i < iPlayersNum; ++i)
                canfire[iPlayers[i]] = true
}



public fwEvGameWillRestartIn() {
        static iPlayers[32], iPlayersNum, i
        get_players(iPlayers, iPlayersNum, "a")
        for (i = 0; i < iPlayersNum; ++i)
                super_p_m249[iPlayers[i]] = false
}
public client_connect(id){
        canfire[id]= false
        super_p_m249[id] = false
}

//block sound no ammo in atack
public fwd_emitsound(id, channel, sample[], Float:volume, Float:attn, flag, pitch)
{       
        if(!is_user_connected(id) || !is_user_alive(id))
                return FMRES_IGNORED
        new clip, ammo, weapon = get_user_weapon(id, clip, ammo)
        if(equal(sample, g_noammo_sounds[0]) && super_p_m249[id] && weapon == CSW_M249)
                {
                return FMRES_SUPERCEDE
                }       
        return FMRES_IGNORED
}

//give wpn
public give_weapon(id, ammo, frst){
        super_p_m249[id] = true
        fm_give_item(id,"weapon_m249")
        canfire[id] = true
        clipp[id] = ammo
        frstCLIP[id] = false
        if(frst) frstCLIP[id] = true
       
}

//set models
public event_curweapon(id){
        if(!is_user_alive(id) || !is_user_connected(id) || is_user_bot(id))
                return PLUGIN_CONTINUE               
        new weapon1[32]
        new clip, ammo, weapon = get_user_weapon(id, clip, ammo)
        if((super_p_m249[id]) && (weapon == CSW_M249)){
                entity_set_string(id,EV_SZ_viewmodel,V_MODEL)
                entity_set_string(id,EV_SZ_weaponmodel,P_MODEL)
                new Gun = read_data(2)
                get_weaponname(Gun,weapon1,31)
                new Ent = fm_find_ent_by_owner(-1,weapon1,id)       
                new Float:N_Speed
                if(Ent)
                        {
                        N_Speed = get_pcvar_float(m249)
                        new Float:Delay = get_pdata_float( Ent, 46, 4) * N_Speed       
                        if (Delay > 0.0){
                                set_pdata_float( Ent, 46, Delay, 4)
                        }
                }
                ammo_hud(id, 1)
        }
        else ammo_hud(id, 0)
        if((super_p_m249[id]) && (weapon != CSW_M249)) g_plAction[id] = false
        return PLUGIN_CONTINUE
 }

//play anim
public native_playanim(player,anim)
{
        set_pev(player, pev_weaponanim, anim)
        message_begin(MSG_ONE, SVC_WEAPONANIM, {0, 0, 0}, player)
        write_byte(anim)
        write_byte(pev(player, pev_body))
        message_end()
}

public PreThink(id){
        if(!super_p_m249[id]) return FMRES_HANDLED
        if(!canfire[id]){
                atk1[id] = false
                atk2[id] = false
                return FMRES_HANDLED
        }
        new weapon = get_user_weapon(id)
        if(weapon == CSW_M249){
                new buttons = entity_get_int(id,EV_INT_button)
                if(buttons&IN_ATTACK){
                        fire_mode(id, 0)
                }
                else if(buttons&IN_ATTACK2){
                        fire_mode(id, 1)
                }
                if(g_plAction[id] != act_run){
                                new weaponid, clip, ammo
                                weaponid = get_user_weapon(id, clip, ammo)
                                new ent = get_weapon_ent(id,weaponid)
                                if(frstCLIP[id]){
                                        clipp[id] = get_pcvar_num(clipstart)
                                        frstCLIP[id] = false
                                }
                                oldCLIP[id] = true
                                if(clip > 0 ){
                                        cs_set_weapon_ammo(ent, 0)
                                        cs_set_user_bpammo(id, weaponid,0)
                                }
                        }
                if(g_plAction[id] == act_run){
                        new weaponid, clip, ammo
                        weaponid = get_user_weapon(id, clip, ammo)
                        new ent = get_weapon_ent(id,weaponid)
                        if(oldCLIP[id]){
                                clip = clipp[id]
                                cs_set_weapon_ammo(ent, clip)
                                cs_set_user_bpammo(id, weaponid,0)
                                oldCLIP[id] = false
                        }
                        clipp[id] = clip
                }
        }
        return FMRES_HANDLED
 }

 //marks on hit
 public native_gi_get_gunshot_decal()
{
        return GUNSHOT_DECALS[random_num(0, sizeof(GUNSHOT_DECALS) - 1)]
}

//hit bulet
public testbulet(id){
        // Find target
        new aimOrigin[3], target, body
        get_user_origin(id, aimOrigin, 3)
        get_user_aiming(id, target, body)
       
        if(target > 0 && target < g_MaxPlayers)
        {
                new Float:fStart[3], Float:fEnd[3], Float:fRes[3], Float:fVel[3]
                pev(id, pev_origin, fStart)
               
                // Get ids view direction
                velocity_by_aim(id, MAX_BLOOD_DISTANCE, fVel)
               
                // Calculate position where blood should be displayed
                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]
               
                // Draw traceline from victims origin into ids view direction to find
                // the location on the wall to put some blood on there
                new res
                engfunc(EngFunc_TraceLine, fStart, fEnd, 0, target, res)
                get_tr2(res, TR_vecEndPos, fRes)
                               
                // Show some blood :)
                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(g_bloodspray)
                write_short(g_blood)
                write_byte(70)
                write_byte(random_num(1,2))
                message_end()
               
               
        } else {
                new decal = native_gi_get_gunshot_decal()
               
                // Check if the wall hit is an entity
                if(target)
                {
                        // Put decal on an entity
                        message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
                        write_byte(TE_DECAL)
                        write_coord(aimOrigin[0])
                        write_coord(aimOrigin[1])
                        write_coord(aimOrigin[2])
                        write_byte(decal)
                        write_short(target)
                        message_end()
                } else {
                        // Put decal on "world" (a wall)
                        message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
                        write_byte(TE_WORLDDECAL)
                        write_coord(aimOrigin[0])
                        write_coord(aimOrigin[1])
                        write_coord(aimOrigin[2])
                        write_byte(decal)
                        message_end()
                }
               
                // Show sparcles
                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(decal)
                message_end()
        }
}


//block anim standart wpn
public UpdateClientData_Post( id, sendweapons, cd_handle ){
        if ( !is_user_alive(id) ) return FMRES_IGNORED;
        new weapon = get_user_weapon(id)
        if(weapon == CSW_M249 && super_p_m249[id]) set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001 );     
        return FMRES_HANDLED;
}

// delay play sound and anim
public delaysound(id){
        delay[id] = false
}

// in fire
fire_mode(id, type) {
        static Float:gtime
        gtime = get_gametime()
        g_lastShot[id] = gtime
       
        if(g_nextSound[id] <= gtime && canfire[id]) {
                switch(g_plAction[id]) {
                        case act_none: {
                                native_playanim(id, anim_spinup)
                                emit_sound(id, CHAN_WEAPON, m_SOUND[2], 1.0, ATTN_NORM, 0, PITCH_NORM)
                                g_nextSound[id] = gtime + LOADUP_TIME
                                g_plAction[id] = act_load_up
                        }
                        case act_load_up: {
                                g_nextSound[id] = gtime
                                g_plAction[id] = act_run
                        }
                }
        }
       
        if(g_plAction[id] == act_run) {
                new clip
                get_user_weapon(id, clip)
                if(type == 0 && clipp[id]>0){
                        if(clip == clipp[id]-1){
                                if(clipp[id]!=0){
                                        emsnd(id)
                                }
                                       
                        }
                }
                else {
                        if(!delay[id]) {
                                ammo_hud(id, 1)
                                emit_sound(id, CHAN_WEAPON, m_SOUND[1], 1.0, ATTN_NORM, 0, PITCH_NORM)
                                native_playanim(id, anim_spinidle)
                                set_task(0.1,"delaysound",id)
                                delay[id] = true
                        }
                }
        }
}

//play sounds and set marks and set ammo clip on monitor
public emsnd(id){
        emit_sound(id, CHAN_WEAPON, m_SOUND[0], 1.0, ATTN_NORM, 0, PITCH_NORM)
        native_playanim(id, anim_spinfire)
        testbulet(id)
        ammo_hud(id, 1)
}

//sound and anim
public fwd_StartFrame() {
        static Float:gtime, id
       
        gtime = get_gametime()
       
        for(id = 1; id < g_MaxPlayers; id++) {
                if(g_plAction[id] != act_none) {
                       
                        if((!(pev(id, pev_button) & IN_ATTACK) && g_lastShot[id] + 0.2 < gtime)) {
                                native_playanim(id, anim_spinidledown)
                                emit_sound(id, CHAN_WEAPON, m_SOUND[3], 1.0, ATTN_NORM, 0, PITCH_NORM)
                                g_nextSound[id] = gtime + SHUTDOWN_TIME
                                g_plAction[id] = act_none
                        }
                }
        }
}
// No recoil stuff
public fw_primary_attack(ent)
{

        new id = pev(ent,pev_owner)
        if(super_p_m249[id])
                pev(id,pev_punchangle,cl_pushangle[id])
        return HAM_IGNORED
}

public fw_primary_attack_post(ent)
{
        new id = pev(ent,pev_owner)
        if(super_p_m249[id]){
                new Float:push[3]
                pev(id,pev_punchangle,push)
                xs_vec_mul_scalar(push,0.0,push)
                xs_vec_add(push,cl_pushangle[id],push)
                set_pev(id,pev_punchangle,push)
        }
        return HAM_IGNORED
}
// show ammo clip
public ammo_hud(id, show) {
        new AmmoHud[65]
        if (show) {
                new clip = clipp[id]
                format(AmmoHud, 64, "Ammo: %i", clip)
                message_begin(MSG_ONE, msgtext, {0,0,0}, id)
                write_byte(0)
                write_string(AmmoHud)
                message_end()
       
        }else {
               
                message_begin(MSG_ONE, get_user_msgid("StatusText"), {0,0,0}, id)
                write_byte(0)
                write_string("")
                message_end()
               
        }
       
}
//get weapon id
stock get_weapon_ent(id,wpnid=0,wpnName[]="")
{
        // who knows what wpnName will be
        static newName[24];

        // need to find the name
        if(wpnid) get_weaponname(wpnid,newName,23);

        // go with what we were told
        else formatex(newName,23,"%s",wpnName);

        // prefix it if we need to
        if(!equal(newName,"weapon_",7))
                format(newName,23,"weapon_%s",newName);

        return fm_find_ent_by_owner(get_maxplayers(),newName,id);
}



All times are GMT -4. The time now is 07:32.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.