Raised This Month: $32 Target: $400
 8% 

Zombie Plague need help with jetpack


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
stekiwnl
Junior Member
Join Date: May 2022
Old 07-17-2022 , 07:19   Zombie Plague need help with jetpack
Reply With Quote #1

Hello, I have jetpack to be removed when only 1 human is alive, but I want to still be able to just shoot the jetpack rocket(bazooka) but cannot fly is that possible, can you help me
Code:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
native zp_get_user_zombie(id)
native zp_register_extra_item(const name[], cost, teams)
native zp_get_user_sniper(id)
native zp_get_user_survivor(id)
native zp_has_round_started()
native zp_get_human_count()
native zp_get_user_last_human(id)
	
new const ClassnameJetPack[] = "n4d_jetpack"
new const ClassnameRocket[] = "n4d_bazooka"
new const ModelVJetPack[] = "models/zp_apocalypse/v_thantos.mdl"
new const ModelPJetPack[] = "models/zp_apocalypse/p_thantos.mdl"
new const ModelWJetPack[] = "models/zp_apocalypse/w_thantos.mdl"
new const ModelRocket[] = "models/rpgrocket.mdl"
new const SoundPickup[] = "items/gunpickup2.wav"
new const SoundShoot[] = "zs/at4-1.wav"
new const SoundTravel[] = "zs/bfuu.wav"
new const SoundFly[] = "zs/fly.wav"
new const SoundBlow[] = "zs/blow.wav"

new bool:bHasJetPack[33]
new Float:fJetpackFuel[33]
new Float:fLastShoot[33]
new Float:fLastEffect[33]
new SprExp, SprTrail, ItemJetPack, iAllocInfoTarget, iMaxClients, MsgSayText
new CvarMaxFuel, CvarRadius, CvarDamage, CvarSpeed, CvarCooldown, CvarRegen, CvarRocketSpeed
new Float:CMaxFuel, Float:CRadius, Float:CDamage, Float:CSpeed, Float:CCooldown, Float:CRegen, CRocketSpeed
#define IsPlayer(%0) (1<=%0<=iMaxClients)
#define ZP_TEAM_HUMAN (1<<1)
#define ZP_PLUGIN_HANDLED 97
#define PevEntType pev_flSwimTime
#define EntTypeJetPack 3904
#define EntTypeRocket 9340

//Uncomment this to draw ring effect
//#define DrawRing

//Uncomment this to draw flame effect
#define DrawFlame

#if defined DrawRing
new SprRing
#endif

#if defined DrawFlame
new SprFlame
#endif

public plugin_precache()
{
	precache_sound(SoundPickup)
	precache_sound(SoundShoot)
	precache_sound(SoundTravel)
	precache_sound(SoundFly)
	precache_sound(SoundBlow)
	
	SprExp = precache_model("sprites/zerogxplode.spr")
	SprTrail = precache_model("sprites/smoke.spr")
	
	#if defined DrawFlame
	SprFlame = precache_model("sprites/xfireball3.spr")
	#endif
	
	#if defined DrawRing
	SprRing = precache_model("sprites/shockwave.spr")
	#endif
	
	precache_model(ModelVJetPack)
	precache_model(ModelPJetPack)
	precache_model(ModelWJetPack)
	precache_model(ModelRocket)
}

public plugin_init()
{
	register_plugin("New Jetpack", "0.0.1", "Bad_Bud,wbyokomo")
	
	register_event("HLTV", "OnNewRound", "a", "1=0", "2=0")
	register_logevent("OnRoundEnd", 2, "1=Round_End")
	
	RegisterHam(Ham_Killed, "player", "OnPlayerKilled")
	RegisterHam(Ham_Item_Deploy, "weapon_knife", "OnKnifeDeployPost", 1)
	
	register_forward(FM_PlayerPreThink, "OnPlayerPreThink")
	register_forward(FM_ClientDisconnect, "OnClientDisconnect")
	register_forward(FM_Touch, "OnTouch")
	
	CvarMaxFuel = register_cvar("jp_maxfuel", "300.0")
	CvarRadius = register_cvar("jp_radius", "500.0")
	CvarDamage = register_cvar("jp_damage", "1000.0")
	CvarSpeed = register_cvar("jp_speed", "300.0")
	CvarCooldown = register_cvar("jp_cooldown", "10.0")
	CvarRegen = register_cvar("jp_regen", "0.3")
	CvarRocketSpeed = register_cvar("jp_rocket_speed", "1500")
	
	iMaxClients = get_maxplayers()
	MsgSayText = get_user_msgid("SayText")
	ItemJetPack = zp_register_extra_item("\r[Item] \wJetPack+Bazooka", 90, ZP_TEAM_HUMAN)
}

public plugin_cfg()
{
	iAllocInfoTarget = engfunc(EngFunc_AllocString, "info_target")
}

public client_putinserver(id)
{
	ResetValues(id)
	set_task(1.0, "count", id, _,_, "b")
}

public count(id)
{
	if(zp_get_human_count() == 1 && bHasJetPack[id])
	{
		ResetValues(id)
		RemoveAllJetPack()
		zp_colored_print(id, "^x04[ZP]^x01 Jetpack has been removed as Last Human alive!")
	}
}


public OnClientDisconnect(id)
{
	ResetValues(id)
}

public OnNewRound()
{
	for( new i = 1; i < 33; i++ )
	{
		ResetValues(i)
	}
	
	RemoveAllJetPack()
	CMaxFuel = get_pcvar_float(CvarMaxFuel)
	CRadius = get_pcvar_float(CvarRadius)
	CDamage = get_pcvar_float(CvarDamage)
	CSpeed = get_pcvar_float(CvarSpeed)
	CCooldown = get_pcvar_float(CvarCooldown)
	CRegen = get_pcvar_float(CvarRegen)
	CRocketSpeed = get_pcvar_num(CvarRocketSpeed)
}

public OnRoundEnd()
{
	RemoveAllJetPack()
}

public OnPlayerKilled(id)
{
	if(bHasJetPack[id]) DropJetPack(id);
	
	ResetValues(id)
}

public zp_user_infected_pre(id)
{
	if(bHasJetPack[id]) DropJetPack(id);
	
	ResetValues(id)
}

