Raised This Month: $ Target: $400
 0% 

Antidote Bomb Issue (ZM 4.3)


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
rootzm
Junior Member
Join Date: Aug 2021
Old 08-19-2021 , 07:55   Antidote Bomb Issue (ZM 4.3)
Reply With Quote #1

Hi guys! I have almost finished my own zombie plague server but i still have a problem.
I would like to add a Antidote Bomb.
My original addon was Zombie Plague 4.3 fix5a .

This is the error:
PHP Code:
L 08/19/2021 14:45:54Invalid CVAR pointer
L 08
/19/2021 14:45:54: [AMXXDisplaying debug trace (plugin "zp_antidote.amxx"version "1.0")
L 08/19/2021 14:45:54: [AMXXRun time error 10native error (native "set_pcvar_num")
L 08/19/2021 14:45:54: [AMXX]    [0zp_antidote.sma::fw_SetModel (line 114
The problem:
- It shows in Extra Items Menu, i buy it but when throw the grenade, it makes the same thing as flare grenade which is disabled. Also i have to say that i have Kill Bomb with supports the flare grenade. But it doesn't matter, why the antidote bomb is not an antidote and just a normal flare grenade?

Should i add some cvars maybe?

zp_antidote.sma
PHP Code:
/* Plugin generated by AMXX-Studio */

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

#define PLUGIN "Nowy Plugin"
#define VERSION "1.0"
#define AUTHOR "Sn!ff3r"

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 30
new const item_name[] = "Antidote Bomb"
new const model_grenade_infect[] = "models/zombie_plague/v_grenade_antidot.mdl"

new item_id
new has_bomb[33]
new 
cvar_enabledcvar_fragsinfectcvar_ammoinfectcvar_humanbonushpcvar_flaregrenades
new g_trailSprg_exploSprg_msgScoreInfog_msgDeathMsgg_msgScoreAttrib

public plugin_init() 
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
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")
    
    
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","10")    
    
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")
}

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(item_name,item_cost,ZP_TEAM_HUMAN)
}

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

public 
zp_extra_item_selected(playeritemid)
{
    if(
itemid == item_id)
    {
        
has_bomb[player] = 1    
        fm_strip_user_gun
(player,9)
        
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_ANTIDOTEBOMB)
        
antidote_explode(entity)
    
    return 
HAM_SUPERCEDE
}

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(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_ANTIDOTEBOMB)
        }
    }
    
}


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()
}

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)
        
    }
}

public 
message_cur_weapon(msg_idmsg_destmsg_entity)
{
    
replace_models(msg_entity)

rootzm is offline
Bugsy
AMX Mod X Moderator
Join Date: Feb 2005
Location: NJ, USA
Old 08-19-2021 , 19:53   Re: Antidote Bomb Issue (ZM 4.3)
Reply With Quote #2

Regarding your error, you are getting the cvar pointer like you should and still getting an invalid cvar pointer error. I would confirm the cvar name is accurate "zp_flare_grenades"
__________________
Bugsy is offline
rootzm
Junior Member
Join Date: Aug 2021
Old 08-20-2021 , 01:15   Re: Antidote Bomb Issue (ZM 4.3)
Reply With Quote #3

Quote:
Originally Posted by Bugsy View Post
Regarding your error, you are getting the cvar pointer like you should and still getting an invalid cvar pointer error. I would confirm the cvar name is accurate "zp_flare_grenades"
The problem still persists.
Found the same plugin on other forum and who posted it says it needs the following cvars:

cvar_enabled = register_cvar("zp_antidote_bomb","1")
cvar_fragsinfect = get_cvar_pointer("zp_zombie_frags_for_infect" )
cvar_flaregrenades = get_cvar_pointer("zp_flare_grenades")

Added these on amxx.cfg, have u any solution for me?
rootzm is offline
CrazY.
Veteran Member
Join Date: May 2015
Location: SP, Brazil
Old 08-20-2021 , 08:37   Re: Antidote Bomb Issue (ZM 4.3)
Reply With Quote #4

Code:
/* Plugin generated by AMXX-Studio */

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

#define PLUGIN "Nowy Plugin"
#define VERSION "1.0"
#define AUTHOR "Sn!ff3r"

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 = 30
new const item_name[] = "Antidote Bomb"
new const model_grenade_infect[] = "models/zombie_plague/v_grenade_antidot.mdl"

new item_id
new has_bomb[33]
new cvar_enabled, cvar_fragsinfect, cvar_ammoinfect, cvar_humanbonushp, cvar_flaregrenades
new g_trailSpr, g_exploSpr, g_msgScoreInfo, g_msgDeathMsg, g_msgScoreAttrib

public plugin_init() 
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    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")
    
    cvar_enabled = register_cvar("zp_antidote_bomb","1")
    cvar_humanbonushp = register_cvar("zp_antidote_bomb_extra_hp","10")    
    
    g_msgScoreInfo = get_user_msgid("ScoreInfo")
    g_msgDeathMsg = get_user_msgid("DeathMsg")
    g_msgScoreAttrib = get_user_msgid("ScoreAttrib")
}

