Raised This Month: $13 Target: $400
 3% 

change script the extra item


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
mikaelnatan13
Member
Join Date: Apr 2020
Old 06-30-2020 , 00:10   change script the extra item
Reply With Quote #1

how can I modify this weapon so not that it freezes the zombie and yes it sets on fire using the flame script
mikaelnatan13 is offline
mikaelnatan13
Member
Join Date: Apr 2020
Old 06-30-2020 , 00:12   Re: change script the extra item
Reply With Quote #2

Quote:
Originally Posted by mikaelnatan13 View Post
how can I modify this weapon so not that it freezes the zombie and yes it sets on fire using the flame script
PHP Code:
#include <amxmodx>
#include <zombieplague>
#include <dhudmessage>
#include <hamsandwich>
#include <fakemeta>
#include <cstrike>
#include <engine>
#include <fun>

#define write_coord_fl(%1) engfunc(EngFunc_WriteCoord, %1)
#define message_begin_fl(%1,%2,%3,%4) engfunc(EngFunc_MessageBegin, %1, %2, %3, %4)

new Ham:Ham_Player_ResetMaxSpeed Ham_Item_PreFrame

new const V_M4A1_MODEL[] = "models/zombie_plague/v_frost_m4a1.mdl"
new const P_M4A1_MODEL[] = "models/zombie_plague/p_frost_m4a1.mdl"
new const W_M4A1_MODEL[]    = "models/zombie_plague/w_frost_m4a1.mdl"
new const W_OLD_M4A1_MODEL[]    = "models/w_m4a1.mdl"
new const ICE_MODEL[] = "models/zombie_plague/icecube_frozen.mdl"
new const MODEL_GLASSGIBS[]    = "models/glassgibs.mdl"
new const SOUND_UNFROZEN[]    = "debris/glass3.wav"

enum _:Sprites
{
    
SPRITE_FROST,
    
SPRITE_FROST2,
    
SPRITE_FLAKE
}

new 
g_iSprites[Sprites]

new 
g_iItemIDg_iM4A1FrostSprg_iMsgScreenFadeg_iMaxPlayersg_iHudSyncg_iSpriteLaserg_iGlassGibsg_iFreezeDmgg_fFrostTimeg_iDmgMultiplierg_iStatusIcon
new bool:g_bHasFrostM4A1[33], g_bIsFrozen[33]
new 
g_iDmg[33]

