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

Survivor Extra Item


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
XeOn Cp
Senior Member
Join Date: Jan 2014
Old 03-15-2015 , 14:20   Survivor Extra Item
Reply With Quote #1

Can anyone change this extra item ? i want to Survivors can use it too. humans and survivors( if possible Sniper class too)


https://forums.alliedmods.net/showthread.php?t=245378


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

new const 
ClassnameJetPack[] = "n4d_jetpack"
new const ClassnameRocket[] = "n4d_bazooka"
new const ModelVJetPack[] = "models/v_jetpack.mdl"
new const ModelPJetPack[] = "models/p_jetpack.mdl"
new const ModelWJetPack[] = "models/w_jetpack.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 
SprExpSprTrailItemJetPackiAllocInfoTargetiMaxClientsMsgSayText
new CvarMaxFuelCvarRadiusCvarDamageCvarSpeedCvarCooldownCvarRegenCvarRocketSpeed
new Float:CMaxFuelFloat:CRadiusFloat:CDamageCSpeedFloat: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.2""Bad_Bud,ZmOutStanding,Connor,wbyokomo")

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

RegisterHam(Ham_Killed"player""OnPlayerKilled")
RegisterHam(Ham_Player_Jump"player""OnPlayerJump")
RegisterHam(Ham_Weapon_SecondaryAttack"weapon_knife""OnKnifeSecAtkPost"1)
RegisterHam(Ham_Item_Deploy"weapon_knife""OnKnifeDeployPost"1)

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

CvarMaxFuel register_cvar("jp_maxfuel""450.0")
CvarRadius register_cvar("jp_radius""350.0")
CvarDamage register_cvar("jp_damage""850.0")
CvarSpeed register_cvar("jp_speed""450")
CvarCooldown register_cvar("jp_cooldown""6.0")
CvarRegen register_cvar("jp_regen""0.5")
CvarRocketSpeed register_cvar("jp_rocket_speed""1600")

iMaxClients get_maxplayers()
MsgSayText get_user_msgid("SayText")
ItemJetPack zp_register_extra_item("Jetpack"35ZP_TEAM_HUMAN)

register_clcmd("drop""CmdDropJP")
}

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

public 
client_putinserver(id)
{
ResetValues(id)
}

public 
client_disconnect(id)
{
ResetValues(id)
}

public 
OnNewRound()
{
RemoveAllJetPack()
CMaxFuel get_pcvar_float(CvarMaxFuel)
CRadius get_pcvar_float(CvarRadius)
CDamage get_pcvar_float(CvarDamage)
CSpeed get_pcvar_num(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 
OnPlayerJump(id)
{
if(
bHasJetPack[id] && fJetpackFuel[id] > 0.0 && get_user_weapon(id) && pev(idpev_button) & IN_DUCK && ~pev(idpev_flags) & FL_ONGROUND)  
{
static 
Float:vVelocity[3], Float:upSpeed
pev
(idpev_velocityvVelocity)
upSpeed vVelocity[2] + 35.0
velocity_by_aim
(idCSpeedvVelocity)
vVelocity[2] = upSpeed 300.0 300.0 upSpeed
set_pev
(idpev_velocityvVelocity)

#if defined DrawFlame
pev(idpev_originvVelocity)
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYvVelocity0)
write_byte(TE_SPRITE)
engfunc(EngFunc_WriteCoordvVelocity[0])
engfunc(EngFunc_WriteCoordvVelocity[1])
engfunc(EngFunc_WriteCoordvVelocity[2])
write_short(SprFlame)
write_byte(
write_byte(12
message_end
()
#endif

fJetpackFuel[id] > 80.0 emit_sound(idCHAN_STREAMSoundFlyVOL_NORMATTN_NORM0PITCH_NORM) : emit_sound(idCHAN_STREAMSoundBlowVOL_NORMATTN_NORM0PITCH_NORM);
fJetpackFuel[id] -= 1.0
}
}

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_colored_print(id"^x04[ZP]^x01 You already have this item!")
return 
ZP_PLUGIN_HANDLED;
}

bHasJetPack[id] = true
zp_colored_print
(id"^x04[ZP]^x01 JetPack usage:^x04 JUMP+DUCK^x01 -- fly |^x04 SECATTACK^x01 -- shoot rocket.")
engclient_cmd(id"weapon_knife")
ReplaceModel(id)
}

return 
PLUGIN_CONTINUE;
}

