[help] bazooka reload (jetpack)
please help me i want this:
when i buy a bazooka i want it reloaded
when a new round start i want bazooka reloaded too
PHP Code:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <zombie_plague_advance>
#include <colorchat>
#include <xs>
// HUD messages
const Float:HUD_EVENT_X = -1.0
const Float:HUD_EVENT_Y = 0.17
const Float:HUD_INFECT_X = 0.05
const Float:HUD_INFECT_Y = 0.45
const Float:HUD_SPECT_X = -1.0
const Float:HUD_SPECT_Y = 0.8
const Float:HUD_STATS_X = 0.02
const Float:HUD_STATS_Y = 0.9
#define ROCKET_SOUND "zombie_plague/rocket_fire.wav"
#define JETPACK_FLY "zombie_plague/jetpack.wav"
#define JETPACK_SOUND "zombie_plague/jp_blow.wav"
new Float:fDamageDealt[33], Float:g_flyEnergy[33], Float:fLastShot[33]
new bool:hasjet[33], bool:g_hamczbots
new flame, explosion, trail, shockwave, g_item_jetpack, iMsgScreenShake, iMsgScreenFade
new cvar_fuel, cvar_RocketDmg, cvar_Dmg_range, cvar_RocketDelay, cvar_botquota
new g_playername[33][32]
public plugin_init()
{
register_plugin("[ZP] Extra: Jetpack+Bazooka", "1.1", "Chuha")
register_cvar("zp_jpb_version", "1.1", FCVAR_SERVER|FCVAR_SPONLY)
g_item_jetpack = zp_register_extra_item("Jetpack + Bazooka", 35, ZP_TEAM_HUMAN)
cvar_fuel=register_cvar("zp_jp_show_fuel","0")
cvar_RocketDelay=register_cvar("zp_jp_rocket_delay","15")
cvar_RocketDmg=register_cvar("zp_jp_rocket_damage","1000")
cvar_Dmg_range=register_cvar("zp_jp_damage_radius","180")
RegisterHam(Ham_Killed, "player", "OnKilled")
RegisterHam(Ham_Item_Deploy, "weapon_knife", "OnDeployKnifePost", 1)
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
register_forward(FM_CmdStart, "OnCmdStart")
register_forward(FM_ClientUserInfoChanged, "fw_ClientUserInfoChanged")
register_clcmd("drop","cmdDrop")
register_touch("zp_jpb", "player", "OnTouchJetpack")
register_touch("zp_jpb_rocket", "*", "OnTouchRocket")
cvar_botquota = get_cvar_pointer("bot_quota")
iMsgScreenShake = get_user_msgid("ScreenShake")
iMsgScreenFade = get_user_msgid("ScreenFade")
}
public plugin_precache()
{
precache_model("models/p_egon.mdl")
precache_model("models/v_egon.mdl")
precache_model("models/rpgrocket.mdl")
precache_sound("items/gunpickup2.wav")
precache_sound("fvox/flatline.wav")
precache_sound(JETPACK_FLY)
precache_sound(JETPACK_SOUND)
precache_sound(ROCKET_SOUND)
explosion = precache_model("sprites/zerogxplode.spr")
trail = precache_model("sprites/smoke.spr")
flame = precache_model("sprites/xfireball3.spr")
shockwave = precache_model("sprites/shockwave.spr")
}
public client_putinserver(id)
{
hasjet[id] = false
fLastShot[id] = 0.0
g_flyEnergy[id] = 0.0
fDamageDealt[id] = 0.0
get_user_name(id, g_playername[id], charsmax(g_playername[]))
if (is_user_bot(id) && !g_hamczbots && cvar_botquota) set_task(0.1, "register_ham_czbots", id)
}
public OnDeployKnifePost(ent)
{
new id = get_pdata_cbase(ent, 41, 4)
if(pev_valid(id) && hasjet[id]) switchmodel(id)
}
// Register Ham Forwards for CZ bots
public register_ham_czbots(id)
{
// Make sure it's a CZ bot and it's still connected
if (g_hamczbots || !is_user_connected(id) || !get_pcvar_num(cvar_botquota)) return;
RegisterHamFromEntity(Ham_Killed, id, "OnKilled")
// Ham forwards for CZ bots succesfully registered
g_hamczbots = true
}
public fw_ClientUserInfoChanged(id)
{
get_user_name(id, g_playername[id], charsmax(g_playername[]))
}
public client_disconnect(id)
{
drop_jetpack(id)
}
public OnKilled(id, atk, gibs)
{
drop_jetpack(id)
g_flyEnergy[id] = 0.0
}
public zp_user_infected_pre(player, infector)
{
drop_jetpack(player)
g_flyEnergy[player] = 0.0
}
public event_round_start()
{
remove_entity_name("zp_jpb")
}
public OnCmdStart(player)
{
if (!hasjet[player]) return;
static button
button = entity_get_int(player, EV_INT_button)
if (button & IN_ATTACK2)
{
static Float:ctime
ctime = get_gametime()
if (fLastShot[player] < ctime)
{
fLastShot[player] = ctime + get_pcvar_float(cvar_RocketDelay)
new pEntity = create_entity("info_target")
if (!is_valid_ent(pEntity)) return;
engfunc(EngFunc_SetModel, pEntity, "models/rpgrocket.mdl")
set_pev(pEntity, pev_classname, "zp_jpb_rocket")
set_pev(pEntity, pev_movetype, MOVETYPE_FLY)
set_pev(pEntity, pev_solid, SOLID_BBOX)
set_pev(pEntity, pev_effects, EF_LIGHT)
set_pev(pEntity, pev_owner, player)
new Float:VAngle[3]
pev(player, pev_v_angle, VAngle)
engfunc(EngFunc_MakeVectors, VAngle)
new Float:Forward[3], Float:Velocity[3]
global_get(glb_v_forward, Forward)
Forward[0] *= 64.0
Forward[1] *= 64.0
Forward[2] *= 64.0
global_get(glb_v_forward, Velocity)
Velocity[0] *= 1750.0
Velocity[1] *= 1750.0
Velocity[2] *= 1750.0
new Float:Origin[3]
pev(player, pev_origin, Origin)
Origin[0] += Forward[0]
Origin[1] += Forward[1]
set_pev(pEntity, pev_origin, Origin)
set_pev(pEntity, pev_velocity, Velocity)
new Float: Angles[3]
engfunc(EngFunc_VecToAngles, Velocity, Angles)
set_pev(pEntity, pev_angles, Angles)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW)
write_short(pEntity)
write_short(trail)
write_byte(25)
write_byte(5)
write_byte(191)
write_byte(191)
write_byte(191)
write_byte(200)
message_end()
emit_sound(pEntity, CHAN_WEAPON, ROCKET_SOUND, 1.0, ATTN_NORM, 0, PITCH_NORM)
}
}
if (button & IN_JUMP && button & IN_DUCK && (g_flyEnergy[player] > 5.0))
{
g_flyEnergy[player] -= 1.0
static Float:Velocity[3], Float:Angles[3], Float:Forward[3], Float:dummy1[3], Float:dummy2[3]
pev(player, pev_velocity, Velocity)
pev(player, pev_angles, Angles)
Angles[2] = 0.0
engfunc(EngFunc_AngleVectors, Angles, Forward, dummy1, dummy2)
Angles[0] = Forward[0], Angles[1] = Forward[1], Angles[2] = Forward[2]
Angles[0] *= 300.0
Angles[1] *= 300.0
Velocity[0] = Angles[0]
Velocity[1] = Angles[1]
if (Velocity[2] < 300.0) Velocity[2] += 35.0
set_pev(player, pev_velocity, Velocity)
if (random_num(0, 3) == 0)
{
new Float:Origin[3]
pev(player, pev_origin, Origin)
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin, 0)
write_byte(TE_SPRITE)
engfunc(EngFunc_WriteCoord,Origin[0])
engfunc(EngFunc_WriteCoord,Origin[1])
engfunc(EngFunc_WriteCoord,Origin[2])
write_short(flame)
write_byte(8)
write_byte(200)
message_end()
if (g_flyEnergy[player] > 80.0) emit_sound(player, CHAN_ITEM, JETPACK_FLY, 1.0, ATTN_NORM, 0, PITCH_NORM)
else emit_sound(player, CHAN_ITEM, JETPACK_SOUND, 1.0, ATTN_NORM, 0, PITCH_NORM)
}
}
if (!(button & IN_JUMP && button & IN_DUCK) && (g_flyEnergy[player] < 250.0)) g_flyEnergy[player] += 0.5
if (get_pcvar_num(cvar_fuel) == 1)
{
set_hudmessage(0, 191, 255, 0.01, 0.34, 0, 6.0, 0.1, 0.0, 0.0, -1)
show_hudmessage(player, "Jetpack's fuel: %.0f", g_flyEnergy[player])
}
}
switchmodel(id)
{
entity_set_string(id, EV_SZ_viewmodel,"models/v_egon.mdl")
entity_set_string(id, EV_SZ_weaponmodel,"models/p_egon.mdl")
}
public cmdDrop(id)
{
if (hasjet[id] && get_user_weapon(id) == CSW_KNIFE)
{
new Float:Aim[3], Float:origin[3]
entity_get_vector(id, EV_VEC_origin, origin)
VelocityByAim(id, 64, Aim)
origin[0] += Aim[0]
origin[1] += Aim[1]
new Trace = 0
engfunc(EngFunc_TraceHull, origin, origin, IGNORE_MONSTERS | IGNORE_GLASS, HULL_HUMAN, 0, Trace)
if (get_tr2(Trace, TR_StartSolid) || get_tr2(Trace, TR_AllSolid) || !get_tr2(Trace, TR_InOpen)) return PLUGIN_HANDLED;
else
{
drop_jetpack(id)
entity_set_string(id,EV_SZ_viewmodel,"models/v_knife.mdl")
entity_set_string(id,EV_SZ_weaponmodel,"models/p_knife.mdl")
}
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
drop_jetpack(player)
{
if (hasjet[player])
{
new Float:Aim[3], Float:origin[3]
VelocityByAim(player, 64, Aim)
entity_get_vector(player,EV_VEC_origin,origin)
origin[0] += Aim[0]
origin[1] += Aim[1]
new jetpack = create_entity("info_target")
entity_set_string(jetpack, EV_SZ_classname, "zp_jpb")
entity_set_model(jetpack, "models/p_egon.mdl")
entity_set_size(jetpack, Float:{-16.0, -16.0, -16.0}, Float:{16.0, 16.0, 16.0})
entity_set_int(jetpack, EV_INT_solid, SOLID_TRIGGER)
entity_set_int(jetpack, EV_INT_movetype, MOVETYPE_TOSS)
entity_set_vector(jetpack, EV_VEC_origin, origin)
hasjet[player] = false
}
}
public OnTouchJetpack(ent, id)
{
if (is_valid_ent(ent) && is_user_alive(id))
{
if (hasjet[id] || zp_get_user_zombie(id)) return PLUGIN_HANDLED;
hasjet[id] = true
g_flyEnergy[id] = (g_flyEnergy[id] > 0.0 ? g_flyEnergy[id] : 250.0)
emit_sound(id, CHAN_STATIC, "items/gunpickup2.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
engclient_cmd(id, "weapon_knife")
switchmodel(id)
remove_entity(ent)
}
return PLUGIN_CONTINUE
}
public OnTouchRocket(ent, id)
{
if (!is_valid_ent(ent)) return;
new Float:atkOrigin[3]
entity_get_vector(ent, EV_VEC_origin, atkOrigin)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_EXPLOSION)
engfunc(EngFunc_WriteCoord, atkOrigin[0])
engfunc(EngFunc_WriteCoord, atkOrigin[1])
engfunc(EngFunc_WriteCoord, atkOrigin[2])
write_short(explosion)
write_byte(31)
write_byte(15)
write_byte(0)
message_end()
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_EXPLOSION)
engfunc(EngFunc_WriteCoord, atkOrigin[0])
engfunc(EngFunc_WriteCoord, atkOrigin[1])
engfunc(EngFunc_WriteCoord, atkOrigin[2])
write_short(explosion)
write_byte(30)
write_byte(15)
write_byte(0)
message_end()
for (new Iter = 0; Iter < 4; Iter++)
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMCYLINDER)
engfunc(EngFunc_WriteCoord, atkOrigin[0])
engfunc(EngFunc_WriteCoord, atkOrigin[1])
engfunc(EngFunc_WriteCoord, atkOrigin[2])
engfunc(EngFunc_WriteCoord, atkOrigin[0])
engfunc(EngFunc_WriteCoord, atkOrigin[1])
engfunc(EngFunc_WriteCoord, atkOrigin[2] + 350.0 + Iter*100.0)
write_short(shockwave)
write_byte(0)
write_byte(0)
write_byte(4)
write_byte(Iter*40)
write_byte(0)
write_byte(121)
write_byte(121)
write_byte(121)
write_byte(random_num(150, 240))
write_byte(0)
message_end()
}
if (is_valid_ent(id))
{
new classname[32]
entity_get_string(id, EV_SZ_classname, classname, 31)
if (equal(classname, "func_breakable")) force_use(ent, id)
}
new attacker = entity_get_edict(ent, EV_ENT_owner)
if (!is_user_connected(attacker))
{
remove_entity(ent)
return;
}
new victim = -1
while((victim = engfunc(EngFunc_FindEntityInSphere, victim, atkOrigin, get_pcvar_float(cvar_Dmg_range))) != 0)
{
if (!is_user_alive(victim) || !zp_get_user_zombie(victim)) continue;
new Float:damage = get_pcvar_float(cvar_RocketDmg) - entity_range(ent, victim)*1.5
new Float:victimhp = entity_get_float(victim, EV_FL_health)
static Float:fVelocity[3]
pev(victim, pev_velocity, fVelocity)
xs_vec_mul_scalar(fVelocity, 2.75, fVelocity)
fVelocity[2] *= 1.75
set_pev(victim, pev_velocity, fVelocity)
if (zp_get_user_nemesis(victim) || zp_get_user_assassin(victim)) damage *= 1.25
client_cmd(victim, "spk fvox/flatline.wav")
message_begin(MSG_ONE_UNRELIABLE, iMsgScreenShake, _, victim)
write_short(255 << 10)
write_short(10 << 10)
write_short(255 << 10)
message_end()
message_begin(MSG_ONE_UNRELIABLE, iMsgScreenFade, _, victim)
write_short((1 << 10)*3)
write_short((1 << 10)*3)
write_short(0)
write_byte(255)
write_byte(0)
write_byte(0)
write_byte(235)
message_end()
if (victimhp > damage)
{
ExecuteHam(Ham_TakeDamage, victim, ent, attacker, damage, DMG_BLAST)
fDamageDealt[attacker] += damage
while(fDamageDealt[attacker] > 500)
{
new packs = zp_get_user_ammo_packs(attacker)
zp_set_user_ammo_packs(attacker, packs+1)
fDamageDealt[attacker] -= 500
}
}
else
ExecuteHamB(Ham_Killed, victim, attacker, 2) // set last param to 2 if you want victim to gib
ColorChat(attacker, GREY, "^x04[ZP]^x01 Damage to ^x04%s^x01 ::^x04 %.0f^x01 damage", g_playername[victim], damage)
}
remove_entity(ent)
}
public zp_extra_item_selected(player, itemid)
{
new name[32]
get_user_name(player, name, 31)
if (itemid == g_item_jetpack)
{
set_hudmessage(255, 168, 25, HUD_SPECT_X, HUD_SPECT_Y, 1, 0.0, 5.0, 1.0, 1.0, -1)
show_hudmessage(0, "%s bought a Jetpack!!", name)
if (hasjet[player]) drop_jetpack(player)
ColorChat(0, GREY, "^x04[ZP]^x03 %s^x01 has purchased a^x04 Jetpack + Bazooka", g_playername[player])
ColorChat(player, GREY, "^x04[ZP]^x01 Press^x03 CTRL+SPACE^x01 to fly!")
ColorChat(player, GREY, "^x04[ZP]^x01 Press^x03 RIGHT CLICK^x01 to shoot!")
hasjet[player] = true
g_flyEnergy[player] = 250.0
emit_sound(player, CHAN_STATIC, "items/gunpickup2.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
engclient_cmd(player, "weapon_knife")
switchmodel(player)
}
}
|