AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Suggestions / Requests (https://forums.alliedmods.net/forumdisplay.php?f=12)
-   -   [help] jetpack reload (https://forums.alliedmods.net/showthread.php?t=299272)

sayf118 07-09-2017 17:53

[help] jetpack reload
 
please help me i want this:
when i buy a jetpack i want it reloaded
when a new round start i want jetpack 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 flameexplosiontrailshockwaveg_item_jetpackiMsgScreenShakeiMsgScreenFade
new cvar_fuelcvar_RocketDmgcvar_Dmg_rangecvar_RocketDelaycvar_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"35ZP_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
(idg_playername[id], charsmax(g_playername[]))

    if (
is_user_bot(id) && !g_hamczbots && cvar_botquotaset_task(0.1"register_ham_czbots"id)
}

public 
OnDeployKnifePost(ent)
{
    new 
id get_pdata_cbase(ent414)

    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_Killedid"OnKilled")
    
    
// Ham forwards for CZ bots succesfully registered
    
g_hamczbots true
}

public 
fw_ClientUserInfoChanged(id)
{
    
get_user_name(idg_playername[id], charsmax(g_playername[]))
}

public 
client_disconnect(id)
{
    
drop_jetpack(id)
}

public 
OnKilled(idatkgibs)
{    
    
drop_jetpack(id)
    
g_flyEnergy[id] = 0.0
}

public 
zp_user_infected_pre(playerinfector)
{    
    
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(playerEV_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_SetModelpEntity"models/rpgrocket.mdl")

            
set_pev(pEntitypev_classname"zp_jpb_rocket")
            
set_pev(pEntitypev_movetypeMOVETYPE_FLY)
            
set_pev(pEntitypev_solidSOLID_BBOX)
            
set_pev(pEntitypev_effectsEF_LIGHT)
            
set_pev(pEntitypev_ownerplayer)

            new 
Float:VAngle[3]
            
pev(playerpev_v_angleVAngle)
            
engfunc(EngFunc_MakeVectorsVAngle)

            new 
Float:Forward[3], Float:Velocity[3]
            
global_get(glb_v_forwardForward)
            
Forward[0] *= 64.0
            Forward
[1] *= 64.0
            Forward
[2] *= 64.0
                    
            global_get
(glb_v_forwardVelocity)
            
Velocity[0] *= 1750.0
            Velocity
[1] *= 1750.0
            Velocity
[2] *= 1750.0

            
new Float:Origin[3]
            
pev(playerpev_originOrigin)
            
Origin[0] += Forward[0]
            
Origin[1] += Forward[1]

            
set_pev(pEntitypev_originOrigin)
            
set_pev(pEntitypev_velocityVelocity)

            new 
FloatAngles[3]
            
engfunc(EngFunc_VecToAnglesVelocityAngles)
            
set_pev(pEntitypev_anglesAngles)
        
            
message_begin(MSG_BROADCASTSVC_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(pEntityCHAN_WEAPONROCKET_SOUND1.0ATTN_NORM0PITCH_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(playerpev_velocityVelocity)
        
pev(playerpev_anglesAngles)
        
Angles[2] = 0.0
        
        engfunc
(EngFunc_AngleVectorsAnglesForwarddummy1dummy2)
        
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.0Velocity[2] += 35.0  
        
        set_pev
(playerpev_velocityVelocity)    
        
        if (
random_num(03) == 0)
        {
            new 
Float:Origin[3]
            
pev(playerpev_originOrigin)
            
            
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYOrigin0)
            
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.0emit_sound(playerCHAN_ITEMJETPACK_FLY1.0ATTN_NORM0PITCH_NORM)
            else 
emit_sound(playerCHAN_ITEMJETPACK_SOUND1.0ATTN_NORM0PITCH_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(01912550.010.3406.00.10.00.0, -1)
        
show_hudmessage(player"Jetpack's fuel: %.0f"g_flyEnergy[player])
    }    
}

switchmodel(id)
{
    
entity_set_string(idEV_SZ_viewmodel,"models/v_egon.mdl")
    
entity_set_string(idEV_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(idEV_VEC_originorigin)
        
VelocityByAim(id64Aim)
        
        
origin[0] += Aim[0]
        
origin[1] += Aim[1]
        
        new 
Trace 0
        engfunc
(EngFunc_TraceHulloriginoriginIGNORE_MONSTERS IGNORE_GLASSHULL_HUMAN0Trace)
        if (
get_tr2(TraceTR_StartSolid) || get_tr2(TraceTR_AllSolid) || !get_tr2(TraceTR_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(player64Aim)
        
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(jetpackEV_SZ_classname"zp_jpb")
        
entity_set_model(jetpack"models/p_egon.mdl")    
        
        
entity_set_size(jetpackFloat:{-16.0, -16.0, -16.0}, Float:{16.016.016.0})
        
entity_set_int(jetpackEV_INT_solidSOLID_TRIGGER)
        
        
entity_set_int(jetpackEV_INT_movetypeMOVETYPE_TOSS)
        
        
entity_set_vector(jetpackEV_VEC_originorigin)       
        
        
hasjet[player] = false
    
}    
}

public 
OnTouchJetpack(entid)
{
    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(idCHAN_STATIC"items/gunpickup2.wav"VOL_NORMATTN_NORM0PITCH_NORM)
        
engclient_cmd(id"weapon_knife")
        
switchmodel(id)
        
remove_entity(ent)
    }
    
    return 
PLUGIN_CONTINUE
}

public 
OnTouchRocket(entid)
{
    if (!
is_valid_ent(ent)) return;
    
    new 
Float:atkOrigin[3]
    
entity_get_vector(entEV_VEC_originatkOrigin)

    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_EXPLOSION)
    
engfunc(EngFunc_WriteCoordatkOrigin[0])
    
engfunc(EngFunc_WriteCoordatkOrigin[1])
    
engfunc(EngFunc_WriteCoordatkOrigin[2])
    
write_short(explosion)
    
write_byte(31)
    
write_byte(15)
    
write_byte(0)
    
message_end()
            
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_EXPLOSION)
    
engfunc(EngFunc_WriteCoordatkOrigin[0])
    
engfunc(EngFunc_WriteCoordatkOrigin[1])
    
engfunc(EngFunc_WriteCoordatkOrigin[2])
    
write_short(explosion)
    
write_byte(30)
    
write_byte(15)
    
write_byte(0)
    
message_end()
            
    for (new 
Iter 0Iter 4Iter++)
    {                
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_BEAMCYLINDER)
        
engfunc(EngFunc_WriteCoordatkOrigin[0])
        
engfunc(EngFunc_WriteCoordatkOrigin[1])
        
engfunc(EngFunc_WriteCoordatkOrigin[2])
        
engfunc(EngFunc_WriteCoordatkOrigin[0])
        
engfunc(EngFunc_WriteCoordatkOrigin[1])
        
engfunc(EngFunc_WriteCoordatkOrigin[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(150240))
        
write_byte(0)
        
message_end()
    }

    if (
is_valid_ent(id))
    {
        new 
classname[32]
        
entity_get_string(idEV_SZ_classnameclassname31)
                
        if (
equal(classname"func_breakable")) force_use(entid)
    }
    
    new 
attacker entity_get_edict(entEV_ENT_owner)

    if (!
is_user_connected(attacker))
    {
        
remove_entity(ent)
        return;
    }
    
    new 
victim = -1
    
while((victim engfunc(EngFunc_FindEntityInSpherevictimatkOriginget_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(entvictim)*1.5

        
new Float:victimhp entity_get_float(victimEV_FL_health)

        static 
Float:fVelocity[3]
        
pev(victimpev_velocityfVelocity)
        
xs_vec_mul_scalar(fVelocity2.75fVelocity)
        
fVelocity[2] *= 1.75
        set_pev
(victimpev_velocityfVelocity)

        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_UNRELIABLEiMsgScreenShake_victim)
        
write_short(255 << 10)
        
write_short(10 << 10)
        
write_short(255 << 10)
        
message_end()

        
message_begin(MSG_ONE_UNRELIABLEiMsgScreenFade_victim)
        
write_short((<< 10)*3)
        
write_short((<< 10)*3)
        
write_short(0)
        
write_byte(255)
        
write_byte(0)
        
write_byte(0)
        
write_byte(235)
        
message_end()
                    
        if (
victimhp damage)
        {                       
            
ExecuteHam(Ham_TakeDamagevictimentattackerdamageDMG_BLAST)
            
fDamageDealt[attacker] += damage
            
while(fDamageDealt[attacker] > 500)
            {
                new 
packs zp_get_user_ammo_packs(attacker)
                
zp_set_user_ammo_packs(attackerpacks+1)
                
fDamageDealt[attacker] -= 500
            
}
        }
        else
            
ExecuteHamB(Ham_Killedvictimattacker2// set last param to 2 if you want victim to gib    

             
ColorChat(attackerGREY"^x04[ZP]^x01 Damage to ^x04%s^x01 ::^x04 %.0f^x01 damage"g_playername[victim], damage)
    }
    
    
remove_entity(ent)
}

public 
zp_extra_item_selected(playeritemid)
{
         new 
name[32]  
         
get_user_name(playername31)   
    if (
itemid == g_item_jetpack)
    {
            
set_hudmessage(25516825HUD_SPECT_XHUD_SPECT_Y10.05.01.01.0, -1
                
show_hudmessage(0"%s bought a Jetpack!!"name)
                
        if (
hasjet[player]) drop_jetpack(player)
        
ColorChat(0GREY"^x04[ZP]^x03 %s^x01 has purchased a^x04 Jetpack + Bazooka"g_playername[player])
        
ColorChat(playerGREY"^x04[ZP]^x01 Press^x03 CTRL+SPACE^x01 to fly!")
        
ColorChat(playerGREY"^x04[ZP]^x01 Press^x03 RIGHT CLICK^x01 to shoot!")
        
hasjet[player] = true
        g_flyEnergy
[player] = 250.0
        emit_sound
(playerCHAN_STATIC"items/gunpickup2.wav"VOL_NORMATTN_NORM0PITCH_NORM)
        
engclient_cmd(player"weapon_knife")
        
switchmodel(player)
    }




All times are GMT -4. The time now is 01:09.

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