public 
OnKnifeSecAtkPost(ent2)
{
if(
pev_valid(ent2) == 2)
{
static 
idFloat:ctime
id 
get_pdata_cbase(ent2414)
ctime get_gametime()
if(
is_user_alive(id) && bHasJetPack[id] && fLastShoot[id] < ctime)
{
new 
ent engfunc(EngFunc_CreateNamedEntityiAllocInfoTarget)
if(
ent)
{
engfunc(EngFunc_SetModelentModelRocket)
engfunc(EngFunc_SetSizeentFloat:{0.00.00.0}, Float:{0.00.00.0})
new 
Float:fOrigin[3]
pev(idpev_originfOrigin)
fOrigin[2] += 16.0
engfunc
(EngFunc_SetOriginentfOrigin)
set_pev(entpev_classnameClassnameRocket)
set_pev(entpev_dmg100.0)
set_pev(entpev_ownerid)
velocity_by_aim(idCRocketSpeedfOrigin)
set_pev(entpev_velocityfOrigin)
new 
Float:vecAngles[3]
engfunc(EngFunc_VecToAnglesfOriginvecAngles)
set_pev(entpev_anglesvecAngles)
set_pev(entPevEntTypeEntTypeRocket)    
set_pev(entpev_movetypeMOVETYPE_FLY)
set_pev(entpev_effectsEF_LIGHT)
set_pev(entpev_solidSOLID_BBOX)

emit_sound(idCHAN_STATICSoundShootVOL_NORMATTN_NORM0PITCH_NORM)
emit_sound(entCHAN_WEAPONSoundTravelVOL_NORMATTN_NORM0PITCH_NORM)

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

fLastShoot[id] = ctime+CCooldown
}
else
{
client_print(idprint_chat"[JpDebug] Failed to create rocket!")
fLastShoot[id] = ctime+1.5
}
}
}
}

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] && fJetpackFuel[id] < CMaxFuel)
{
static 
buttonbutton pev(idpev_button)
if(!(
button IN_DUCK) && !(button IN_JUMP)) fJetpackFuel[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])
{
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(
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 
FloatriginV[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;
}

public 
CmdDropJP(id)
{
if(
is_user_alive(id) && bHasJetPack[id] && get_user_weapon(id) == CSW_KNIFE)
{
DropJetPack(id)
ResetValues(id)
set_pev(idpev_viewmodel2"models/v_knife.mdl")
set_pev(idpev_weaponmodel2"models/p_knife.mdl")
return 
PLUGIN_HANDLED;
}

return 
PLUGIN_CONTINUE;
}

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

DropJetPack(id)
{
new 
Float:fAim[3], Float:fOrigin[3]
velocity_by_aim(id64fAim)
pev(idpev_originfOrigin)
fOrigin[0] += fAim[0]
fOrigin[1] += fAim[1]

new 
ent engfunc(EngFunc_CreateNamedEntityiAllocInfoTarget)
if(
ent)
{
engfunc(EngFunc_SetModelentModelWJetPack)
engfunc(EngFunc_SetSizeentFloat:{-4.0,-4.0,-4.0}, Float:{4.0,4.0,4.0})
engfunc(EngFunc_SetOriginentfOrigin)
set_pev(entpev_classnameClassnameJetPack)
set_pev(entpev_dmg100.0)
set_pev(entPevEntTypeEntTypeJetPack)
set_pev(entpev_movetypeMOVETYPE_TOSS)
set_pev(entpev_solidSOLID_TRIGGER)
}
}

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

XeOn Cp is offline
Depresie
Veteran Member
Join Date: Nov 2013
Old 03-15-2015 , 21:41   Re: Survivor Extra Item
Reply With Quote #2

Quote:
ItemJetPack = zp_register_extra_item("Jetpack", 35, ZP_TEAM_HUMAN)
--------------->
Quote:
ItemJetPack = zp_register_extra_item("Jetpack", 35, ZP_TEAM_HUMAN | ZP_TEAM_SURVIVOR | ZP_TEAM_SNIPER)
Quote:
#include <zombie_plague_advance>

Last edited by Depresie; 03-15-2015 at 21:42.
Depresie is offline
XeOn Cp
Senior Member
Join Date: Jan 2014
Old 03-16-2015 , 16:03   Re: Survivor Extra Item
Reply With Quote #3

NewJetPack.sma(5) : error 021: symbol already defined: "zp_get_user_zombie"
NewJetPack.sma(6) : error 021: symbol already defined: "zp_register_extra_item"
XeOn Cp is offline
Depresie
Veteran Member
Join Date: Nov 2013
Old 03-20-2015 , 08:17   Re: Survivor Extra Item
Reply With Quote #4

put #include <zombieplague> for zp 4.3 or #include <zombie_plague_advance> for zpa

and delete
Quote:
native zp_get_user_zombie(id)
native zp_register_extra_item(const name[], cost, teams)

Last edited by Depresie; 03-20-2015 at 08:18.
Depresie is offline
XeOn Cp
Senior Member
Join Date: Jan 2014
Old 03-20-2015 , 08:35   Re: Survivor Extra Item
Reply With Quote #5

i did, but again , when survivor or sniper is player, and click " buy extra items " in ZP menu, then server writing " Extra Items are disabled"
for survivor and for sniper, can we edit this?
XeOn Cp is offline
zmd94
Veteran Member
Join Date: Nov 2013
Location: Malaysia (9w2zow).
Old 03-22-2015 , 10:40   Re: Survivor Extra Item
Reply With Quote #6

Just add this code:
Code:
public zp_user_humanized_post(id)
{
    if(zp_get_user_survivor(id))
    {
        if(bHasJetPack[id])
        {
            zp_colored_print(id, "^x04[ZP]^x01 You already have this item!")
            return ZP_PLUGIN_HANDLED;
        }

        bHasJetPack[id] = true
        zp_colored_print(id, "^x04[ZP]^x01 JetPack usage:^x04 JUMP+DUCK^x01 -- fly |^x04 SECATTACK^x01 -- shoot rocket.")
        engclient_cmd(id, "weapon_knife")
        ReplaceModel(id))
    }
}
zmd94 is offline
XeOn Cp
Senior Member
Join Date: Jan 2014
Old 03-22-2015 , 11:16   Re: Survivor Extra Item
Reply With Quote #7

PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <zombie_plague_advance>

new const ClassnameJetPack[] = "n4d_jetpack"
new const ClassnameRocket[] = "n4d_bazooka"
new const ModelVJetPack[] = "models/v_jetpack.mdl"
new const ModelPJetPack[] = "models/p_jetpack1.mdl"
new const ModelWJetPack[] = "models/w_jetpack.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 
SprExpSprTrailItemJetPackiAllocInfoTargetiMaxClientsMsgSayText
new CvarMaxFuelCvarRadiusCvarDamageCvarSpeedCvarCooldownCvarRegenCvarRocketSpeed
new Float:CMaxFuelFloat:CRadiusFloat:CDamageCSpeedFloat: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/fire_explode.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.2""Bad_Bud,ZmOutStanding,Connor,wbyokomo")

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

    
RegisterHam(Ham_Killed"player""OnPlayerKilled")
    
RegisterHam(Ham_Player_Jump"player""OnPlayerJump")
    
RegisterHam(Ham_Weapon_SecondaryAttack"weapon_knife""OnKnifeSecAtkPost"1)
    
RegisterHam(Ham_Item_Deploy"weapon_knife""OnKnifeDeployPost"1)

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

    
CvarMaxFuel register_cvar("jp_maxfuel""460.0")
    
CvarRadius register_cvar("jp_radius""250.0")
    
CvarDamage register_cvar("jp_damage""600.0")
    
CvarSpeed register_cvar("jp_speed""350")
    
CvarCooldown register_cvar("jp_cooldown""10.0")
    
CvarRegen register_cvar("jp_regen""0.5")
    
CvarRocketSpeed register_cvar("jp_rocket_speed""1500")

    
iMaxClients get_maxplayers()
    
MsgSayText get_user_msgid("SayText")
    
ItemJetPack zp_register_extra_item("Jetpack"35ZP_TEAM_HUMAN ZP_TEAM_SURVIVOR ZP_TEAM_SNIPER)

    
register_clcmd("drop""CmdDropJP")
}

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