public plugin_precache()
{
    g_trailSpr = engfunc(EngFunc_PrecacheModel, sprite_grenade_trail)
    g_exploSpr = engfunc(EngFunc_PrecacheModel, sprite_grenade_ring)
    
    engfunc(EngFunc_PrecacheModel, model_grenade_infect)
    
    item_id = zp_register_extra_item(item_name,item_cost,ZP_TEAM_HUMAN)
}

public plugin_cfg()
{
    cvar_fragsinfect = get_cvar_pointer("zp_zombie_frags_for_infect")
    cvar_ammoinfect = get_cvar_pointer("zp_zombie_infect_reward")
    cvar_flaregrenades = get_cvar_pointer("zp_flare_grenades")
}

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

public zp_extra_item_selected(player, itemid)
{
    if(itemid == item_id)
    {
        has_bomb[player] = 1    
        fm_strip_user_gun(player,9)
        fm_give_item(player,"weapon_smokegrenade")
    }
    
}

public fw_PlayerKilled(victim, attacker, shouldgib)
{
    has_bomb[victim] = 0    
}

public fw_ThinkGrenade(entity)
{    
    if(!pev_valid(entity))
        return HAM_IGNORED
        
    static Float:dmgtime    
    pev(entity, pev_dmgtime, dmgtime)
    
    if (dmgtime > get_gametime())
        return HAM_IGNORED    
    
    if(pev(entity, pev_flTimeStepSound) == NADE_TYPE_ANTIDOTEBOMB)
        antidote_explode(entity)
    
    return HAM_SUPERCEDE
}

