SOLUCIONADO cual es la función que da el arma para poder sacarle la native
#1
buenas necesito saber cual es la función "sorry si no se le dice a si" que da el arma para poder sacarle la native

Código PHP:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <xs>
#include <cstrike>
//#include <zombieplague>

#define ENG_NULLENT        -1
#define EV_INT_WEAPONKEY    EV_INT_impulse
#define ROCKGUITAR_WEAPONKEY 705
#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 ROCKGUITAR_RELOAD_TIME 2.5
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/rguitar.wav" }
new const 
Sound_Zoom[] = { "weapons/zoom.wav" }
new const 
GUNSHOT_DECALS[] = { 4142434445 }
new 
ROCKGUITAR_V_MODEL[64] = "models/v_guitar_xmas.mdl"
new ROCKGUITAR_P_MODEL[64] = "models/p_guitar_xmas.mdl"
new ROCKGUITAR_W_MODEL[64] = "models/w_guitar_xmas.mdl"
new cvar_dmg_RockGuitarcvar_recoil_RockGuitarg_itemid_RockGuitarcvar_clip_RockGuitarcvar_spd_RockGuitarcvar_RockGuitar_ammo
new g_has_RockGuitar[33], g_MaxPlayersFloat:cl_pushangle[MAX_PLAYERS 1][3], m_iBlood[2], g_hasZoom[33], 
g_orig_event_RockGuitarg_IsInPrimaryAttackg_clip_ammo[33], g_RockGuitar_TmpClip[33]

public 
plugin_init()
{
    
register_plugin("[ZP] Extra: New Weapons""1.0""=)")
    
register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
    
register_event("CurWeapon","CurrentWeapon","be","1=1")
    
RegisterHam(Ham_Item_AddToPlayer"weapon_galil""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 
1sizeof WEAPONENTNAMESi++)
        if (
WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_DeployWEAPONENTNAMES[i], "fw_Item_Deploy_Post"1)
    
RegisterHam(Ham_Weapon_PrimaryAttack"weapon_galil""fw_Aug_PrimaryAttack")
    
RegisterHam(Ham_Weapon_PrimaryAttack"weapon_galil""fw_Aug_PrimaryAttack_Post"1)
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage")
    
RegisterHam(Ham_Item_PostFrame"weapon_galil""ROCKGUITAR__ItemPostFrame");
    
RegisterHam(Ham_Weapon_Reload"weapon_galil""ROCKGUITAR__Reload");
    
RegisterHam(Ham_Weapon_Reload"weapon_galil""ROCKGUITAR__Reload_Post"1);
    
register_forward(FM_SetModel"fw_SetModel")
    
register_forward(FM_UpdateClientData"fw_UpdateClientData_Post"1)
    
register_forward(FM_PlaybackEvent"fwPlaybackEvent")
    
register_forward(FM_CmdStart"fw_CmdStart")
    
    
cvar_dmg_RockGuitar register_cvar("zp_RockGuitar_dmg""2.5")
    
cvar_recoil_RockGuitar register_cvar("zp_RockGuitar_recoil""0.1")           
    
cvar_clip_RockGuitar register_cvar("zp_RockGuitar_clip""60")
        
cvar_spd_RockGuitar register_cvar("zp_RockGuitar_spd""1.0")
    
cvar_RockGuitar_ammo register_cvar("zp_RockGuitar_ammo""180")
    
    
//g_itemid_RockGuitar = zp_register_extra_item("[Rifles] \rRockGuitar", 15, ZP_TEAM_HUMAN)
    
g_MaxPlayers get_maxplayers()
}

public 
plugin_precache()
{
    
precache_model(ROCKGUITAR_V_MODEL)
    
precache_model(ROCKGUITAR_P_MODEL)
    
precache_model(ROCKGUITAR_W_MODEL)
    
precache_sound("weapons/gt_clipout.wav")
    
precache_sound("weapons/gt_draw.wav")
    
precache_sound("weapons/gt_clipin.wav")
    
precache_sound("weapons/gt_clipon.wav")
    for(new 
0sizeof Sound_Firei++)
        
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_RockGuitar[id] = false
}

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

    return 
FMRES_IGNORED
}