public 
client_putinserver(id)
{
    
ResetValues(id)
}

public 
client_disconnect(id)
{
    
ResetValues(id)
}

public 
OnNewRound()
{
    
RemoveAllJetPack()
    
CMaxFuel get_pcvar_float(CvarMaxFuel)
    
CRadius get_pcvar_float(CvarRadius)
    
CDamage get_pcvar_float(CvarDamage)
    
CSpeed get_pcvar_num(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 
OnPlayerJump(id)
{
    if(
bHasJetPack[id] && fJetpackFuel[id] > 0.0 && get_user_weapon(id) && pev(idpev_button) & IN_DUCK && ~pev(idpev_flags) & FL_ONGROUND)  
    {
        static 
Float:vVelocity[3], Float:upSpeed
        pev
(idpev_velocityvVelocity)
        
upSpeed vVelocity[2] + 35.0
        velocity_by_aim
(idCSpeedvVelocity)
        
vVelocity[2] = upSpeed 300.0 300.0 upSpeed
        set_pev
(idpev_velocityvVelocity)

        
#if defined DrawFlame
        
pev(idpev_originvVelocity)
        
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYvVelocity0)
        
write_byte(TE_SPRITE)
        
engfunc(EngFunc_WriteCoordvVelocity[0])
        
engfunc(EngFunc_WriteCoordvVelocity[1])
        
engfunc(EngFunc_WriteCoordvVelocity[2])
        
write_short(SprFlame)
        
write_byte(8)
        
write_byte(128)
        
message_end()
        
#endif

        
fJetpackFuel[id] > 80.0 emit_sound(idCHAN_STREAMSoundFlyVOL_NORMATTN_NORM0,  PITCH_NORM) : emit_sound(idCHAN_STREAMSoundBlowVOL_NORMATTN_NORM0PITCH_NORM);
        
fJetpackFuel[id] -= 1.0
    
}
}

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_colored_print(id"^x04[ZP]^x01 You already have this item!")
            return 
ZP_PLUGIN_HANDLED;
        }

        