public zp_extra_item_selected(id, item)
{
	if(item == ItemJetPack)
	{
		if(bHasJetPack[id] || zp_get_user_survivor(id) || zp_get_user_sniper(id) || zp_get_user_last_human(id))
		{
			//zp_colored_print(id, "^x04[ZP]^x01 You already have this item.")
			return ZP_PLUGIN_HANDLED;
		}
		if (!zp_has_round_started())
		{
			zp_colored_print(id, "^x04[ZP]^x01 Wait for the round to begin!")
			return ZP_PLUGIN_HANDLED
		}
		
		bHasJetPack[id] = true
		//zp_colored_print(id, "^x04[ZP]^x01 You just bought a^x04 JetPack^x01, enjoy flying & killing zombies.")
		engclient_cmd(id, "weapon_knife")
	}
	
	return PLUGIN_CONTINUE;
}

public OnKnifeDeployPost(ent)
{
	if(pev_valid(ent) == 2)
	{
		static id; id = get_pdata_cbase(ent, 41, 4)
		if(is_user_alive(id) && bHasJetPack[id]) ReplaceModel(id);
	}
}

public OnPlayerPreThink(id)
{	
	if(bHasJetPack[id])
	{
		static button, flag, Float:ctime, weapon
		button = pev(id, pev_button)
		flag = pev(id, pev_flags)
		ctime = get_gametime()
		weapon = get_user_weapon(id)
		
		if((weapon == CSW_KNIFE) && (button & IN_ATTACK2) && (fLastShoot[id] < ctime))
		{
			new ent = engfunc(EngFunc_CreateNamedEntity, iAllocInfoTarget)
			if(ent)
			{				
				set_pev(ent, pev_classname, ClassnameRocket)
				engfunc(EngFunc_SetModel, ent, ModelRocket)
				static Float:vecSrc[3]
				pev(id, pev_origin, vecSrc)
				vecSrc[2] += 16.0
				engfunc(EngFunc_SetOrigin, ent, vecSrc)
				set_pev(ent, pev_movetype, MOVETYPE_FLY)
				set_pev(ent, pev_solid, SOLID_BBOX)
				set_pev(ent, pev_effects, EF_LIGHT)
				engfunc(EngFunc_SetSize, ent, Float:{0.0, 0.0, 0.0}, Float:{0.0, 0.0, 0.0})
				set_pev(ent, pev_owner, id)
				static Float:vecVelocity[3]
				velocity_by_aim(id, CRocketSpeed, vecVelocity)
				set_pev(ent, pev_velocity, vecVelocity)
				static Float:vecAngles[3]
				engfunc(EngFunc_VecToAngles, vecVelocity, vecAngles)
				set_pev(ent, pev_angles, vecAngles)
				set_pev(ent, PevEntType, EntTypeRocket)
				
				message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
				write_byte(TE_BEAMFOLLOW)
				write_short(ent)
				write_short(SprTrail)
				write_byte(40)
				write_byte(5)
				write_byte(224)
				write_byte(224)
				write_byte(255)
				write_byte(192)
				message_end()
				
				emit_sound(id, CHAN_STATIC, SoundShoot, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
				emit_sound(ent, CHAN_WEAPON, SoundTravel, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
				fLastShoot[id] = ctime+CCooldown
			}
			else
			{
				fLastShoot[id] = ctime+1.5
			}
		}
		
		if((weapon == CSW_KNIFE) && (button & IN_DUCK) && (button & IN_JUMP) && !(flag & FL_ONGROUND) && (fJetpackFuel[id] > 0.0))
		{
			static Float:vVelocity[3], Float:vAngles[3], Float:vForward[3]
			pev(id, pev_velocity, vVelocity)
			pev(id, pev_angles, vAngles)
			vAngles[2] = 0.0
			angle_vector(vAngles, ANGLEVECTOR_FORWARD, vForward)
			vAngles = vForward
			vAngles[0] *= CSpeed
			vAngles[1] *= CSpeed
			vVelocity[0] = vAngles[0]
			vVelocity[1] = vAngles[1]
			if(vVelocity[2] < 300.0) vVelocity[2] += 35.0;
			set_pev(id, pev_velocity, vVelocity)
			
			if(fLastEffect[id] < ctime)
			{
				#if defined DrawFlame
				static Float:vOrigin[3]
				pev(id, pev_origin, vOrigin)
				engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vOrigin, 0)
				write_byte(TE_SPRITE)
				engfunc(EngFunc_WriteCoord, vOrigin[0])
				engfunc(EngFunc_WriteCoord, vOrigin[1])
				engfunc(EngFunc_WriteCoord, vOrigin[2])
				write_short(SprFlame)
				write_byte(8)
				write_byte(128)
				message_end()
				#endif
				
				if(fJetpackFuel[id] > 80.0) emit_sound(id, CHAN_STREAM, SoundFly, VOL_NORM, ATTN_NORM, 0,  PITCH_NORM);
				else emit_sound(id, CHAN_STREAM, SoundBlow, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
				
				fLastEffect[id] = ctime+0.2
			}
			
			fJetpackFuel[id] -= 1.0
		}
		else if(!(button & IN_DUCK) && !(button & IN_JUMP) && fJetpackFuel[id] < CMaxFuel) fJetpackFuel[id] += CRegen;
		}
}

public OnTouch(ent, id)
{
	if(pev_valid(ent))
	{
		if(pev(ent, PevEntType) == EntTypeJetPack)
		{
			if(IsPlayer(id) && is_user_alive(id) && !zp_get_user_zombie(id) && !bHasJetPack[id] && !zp_get_user_sniper(id) && !zp_get_user_survivor(id))
			{
				engfunc(EngFunc_RemoveEntity, ent)
				bHasJetPack[id] = true
				emit_sound(id, CHAN_STATIC, SoundPickup, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
				engclient_cmd(id,"weapon_knife")
				ReplaceModel(id)
			}
		}
		else if(pev(ent, PevEntType) == EntTypeRocket)
		{
			static Float:fOrigin[3]
			pev(ent, pev_origin, fOrigin)
			
			engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, fOrigin, 0)
			write_byte(TE_EXPLOSION)
			engfunc(EngFunc_WriteCoord, fOrigin[0])
			engfunc(EngFunc_WriteCoord, fOrigin[1])
			engfunc(EngFunc_WriteCoord, fOrigin[2])
			write_short(SprExp)
			write_byte(40)
			write_byte(30)
			write_byte(10)
			message_end()
			
			#if defined DrawRing
			engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, fOrigin, 0)
			write_byte(TE_BEAMCYLINDER)
			engfunc(EngFunc_WriteCoord, fOrigin[0])
			engfunc(EngFunc_WriteCoord, fOrigin[1])
			engfunc(EngFunc_WriteCoord, fOrigin[2])
			engfunc(EngFunc_WriteCoord, fOrigin[0])
			engfunc(EngFunc_WriteCoord, fOrigin[1])
			engfunc(EngFunc_WriteCoord, fOrigin[2]+555.0)
			write_short(SprRing)
			write_byte(0)
			write_byte(1)
			write_byte(6)
			write_byte(8)
			write_byte(10)
			write_byte(224)
			write_byte(224)
			write_byte(255)
			write_byte(192)
			write_byte(5)
			message_end()
			#endif
			
			static attacker; attacker = pev(ent, pev_owner)
			if(!is_user_connected(attacker))
			{
				engfunc(EngFunc_RemoveEntity, ent)
				return FMRES_IGNORED;
			}
			
			if(pev_valid(id) && !is_user_connected(id))
			{
				static szClassname[32]
				pev(id, pev_classname, szClassname, 31)
				if(equal(szClassname, "func_breakable") && (pev(id, pev_solid) != SOLID_NOT))
				{
					dllfunc(DLLFunc_Use, id, ent)
				}
			}
			
			static victim; victim = -1
			while((victim = engfunc(EngFunc_FindEntityInSphere, victim, fOrigin, CRadius)) != 0)
			{
				if(is_user_alive(victim) && zp_get_user_zombie(victim))
				{
					static Float:originV[3], Float:dist, Float:damage
					pev(victim, pev_origin, originV)
					dist = get_distance_f(fOrigin, originV)
					damage = CDamage-(CDamage/CRadius)*dist
					if(damage > 0.0)
					{
						ExecuteHamB(Ham_TakeDamage, victim, ent, attacker, damage, DMG_BULLET)
						//client_print(attacker, print_chat, "[JpDebug] Rocket damage: %.1f", damage)
					}
				}
			}
			
			engfunc(EngFunc_RemoveEntity, ent)
		}
	}
	
	return FMRES_IGNORED;
}

ReplaceModel(id)
{
set_pev(id, pev_viewmodel2, ModelVJetPack)
set_pev(id, pev_weaponmodel2, ModelPJetPack)
}

DropJetPack(id)
{
new Float:Aim[3],Float:origin[3]
velocity_by_aim(id, 64, Aim)
pev(id, pev_origin, origin)
origin[0] += Aim[0]
origin[1] += Aim[1]
new ent = engfunc(EngFunc_CreateNamedEntity, iAllocInfoTarget)
if(!pev_valid(ent)) return;

set_pev(ent, pev_classname, ClassnameJetPack)
engfunc(EngFunc_SetModel, ent, ModelWJetPack)
engfunc(EngFunc_SetSize, ent, Float:{-4.0,-4.0,-4.0}, Float:{4.0,4.0,4.0})
set_pev(ent, pev_solid, SOLID_TRIGGER)
set_pev(ent, pev_movetype, MOVETYPE_TOSS)
engfunc(EngFunc_SetOrigin, ent, origin)
set_pev(ent, PevEntType, EntTypeJetPack)
}

RemoveAllJetPack()
{
new ent = engfunc(EngFunc_FindEntityByString, -1, "classname", ClassnameJetPack)
while(ent > 0)
{
engfunc(EngFunc_RemoveEntity, ent)
ent = engfunc(EngFunc_FindEntityByString, -1, "classname", ClassnameJetPack)
}
}

ResetValues(id)
{
bHasJetPack[id] = false
fJetpackFuel[id] = get_pcvar_float(CvarMaxFuel)
}

zp_colored_print(target, const message[], any:...)
{
static buffer[512], i, argscount
argscount = numargs()

if (!target)
{
static iPlayers[32], iNum, j, player
get_players(iPlayers, iNum, "ch")
for (j = 0; j < iNum; j++)
{
player = iPlayers[j]
static changed[5], changedcount
changedcount = 0

for (i = 2; i < argscount; i++)
{
if (getarg(i) == LANG_PLAYER)
{
setarg(i, 0, player)
changed[changedcount] = i
changedcount++
}
}

vformat(buffer, charsmax(buffer), message, 3)
message_begin(MSG_ONE_UNRELIABLE, MsgSayText, _, player)
write_byte(player)
write_string(buffer)
message_end()

for (i = 0; i < changedcount; i++) setarg(changed[i], 0, LANG_PLAYER);
}
}
else
{
vformat(buffer, charsmax(buffer), message, 3)
message_begin(MSG_ONE, MsgSayText, _, target)
write_byte(target)
write_string(buffer)
message_end()
}
}
stekiwnl is offline
TribalBlood
Member
Join Date: Oct 2020
Old 07-17-2022 , 07:32   Re: Zombie Plague need help with jetpack
Reply With Quote #2

PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
native zp_get_user_zombie(id)
native zp_register_extra_item(const name[], costteams)
native zp_get_user_sniper(id)
native zp_get_user_survivor(id)
native zp_has_round_started()
native zp_get_human_count()
native zp_get_user_last_human(id)

new const 
ClassnameJetPack[] = "n4d_jetpack"
new const ClassnameRocket[] = "n4d_bazooka"
new const ModelVJetPack[] = "models/zp_apocalypse/v_thantos.mdl"
new const ModelPJetPack[] = "models/zp_apocalypse/p_thantos.mdl"
new const ModelWJetPack[] = "models/zp_apocalypse/w_thantos.mdl"
new const ModelRocket[] = "models/rpgrocket.mdl"
new const SoundPickup[] = "items/gunpickup2.wav"
new const SoundShoot[] = "zs/at4-1.wav"
new const SoundTravel[] = "zs/bfuu.wav"
new const SoundFly[] = "zs/fly.wav"
new const SoundBlow[] = "zs/blow.wav"

new bool:bHasJetPack[33]
new 
Float:fJetpackFuel[33]
new 
Float:fLastShoot[33]
new 
Float:fLastEffect[33]
new 
SprExpSprTrailItemJetPackiAllocInfoTargetiMaxClientsMsgSayText
new CvarMaxFuelCvarRadiusCvarDamageCvarSpeedCvarCooldownCvarRegenCvarRocketSpeed
new Float:CMaxFuelFloat:CRadiusFloat:CDamageFloat:CSpeedFloat:CCooldownFloat:CRegenCRocketSpeed
#define IsPlayer(%0) (1<=%0<=iMaxClients)
#define ZP_TEAM_HUMAN (1<<1)
#define ZP_PLUGIN_HANDLED 97
#define PevEntType pev_flSwimTime
#define EntTypeJetPack 3904
#define EntTypeRocket 9340

//Uncomment this to draw ring effect
//#define DrawRing

//Uncomment this to draw flame effect
#define DrawFlame

#if defined DrawRing
new SprRing
#endif

#if defined DrawFlame
new SprFlame
#endif

public plugin_precache()
{
    
precache_sound(SoundPickup)
    
precache_sound(SoundShoot)
    
precache_sound(SoundTravel)
    
precache_sound(SoundFly)
    
precache_sound(SoundBlow)

    
SprExp precache_model("sprites/zerogxplode.spr")
    
SprTrail precache_model("sprites/smoke.spr")

    
#if defined DrawFlame
    
SprFlame precache_model("sprites/xfireball3.spr")
    
#endif

    #if defined DrawRing
    
SprRing precache_model("sprites/shockwave.spr")
    
#endif

    
precache_model(ModelVJetPack)
    
precache_model(ModelPJetPack)
    
precache_model(ModelWJetPack)
    
precache_model(ModelRocket)
}

public 
plugin_init()
{
    
register_plugin("New Jetpack""0.0.1""Bad_Bud,wbyokomo")

    
register_event("HLTV""OnNewRound""a""1=0""2=0")
    
register_logevent("OnRoundEnd"2"1=Round_End")

    
RegisterHam(Ham_Killed"player""OnPlayerKilled")
    
RegisterHam(Ham_Item_Deploy"weapon_knife""OnKnifeDeployPost"1)

    
register_forward(FM_PlayerPreThink"OnPlayerPreThink")
    
register_forward(FM_ClientDisconnect"OnClientDisconnect")
    
register_forward(FM_Touch"OnTouch")

    
CvarMaxFuel register_cvar("jp_maxfuel""300.0")
    
CvarRadius register_cvar("jp_radius""500.0")
    
CvarDamage register_cvar("jp_damage""1000.0")
    
CvarSpeed register_cvar("jp_speed""300.0")
    
CvarCooldown register_cvar("jp_cooldown""10.0")
    
CvarRegen register_cvar("jp_regen""0.3")
    
CvarRocketSpeed register_cvar("jp_rocket_speed""1500")

    
iMaxClients get_maxplayers()
    
MsgSayText get_user_msgid("SayText")
    
ItemJetPack zp_register_extra_item("\r[Item] \wJetPack+Bazooka"90ZP_TEAM_HUMAN)
}

public 
plugin_cfg()
{
    
iAllocInfoTarget engfunc(EngFunc_AllocString"info_target")
}

public 
client_putinserver(id)
{
    
ResetValues(id)
    
set_task(1.0"count"id_,_"b")
}

public 
count(id)
{
    if(
zp_get_human_count() == && bHasJetPack[id])
    {
        
//ResetValues(id)
        //RemoveAllJetPack()
        
zp_colored_print(id"^x04[ZP]^x01 Jetpack has been removed as Last Human alive!")
    }
}


public 
OnClientDisconnect(id)
{
    
ResetValues(id)
}

public 
OnNewRound()
{
    for( new 
133i++ )
    {
        
ResetValues(i)
    }

    
RemoveAllJetPack()
    
CMaxFuel get_pcvar_float(CvarMaxFuel)
    
CRadius get_pcvar_float(CvarRadius)
    
CDamage get_pcvar_float(CvarDamage)
    
CSpeed get_pcvar_float(CvarSpeed)
    
CCooldown get_pcvar_float(CvarCooldown)
    
CRegen get_pcvar_float(CvarRegen)
    
CRocketSpeed get_pcvar_num(CvarRocketSpeed)
}

public 
OnRoundEnd()
{
    
RemoveAllJetPack()
}

public 
OnPlayerKilled(id)
{
    if(
bHasJetPack[id]) DropJetPack(id);

    
ResetValues(id)
}

public 
zp_user_infected_pre(id)
{
    if(
bHasJetPack[id]) DropJetPack(id);

    
ResetValues(id)
}

public 
zp_extra_item_selected(iditem)
{
    if(
item == ItemJetPack)
    {
        if(
bHasJetPack[id] || zp_get_user_survivor(id) || zp_get_user_sniper(id) || zp_get_user_last_human(id))
        {
            
//zp_colored_print(id, "^x04[ZP]^x01 You already have this item.")
            
return ZP_PLUGIN_HANDLED;
        }
        if (!
zp_has_round_started())
        {
            
zp_colored_print(id"^x04[ZP]^x01 Wait for the round to begin!")
            return 
ZP_PLUGIN_HANDLED
        
}

        
bHasJetPack[id] = true
        
//zp_colored_print(id, "^x04[ZP]^x01 You just bought a^x04 JetPack^x01, enjoy flying & killing zombies.")
        
engclient_cmd(id"weapon_knife")
    }

    return 
PLUGIN_CONTINUE;
}

public 
OnKnifeDeployPost(ent)
{
    if(
pev_valid(ent) == 2)
    {
        static 
idid get_pdata_cbase(ent414)
        if(
is_user_alive(id) && bHasJetPack[id]) ReplaceModel(id);
    }
}

public 
OnPlayerPreThink(id)
{
    if(
bHasJetPack[id])
    {
        static 
buttonflagFloat:ctimeweapon
        button 
pev(idpev_button)
        
flag pev(idpev_flags)
        
ctime get_gametime()
        
weapon get_user_weapon(id)

        if((
weapon == CSW_KNIFE) && (button IN_ATTACK2) && (fLastShoot[id] < ctime))
        {
            new 
ent engfunc(EngFunc_CreateNamedEntityiAllocInfoTarget)
            if(
ent)
            {
                
set_pev(entpev_classnameClassnameRocket)
                
engfunc(EngFunc_SetModelentModelRocket)
                static 
Float:vecSrc[3]
                
pev(idpev_originvecSrc)
                
vecSrc[2] += 16.0
                engfunc
(EngFunc_SetOriginentvecSrc)
                
set_pev(entpev_movetypeMOVETYPE_FLY)
                
set_pev(entpev_solidSOLID_BBOX)
                
set_pev(entpev_effectsEF_LIGHT)
                
engfunc(EngFunc_SetSizeentFloat:{0.00.00.0}, Float:{0.00.00.0})
                
set_pev(entpev_ownerid)
                static 
Float:vecVelocity[3]
                
velocity_by_aim(idCRocketSpeedvecVelocity)
                
set_pev(entpev_velocityvecVelocity)
                static 
Float:vecAngles[3]
                
engfunc(EngFunc_VecToAnglesvecVelocityvecAngles)
                
set_pev(entpev_anglesvecAngles)
                
set_pev(entPevEntTypeEntTypeRocket)

                
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
                
write_byte(TE_BEAMFOLLOW)
                
write_short(ent)
                
write_short(SprTrail)
                
write_byte(40)
                
write_byte(5)
                
write_byte(224)
                
write_byte(224)
                
write_byte(255)
                
write_byte(192)
                
message_end()

                
emit_sound(idCHAN_STATICSoundShootVOL_NORMATTN_NORM0PITCH_NORM)
                
emit_sound(entCHAN_WEAPONSoundTravelVOL_NORMATTN_NORM0PITCH_NORM)
                
fLastShoot[id] = ctime+CCooldown
            
}
            else
            {
                
fLastShoot[id] = ctime+1.5
            
}
        }

        if((
weapon == CSW_KNIFE) && (button IN_DUCK) && (button IN_JUMP) && !(flag FL_ONGROUND) && (fJetpackFuel[id] > 0.0))
        {
            if(
zp_get_user_last_human(id))
            {
                return;
            }
            static 
Float:vVelocity[3], Float:vAngles[3], Float:vForward[3]
            
pev(idpev_velocityvVelocity)
            
pev(idpev_anglesvAngles)
            
vAngles[2] = 0.0
            angle_vector
(vAnglesANGLEVECTOR_FORWARDvForward)
            
vAngles vForward
            vAngles
[0] *= CSpeed
            vAngles
[1] *= CSpeed
            vVelocity
[0] = vAngles[0]
            
vVelocity[1] = vAngles[1]
            if(
vVelocity[2] < 300.0vVelocity[2] += 35.0;
            
set_pev(idpev_velocityvVelocity)

            if(
fLastEffect[id] < ctime)
            {
                
#if defined DrawFlame
                
static Float:vOrigin[3]
                
pev(idpev_originvOrigin)
                
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYvOrigin0)
                
write_byte(TE_SPRITE)
                
engfunc(EngFunc_WriteCoordvOrigin[0])
                
engfunc(EngFunc_WriteCoordvOrigin[1])
                
engfunc(EngFunc_WriteCoordvOrigin[2])
                
write_short(SprFlame)
                
write_byte(8)
                
write_byte(128)
                
message_end()
                
#endif

                
if(fJetpackFuel[id] > 80.0emit_sound(idCHAN_STREAMSoundFlyVOL_NORMATTN_NORM0,  PITCH_NORM);
                else 
emit_sound(idCHAN_STREAMSoundBlowVOL_NORMATTN_NORM0PITCH_NORM);

                
fLastEffect[id] = ctime+0.2
            
}

            
fJetpackFuel[id] -= 1.0
        
}
        else if(!(
button IN_DUCK) && !(button IN_JUMP) && fJetpackFuel[id] < CMaxFuelfJetpackFuel[id] += CRegen;
        }
}

public 
OnTouch(entid)
{
    if(
pev_valid(ent))
    {
        if(
pev(entPevEntType) == EntTypeJetPack)
        {
            if(
IsPlayer(id) && is_user_alive(id) && !zp_get_user_zombie(id) && !bHasJetPack[id] && !zp_get_user_sniper(id) && !zp_get_user_survivor(id))
            {
                
engfunc(EngFunc_RemoveEntityent)
                
bHasJetPack[id] = true
                emit_sound
(idCHAN_STATICSoundPickupVOL_NORMATTN_NORM0PITCH_NORM)
                
engclient_cmd(id,"weapon_knife")
                
ReplaceModel(id)
            }
        }
        else if(
pev(entPevEntType) == EntTypeRocket)
        {
            static 
Float:fOrigin[3]
            
pev(entpev_originfOrigin)

            
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYfOrigin0)
            
write_byte(TE_EXPLOSION)
            
engfunc(EngFunc_WriteCoordfOrigin[0])
            
engfunc(EngFunc_WriteCoordfOrigin[1])
            
engfunc(EngFunc_WriteCoordfOrigin[2])
            
write_short(SprExp)
            
write_byte(40)
            
write_byte(30)
            
write_byte(10)
            
message_end()

            
#if defined DrawRing
            
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYfOrigin0)
            
write_byte(TE_BEAMCYLINDER)
            
engfunc(EngFunc_WriteCoordfOrigin[0])
            
engfunc(EngFunc_WriteCoordfOrigin[1])
            
engfunc(EngFunc_WriteCoordfOrigin[2])
            
engfunc(EngFunc_WriteCoordfOrigin[0])
            
engfunc(EngFunc_WriteCoordfOrigin[1])
            
engfunc(EngFunc_WriteCoordfOrigin[2]+555.0)
            
write_short(SprRing)
            
write_byte(0)
            
write_byte(1)
            
write_byte(6)
            
write_byte(8)
            
write_byte(10)
            
write_byte(224)
            
write_byte(224)
            
write_byte(255)
            
write_byte(192)
            
write_byte(5)
            
message_end()
            
#endif

            
static attackerattacker pev(entpev_owner)
            if(!
is_user_connected(attacker))
            {
                
engfunc(EngFunc_RemoveEntityent)
                return 
FMRES_IGNORED;
            }

            if(
pev_valid(id) && !is_user_connected(id))
            {
                static 
szClassname[32]
                
pev(idpev_classnameszClassname31)
                if(
equal(szClassname"func_breakable") && (pev(idpev_solid) != SOLID_NOT))
                {
                    
dllfunc(DLLFunc_Useident)
                }
            }

            static 
victimvictim = -1
            
while((victim engfunc(EngFunc_FindEntityInSpherevictimfOriginCRadius)) != 0)
            {
                if(
is_user_alive(victim) && zp_get_user_zombie(victim))
                {
                    static 
Float:originV[3], Float:distFloat:damage
                    pev
(victimpev_originoriginV)
                    
dist get_distance_f(fOriginoriginV)
                    
damage CDamage-(CDamage/CRadius)*dist
                    
if(damage 0.0)
                    {
                        
ExecuteHamB(Ham_TakeDamagevictimentattackerdamageDMG_BULLET)
                        
//client_print(attacker, print_chat, "[JpDebug] Rocket damage: %.1f", damage)
                    
}
                }
            }

            
engfunc(EngFunc_RemoveEntityent)
        }
    }

    return 
FMRES_IGNORED;
}

ReplaceModel(id)
{
set_pev(idpev_viewmodel2ModelVJetPack)
set_pev(idpev_weaponmodel2ModelPJetPack)
}

DropJetPack(id)
{
new 
Float:Aim[3],Float:origin[3]
velocity_by_aim(id64Aim)
pev(idpev_originorigin)
origin[0] += Aim[0]
origin[1] += Aim[1]
new 
ent engfunc(EngFunc_CreateNamedEntityiAllocInfoTarget)
if(!
pev_valid(ent)) return;

set_pev(entpev_classnameClassnameJetPack)
engfunc(EngFunc_SetModelentModelWJetPack)
engfunc(EngFunc_SetSizeentFloat:{-4.0,-4.0,-4.0}, Float:{4.0,4.0,4.0})
set_pev(entpev_solidSOLID_TRIGGER)
set_pev(entpev_movetypeMOVETYPE_TOSS)
engfunc(EngFunc_SetOriginentorigin)
set_pev(entPevEntTypeEntTypeJetPack)
}

RemoveAllJetPack()
{
new 
ent engfunc(EngFunc_FindEntityByString, -1"classname"ClassnameJetPack)
while(
ent 0)
{
engfunc(EngFunc_RemoveEntityent)
ent engfunc(EngFunc_FindEntityByString, -1"classname"ClassnameJetPack)
}
}

ResetValues(id)
{
bHasJetPack[id] = false
fJetpackFuel
[id] = get_pcvar_float(CvarMaxFuel)
}

zp_colored_print(target, const message[], any:...)
{
static 
buffer[512], iargscount
argscount 
numargs()

if (!
target)
{
static 
iPlayers[32], iNumjplayer
get_players
(iPlayersiNum"ch")
for (
0iNumj++)
{
player iPlayers[j]
static 
changed[5], changedcount
changedcount 
0

for (2argscounti++)
{
if (
getarg(i) == LANG_PLAYER)
{
setarg(i0player)
changed[changedcount] = i
changedcount
++
}
}

vformat(buffercharsmax(buffer), message3)
message_begin(MSG_ONE_UNRELIABLEMsgSayText_player)
write_byte(player)
write_string(buffer)
message_end()

for (
0changedcounti++) setarg(changed[i], 0LANG_PLAYER);
}
}
else
{
vformat(buffercharsmax(buffer), message3)
message_begin(MSG_ONEMsgSayText_target)
write_byte(target)
write_string(buffer)
message_end()
}

__________________
My Steam Profile

- Online Rarely -

Last edited by TribalBlood; 07-17-2022 at 08:52. Reason: Code update
TribalBlood is offline
stekiwnl
Junior Member
Join Date: May 2022
Old 07-17-2022 , 07:51   Re: Zombie Plague need help with jetpack
Reply With Quote #3

Quote:
Originally Posted by TribalBlood View Post
PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
native zp_get_user_zombie(id)
native zp_register_extra_item(const name[], costteams)
native zp_get_user_sniper(id)
native zp_get_user_survivor(id)
native zp_has_round_started()
native zp_get_human_count()
native zp_get_user_last_human(id)

new const 
ClassnameJetPack[] = "n4d_jetpack"
new const ClassnameRocket[] = "n4d_bazooka"
new const ModelVJetPack[] = "models/zp_apocalypse/v_thantos.mdl"
new const ModelPJetPack[] = "models/zp_apocalypse/p_thantos.mdl"
new const ModelWJetPack[] = "models/zp_apocalypse/w_thantos.mdl"
new const ModelRocket[] = "models/rpgrocket.mdl"
new const SoundPickup[] = "items/gunpickup2.wav"
new const SoundShoot[] = "zs/at4-1.wav"
new const SoundTravel[] = "zs/bfuu.wav"
new const SoundFly[] = "zs/fly.wav"
new const SoundBlow[] = "zs/blow.wav"

new bool:bHasJetPack[33]
new 
Float:fJetpackFuel[33]
new 
Float:fLastShoot[33]
new 
Float:fLastEffect[33]
new 
SprExpSprTrailItemJetPackiAllocInfoTargetiMaxClientsMsgSayText
new CvarMaxFuelCvarRadiusCvarDamageCvarSpeedCvarCooldownCvarRegenCvarRocketSpeed
new Float:CMaxFuelFloat:CRadiusFloat:CDamageFloat:CSpeedFloat:CCooldownFloat:CRegenCRocketSpeed
#define IsPlayer(%0) (1<=%0<=iMaxClients)
#define ZP_TEAM_HUMAN (1<<1)
#define ZP_PLUGIN_HANDLED 97
#define PevEntType pev_flSwimTime
#define EntTypeJetPack 3904
#define EntTypeRocket 9340

//Uncomment this to draw ring effect
//#define DrawRing

//Uncomment this to draw flame effect
#define DrawFlame

#if defined DrawRing
new SprRing
#endif

#if defined DrawFlame
new SprFlame
#endif

public plugin_precache()
{
    
precache_sound(SoundPickup)
    
precache_sound(SoundShoot)
    
precache_sound(SoundTravel)
    
precache_sound(SoundFly)
    
precache_sound(SoundBlow)

    
SprExp precache_model("sprites/zerogxplode.spr")
    
SprTrail precache_model("sprites/smoke.spr")

    
#if defined DrawFlame
    
SprFlame precache_model("sprites/xfireball3.spr")
    
#endif

    #if defined DrawRing
    
SprRing precache_model("sprites/shockwave.spr")
    
#endif

    
precache_model(ModelVJetPack)
    
precache_model(ModelPJetPack)
    
precache_model(ModelWJetPack)
    
precache_model(ModelRocket)
}

public 
plugin_init()
{
    
register_plugin("New Jetpack""0.0.1""Bad_Bud,wbyokomo")

    
register_event("HLTV""OnNewRound""a""1=0""2=0")
    
register_logevent("OnRoundEnd"2"1=Round_End")

    
RegisterHam(Ham_Killed"player""OnPlayerKilled")
    
RegisterHam(Ham_Item_Deploy"weapon_knife""OnKnifeDeployPost"1)

    
register_forward(FM_PlayerPreThink"OnPlayerPreThink")
    
register_forward(FM_ClientDisconnect"OnClientDisconnect")
    
register_forward(FM_Touch"OnTouch")

    
CvarMaxFuel register_cvar("jp_maxfuel""300.0")
    
CvarRadius register_cvar("jp_radius""500.0")
    
CvarDamage register_cvar("jp_damage""1000.0")
    
CvarSpeed register_cvar("jp_speed""300.0")
    
CvarCooldown register_cvar("jp_cooldown""10.0")
    
CvarRegen register_cvar("jp_regen""0.3")
    
CvarRocketSpeed register_cvar("jp_rocket_speed""1500")

    
iMaxClients get_maxplayers()
    
MsgSayText get_user_msgid("SayText")
    
ItemJetPack zp_register_extra_item("\r[Item] \wJetPack+Bazooka"90ZP_TEAM_HUMAN)
}

public 
plugin_cfg()
{
    
iAllocInfoTarget engfunc(EngFunc_AllocString"info_target")
}

public 
client_putinserver(id)
{
    
ResetValues(id)
    
set_task(1.0"count"id_,_"b")
}

public 
count(id)
{
    if(
zp_get_human_count() == && bHasJetPack[id])
    {
        
ResetValues(id)
        
RemoveAllJetPack()
        
zp_colored_print(id"^x04[ZP]^x01 Jetpack has been removed as Last Human alive!")
    }
}


public 
OnClientDisconnect(id)
{
    
ResetValues(id)
}

public 
OnNewRound()
{
    for( new 
133i++ )
    {
        
ResetValues(i)
    }

    
RemoveAllJetPack()
    
CMaxFuel get_pcvar_float(CvarMaxFuel)
    
CRadius get_pcvar_float(CvarRadius)
    
CDamage get_pcvar_float(CvarDamage)
    
CSpeed get_pcvar_float(CvarSpeed)
    
CCooldown get_pcvar_float(CvarCooldown)
    
CRegen get_pcvar_float(CvarRegen)
    
CRocketSpeed get_pcvar_num(CvarRocketSpeed)
}

public 
OnRoundEnd()
{
    
RemoveAllJetPack()
}

public 
OnPlayerKilled(id)
{
    if(
bHasJetPack[id]) DropJetPack(id);

    
ResetValues(id)
}

public 
zp_user_infected_pre(id)
{
    if(
bHasJetPack[id]) DropJetPack(id);

    
ResetValues(id)
}

public 
zp_extra_item_selected(iditem)
{
    if(
item == ItemJetPack)
    {
        if(
bHasJetPack[id] || zp_get_user_survivor(id) || zp_get_user_sniper(id) || zp_get_user_last_human(id))
        {
            
//zp_colored_print(id, "^x04[ZP]^x01 You already have this item.")
            
return ZP_PLUGIN_HANDLED;
        }
        if (!
zp_has_round_started())
        {
            
zp_colored_print(id"^x04[ZP]^x01 Wait for the round to begin!")
            return 
ZP_PLUGIN_HANDLED
        
}

        
bHasJetPack[id] = true
        
//zp_colored_print(id, "^x04[ZP]^x01 You just bought a^x04 JetPack^x01, enjoy flying & killing zombies.")
        
engclient_cmd(id"weapon_knife")
    }

    return 
PLUGIN_CONTINUE;
}

public 
OnKnifeDeployPost(ent)
{
    if(
pev_valid(ent) == 2)
    {
        static 
idid get_pdata_cbase(ent414)
        if(
is_user_alive(id) && bHasJetPack[id]) ReplaceModel(id);
    }
}

public 
OnPlayerPreThink(id)
{
    if(
bHasJetPack[id])
    {
        static 
buttonflagFloat:ctimeweapon
        button 
pev(idpev_button)
        
flag pev(idpev_flags)
        
ctime get_gametime()
        
weapon get_user_weapon(id)

        if((
weapon == CSW_KNIFE) && (button IN_ATTACK2) && (fLastShoot[id] < ctime))
        {
            new 
ent engfunc(EngFunc_CreateNamedEntityiAllocInfoTarget)
            if(
ent)
            {
                
set_pev(entpev_classnameClassnameRocket)
                
engfunc(EngFunc_SetModelentModelRocket)
                static 
Float:vecSrc[3]
                
pev(idpev_originvecSrc)
                
vecSrc[2] += 16.0
                engfunc
(EngFunc_SetOriginentvecSrc)
                
set_pev(entpev_movetypeMOVETYPE_FLY)
                
set_pev(entpev_solidSOLID_BBOX)
                
set_pev(entpev_effectsEF_LIGHT)
                
engfunc(EngFunc_SetSizeentFloat:{0.00.00.0}, Float:{0.00.00.0})
                
set_pev(entpev_ownerid)
                static 
Float:vecVelocity[3]
                
velocity_by_aim(idCRocketSpeedvecVelocity)
                
set_pev(entpev_velocityvecVelocity)
                static 
Float:vecAngles[3]
                
engfunc(EngFunc_VecToAnglesvecVelocityvecAngles)
                
set_pev(entpev_anglesvecAngles)
                
set_pev(entPevEntTypeEntTypeRocket)

                
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
                
write_byte(TE_BEAMFOLLOW)
                
write_short(ent)
                
write_short(SprTrail)
                
write_byte(40)
                
write_byte(5)
                
write_byte(224)
                
write_byte(224)
                
write_byte(255)
                
write_byte(192)
                
message_end()

                
emit_sound(idCHAN_STATICSoundShootVOL_NORMATTN_NORM0PITCH_NORM)
                
emit_sound(entCHAN_WEAPONSoundTravelVOL_NORMATTN_NORM0PITCH_NORM)
                
fLastShoot[id] = ctime+CCooldown
            
}
            else
            {
                
fLastShoot[id] = ctime+1.5
            
}
        }

        if((
weapon == CSW_KNIFE) && (button IN_DUCK) && (button IN_JUMP) && !(flag FL_ONGROUND) && (fJetpackFuel[id] > 0.0))
        {
            if(
zp_get_user_last_human(id))
            {
                return;
            }
            static 
Float:vVelocity[3], Float:vAngles[3], Float:vForward[3]
            
pev(idpev_velocityvVelocity)
            
pev(idpev_anglesvAngles)
            
vAngles[2] = 0.0
            angle_vector
(vAnglesANGLEVECTOR_FORWARDvForward)
            
vAngles vForward
            vAngles
[0] *= CSpeed
            vAngles
[1] *= CSpeed
            vVelocity
[0] = vAngles[0]
            
vVelocity[1] = vAngles[1]
            if(
vVelocity[2] < 300.0vVelocity[2] += 35.0;
            
set_pev(idpev_velocityvVelocity)

            if(
fLastEffect[id] < ctime)
            {
                
#if defined DrawFlame
                
static Float:vOrigin[3]
                
pev(idpev_originvOrigin)
                
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYvOrigin0)
                
write_byte(TE_SPRITE)
                
engfunc(EngFunc_WriteCoordvOrigin[0])
                
engfunc(EngFunc_WriteCoordvOrigin[1])
                
engfunc(EngFunc_WriteCoordvOrigin[2])
                
write_short(SprFlame)
                
write_byte(8)
                
write_byte(128)
                
message_end()
                
#endif

                
if(fJetpackFuel[id] > 80.0emit_sound(idCHAN_STREAMSoundFlyVOL_NORMATTN_NORM0,  PITCH_NORM);
                else 
emit_sound(idCHAN_STREAMSoundBlowVOL_NORMATTN_NORM0PITCH_NORM);

                
fLastEffect[id] = ctime+0.2
            
}

            
fJetpackFuel[id] -= 1.0
        
}
        else if(!(
button IN_DUCK) && !(button IN_JUMP) && fJetpackFuel[id] < CMaxFuelfJetpackFuel[id] += CRegen;
        }
}

public 
OnTouch(entid)
{
    if(
pev_valid(ent))
    {
        if(
pev(entPevEntType) == EntTypeJetPack)
        {
            if(
IsPlayer(id) && is_user_alive(id) && !zp_get_user_zombie(id) && !bHasJetPack[id] && !zp_get_user_sniper(id) && !zp_get_user_survivor(id))
            {
                
engfunc(EngFunc_RemoveEntityent)
                
bHasJetPack[id] = true
                emit_sound
(idCHAN_STATICSoundPickupVOL_NORMATTN_NORM0PITCH_NORM)
                
engclient_cmd(id,"weapon_knife")
                
ReplaceModel(id)
            }
        }
        else if(
pev(entPevEntType) == EntTypeRocket)
        {
            static 
Float:fOrigin[3]
            
pev(entpev_originfOrigin)

            
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYfOrigin0)
            
write_byte(TE_EXPLOSION)
            
engfunc(EngFunc_WriteCoordfOrigin[0])
            
engfunc(EngFunc_WriteCoordfOrigin[1])
            
engfunc(EngFunc_WriteCoordfOrigin[2])
            
write_short(SprExp)
            
write_byte(40)
            
write_byte(30)
            
write_byte(10)
            
message_end()

            
#if defined DrawRing
            
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYfOrigin0)
            
write_byte(TE_BEAMCYLINDER)
            
engfunc(EngFunc_WriteCoordfOrigin[0])
            
engfunc(EngFunc_WriteCoordfOrigin[1])
            
engfunc(EngFunc_WriteCoordfOrigin[2])
            
engfunc(EngFunc_WriteCoordfOrigin[0])
            
engfunc(EngFunc_WriteCoordfOrigin[1])
            
engfunc(EngFunc_WriteCoordfOrigin[2]+555.0)
            
write_short(SprRing)
            
write_byte(0)
            
write_byte(1)
            
write_byte(6)
            
write_byte(8)
            
write_byte(10)
            
write_byte(224)
            
write_byte(224)
            
write_byte(255)
            
write_byte(192)
            
write_byte(5)
            
message_end()
            
#endif

            
static attackerattacker pev(entpev_owner)
            if(!
is_user_connected(attacker))
            {
                
engfunc(EngFunc_RemoveEntityent)
                return 
FMRES_IGNORED;
            }

            if(
pev_valid(id) && !is_user_connected(id))
            {
                static 
szClassname[32]
                
pev(idpev_classnameszClassname31)
                if(
equal(szClassname"func_breakable") && (pev(idpev_solid) != SOLID_NOT))
                {
                    
dllfunc(DLLFunc_Useident)
                }
            }

            static 
victimvictim = -1
            
while((victim engfunc(EngFunc_FindEntityInSpherevictimfOriginCRadius)) != 0)
            {
                if(
is_user_alive(victim) && zp_get_user_zombie(victim))
                {
                    static 
Float:originV[3], Float:distFloat:damage
                    pev
(victimpev_originoriginV)
                    
dist get_distance_f(fOriginoriginV)
                    
damage CDamage-(CDamage/CRadius)*dist
                    
if(damage 0.0)
                    {
                        
ExecuteHamB(Ham_TakeDamagevictimentattackerdamageDMG_BULLET)
                        
//client_print(attacker, print_chat, "[JpDebug] Rocket damage: %.1f", damage)
                    
}
                }
            }

            
engfunc(EngFunc_RemoveEntityent)
        }
    }

    return 
FMRES_IGNORED;
}

ReplaceModel(id)
{
set_pev(idpev_viewmodel2ModelVJetPack)
set_pev(idpev_weaponmodel2ModelPJetPack)
}

DropJetPack(id)
{
new 
Float:Aim[3],Float:origin[3]
velocity_by_aim(id64Aim)
pev(idpev_originorigin)
origin[0] += Aim[0]
origin[1] += Aim[1]
new 
ent engfunc(EngFunc_CreateNamedEntityiAllocInfoTarget)
if(!
pev_valid(ent)) return;

set_pev(entpev_classnameClassnameJetPack)
engfunc(EngFunc_SetModelentModelWJetPack)
engfunc(EngFunc_SetSizeentFloat:{-4.0,-4.0,-4.0}, Float:{4.0,4.0,4.0})
set_pev(entpev_solidSOLID_TRIGGER)
set_pev(entpev_movetypeMOVETYPE_TOSS)
engfunc(EngFunc_SetOriginentorigin)
set_pev(entPevEntTypeEntTypeJetPack)
}

RemoveAllJetPack()
{
new 
ent engfunc(EngFunc_FindEntityByString, -1"classname"ClassnameJetPack)
while(
ent 0)
{
engfunc(EngFunc_RemoveEntityent)
ent engfunc(EngFunc_FindEntityByString, -1"classname"ClassnameJetPack)
}
}

ResetValues(id)
{
bHasJetPack[id] = false
fJetpackFuel
[id] = get_pcvar_float(CvarMaxFuel)
}

zp_colored_print(target, const message[], any:...)
{
static 
buffer[512], iargscount
argscount 
numargs()

if (!
target)
{
static 
iPlayers[32], iNumjplayer
get_players
(iPlayersiNum"ch")
for (
0iNumj++)
{
player iPlayers[j]
static 
changed[5], changedcount
changedcount 
0

for (2argscounti++)
{
if (
getarg(i) == LANG_PLAYER)
{
setarg(i0player)
changed[changedcount] = i
changedcount
++
}
}

vformat(buffercharsmax(buffer), message3)
message_begin(MSG_ONE_UNRELIABLEMsgSayText_player)
write_byte(player)
write_string(buffer)
message_end()

for (
0changedcounti++) setarg(changed[i], 0LANG_PLAYER);
}
}
else
{
vformat(buffercharsmax(buffer), message3)
message_begin(MSG_ONEMsgSayText_target)
write_byte(target)
write_string(buffer)
message_end()
}

Jetpack still gets removed completely for last human, still cannot shoot bazooka rocket
stekiwnl 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 00:31.


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