[ZP] Tomar arma del suelo
#1
Este code es para guardar impulse de un arma cuando es botada al suelo y pueda recogerlo alguien mas.

Code:
Código PHP:
new const g_sWeaponsAvailable[][] = 
{
    
// Pistolas
    
"weapon_glock18",
    
"weapon_usp",
    
"weapon_p228"
    
"weapon_deagle"
    
"weapon_fiveseven",
    
"weapon_elite",
    
    
// Escopetas
    
"weapon_m3",
    
"weapon_xm1014",
    
    
// SubFusiles
    
"weapon_tmp",
    
"weapon_mac10",
    
"weapon_mp5navy",
    
"weapon_ump45",
    
"weapon_p90",
    
    
// Fusiles
    
"weapon_galil",
    
"weapon_famas",
    
"weapon_m4a1",
    
"weapon_ak47",
    
"weapon_sg552",
    
"weapon_aug",
    
    
// FrancoTiradores
    
"weapon_scout",
    
"weapon_awp",
    
"weapon_sg550",
    
"weapon_g3sg1",
    
    
// MachineGuns
    
"weapon_m249"
}

public 
plugin_init()
{
    for(new 
sizeof g_sWeaponsAvailablei++)
        
RegisterHam(Ham_Item_AddToPlayerg_sWeaponsAvailable[i], "fw_Item_AddToPlayer")
}