public 
client_connect(id)
{
    
g_has_RockGuitar[id] = false
}

public 
client_disconnected(id)
{
    
g_has_RockGuitar[id] = false
}

public 
zp_user_infected_post(id)
{
    
//if (zp_get_user_zombie(id))
    
{
        
g_has_RockGuitar[id] = false
    
}
}

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_galil.mdl"))
    {
        static 
iStoredAugID
        
        iStoredAugID 
find_ent_by_owner(ENG_NULLENT"weapon_galil"entity)
    
        if(!
is_valid_ent(iStoredAugID))
            return 
FMRES_IGNORED;
    
        if(
g_has_RockGuitar[iOwner])
        {
            
entity_set_int(iStoredAugIDEV_INT_WEAPONKEYROCKGUITAR_WEAPONKEY)
            
            
g_has_RockGuitar[iOwner] = false
            
            entity_set_model
(entityROCKGUITAR_W_MODEL)
            
            return 
FMRES_SUPERCEDE;
        }
    }
    
    return 
FMRES_IGNORED;
}

public 
zp_extra_item_selected(iditemid)
{
    if(
itemid == g_itemid_RockGuitar)
    {
        new 
iWep2 give_item(id,"weapon_galil")
        if( 
iWep2 )
        {
            
cs_set_weapon_ammoiWep2get_pcvar_num(cvar_clip_RockGuitar) )
            
cs_set_user_bpammo (idCSW_GALILget_pcvar_num(cvar_RockGuitar_ammo))
            
UTIL_PlayWeaponAnimation(id2)
        }
        
g_has_RockGuitar[id] = true;
    }
}

public 
fw_Aug_AddToPlayer(Augid)
{
    if(!
is_valid_ent(Aug) || !is_user_connected(id))
        return 
HAM_IGNORED;
    
    if(
entity_get_int(AugEV_INT_WEAPONKEY) == ROCKGUITAR_WEAPONKEY)
    {
        
g_has_RockGuitar[id] = true
        
        entity_set_int
(AugEV_INT_WEAPONKEY0)
        
        return 
HAM_HANDLED;
    }
    
    return 
HAM_IGNORED;
}

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)
{
     
replace_weapon_models(idread_data(2))

     if(
read_data(2) != CSW_GALIL || !g_has_RockGuitar[id])
          return
     
     static 
Float:iSpeed
     
if(g_has_RockGuitar[id])
          
iSpeed get_pcvar_float(cvar_spd_RockGuitar)
     
     static 
weapon[32],Ent
     get_weaponname
(read_data(2),weapon,31)
     
Ent find_ent_by_owner(-1,weapon,id)
     if(
Ent)
     {
          static 
Float:Delay
          Delay 
get_pdata_floatEnt464) * iSpeed
          
if (Delay 0.0)
          {
               
set_pdata_float(Ent46Delay4)
          }
     }
}

replace_weapon_models(idweaponid)
{
    switch (
weaponid)
    {
        case 
CSW_GALIL:
        {
            
            if(
g_has_RockGuitar[id])
            {
                
set_pev(idpev_viewmodel2ROCKGUITAR_V_MODEL)
                
set_pev(idpev_weaponmodel2ROCKGUITAR_P_MODEL)
            }
        }
    }
}

public 
fw_UpdateClientData_Post(PlayerSendWeaponsCD_Handle)
{
    if(!
is_user_alive(Player) || (get_user_weapon(Player) != CSW_GALIL || !g_has_RockGuitar[Player]))

        return 
FMRES_IGNORED
    
    set_cd
(CD_HandleCD_flNextAttackhalflife_time () + 0.001)
    return 
FMRES_HANDLED
}

public 
fw_Aug_PrimaryAttack(Weapon)
{
    new 
Player get_pdata_cbase(Weapon414)
    
    if (!
g_has_RockGuitar[Player])
        return;
    
    
g_IsInPrimaryAttack 1
    pev
(Player,pev_punchangle,cl_pushangle[Player])
    
    
g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon)
}

