Raised This Month: $51 Target: $400
 12% 

All grenades change


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
HowToRuski
Senior Member
Join Date: Feb 2019
Location: Hungary
Old 04-10-2021 , 15:43   All grenades change
Reply With Quote #1

Hello, im here to have somebodys help, im having trouble with models, when i buy Antidote(extra) all my grenade models change, not only the one i bought... Hope you understood what i said...
Code:
PHP Code:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <zombieplague>
#include <hamsandwich>
#include <fakemeta_util>
#include <cc>
#include <cstrike>

#define PLUGIN "[ZP] Extra Item Antidote Grenade"
#define VERSION "1.0"
#define AUTHOR "Sn!ff3r"

#define MAXPLAYERS     32

new const NADE_TYPE_ANTIDOTEBOMB 6969
new const Float:RADIUS 300.0
new const sprite_grenade_trail[] = "sprites/laserbeam.spr"
new const sprite_grenade_ring[] = "sprites/shockwave.spr"
new const item_cost 28
new const item_name[] = "AntiDote Bomb"
new const model_grenade_infect[] = "models/zombie_plague/v_tvirusblue.mdl"
new const model_grenade_infect2[] = "models/zombie_plague/p_tvirusblue.mdl"
new const model_grenade_infect3[] = "models/zombie_plague/w_tvirusblue.mdl"

new bool:g_bCanBuyNade MAXPLAYERS+]
new 
g_NadeCount MAXPLAYERS+]

new 
item_id
new has_bomb[33]
new 
cvar_enabledcvar_fragsinfectcvar_ammoinfectcvar_humanbonushpcvar_flaregrenades
new g_trailSprg_exploSprg_msgScoreInfog_msgDeathMsgg_msgScoreAttribg_msgAmmoPickup

new const recieving_sound[] = "items/9mmclip1.wav"

public plugin_init() 
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
RegisterHam(Ham_Think"grenade""fw_ThinkGrenade")
    
RegisterHam(Ham_Killed"player""fw_PlayerKilled")
    
    
register_event("HLTV""event_round_start""a""1=0""2=0")    
    
register_forward(FM_SetModel"fw_SetModel")
    
register_message(get_user_msgid("CurWeapon"), "message_cur_weapon")
    
    
register_message(g_msgAmmoPickup"message_ammopickup")
    
    
cvar_enabled register_cvar("zp_antidote_bomb","1")
    
cvar_fragsinfect get_cvar_pointer("zp_zombie_frags_for_infect")
    
cvar_ammoinfect get_cvar_pointer("zp_zombie_infect_reward")
    
cvar_humanbonushp register_cvar("zp_antidote_bomb_extra_hp","0")    
    
cvar_flaregrenades get_cvar_pointer("zp_flare_grenades")
    
    
g_msgScoreInfo get_user_msgid("ScoreInfo")
    
g_msgDeathMsg get_user_msgid("DeathMsg")
    
g_msgScoreAttrib get_user_msgid("ScoreAttrib")
    
    
g_msgAmmoPickup get_user_msgid("AmmoPickup")
}

public 
plugin_precache()
{
    
g_trailSpr engfunc(EngFunc_PrecacheModelsprite_grenade_trail)
    
g_exploSpr engfunc(EngFunc_PrecacheModelsprite_grenade_ring)
    
    
engfunc(EngFunc_PrecacheModelmodel_grenade_infect)
    
engfunc(EngFunc_PrecacheModelmodel_grenade_infect2)
    
engfunc(EngFunc_PrecacheModelmodel_grenade_infect3)
    
    
engfunc(EngFunc_PrecacheSoundrecieving_sound)
    
    
item_id zp_register_extra_item(item_name,item_cost,ZP_TEAM_HUMAN)
}

public 
event_round_start(id)
{
    
arrayset(has_bombfalse33)
    
arrayset(g_NadeCount0sizeof g_NadeCount)
    
arrayset(g_bCanBuyNadefalsesizeof g_bCanBuyNade)
    
}

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

public 
zp_extra_item_selected(iditemid)
{
    
    if(
itemid == item_id)
    {
        if ( 
zp_get_user_zombie(id) )
        {
            
g_bCanBuyNade[id] = false
            zp_set_user_ammo_packs
(idzp_get_user_ammo_packs(id) + item_cost)
        }
        else
        
// Player already have it
        
if ( g_NadeCount id ] >= )
        {
            
g_bCanBuyNade[id] = false
            client_print_color
(idprint_chat,"^4[^1ZP^4] ^1You are allowed to buy only^4 2 ^1antidote bombs per round!")
            
zp_set_user_ammo_packs(idzp_get_user_ammo_packs(id) + item_cost)
        }
        else
        {
            if(
itemid == item_id)
            {    
            
// Give him the bomb
            
give_the_bomb(id)
            
g_NadeCount[id]++
            
        }
    }
}
}

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_ANTIDOTEBOMB)
        
antidote_explode(entity)
    
    return 
HAM_SUPERCEDE
}

public 
zp_user_humanized_post player )
{
    if (
has_bomb[player])
        
has_bomb[player] = 0
}