public 
fw_SetModel(entity, const model[])
{
    
// We don't care
    
if (strlen(model) < 8)
        return 
FMRES_IGNORED;
    
    
// Get entity's classname
    
static classname[10], iStoredGalilIDiStoredGalilID1
    pev
(entitypev_classnameclassnamecharsmax(classname))
        
    static 
id;id pev(entitypev_owner)
        
    
// Check if it's a weapon box
    
if (equal(classname"weaponbox"))
    {    
        if(
g_arma_prim[id] > 0)
        {
            if(!
equali(modelmenu_death[g_arma_prim[id]][gwModeloold]))
                return 
FMRES_IGNORED
                
            iStoredGalilID 
fm_find_ent_by_owner(-1menu_death[g_arma_prim[id]][item_csname], entity)
            
entity_set_model(entitymenu_death[g_arma_prim[id]][gwModelo])
            
entity_set_int(iStoredGalilIDEV_INT_impulsemenu_death[g_arma_prim[id]][i_WeaponImpulseIndex])
            
g_arma_prim[id] = 0
            
            
return FMRES_SUPERCEDE
        
}
        
        if(
g_arma_sec[id] > 0)
        {
            if(!
equali(modelmenu_death2[g_arma_sec[id]][gwModeloold]))
                return 
FMRES_IGNORED;

            
iStoredGalilID1 fm_find_ent_by_owner(-1menu_death2[g_arma_sec[id]][item_csname], entity)    
            
entity_set_model(entitymenu_death2[g_arma_sec[id]][gwModelo])
            
entity_set_int(iStoredGalilID1EV_INT_impulsemenu_death2[g_arma_sec[id]][i_WeaponImpulseIndex])
            
g_arma_sec[id] = 0
            
            
return FMRES_SUPERCEDE
        
}
        
        return 
FMRES_IGNORED;
    }
    
    
// Narrow down our matches a bit
    
if (model[7] != 'w' || model[8] != '_')
        return 
FMRES_IGNORED;
    
    
// Get damage time of grenade
    
static Float:dmgtime
    pev
(entitypev_dmgtimedmgtime)
    
    
// Grenade not yet thrown
    
if (dmgtime == 0.0)
        return 
FMRES_IGNORED;
    
    
// Get whether grenade's owner is a zombie
    
if (g_zombie[pev(entitypev_owner)])
    {
        if (
model[9] == 'h' && model[10] == 'e' && get_pcvar_num(cvar_extrainfbomb)) // Infection Bomb
        
{
            
// Give it a glow
            
fm_set_rendering(entitykRenderFxGlowShell02500kRenderNormal10);
            
            
// And a colored trail
            
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
            
write_byte(TE_BEAMFOLLOW// TE id
            
write_short(entity// entity
            
write_short(g_trailSpr// sprite
            
write_byte(3// life
            
write_byte(3// width
            
write_byte(0// r
            
write_byte(250// g
            
write_byte(0// b
            
write_byte(200// brightness
            
message_end()
            
            
// Set grenade type on the thrown grenade entity
            
set_pev(entityPEV_NADE_TYPENADE_TYPE_INFECTION)
            
set_pev(entitypev_dmgtime99999999.0
            
            return 
FMRES_SUPERCEDE
        
}
    }
    else if (
model[9] == 'h' && model[10] == 'e' && get_pcvar_num(cvar_firegrenades)) // Napalm Grenade
    
{
        
// Give it a glow
        
fm_set_rendering(entitykRenderFxGlowShell20000kRenderNormal10);
        
        
// And a colored trail
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_BEAMFOLLOW// TE id
        
write_short(entity// entity
        
write_short(g_trailSpr// sprite
        
write_byte(3// life
        
write_byte(3// width
        
write_byte(200// r
        
write_byte(0// g
        
write_byte(0// b
        
write_byte(200// brightness
        
message_end()
        
        
entity_set_model(entitymodel_wgrenade_fire)
        
        
// Set grenade type on the thrown grenade entity
        
set_pev(entityPEV_NADE_TYPENADE_TYPE_NAPALM)
        
set_pev(entitypev_dmgtime99999999.0
        
        return 
FMRES_SUPERCEDE
    
}
    else if (
model[9] == 'f' && model[10] == 'l' && get_pcvar_num(cvar_frostgrenades)) // Frost Grenade
    
{
        
// Give it a glow
        
fm_set_rendering(entitykRenderFxGlowShell0100200kRenderNormal10);
        
        
// And a colored trail
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_BEAMFOLLOW// TE id
        
write_short(entity// entity
        
write_short(g_trailSpr// sprite
        
write_byte(3// life
        
write_byte(3// width
        
write_byte(0// r
        
write_byte(100// g
        
write_byte(200// b
        
write_byte(200// brightness
        
message_end()
        
        
entity_set_model(entitymodel_wgrenade_frost)
        
        
// Set grenade type on the thrown grenade entity
        
set_pev(entityPEV_NADE_TYPENADE_TYPE_FROST)
        
set_pev(entitypev_dmgtime99999999.0
        
        return 
FMRES_SUPERCEDE
    
}
    else if (
model[9] == 's' && model[10] == 'm' && get_pcvar_num(cvar_flaregrenades)) // Flare
    
{
        
// Give it a glow
        
fm_set_rendering(entitykRenderFxGlowShell255255255kRenderNormal10);
        
set_pev(entitypev_effectsEF_LIGHT)
        
        
// Set grenade type on the thrown grenade entity
        
set_pev(entityPEV_NADE_TYPENADE_TYPE_FLARE)
        
set_pev(entitypev_dmgtime99999999.0
        
        return 
FMRES_SUPERCEDE
    
}
    
    return 
FMRES_IGNORED;
}

public 
fw_Item_AddToPlayer(iWeaponid)
{
    if(!
pev_valid(iWeapon) || !is_user_connected(id) || !is_user_alive(id))
        return 
HAM_IGNORED
        
    
// Make sure that this is M79
    
for(new sizeof menu_deathi++)
    {
        if(
entity_get_int(iWeaponEV_INT_impulse) == menu_death[i][i_WeaponImpulseIndex])
        {
            
// Update
            
g_arma_prim[id] = i
            
            
// Reset weapon options
            
entity_set_int(iWeaponEV_INT_impulse0)
        }
    }
    
    for(new 
sizeof menu_death2i++)
    {
        if(
entity_get_int(iWeaponEV_INT_impulse) == menu_death2[i][i_WeaponImpulseIndex])
        {
            
// Update
            
g_arma_sec[id] = i
            
            
// Reset weapon options
            
entity_set_int(iWeaponEV_INT_impulse0)
        }
    }
    
    return 
HAM_IGNORED

Responder
#2
y es un aporte o que onda?
Ingeniero agrónomo y desarrollador de Software.

tutoriales-allied
buscas un zp?

"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"

Merci Alliedmodders pour m'introduire dans la programmation.
Responder
#3
lo siento, no me explique bien, este code lo idee yo para agarrar las armas del suelo con el menu de armas por niveles de blackfur, el problema es que si yo boto la pistola, el impulse no se guarda, es decir, entrega una pistola normal y corriente (sin skin ni nada).
Responder
#4
iStoredGalilID = fm_find_ent_by_owner(-1, menu_death[g_arma_prim[id]][item_csname], entity)

por qué usas iStoredGalilID y no entity?
Ingeniero agrónomo y desarrollador de Software.

tutoriales-allied
buscas un zp?

"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"

Merci Alliedmodders pour m'introduire dans la programmation.
Responder
#5
Me guie por un extra item:

Código PHP:
// Added by Shidla
public fw_SetModel(entitymodel[])
{
    
// Entity is not valid
    
if(!is_valid_ent(entity))
        return 
FMRES_IGNORED;
    
    
// Entity model is not w_xm1014
    
if(!equal(model"models/w_mp5.mdl")) 
        return 
FMRES_IGNORED;
    
    
// Get classname
    
static szClassName[33]
    
entity_get_string(entityEV_SZ_classnameszClassNamecharsmax(szClassName))
    
    
// Not a Weapon box
    
if(!equal(szClassName"weaponbox"))
        return 
FMRES_IGNORED
    
    
// Some vars
    
static iOwneriStoredGalilID
    
    
// Get owner
    
iOwner entity_get_edict(entityEV_ENT_owner)
    
    
// Get drop weapon index (galil) to use in fw_Galil_AddToPlayer forward
    
iStoredGalilID find_ent_by_owner(ENG_NULLENT"weapon_mp5navy"entity)
    
    
// Entity classname is weaponbox, and galil has founded
    
if(g_Hasarma[iOwner] && is_valid_ent(iStoredGalilID))
    {
        
// Setting weapon options
        
entity_set_int(iStoredGalilIDEV_INT_WEAPONKEYGARMA_WEAPONKEY)
        
        
// Reset user vars
        
g_Hasarma[iOwner] = false
        
        
// Set weaponbox new model
        
entity_set_model(entityARMA_W_MODEL)
        
        return 
FMRES_SUPERCEDE
    
}
    
    return 
FMRES_IGNORED

Responder
#6
ahi me acorde, iWeapon es el CSW_ asi que esta bien lo de FM_SETMODEL, ahora item_csname corresponde a los string "weapon_?"

logs no tenes?
Ingeniero agrónomo y desarrollador de Software.

tutoriales-allied
buscas un zp?

"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"

Merci Alliedmodders pour m'introduire dans la programmation.
Responder
#7
no hay logs, sobre lo de item_csname:

Código PHP:
enum _:menu_dm 

    
item_name_v2[90], item_iditem_csname[90], item_levelgvModelo[90], gpModelo[90], 
    
gwModelo[90], i_WeaponImpulseIndexgwModeloold[90], Float:item_damage,
    
redgreenblue


new const 
menu_death[][menu_dm] = 

    { 
"Golden AK-47"CSW_AK47"weapon_ak47"20 "models/zombie_plague/v_golden_ak47.mdl""models/zombie_plague/p_golden_ak47.mdl""models/zombie_plague/w_golden_ak47.mdl"132911"models/w_ak47.mdl"1.5255255}

Responder
#8
El problema está en que tenés que guardar el tipo de arma en la propia entidad que se crea cuando vos compras el arma, ya que si lo haces mediante variables propias de los jugadores (hasta que no la tires al suelo va bien) pero cuando la tiras no tenes forma de comprobar a que index de tus armas corresponde.

Por eso es que guardar el tipo de arma en la propia entidad es una solución bastante práctica, podrías hacer algo asi:

Definis a cada una de tus armas un identificador
Código PHP:
#define WEAPON_ID_SPECIAL 1337 

Cuando compras el arma mediante el menú, modificas la entidad que te devuelve el give_item(id, "weapon_x")
Código PHP:
entity_set_int(iEntEV_INT_iuser4WEAPON_ID_SPECIAL); 

En el touch del weapon, tendrias que hacer lo siguiente
Código PHP:
// Registras el touch en tu plugin_init
register_touch("weaponbox""player""touch__WeaponBox");

// En la función touch__WeaponBox
// Si devuelve true, es que el arma que juntaste del piso corresponde a una de tus armas en tu array de armas
if(entity_get_int(iEntEV_INT_iuser4) == WEAPON_ID_SPECIAL

Al hacer esto, sabes que tipo de arma tocaste, y podes setearle alguna variable en 1 que tiene tal arma especial, para reemplazar su skin, modificar daño del arma, etc.

Esta es la única forma que tenes para poder lograr lo que queres, la otra es bloquear que se puedan dropear las armas y te ahorras todo este problema.
Responder
#9
La verdad es que según yo, el error esta en fw_SetModel, al momento de tirar el arma.

Puesto que si yo escojo el ak gold y la deagle gold, y boto solamente la deagle gold al suelo, la deagle aparece con model normal en el suelo, pero si la recojo, es una deagle gold con sus características de model, daño, etc.

Algo esta mal ahí pero no se que Triste

EDIT (Lo tengo solucionado, al final lo deje así, si hay alguna linea tonta favor de decirlo):
Código PHP:
public fw_SetModel(entity, const model[])
{
    
// We don't care
    
if (strlen(model) < 8)
        return 
FMRES_IGNORED;
    
    new 
iStoredGalilIDiStoredGalilID1
    
    
static className[32]
    
pev(entitypev_classnameclassNamesizeof(className))

    static 
iOwner
    iOwner 
pev(entitypev_owner)
    
    
// Check if it's a weapon box
    
if (equal(className"weaponbox"))
    {        
        if (!
is_valid_ent(entity))
            return 
FMRES_IGNORED;    
            
        if (
equal(modelmenu_death[g_arma_prim[iOwner]][gwModeloold]))
        {
            
iStoredGalilID fm_find_ent_by_owner(-1menu_death[g_arma_prim[iOwner]][item_csname], entity)
            
set_pev(iStoredGalilIDpev_impulsemenu_death[g_arma_prim[iOwner]][i_WeaponImpulseIndex])
            
entity_set_model(entitymenu_death[g_arma_prim[iOwner]][gwModelo])
            
g_arma_prim[iOwner] = 0
            
            
return FMRES_SUPERCEDE
        
}
        
        if (
equal(modelmenu_death2[g_arma_sec[iOwner]][gwModeloold]))
        {    
            
iStoredGalilID1 fm_find_ent_by_owner(-1menu_death2[g_arma_sec[iOwner]][item_csname], entity)
            
set_pev(iStoredGalilID1pev_impulsemenu_death2[g_arma_sec[iOwner]][i_WeaponImpulseIndex])
            
entity_set_model(entitymenu_death2[g_arma_sec[iOwner]][gwModelo])
            
g_arma_sec[iOwner] = 0
            
            
return FMRES_SUPERCEDE
        
}
    }
    
    
// Narrow down our matches a bit
    
if (model[7] != 'w' || model[8] != '_')
        return 
FMRES_IGNORED;
    
    
// Get damage time of grenade
    
static Float:dmgtime
    pev
(entitypev_dmgtimedmgtime)
    
    
// Grenade not yet thrown
    
if (dmgtime == 0.0)
        return 
FMRES_IGNORED;
    
    
// Get whether grenade's owner is a zombie
    
if (g_zombie[pev(entitypev_owner)])
    {
        if (
model[9] == 'h' && model[10] == 'e' && get_pcvar_num(cvar_extrainfbomb)) // Infection Bomb
        
{
            
// Give it a glow
            
fm_set_rendering(entitykRenderFxGlowShell02500kRenderNormal10);
            
            
// And a colored trail
            
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
            
write_byte(TE_BEAMFOLLOW// TE id
            
write_short(entity// entity
            
write_short(g_trailSpr// sprite
            
write_byte(3// life
            
write_byte(3// width
            
write_byte(0// r
            
write_byte(250// g
            
write_byte(0// b
            
write_byte(200// brightness
            
message_end()
            
            
// Set grenade type on the thrown grenade entity
            
set_pev(entityPEV_NADE_TYPENADE_TYPE_INFECTION)
            
set_pev(entitypev_dmgtime99999999.0
            
            return 
FMRES_SUPERCEDE
        
}
    }
    else if (
model[9] == 'h' && model[10] == 'e' && get_pcvar_num(cvar_firegrenades)) // Napalm Grenade
    
{
        
// Give it a glow
        
fm_set_rendering(entitykRenderFxGlowShell20000kRenderNormal10);
        
        
// And a colored trail
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_BEAMFOLLOW// TE id
        
write_short(entity// entity
        
write_short(g_trailSpr// sprite
        
write_byte(3// life
        
write_byte(3// width
        
write_byte(200// r
        
write_byte(0// g
        
write_byte(0// b
        
write_byte(200// brightness
        
message_end()
        
        
entity_set_model(entitymodel_wgrenade_fire)
        
        
// Set grenade type on the thrown grenade entity
        
set_pev(entityPEV_NADE_TYPENADE_TYPE_NAPALM)
        
set_pev(entitypev_dmgtime99999999.0
        
        return 
FMRES_SUPERCEDE
    
}
    else if (
model[9] == 'f' && model[10] == 'l' && get_pcvar_num(cvar_frostgrenades)) // Frost Grenade
    
{
        
// Give it a glow
        
fm_set_rendering(entitykRenderFxGlowShell0100200kRenderNormal10);
        
        
// And a colored trail
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_BEAMFOLLOW// TE id
        
write_short(entity// entity
        
write_short(g_trailSpr// sprite
        
write_byte(3// life
        
write_byte(3// width
        
write_byte(0// r
        
write_byte(100// g
        
write_byte(200// b
        
write_byte(200// brightness
        
message_end()
        
        
entity_set_model(entitymodel_wgrenade_frost)
        
        
// Set grenade type on the thrown grenade entity
        
set_pev(entityPEV_NADE_TYPENADE_TYPE_FROST)
        
set_pev(entitypev_dmgtime99999999.0
        
        return 
FMRES_SUPERCEDE
    
}
    else if (
model[9] == 's' && model[10] == 'm' && get_pcvar_num(cvar_flaregrenades)) // Flare
    
{
        
// Give it a glow
        
fm_set_rendering(entitykRenderFxGlowShell255255255kRenderNormal10);
        
set_pev(entitypev_effectsEF_LIGHT)
        
        
// Set grenade type on the thrown grenade entity
        
set_pev(entityPEV_NADE_TYPENADE_TYPE_FLARE)
        
set_pev(entitypev_dmgtime99999999.0
        
        return 
FMRES_SUPERCEDE
    
}
    
    return 
FMRES_IGNORED;
}

public 
fw_Item_AddToPlayer(iWeaponid)
{    
    new 
iSecretCode pev(iWeaponpev_impulse)
    
    for(new 
sizeof menu_deathi++)
    {
        if(
iSecretCode == menu_death[i][i_WeaponImpulseIndex])
        {
            
g_arma_prim[id] = i
            set_pev
(iWeaponpev_impulse0)
            return 
HAM_HANDLED
        
}
    }
    
    for(new 
sizeof menu_death2i++)
    {
        if(
iSecretCode == menu_death2[i][i_WeaponImpulseIndex])
        {
            
g_arma_sec[id] = i
            set_pev
(iWeaponpev_impulse0)
            return 
HAM_HANDLED
        
}
    }
    
    return 
HAM_IGNORED


Gracias INTIFADA y roccoxx
Responder
#10
al tirar la deagle seguro la variable te queda en 1, si vos la tiras y otro jugador la agarra probablemente tenga el arma normal, si lo que estas tratando de hacer es que al tirar el arma otro pueda agarrarla, tendrias que editar el plugin base del arma misma
Responder
#11
para eso le doy la variable con su numero correspondiente cuando recojo el arma del suelo: g_arma_prim[id] = i, g_arma_sec[id] = i en fw_Item_AddToPlayer, luego de que recojan el arma, restablezco el impulse a 0: set_pev(iWeapon, pev_impulse, 0)
Responder
#12
Te doy un ejemplo como lo tengo yo
Código PHP:
#define PRIMARY_ENT         EV_INT_iuser3 // Donde se va a guardar el numero de arma PRIMARIA elegida desde el menu o agarrada del piso
#define SECONDARY_ENT         EV_INT_iuser2 // Donde se va a guardar el numero de arma SECUNDARIA elegida desde el menu o agarrada del piso

enum WEAPON_TYPE {
    
PRIMARY// Armas primarias
    
SECONDARY// Armas secundarias
    
TERCIARY// Armas terciariaras (Cuchillos)
    
LASERMINE // Lasermines
}

new 
g_weapon_using[MAX_SLOTS+1][WEAPON_TYPE]
new 
g_weapon_select[MAX_SLOTS+1][WEAPON_TYPE]
new 
g_weapon_next[MAX_SLOTS+1][WEAPON_TYPE]

// New weapons update
stock update_current_weapon_primary(idcurrent_weapon_ent) {
    if (!
g_isalive[id] || !pev_valid(current_weapon_ent)) return;

    
g_weapon_using[id][PRIMARY] = entity_get_int(current_weapon_entPRIMARY_ENT// Le seteamos al jugador el numero que tiene la entidad del arma primaria
}

stock update_current_weapon_secondary(idcurrent_weapon_ent) {
    if (!
g_isalive[id] || !pev_valid(current_weapon_ent)) return;

    
g_weapon_using[id][SECONDARY] = entity_get_int(current_weapon_entSECONDARY_ENT// Le seteamos al jugador el numero que tiene la entidad del arma secundaria

public buy_weapons(const taskid) {
    static 
id;
    
id = (taskid g_maxplayers) ? ID_SPAWN taskid;

    if(!
g_isalive[id] || g_zombie[id] || g_survivor[id])
        return 
PLUGIN_HANDLED;

    
dropWeapons(id1)

    
strip_user_weapons(id);
    
give_item(id,"weapon_knife")

    
// Arma primaria
    
g_weapon_select[id][PRIMARY] = g_weapon_next[id][PRIMARY]

    new 
iWeaponId;
    
iWeaponId weaponNameId(STRUCT_PRIMARY[g_weapon_select[id][PRIMARY]][WEAPON_ENT])

    new 
iPrimaryiPrimary give_item(idSTRUCT_PRIMARY[g_weapon_select[id][PRIMARY]][WEAPON_ENT])
    
ExecuteHamB(Ham_GiveAmmoidMAX_BPAMMO[iWeaponId], AMMO_TYPE[iWeaponId], MAX_BPAMMO[iWeaponId]);

    
dropWeapons(id2)

    
// Secundaria
    
g_weapon_select[id][SECONDARY] = g_weapon_next[id][SECONDARY]

    
iWeaponId weaponNameId(STRUCT_SECONDARY[g_weapon_select[id][SECONDARY]][WEAPON_ENT])

    new 
iSecondaryiSecondary give_item(idSTRUCT_SECONDARY[g_weapon_select[id][SECONDARY]][WEAPON_ENT])
    
ExecuteHamB(Ham_GiveAmmoidMAX_BPAMMO[iWeaponId], AMMO_TYPE[iWeaponId], MAX_BPAMMO[iWeaponId]);
    

    if (
is_valid_ent(iPrimary)) {
        
entity_set_int(iPrimaryPRIMARY_ENTg_weapon_select[id][PRIMARY]) // Guardamos el numero del arma en la entidad

        
ExecuteHamB(Ham_Item_DeployiPrimary); // Le seteamos el model
        
update_current_weapon_primary(idiPrimary// Le seteamos el numero del arma que esta usando al jugador
    
}

    if (
is_valid_ent(iSecondary)) {
        
entity_set_int(iSecondarySECONDARY_ENTg_weapon_select[id][SECONDARY]) // Guardamos el numero del arma en la entidad
    
}
    

    
g_canbuy[id] = false

    
return PLUGIN_CONTINUE;
}

// Cuando el jugador agarra o cambia de arma
public fw_Item_Deploy_Post(const weapon_ent) {
    
// Get weapon's owner
    
static owner
    owner 
getWeaponEntId(weapon_ent)
    
    
// Valid owner?
    
if (!pev_valid(owner))
        return;

    
// Get weapon's id
    
static weaponid
    weaponid 
cs_get_weapon_id(weapon_ent)

    
// Only Humans
    
if (!g_zombie[owner] && !g_nemesis[owner])
    {
        
// Si el jugador equipa un arma primaria
        
if((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)
        {
            
// Le seteamos el numero del arma primaria que esta usando
            
update_current_weapon_primary(ownerweapon_ent)
            
ExecuteHamB(Ham_GiveAmmoownerMAX_BPAMMO[weaponid], AMMO_TYPE[weaponid], MAX_BPAMMO[weaponid]);
        }

        
// Si el jugador cambia al arma secundaria
        
if((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)
        {
            
// Le seteamos el numero del arma secundaria que esta usando
            
update_current_weapon_secondary(ownerweapon_ent)
            
ExecuteHamB(Ham_GiveAmmoownerMAX_BPAMMO[weaponid], AMMO_TYPE[weaponid], MAX_BPAMMO[weaponid]);
        }
    }
        
    
g_currentweapon[owner] = weaponid
    
      
// Le cambiamos el model      
    
replace_weapon_models(ownerweaponid)

    if (
g_zombie[owner] && !((1<<weaponid) & ZOMBIE_ALLOWED_WEAPONS_BITSUM))
    {
        
// Switch to knife
        
g_currentweapon[owner] = CSW_KNIFE
        engclient_cmd
(owner"weapon_knife")
    }
}

replace_weapon_models(idweaponid)
{
    if(
weaponid == STRUCT_PRIMARY[g_weapon_using[id][PRIMARY]][WEAPON_CSW]) // si la arma que tiene == a la del menu que el habia obtenido
    
{
        static 
MDL[100]
        if(!
equal(STRUCT_PRIMARY[g_weapon_using[id][PRIMARY]][WEAPON_VMDL], "default"))
        {    
// Si no es default le damos el modelo 
            
formatex(MDLsizeof MDL 1"models/eg_zombie/%s.mdl"STRUCT_PRIMARY[g_weapon_using[id][PRIMARY]][WEAPON_VMDL])
            
entity_set_string(idEV_SZ_viewmodelMDL)
        }
        
        if(!
equal(STRUCT_PRIMARY[g_weapon_using[id][PRIMARY]][WEAPON_PMDL] , "default"))
        {
            
formatex(MDLsizeof MDL 1"models/eg_zombie/%s.mdl"STRUCT_PRIMARY[g_weapon_using[id][PRIMARY]][WEAPON_PMDL])
            
entity_set_string(idEV_SZ_weaponmodelMDL)// Si no es default le damos el modelo
        
}
    }

    if(
weaponid == STRUCT_SECONDARY[g_weapon_using[id][SECONDARY]][WEAPON_CSW]) // si la arma que tiene == a la del menu que el habia obtenido
    
{
        static 
MDL[100]
        if(!
equal(STRUCT_SECONDARY[g_weapon_using[id][SECONDARY]][WEAPON_VMDL], "default"))
        {    
// Si no es default le damos el modelo 
            
formatex(MDLsizeof MDL 1"models/eg_zombie/%s.mdl"STRUCT_SECONDARY[g_weapon_using[id][SECONDARY]][WEAPON_VMDL])
            
entity_set_string(idEV_SZ_viewmodelMDL)
        }
        
        if(!
equal(STRUCT_SECONDARY[g_weapon_using[id][SECONDARY]][WEAPON_PMDL] , "default"))
        {
            
formatex(MDLsizeof MDL 1"models/eg_zombie/%s.mdl"STRUCT_SECONDARY[g_weapon_using[id][SECONDARY]][WEAPON_PMDL])
            
entity_set_string(idEV_SZ_weaponmodelMDL)// Si no es default le damos el modelo
        
}
    } 

Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)