public 
plugin_init()
{
    
register_plugin("[ZP] Extra Item: Frost M4A1""1.4""Raheem")
    
    
// Cvars
    
g_fFrostTime register_cvar("zp_frost_m4a1_time""7.0"// Freeze Time. It's Float you can make it 0.5
    
g_iFreezeDmg register_cvar("zp_freezing_m4a1_damage""2000"// Damage Requried So Zombie got Frozen
    
g_iDmgMultiplier register_cvar("zp_multiplier_m4a1_damage""10"// Multiplie Weapon Damage

    // Message IDS
    
g_iHudSync CreateHudSyncObj()
    
g_iMsgScreenFade get_user_msgid("ScreenFade")
    
g_iStatusIcon get_user_msgid("StatusIcon")

    
// Server Max Slots
    
g_iMaxPlayers get_maxplayers()
    
    
// ITEM NAME & COST
    
g_iItemID zp_register_extra_item("Frost M4A1"30ZP_TEAM_HUMAN// It's cost 30 Ammo Pack
    
    // Events
    
register_event("HLTV""event_round_start""a""1=0""2=0")
    
register_event("WeapPickup","CheckModel","b","1=19")
    
register_event("CurWeapon","CurrentWeapon","be","1=1")
    
register_event("DeathMsg""EventDeathMsg""a")
    
    
// Forwards
    
register_forward(FM_PlayerPreThink"fw_PlayerPreThink")
    
register_forward(FM_SetModel"fw_SetModel")
    
    
// Hams
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage")
    
RegisterHam(Ham_TraceAttack"player""TraceAttack"1)
    
RegisterHam(Ham_TraceAttack"worldspawn""TraceAttack"1)
    
RegisterHam(Ham_Item_AddToPlayer"weapon_m4a1""fw_FrostM4A1AddToPlayer")
}

public 
plugin_precache() 
{
    
// Models
    
precache_model(V_M4A1_MODEL)
    
precache_model(P_M4A1_MODEL)
    
precache_model(W_M4A1_MODEL)
    
precache_model(ICE_MODEL)
    
g_iGlassGibs precache_model(MODEL_GLASSGIBS)
    
    
// Sounds
    
precache_sound("warcraft3/impalehit.wav")
    
precache_sound(SOUND_UNFROZEN)
    
    
// Sprites
    
g_iM4A1FrostSpr precache_model("sprites/shockwave.spr")
    
g_iSpriteLaser precache_model"sprites/Newlightning.spr")
    
g_iSprites[SPRITE_FROST] = precache_model("sprites/frostexp_1.spr");
    
g_iSprites[SPRITE_FROST2] = precache_model("sprites/frostexp_2.spr");
    
g_iSprites[SPRITE_FLAKE] = precache_model("sprites/snowflake_1.spr");
}

public 
client_putinserver(id)
{
    
g_bHasFrostM4A1[id] = false
    g_bIsFrozen
[id] = false
}

public 
client_disconnect(id)
{
    
g_bHasFrostM4A1[id] = false
    g_bIsFrozen
[id] = false
    RemoveEntity
(id)
}

public 
zp_extra_item_selected(playeritemid)
{
    if (
itemid == g_iItemID
    {
        
g_bHasFrostM4A1[player] = true
        ham_strip_weapon
(player"weapon_m4a1")
        
give_item(player"weapon_m4a1")
        
cs_set_user_bpammo(playerCSW_M4A190)
        new 
sName[32]
        
get_user_name(playersName31)
        
set_hudmessage(random(255), random(255), random(255), -1.00.1710.05.01.01.0, -1)
        
show_hudmessage(0"%s Has bought Frost M4A1!"sName)
        
ColorPrint(player"^1[^4ZP^1] ^3You Have bought Frost M4A1^1!")
    }
}

public 
TraceAttack(iEntiAttackerFloat:flDamageFloat:fDir[3], ptriDamageType)
{
    if(!
is_user_alive(iAttacker))
        return 
    
    if(
get_user_weapon(iAttacker) != CSW_M4A1 || !g_bHasFrostM4A1[iAttacker])
        return
    
    
set_hudmessage(34138255, -1.00.1710.02.01.01.0, -1)
    
ShowSyncHudMsg(iAttackerg_iHudSync"Freeze Damage^n%d/%d"g_iDmg[iAttacker], get_pcvar_num(g_iFreezeDmg))
    
    new 
vec1[3], vec2[3]
    
get_user_origin(iAttackervec11
    
get_user_origin(iAttackervec24)

    
make_beam(vec1vec2g_iSpriteLaser050200200)
}

public 
zp_user_infected_post(infectedinfector)
{
    if (
g_bHasFrostM4A1[infected])
    {
        
g_bHasFrostM4A1[infected] = false
    
}
}

public 
zp_user_humanized_post(id)
{
    
g_bHasFrostM4A1[id] = false
    g_iDmg
[id] = 0
    RemoveEntity
(id)
}

public 
event_round_start()
{
    for (new 
1<= g_iMaxPlayersi++)
    {
        
g_bHasFrostM4A1[i] = false
        g_bIsFrozen
[i] = false
        g_iDmg
[i] = 0
        
        
if(is_user_alive(i))
        {
            
Remove_Rendering(i)
        }
    }
}

public 
EventDeathMsg()
{
    new 
iVictim read_data(2)
    
RemoveEntity(iVictim)
    
Remove_Rendering(iVictim)
    
g_bIsFrozen[iVictim] = false
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type)
{
    if(!
is_user_connected(victim) || !is_user_connected(attacker) || zp_get_user_nemesis(victim) || attacker == victim || !attacker)
        return 
HAM_IGNORED

    
if(g_bIsFrozen[victim])
        return 
HAM_SUPERCEDE

    
if(g_bHasFrostM4A1[attacker] && (get_user_weapon(attacker) == CSW_M4A1))
        
SetHamParamFloat(4damage get_pcvar_num(g_iDmgMultiplier))
    
    
// For Frost Effect Ring
    
static Float:originF[3]
    
pev(victimpev_originoriginF)
    
    
// For Frost Effect Sound
    
static originF2[3
    
get_user_origin(victimoriginF2)
    
    if((
get_user_weapon(attacker) == CSW_M4A1) && g_bHasFrostM4A1[attacker])
    {
        
g_iDmg[attacker] += (floatround(damage) * get_pcvar_num(g_iDmgMultiplier))
    }
    
    if((
g_iDmg[attacker] >= get_pcvar_num(g_iFreezeDmg)) && (get_user_weapon(attacker) == CSW_M4A1) && g_bHasFrostM4A1[attacker])
    {
        new 
sName[32]
        
get_user_name(victimsNamecharsmax(sName))
        
FrostEffect(victim)
        
FrostEffectRing(originF)
        
FrostEffectSound(originF2)
        
g_iDmg[attacker] = 0
        set_dhudmessage
(34138255, -1.00.2526.03.00.11.5)
        
show_dhudmessage(attacker"%s Has been Freezed!"sName)
    }
    return 
HAM_IGNORED
}

public 
CheckModel(id)
{
    if(
zp_get_user_survivor(id))
        return 
PLUGIN_HANDLED
    
    
if (is_user_alive(id))
    {
        
set_pev(idpev_viewmodel2V_M4A1_MODEL)
        
set_pev(idpev_weaponmodel2P_M4A1_MODEL)
    }
    return 
PLUGIN_HANDLED
}

public 
CurrentWeapon(id)
{
    if ((
get_user_weapon(id) == CSW_M4A1) && g_bHasFrostM4A1[id] == true)
    {
        
CheckModel(id)
    }
    else
    {
        
ClearSyncHud(idg_iHudSync)
    }
    return 
PLUGIN_HANDLED
}

public 
FrostEffect(id)
{
    
// Only effect alive unfrozen zombies
    
if (!is_user_alive(id) || !zp_get_user_zombie(id) || g_bIsFrozen[id])
        return
    
    
message_begin(MSG_ONE_UNRELIABLEg_iMsgScreenFade_id)
    
write_short(4096*1// duration
    
write_short(4096*1// hold time
    
write_short(0x0000// fade type
    
write_byte(0// red
    
write_byte(50// green
    
write_byte(200// blue
    
write_byte(100// alpha
    
message_end()

    
message_begin(MSG_ONEg_iStatusIcon, {0,0,0}, id)
    
write_byte(1// Status [0=Hide, 1=Show, 2=Flash]
    
write_string("dmg_cold"// Sprite Name
    
write_byte(000// Red
    
write_byte(206// Green
    
write_byte(209// Blue
    
message_end()
    
    new 
ent create_entity("info_target")
    
    
UTIL_Explosion(idg_iSprites[SPRITE_FROST], 40304)
    
UTIL_Explosion(idg_iSprites[SPRITE_FROST2], 20304)
    
UTIL_SpriteTrail(idg_iSprites[SPRITE_FLAKE], 3032300)
    
    new 
Float:iOrigin[3]
    
entity_get_vector(idEV_VEC_originiOrigin)
    
set_pev(entpev_body1)
    
entity_set_model(entICE_MODEL)
    
iOrigin[2] -= 35
    entity_set_origin
(entiOrigin)
    
set_pev(entpev_ownerid)
    
set_rendering(entkRenderFxNone255255255kRenderTransAdd255)
    
entity_set_string(entEV_SZ_classname"ent_frozen")
    
entity_set_int(entEV_INT_solid2)
    new 
FloatiOriginNew[3]
    
entity_get_vector(idEV_VEC_originiOriginNew)
    
set_user_rendering(idkRenderFxGlowShell0100200kRenderNormal25)
    
g_bIsFrozen[id] = true
    set_task
(get_pcvar_float(g_fFrostTime), "RemoveFrost"id// Time to Remove Frost Effect 
}

public 
fw_PlayerPreThink(id)
{
    
// Not alive or Not Zombie
    
if (!is_user_alive(id) || !g_bIsFrozen[id])
        return

    
// Stop motion
    
set_pev(idpev_velocityFloat:{0.0,0.0,0.0})
    
set_user_maxspeed(id1.0)
    
    
// Stop Moving Mouse
    
set_pev(id pev_v_angle Float:{0.0,0.0,0.0})
    
set_pev(id pev_fixangle 1)
}

// Frost Effect Sound
public FrostEffectSound(iOrigin[3])
{
    new 
Entity create_entity("info_target")

    new 
Float:flOrigin[3]
    
IVecFVec(iOriginflOrigin)
    
entity_set_origin(EntityflOrigin)
    
emit_sound(EntityCHAN_WEAPON"warcraft3/impalehit.wav"VOL_NORMATTN_NORM0PITCH_NORM)
    
remove_entity(Entity)
}

UTIL_Explosion(iEntiSpriteiScaleiFramerateFlags)
{
    new 
Float:vOrigin[3]
    
pev(iEntpev_originvOrigin)
    
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_EXPLOSION)
    
engfunc(EngFunc_WriteCoordvOrigin[0])
    
engfunc(EngFunc_WriteCoordvOrigin[1])
    
engfunc(EngFunc_WriteCoordvOrigin[2])
    
write_short(iSprite)
    
write_byte(iScale)
    
write_byte(iFramerate)
    
write_byte(Flags)
    
message_end()
}

UTIL_SpriteTrail(iEntiSpriteiCountiLifeiScaleiVelocityiVary)
{
    new 
Float:vOrigin[3]
    
pev(iEntpev_originvOrigin)
    
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_SPRITETRAIL)
    
engfunc(EngFunc_WriteCoordvOrigin[0])
    
engfunc(EngFunc_WriteCoordvOrigin[1])
    
engfunc(EngFunc_WriteCoordvOrigin[2] + 100)
    
engfunc(EngFunc_WriteCoordvOrigin[0] + random_float( -200.0200.0 ))
    
engfunc(EngFunc_WriteCoordvOrigin[1] + random_float( -200.0200.0 ))
    
engfunc(EngFunc_WriteCoordvOrigin[2])
    
write_short(iSprite)
    
write_byte(iCount)
    
write_byte(iLife)
    
write_byte(iScale)
    
write_byte(iVelocity)
    
write_byte(iVary)
    
message_end()
}

// Frost Effect Ring
FrostEffectRing(const Float:originF3[3])
{
    
// Largest ring
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF30)
    
write_byte(TE_BEAMCYLINDER// TE id
    
engfunc(EngFunc_WriteCoordoriginF3[0]) // x
    
engfunc(EngFunc_WriteCoordoriginF3[1]) // y
    
engfunc(EngFunc_WriteCoordoriginF3[2]) // z
    
engfunc(EngFunc_WriteCoordoriginF3[0]) // x axis
    
engfunc(EngFunc_WriteCoordoriginF3[1]) // y axis
    
engfunc(EngFunc_WriteCoordoriginF3[2]+100.0// z axis
    
write_short(g_iM4A1FrostSpr// sprite
    
write_byte(0// startframe
    
write_byte(0// framerate
    
write_byte(4// life
    
write_byte(60// width
    
write_byte(0// noise
    
write_byte(41// red
    
write_byte(138// green
    
write_byte(255// blue
    
write_byte(200// brightness
    
write_byte(0// speed
    
message_end()
}

// Remove Frost Effect
public RemoveFrost(id)
{
    
// Not alive or not frozen anymore
    
if (!is_user_alive(id) || !g_bIsFrozen[id])
        return
    
    
// Unfreeze
    
g_bIsFrozen[id] = false;
    
set_task(0.1"remove_jibs"id)

    
// Rest Player Speed
    
ExecuteHamB(Ham_Player_ResetMaxSpeedid)
    
    
Remove_Rendering(id)
    
RemoveStatusIcon(id)
}

public 
remove_jibs(id)
{
    
RemoveEntity(id)
    
    new 
Float:origin[3]
    
pev(id,pev_origin,origin)
    
    
message_begin_fl(MSG_PVS,SVC_TEMPENTITY,origin,0)
    
write_byte(TE_IMPLOSION)
    
write_coord_fl(origin[0]) // x
    
write_coord_fl(origin[1]) // y
    
write_coord_fl(origin[2] + 8.0// z
    
write_byte(64// radius
    
write_byte(10// count
    
write_byte(3// duration
    
message_end()
    
    
message_begin_fl(MSG_PVS,SVC_TEMPENTITY,origin,0)
    
write_byte(TE_SPARKS)
    
write_coord_fl(origin[0]) // x
    
write_coord_fl(origin[1]) // y
    
write_coord_fl(origin[2]) // z
    
message_end()
    
    
message_begin_fl(MSG_PAS,SVC_TEMPENTITY,origin,0)
    
write_byte(TE_BREAKMODEL)
    
write_coord_fl(origin[0]) // x
    
write_coord_fl(origin[1]) // y
    
write_coord_fl(origin[2] + 24.0// z
    
write_coord_fl(16.0// size x
    
write_coord_fl(16.0// size y
    
write_coord_fl(16.0// size z
    
write_coord(random_num(-50,50)) // velocity x
    
write_coord(random_num(-50,50)) // velocity y
    
write_coord_fl(25.0// velocity z
    
write_byte(10// random velocity
    
write_short(g_iGlassGibs// model
    
write_byte(10// count
    
write_byte(25// life
    
write_byte(0x01// flags
    
message_end()
    
    
emit_sound(0,CHAN_ITEM,SOUND_UNFROZEN,VOL_NORM,ATTN_NORM,0,PITCH_LOW)
}

stock ColorPrint(const id, const input[], any: ...)
{
    new 
count 1players[32]
    static 
msg[192]
    
vformat(msg191input3)
    
    
replace_all(msg191"!g""^4")
    
replace_all(msg191"!y""^1")
    
replace_all(msg191"!t""^3")
    
replace_all(msg191"!t2""^0")
    
    if (
idplayers[0] = id;else get_players(playerscount"ch")
    {
        for (new 
0counti++)
        {
            if (
is_user_connectedplayers[i]))
            {
                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i])
                
write_byte(players[i])
                
write_string(msg)
                
message_end()
            }
        }
    }
}

stock ham_strip_weapon(id,weapon[])
{
    if(!
equal(weapon,"weapon_",7)) return 0

    
new wId get_weaponid(weapon)
    if(!
wId) return 0

    
new wEnt
    
while((wEnt engfunc(EngFunc_FindEntityByString,wEnt,"classname",weapon)) && pev(wEnt,pev_owner) != id) {}
    if(!
wEnt) return 0

    
if(get_user_weapon(id) == wIdExecuteHamB(Ham_Weapon_RetireWeapon,wEnt)

    if(!
ExecuteHamB(Ham_RemovePlayerItem,id,wEnt)) return 0
    ExecuteHamB
(Ham_Item_Kill,wEnt)

    
set_pev(id,pev_weapons,pev(id,pev_weapons) & ~(1<<wId))

    return 
1
}

make_beam(const origin2[3], const origin[3], spriteredgreenbluealpha)
{
    
//BEAMENTPOINTS
    
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
    
write_byte (0//TE_BEAMENTPOINTS 0
    
write_coord(origin2[0])
    
write_coord(origin2[1])
    
write_coord(origin2[2])
    
write_coord(origin[0])
    
write_coord(origin[1])
    
write_coord(origin[2])
    
write_short(sprite// sprite
    
write_byte(1// framestart
    
write_byte(5// framerate
    
write_byte(2// life
    
write_byte(20// width
    
write_byte(0// noise 
    
write_byte(red// r, g, b
    
write_byte(green// r, g, b 
    
write_byte(blue// r, g, b 
    
write_byte(alpha// brightness
    
write_byte(150// speed
    
message_end()
}

public 
RemoveStatusIcon(id)
{
    
// Remove Status Icon
    
message_begin(MSG_ONEg_iStatusIcon, {0,0,0}, id)
    
write_byte(0// Status [0=Hide, 1=Show, 2=Flash]
    
write_string("dmg_cold"// Sprite Name
    
message_end()
}

public 
fw_SetModel(entitymodel[])
{
    
    if(!
is_valid_ent(entity)) 
        return 
FMRES_IGNORED

    
if(!equali(modelW_OLD_M4A1_MODEL)) 
        return 
FMRES_IGNORED

    
new className[33]
    
entity_get_string(entityEV_SZ_classnameclassName32)

    static 
iOwneriStoredM4A1ID

    
// Frost M4A1 Owner
    
iOwner entity_get_edict(entityEV_ENT_owner)

    
// Get drop weapon index (Frost M4A1) to use in fw_FrostM4A1AddToPlayer forward
    
iStoredM4A1ID find_ent_by_owner(-1"weapon_m4a1"entity)

    
// If Player Has Frost M4A1 and It's weapon_m4a1
    
if(g_bHasFrostM4A1[iOwner] && is_valid_ent(iStoredM4A1ID))
    {
        
// Setting weapon options
        
entity_set_int(iStoredM4A1IDEV_INT_impulse1997)

        
// Rest Var
        
g_bHasFrostM4A1[iOwner] = false
        
        
// Set weaponbox new model
        
entity_set_model(entityW_M4A1_MODEL)
        return 
FMRES_SUPERCEDE
    
}
    return 
FMRES_IGNORED
}

public 
fw_FrostM4A1AddToPlayer(FrostM4A1id)
{
    
// Make sure that this is M4A1
    
if(is_valid_ent(FrostM4A1) && is_user_connected(id) && entity_get_int(FrostM4A1EV_INT_impulse) == 1997)
    {
        
// Update Var
        
g_bHasFrostM4A1[id] = true

        
// Reset weapon options
        
entity_set_int(FrostM4A1EV_INT_impulse0)
        return 
HAM_HANDLED
    
}
    return 
HAM_IGNORED
}

stock Remove_Rendering(id)
{
    
set_user_rendering(idkRenderFxNone255255255kRenderNormal16)
}

public 
RemoveEntity(id)
{
    if(!
is_user_connected(id))
        return
        
    new 
iEnt find_ent_by_owner(-1"ent_frozen"id);
    
    if(
pev_valid(iEnt))
        
remove_entity(iEnt)

mikaelnatan13 is offline
supertrio17
Senior Member
Join Date: May 2020
Location: Serbia
Old 06-30-2020 , 11:05   Re: change script the extra item
Reply With Quote #3

PHP Code:
g_fFrostTime register_cvar("zp_frost_m4a1_time""7.0"// Freeze Time. It's Float you can make it 0.5 
To
PHP Code:
g_fFrostTime register_cvar("zp_frost_m4a1_time""0.0"// Freeze Time. It's Float you can make it 0.5 
?
__________________
Contact! || Discord:
Mr_Boopsy_#2066
supertrio17 is offline
mikaelnatan13
Member
Join Date: Apr 2020
Old 06-30-2020 , 16:41   Re: change script the extra item
Reply With Quote #4

Quote:
Originally Posted by supertrio17 View Post
PHP Code:
g_fFrostTime register_cvar("zp_frost_m4a1_time""7.0"// Freeze Time. It's Float you can make it 0.5 
To
PHP Code:
g_fFrostTime register_cvar("zp_frost_m4a1_time""0.0"// Freeze Time. It's Float you can make it 0.5 
?
no, i want this weapon to fire flame the zombie, i managed to modify a scripht but i couldn't add the dmg cvar because it doesn't work and i couldn't even determine the p, v, w models of the weapon it has the standard skin of m4a1
mikaelnatan13 is offline
mikaelnatan13
Member
Join Date: Apr 2020
Old 06-30-2020 , 16:43   Re: change script the extra item
Reply With Quote #5

take a look to tell me what's wrong

PHP Code:
#include <amxmodx>
#include <fun>
#include <engine>
#include <hamsandwich>
#include <zombieplague>

#define PLUGIN "[ZP] Flame M4A1"
#define VERSION "1.0"
#define AUTHOR "Itzal"

// ZP default Model
new const V_M4A1_MODEL[] = "models/zombie_plague/v_flame_m4a1.mdl"
new const P_M4A1_MODEL[] = "models/zombie_plague/p_flame_m4a1.mdl"
new const W_M4A1_MODEL[]    = "models/zombie_plague/w_flame_m4a1.mdl"

// Macros
new g_MaxPlayers
#define IsValidUser(%1) (1 <= %1 <= g_MaxPlayers)

// Weapon cost
#define WEAPON_COST 15

// Old ZP version?
// #define OLD_VERSION

// ZP default Burn sounds
new const burn_sounds[ ][ ] =
{
    
"zombie_plague/zombie_burn3.wav",
    
"zombie_plague/zombie_burn4.wav",
    
"zombie_plague/zombie_burn5.wav",
    
"zombie_plague/zombie_burn6.wav",
    
"zombie_plague/zombie_burn7.wav"
}

// Item ID,  Flame Sprite, Smoke sprite
new g_ItemIDsprFlamesprSmoke

// Some bools
new bool:g_bFlameM4a133 ]
new 
bool:g_AlreadyBurn33 ]

// Cvars
new cvar_MaxBurnDMGcvar_MinBurnDMGcvar_BurnTimecvar_Delaycvar_OneRoundg_iDmgMultiplier

// Cached Cvars
new cvar_cMaxBurnDMGcvar_cMinBurnDMGcvar_cBurnTimeFloat:cvar_cDelay
new Time33 ]

public 
plugin_init( )
{
    
register_pluginPLUGINVERSIONAUTHOR )

    
// Get maxplayers
    
g_MaxPlayers get_maxplayers( )

    
// CVARs
    
cvar_MaxBurnDMG register_cvar"zp_flamem4_maxdmg""50" )
    
cvar_MinBurnDMG register_cvar"zp_flamem4_mindmg""20" )
    
cvar_BurnTime register_cvar"zp_flamem4_time""12" )    // Real Time = Time/2
    
cvar_Delay register_cvar"zp_flamem4_delay""4.0" )
    
cvar_OneRound register_cvar"zp_flamem4_oneround""1" )
                                
g_iDmgMultiplier register_cvar("zp_multiplier_flamem4_damage""20"// Multiplie Weapon Damage
    
    // Cache cvars
    
register_event"HLTV""event_round_start""a""1=0""2=0" )

    
// Hook drop
    
register_clcmd"drop""HookDrop" )

    
// Register the extraitem
    
g_ItemID zp_register_extra_item"Flame M4A1"WEAPON_COSTZP_TEAM_HUMAN )

    
// Ham forwards
    
RegisterHamHam_Spawn"player""fw_PlayerSpawn_Post")
    
RegisterHamHam_Killed"player""fw_PlayerKilled_Post")
    
RegisterHamHam_TakeDamage"player""fw_TakeDamage" )

    
// Gamemonitor info
    
static szCvar30 ]
    
formatexszCvarcharsmax(szCvar), "v%s by Javivi"VERSION )
    
register_cvar"zp_flamem4_version"szCvarFCVAR_SERVER|FCVAR_SPONLY )
}

public 
plugin_precache( )
{
    
// Precache flame/smoke sprite
    
sprFlame precache_model"sprites/flame.spr" )
    
sprSmoke precache_model"sprites/black_smoke3.spr" )

    
// Precache Burn sounds
    
for( new 0sizeof burn_soundsi++ )
        
precache_soundburn_sounds] )
}

// Cache CVARs
public event_round_start( )
{
    
cvar_cMaxBurnDMG get_pcvar_numcvar_MaxBurnDMG )
    
cvar_cMinBurnDMG get_pcvar_numcvar_MinBurnDMG )
    
cvar_cBurnTime get_pcvar_numcvar_BurnTime )
    
cvar_cDelay get_pcvar_floatcvar_Delay )
}

public 
client_disconnectid )
{
    if( 
g_bFlameM4a1id ] )
        
g_bFlameM4a1id ] = false

    
// Reset Time Counter
    
Timeid ] = 0
}

public 
HookDropid )
{
    
// If some human drop the FlameM4a1
    
if(is_user_aliveid ) && get_user_weaponid ) == CSW_M4A1 && g_bFlameM4a1 id ] )
    {
        
g_bFlameM4a1id ] = false
    
}
}
/*========================
* Zombie Plague Forwards *
=========================*/
// When someone buy the extraitem
public zp_extra_item_selectediditemid )
{
    if( 
itemid == g_ItemID )
    {
        if( !
zp_has_round_started( ) || g_bFlameM4a1id ] )
        {
            
client_print(idprint_chat"Voce nao pode comprar M4a1 de fogo neste momento!")

            
#if defined OLD_VERSION

            
zp_set_user_ammo_packsidzp_get_user_ammo_packs(id) + WEAPON_COST )

            
#else

            
return ZP_PLUGIN_HANDLED

            
#endif
        
}
        else
        {
            
// Give auto-shotgun
            
give_itemid"weapon_m4a1" )

            
// Give ammo
            
give_itemid"ammo_buckshot" )
            
give_itemid"ammo_buckshot" )
            
give_itemid"ammo_buckshot" )
            
give_itemid"ammo_buckshot" )

            
// Set FlameM4a1
            
g_bFlameM4a1id ] = true
        
}
    }
    return 
PLUGIN_HANDLED;
}

// When someone is infected
public zp_user_infected_postid )
{
    if( 
g_bFlameM4a1id ] ) // If have a FlameM4a1
        
g_bFlameM4a1id ] = false
}

/*==============
* Ham Forwards *
==============*/
public fw_PlayerSpawn_Postid )
{
    if( 
get_pcvar_numcvar_OneRound ) == && g_bFlameM4a1id ] )
    {
        
client_print(idprint_chat"[ZP] FlameM4a1 bullets are over!")
        
g_bFlameM4a1id ] = false
    
}
}
public 
fw_PlayerKilled_Postvictimattackershouldgib )
{
    if(
g_bFlameM4a1victim ] ) // If have a FlameM4a1
        
g_bFlameM4a1victim ] = false
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type)
{
    if(
IsValidUserattacker ) && victim != attacker && zp_get_user_zombievictim // If attacker is valid and victim is zombie
    
&& g_bFlameM4a1attacker ] && get_user_weaponattacker ) == CSW_M4A1 && !g_AlreadyBurnvictim ] ) // If attacker have the FlameM4a1 and victim is not burned
    
{
               
         
// Burn / ON
        
g_AlreadyBurnvictim ] = true

        
// Set burn time
        
Timevictim ] = cvar_cBurnTime

        
// Burn victim
        
Burnvictim )

        
// Emit burn sound
        
emit_soundvictimCHAN_VOICEburn_sounds[random_num(0sizeof burn_sounds 1)], 1.0ATTN_NORM0PITCH_NORM )
    
    
    }
}