bHasJetPack[id] = true
        zp_colored_print
(id"^x04[ZP]^x01 JetPack usage:^x04 JUMP+DUCK^x01 -- fly |^x04 SECATTACK^x01 -- shoot rocket.")
        
engclient_cmd(id"weapon_knife")
        
ReplaceModel(id)
    }

    return 
PLUGIN_CONTINUE;
}

public 
zp_user_humanized_post(id)
{
    if(
zp_get_user_survivor(id))
    {
        if(
bHasJetPack[id])
        {
            
zp_colored_print(id"^x04[ZP]^x01 You already have this item!")
            return 
ZP_PLUGIN_HANDLED;
        }

        
bHasJetPack[id] = true
        zp_colored_print
(id"^x04[ZP]^x01 JetPack usage:^x04 JUMP+DUCK^x01 -- fly |^x04 SECATTACK^x01 -- shoot rocket.")
        
engclient_cmd(id"weapon_knife")
        
ReplaceModel(id))
    }
}

public 
OnKnifeSecAtkPost(ent2)
{
    if(
pev_valid(ent2) == 2)
    {
        static 
idFloat:ctime
        id 
get_pdata_cbase(ent2414)
        
ctime get_gametime()
        if(
is_user_alive(id) && bHasJetPack[id] && fLastShoot[id] < ctime)
        {
            new 
ent engfunc(EngFunc_CreateNamedEntityiAllocInfoTarget)
            if(
ent)
            {
                
engfunc(EngFunc_SetModelentModelRocket)
                
engfunc(EngFunc_SetSizeentFloat:{0.00.00.0}, Float:{0.00.00.0})
                new 
Float:fOrigin[3]
                
pev(idpev_originfOrigin)
                
fOrigin[2] += 16.0
                engfunc
(EngFunc_SetOriginentfOrigin)
                
set_pev(entpev_classnameClassnameRocket)
                
set_pev(entpev_dmg100.0)
                
set_pev(entpev_ownerid)
                
velocity_by_aim(idCRocketSpeedfOrigin)
                
set_pev(entpev_velocityfOrigin)
                new 
Float:vecAngles[3]
                
engfunc(EngFunc_VecToAnglesfOriginvecAngles)
                
set_pev(entpev_anglesvecAngles)
                
set_pev(entPevEntTypeEntTypeRocket)    
                
set_pev(entpev_movetypeMOVETYPE_FLY)
                
set_pev(entpev_effectsEF_LIGHT)
                
set_pev(entpev_solidSOLID_BBOX)

                
emit_sound(idCHAN_STATICSoundShootVOL_NORMATTN_NORM0PITCH_NORM)
                
emit_sound(entCHAN_WEAPONSoundTravelVOL_NORMATTN_NORM0PITCH_NORM)

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

                
fLastShoot[id] = ctime+CCooldown
            
}
            else
            {
                
client_print(idprint_chat"[JpDebug] Failed to create rocket!")
                
fLastShoot[id] = ctime+1.5
            
}
        }
    }
}

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] && fJetpackFuel[id] < CMaxFuel)
    {
        static 
buttonbutton pev(idpev_button)
        if(!(
button IN_DUCK) && !(button IN_JUMP)) fJetpackFuel[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])
            {
                
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;
}

