[ZP][Solucionado] Evitar desarmar a Survi y Ultimo Humano
#1
Quiero que cuando le tiren la desarmadora al SURVIVOR o al ULTIMO HUMANO no les pueda desarmar:



Código PHP:
#include <amxmodx>

#include <fakemeta>

#include <hamsandwich>

#include <zombieplague>



#define fm_create_entity(%1) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, %1))



new const NADE_TYPE_STRIPBOMB7777

new const sprite_grenade_trail[] = "sprites/laserbeam.spr"

new const sprite_grenade_ring[] = "sprites/shockwave.spr"

new const model_grenade_infect[] = "models/v_grenade_astrip.mdl"

new const bcost 5;



new 
g_trailSprg_exploSpritem_idcvar_enabledcvar_modecvar_radiuscvar_max

new has_bomb[33],had_bombs[33];



public 
plugin_init()

{

    
register_plugin("[ZP] Extra Item: Strip Bomb""1.6""Hezerf")

    

    
RegisterHam(Ham_Think"grenade""fw_ThinkGrenade")

    
RegisterHam(Ham_Killed"player""fw_PlayerKilled")

    

    
register_forward(FM_SetModel"fw_SetModel")

    

    
register_message(get_user_msgid("CurWeapon"), "message_cur_weapon")

    

    
register_event("HLTV","Event_New_Round","a""1=0""2=0")

    

    
cvar_enabled register_cvar("zp_strip_bomb""1")

    
cvar_mode register_cvar("zp_strip_mode""0")

    
cvar_radius register_cvar("zp_strip_radius""250.0")

    
cvar_max register_cvar("zp_strip_max","5")

}



public 
plugin_precache()

{

    
g_trailSpr engfunc(EngFunc_PrecacheModelsprite_grenade_trail)

    
g_exploSpr engfunc(EngFunc_PrecacheModelsprite_grenade_ring)

    

    
engfunc(EngFunc_PrecacheModelmodel_grenade_infect)

    

    
item_id zp_register_extra_item("Strip Bomb"bcostZP_TEAM_ZOMBIE)

}



public 
client_disconnect(id)

{

    
has_bomb[id] = 0;

    
had_bombs[id] = 0;

}



public 
Event_New_Round()

{

    
arrayset(had_bombs,0,32);

    
arrayset(has_bomb,0,32);

}

public 
zp_extra_item_selected(playeritemid)

{

    if(
itemid != item_id)

        return;

    if(
get_pcvar_num(cvar_max) == had_bombs[player])

    {

        
zp_set_user_ammo_packs(player,zp_get_user_ammo_packs(player) + bcost)

        
client_print(playerprint_chat"[ZP] You can't buy Strip Bomb !")

        return;

    }

    

    
has_bomb[player] = 1

    had_bombs
[player]++;

    
fm_strip_user_gun(player9)

    
fm_give_item(player"weapon_smokegrenade")

}



public 
fw_PlayerKilled(victimattackershouldgib)

    
has_bomb[victim] = 0;



public 
fw_ThinkGrenade(entity)

{    

    if(!
pev_valid(entity))

        return 
HAM_IGNORED

    

    
static Float:dmgtime    

    pev
(entitypev_dmgtimedmgtime)

    

    if (
dmgtime get_gametime())

        return 
HAM_IGNORED    

    

    
if(pev(entitypev_flTimeStepSound) == NADE_TYPE_STRIPBOMB)

    {

        
stripbomb_explode(entity)

        

        return 
HAM_SUPERCEDE

    
}

    

    return 
HAM_IGNORED  

}



public 
fw_SetModel(entity, const model[])

{

    static 
Float:dmgtime

    pev
(entitypev_dmgtimedmgtime)

    

    new 
owner pev(entitypev_owner)

    

    if(!
get_pcvar_num(cvar_enabled) || !dmgtime || !(equal(model[7], "w_sm"4)) || !zp_get_user_zombie(owner) || !has_bomb[owner])

        return;

    

    
fm_set_rendering(entitykRenderFxGlowShell2551280kRenderNormal16)

    

    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)

    
