15/08/2019, 03:24 PM
(Última modificación: 15/08/2019, 04:08 PM por iZeus. Edited 2 times in total.)
Este code es para guardar impulse de un arma cuando es botada al suelo y pueda recogerlo alguien mas.
Code:
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 i = 0 ; i < sizeof g_sWeaponsAvailable; i++)
RegisterHam(Ham_Item_AddToPlayer, g_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], iStoredGalilID, iStoredGalilID1
pev(entity, pev_classname, classname, charsmax(classname))
static id;id = pev(entity, pev_owner)
// Check if it's a weapon box
if (equal(classname, "weaponbox"))
{
if(g_arma_prim[id] > 0)
{
if(!equali(model, menu_death[g_arma_prim[id]][gwModeloold]))
return FMRES_IGNORED
iStoredGalilID = fm_find_ent_by_owner(-1, menu_death[g_arma_prim[id]][item_csname], entity)
entity_set_model(entity, menu_death[g_arma_prim[id]][gwModelo])
entity_set_int(iStoredGalilID, EV_INT_impulse, menu_death[g_arma_prim[id]][i_WeaponImpulseIndex])
g_arma_prim[id] = 0
return FMRES_SUPERCEDE
}
if(g_arma_sec[id] > 0)
{
if(!equali(model, menu_death2[g_arma_sec[id]][gwModeloold]))
return FMRES_IGNORED;
iStoredGalilID1 = fm_find_ent_by_owner(-1, menu_death2[g_arma_sec[id]][item_csname], entity)
entity_set_model(entity, menu_death2[g_arma_sec[id]][gwModelo])
entity_set_int(iStoredGalilID1, EV_INT_impulse, menu_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(entity, pev_dmgtime, dmgtime)
// Grenade not yet thrown
if (dmgtime == 0.0)
return FMRES_IGNORED;
// Get whether grenade's owner is a zombie
if (g_zombie[pev(entity, pev_owner)])
{
if (model[9] == 'h' && model[10] == 'e' && get_pcvar_num(cvar_extrainfbomb)) // Infection Bomb
{
// Give it a glow
fm_set_rendering(entity, kRenderFxGlowShell, 0, 250, 0, kRenderNormal, 10);
// And a colored trail
message_begin(MSG_BROADCAST, SVC_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(entity, PEV_NADE_TYPE, NADE_TYPE_INFECTION)
set_pev(entity, pev_dmgtime, 99999999.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(entity, kRenderFxGlowShell, 200, 0, 0, kRenderNormal, 10);
// And a colored trail
message_begin(MSG_BROADCAST, SVC_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(entity, model_wgrenade_fire)
// Set grenade type on the thrown grenade entity
set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_NAPALM)
set_pev(entity, pev_dmgtime, 99999999.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(entity, kRenderFxGlowShell, 0, 100, 200, kRenderNormal, 10);
// And a colored trail
message_begin(MSG_BROADCAST, SVC_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(entity, model_wgrenade_frost)
// Set grenade type on the thrown grenade entity
set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_FROST)
set_pev(entity, pev_dmgtime, 99999999.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(entity, kRenderFxGlowShell, 255, 255, 255, kRenderNormal, 10);
set_pev(entity, pev_effects, EF_LIGHT)
// Set grenade type on the thrown grenade entity
set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_FLARE)
set_pev(entity, pev_dmgtime, 99999999.0)
return FMRES_SUPERCEDE
}
return FMRES_IGNORED;
}
public fw_Item_AddToPlayer(iWeapon, id)
{
if(!pev_valid(iWeapon) || !is_user_connected(id) || !is_user_alive(id))
return HAM_IGNORED
// Make sure that this is M79
for(new i = 0 ; i < sizeof menu_death; i++)
{
if(entity_get_int(iWeapon, EV_INT_impulse) == menu_death[i][i_WeaponImpulseIndex])
{
// Update
g_arma_prim[id] = i
// Reset weapon options
entity_set_int(iWeapon, EV_INT_impulse, 0)
}
}
for(new i = 0 ; i < sizeof menu_death2; i++)
{
if(entity_get_int(iWeapon, EV_INT_impulse) == menu_death2[i][i_WeaponImpulseIndex])
{
// Update
g_arma_sec[id] = i
// Reset weapon options
entity_set_int(iWeapon, EV_INT_impulse, 0)
}
}
return HAM_IGNORED
}