public 
CmdDropJP(id)
{
    if(
is_user_alive(id) && bHasJetPack[id] && get_user_weapon(id) == CSW_KNIFE)
    {
        
DropJetPack(id)
        
ResetValues(id)
        
set_pev(idpev_viewmodel2"models/v_knife.mdl")
        
set_pev(idpev_weaponmodel2"models/p_knife.mdl")
        return 
PLUGIN_HANDLED;
    }

    return 
PLUGIN_CONTINUE;
}

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

DropJetPack(id)
{
    new 
Float:fAim[3], Float:fOrigin[3]
    
velocity_by_aim(id64fAim)
    
pev(idpev_originfOrigin)
    
fOrigin[0] += fAim[0]
    
fOrigin[1] += fAim[1]

    new 
ent engfunc(EngFunc_CreateNamedEntityiAllocInfoTarget)
    if(
ent)
    {
        
engfunc(EngFunc_SetModelentModelWJetPack)
        
engfunc(EngFunc_SetSizeentFloat:{-4.0,-4.0,-4.0}, Float:{4.0,4.0,4.0})
        
engfunc(EngFunc_SetOriginentfOrigin)
        
set_pev(entpev_classnameClassnameJetPack)
        
set_pev(entpev_dmg100.0)
        
set_pev(entPevEntTypeEntTypeJetPack)
        
set_pev(entpev_movetypeMOVETYPE_TOSS)
        
set_pev(entpev_solidSOLID_TRIGGER)
    }
}

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

this?

zp_jetpack_axali.sma(207) : error 001: expected token: ";", but found ")"
zp_jetpack_axali.sma(207) : error 029: invalid expression, assumed zero
XeOn Cp is offline
zmd94
Veteran Member
Join Date: Nov 2013
Location: Malaysia (9w2zow).
Old 03-22-2015 , 11:29   Re: Survivor Extra Item
Reply With Quote #8

This is the fixed version:
Code:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <zombie_plague_advance>