/*======================================================*/
public Burnvictim )
{
    
// Get user origin
    
static Origin] ; get_user_originvictimOrigin )

    
// If burn time is over or victim are in water
    
if( Timevictim ] <= || get_entity_flagsvictim ) & FL_INWATER )
    {
        
// Show Smoke sprite
        
message_beginMSG_PVSSVC_TEMPENTITYOrigin )
        
write_byteTE_SMOKE // TE id
        
write_coordOrigin[0] ) // x
        
write_coordOrigin[1] ) // y
        
write_coordOrigin[2]-50 // z
        
write_shortsprSmoke // sprite
        
write_byterandom_num(1520) ) // scale
        
write_byterandom_num(1020) ) // framerate
        
message_end( )

        
// Delay to allow burn again
        
set_taskcvar_cDelay"Stop"victim )

        
// Exit
        
return
    }
    else
    {
        if( 
cvar_cBurnTime == Timevictim ]) // At half-burntime
        
{
            
// Play another sound
            
emit_soundvictimCHAN_VOICEburn_sounds[random_num(0sizeof burn_sounds 1)], 1.0ATTN_NORM0PITCH_NORM )
        }

        
// Flame sprite
        
message_beginMSG_PVSSVC_TEMPENTITYOrigin )
        
write_byteTE_SPRITE // TE id
        
write_coordOrigin[0]+random_num(-55) ) // x
        
write_coordOrigin[1]+random_num(-55) ) // y
        
write_coordOrigin[2]+random_num(-1010) ) // z
        
write_shortsprFlame // sprite
        
write_byterandom_num(510) ) // scale
        
write_byte255 // brightness
        
message_end( )

        
// Decrease Time
        
Timevictim ]--

        
// Decrease life (random)
        
set_user_healthvictimget_user_healthvictim ) - random_numcvar_cMinBurnDMGcvar_cMaxBurnDMG ) )

        
// Repeat
        
set_task0.5"Burn"victim )
    }
}

public 
Stopvictim )
        
g_AlreadyBurnvictim ] = false // Allow victim to be burn again 
mikaelnatan13 is offline
Reply


Thread Tools
Display Modes

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 15:16.


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