public 
fwPlaybackEvent(flagsinvokereventidFloat:delayFloat:origin[3], Float:angles[3], Float:fparam1Float:fparam2iParam1iParam2bParam1bParam2)
{
    if ((
eventid != g_orig_event_RockGuitar) || !g_IsInPrimaryAttack)
        return 
FMRES_IGNORED
    
if (!(<= invoker <= g_MaxPlayers))
    return 
FMRES_IGNORED

    playback_event
(flags FEV_HOSTONLYinvokereventiddelayoriginanglesfparam1fparam2iParam1iParam2bParam1bParam2)
    return 
FMRES_SUPERCEDE
}

public 
fw_Aug_PrimaryAttack_Post(Weapon)
{
    
g_IsInPrimaryAttack 0
    
new Player get_pdata_cbase(Weapon414)
    
    if(
g_has_RockGuitar[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_RockGuitar),push)
        
xs_vec_add(push,cl_pushangle[Player],push)
        
set_pev(Player,pev_punchangle,push)
        
        if (!
g_clip_ammo[Player])
            return
        
        
emit_sound(PlayerCHAN_WEAPONSound_Fire[0], VOL_NORMATTN_NORM0PITCH_NORM)
        
UTIL_PlayWeaponAnimation(Playerrandom_num(34))
    
        
make_blood_and_bulletholes(Player)
    }
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damage)
{
    if (
victim != attacker && is_user_connected(attacker))
    {
        if(
get_user_weapon(attacker) == CSW_GALIL)
        {
            if(
g_has_RockGuitar[attacker])
                
SetHamParamFloat(4damage get_pcvar_float(cvar_dmg_RockGuitar))
        }
    }
}

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"galil") && get_user_weapon(iAttacker) == CSW_GALIL)
    {
        if(
g_has_RockGuitar[iAttacker])
            
set_msg_arg_string(4"RockGuitar")
    }
    
    return 
PLUGIN_CONTINUE
}

stock fm_cs_get_current_weapon_ent(id)
{
    return 
get_pdata_cbase(idOFFSET_ACTIVE_ITEMOFFSET_LINUX);
}

stock fm_cs_get_weapon_ent_owner(ent)
{
    return 
get_pdata_cbase(entOFFSET_WEAPONOWNEROFFSET_LINUX_WEAPONS);
}

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()
}

stock make_blood_and_bulletholes(id)
{
    new 
aimOrigin[3], targetbody
    get_user_origin
(idaimOrigin3)
    
get_user_aiming(idtargetbody)
    
    if(
target && target <= g_MaxPlayers)
    {
        new 
Float:fStart[3], Float:fEnd[3], Float:fRes[3], Float:fVel[3]
        
pev(idpev_originfStart)
        
        
velocity_by_aim(id64fVel)
        
        
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_TraceLinefStartfEnd0targetres)
        
get_tr2(resTR_vecEndPosfRes)
        
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY
        
write_byte(TE_BLOODSPRITE)
        
write_coord(floatround(fStart[0])) 
        
write_coord(floatround(fStart[1])) 
        
write_coord(floatround(fStart[2])) 
        
write_shortm_iBlood ])
        
write_shortm_iBlood ] )
        
write_byte(70)
        
write_byte(random_num(1,2))
        
message_end()
        
        
    } 
    else if(!
is_user_connected(target))
    {
        if(
target)
        {
            
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
            
write_byte(TE_DECAL)
            
write_coord(aimOrigin[0])
            
write_coord(aimOrigin[1])
            
write_coord(aimOrigin[2])
            
write_byte(GUNSHOT_DECALS[random_num 0sizeof GUNSHOT_DECALS -) ] )
            
write_short(target)
            
message_end()
        } 
        else 
        {
            
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
            
write_byte(TE_WORLDDECAL)
            
write_coord(aimOrigin[0])
            
write_coord(aimOrigin[1])
            
write_coord(aimOrigin[2])
            
write_byte(GUNSHOT_DECALS[random_num 0sizeof GUNSHOT_DECALS -) ] )
            
message_end()
        }
        
        
message_begin(MSG_BROADCASTSVC_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 0sizeof GUNSHOT_DECALS -) ] )
        
message_end()
    }
}

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

     if (!
g_has_RockGuitar[id])
          return 
HAM_IGNORED;
     
     static 
iClipExtra

     
if(g_has_RockGuitar[id])
          
iClipExtra get_pcvar_num(cvar_clip_RockGuitar)

     new 
Float:flNextAttack get_pdata_float(idm_flNextAttackPLAYER_LINUX_XTRA_OFF)

     new 
iBpAmmo cs_get_user_bpammo(idCSW_GALIL);
     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(iClipExtra iClipiBpAmmo)
     
          
set_pdata_int(weapon_entitym_iClipiClip jWEAP_LINUX_XTRA_OFF)
          
cs_set_user_bpammo(idCSW_GALILiBpAmmo-j);
          
          
set_pdata_int(weapon_entitym_fInReload0WEAP_LINUX_XTRA_OFF)
          
fInReload 0
     
}

     return 
HAM_IGNORED;
}

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

     if (!
g_has_RockGuitar[id])
          return 
HAM_IGNORED;

     static 
iClipExtra

     
if(g_has_RockGuitar[id])
          
iClipExtra get_pcvar_num(cvar_clip_RockGuitar)

     
g_RockGuitar_TmpClip[id] = -1;

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

     if (
iBpAmmo <= 0)
          return 
HAM_SUPERCEDE;

     if (
iClip >= iClipExtra)
          return 
HAM_SUPERCEDE;


     
g_RockGuitar_TmpClip[id] = iClip;

     return 
HAM_IGNORED;
}

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

    if (!
g_has_RockGuitar[id])
        return 
HAM_IGNORED;

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

    static 
Float:iReloadTime
    
if(g_has_RockGuitar[id])
        
iReloadTime ROCKGUITAR_RELOAD_TIME

    set_pdata_int
(weapon_entitym_iClipg_RockGuitar_TmpClip[id], WEAP_LINUX_XTRA_OFF)

    
set_pdata_float(weapon_entitym_flTimeWeaponIdleiReloadTimeWEAP_LINUX_XTRA_OFF)

    
set_pdata_float(idm_flNextAttackiReloadTimePLAYER_LINUX_XTRA_OFF)

    
set_pdata_int(weapon_entitym_fInReload1WEAP_LINUX_XTRA_OFF)

    
UTIL_PlayWeaponAnimation(id1)

    return 
HAM_IGNORED;
}

public 
fw_CmdStart(iduc_handleseed)
{
    if(!
is_user_alive(id)) 
        return 
PLUGIN_HANDLED
    
    
if((get_uc(uc_handleUC_Buttons) & IN_ATTACK2) && !(pev(idpev_oldbuttons) & IN_ATTACK2))
    {
        new 
szClipszAmmo
        
new szWeapID get_user_weapon(idszClipszAmmo)
        
        if(
szWeapID == CSW_GALIL && g_has_RockGuitar[id] && !g_hasZoom[id] == true)
        {
            
g_hasZoom[id] = true
            cs_set_user_zoom
(idCS_SET_AUGSG552_ZOOM1)
            
emit_sound(idCHAN_ITEMSound_Zoom0.202.400100)
        }
        
        else if(
szWeapID == CSW_GALIL && g_has_RockGuitar[id] && g_hasZoom[id])
        {
            
g_hasZoom[id] = false
            cs_set_user_zoom
(idCS_RESET_ZOOM0)
            
        }
        
    }

    if (
g_hasZoomid ] && (pev(idpev_button) & IN_RELOAD))
    {
        
g_hasZoomid ] = false
        cs_set_user_zoom
idCS_RESET_ZOOM)
    }
    return 
PLUGIN_HANDLED

Aprendiendo scripting Excitedeyes || Tratare ayudar en lo que pueda Trolleyes || PD: Soy pobre Cutecry
Responder
#2
A que te refieres con "sacar la native"?
[Imagen: b_350_20_323957_202743_f19a15_111111.png]

Estudia siempre; el tiempo es oro, lo material se puede recuperar pero el tiempo no se puede recuperar.
(02/10/2016, 05:05 PM)meTaLiCroSS escribió: Siempre me gusta ayudar cuando alguien esta interesado realmente en ver que esta programando.
(08/08/2019, 05:32 PM)meTaLiCroSS escribió: grax x el dato cr4ck


Mis aportes

PLUGINS
MAPAS
Menú LANG [SF] Sistema de Frags
Say System (Admin Prefix)
Responder
#3
(21/01/2019, 01:25 PM)totopizza escribió: A que te refieres con "sacar la native"?

sacarle la native para poder comprar el arma desde un menu de armas que tengo
Aprendiendo scripting Excitedeyes || Tratare ayudar en lo que pueda Trolleyes || PD: Soy pobre Cutecry
Responder
#4
Creo que...

Código PHP:
public zp_extra_item_selected(iditemid
Responder
#5
talves te refieres a la tienda natives pacman
Código PHP:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <xs>
#include <cstrike>


#define ENG_NULLENT        -1
#define EV_INT_WEAPONKEY    EV_INT_impulse
#define ROCKGUITAR_WEAPONKEY 705
#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 ROCKGUITAR_RELOAD_TIME 2.5
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/rguitar.wav" }
new const 
Sound_Zoom[] = { "weapons/zoom.wav" }
new const 
GUNSHOT_DECALS[] = { 4142434445 }
new 
ROCKGUITAR_V_MODEL[64] = "models/v_guitar_xmas.mdl"
new ROCKGUITAR_P_MODEL[64] = "models/p_guitar_xmas.mdl"
new ROCKGUITAR_W_MODEL[64] = "models/w_guitar_xmas.mdl"
new cvar_dmg_RockGuitarcvar_recoil_RockGuitarcvar_clip_RockGuitarcvar_spd_RockGuitarcvar_RockGuitar_ammo
new g_has_RockGuitar[33], g_MaxPlayersFloat:cl_pushangle[MAX_PLAYERS 1][3], m_iBlood[2], g_hasZoom[33], 
g_orig_event_RockGuitarg_IsInPrimaryAttackg_clip_ammo[33], g_RockGuitar_TmpClip[33]

public 
plugin_init()
{
    
register_plugin("[ZP] Extra: New Weapons""1.0""=)")
    
register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
    
register_event("CurWeapon","CurrentWeapon","be","1=1")
    
RegisterHam(Ham_Item_AddToPlayer"weapon_galil""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 
1sizeof WEAPONENTNAMESi++)
        if (
WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_DeployWEAPONENTNAMES[i], "fw_Item_Deploy_Post"1)
    
RegisterHam(Ham_Weapon_PrimaryAttack"weapon_galil""fw_Aug_PrimaryAttack")
    
RegisterHam(Ham_Weapon_PrimaryAttack"weapon_galil""fw_Aug_PrimaryAttack_Post"1)
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage")
    
RegisterHam(Ham_Item_PostFrame"weapon_galil""ROCKGUITAR__ItemPostFrame");
    
RegisterHam(Ham_Weapon_Reload"weapon_galil""ROCKGUITAR__Reload");
    
RegisterHam(Ham_Weapon_Reload"weapon_galil""ROCKGUITAR__Reload_Post"1);
    
register_forward(FM_SetModel"fw_SetModel")
    
register_forward(FM_UpdateClientData"fw_UpdateClientData_Post"1)
    
register_forward(FM_PlaybackEvent"fwPlaybackEvent")
    
register_forward(FM_CmdStart"fw_CmdStart")
    
    
cvar_dmg_RockGuitar register_cvar("zp_RockGuitar_dmg""2.5")
    
cvar_recoil_RockGuitar register_cvar("zp_RockGuitar_recoil""0.1")           
    
cvar_clip_RockGuitar register_cvar("zp_RockGuitar_clip""60")
    
cvar_spd_RockGuitar register_cvar("zp_RockGuitar_spd""1.0")
    
cvar_RockGuitar_ammo register_cvar("zp_RockGuitar_ammo""180")
    
    
    
g_MaxPlayers get_maxplayers()
}

public 
plugin_precache()
{
    
precache_model(ROCKGUITAR_V_MODEL)
    
precache_model(ROCKGUITAR_P_MODEL)
    
precache_model(ROCKGUITAR_W_MODEL)
    
precache_sound("weapons/gt_clipout.wav")
    
precache_sound("weapons/gt_draw.wav")
    
precache_sound("weapons/gt_clipin.wav")
    
precache_sound("weapons/gt_clipon.wav")
    for(new 
0sizeof Sound_Firei++)
        
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 
plugin_natives()
{
    
register_native("tienda_guitarxmas""native_give_weapon_add"1)
}
public 
native_give_weapon_add(id)
{
    
zp_extra_item_selected(id)
}

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

    return 
FMRES_IGNORED
}

public 
client_connect(id)
{
    
g_has_RockGuitar[id] = false
}

public 
client_disconnected(id)
{
    
g_has_RockGuitar[id] = false
}



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_galil.mdl"))
    {
        static 
iStoredAugID
        
        iStoredAugID 
find_ent_by_owner(ENG_NULLENT"weapon_galil"entity)
    
        if(!
is_valid_ent(iStoredAugID))
            return 
FMRES_IGNORED;
    
        if(
g_has_RockGuitar[iOwner])
        {
            
entity_set_int(iStoredAugIDEV_INT_WEAPONKEYROCKGUITAR_WEAPONKEY)
            
            
g_has_RockGuitar[iOwner] = false
            
            entity_set_model
(entityROCKGUITAR_W_MODEL)
            
            return 
FMRES_SUPERCEDE;
        }
    }
    
    return 
FMRES_IGNORED;
}