new const ClassnameJetPack[] = "n4d_jetpack"
new const ClassnameRocket[] = "n4d_bazooka"
new const ModelVJetPack[] = "models/v_jetpack.mdl"
new const ModelPJetPack[] = "models/p_jetpack1.mdl"
new const ModelWJetPack[] = "models/w_jetpack.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 SprExp, SprTrail, ItemJetPack, iAllocInfoTarget, iMaxClients, MsgSayText
new CvarMaxFuel, CvarRadius, CvarDamage, CvarSpeed, CvarCooldown, CvarRegen, CvarRocketSpeed
new Float:CMaxFuel, Float:CRadius, Float:CDamage, 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/fire_explode.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.2", "Bad_Bud,ZmOutStanding,Connor,wbyokomo")

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

    RegisterHam(Ham_Killed, "player", "OnPlayerKilled")
    RegisterHam(Ham_Player_Jump, "player", "OnPlayerJump")
    RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_knife", "OnKnifeSecAtkPost", 1)
    RegisterHam(Ham_Item_Deploy, "weapon_knife", "OnKnifeDeployPost", 1)

    register_forward(FM_PlayerPreThink, "OnPlayerPreThink")
    register_forward(FM_Touch, "OnTouch")

    CvarMaxFuel = register_cvar("jp_maxfuel", "460.0")
    CvarRadius = register_cvar("jp_radius", "250.0")
    CvarDamage = register_cvar("jp_damage", "600.0")
    CvarSpeed = register_cvar("jp_speed", "350")
    CvarCooldown = register_cvar("jp_cooldown", "10.0")
    CvarRegen = register_cvar("jp_regen", "0.5")
    CvarRocketSpeed = register_cvar("jp_rocket_speed", "1500")

    iMaxClients = get_maxplayers()
    MsgSayText = get_user_msgid("SayText")
    ItemJetPack = zp_register_extra_item("Jetpack", 35, ZP_TEAM_HUMAN | ZP_TEAM_SURVIVOR | ZP_TEAM_SNIPER)

    register_clcmd("drop", "CmdDropJP")
}

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

public client_putinserver(id)
{
    ResetValues(id)
}

public client_disconnect(id)
{
    ResetValues(id)
}

public OnNewRound()
{
    RemoveAllJetPack()
    CMaxFuel = get_pcvar_float(CvarMaxFuel)
    CRadius = get_pcvar_float(CvarRadius)
    CDamage = get_pcvar_float(CvarDamage)
    CSpeed = get_pcvar_num(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 OnPlayerJump(id)
{
    if(bHasJetPack[id] && fJetpackFuel[id] > 0.0 && get_user_weapon(id) && pev(id, pev_button) & IN_DUCK && ~pev(id, pev_flags) & FL_ONGROUND)  
    {
        static Float:vVelocity[3], Float:upSpeed
        pev(id, pev_velocity, vVelocity)
        upSpeed = vVelocity[2] + 35.0
        velocity_by_aim(id, CSpeed, vVelocity)
        vVelocity[2] = upSpeed > 300.0 ? 300.0 : upSpeed
        set_pev(id, pev_velocity, vVelocity)

        #if defined DrawFlame
        pev(id, pev_origin, vVelocity)
        engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vVelocity, 0)
        write_byte(TE_SPRITE)
        engfunc(EngFunc_WriteCoord, vVelocity[0])
        engfunc(EngFunc_WriteCoord, vVelocity[1])
        engfunc(EngFunc_WriteCoord, vVelocity[2])
        write_short(SprFlame)
        write_byte(8)
        write_byte(128)
        message_end()
        #endif

        fJetpackFuel[id] > 80.0 ? emit_sound(id, CHAN_STREAM, SoundFly, VOL_NORM, ATTN_NORM, 0,  PITCH_NORM) : emit_sound(id, CHAN_STREAM, SoundBlow, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
        fJetpackFuel[id] -= 1.0
    }
}

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_colored_print(id, "^x04[ZP]^x01 You already have this item!")
            return ZP_PLUGIN_HANDLED;
        }

        bHasJetPack[id] = true
        zp_colored_print(id, "^x04[ZP]^x01 JetPack usage:^x04 JUMP+DUCK^x01 -- fly |^x04 SECATTACK^x01 -- shoot rocket.")
        engclient_cmd(id, "weapon_knife")
        ReplaceModel(id)
    }

    return PLUGIN_CONTINUE;
}

public zp_user_humanized_post(id)
{
    if(zp_get_user_survivor(id) || zp_get_user_sniper(id))
    {
        if(bHasJetPack[id])
        {
            zp_colored_print(id, "^x04[ZP]^x01 You already have this item!")
            return ZP_PLUGIN_HANDLED;
        }

        bHasJetPack[id] = true
        zp_colored_print(id, "^x04[ZP]^x01 JetPack usage:^x04 JUMP+DUCK^x01 -- fly |^x04 SECATTACK^x01 -- shoot rocket.")
        engclient_cmd(id, "weapon_knife")
        ReplaceModel(id)
    }
    
    return PLUGIN_CONTINUE;
}

