no dejar caer las armas especiales al suelo SOLUCIONADO
#1
buenas como le puedo hacer para que las armas especiales no se dropeen o mejor dicho se desaparezcan al instante si me pueden hacer una explicación para poder hacerlo en las demás armas

Código PHP:
#include <amxmodx>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <cstrike>

#define PLUGIN "Balrog-III"
#define VERSION "1.0"
#define AUTHOR "Dias"

#define V_MODEL "models/test_armases/v_balrog3.mdl"
#define P_MODEL "models/test_armases/p_balrog3.mdl"
#define W_MODEL "models/test_armases/w_balrog3.mdl"

#define DAMAGE 24
#define BPAMMO 100
#define ACTIVE_CLIP 20

#define CSW_BALROG3 CSW_MP5NAVY
#define weapon_balrog3 "weapon_mp5navy"

#define WEAPON_SECRETCODE 4962
#define WEAPON_EVENT "events/mp5n.sc"
#define OLD_W_MODEL "models/w_mp5.mdl"

new const Balrog3_Sounds[6][] =
{
    
"test_armases/balrig3-1.wav",
    
"test_armases/balrig3-2.wav",
    
"test_armases/balrig3_boltpull.wav",
    
"test_armases/balrig3_clipin.wav",
    
"test_armases/balrig3_clipout.wav",
    
"test_armases/balrig3_draw.wav"
}

#define EXPLOSE_SPR "sprites/test_armases/balrog5stack.spr"

enum
{
    
ANIM_IDLE 0,
    
ANIM_DRAW,
    
ANIM_RELOAD,
    
ANIM_SHOOT_A,
    
ANIM_SHOOT_B
}


new 
g_Had_Balrog3[33], g_Shoot_Special[33], g_Holding_Attack[33], g_Shoot_Count[33], g_Old_Weapon[33], g_Current_Weapon[33]
new 
g_Exp_SprIdg_balrog3_eventg_ShellIdg_SmokePuff_SprId

public plugin_init() 
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_event("CurWeapon""Event_CurWeapon""be""1=1")
    
    
register_forward(FM_UpdateClientData"fw_UpdateClientData_Post"1)    
    
register_forward(FM_PlaybackEvent"fw_PlaybackEvent")    
    
register_forward(FM_SetModel"fw_SetModel")
    
register_forward(FM_CmdStart"fw_CmdStart")        
    
    
RegisterHam(Ham_TraceAttack"worldspawn""fw_TraceAttack")
    
RegisterHam(Ham_TraceAttack"player""fw_TraceAttack")    
    
RegisterHam(Ham_Weapon_PrimaryAttackweapon_balrog3"fw_Weapon_PrimaryAttack")
    
RegisterHam(Ham_Weapon_PrimaryAttackweapon_balrog3"fw_Weapon_PrimaryAttack_Post"1)
    
RegisterHam(Ham_Item_AddToPlayerweapon_balrog3"fw_Item_AddToPlayer_Post"1)
    
    
//register_clcmd("admin_get_balrog3", "Get_Balrog3", ADMIN_BAN)
}

public 
plugin_precache()
{
    
engfunc(EngFunc_PrecacheModelV_MODEL)
    
engfunc(EngFunc_PrecacheModelP_MODEL)
    
engfunc(EngFunc_PrecacheModelW_MODEL)
    
    for(new 
0sizeof(Balrog3_Sounds); i++)
        
engfunc(EngFunc_PrecacheSoundBalrog3_Sounds[i])
        
    
g_Exp_SprId engfunc(EngFunc_PrecacheModelEXPLOSE_SPR)
    
g_SmokePuff_SprId engfunc(EngFunc_PrecacheModel"sprites/wall_puff1.spr")
    
g_ShellId engfunc(EngFunc_PrecacheModel"models/pshell.mdl")
    
    
register_forward(FM_PrecacheEvent"fw_PrecacheEvent_Post"1)
}

public 
fw_PrecacheEvent_Post(type, const name[])
{
    if(
equal(WEAPON_EVENTname))
        
g_balrog3_event get_orig_retval()        
}

public 
plugin_natives()
{
    
register_native("Tienda_Balrog3""native_Get_Balrog3"1)
}

public 
native_Get_Balrog3(id)
{
    
Get_Balrog3(id)
}