public 
zp_extra_item_selected(id)
{
    
        new 
iWep2 give_item(id,"weapon_galil")
        if( 
iWep2 )
        {
            
cs_set_weapon_ammoiWep2get_pcvar_num(cvar_clip_RockGuitar) )
            
cs_set_user_bpammo (idCSW_GALILget_pcvar_num(cvar_RockGuitar_ammo))
            
UTIL_PlayWeaponAnimation(id2)
        }
        
g_has_RockGuitar[id] = true;
    
}

public 
fw_Aug_AddToPlayer(Augid)
{
    if(!
is_valid_ent(Aug) || !is_user_connected(id))
        return 
HAM_IGNORED;
    
    if(
entity_get_int(AugEV_INT_WEAPONKEY) == ROCKGUITAR_WEAPONKEY)
    {
        
g_has_RockGuitar[id] = true
        
        entity_set_int
(AugEV_INT_WEAPONKEY0)
        
        return 
HAM_HANDLED;
    }
    
    return 
HAM_IGNORED;
}

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)
{
     
replace_weapon_models(idread_data(2))

     if(
read_data(2) != CSW_GALIL || !g_has_RockGuitar[id])
          return
     
     static 
Float:iSpeed
     
if(g_has_RockGuitar[id])
          
iSpeed get_pcvar_float(cvar_spd_RockGuitar)
     
     static 
weapon[32],Ent
     get_weaponname
(read_data(2),weapon,31)
     
Ent find_ent_by_owner(-1,weapon,id)
     if(
Ent)
     {
          static 
Float:Delay
          Delay 
get_pdata_floatEnt464) * iSpeed
          
if (Delay 0.0)
          {
               
set_pdata_float(Ent46Delay4)
          }
     }
}

replace_weapon_models(idweaponid)
{
    switch (
weaponid)
    {
        case 
CSW_GALIL:
        {
            
            if(
g_has_RockGuitar[id])
            {
                
set_pev(idpev_viewmodel2ROCKGUITAR_V_MODEL)
                
set_pev(idpev_weaponmodel2ROCKGUITAR_P_MODEL)
            }
        }
    }
}

public 
fw_UpdateClientData_Post(PlayerSendWeaponsCD_Handle)
{
    if(!
is_user_alive(Player) || (get_user_weapon(Player) != CSW_GALIL || !g_has_RockGuitar[Player]))

        return 
FMRES_IGNORED
    
    set_cd
(CD_HandleCD_flNextAttackhalflife_time () + 0.001)
    return 
FMRES_HANDLED
}

public 
fw_Aug_PrimaryAttack(Weapon)
{
    new 
Player get_pdata_cbase(Weapon414)
    
    if (!
g_has_RockGuitar[Player])
        return;
    
    
g_IsInPrimaryAttack 1
    pev
(Player,pev_punchangle,cl_pushangle[Player])
    
    
g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon)
}