public fw_SetModel(entity, const model[])
{
    if(!get_pcvar_num(cvar_enabled))
        return    
    
    static Float:dmgtime
    pev(entity, pev_dmgtime, dmgtime)
    
    if (dmgtime == 0.0)
        return
    
    if (equal(model[7], "w_sm", 4))
    {        
        new owner = pev(entity, pev_owner)        
        
        if(!zp_get_user_zombie(owner) && has_bomb[owner]) 
        {
            set_pcvar_num(cvar_flaregrenades,0)            
            
            fm_set_rendering(entity, kRenderFxGlowShell, 255, 128, 0, kRenderNormal, 16)
            
            message_begin(MSG_BROADCAST, SVC_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(entity, pev_flTimeStepSound, NADE_TYPE_ANTIDOTEBOMB)
        }
    }
    
}


public antidote_explode(ent)
{
    if (!zp_has_round_started()) return
    
    set_pcvar_num(cvar_flaregrenades,1)
    
    static Float:originF[3]
    pev(ent, pev_origin, originF)
    
    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(ent, pev_owner)
    
    has_bomb[attacker] = 0
    
    static victim
    victim = -1
    while ((victim = engfunc(EngFunc_FindEntityInSphere, victim, originF, RADIUS)) != 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(attacker, victim)
        FixDeadAttrib(victim)
        UpdateFrags(attacker, victim, get_pcvar_num(cvar_fragsinfect), 1, 1)
        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(attacker, pev(attacker, pev_health)+get_pcvar_num(cvar_humanbonushp))
        
    }
    
    engfunc(EngFunc_RemoveEntity, ent)
}

public create_blast(const Float:originF[3])
{
    engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
    write_byte(TE_BEAMCYLINDER) // TE id
    engfunc(EngFunc_WriteCoord, originF[0]) // x
    engfunc(EngFunc_WriteCoord, originF[1]) // y
    engfunc(EngFunc_WriteCoord, originF[2]) // z
    engfunc(EngFunc_WriteCoord, originF[0]) // x axis
    engfunc(EngFunc_WriteCoord, originF[1]) // y axis
    engfunc(EngFunc_WriteCoord, originF[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_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
    write_byte(TE_BEAMCYLINDER) // TE id
    engfunc(EngFunc_WriteCoord, originF[0]) // x
    engfunc(EngFunc_WriteCoord, originF[1]) // y
    engfunc(EngFunc_WriteCoord, originF[2]) // z
    engfunc(EngFunc_WriteCoord, originF[0]) // x axis
    engfunc(EngFunc_WriteCoord, originF[1]) // y axis
    engfunc(EngFunc_WriteCoord, originF[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_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
    write_byte(TE_BEAMCYLINDER) // TE id
    engfunc(EngFunc_WriteCoord, originF[0]) // x
    engfunc(EngFunc_WriteCoord, originF[1]) // y
    engfunc(EngFunc_WriteCoord, originF[2]) // z
    engfunc(EngFunc_WriteCoord, originF[0]) // x axis
    engfunc(EngFunc_WriteCoord, originF[1]) // y axis
    engfunc(EngFunc_WriteCoord, originF[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(attacker, victim, frags, deaths, scoreboard)
{
    set_pev(attacker, pev_frags, float(pev(attacker, pev_frags) + frags))
    
    fm_set_user_deaths(victim, fm_get_user_deaths(victim) + deaths)
    
    if (scoreboard)
    {    
        message_begin(MSG_BROADCAST, g_msgScoreInfo)
        write_byte(attacker) // id
        write_short(pev(attacker, pev_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_BROADCAST, g_msgScoreInfo)
        write_byte(victim) // id
        write_short(pev(victim, pev_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(id, value)
{
    set_pdata_int(id, 444, value, 5)
}

stock fm_get_user_deaths(id)
{
    return get_pdata_int(id, 444, 5)
}


stock fm_get_user_team(id)
{
    return get_pdata_int(id, 114, 5)
}

public SendDeathMsg(attacker, victim)
{
    message_begin(MSG_BROADCAST, g_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_BROADCAST, g_msgScoreAttrib)
    write_byte(id) // id
    write_byte(0) // attrib
    message_end()
}

public replace_models(id)
{
    if (!is_user_alive(id))
        return
    
    if(get_user_weapon(id) == CSW_SMOKEGRENADE && has_bomb[id])
    {
        set_pev(id, pev_viewmodel2, model_grenade_infect)
        
    }
}

public message_cur_weapon(msg_id, msg_dest, msg_entity)
{
    replace_models(msg_entity)
}
__________________









Last edited by CrazY.; 08-20-2021 at 08:37.
CrazY. is offline
rootzm
Junior Member
Join Date: Aug 2021
Old 08-20-2021 , 09:52   Re: Antidote Bomb Issue (ZM 4.3)
Reply With Quote #5

Quote:
Originally Posted by CrazY. View Post
Code:
/* Plugin generated by AMXX-Studio */

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

#define PLUGIN "Nowy Plugin"
#define VERSION "1.0"
#define AUTHOR "Sn!ff3r"

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 = 30
new const item_name[] = "Antidote Bomb"
new const model_grenade_infect[] = "models/zombie_plague/v_grenade_antidot.mdl"

new item_id
new has_bomb[33]
new cvar_enabled, cvar_fragsinfect, cvar_ammoinfect, cvar_humanbonushp, cvar_flaregrenades
new g_trailSpr, g_exploSpr, g_msgScoreInfo, g_msgDeathMsg, g_msgScoreAttrib

public plugin_init() 
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    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")
    
    cvar_enabled = register_cvar("zp_antidote_bomb","1")
    cvar_humanbonushp = register_cvar("zp_antidote_bomb_extra_hp","10")    
    
    g_msgScoreInfo = get_user_msgid("ScoreInfo")
    g_msgDeathMsg = get_user_msgid("DeathMsg")
    g_msgScoreAttrib = get_user_msgid("ScoreAttrib")
}

public plugin_precache()
{
    g_trailSpr = engfunc(EngFunc_PrecacheModel, sprite_grenade_trail)
    g_exploSpr = engfunc(EngFunc_PrecacheModel, sprite_grenade_ring)
    
    engfunc(EngFunc_PrecacheModel, model_grenade_infect)
    
    item_id = zp_register_extra_item(item_name,item_cost,ZP_TEAM_HUMAN)
}

public plugin_cfg()
{
    cvar_fragsinfect = get_cvar_pointer("zp_zombie_frags_for_infect")
    cvar_ammoinfect = get_cvar_pointer("zp_zombie_infect_reward")
    cvar_flaregrenades = get_cvar_pointer("zp_flare_grenades")
}

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

public zp_extra_item_selected(player, itemid)
{
    if(itemid == item_id)
    {
        has_bomb[player] = 1    
        fm_strip_user_gun(player,9)
        fm_give_item(player,"weapon_smokegrenade")
    }
    
}

public fw_PlayerKilled(victim, attacker, shouldgib)
{
    has_bomb[victim] = 0    
}

public fw_ThinkGrenade(entity)
{    
    if(!pev_valid(entity))
        return HAM_IGNORED
        
    static Float:dmgtime    
    pev(entity, pev_dmgtime, dmgtime)
    
    if (dmgtime > get_gametime())
        return HAM_IGNORED    
    
    if(pev(entity, pev_flTimeStepSound) == NADE_TYPE_ANTIDOTEBOMB)
        antidote_explode(entity)
    
    return HAM_SUPERCEDE
}

public fw_SetModel(entity, const model[])
{
    if(!get_pcvar_num(cvar_enabled))
        return    
    
    static Float:dmgtime
    pev(entity, pev_dmgtime, dmgtime)
    
    if (dmgtime == 0.0)
        return
    
    if (equal(model[7], "w_sm", 4))
    {        
        new owner = pev(entity, pev_owner)        
        
        if(!zp_get_user_zombie(owner) && has_bomb[owner]) 
        {
            set_pcvar_num(cvar_flaregrenades,0)            
            
            fm_set_rendering(entity, kRenderFxGlowShell, 255, 128, 0, kRenderNormal, 16)
            
            message_begin(MSG_BROADCAST, SVC_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(entity, pev_flTimeStepSound, NADE_TYPE_ANTIDOTEBOMB)
        }
    }
    
}


public antidote_explode(ent)
{
    if (!zp_has_round_started()) return
    
    set_pcvar_num(cvar_flaregrenades,1)
    
    static Float:originF[3]
    pev(ent, pev_origin, originF)
    
    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(ent, pev_owner)
    
    has_bomb[attacker] = 0
    
    static victim
    victim = -1
    while ((victim = engfunc(EngFunc_FindEntityInSphere, victim, originF, RADIUS)) != 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(attacker, victim)
        FixDeadAttrib(victim)
        UpdateFrags(attacker, victim, get_pcvar_num(cvar_fragsinfect), 1, 1)
        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(attacker, pev(attacker, pev_health)+get_pcvar_num(cvar_humanbonushp))
        
    }
    
    engfunc(EngFunc_RemoveEntity, ent)
}

public create_blast(const Float:originF[3])
{
    engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
    write_byte(TE_BEAMCYLINDER) // TE id
    engfunc(EngFunc_WriteCoord, originF[0]) // x
    engfunc(EngFunc_WriteCoord, originF[1]) // y
    engfunc(EngFunc_WriteCoord, originF[2]) // z
    engfunc(EngFunc_WriteCoord, originF[0]) // x axis
    engfunc(EngFunc_WriteCoord, originF[1]) // y axis
    engfunc(EngFunc_WriteCoord, originF[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_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
    write_byte(TE_BEAMCYLINDER) // TE id
    engfunc(EngFunc_WriteCoord, originF[0]) // x
    engfunc(EngFunc_WriteCoord, originF[1]) // y
    engfunc(EngFunc_WriteCoord, originF[2]) // z
    engfunc(EngFunc_WriteCoord, originF[0]) // x axis
    engfunc(EngFunc_WriteCoord, originF[1]) // y axis
    engfunc(EngFunc_WriteCoord, originF[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_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
    write_byte(TE_BEAMCYLINDER) // TE id
    engfunc(EngFunc_WriteCoord, originF[0]) // x
    engfunc(EngFunc_WriteCoord, originF[1]) // y
    engfunc(EngFunc_WriteCoord, originF[2]) // z
    engfunc(EngFunc_WriteCoord, originF[0]) // x axis
    engfunc(EngFunc_WriteCoord, originF[1]) // y axis
    engfunc(EngFunc_WriteCoord, originF[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(attacker, victim, frags, deaths, scoreboard)
{
    set_pev(attacker, pev_frags, float(pev(attacker, pev_frags) + frags))
    
    fm_set_user_deaths(victim, fm_get_user_deaths(victim) + deaths)
    
    if (scoreboard)
    {    
        message_begin(MSG_BROADCAST, g_msgScoreInfo)
        write_byte(attacker) // id
        write_short(pev(attacker, pev_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_BROADCAST, g_msgScoreInfo)
        write_byte(victim) // id
        write_short(pev(victim, pev_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(id, value)
{
    set_pdata_int(id, 444, value, 5)
}

stock fm_get_user_deaths(id)
{
    return get_pdata_int(id, 444, 5)
}


stock fm_get_user_team(id)
{
    return get_pdata_int(id, 114, 5)
}

public SendDeathMsg(attacker, victim)
{
    message_begin(MSG_BROADCAST, g_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_BROADCAST, g_msgScoreAttrib)
    write_byte(id) // id
    write_byte(0) // attrib
    message_end()
}

public replace_models(id)
{
    if (!is_user_alive(id))
        return
    
    if(get_user_weapon(id) == CSW_SMOKEGRENADE && has_bomb[id])
    {
        set_pev(id, pev_viewmodel2, model_grenade_infect)
        
    }
}

public message_cur_weapon(msg_id, msg_dest, msg_entity)
{
    replace_models(msg_entity)
}
Same problem.

PHP Code:
L 08/20/2021 16:52:04Start of error session.
L 08/20/2021 16:52:04Info (map "zm_cross") (file "addons/amxmodx/logs/error_20210820.log")
L 08/20/2021 16:52:04Invalid CVAR pointer
L 08
/20/2021 16:52:04: [AMXXDisplaying debug trace (plugin "zp_antidote.amxx"version "1.0")
L 08/20/2021 16:52:04: [AMXXRun time error 10native error (native "set_pcvar_num")
L 08/20/2021 16:52:04: [AMXX]    [0zp_antidote.sma::fw_SetModel (line 118
rootzm is offline
CrazY.
Veteran Member
Join Date: May 2015
Location: SP, Brazil
Old 08-20-2021 , 10:36   Re: Antidote Bomb Issue (ZM 4.3)
Reply With Quote #6

Can you check if you can find the following line in your zp43 main plugin?

Code:
cvar_flaregrenades = register_cvar("zp_flare_grenades","1")
__________________








CrazY. is offline
rootzm
Junior Member
Join Date: Aug 2021
Old 08-20-2021 , 10:51   Re: Antidote Bomb Issue (ZM 4.3)
Reply With Quote #7

Quote:
Originally Posted by CrazY. View Post
Can you check if you can find the following line in your zp43 main plugin?

Code:
cvar_flaregrenades = register_cvar("zp_flare_grenades","1")
Checked, there is not this cvar.
I have to mention that, i'm using this plugin too.
https://forums.alliedmods.net/showpo...&postcount=574

I disabled the flare grenade plugin because that kill bomb plugin has it too. I've done something wrong?
rootzm is offline
Bugsy
AMX Mod X Moderator
Join Date: Feb 2005
Location: NJ, USA
Old 08-20-2021 , 10:53   Re: Antidote Bomb Issue (ZM 4.3)
Reply With Quote #8

You can quickly figure out if the cvar exists with this

PHP Code:
//...
cvar_flaregrenades get_cvar_pointer("zp_flare_grenades")

if ( 
cvar_flaregrenades == )
   
set_fail_state"zp_flare_grenades cvar does not exist" ); 
__________________
Bugsy is offline
Bugsy
AMX Mod X Moderator
Join Date: Feb 2005
Location: NJ, USA
Old 08-20-2021 , 10:54   Re: Antidote Bomb Issue (ZM 4.3)
Reply With Quote #9

Yes, you need to run every plugin that has tentacles in your OP plugin.
__________________
Bugsy 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 22:06.


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