public OnKnifeSecAtkPost(ent2)
{
    if(pev_valid(ent2) == 2)
    {
        static id, Float:ctime
        id = get_pdata_cbase(ent2, 41, 4)
        ctime = get_gametime()
        if(is_user_alive(id) && bHasJetPack[id] && fLastShoot[id] < ctime)
        {
            new ent = engfunc(EngFunc_CreateNamedEntity, iAllocInfoTarget)
            if(ent)
            {
                engfunc(EngFunc_SetModel, ent, ModelRocket)
                engfunc(EngFunc_SetSize, ent, Float:{0.0, 0.0, 0.0}, Float:{0.0, 0.0, 0.0})
                new Float:fOrigin[3]
                pev(id, pev_origin, fOrigin)
                fOrigin[2] += 16.0
                engfunc(EngFunc_SetOrigin, ent, fOrigin)
                set_pev(ent, pev_classname, ClassnameRocket)
                set_pev(ent, pev_dmg, 100.0)
                set_pev(ent, pev_owner, id)
                velocity_by_aim(id, CRocketSpeed, fOrigin)
                set_pev(ent, pev_velocity, fOrigin)
                new Float:vecAngles[3]
                engfunc(EngFunc_VecToAngles, fOrigin, vecAngles)
                set_pev(ent, pev_angles, vecAngles)
                set_pev(ent, PevEntType, EntTypeRocket)    
                set_pev(ent, pev_movetype, MOVETYPE_FLY)
                set_pev(ent, pev_effects, EF_LIGHT)
                set_pev(ent, pev_solid, SOLID_BBOX)

                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)

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

                fLastShoot[id] = ctime+CCooldown
            }
            else
            {
                client_print(id, print_chat, "[JpDebug] Failed to create rocket!")
                fLastShoot[id] = ctime+1.5
            }
        }
    }
}

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] && fJetpackFuel[id] < CMaxFuel)
    {
        static button; button = pev(id, pev_button)
        if(!(button & IN_DUCK) && !(button & IN_JUMP)) 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])
            {
                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;
}

public CmdDropJP(id)
{
    if(is_user_alive(id) && bHasJetPack[id] && get_user_weapon(id) == CSW_KNIFE)
    {
        DropJetPack(id)
        ResetValues(id)
        set_pev(id, pev_viewmodel2, "models/v_knife.mdl")
        set_pev(id, pev_weaponmodel2, "models/p_knife.mdl")
        return PLUGIN_HANDLED;
    }

    return PLUGIN_CONTINUE;
}

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

DropJetPack(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 ent = engfunc(EngFunc_CreateNamedEntity, iAllocInfoTarget)
    if(ent)
    {
        engfunc(EngFunc_SetModel, ent, ModelWJetPack)
        engfunc(EngFunc_SetSize, ent, Float:{-4.0,-4.0,-4.0}, Float:{4.0,4.0,4.0})
        engfunc(EngFunc_SetOrigin, ent, fOrigin)
        set_pev(ent, pev_classname, ClassnameJetPack)
        set_pev(ent, pev_dmg, 100.0)
        set_pev(ent, PevEntType, EntTypeJetPack)
        set_pev(ent, pev_movetype, MOVETYPE_TOSS)
        set_pev(ent, pev_solid, SOLID_TRIGGER)
    }
}

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()
    }
}
zmd94 is offline
XeOn Cp
Senior Member
Join Date: Jan 2014
Old 03-23-2015 , 07:20   Re: Survivor Extra Item
Reply With Quote #9

thanks everything works fine, survivor has automatically jetpack

Last edited by XeOn Cp; 03-23-2015 at 08:00.
XeOn Cp is offline
zmd94
Veteran Member
Join Date: Nov 2013
Location: Malaysia (9w2zow).
Old 03-23-2015 , 09:17   Re: Survivor Extra Item
Reply With Quote #10

Alright. ;)
zmd94 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 23:49.


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