Thread: Bullet Color
View Single Post
sirerick
Senior Member
Join Date: Jul 2012
Location: Venezuela
Old 03-04-2015 , 18:12   Re: Bullet Color
Reply With Quote #9

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

const USE_STOPPED 
const OFFSET_ACTIVE_ITEM 373 
const OFFSET_WEAPONOWNER 41 
const OFFSET_LINUX 
const OFFSET_LINUX_WEAPONS 

#define WEAP_LINUX_XTRA_OFF        4 
#define PLAYER_LINUX_XTRA_OFF    5 
#define m_flNextAttack                83 
#define m_iClip                    51 
#define m_fInReload                54 
#define m_flTimeWeaponIdle            48 
#define ENG_NULLENT                -1 
#define EV_INT_WEAPONKEY        EV_INT_impulse 
#define M4A1GOLD_WEAPONKEY            67854 
#define MAX_PLAYERS                32 
#define IsValidUser(%1) (1 <= %1 <= g_MaxPlayers) 


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 
g_item_m4a1_goldm_spriteTexture
new g_has_m4a1_gold[33
new 
g_m4a1_gold_TmpClip[33
new 
cvar_m4a1_gold_dmgcvar_m4a1_gold_ammocvar_m4a1_gold_clipcvar_m4a1_gold_spd 

#define M4A1GOLD_RELOAD_TIME     3.0 

new const M4A1GOLD_V_MODEL[] = "models/v_m4a1_gold.mdl" 
new const M4A1GOLD_P_MODEL[] = "models/p_m4a1_gold.mdl" 
new const M4A1GOLD_W_MODEL[] = "models/w_m4a1_gold.mdl" 

public plugin_init() 

    
register_plugin("[ZP] Extra Item: M4A1 Gold""3.0""4e/l"

    
register_message(get_user_msgid("DeathMsg"), "message_DeathMsg"
     
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage"
    
RegisterHam(Ham_Item_AddToPlayer"weapon_m4a1""fw_M4A1GOLD_AddToPlayer"
    
RegisterHam(Ham_Item_PostFrame"weapon_m4a1""M4A1GOLD__ItemPostFrame"); 
    
RegisterHam(Ham_Weapon_Reload"weapon_m4a1""M4A1GOLD__Reload"); 
    
RegisterHam(Ham_Weapon_Reload"weapon_m4a1""M4A1GOLD__Reload_Post"1); 
    
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 
1sizeof WEAPONENTNAMESi++) 
        if (
WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_DeployWEAPONENTNAMES[i], "fw_Item_Deploy_Post"1

    
register_event("CurWeapon","CurrentWeapon","be","1=1"
    
register_event("DeathMsg""Death""a"

        
register_forward(FM_SetModel"fw_SetModel"

    
cvar_m4a1_gold_clip register_cvar("zp_m4a1_gold_clip""35"
        
cvar_m4a1_gold_ammo register_cvar("zp_m4a1_gold_ammo""150"
    
cvar_m4a1_gold_dmg register_cvar("zp_m4a1_gold_dmg""4"
    
cvar_m4a1_gold_spd register_cvar("zp_m4a1_gold_spd""1.0"

    
g_item_m4a1_gold zp_register_extra_item("M4A1 Gold"30ZP_TEAM_HUMAN
    
RegisterHam(Ham_TraceAttack"worldspawn""make_tracer"1)


public 
zp_extra_item_selected(iditemid

    if(
itemid == g_item_m4a1_gold
    {     
        
drop_weapons(id1); 
        new 
iWep1 give_item(id,"weapon_m4a1"
        if( 
iWep1 
        { 
            
cs_set_weapon_ammo(iWep1get_pcvar_num(cvar_m4a1_gold_clip)) 
                        
cs_set_user_bpammo (idCSW_M4A1get_pcvar_num(cvar_m4a1_gold_ammo)) 
        } 
        
g_has_m4a1_gold[id] = true
    } 
}     
public 
plugin_precache() 

    
precache_model(M4A1GOLD_V_MODEL
    
precache_model(M4A1GOLD_P_MODEL
    
precache_model(M4A1GOLD_W_MODEL
    
m_spriteTexture precache_model("sprites/dot.spr")


public 
fw_UseStationary_Post(entitycalleractivatoruse_type

    if (
use_type == USE_STOPPED && is_user_connected(caller)) 
        
replace_weapon_models(callerget_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(ownerweaponid


public 
CurrentWeapon(id

    static 
iWeaponiWeapon read_data(2
     
    
replace_weapon_models(idread_data(2)) 
     
    static 
weapon[32], iEnt 
    get_weaponname
(iWeaponweapon31
    
iEnt find_ent_by_owner(-1weaponid
    if(
iEnt
    { 
        static 
Float:DelayFloat:M_Delay 
        
static Float:iSpeed 
        iSpeed 
0.0 
        
if(iWeapon == CSW_M4A1 && g_has_m4a1_gold[id]) 
            
iSpeed get_pcvar_float(cvar_m4a1_gold_spd

        
Delay get_pdata_float(iEnt464) * iSpeed 
        M_Delay 
get_pdata_float(iEnt474) * iSpeed 
        
if (Delay 0.0
        { 
            
set_pdata_float(iEnt46Delay4
            
set_pdata_float(iEnt47M_Delay4
        } 
    } 


replace_weapon_models(idweaponid

    switch (
weaponid
    { 
        case 
CSW_M4A1
        { 
            if (
zp_get_user_zombie(id) || zp_get_user_survivor(id)) 
                return; 
             
            if(
g_has_m4a1_gold[id]) 
            { 
                
set_pev(idpev_viewmodel2M4A1GOLD_V_MODEL
                
set_pev(idpev_weaponmodel2M4A1GOLD_P_MODEL
            } 
        } 
    } 


public 
client_connect(id

    
g_has_m4a1_gold[id] = false 


public 
client_disconnect(id

    
g_has_m4a1_gold[id] = false 


public 
Death() 

    
g_has_m4a1_gold[read_data(2)] = false 


public 
zp_user_infected_post(id

    if (
zp_get_user_zombie(id)) 
    { 
    
g_has_m4a1_gold[id] = false 
    



public 
fw_TakeDamage(victiminflictorattackerFloat:damage)  
{  
    if (
victim != attacker)  
    {  
    if(
get_user_weapon(attacker) == CSW_M4A1 && g_has_m4a1_gold[attacker])  
    
SetHamParamFloat(4damage get_pcvar_float(cvar_m4a1_gold_dmg))  
    } 


public 
fw_SetModel(entitymodel[]) 

    if(!
is_valid_ent(entity)) 
        return 
FMRES_IGNORED
     
    static 
szClassName[33
    
entity_get_string(entityEV_SZ_classnameszClassNamecharsmax(szClassName)) 
         
    if(!
equal(szClassName"weaponbox")) 
        return 
FMRES_IGNORED
     
    static 
iOwner 
     
    iOwner 
entity_get_edict(entityEV_ENT_owner
     
    if(
equal(model"models/w_m4a1.mdl")) 
    { 
        static 
iStoredSVDID 
         
        iStoredSVDID 
find_ent_by_owner(ENG_NULLENT"weapon_m4a1"entity
     
        if(!
is_valid_ent(iStoredSVDID)) 
            return 
FMRES_IGNORED
     
        if(
g_has_m4a1_gold[iOwner]) 
        { 
            
entity_set_int(iStoredSVDIDEV_INT_WEAPONKEYM4A1GOLD_WEAPONKEY
             
            
g_has_m4a1_gold[iOwner] = false 
             
            entity_set_model
(entityM4A1GOLD_W_MODEL
             
            return 
FMRES_SUPERCEDE
        } 
    } 
     
    return 
FMRES_IGNORED


public 
fw_M4A1GOLD_AddToPlayer(M4A1GOLDid

    if(!
is_valid_ent(M4A1GOLD) || !is_user_connected(id)) 
        return 
HAM_IGNORED
     
    if(
entity_get_int(M4A1GOLDEV_INT_WEAPONKEY) == M4A1GOLD_WEAPONKEY
    { 
        
g_has_m4a1_gold[id] = true 
         
        entity_set_int
(M4A1GOLDEV_INT_WEAPONKEY0
         
        return 
HAM_HANDLED
    } 
     
    return 
HAM_IGNORED


public 
message_DeathMsg(msg_idmsg_destid

    static 
szTruncatedWeapon[33], iAttackeriVictim 
     
    get_msg_arg_string
(4szTruncatedWeaponcharsmax(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"m4a1") && get_user_weapon(iAttacker) == CSW_M4A1
    { 
        if(
g_has_m4a1_gold[iAttacker]) 
            
set_msg_arg_string(4"m4a1 gold"
    } 

    return 
PLUGIN_CONTINUE 


public 
M4A1GOLD__ItemPostFrame(weapon_entity) { 
    new 
id pev(weapon_entitypev_owner
    if (!
is_user_connected(id)) 
        return 
HAM_IGNORED

    if (!
g_has_m4a1_gold[id]) 
        return 
HAM_IGNORED

    new 
Float:flNextAttack get_pdata_float(idm_flNextAttackPLAYER_LINUX_XTRA_OFF

    new 
iBpAmmo cs_get_user_bpammo(idCSW_M4A1); 
    new 
iClip get_pdata_int(weapon_entitym_iClipWEAP_LINUX_XTRA_OFF

    new 
fInReload get_pdata_int(weapon_entitym_fInReloadWEAP_LINUX_XTRA_OFF)  

    if( 
fInReload && flNextAttack <= 0.0 
    { 
        new 
min(get_pcvar_num(cvar_m4a1_gold_clip) - iClipiBpAmmo
     
        
set_pdata_int(weapon_entitym_iClipiClip jWEAP_LINUX_XTRA_OFF
        
cs_set_user_bpammo(idCSW_M4A1iBpAmmo-j); 
         
        
set_pdata_int(weapon_entitym_fInReload0WEAP_LINUX_XTRA_OFF
        
fInReload 
    


    return 
HAM_IGNORED


public 
M4A1GOLD__Reload(weapon_entity) { 
    new 
id pev(weapon_entitypev_owner
    if (!
is_user_connected(id)) 
        return 
HAM_IGNORED

    if (!
g_has_m4a1_gold[id]) 
        return 
HAM_IGNORED

    
g_m4a1_gold_TmpClip[id] = -1

    new 
iBpAmmo cs_get_user_bpammo(idCSW_M4A1); 
    new 
iClip get_pdata_int(weapon_entitym_iClipWEAP_LINUX_XTRA_OFF

    if (
iBpAmmo <= 0
        return 
HAM_SUPERCEDE

    if (
iClip >= get_pcvar_num(cvar_m4a1_gold_clip)) 
        return 
HAM_SUPERCEDE


    
g_m4a1_gold_TmpClip[id] = iClip

    return 
HAM_IGNORED


public 
M4A1GOLD__Reload_Post(weapon_entity) { 
    new 
id pev(weapon_entitypev_owner
    if (!
is_user_connected(id)) 
        return 
HAM_IGNORED

    if (!
g_has_m4a1_gold[id]) 
        return 
HAM_IGNORED

    if (
g_m4a1_gold_TmpClip[id] == -1
        return 
HAM_IGNORED

    
set_pdata_int(weapon_entitym_iClipg_m4a1_gold_TmpClip[id], WEAP_LINUX_XTRA_OFF

    
set_pdata_float(weapon_entitym_flTimeWeaponIdleM4A1GOLD_RELOAD_TIMEWEAP_LINUX_XTRA_OFF

    
set_pdata_float(idm_flNextAttackM4A1GOLD_RELOAD_TIMEPLAYER_LINUX_XTRA_OFF

    
set_pdata_int(weapon_entitym_fInReload1WEAP_LINUX_XTRA_OFF

    
UTIL_PlayWeaponAnimation(id4

    return 
HAM_IGNORED


stock fm_cs_get_weapon_ent_owner(ent

    return 
get_pdata_cbase(entOFFSET_WEAPONOWNEROFFSET_LINUX_WEAPONS); 


stock drop_weapons(iddropwhat

     static 
weapons[32], numiweaponid 
     num 

     get_user_weapons
(idweaponsnum
      
     for (
0numi++) 
     { 
          
weaponid weapons[i
           
          if (
dropwhat == && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) 
          { 
               static 
wname[32
               
get_weaponname(weaponidwnamesizeof wname 1
               
engclient_cmd(id"drop"wname
          } 
     } 


stock UTIL_PlayWeaponAnimation(const Player, const Sequence

    
set_pev(Playerpev_weaponanimSequence
     
    
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM, .player Player
    
write_byte(Sequence
    
write_byte(pev(Playerpev_body)) 
    
message_end() 
}

public 
make_tracer(victimattackerFloat:damageFloat:direction[3], tracehandledamage_type)
{
    static 
redgreenblue
    red 
0
    green 
255
    blue 
50
    
    
if(get_user_weapon(attacker) == CSW_M4A1 && g_has_m4a1_gold[attacker]) 
    {
        new 
Float:vecEndPos[3
        
get_tr2(tracehandleTR_vecEndPosvecEndPos
        
        
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYvecEndPos0
        
write_byte(TE_BEAMENTPOINT
        
write_short(attacker 0x1000
        
engfunc(EngFunc_WriteCoordvecEndPos[0]) // x 
        
engfunc(EngFunc_WriteCoordvecEndPos[1]) // x 
        
engfunc(EngFunc_WriteCoordvecEndPos[2]) // x 
        
write_short(m_spriteTexture
        
write_byte(0// framerate 
        
write_byte(0// framerate 
        
write_byte(1// framerate 
        
write_byte(10// framerate 
        
write_byte(0// framerate 
        
write_byte(red)
        
write_byte(green)
        
write_byte(blue)
        
write_byte(200// brightness 
        
write_byte(0// brightness 
        
message_end() 
    }
    return 
HAM_HANDLED

sirerick is offline