public 
fw_SetModel(entity, const model[])
{
    if(!
get_pcvar_num(cvar_enabled))
        return    
    
    static 
Float:dmgtime
    pev
(entitypev_dmgtimedmgtime)
    
    if (
dmgtime == 0.0)
        return
    
    if (
equal(model[7], "w_sm"4))
    {        
        new 
owner pev(entitypev_owner
        
        if(!
zp_get_user_zombie(owner) && has_bomb[owner]) 
        {
            
set_pcvar_num(cvar_flaregrenades,0)            
            
            
fm_set_rendering(entity)
            
            
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
            
write_byte(TE_BEAMFOLLOW// TE id
            
write_short(entity// entity
            
write_short(g_trailSpr// sprite
            
write_byte(15// 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_ANTIDOTEBOMB)
            
engfunc EngFunc_SetModelentitymodel_grenade_infect3 )
        }
    }
    
}


public 
antidote_explode(ent)
{
    if (!
zp_has_round_started()) return
    
    
set_pcvar_num(cvar_flaregrenades,1)
    
    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_FindEntityInSpherevictimoriginFRADIUS)) != 0)
    {
        if (!
is_user_alive(victim) || !zp_get_user_zombie(victim) || zp_get_user_nemesis(victim) || zp_get_user_first_zombie(victim) || zp_get_user_last_zombie(victim))
            continue
        
        
SendDeathMsg(attackervictim)
        
FixDeadAttrib(victim)
        
UpdateFrags(attackervictimget_pcvar_num(cvar_fragsinfect), 11)
        
zp_disinfect_user(victim)
        
zp_set_user_ammo_packs(attacker,zp_get_user_ammo_packs(attacker) + get_pcvar_num(cvar_ammoinfect))
        
fm_set_user_health(attackerpev(attackerpev_health)+get_pcvar_num(cvar_humanbonushp))
        
    }
    
    
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 
UpdateFrags(attackervictimfragsdeathsscoreboard)
{
    
set_pev(attackerpev_fragsfloat(pev(attackerpev_frags) + frags))
    
    
fm_set_user_deaths(victimfm_get_user_deaths(victim) + deaths)
    
    if (
scoreboard)
    {    
        
message_begin(MSG_BROADCASTg_msgScoreInfo)
        
write_byte(attacker// id
        
write_short(pev(attackerpev_frags)) // frags
        
write_short(fm_get_user_deaths(attacker)) // deaths
        
write_short(0// class?
        
write_short(fm_get_user_team(attacker)) // team
        
message_end()
        
        
message_begin(MSG_BROADCASTg_msgScoreInfo)
        
write_byte(victim// id
        
write_short(pev(victimpev_frags)) // frags
        
write_short(fm_get_user_deaths(victim)) // deaths
        
write_short(0// class?
        
write_short(fm_get_user_team(victim)) // team
        
message_end()
    }
}

stock fm_set_user_deaths(idvalue)
{
    
set_pdata_int(id444value5)
}

stock fm_get_user_deaths(id)
{
    return 
get_pdata_int(id4445)
}


stock fm_get_user_team(id)
{
    return 
get_pdata_int(id1145)
}

public 
SendDeathMsg(attackervictim)
{
    
message_begin(MSG_BROADCASTg_msgDeathMsg)
    
write_byte(attacker// killer
    
write_byte(victim// victim
    
write_byte(1// headshot flag
    
write_string("grenade"// killer's weapon
    
message_end()
}

public 
FixDeadAttrib(id)
{
    
message_begin(MSG_BROADCASTg_msgScoreAttrib)
    
write_byte(id// id
    
write_byte(0// attrib
    
message_end()
}

// Replace models
public replace_models(id)
{
    if (!
is_user_alive(id))
        return
    
    if(
get_user_weapon(id) == CSW_SMOKEGRENADE && has_bomb[id])
    {
        
set_pev(idpev_viewmodel2model_grenade_infect)
        
set_pev(idpev_weaponmodel2model_grenade_infect2)
    }
}

public 
message_cur_weapon(msg_idmsg_destmsg_entity)
{
    
replace_models(msg_entity)
}

give_the_bomb(player)
{
    
// Now he haves the bomb!
    
has_bomb[player] = 1
    
    
if (!zp_get_user_zombie(player) && !zp_get_user_nemesis(player))
    
    
// Already own one
    
if (user_has_weapon(playerCSW_SMOKEGRENADE))
    {
        
// Increase BP ammo on it instead
        
cs_set_user_bpammo(playerCSW_SMOKEGRENADEcs_get_user_bpammo(playerCSW_SMOKEGRENADE) + 1)
        
        
// Flash the ammo in hud
        
message_begin(MSG_ONE_UNRELIABLEg_msgAmmoPickup_player)
        
write_byte(CSW_SMOKEGRENADE)
        
write_byte(1)
        
message_end()
        
        
// Play Clip Purchase Sound
        
engfunc(EngFunc_EmitSoundplayerCHAN_ITEMrecieving_sound1.0ATTN_NORM0PITCH_NORM)
    }
    else
        
// Give weapon to the player
        
fm_give_item(player"weapon_smokegrenade")

HowToRuski is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 04:29.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode