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

Bazooka bug :(


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Torge
Veteran Member
Join Date: Oct 2011
Old 01-13-2012 , 17:38   Bazooka bug :(
Reply With Quote #1

I have a problem with this bazooka plugin, If i shoot with the bazooka and gets infected from zombie and turn back to human and put the bazooka then i cant shoot.. can anyone fix this ?

PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>
#include <colorchat>
#include <engine>

static const plugin[] = "[ZP] Extra Item: Bazooka";

static const 
mrocket[] = "models/zm_bazooka_missile.mdl";
static const 
mrpg_w[] = "models/w_zm_bazooka.mdl";
static const 
mrpg_v[] = "models/v_zm_bazooka.mdl";
static const 
mrpg_p[] = "models/p_zm_bazooka.mdl";
static const 
sfire[] = "weapons/rocketfire1.wav";
static const 
sfly[] = "weapons/nuke_fly.wav";
static const 
shit[] = "weapons/mortarhit.wav";
static const 
spickup[] = "items/gunpickup2.wav";

static const 
g_item_name[] = "Bazooka";
const 
g_item_cost 30;
new 
g_itemid;
new 
g_msgCurWeapon;

new 
gmsg_screenshakegmsg_deathgmsg_damagepcvar_delaypcvar_maxdmgpcvar_radiuspcvar_map;
new 
rocketsmokeexplosionbazsmokewhite
new 
bool:has_baz[33], bool:CanShoot[33];
new 
dmgcount[33], pcvar_dmgforpackspcvar_award;

public 
plugin_init()
{
    
register_plugin(plugin"0.7""Random1");
    
    
pcvar_delay register_cvar("zp_baz_delay""10.0");
    
pcvar_maxdmg register_cvar("zp_baz_dmg""500");
    
pcvar_radius register_cvar("zp_baz_radius""750");
    
pcvar_map register_cvar("zp_baz_map""1");
    
pcvar_dmgforpacks get_cvar_pointer("zp_human_damage_reward");
    
pcvar_award register_cvar("zp_baz_awardpacks""1");
    
    if ( 
pcvar_dmgforpacks == 
    {
        
set_pcvar_num(pcvar_award0);    //if we couldn't read the dmg cvar from zp then set a stop state on dmg reward
        
log_amx("[%s] error reading zp_human_damage_reward cvar from zombie plague, turning award for damage off"plugin);
    }
    
    
g_itemid zp_register_extra_item(g_item_nameg_item_costZP_TEAM_HUMAN);
    
    
register_concmd("zp_bazooka""give_bazooka"ADMIN_IMMUNITY"<name/@all> gives a bazooka to the spcified target");
    
register_event("CurWeapon","switch_to_knife","be","1=1","2=29");
    
register_event("HLTV""event_HLTV""a""1=0""2=0")    // New Round
    
register_clcmd("drop""drop_call");
    
register_event("DeathMsg""player_die""a")
    
    
//supports 2 methods of firing, attacking while holding knife and a bind
    
register_clcmd("baz_fire""fire_call");
    
register_forward(FM_PlayerPreThink"fw_prethink");
    
    
register_forward(FM_Touch"fw_touch");
        
    
gmsg_screenshake get_user_msgid("ScreenShake");
    
gmsg_death get_user_msgid("DeathMsg");
    
gmsg_damage get_user_msgid("Damage");
    
g_msgCurWeapon get_user_msgid("CurWeapon")
}
public 
event_HLTV()
{
    
//remove entities regardless of cvar
    
new rpg_temp engfunc(EngFunc_FindEntityByString, -1"classname""rpg_temp");
    while( 
rpg_temp 0) {
        
engfunc(EngFunc_RemoveEntityrpg_temp);
        
rpg_temp engfunc(EngFunc_FindEntityByString, -1"classname""rpg_temp");
    }
    
    if ( 
get_pcvar_num(pcvar_map) ) return;
    
    for( new 
id 1id <= 32id++ )
        
has_baz[id] = false;
}

public 
client_disconnect(id
{
    
has_baz[id] = false
}

public 
player_die() 
{
    
    new 
id read_data(2)
    if(
has_baz[id]) 
    {
        
has_baz[id] = false
        drop_rpg_temp
(id);
    }
    
    return 
PLUGIN_CONTINUE
}

public 
zp_extra_item_selected(playeritemid)
{
    if (
itemid == g_itemid)
    {
        if ( 
has_baz[player] )
        {
            
zp_set_user_ammo_packsplayerzp_get_user_ammo_packs(player) + g_item_cost );
        }
        else 
        {
            
has_baz[player] = true;
            
CanShoot[player] = true;
            
client_print_color(playerprint_chat"^4[ZP]^1 You now have a bazooka, attack while holding knife(will take %2.1f seconds to reload)"get_pcvar_float(pcvar_delay));
            
engclient_cmd(player"weapon_knife"), switch_to_knife(player);
        }
    }
}

public 
give_bazooka(idlevelcid)
{
    if (!
cmd_access(idlevelcid1)) 
    {
        
console_print(id"You have no access to that command");
        return;
    }
    if (
read_argc() > 2
    {
        
console_print(id,"Too many arguments supplied.");
        return;
    }
    new 
arg1[32];
    
read_argv(1arg1sizeof(arg1) - 1);
    new 
player cmd_target(idarg110);
    if ( !
player 
    {
        if ( 
arg1[0] == '@' 
        {
            for ( new 
1<= 32i++ ) 
            {
                if ( 
is_user_connected(i) && !has_baz[i] && !zp_get_user_zombie(i) ) 
                {
                    
has_baz[i] = true;
                    
CanShoot[i] = true;
                    
client_print_color(iprint_chat"^4[ZP]^1 You now have a bazooka, attack while holding knife(will take %2.1f seconds to reload)"get_pcvar_float(pcvar_delay));
                    
engclient_cmd(player"weapon_knife"), switch_to_knife(i);                
                }
            }
        } else 
        {
            
client_print_color(idprint_chat"^4[ZP]^1 No Such Player/Team");
            return;
        }
    } else if ( !
has_baz[player] && !zp_get_user_zombie(player) ) 
    {
        
has_baz[player] = true;
        
CanShoot[player] = true;
        
client_print_color(playerprint_chat"^4[ZP]^1 You now have a bazooka, attack while holding knife(will take %2.1f seconds to reload)"get_pcvar_float(pcvar_delay));
        
engclient_cmd(player"weapon_knife"), switch_to_knife(player);
    }
}

public 
zp_user_infected_post(idinfector)
{
    if ( 
has_baz[id] )
        
drop_rpg_temp(id);
}

public 
plugin_precache()
{
    
precache_model(mrocket);    

    
precache_model(mrpg_w);
    
precache_model(mrpg_v);
    
precache_model(mrpg_p);

    
precache_sound(sfire);
    
precache_sound(sfly);
    
precache_sound(shit);
    
precache_sound(spickup);
    
    
rocketsmoke precache_model("sprites/smoke.spr");
    
explosion precache_model("sprites/fexplo.spr");
    
bazsmoke  precache_model("sprites/steam1.spr");
    
white precache_model("sprites/white.spr");
}

public 
switch_to_knife(id)
{
    if ( !
is_user_alive(id) ) return;
 
    if ( 
has_baz[id] )
    {
        if (
get_user_weapon(id) == CSW_KNIFE)
        {
            
set_pev(idpev_viewmodel2mrpg_v);
            
set_pev(idpev_weaponmodel2mrpg_p);
        }
    }
}

public 
fw_prethink(id)
{
    static 
button;
    
button pev(idpev_button);
    if ( 
button IN_ATTACK )
        
fire_call(id);
}
public 
fire_call(id)
{
    if ( !
is_user_alive(id) || !has_baz[id] || !CanShoot[id] ) return;
    
    new 
weapon get_user_weapon(id);
    if ( 
weapon == CSW_KNIFE fire_rocket(id);    
}

fire_rocket(id
{
    if ( !
CanShoot[id] ) return;
    
    
CanShoot[id] = false;
    
set_task(get_pcvar_float(pcvar_delay), "rpg_reload"id);
    
engclient_cmd(id"weapon_knife"), switch_to_knife(id);
    
    new 
Float:StartOrigin[3], Float:Angle[3];
    
pev(idpev_originStartOrigin);
    
pev(idpev_anglesAngle);

    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"));
    
set_pev(entpev_classname"rpgrocket");
    
engfunc(EngFunc_SetModelentmrocket);
    
set_pev(entpev_mins, {-1.0, -1.0, -1.0});
    
set_pev(entpev_maxs, {1.01.01.0});
    
engfunc(EngFunc_SetOriginentStartOrigin);
    
set_pev(entpev_anglesAngle);


    
set_pev(entpev_solid2);
    
set_pev(entpev_movetype5);
    
set_pev(entpev_ownerid);

    new 
Float:nVelocity[3];
    
velocity_by_aim(id1500nVelocity);
    
set_pev(entpev_velocitynVelocity);

    
emit_sound(entCHAN_WEAPONsfireVOL_NORMATTN_NORM0PITCH_NORM);
    
emit_sound(entCHAN_VOICEsflyVOL_NORMATTN_NORM0PITCH_NORM);

    
message_begin(MSG_BROADCASTSVC_TEMPENTITY);
    
write_byte(22);
    
write_short(ent);
    
write_short(rocketsmoke);
    
write_byte(30);
    
write_byte(3);
    
write_byte(255);
    
write_byte(255);
    
write_byte(255);
    
write_byte(255);
    
message_end();
}

public 
rpg_reload(id)
{
    if (!
has_baz[id]) return;
    
    if ( 
get_user_weapon(id) == CSW_KNIFE switch_to_knife(id);
    {
        
CanShoot[id] = true
        client_print
(idprint_center"[ZP] Bazooka reloaded.")
    }
}

public 
fw_touch(enttouched)
{
    if ( !
pev_valid(ent) ) return FMRES_IGNORED;
    
    static 
entclass[32];
    
pev(entpev_classnameentclass31);
    
    if ( 
equali(entclass"rpg_temp") )
    {
        static 
touchclass[32];
        
pev(touchedpev_classnametouchclass31);
        if ( !
equali(touchclass"player") ) return FMRES_IGNORED;
        
        if( !
is_user_alive(touched) || zp_get_user_zombie(touched) || zp_get_user_survivor(touched) || has_baz[touched] ) return FMRES_IGNORED;
            
        
emit_sound(touchedCHAN_VOICEspickup1.0ATTN_NORM0PITCH_NORM);
        
has_baz[touched] = true;
        
engclient_cmd(touched"weapon_knife"), switch_to_knife(touched);
        
        
engfunc(EngFunc_RemoveEntityent);
    
        return 
FMRES_HANDLED;
    }
    else if ( 
equali(entclass"rpgrocket") )
    {
        new 
Float:EndOrigin[3];
        
pev(entpev_originEndOrigin);
        new 
NonFloatEndOrigin[3];
        
NonFloatEndOrigin[0] = floatround(EndOrigin[0]);
        
NonFloatEndOrigin[1] = floatround(EndOrigin[1]);
        
NonFloatEndOrigin[2] = floatround(EndOrigin[2]);
    
        
emit_sound(entCHAN_WEAPONshitVOL_NORMATTN_NORM0PITCH_NORM);
        
emit_sound(entCHAN_VOICEshitVOL_NORMATTN_NORM0PITCH_NORM);
    
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY);
        
write_byte(17);
        
write_coord(NonFloatEndOrigin[0]);
        
write_coord(NonFloatEndOrigin[1]);
        
write_coord(NonFloatEndOrigin[2] + 128);
        
write_short(explosion);
        
write_byte(60);
        
write_byte(255);
        
message_end();
    
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY);
        
write_byte(5);
        
write_coord(NonFloatEndOrigin[0]);
        
write_coord(NonFloatEndOrigin[1]);
        
write_coord(NonFloatEndOrigin[2] + 256);
        
write_short(bazsmoke);
        
write_byte(125);
        
write_byte(5);
        
message_end();
    
        new 
maxdamage get_pcvar_num(pcvar_maxdmg);
        new 
damageradius get_pcvar_num(pcvar_radius);
    
        new 
PlayerPos[3], distancedamage;
        for (new 
1<= 32i++) 
        {
            if ( 
is_user_alive(i)) 
                {    
                    new 
id pev(entpev_owner)
                    
                    if ((
zp_get_user_zombie(id)) || (zp_get_user_nemesis(id))) 
                    if ((
zp_get_user_zombie(i)) || (zp_get_user_nemesis(i))) continue;
                        
                    if ((!
zp_get_user_zombie(id)) && (!zp_get_user_nemesis(id))) 
                    if ((!
zp_get_user_zombie(i)) && (!zp_get_user_nemesis(i))) continue;
                        
                    
get_user_origin(iPlayerPos);
        
                    
distance get_distance(PlayerPosNonFloatEndOrigin);
                    if (
distance <= damageradius) {    
                    
message_begin(MSG_ONEgmsg_screenshake, {0,0,0}, i);
                    
write_short(1<<14);
                    
write_short(1<<14);
                    
write_short(1<<14);
                    
message_end();
        
                    
damage maxdamage floatround(floatmul(float(maxdamage), floatdiv(float(distance), float(damageradius))));
                    new 
attacker pev(entpev_owner);
        
                    
baz_damage(iattackerdamage"bazooka");
                }
            }
        }
    
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY);
        
write_byte(21);
        
write_coord(NonFloatEndOrigin[0]);
        
write_coord(NonFloatEndOrigin[1]);
        
write_coord(NonFloatEndOrigin[2]);
        
write_coord(NonFloatEndOrigin[0]);
        
write_coord(NonFloatEndOrigin[1]);
        
write_coord(NonFloatEndOrigin[2] + 320);
        
write_short(white);
        
write_byte(0);
        
write_byte(0);
        
write_byte(16);
        
write_byte(128);
        
write_byte(0);
        
write_byte(255);
        
write_byte(255);
        
write_byte(192);
        
write_byte(128);
        
write_byte(0);
        
message_end();
    
        
engfunc(EngFunc_RemoveEntityent);
        
        return 
FMRES_HANDLED;
    }
    return 
FMRES_IGNORED;
}

public 
drop_call(id)
{
    if ( 
has_baz[id] && get_user_weapon(id) == CSW_KNIFE )
    {
        
drop_rpg_temp(id);
        return 
PLUGIN_HANDLED;
    }
    return 
PLUGIN_CONTINUE;
}

drop_rpg_temp(id
{
    new 
Float:fAim[3] , Float:fOrigin[3];
    
velocity_by_aim(id 64 fAim);
    
pev(id pev_origin fOrigin);

    
fOrigin[0] += fAim[0];
    
fOrigin[1] += fAim[1];

    new 
rpg engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"));

    
set_pev(rpgpev_classname"rpg_temp");
    
engfunc(EngFunc_SetModelrpgmrpg_w);

    
set_pev(rpgpev_mins, { -16.0, -16.0, -16.0 } );
    
set_pev(rpgpev_maxs, { 16.016.016.0 } );

    
set_pev(rpg pev_solid 1);
    
set_pev(rpg pev_movetype 6);

    
engfunc(EngFunc_SetOriginrpgfOrigin);

    
has_baz[id] = false;
    
    
reset_user_knife(id)
}

public 
reset_user_knife(id)
{
    
// Execute weapon Deploy
    
if(user_has_weapon(idCSW_KNIFE))
        
ExecuteHamB(Ham_Item_Deployfind_ent_by_owner(-1"weapon_knife"id))
        
    
// Updating Model
    
engclient_cmd(id"weapon_knife")
    
emessage_begin(MSG_ONEg_msgCurWeapon_id)
    
ewrite_byte(1// active
    
ewrite_byte(CSW_KNIFE// weapon
    
ewrite_byte(-1// clip
    
emessage_end()
}

baz_damage(idattackerdamageweaponDescription[])
{
    if ( 
pev(idpev_takedamage) == DAMAGE_NO ) return;
    if ( 
damage <= ) return;

    new 
userHealth get_user_health(id);
    if (
userHealth damage <= ) {
        
dmgcount[attacker] += userHealth damage;
        
set_msg_block(gmsg_deathBLOCK_SET);
        
ExecuteHamB(Ham_Killedidattacker2);
        
set_msg_block(gmsg_deathBLOCK_NOT);
    
        
        
message_begin(MSG_BROADCASTgmsg_death);
        
write_byte(attacker);
        
write_byte(id);
        
write_byte(0);
        
write_string(weaponDescription);
        
message_end();
        
        
set_pev(attackerpev_fragsfloat(get_user_frags(attacker) + 1));
            
        new 
kname[32], vname[32], kauthid[32], vauthid[32], kteam[10], vteam[10];
    
        
get_user_name(attackerkname31);
        
get_user_team(attackerkteam9);
        
get_user_authid(attackerkauthid31);
     
        
get_user_name(idvname31);
        
get_user_team(idvteam9);
        
get_user_authid(idvauthid31);
            
        
log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^""
        
knameget_user_userid(attacker), kauthidkteam
         
vnameget_user_userid(id), vauthidvteamweaponDescription);
    }
    else {
        
dmgcount[attacker] += damage;
        new 
origin[3];
        
get_user_origin(idorigin);
        
        
message_begin(MSG_ONE,gmsg_damage,{0,0,0},id);
        
write_byte(21);
        
write_byte(20);
        
write_long(DMG_BLAST);
        
write_coord(origin[0]);
        
write_coord(origin[1]);
        
write_coord(origin[2]);
        
message_end();
        
        
set_pev(idpev_healthpev(idpev_health) - float(damage));
    }
    if ( !
get_pcvar_num(pcvar_award) ) return;
    
    new 
breaker get_pcvar_num(pcvar_dmgforpacks);
    if ( 
dmgcount[attacker] > breaker )
    {
        new 
temp dmgcount[attacker] / breaker
        
if ( temp breaker dmgcount[attacker] ) return; //should never be possible
        
dmgcount[attacker] -= temp breaker;
        
zp_set_user_ammo_packsattackerzp_get_user_ammo_packs(attacker) + temp );
    }
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/ 
Torge is offline
MiZic3k
Junior Member
Join Date: Dec 2011
Old 01-16-2012 , 09:42   Re: Bazooka bug :(
Reply With Quote #2

Try this

PHP Code:
public zp_extra_item_selected(playeritemid)
{
    
// This isnt your item
    
if (itemid != g_ItemID)
        return 
ZP_ITEM_AVAILABLE;
    
    
// Bazooka available only for hum
    
if (zp_core_is_zombie(id))
        }
    else(
give_bazooka(id))
         return 
ZP_ITEM_DONT_SHOW;   


Last edited by MiZic3k; 01-16-2012 at 09:50.
MiZic3k is offline
H.RED.ZONE
Veteran Member
Join Date: Sep 2011
Location: Serbia, Belgrade
Old 01-16-2012 , 11:39   Re: Bazooka bug :(
Reply With Quote #3

zp_core_is_zombie -
he is useing zp 4.3
__________________

Last edited by H.RED.ZONE; 01-16-2012 at 11:40.
H.RED.ZONE is offline
Torge
Veteran Member
Join Date: Oct 2011
Old 01-16-2012 , 12:07   Re: Bazooka bug :(
Reply With Quote #4

Quote:
Originally Posted by MiZic3k View Post
Try this

PHP Code:
public zp_extra_item_selected(playeritemid)
{
    
// This isnt your item
    
if (itemid != g_ItemID)
        return 
ZP_ITEM_AVAILABLE;
    
    
// Bazooka available only for hum
    
if (zp_core_is_zombie(id))
        }
    else(
give_bazooka(id))
         return 
ZP_ITEM_DONT_SHOW;   

It's for zp 4.3?
Torge is offline
H.RED.ZONE
Veteran Member
Join Date: Sep 2011
Location: Serbia, Belgrade
Old 01-16-2012 , 16:02   Re: Bazooka bug :(
Reply With Quote #5

Quote:
Originally Posted by Torge View Post
It's for zp 4.3?
Thats for zp 5.0
Use this one for zp 4.3 https://forums.alliedmods.net/showthread.php?t=142539
__________________
H.RED.ZONE is offline
MiZic3k
Junior Member
Join Date: Dec 2011
Old 01-17-2012 , 07:24   Re: Bazooka bug :(
Reply With Quote #6

PHP Code:
public zp_extra_item_selected(playeritemid)
{
    
// This isnt your item
    
if (itemid != g_ItemID)
        return 
ZP_ITEM_AVAILABLE;
    
    
// Bazooka available only for hum
    
if (zp_get_user_zombie(id))
        }
    else(
give_bazooka(id))
         return 
ZP_ITEM_DONT_SHOW;   

MiZic3k 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 11:59.


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