write_byte(TE_BEAMFOLLOW// TE id

    
write_short(entity// entity

    
write_short(g_trailSpr// sprite

    
write_byte(10// life

    
write_byte(10// width

    
write_byte(255// r

    
write_byte(128// g

    
write_byte(0// b

    
write_byte(200// brightness

    
message_end()

    

    
set_pev(entitypev_flTimeStepSoundNADE_TYPE_STRIPBOMB)

}



public 
stripbomb_explode(ent)

{

    if (!
zp_has_round_started())

        return;

    

    static 
Float:originF[3]

    
pev(entpev_originoriginF)

    

    
create_blast(originF)

    

    
//engfunc(EngFunc_EmitSound, ent, CHAN_WEAPON, grenade_infect[random_num(0, sizeof grenade_infect - 1)], 1.0, ATTN_NORM, 0, PITCH_NORM)

    

    
static attacker

    attacker 
pev(entpev_owner)

    

    
has_bomb[attacker] = 0

    

    
static victim

    victim 
= -1

    
while ((victim engfunc(EngFunc_FindEntityInSpherevictimoriginFget_pcvar_float(cvar_radius))) != 0)

    {

        if (!
is_user_alive(victim) || zp_get_user_zombie(victim))

            continue;

        

        switch(
get_pcvar_num(cvar_mode))

        {

            case 
:

            {

                if (
pev(victimpev_armorvalue) <= 0)

                    continue;

                

                
set_pev(victimpev_armorvalue0);

            }

            case 
:

            {

                
fm_strip_user_weapons(victim)

                
fm_give_item(victim"weapon_knife")

            }

            case 
:

            {

                if (
pev(victimpev_armorvalue) > 0)                

                    
set_pev(victimpev_armorvalue0)

                

                
fm_strip_user_weapons(victim)

                
fm_give_item(victim"weapon_knife")

            }

        }

    }

    

    
engfunc(EngFunc_RemoveEntityent)

}



public 
create_blast(const Float:originF[3])

{

    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF0)

    
write_byte(TE_BEAMCYLINDER// TE id

    
engfunc(EngFunc_WriteCoordoriginF[0]) // x

    
engfunc(EngFunc_WriteCoordoriginF[1]) // y

    
engfunc(EngFunc_WriteCoordoriginF[2]) // z

    
engfunc(EngFunc_WriteCoordoriginF[0]) // x axis

    
engfunc(EngFunc_WriteCoordoriginF[1]) // y axis

    
engfunc(EngFunc_WriteCoordoriginF[2]+385.0// z axis

    
write_short(g_exploSpr// sprite

    
write_byte(0// startframe

    
write_byte(0// framerate

    
write_byte(4// life

    
write_byte(60// width

    
write_byte(0// noise

    
write_byte(255// red

    
write_byte(128// green

    
write_byte(0// blue

    
write_byte(200// brightness

    
write_byte(0// speed

    
message_end()

    

    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF0)

    
write_byte(TE_BEAMCYLINDER// TE id

    
engfunc(EngFunc_WriteCoordoriginF[0]) // x

    
engfunc(EngFunc_WriteCoordoriginF[1]) // y

    
engfunc(EngFunc_WriteCoordoriginF[2]) // z

    
engfunc(EngFunc_WriteCoordoriginF[0]) // x axis

    
engfunc(EngFunc_WriteCoordoriginF[1]) // y axis

    
engfunc(EngFunc_WriteCoordoriginF[2]+470.0// z axis

    
write_short(g_exploSpr// sprite

    
write_byte(0// startframe

    
write_byte(0// framerate

    
write_byte(4// life

    
write_byte(60// width

    
write_byte(0// noise

    
write_byte(255// red

    
write_byte(164// green

    
write_byte(0// blue

    
write_byte(200// brightness

    
write_byte(0// speed

    
message_end()

    

    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF0)

    
write_byte(TE_BEAMCYLINDER// TE id

    
engfunc(EngFunc_WriteCoordoriginF[0]) // x

    
engfunc(EngFunc_WriteCoordoriginF[1]) // y

    
engfunc(EngFunc_WriteCoordoriginF[2]) // z

    
engfunc(EngFunc_WriteCoordoriginF[0]) // x axis

    
engfunc(EngFunc_WriteCoordoriginF[1]) // y axis

    
engfunc(EngFunc_WriteCoordoriginF[2]+555.0// z axis

    
write_short(g_exploSpr// sprite

    
write_byte(0// startframe

    
write_byte(0// framerate

    
write_byte(4// life

    
write_byte(60// width

    
write_byte(0// noise

    
write_byte(255// red

    
write_byte(200// green

    
write_byte(0// blue

    
write_byte(200// brightness

    
write_byte(0// speed

    
message_end()

}



public 
replace_models(id)

{

    if (!
is_user_alive(id) || get_user_weapon(id) != CSW_SMOKEGRENADE || !has_bomb[id])

        return

    

    
set_pev(idpev_viewmodel2model_grenade_infect)

}



public 
message_cur_weapon(msg_idmsg_destmsg_entity)

    
replace_models(msg_entity);



// Stocks from fakemeta_util

stock bool:fm_strip_user_gun(indexwid 0, const wname[] = "")

{

    new 
ent_class[32];

    if (!
wid && wname[0])

        
copy(ent_classsizeof ent_class 1wname);

    else

    {

        new 
weapon widclipammo;

        if (!
weapon && !(weapon get_user_weapon(indexclipammo)))

            return 
false;

        

        
get_weaponname(weaponent_classsizeof ent_class 1);

    }

    

    new 
ent_weap fm_find_ent_by_owner(-1ent_classindex);

    if (!
ent_weap)

        return 
false;

    

    
engclient_cmd(index"drop"ent_class);

    

    new 
ent_box pev(ent_weappev_owner);

    if (!
ent_box || ent_box == index)

        return 
false;

    

    
dllfunc(DLLFunc_Thinkent_box);

    

    return 
true;

}



stock fm_give_item(index, const item[])

{

    if (!
equal(item"weapon_"7) && !equal(item"ammo_"5) && !equal(item"item_"5) && !equal(item"tf_weapon_"10))

        return 
0;



    new 
ent fm_create_entity(item);

    if (!
pev_valid(ent))

        return 
0;

    

    new 
Float:origin[3];

    
pev(indexpev_originorigin);

    
set_pev(entpev_originorigin);

    
set_pev(entpev_spawnflagspev(entpev_spawnflags) | SF_NORESPAWN);

    
dllfunc(DLLFunc_Spawnent);

    

    new 
save pev(entpev_solid);

    
dllfunc(DLLFunc_Touchentindex);

    if (
pev(entpev_solid) != save)

        return 
ent;

    

    
engfunc(EngFunc_RemoveEntityent);

    

    return -
1;

}



stock fm_set_rendering(entityfx kRenderFxNone255255255render kRenderNormalamount 16)

{

    new 
Float:RenderColor[3];

    
RenderColor[0] = float(r);

    
RenderColor[1] = float(g);

    
RenderColor[2] = float(b);

    

    
set_pev(entitypev_renderfxfx);

    
set_pev(entitypev_rendercolorRenderColor);

    
set_pev(entitypev_rendermoderender);

    
set_pev(entitypev_renderamtfloat(amount));

    

    return 
1;

}



stock fm_strip_user_weapons(index)

{

    new 
ent fm_create_entity("player_weaponstrip");

    if (!
pev_valid(ent))

        return 
0;

    

    
dllfunc(DLLFunc_Spawnent);

    
dllfunc(DLLFunc_Useentindex);

    
engfunc(EngFunc_RemoveEntityent);

    

    return 
1;

}



stock fm_find_ent_by_owner(index, const classname[], ownerjghgtype 0)

{

    new 
strtype[11] = "classname"ent index;

    switch (
jghgtype)

    {

        case 
1strtype "target";

        case 
2strtype "targetname";

    }

    

    while ((
ent engfunc(EngFunc_FindEntityByStringentstrtypeclassname)) && pev(entpev_owner) != owner) {}

    

    return 
ent;





Tiene esto:



Código PHP:
if (!is_user_alive(victim) || zp_get_user_zombie(victim))

continue; 



Si le pongo esto debería funcionar para el survivor cierto?:



Código PHP:
if (!is_user_alive(victim) || zp_get_user_zombie(victim) || zp_get_user_survivor(victim))

continue; 



Solo me falta saber como hacerlo para el ultimo humano y que ni con SURVIVOR y el ULTIMO HUMANO puedan comprarlo ya que gasta los ammopacks y luego no afectan.



Saludos!
Responder
#2
Debería funcionar

No te funciona que preguntas eso?

Que version del zp usas?

Ni te molestes en enviarme un mensaje privado para pedirme ayuda porque NO lo voy a contestar.
Gracias por su atención.
Responder
#3
(15/10/2013, 11:35 AM)alan_el_more escribió: Debería funcionar

No te funciona que preguntas eso?

Que version del zp usas?



Si, funciona, lo que pasa que puedes comprarlo y cuando se lo tiras al survivor no le hace nada, pero yo quiero evitar que lo compren, para que no gasten ammopacks.



Y ponerle la opción para el último humano, osea, cuando quede solo 1 humano que no puedan quitarle el arma como al survivor, eso es lo que no me sale.



Saludos!
Responder
#4
Testeado y funciona
Código PHP:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>

#define fm_create_entity(%1) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, %1))

new const NADE_TYPE_STRIPBOMB7777
new const sprite_grenade_trail[] = "sprites/laserbeam.spr"
new const sprite_grenade_ring[] = "sprites/shockwave.spr"
new const model_grenade_infect[] = "models/v_grenade_astrip.mdl"
new const bcost 5;

new 
g_trailSprg_exploSpritem_idcvar_enabledcvar_modecvar_radiuscvar_max
new has_bomb[33],had_bombs[33];

public 
plugin_init()
{
    
register_plugin("[ZP] Extra Item: Strip Bomb""1.6""Hezerf")
    
    
RegisterHam(Ham_Think"grenade""fw_ThinkGrenade")
    
RegisterHam(Ham_Killed"player""fw_PlayerKilled")
    
    
register_forward(FM_SetModel"fw_SetModel")
    
    
register_message(get_user_msgid("CurWeapon"), "message_cur_weapon")
    
    
register_event("HLTV","Event_New_Round","a""1=0""2=0")
    
    
cvar_enabled register_cvar("zp_strip_bomb""1")
    
cvar_mode register_cvar("zp_strip_mode""0")
    
cvar_radius register_cvar("zp_strip_radius""250.0")
    
cvar_max register_cvar("zp_strip_max","5")
}

public 
plugin_precache()
{
    
g_trailSpr engfunc(EngFunc_PrecacheModelsprite_grenade_trail)
    
g_exploSpr engfunc(EngFunc_PrecacheModelsprite_grenade_ring)
    
    
engfunc(EngFunc_PrecacheModelmodel_grenade_infect)
    
    
item_id zp_register_extra_item("Strip Bomb"bcostZP_TEAM_ZOMBIE)
}

public 
client_disconnect(id)
{
    
has_bomb[id] = 0;
    
had_bombs[id] = 0;
}

public 
Event_New_Round()
{
    
arrayset(had_bombs,0,32);
    
arrayset(has_bomb,0,32);
}
public 
zp_extra_item_selected(playeritemid)
{
    if(
itemid != item_id)
        return;
    
    if(
zp_is_survivor_round() || zp_get_human_count() == 1)
    {
    
zp_set_user_ammo_packs(playerzp_get_user_ammo_packs(player) + bcost)
    return
    }

    if(
get_pcvar_num(cvar_max) == had_bombs[player])
    {
        
zp_set_user_ammo_packs(player,zp_get_user_ammo_packs(player) + bcost)
        
client_print(playerprint_chat"[ZP] You can't buy Strip Bomb !")
        return;
    }
    
    
has_bomb[player] = 1
    had_bombs
[player]++;
    
fm_strip_user_gun(player9)
    
fm_give_item(player"weapon_smokegrenade")
}

public 
fw_PlayerKilled(victimattackershouldgib)
    
has_bomb[victim] = 0;

public 
fw_ThinkGrenade(entity)
{    
    if(!
pev_valid(entity))
        return 
HAM_IGNORED
    
    
static Float:dmgtime    
    pev
(entitypev_dmgtimedmgtime)
    
    if (
dmgtime get_gametime())
        return 
HAM_IGNORED    
    
    
if(pev(entitypev_flTimeStepSound) == NADE_TYPE_STRIPBOMB)
    {
        
stripbomb_explode(entity)
        
        return 
HAM_SUPERCEDE
    
}
    
    return 
HAM_IGNORED  
}

public 
fw_SetModel(entity, const model[])
{
    static 
Float:dmgtime
    pev
(entitypev_dmgtimedmgtime)
    
    new 
owner pev(entitypev_owner)
    
    if(!
get_pcvar_num(cvar_enabled) || !dmgtime || !(equal(model[7], "w_sm"4)) || !zp_get_user_zombie(owner) || !has_bomb[owner])
        return;
    
    
fm_set_rendering(entitykRenderFxGlowShell2551280kRenderNormal16)
    
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_BEAMFOLLOW// TE id
    
write_short(entity// entity
    
write_short(g_trailSpr// sprite
    
write_byte(10// life
    
write_byte(10// width
    
write_byte(255// r
    
write_byte(128// g
    
write_byte(0// b
    
write_byte(200// brightness
    
message_end()
    
    
set_pev(entitypev_flTimeStepSoundNADE_TYPE_STRIPBOMB)
}

public 
stripbomb_explode(ent)
{
    if (!
zp_has_round_started())
        return;
    
    static 
Float:originF[3]
    
pev(entpev_originoriginF)
    
    
create_blast(originF)
    
    
//engfunc(EngFunc_EmitSound, ent, CHAN_WEAPON, grenade_infect[random_num(0, sizeof grenade_infect - 1)], 1.0, ATTN_NORM, 0, PITCH_NORM)
    
    
static attacker
    attacker 
pev(entpev_owner)
    
    
has_bomb[attacker] = 0
    
    
static victim
    victim 
= -1
    
while ((victim engfunc(EngFunc_FindEntityInSpherevictimoriginFget_pcvar_float(cvar_radius))) != 0)
    {
        if (!
is_user_alive(victim) || zp_get_user_zombie(victim))
            continue;
        
        switch(
get_pcvar_num(cvar_mode))
        {
            case 
:
            {
                if (
pev(victimpev_armorvalue) <= 0)
                    continue;
                
                
set_pev(victimpev_armorvalue0);
            }
            case 
:
            {
                
fm_strip_user_weapons(victim)
                
fm_give_item(victim"weapon_knife")
            }
            case 
:
            {
                if (
pev(victimpev_armorvalue) > 0)                
                    
set_pev(victimpev_armorvalue0)
                
                
fm_strip_user_weapons(victim)
                
fm_give_item(victim"weapon_knife")
            }
        }
    }
    
    
engfunc(EngFunc_RemoveEntityent)
}

public 
create_blast(const Float:originF[3])
{
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF0)
    
write_byte(TE_BEAMCYLINDER// TE id
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y
    
engfunc(EngFunc_WriteCoordoriginF[2]) // z
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x axis
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y axis
    
engfunc(EngFunc_WriteCoordoriginF[2]+385.0// z axis
    
write_short(g_exploSpr// sprite
    
write_byte(0// startframe
    
write_byte(0// framerate
    
write_byte(4// life
    
write_byte(60// width
    
write_byte(0// noise
    
write_byte(255// red
    
write_byte(128// green
    
write_byte(0// blue
    
write_byte(200// brightness
    
write_byte(0// speed
    
message_end()
    
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF0)
    
write_byte(TE_BEAMCYLINDER// TE id
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y
    
engfunc(EngFunc_WriteCoordoriginF[2]) // z
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x axis
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y axis
    
engfunc(EngFunc_WriteCoordoriginF[2]+470.0// z axis
    
write_short(g_exploSpr// sprite
    
write_byte(0// startframe
    
write_byte(0// framerate
    
write_byte(4// life
    
write_byte(60// width
    
write_byte(0// noise
    
write_byte(255// red
    
write_byte(164// green
    
write_byte(0// blue
    
write_byte(200// brightness
    
write_byte(0// speed
    
message_end()
    
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF0)
    
write_byte(TE_BEAMCYLINDER// TE id
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y
    
engfunc(EngFunc_WriteCoordoriginF[2]) // z
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x axis
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y axis
    
engfunc(EngFunc_WriteCoordoriginF[2]+555.0// z axis
    
write_short(g_exploSpr// sprite
    
write_byte(0// startframe
    
write_byte(0// framerate
    
write_byte(4// life
    
write_byte(60// width
    
write_byte(0// noise
    
write_byte(255// red
    
write_byte(200// green
    
write_byte(0// blue
    
write_byte(200// brightness
    
write_byte(0// speed
    
message_end()
}

public 
replace_models(id)
{
    if (!
is_user_alive(id) || get_user_weapon(id) != CSW_SMOKEGRENADE || !has_bomb[id])
        return
    
    
set_pev(idpev_viewmodel2model_grenade_infect)
}

public 
message_cur_weapon(msg_idmsg_destmsg_entity)
    
replace_models(msg_entity);

// Stocks from fakemeta_util
stock bool:fm_strip_user_gun(indexwid 0, const wname[] = "")
{
    new 
ent_class[32];
    if (!
wid && wname[0])
        
copy(ent_classsizeof ent_class 1wname);
    else
    {
        new 
weapon widclipammo;
        if (!
weapon && !(weapon get_user_weapon(indexclipammo)))
            return 
false;
        
        
get_weaponname(weaponent_classsizeof ent_class 1);
    }
    
    new 
ent_weap fm_find_ent_by_owner(-1ent_classindex);
    if (!
ent_weap)
        return 
false;
    
    
engclient_cmd(index"drop"ent_class);
    
    new 
ent_box pev(ent_weappev_owner);
    if (!
ent_box || ent_box == index)
        return 
false;
    
    
dllfunc(DLLFunc_Thinkent_box);
    
    return 
true;
}

stock fm_give_item(index, const item[])
{
    if (!
equal(item"weapon_"7) && !equal(item"ammo_"5) && !equal(item"item_"5) && !equal(item"tf_weapon_"10))
        return 
0;

    new 
ent fm_create_entity(item);
    if (!
pev_valid(ent))
        return 
0;
    
    new 
Float:origin[3];
    
pev(indexpev_originorigin);
    
set_pev(entpev_originorigin);
    
set_pev(entpev_spawnflagspev(entpev_spawnflags) | SF_NORESPAWN);
    
dllfunc(DLLFunc_Spawnent);
    
    new 
save pev(entpev_solid);
    
dllfunc(DLLFunc_Touchentindex);
    if (
pev(entpev_solid) != save)
        return 
ent;
    
    
engfunc(EngFunc_RemoveEntityent);
    
    return -
1;
}

stock fm_set_rendering(entityfx kRenderFxNone255255255render kRenderNormalamount 16)
{
    new 
Float:RenderColor[3];
    
RenderColor[0] = float(r);
    
RenderColor[1] = float(g);
    
RenderColor[2] = float(b);
    
    
set_pev(entitypev_renderfxfx);
    
set_pev(entitypev_rendercolorRenderColor);
    
set_pev(entitypev_rendermoderender);
    
set_pev(entitypev_renderamtfloat(amount));
    
    return 
1;
}

stock fm_strip_user_weapons(index)
{
    new 
ent fm_create_entity("player_weaponstrip");
    if (!
pev_valid(ent))
        return 
0;
    
    
dllfunc(DLLFunc_Spawnent);
    
dllfunc(DLLFunc_Useentindex);
    
engfunc(EngFunc_RemoveEntityent);
    
    return 
1;
}

stock fm_find_ent_by_owner(index, const classname[], ownerjghgtype 0)
{
    new 
strtype[11] = "classname"ent index;
    switch (
jghgtype)
    {
        case 
1strtype "target";
        case 
2strtype "targetname";
    }
    
    while ((
ent engfunc(EngFunc_FindEntityByStringentstrtypeclassname)) && pev(entpev_owner) != owner) {}
    
    return 
ent;


Ni te molestes en enviarme un mensaje privado para pedirme ayuda porque NO lo voy a contestar.
Gracias por su atención.
Responder
#5
Por qué no lo probás en vez de preguntar o.O ?
Si funcionará.

Con respecto a tu segunda pregunta, deberías crear las condiciones necesarias dentro de esta función:
Código PHP:
public zp_extra_item_selected(playeritemid

Edit: El Sr. Alan me cagó, eso por dejar el th en una pestaña un rato xd
Responder
#6
(15/10/2013, 12:05 PM)Neeeeeeeeeel.- escribió: Por qué no lo probás en vez de preguntar o.O ?

Si funcionará.



Con respecto a tu segunda pregunta, deberías crear las condiciones necesarias dentro de esta función:

Código PHP:
public zp_extra_item_selected(playeritemid



Edit: El Sr. Alan me cagó, eso por dejar el th en una pestaña un rato xd



Pero que condiciones son para el ultimo humano?
Responder
#7
emmm... alan..

Código PHP:
forward zp_user_last_human(id// ZP 4.3 

xD
Hi Milashkasiya CrabCrab

Soy un #Panda.. Soy solo un tipo que parece #común pero soy todo lo contrario; alguien #atípico en esta sociedad actual

[Imagen: xl0jvd-5.png]
Link
Responder
#8
(15/10/2013, 04:18 PM)[R]ak escribió: emmm... alan..



Código PHP:
forward zp_user_last_human(id// ZP 4.3 



xD



Cuando pueda edito el código y lo mejoro con esa native.

PD: Nunca la encontre en el 4.2 y eso que leí todo el include jaja

Ni te molestes en enviarme un mensaje privado para pedirme ayuda porque NO lo voy a contestar.
Gracias por su atención.
Responder
#9
(15/10/2013, 04:47 PM)alan_el_more escribió:
(15/10/2013, 04:18 PM)[R]ak escribió: emmm... alan..



Código PHP:
forward zp_user_last_human(id// ZP 4.3 



xD



Cuando pueda edito el código y lo mejoro con esa native.

PD: Nunca la encontre en el 4.2 y eso que leí todo el include jaja

no, cuidado!! es una forward!



la native zp_is_user_last_human existe? estoy con el móvil, no puedo mirar.
(17/04/2015, 03:36 PM)Neeeeeeeeeel.- escribió: No se va a volver a conectar a internet en toda su puta vida... nadie sube porno a mi foro y vive para contarlo.
Responder
#10
(15/10/2013, 05:00 PM)RauliTop escribió:
(15/10/2013, 04:47 PM)alan_el_more escribió:
(15/10/2013, 04:18 PM)[R]ak escribió: emmm... alan..

Código PHP:
forward zp_user_last_human(id// ZP 4.3 

xD

Cuando pueda edito el código y lo mejoro con esa native.
PD: Nunca la encontre en el 4.2 y eso que leí todo el include jaja
no, cuidado!! es una forward!

la native zp_is_user_last_human existe? estoy con el móvil, no puedo mirar.
Claramente es una forward, se llama cuando aparece el último humano y te pasan el id de él por parámetro.

En el 5.0 esta zp_is_user_last_human, en los demas no recuerdo.
Responder
#11
Código editado con el forward zp_user_last_human()

Gracias panda[monium]

Ni te molestes en enviarme un mensaje privado para pedirme ayuda porque NO lo voy a contestar.
Gracias por su atención.
Responder
#12
(15/10/2013, 07:39 PM)alan_el_more escribió: Código editado con el forward zp_user_last_human()
Gracias panda[monium]

Vale, gacias, lo pruebo y si todo va bien edito Sonrisa

La cuestión es que ahora, le doy a comprar el item extra de la strip bomb y no lo compra xD

Saludos!
Responder
#13
tene en cuanta que si alguien compra un antidoto tendrias q cambiar el valor de g_LastHuman



Código PHP:
forward zp_user_humanized_post(idsurvivor// zp 4.3 



otra cosa... nunca reinicias g_LastHuman
Hi Milashkasiya CrabCrab

Soy un #Panda.. Soy solo un tipo que parece #común pero soy todo lo contrario; alguien #atípico en esta sociedad actual

[Imagen: xl0jvd-5.png]
Link
Responder
#14
más fácil utilizar zp_get_human_count
(17/04/2015, 03:36 PM)Neeeeeeeeeel.- escribió: No se va a volver a conectar a internet en toda su puta vida... nadie sube porno a mi foro y vive para contarlo.
Responder
#15
no.. aunque... poray;

mmmmmm.. puede q si
Hi Milashkasiya CrabCrab

Soy un #Panda.. Soy solo un tipo que parece #común pero soy todo lo contrario; alguien #atípico en esta sociedad actual

[Imagen: xl0jvd-5.png]
Link
Responder
#16
Código editado

No estoy familiarizado con el 4.3 :B

Ni te molestes en enviarme un mensaje privado para pedirme ayuda porque NO lo voy a contestar.
Gracias por su atención.
Responder
#17
(16/10/2013, 06:36 PM)alan_el_more escribió: Código editado

No estoy familiarizado con el 4.3 :B



Te comento, eramos 1 zombie y 2 humanos, compro la granada y me quita 10 ammo packs pero la tiro y no les quita las armas, después hemos probado con 2 zombies vs 1 humano y la granada no te la da pero te quita 5 ammo packs.



Saludos!
Responder
#18
Código PHP:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>

#define fm_create_entity(%1) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, %1))

new const NADE_TYPE_STRIPBOMB7777
new const sprite_grenade_trail[] = "sprites/laserbeam.spr"
new const sprite_grenade_ring[] = "sprites/shockwave.spr"
new const model_grenade_infect[] = "models/v_grenade_astrip.mdl"
new const bcost 5;

new 
g_trailSprg_exploSpritem_idcvar_enabledcvar_modecvar_radiuscvar_max
new has_bomb[33],had_bombs[33];

public 
plugin_init()
{
    
register_plugin("[ZP] Extra Item: Strip Bomb""1.6""Hezerf")
    
    
RegisterHam(Ham_Think"grenade""fw_ThinkGrenade")
    
RegisterHam(Ham_Killed"player""fw_PlayerKilled")
    
    
register_forward(FM_SetModel"fw_SetModel")
    
    
register_message(get_user_msgid("CurWeapon"), "message_cur_weapon")
    
    
register_event("HLTV","Event_New_Round","a""1=0""2=0")
    
    
cvar_enabled register_cvar("zp_strip_bomb""1")
    
cvar_mode register_cvar("zp_strip_mode""0")
    
cvar_radius register_cvar("zp_strip_radius""250.0")
    
cvar_max register_cvar("zp_strip_max","5")
}

public 
plugin_precache()
{
    
g_trailSpr engfunc(EngFunc_PrecacheModelsprite_grenade_trail)
    
g_exploSpr engfunc(EngFunc_PrecacheModelsprite_grenade_ring)
    
    
engfunc(EngFunc_PrecacheModelmodel_grenade_infect)
    
    
item_id zp_register_extra_item("Strip Bomb"bcostZP_TEAM_ZOMBIE)
}

public 
client_disconnect(id)
{
    
has_bomb[id] = 0;
    
had_bombs[id] = 0;
}

public 
Event_New_Round()
{
    
arrayset(had_bombs,0,32);
    
arrayset(has_bomb,0,32);
}
public 
zp_extra_item_selected(playeritemid)
{
    if(
itemid != item_id)
        return 
PLUGIN_CONTINUE;
    
    if(
zp_is_survivor_round() || zp_get_human_count() == 1)
        return 
ZP_PLUGIN_HANDLED;
    
    if(
get_pcvar_num(cvar_max) == had_bombs[player])
    {
        
client_print(playerprint_chat"[ZP] You can't buy Strip Bomb !")
        return 
ZP_PLUGIN_HANDLED;
    }
    
    
has_bomb[player] = 1
    had_bombs
[player]++;
    
fm_strip_user_gun(player9)
    
fm_give_item(player"weapon_smokegrenade")

    return 
PLUGIN_CONTINUE;
}

public 
fw_PlayerKilled(victimattackershouldgib)
    
has_bomb[victim] = 0;

public 
fw_ThinkGrenade(entity)
{    
    if(!
pev_valid(entity))
        return 
HAM_IGNORED
    
    
static Float:dmgtime    
    pev
(entitypev_dmgtimedmgtime)
    
    if (
dmgtime get_gametime())
        return 
HAM_IGNORED    
    
    
if(pev(entitypev_flTimeStepSound) == NADE_TYPE_STRIPBOMB)
    {
        
stripbomb_explode(entity)
        
        return 
HAM_SUPERCEDE
    
}
    
    return 
HAM_IGNORED  
}

public 
fw_SetModel(entity, const model[])
{
    static 
Float:dmgtime
    pev
(entitypev_dmgtimedmgtime)
    
    new 
owner pev(entitypev_owner)
    
    if(!
get_pcvar_num(cvar_enabled) || !dmgtime || !(equal(model[7], "w_sm"4)) || !zp_get_user_zombie(owner) || !has_bomb[owner])
        return;
    
    
fm_set_rendering(entitykRenderFxGlowShell2551280kRenderNormal16)
    
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_BEAMFOLLOW// TE id
    
write_short(entity// entity
    
write_short(g_trailSpr// sprite
    
write_byte(10// life
    
write_byte(10// width
    
write_byte(255// r
    
write_byte(128// g
    
write_byte(0// b
    
write_byte(200// brightness
    
message_end()
    
    
set_pev(entitypev_flTimeStepSoundNADE_TYPE_STRIPBOMB)
}

public 
stripbomb_explode(ent)
{
    if (!
zp_has_round_started())
        return;
    
    static 
Float:originF[3]
    
pev(entpev_originoriginF)
    
    
create_blast(originF)
    
    
//engfunc(EngFunc_EmitSound, ent, CHAN_WEAPON, grenade_infect[random_num(0, sizeof grenade_infect - 1)], 1.0, ATTN_NORM, 0, PITCH_NORM)
    
    
static attacker
    attacker 
pev(entpev_owner)
    
    
has_bomb[attacker] = 0
    
    
static victim
    victim 
= -1
    
while ((victim engfunc(EngFunc_FindEntityInSpherevictimoriginFget_pcvar_float(cvar_radius))) != 0)
    {
        if (!
is_user_alive(victim) || zp_get_user_zombie(victim) || zp_get_user_survivor(victim) || zp_get_human_count() == 1)
            continue;
        
        switch(
get_pcvar_num(cvar_mode))
        {
            case 
:
            {
                if (
pev(victimpev_armorvalue) <= 0)
                    continue;
                
                
set_pev(victimpev_armorvalue0);
            }
            case 
:
            {
                
fm_strip_user_weapons(victim)
                
fm_give_item(victim"weapon_knife")
            }
            case 
:
            {
                if (
pev(victimpev_armorvalue) > 0)                
                    
set_pev(victimpev_armorvalue0)
                
                
fm_strip_user_weapons(victim)
                
fm_give_item(victim"weapon_knife")
            }
        }
    }
    
    
engfunc(EngFunc_RemoveEntityent)
}

public 
create_blast(const Float:originF[3])
{
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF0)
    
write_byte(TE_BEAMCYLINDER// TE id
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y
    
engfunc(EngFunc_WriteCoordoriginF[2]) // z
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x axis
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y axis
    
engfunc(EngFunc_WriteCoordoriginF[2]+385.0// z axis
    
write_short(g_exploSpr// sprite
    
write_byte(0// startframe
    
write_byte(0// framerate
    
write_byte(4// life
    
write_byte(60// width
    
write_byte(0// noise
    
write_byte(255// red
    
write_byte(128// green
    
write_byte(0// blue
    
write_byte(200// brightness
    
write_byte(0// speed
    
message_end()
    
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF0)
    
write_byte(TE_BEAMCYLINDER// TE id
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y
    
engfunc(EngFunc_WriteCoordoriginF[2]) // z
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x axis
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y axis
    
engfunc(EngFunc_WriteCoordoriginF[2]+470.0// z axis
    
write_short(g_exploSpr// sprite
    
write_byte(0// startframe
    
write_byte(0// framerate
    
write_byte(4// life
    
write_byte(60// width
    
write_byte(0// noise
    
write_byte(255// red
    
write_byte(164// green
    
write_byte(0// blue
    
write_byte(200// brightness
    
write_byte(0// speed
    
message_end()
    
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF0)
    
write_byte(TE_BEAMCYLINDER// TE id
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y
    
engfunc(EngFunc_WriteCoordoriginF[2]) // z
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x axis
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y axis
    
engfunc(EngFunc_WriteCoordoriginF[2]+555.0// z axis
    
write_short(g_exploSpr// sprite
    
write_byte(0// startframe
    
write_byte(0// framerate
    
write_byte(4// life
    
write_byte(60// width
    
write_byte(0// noise
    
write_byte(255// red
    
write_byte(200// green
    
write_byte(0// blue
    
write_byte(200// brightness
    
write_byte(0// speed
    
message_end()
}

public 
replace_models(id)
{
    if (!
is_user_alive(id) || get_user_weapon(id) != CSW_SMOKEGRENADE || !has_bomb[id])
        return
    
    
set_pev(idpev_viewmodel2model_grenade_infect)
}

public 
message_cur_weapon(msg_idmsg_destmsg_entity)
    
replace_models(msg_entity);

// Stocks from fakemeta_util
stock bool:fm_strip_user_gun(indexwid 0, const wname[] = "")
{
    new 
ent_class[32];
    if (!
wid && wname[0])
        
copy(ent_classsizeof ent_class 1wname);
    else
    {
        new 
weapon widclipammo;
        if (!
weapon && !(weapon get_user_weapon(indexclipammo)))
            return 
false;
        
        
get_weaponname(weaponent_classsizeof ent_class 1);
    }
    
    new 
ent_weap fm_find_ent_by_owner(-1ent_classindex);
    if (!
ent_weap)
        return 
false;
    
    
engclient_cmd(index"drop"ent_class);
    
    new 
ent_box pev(ent_weappev_owner);
    if (!
ent_box || ent_box == index)
        return 
false;
    
    
dllfunc(DLLFunc_Thinkent_box);
    
    return 
true;
}

stock fm_give_item(index, const item[])
{
    if (!
equal(item"weapon_"7) && !equal(item"ammo_"5) && !equal(item"item_"5) && !equal(item"tf_weapon_"10))
        return 
0;

    new 
ent fm_create_entity(item);
    if (!
pev_valid(ent))
        return 
0;
    
    new 
Float:origin[3];
    
pev(indexpev_originorigin);
    
set_pev(entpev_originorigin);
    
set_pev(entpev_spawnflagspev(entpev_spawnflags) | SF_NORESPAWN);
    
dllfunc(DLLFunc_Spawnent);
    
    new 
save pev(entpev_solid);
    
dllfunc(DLLFunc_Touchentindex);
    if (
pev(entpev_solid) != save)
        return 
ent;
    
    
engfunc(EngFunc_RemoveEntityent);
    
    return -
1;
}

stock fm_set_rendering(entityfx kRenderFxNone255255255render kRenderNormalamount 16)
{
    new 
Float:RenderColor[3];
    
RenderColor[0] = float(r);
    
RenderColor[1] = float(g);
    
RenderColor[2] = float(b);
    
    
set_pev(entitypev_renderfxfx);
    
set_pev(entitypev_rendercolorRenderColor);
    
set_pev(entitypev_rendermoderender);
    
set_pev(entitypev_renderamtfloat(amount));
    
    return 
1;
}

stock fm_strip_user_weapons(index)
{
    new 
ent fm_create_entity("player_weaponstrip");
    if (!
pev_valid(ent))
        return 
0;
    
    
dllfunc(DLLFunc_Spawnent);
    
dllfunc(DLLFunc_Useentindex);
    
engfunc(EngFunc_RemoveEntityent);
    
    return 
1;
}

stock fm_find_ent_by_owner(index, const classname[], ownerjghgtype 0)
{
    new 
strtype[11] = "classname"ent index;
    switch (
jghgtype)
    {
        case 
1strtype "target";
        case 
2strtype "targetname";
    }
    
    while ((
ent engfunc(EngFunc_FindEntityByStringentstrtypeclassname)) && pev(entpev_owner) != owner) {}
    
    return 
ent;


yo creo que así estaría bien, aunque yo cambiaría la forma de dropear armas (en mi zp lo tengo bastante distinto)

(17/10/2013, 07:04 AM)xPecie escribió: Te comento, eramos 1 zombie y 2 humanos, compro la granada y me quita 10 ammo packs pero la tiro y no les quita las armas, después hemos probado con 2 zombies vs 1 humano y la granada no te la da pero te quita 5 ammo packs.

Saludos!
fijate en que modo le pones con la cvar.
(17/04/2015, 03:36 PM)Neeeeeeeeeel.- escribió: No se va a volver a conectar a internet en toda su puta vida... nadie sube porno a mi foro y vive para contarlo.
Responder
#19
(17/10/2013, 02:48 PM)RauliTop escribió:
Código PHP:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>

#define fm_create_entity(%1) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, %1))

new const NADE_TYPE_STRIPBOMB7777
new const sprite_grenade_trail[] = "sprites/laserbeam.spr"
new const sprite_grenade_ring[] = "sprites/shockwave.spr"
new const model_grenade_infect[] = "models/v_grenade_astrip.mdl"
new const bcost 5;

new 
g_trailSprg_exploSpritem_idcvar_enabledcvar_modecvar_radiuscvar_max
new has_bomb[33],had_bombs[33];

public 
plugin_init()
{
    
register_plugin("[ZP] Extra Item: Strip Bomb""1.6""Hezerf")
    
    
RegisterHam(Ham_Think"grenade""fw_ThinkGrenade")
    
RegisterHam(Ham_Killed"player""fw_PlayerKilled")
    
    
register_forward(FM_SetModel"fw_SetModel")
    
    
register_message(get_user_msgid("CurWeapon"), "message_cur_weapon")
    
    
register_event("HLTV","Event_New_Round","a""1=0""2=0")
    
    
cvar_enabled register_cvar("zp_strip_bomb""1")
    
cvar_mode register_cvar("zp_strip_mode""0")
    
cvar_radius register_cvar("zp_strip_radius""250.0")
    
cvar_max register_cvar("zp_strip_max","5")
}

public 
plugin_precache()
{
    
g_trailSpr engfunc(EngFunc_PrecacheModelsprite_grenade_trail)
    
g_exploSpr engfunc(EngFunc_PrecacheModelsprite_grenade_ring)
    
    
engfunc(EngFunc_PrecacheModelmodel_grenade_infect)
    
    
item_id zp_register_extra_item("Strip Bomb"bcostZP_TEAM_ZOMBIE)
}

public 
client_disconnect(id)
{
    
has_bomb[id] = 0;
    
had_bombs[id] = 0;
}

public 
Event_New_Round()
{
    
arrayset(had_bombs,0,32);
    
arrayset(has_bomb,0,32);
}
public 
zp_extra_item_selected(playeritemid)
{
    if(
itemid != item_id)
        return 
PLUGIN_CONTINUE;
    
    if(
zp_is_survivor_round() || zp_get_human_count() == 1)
        return 
ZP_PLUGIN_HANDLED;
    
    if(
get_pcvar_num(cvar_max) == had_bombs[player])
    {
        
client_print(playerprint_chat"[ZP] You can't buy Strip Bomb !")
        return 
ZP_PLUGIN_HANDLED;
    }
    
    
has_bomb[player] = 1
    had_bombs
[player]++;
    
fm_strip_user_gun(player9)
    
fm_give_item(player"weapon_smokegrenade")

    return 
PLUGIN_CONTINUE;
}

public 
fw_PlayerKilled(victimattackershouldgib)
    
has_bomb[victim] = 0;

public 
fw_ThinkGrenade(entity)
{    
    if(!
pev_valid(entity))
        return 
HAM_IGNORED
    
    
static Float:dmgtime    
    pev
(entitypev_dmgtimedmgtime)
    
    if (
dmgtime get_gametime())
        return 
HAM_IGNORED    
    
    
if(pev(entitypev_flTimeStepSound) == NADE_TYPE_STRIPBOMB)
    {
        
stripbomb_explode(entity)
        
        return 
HAM_SUPERCEDE
    
}
    
    return 
HAM_IGNORED  
}

public 
fw_SetModel(entity, const model[])
{
    static 
Float:dmgtime
    pev
(entitypev_dmgtimedmgtime)
    
    new 
owner pev(entitypev_owner)
    
    if(!
get_pcvar_num(cvar_enabled) || !dmgtime || !(equal(model[7], "w_sm"4)) || !zp_get_user_zombie(owner) || !has_bomb[owner])
        return;
    
    
fm_set_rendering(entitykRenderFxGlowShell2551280kRenderNormal16)
    
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_BEAMFOLLOW// TE id
    
write_short(entity// entity
    
write_short(g_trailSpr// sprite
    
write_byte(10// life
    
write_byte(10// width
    
write_byte(255// r
    
write_byte(128// g
    
write_byte(0// b
    
write_byte(200// brightness
    
message_end()
    
    
set_pev(entitypev_flTimeStepSoundNADE_TYPE_STRIPBOMB)
}

public 
stripbomb_explode(ent)
{
    if (!
zp_has_round_started())
        return;
    
    static 
Float:originF[3]
    
pev(entpev_originoriginF)
    
    
create_blast(originF)
    
    
//engfunc(EngFunc_EmitSound, ent, CHAN_WEAPON, grenade_infect[random_num(0, sizeof grenade_infect - 1)], 1.0, ATTN_NORM, 0, PITCH_NORM)
    
    
static attacker
    attacker 
pev(entpev_owner)
    
    
has_bomb[attacker] = 0
    
    
static victim
    victim 
= -1
    
while ((victim engfunc(EngFunc_FindEntityInSpherevictimoriginFget_pcvar_float(cvar_radius))) != 0)
    {
        if (!
is_user_alive(victim) || zp_get_user_zombie(victim) || zp_get_user_survivor(victim) || zp_get_human_count() == 1)
            continue;
        
        switch(
get_pcvar_num(cvar_mode))
        {
            case 
:
            {
                if (
pev(victimpev_armorvalue) <= 0)
                    continue;
                
                
set_pev(victimpev_armorvalue0);
            }
            case 
:
            {
                
fm_strip_user_weapons(victim)
                
fm_give_item(victim"weapon_knife")
            }
            case 
:
            {
                if (
pev(victimpev_armorvalue) > 0)                
                    
set_pev(victimpev_armorvalue0)
                
                
fm_strip_user_weapons(victim)
                
fm_give_item(victim"weapon_knife")
            }
        }
    }
    
    
engfunc(EngFunc_RemoveEntityent)
}

public 
create_blast(const Float:originF[3])
{
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF0)
    
write_byte(TE_BEAMCYLINDER// TE id
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y
    
engfunc(EngFunc_WriteCoordoriginF[2]) // z
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x axis
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y axis
    
engfunc(EngFunc_WriteCoordoriginF[2]+385.0// z axis
    
write_short(g_exploSpr// sprite
    
write_byte(0// startframe
    
write_byte(0// framerate
    
write_byte(4// life
    
write_byte(60// width
    
write_byte(0// noise
    
write_byte(255// red
    
write_byte(128// green
    
write_byte(0// blue
    
write_byte(200// brightness
    
write_byte(0// speed
    
message_end()
    
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF0)
    
write_byte(TE_BEAMCYLINDER// TE id
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y
    
engfunc(EngFunc_WriteCoordoriginF[2]) // z
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x axis
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y axis
    
engfunc(EngFunc_WriteCoordoriginF[2]+470.0// z axis
    
write_short(g_exploSpr// sprite
    
write_byte(0// startframe
    
write_byte(0// framerate
    
write_byte(4// life
    
write_byte(60// width
    
write_byte(0// noise
    
write_byte(255// red
    
write_byte(164// green
    
write_byte(0// blue
    
write_byte(200// brightness
    
write_byte(0// speed
    
message_end()
    
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF0)
    
write_byte(TE_BEAMCYLINDER// TE id
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y
    
engfunc(EngFunc_WriteCoordoriginF[2]) // z
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x axis
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y axis
    
engfunc(EngFunc_WriteCoordoriginF[2]+555.0// z axis
    
write_short(g_exploSpr// sprite
    
write_byte(0// startframe
    
write_byte(0// framerate
    
write_byte(4// life
    
write_byte(60// width
    
write_byte(0// noise
    
write_byte(255// red
    
write_byte(200// green
    
write_byte(0// blue
    
write_byte(200// brightness
    
write_byte(0// speed
    
message_end()
}

public 
replace_models(id)
{
    if (!
is_user_alive(id) || get_user_weapon(id) != CSW_SMOKEGRENADE || !has_bomb[id])
        return
    
    
set_pev(idpev_viewmodel2model_grenade_infect)
}

public 
message_cur_weapon(msg_idmsg_destmsg_entity)
    
replace_models(msg_entity);

// Stocks from fakemeta_util
stock bool:fm_strip_user_gun(indexwid 0, const wname[] = "")
{
    new 
ent_class[32];
    if (!
wid && wname[0])
        
copy(ent_classsizeof ent_class 1wname);
    else
    {
        new 
weapon widclipammo;
        if (!
weapon && !(weapon get_user_weapon(indexclipammo)))
            return 
false;
        
        
get_weaponname(weaponent_classsizeof ent_class 1);
    }
    
    new 
ent_weap fm_find_ent_by_owner(-1ent_classindex);
    if (!
ent_weap)
        return 
false;
    
    
engclient_cmd(index"drop"ent_class);
    
    new 
ent_box pev(ent_weappev_owner);
    if (!
ent_box || ent_box == index)
        return 
false;
    
    
dllfunc(DLLFunc_Thinkent_box);
    
    return 
true;
}

stock fm_give_item(index, const item[])
{
    if (!
equal(item"weapon_"7) && !equal(item"ammo_"5) && !equal(item"item_"5) && !equal(item"tf_weapon_"10))
        return 
0;

    new 
ent fm_create_entity(item);
    if (!
pev_valid(ent))
        return 
0;
    
    new 
Float:origin[3];
    
pev(indexpev_originorigin);
    
set_pev(entpev_originorigin);
    
set_pev(entpev_spawnflagspev(entpev_spawnflags) | SF_NORESPAWN);
    
dllfunc(DLLFunc_Spawnent);
    
    new 
save pev(entpev_solid);
    
dllfunc(DLLFunc_Touchentindex);
    if (
pev(entpev_solid) != save)
        return 
ent;
    
    
engfunc(EngFunc_RemoveEntityent);
    
    return -
1;
}

stock fm_set_rendering(entityfx kRenderFxNone255255255render kRenderNormalamount 16)
{
    new 
Float:RenderColor[3];
    
RenderColor[0] = float(r);
    
RenderColor[1] = float(g);
    
RenderColor[2] = float(b);
    
    
set_pev(entitypev_renderfxfx);
    
set_pev(entitypev_rendercolorRenderColor);
    
set_pev(entitypev_rendermoderender);
    
set_pev(entitypev_renderamtfloat(amount));
    
    return 
1;
}

stock fm_strip_user_weapons(index)
{
    new 
ent fm_create_entity("player_weaponstrip");
    if (!
pev_valid(ent))
        return 
0;
    
    
dllfunc(DLLFunc_Spawnent);
    
dllfunc(DLLFunc_Useentindex);
    
engfunc(EngFunc_RemoveEntityent);
    
    return 
1;
}

stock fm_find_ent_by_owner(index, const classname[], ownerjghgtype 0)
{
    new 
strtype[11] = "classname"ent index;
    switch (
jghgtype)
    {
        case 
1strtype "target";
        case 
2strtype "targetname";
    }
    
    while ((
ent engfunc(EngFunc_FindEntityByStringentstrtypeclassname)) && pev(entpev_owner) != owner) {}
    
    return 
ent;


yo creo que así estaría bien, aunque yo cambiaría la forma de dropear armas (en mi zp lo tengo bastante distinto)

(17/10/2013, 07:04 AM)xPecie escribió: Te comento, eramos 1 zombie y 2 humanos, compro la granada y me quita 10 ammo packs pero la tiro y no les quita las armas, después hemos probado con 2 zombies vs 1 humano y la granada no te la da pero te quita 5 ammo packs.

Saludos!
fijate en que modo le pones con la cvar.

Vale lo pruebo y te aviso gracias.

P.D.: Funciona perfecto, gracias raul Guiño
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)