public 
Get_Balrog3(id)
{
    if(!
is_user_alive(id))
        return
        
    
g_Had_Balrog3[id] = 1
    g_Shoot_Special
[id] = 0
    g_Holding_Attack
[id] = 0
    g_Shoot_Count
[id] = 0
    
    fm_give_item
(idweapon_balrog3)
    
    
cs_set_user_bpammo(idCSW_BALROG3BPAMMO)
}

public 
Remove_Balrog3(id)
{
    if(!
is_user_connected(id))
        return
        
    
g_Had_Balrog3[id] = 0
    g_Shoot_Special
[id] = 0    
}

public 
Event_CurWeapon(id)
{
    if(!
is_user_alive(id))
        return
    
    if(
get_user_weapon(id) != g_Current_Weapon[id]) g_Current_Weapon[id] = get_user_weapon(id)
    
    if(
get_user_weapon(id) == CSW_BALROG3 && g_Had_Balrog3[id])
    {
        if(
g_Old_Weapon[id] != CSW_BALROG3)
        {
            
set_pev(idpev_viewmodel2V_MODEL)
            
set_pev(idpev_weaponmodel2P_MODEL)
        }
    }
    
    
g_Old_Weapon[id] = get_user_weapon(id)
}

public 
fw_UpdateClientData_Post(idsendweaponscd_handle)
{
    if(!
is_user_alive(id) || !is_user_connected(id))
        return 
FMRES_IGNORED    
    
if(get_user_weapon(id) == CSW_BALROG3 && g_Had_Balrog3[id])
        
set_cd(cd_handleCD_flNextAttackget_gametime() + 0.001
    
    return 
FMRES_HANDLED
}

public 
fw_PlaybackEvent(flagsinvokereventidFloat:delayFloat:origin[3], Float:angles[3], Float:fparam1Float:fparam2iParam1iParam2bParam1bParam2)
{
    if (!
is_user_connected(invoker))
        return 
FMRES_IGNORED    
    
if(get_user_weapon(invoker) != CSW_BALROG3 || !g_Had_Balrog3[invoker])
        return 
FMRES_IGNORED
    
if(eventid != g_balrog3_event)
        return 
FMRES_IGNORED
    
    engfunc
(EngFunc_PlaybackEventflags FEV_HOSTONLYinvokereventiddelayoriginanglesfparam1fparam2iParam1iParam2bParam1bParam2)
    
    if(!
g_Shoot_Special[invoker] && cs_get_user_bpammo(invokerCSW_BALROG3) > 0)
    {
        
g_Shoot_Count[invoker]++
        if(
g_Shoot_Count[invoker] >= ACTIVE_CLIP)
        {
            
g_Shoot_Special[invoker] = 1
            
            
static EntEnt fm_get_user_weapon_entity(invokerCSW_BALROG3)
            if(
pev_valid(Ent)) g_Shoot_Count[invoker] = cs_get_weapon_ammo(Ent)
        }
    } else if(
g_Shoot_Special[invoker]) {
        
cs_set_user_bpammo(invokerCSW_BALROG3cs_get_user_bpammo(invokerCSW_BALROG3) - 1)
        
        if(
cs_get_user_bpammo(invokerCSW_BALROG3) <= 0)
        {
            
g_Shoot_Special[invoker] = 0
            g_Shoot_Count
[invoker] = 0
        
}
    }
    
    
set_weapon_anim(invokerg_Shoot_Special[invoker] == ANIM_SHOOT_B ANIM_SHOOT_A)
    
emit_sound(invokerCHAN_WEAPONg_Shoot_Special[invoker] == Balrog3_Sounds[1] : Balrog3_Sounds[0], VOL_NORMATTN_NORM0PITCH_NORM)
    
    
Eject_Shell(invokerg_ShellId0.0)
        
    return 
FMRES_SUPERCEDE
}

public 
fw_SetModel(entitymodel[])
{
    if(!
pev_valid(entity))
        return 
FMRES_IGNORED
    
    
static Classname[32]
    
pev(entitypev_classnameClassnamesizeof(Classname))
    
    if(!
equal(Classname"weaponbox"))
        return 
FMRES_IGNORED
    
    
static iOwner
    iOwner 
pev(entitypev_owner)
    
    if(
equal(modelOLD_W_MODEL))
    {
        static 
weaponweapon fm_find_ent_by_owner(-1weapon_balrog3entity)
        
        if(!
pev_valid(weapon))
            return 
FMRES_IGNORED;
        
        if(
g_Had_Balrog3[iOwner])
        {
            
Remove_Balrog3(iOwner)
            
            
set_pev(weaponpev_impulseWEAPON_SECRETCODE)
            
engfunc(EngFunc_SetModelentityW_MODEL)
            
            return 
FMRES_SUPERCEDE
        
}
    }

    return 
FMRES_IGNORED;
}

public 
fw_CmdStart(iduc_handleseed)
{
    if(!
is_user_alive(id))
        return
    if(
g_Current_Weapon[id] != CSW_BALROG3 || !g_Had_Balrog3[id])
        return
        
    static 
NewButtonNewButton get_uc(uc_handleUC_Buttons)
    static 
OldButtonOldButton pev(idpev_oldbuttons)
    
    if(
NewButton IN_ATTACK)
    {
        if(!
g_Holding_Attack[id]) g_Holding_Attack[id] = 1
    
} else if((NewButton IN_ATTACK2) && !(OldButton IN_ATTACK2)) {
        if(
cs_get_user_zoom(id) == 1cs_set_user_zoom(idCS_SET_AUGSG552_ZOOM1)
        else 
cs_set_user_zoom(idCS_SET_NO_ZOOM1)
    } else {
        if(
OldButton IN_ATTACK)
        {
            if(
g_Holding_Attack[id]) 
            {
                
g_Holding_Attack[id] = 0
                g_Shoot_Count
[id] = 0
                g_Shoot_Special
[id] = 0
            
}
        }
    }
}

public 
fw_TraceAttack(VictimAttackerFloat:DamageFloat:Direction[3], PtrDamageBits)
{
    if(!
is_user_alive(Attacker))
        return 
HAM_IGNORED    
    
if(get_user_weapon(Attacker) != CSW_BALROG3 || !g_Had_Balrog3[Attacker])
        return 
HAM_IGNORED
        
    
static Float:flEnd[3], Float:vecPlane[3]
    
    
get_tr2(PtrTR_vecEndPosflEnd)
    
get_tr2(PtrTR_vecPlaneNormalvecPlane)        
        
    if(!
is_user_alive(Victim))
    {
        
Make_BulletHole(AttackerflEndDamage)
        
Make_BulletSmoke(AttackerPtr)
    }
    
    if(
g_Shoot_Special[Attacker])
    {
        
Make_BalrogEffect(AttackerPtr)
        
radius_damage(AttackerflEndfloat(DAMAGE), 96.0)
    }
    
    
SetHamParamFloat(3float(DAMAGE))
    
    return 
HAM_IGNORED
}

public 
fw_Weapon_PrimaryAttack(Ent)
{
    if(!
pev_valid(Ent))
        return
    static 
IdId pev(Entpev_owner)
    if(!
g_Had_Balrog3[Id])
        return
    
    if(
g_Shoot_Special[Id]) set_pdata_float(Ent620.44)
    else 
set_pdata_float(Ent620.24)
}

public 
fw_Weapon_PrimaryAttack_Post(Ent)
{
    if(!
pev_valid(Ent))
        return
    static 
IdId pev(Entpev_owner)
    if(!
g_Had_Balrog3[Id])
        return
    
    if(
g_Shoot_Special[Id] && cs_get_weapon_ammo(Ent) > 0
    {
        
cs_set_weapon_ammo(Entg_Shoot_Count[Id])
        
set_pdata_float(Ent46get_pdata_float(Ent464) * 0.754)    
    }
}

public 
fw_Item_AddToPlayer_Post(entid)
{
    if(!
pev_valid(ent))
        return 
HAM_IGNORED
        
    
if(pev(entpev_impulse) == WEAPON_SECRETCODE)
    {
        
g_Had_Balrog3[id] = 1
        set_pev
(entpev_impulse0)
    }        

    return 
HAM_HANDLED    
}

stock Make_BulletHole(idFloat:Origin[3], Float:Damage)
{
    
// Find target
    
static DecalDecal random_num(4145)
    static 
LoopTime
    
    if(
Damage 100.0LoopTime 2
    
else LoopTime 1
    
    
for(new 0LoopTimei++)
    {
        
// Put decal on "world" (a wall)
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_WORLDDECAL)
        
engfunc(EngFunc_WriteCoordOrigin[0])
        
engfunc(EngFunc_WriteCoordOrigin[1])
        
engfunc(EngFunc_WriteCoordOrigin[2])
        
write_byte(Decal)
        
message_end()
        
        
// Show sparcles
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_GUNSHOTDECAL)
        
engfunc(EngFunc_WriteCoordOrigin[0])
        
engfunc(EngFunc_WriteCoordOrigin[1])
        
engfunc(EngFunc_WriteCoordOrigin[2])
        
write_short(id)
        
write_byte(Decal)
        
message_end()
    }
}

public 
Make_BulletSmoke(idTrResult)
{
    static 
Float:vecSrc[3], Float:vecEnd[3], TE_FLAG
    
    get_weapon_attachment
(idvecSrc)
    
global_get(glb_v_forwardvecEnd)
    
    
xs_vec_mul_scalar(vecEnd8192.0vecEnd)
    
xs_vec_add(vecSrcvecEndvecEnd)

    
get_tr2(TrResultTR_vecEndPosvecSrc)
    
get_tr2(TrResultTR_vecPlaneNormalvecEnd)
    
    
xs_vec_mul_scalar(vecEnd2.5vecEnd)
    
xs_vec_add(vecSrcvecEndvecEnd)
    
    
TE_FLAG |= TE_EXPLFLAG_NODLIGHTS
    TE_FLAG 
|= TE_EXPLFLAG_NOSOUND
    TE_FLAG 
|= TE_EXPLFLAG_NOPARTICLES
    
    engfunc
(EngFunc_MessageBeginMSG_PASSVC_TEMPENTITYvecEnd0)
    
write_byte(TE_EXPLOSION)
    
engfunc(EngFunc_WriteCoordvecEnd[0])
    
engfunc(EngFunc_WriteCoordvecEnd[1])
    
engfunc(EngFunc_WriteCoordvecEnd[2] - 10.0)
    
write_short(g_SmokePuff_SprId)
    
write_byte(2)
    
write_byte(50)
    
write_byte(TE_FLAG)
    
message_end()
}

public 
Make_BalrogEffect(idTrResult)
{
    static 
Float:vecSrc[3], Float:vecEnd[3], TE_FLAG
    
    get_weapon_attachment
(idvecSrc)
    
global_get(glb_v_forwardvecEnd)
    
    
xs_vec_mul_scalar(vecEnd8192.0vecEnd)
    
xs_vec_add(vecSrcvecEndvecEnd)

    
get_tr2(TrResultTR_vecEndPosvecSrc)
    
get_tr2(TrResultTR_vecPlaneNormalvecEnd)
    
    
xs_vec_mul_scalar(vecEnd5.0vecEnd)
    
xs_vec_add(vecSrcvecEndvecEnd)
    
    
TE_FLAG |= TE_EXPLFLAG_NODLIGHTS
    TE_FLAG 
|= TE_EXPLFLAG_NOSOUND
    TE_FLAG 
|= TE_EXPLFLAG_NOPARTICLES
    
    engfunc
(EngFunc_MessageBeginMSG_PASSVC_TEMPENTITYvecEnd0)
    
write_byte(TE_EXPLOSION)
    
engfunc(EngFunc_WriteCoordvecEnd[0])
    
engfunc(EngFunc_WriteCoordvecEnd[1])
    
engfunc(EngFunc_WriteCoordvecEnd[2])
    
write_short(g_Exp_SprId)
    
write_byte(5)
    
write_byte(30)
    
write_byte(TE_FLAG)
    
message_end()
}

stock get_weapon_attachment(idFloat:output[3], Float:fDis 40.0)

    new 
Float:vfEnd[3], viEnd[3
    
get_user_origin(idviEnd3)  
    
IVecFVec(viEndvfEnd
    
    new 
Float:fOrigin[3], Float:fAngle[3]
    
    
pev(idpev_originfOrigin
    
pev(idpev_view_ofsfAngle)
    
    
xs_vec_add(fOriginfAnglefOrigin
    
    new 
Float:fAttack[3]
    
    
xs_vec_sub(vfEndfOriginfAttack)
    
xs_vec_sub(vfEndfOriginfAttack
    
    new 
Float:fRate
    
    fRate 
fDis vector_length(fAttack)
    
xs_vec_mul_scalar(fAttackfRatefAttack)
    
    
xs_vec_add(fOriginfAttackoutput)
}

stock radius_damage(idFloat:Origin[3], Float:DamageFloat:Radius)
{
    static 
VictimVictim = -1

    
while((Victim engfunc(EngFunc_FindEntityInSphereVictimOriginRadius)) != 0)
    {
        if(!
is_user_alive(Victim) || id == Victim
            continue

        
ExecuteHamB(Ham_TakeDamageVictimfm_get_user_weapon_entity(idget_user_weapon(id)), idDamageDMG_BULLET)
    }
}

stock Eject_Shell(idShell_ModelIndexFloat:Time// By Dias
{
    static 
EntEnt get_pdata_cbase(id3735)
    if(!
pev_valid(Ent))
        return

        
set_pdata_int(Ent57Shell_ModelIndex4)
        
set_pdata_float(id111get_gametime() + Time)
}

stock set_weapon_anim(idanim)
{
    if(!
is_user_alive(id))
        return
    
    
set_pev(idpev_weaponanimanim)
    
    
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM, {000}, id)
    
write_byte(anim)
    
write_byte(pev(idpev_body))
    
message_end()
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/ 
Aprendiendo scripting Excitedeyes || Tratare ayudar en lo que pueda Trolleyes || PD: Soy pobre Cutecry
Responder
#2
mmm....para todas las armas??

crea un plugin para que haga esto
Código PHP:
//deberas registrar en init este ham
RegisterHam(Ham_Killed"player""Killed"1)

//esta funcion le quita las armas a victim o sea cuando te matan
public Killed(victimkillershouldgib)
{
        
//quita todas las armas
    
strip_user_weapons(victim);

        
//quita las armas primarias
       //StripWeapons(victim, Primary)

        //quita las armas secundarias
    //StripWeapons(victim, Secondary)

    
return PLUGIN_CONTINUE


para strip_user_weapons creo que necesitaras #include <fun>

para usar Stripweapons pon #include <stripweapons>
Responder
#3
(12/08/2019, 07:20 PM)Decxx1 escribió: mmm....para todas las armas??

crea un plugin para que haga esto
Código PHP:
//deberas registrar en init este ham
RegisterHam(Ham_Killed"player""Killed"1)

//esta funcion le quita las armas a victim o sea cuando te matan
public Killed(victimkillershouldgib)
{
        
//quita todas las armas
    
strip_user_weapons(victim);

        
//quita las armas primarias
       //StripWeapons(victim, Primary)

        //quita las armas secundarias
    //StripWeapons(victim, Secondary)

    
return PLUGIN_CONTINUE


para strip_user_weapons creo que necesitaras #include <fun>

para usar Stripweapons pon #include <stripweapons>

no para todas solo para las armas especiales
Aprendiendo scripting Excitedeyes || Tratare ayudar en lo que pueda Trolleyes || PD: Soy pobre Cutecry
Responder
#4
[/quote]

no para todas solo para las armas especiales
[/quote]

bueno ser más específico es más dificil. yo lo haría así..

vas al plugin_native() de cada arma...y agregas uno para borrar el arma por ej:

public plugin_natives()
{
register_native("Tienda_Balrog3", "native_Get_Balrog3", 1)
register_native("remover_Balrog3", "Remove_Balrog3", 1)
}

lo haces con cada arma... agregas el respectivo native por ej "native remover_Balrog3 (id)" en el correspondiente archivo .inc por ejemplo (natives.inc)
entonces en la funcion que te dije antes pones remover_Balrog3(victim), pero con cada una de las armas
y al principio del plugin pones el include correspondiente por ejemplo #include <Natives>
Responder
#5
quita Ham_Item_AddToPlayer
Responder
#6
(12/08/2019, 11:24 PM)Nelo escribió: quita Ham_Item_AddToPlayer

gracias pero tengo un problema con esta arma la thanatos y es que cuando la dejo caer y la vuelvo a agarrar me da el arma especial aun y en las demás armas no pasa lo mismo al dropearlas y volverla a recoger me da el arma normal como puedo hacer que al dropear la thanatos de el arma normal y no el arma especial
Aprendiendo scripting Excitedeyes || Tratare ayudar en lo que pueda Trolleyes || PD: Soy pobre Cutecry
Responder
#7
porque simplemente no bloqueas el dropeo de armas asi evitas tener que editar todos ?

o usa estos plugins
Responder
#8
(13/08/2019, 10:37 PM)Nelo escribió: porque simplemente no bloqueas el dropeo de armas asi evitas tener que editar todos ?

o usa estos plugins

es que de la forma que me dijiste esta bien pero al dropearla y al volverla a recoger me da la misma arma especial como le quito para que me de el arma normal que en ese casi seria la m249
Aprendiendo scripting Excitedeyes || Tratare ayudar en lo que pueda Trolleyes || PD: Soy pobre Cutecry
Responder
#9
cada plugin es diferente, si bien te dije como arreglar este el otro seguramente esta hecho de otra forma, si no sabes como hacerlo la solucion rapida es bloquear el dropeo, asi evitas tener que editar cada arma
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)