public 
fwPlaybackEvent(flagsinvokereventidFloat:delayFloat:origin[3], Float:angles[3], Float:fparam1Float:fparam2iParam1iParam2bParam1bParam2)
{
    if ((
eventid != g_orig_event_RockGuitar) || !g_IsInPrimaryAttack)
        return 
FMRES_IGNORED
    
if (!(<= invoker <= g_MaxPlayers))
    return 
FMRES_IGNORED

    playback_event
(flags FEV_HOSTONLYinvokereventiddelayoriginanglesfparam1fparam2iParam1iParam2bParam1bParam2)
    return 
FMRES_SUPERCEDE
}

public 
fw_Aug_PrimaryAttack_Post(Weapon)
{
    
g_IsInPrimaryAttack 0
    
new Player get_pdata_cbase(Weapon414)
    
    if(
g_has_RockGuitar[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_RockGuitar),push)
        
xs_vec_add(push,cl_pushangle[Player],push)
        
set_pev(Player,pev_punchangle,push)
        
        if (!
g_clip_ammo[Player])
            return
        
        
emit_sound(PlayerCHAN_WEAPONSound_Fire[0], VOL_NORMATTN_NORM0PITCH_NORM)
        
UTIL_PlayWeaponAnimation(Playerrandom_num(34))
    
        
make_blood_and_bulletholes(Player)
    }
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damage)
{
    if (
victim != attacker && is_user_connected(attacker))
    {
        if(
get_user_weapon(attacker) == CSW_GALIL)
        {
            if(
g_has_RockGuitar[attacker])
                
SetHamParamFloat(4damage get_pcvar_float(cvar_dmg_RockGuitar))
        }
    }
}

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"galil") && get_user_weapon(iAttacker) == CSW_GALIL)
    {
        if(
g_has_RockGuitar[iAttacker])
            
set_msg_arg_string(4"RockGuitar")
    }
    
    return 
PLUGIN_CONTINUE
}

stock fm_cs_get_current_weapon_ent(id)
{
    return 
get_pdata_cbase(idOFFSET_ACTIVE_ITEMOFFSET_LINUX);
}

stock fm_cs_get_weapon_ent_owner(ent)
{
    return 
get_pdata_cbase(entOFFSET_WEAPONOWNEROFFSET_LINUX_WEAPONS);
}

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()
}

stock make_blood_and_bulletholes(id)
{
    new 
aimOrigin[3], targetbody
    get_user_origin
(idaimOrigin3)
    
get_user_aiming(idtargetbody)
    
    if(
target && target <= g_MaxPlayers)
    {
        new 
Float:fStart[3], Float:fEnd[3], Float:fRes[3], Float:fVel[3]
        
pev(idpev_originfStart)
        
        
velocity_by_aim(id64fVel)
        
        
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_TraceLinefStartfEnd0targetres)
        
get_tr2(resTR_vecEndPosfRes)
        
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY
        
write_byte(TE_BLOODSPRITE)
        
write_coord(floatround(fStart[0])) 
        
write_coord(floatround(fStart[1])) 
        
write_coord(floatround(fStart[2])) 
        
write_shortm_iBlood ])
        
write_shortm_iBlood ] )
        
write_byte(70)
        
write_byte(random_num(1,2))
        
message_end()
        
        
    } 
    else if(!
is_user_connected(target))
    {
        if(
target)
        {
            
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
            
write_byte(TE_DECAL)
            
write_coord(aimOrigin[0])
            
write_coord(aimOrigin[1])
            
write_coord(aimOrigin[2])
            
write_byte(GUNSHOT_DECALS[random_num 0sizeof GUNSHOT_DECALS -) ] )
            
write_short(target)
            
message_end()
        } 
        else 
        {
            
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
            
write_byte(TE_WORLDDECAL)
            
write_coord(aimOrigin[0])
            
write_coord(aimOrigin[1])
            
write_coord(aimOrigin[2])
            
write_byte(GUNSHOT_DECALS[random_num 0sizeof GUNSHOT_DECALS -) ] )
            
message_end()
        }
        
        
message_begin(MSG_BROADCASTSVC_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 0sizeof GUNSHOT_DECALS -) ] )
        
message_end()
    }
}

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

     if (!
g_has_RockGuitar[id])
          return 
