AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   change script the extra item (https://forums.alliedmods.net/showthread.php?t=325624)

mikaelnatan13 06-30-2020 00:10

change script the extra item
 
how can I modify this weapon so not that it freezes the zombie and yes it sets on fire using the flame script

mikaelnatan13 06-30-2020 00:12

Re: change script the extra item
 
Quote:

Originally Posted by mikaelnatan13 (Post 2707927)
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)



supertrio17 06-30-2020 11:05

Re: change script the extra item
 
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 

?

mikaelnatan13 06-30-2020 16:41

Re: change script the extra item
 
Quote:

Originally Posted by supertrio17 (Post 2707977)
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 06-30-2020 16:43

Re: change script the extra item
 
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 



All times are GMT -4. The time now is 02:43.

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