HAM_IGNORED;
     
     static 
iClipExtra

     
if(g_has_RockGuitar[id])
          
iClipExtra get_pcvar_num(cvar_clip_RockGuitar)

     new 
Float:flNextAttack get_pdata_float(idm_flNextAttackPLAYER_LINUX_XTRA_OFF)

     new 
iBpAmmo cs_get_user_bpammo(idCSW_GALIL);
     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(iClipExtra iClipiBpAmmo)
     
          
set_pdata_int(weapon_entitym_iClipiClip jWEAP_LINUX_XTRA_OFF)
          
cs_set_user_bpammo(idCSW_GALILiBpAmmo-j);
          
          
set_pdata_int(weapon_entitym_fInReload0WEAP_LINUX_XTRA_OFF)
          
fInReload 0
     
}

     return 
HAM_IGNORED;
}

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

     if (!
g_has_RockGuitar[id])
          return 
HAM_IGNORED;

     static 
iClipExtra

     
if(g_has_RockGuitar[id])
          
iClipExtra get_pcvar_num(cvar_clip_RockGuitar)

     
g_RockGuitar_TmpClip[id] = -1;

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

     if (
iBpAmmo <= 0)
          return 
HAM_SUPERCEDE;

     if (
iClip >= iClipExtra)
          return 
HAM_SUPERCEDE;


     
g_RockGuitar_TmpClip[id] = iClip;

     return 
HAM_IGNORED;
}

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

    if (!
g_has_RockGuitar[id])
        return 
HAM_IGNORED;

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

    static 
Float:iReloadTime
    
if(g_has_RockGuitar[id])
        
iReloadTime ROCKGUITAR_RELOAD_TIME

    set_pdata_int
(weapon_entitym_iClipg_RockGuitar_TmpClip[id], WEAP_LINUX_XTRA_OFF)

    
set_pdata_float(weapon_entitym_flTimeWeaponIdleiReloadTimeWEAP_LINUX_XTRA_OFF)

    
set_pdata_float(idm_flNextAttackiReloadTimePLAYER_LINUX_XTRA_OFF)

    
set_pdata_int(weapon_entitym_fInReload1WEAP_LINUX_XTRA_OFF)

    
UTIL_PlayWeaponAnimation(id1)

    return 
HAM_IGNORED;
}

public 
fw_CmdStart(iduc_handleseed)
{
    if(!
is_user_alive(id)) 
        return 
PLUGIN_HANDLED
    
    
if((get_uc(uc_handleUC_Buttons) & IN_ATTACK2) && !(pev(idpev_oldbuttons) & IN_ATTACK2))
    {
        new 
szClipszAmmo
        
new szWeapID get_user_weapon(idszClipszAmmo)
        
        if(
szWeapID == CSW_GALIL && g_has_RockGuitar[id] && !g_hasZoom[id] == true)
        {
            
g_hasZoom[id] = true
            cs_set_user_zoom
(idCS_SET_AUGSG552_ZOOM1)
            
emit_sound(idCHAN_ITEMSound_Zoom0.202.400100)
        }
        
        else if(
szWeapID == CSW_GALIL && g_has_RockGuitar[id] && g_hasZoom[id])
        {
            
g_hasZoom[id] = false
            cs_set_user_zoom
(idCS_RESET_ZOOM0)
            
        }
        
    }

    if (
g_hasZoomid ] && (pev(idpev_button) & IN_RELOAD))
    {
        
g_hasZoomid ] = false
        cs_set_user_zoom
idCS_RESET_ZOOM)
    }
    return 
PLUGIN_HANDLED

fijate si te sirve
este es el name del native q le puse v:
Código PHP:
native tienda_guitarxmas(id
[Imagen: b_560_95_1.png]
Responder
#6
es zp_extra_item_selected, pero tendrias que sacar el if que tiene esa funcion
Responder
#7
(27/01/2019, 02:27 AM)Nelo escribió: es zp_extra_item_selected, pero tendrias que sacar el if que tiene esa funcion

ya saque native y funciona bien
Aprendiendo scripting Excitedeyes || Tratare ayudar en lo que pueda Trolleyes || PD: Soy pobre Cutecry
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)