Raised This Month: $51 Target: $400
 12% 

zl_alienboss [round ends.. for no reason][Solved]


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
SkumTomteN
Veteran Member
Join Date: Oct 2013
Location: Asgard
Old 04-18-2014 , 12:07   zl_alienboss [round ends.. for no reason][Solved]
Reply With Quote #1

EDIT: If anybody ecounters the same problem. Get arkshines infinite_round and launch it on that map.


When mode is starting, we can play for like 3 minutes. then it says "Human wins", and alien boss isnt even dead. nobody is.

the timer works backwards. adding time instead of stealing it.

can anybody find anything wrong?, cause something is triggering "Human Wins!" at around 2.55/3.00 min.

You can test it on my server if you want. Just tell me on steam:
http://steamcommunity.com/id/SkumTomteN/

IP Adress is in signature.

My plugins sma:

zl_alienboss

PHP Code:
#include < amxmodx >
#include < engine >
#include < fakemeta >
#include < hamsandwich >
#include < xs >

#define NAME             "AlienBoss"
#define VERSION            "2.0.2"
#define AUTHOR            "Alexander.3"

#define MAPCHOOSER
#define PLAYER_HP
#define NEW_SEARCH
//#define MESSAGE
#define LASER

////////////////////////
/*------- CODE -------*/
////////////////////////
enum {
    
RUN,
    
ATTACK,
    
// Color
    
RED,
    
YELLOW,
    
BLUE,
    
GREEN,
    
//Other
    
CAST,
    
PHASE2,
    
MAHADASH
}

new const 
Resource[][] = {
    
"models/zl/npc/alien/zl_alien.mdl",        // 0
    
"models/zl/npc/alien/zl_ship.mdl",        // 1
    
"models/zl/npc/alien/zl_light_of_dead.mdl",    // 2
    
"sprites/zl/npc/alien/hpbar.spr",        // 3
    
"sprites/shockwave.spr",            // 4
    
"sprites/zl/npc/alien/fluxing.spr",        // 5
    
"sprites/laserbeam.spr",            // 6
    
"models/zl/npc/alien/zl_mine.mdl",        // 7
    
"sprites/zl/npc/alien/white.spr"        // 8
}

new const 
SoundList[][] = {
    
"zl/npc/alien/event_death.wav",        // 0 -
    
"zl/npc/alien/event_10.wav",        // 1 -
    
"zl/npc/alien/event_10_2.wav",        // 2 -
    
"zl/npc/alien/event_blue.wav",        // 3 -
    
"zl/npc/alien/event_blue2.wav",        // 4 -
    
"zl/npc/alien/event_gravity_death.wav",    // 5 -
    
"zl/npc/alien/event_phase2.wav",    // 6 -
    
"zl/npc/alien/event_red.wav",        // 7 -
    
"zl/npc/alien/event_red2.wav",        // 8 -
    
"zl/npc/alien/event_start.wav",        // 9 -
    
"zl/npc/alien/event_yellow.wav",    // 10 -
    
"zl/npc/alien/event20.wav",        // 11 -
    
"zl/npc/alien/event30.wav",        // 12 -
    
"zl/npc/alien/event_40.wav",        // 13 -
    
"zl/zombie_scenario_ready.mp3",        // 14
    
"zl/scenario_rush.mp3",            // 15
    
"zl/scenario_normal.mp3",        // 16
    
"zl/npc/alien/cast.wav",        // 17
    
"zl/npc/alien/shokwave.wav",        // 18
    
"zl/npc/alien/swing.wav",        // 19
    
"zl/npc/alien/step1.wav"        // 20
}

#define E_MAXBOMB    16
#define E_MAXZOMBIE    10
static g_Resource[sizeof Resource]
static 
e_zombie[E_MAXZOMBIE], e_coord[3], e_lighte_bosse_glowe_multie_lasere_goe_bomb[E_MAXBOMB]
static 
g_Alieng_Healthg_PlayerSpeed[33], g_PlayerBuffer[33], g_ZombieBuffer[sizeof e_zombie],
    
g_MineEnt[sizeof e_bomb], g_MineExpl[sizeof e_bomb],
    
// 0 - RedYellow
    // 1 - RedBlue
    // 2 - RedGreen
    // 3 - YellowBlue
    // 4 - YellowGreen
    // 5 - YellowBlue
    // 6 - Phase2
    // 7 - Purple
    // 8 - Green
    //-- WAVE
    // 9 - PreGREEN
    // 10 - PostGREEN
    // 11 - BLUE
    // 12 - WaveAbility
    // 13 - SpeedNormal
    // 14 - White
    
g_Ability[15]
new const 
FILE_SETTING[] = "zl_alienboss.ini"
new boss_hpprepare_timeboss_speedblood_colordamage_shockwavedamage_boss_attackFloat:mahadash_time,
    
zombie_normal_numzombie_normal_healthzombie_normal_damagezombie_normal_speed,
    
damage_sw_maximumzombie_spawn_timezombie_max_numzombie_max_healthzombie_max_damagezombie_max_speed,
    
damage_sw_minimumzombie_min_numzombie_min_healthzombie_min_damagezombie_min_speedplayer_min_speedFloat:player_speed_time,
    
poison_red_numpoison_yellow_numpoison_blue_numpoison_max_damagepoison_normal_damagepoison_min_damage,
    
zombie_phase_timezombie_add_time,
    
damage_laserdamage_minemine_timemine_nummine_num_last,
    
Float:damage_returndamage_time,
    
blue_speed_timeblue_speed_playergreen_gravity_time,
    
lighting_numlighting_countlighting_damage    
#if defined MAPCHOOSER
native zl_vote_start()
#else
new boss_nextmap[32]
#endif

native zl_zombie_create(Float:Origin[3], HealthSpeedDamage)
native zl_zombie_valid(index)
native zl_boss_map()
native zl_boss_valid(index)
native zl_player_alive()
native zl_player_random()

#define pev_num                pev_euser2
#define pev_ability            pev_euser3
#define pev_victim            pev_euser4

public plugin_init() {
    
register_plugin(NAMEVERSIONAUTHOR)
    
    if (
zl_boss_map() != 2) {
        
pause("ad")
        return
    }
        
    
RegisterHam(Ham_Player_PreThink"player""Think_Player"1)
    
RegisterHam(Ham_BloodColor"info_target""Hook_BloodColor")
    
RegisterHam(Ham_TakeDamage"info_target""Hook_TakeDamage")
    
RegisterHam(Ham_Killed"info_target""Hook_Killed")
    
RegisterHam(Ham_Killed"player""Hook_Killed"1)
    
RegisterHam(Ham_Spawn"player""Hook_Spawn")
    
    
register_think("Mine""Think_Mine")
    
register_think("Ship""Think_Ship")
    
register_think("Timer""Think_Timer")
    
register_think("Health""Think_Health")
    
register_think("AlienBoss""Think_Boss")
    
register_think("Lighting""Think_Lighting")
    
    
register_touch("AlienBoss""*""Touch_Boss")
    
register_touch("player""player""Touch_Player")
    
register_touch("player""Mine""Touch_Player")
    
    
register_dictionary("zl_alienboss.txt")
    
    
MapEvent()
}

public 
Think_Boss(Ent) {
    if (
pev(Entpev_deadflag) == DEAD_DYING)
        return
        
    if (!
zl_player_alive()) {
        
Anim(Ent21.0)
        
set_pev(Entpev_nextthinkget_gametime() + 6.1)
        return
    }
        
    static 
Float:tMahadash
    
if (tMahadash <= get_gametime()) {
        
tMahadash get_gametime() + mahadash_time
        
        
if (pev(Entpev_ability) == RUN && pev(Entpev_takedamage) == DAMAGE_YES) {
            
set_pev(Entpev_num0)
            
set_pev(Entpev_abilityMAHADASH)
        }
    }
        
    switch(
pev(Entpev_ability)) {
        case 
RUN: {
            new 
Float:Velocity[3], Float:Angle[3]
            static 
Target
            
if (!is_user_alive(Target)) {
                
Target zl_player_random()
                
set_pev(Entpev_nextthinkget_gametime() + 0.1)
                return
            }
            if (!
pev(Entpev_num)) {
                
set_pev(Entpev_movetypeMOVETYPE_PUSHSTEP)
                
Anim(Ent31.8)
                
set_pev(Entpev_num1)
            }
            
#if defined NEW_SEARCH
            
new LenLenBuff 99999
            
for(new 1<= get_maxplayers(); i++) {
                if (!
is_user_alive(i) || is_user_bot(i))
                    continue
                
                
Len Move(Enti500.0VelocityAngle)
                if (
Len LenBuff) {
                    
LenBuff Len
                    Target 
i
                
}
            }
            
#endif
            
Move(EntTargetfloat(boss_speed) + g_Ability[3], VelocityAngle)
            
Velocity[2] = 0.0
            set_pev
(Entpev_velocityVelocity)
            
set_pev(Entpev_anglesAngle)
            
set_pev(Entpev_nextthinkget_gametime() + 0.1)
        }
        case 
ATTACK:{
            switch(
pev(Entpev_num)) {
                case 
0: {
                    
Sound(Ent190)
                    
Anim(Ent61.0)
                    
set_pev(Entpev_num1)
                    
set_pev(Entpev_movetypeMOVETYPE_NONE)
                    
set_pev(Entpev_nextthinkget_gametime() + 0.6); return
                }
                case 
1: {
                    new 
Float:Velocity[3], Float:Angle[3], Len
                    
new victim pev(Entpev_victim)
                    
                    
Len Move(Entvictim2000.0VelocityAngle)
                    if ( 
Len <= 165 ) {
                        
Velocity[2] = 500.0
                        
if(g_Ability[3] || g_Ability[6]) {
                            
ExecuteHamB(Ham_Killedvictimvictim2)
                            if (!
g_Ability[6]) g_Ability[3] += 10
                        
}
                        else 
boss_damage(victimdamage_boss_attack, {25500})
                        
set_pev(victimpev_velocityVelocity)
                    }
                }
            }
            
set_pev(Entpev_num0)
            
set_pev(Entpev_abilityRUN)
            
set_pev(Entpev_nextthinkget_gametime() + 0.6)
        }
        case 
CAST: {
            static 
CurrentColorFluxing
            
switch (pev(Entpev_num)) {
                case 
0: {
                    if (
g_Ability[6]) {
                        
set_pev(Entpev_nextthinkget_gametime() + 0.1)
                        
set_pev(Entpev_num1)
                        return
                    }
                    new 
Float:Velocity[3], Float:Angle[3], Len
                    Len 
Move(Ente_go200.0VelocityAngle)
                    
Velocity[2] = 0.0
                    set_pev
(Entpev_velocityVelocity)
                    
set_pev(Entpev_anglesAngle)
                    if (
Len 200set_pev(Entpev_num1)
                    
set_pev(Entpev_nextthinkget_gametime() + 0.1)
                    return
                    
                }
                case 
1: {    
                    if(!
g_Ability[12] && g_Ability[6]) {
                            
CurrentColor boss_ability(1)        
                            
                    } else if(
g_Ability[12]) {
                        
CurrentColor boss_wave()
                    }
                    if (!
CurrentColor) {
                        
CurrentColor boss_color()
                        
set_pev(Entpev_nextthinkget_gametime() + 0.1)
                        return
                    }
                    
                    
Anim(Ent21.0)
                    
Fluxing engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"env_sprite"))
                    new 
Float:Origin[3]; pev(Entpev_originOrigin); Origin[2] += 110
                    engfunc
(EngFunc_SetOriginFluxingOrigin)
                    
engfunc(EngFunc_SetModelFluxingResource[5])                
                    switch(
CurrentColor) {
                        case 
1: { set_rendering(FluxingkRenderFxNone25516510kRenderTransAdd255); set_rendering(EntkRenderFxGlowShell25516510kRenderNormal30); } // Red + Yellow
                        
case 2: { set_rendering(FluxingkRenderFxNone1390255kRenderTransAdd255); set_rendering(EntkRenderFxGlowShell1390255kRenderNormal30); Sound(041); } // Red + Blue
                        
case 3: { set_rendering(FluxingkRenderFxNone150750kRenderTransAdd255); set_rendering(EntkRenderFxGlowShell150750kRenderNormal30); Sound(071); } // Red + Green
                        
case 4: { set_rendering(FluxingkRenderFxNone02550kRenderTransAdd255); set_rendering(EntkRenderFxGlowShell02550kRenderNormal30); Sound(031); } // Yellow + Blue
                        
case 5: { set_rendering(FluxingkRenderFxNone1022550kRenderTransAdd255); set_rendering(EntkRenderFxGlowShell1022550kRenderNormal30); Sound(0101); } // Yellow + Green
                        
case 6: { set_rendering(FluxingkRenderFxNone48213200kRenderTransAdd255); set_rendering(EntkRenderFxGlowShell48213200kRenderNormal30); Sound(071); } // Blue + Green
                        // Phase 2
                        
case 7: { set_rendering(FluxingkRenderFxNone2550247kRenderTransAdd255); set_rendering(EntkRenderFxGlowShell2550247kRenderNormal30); Sound(0131); } // Purple
                        
case 8: { set_rendering(FluxingkRenderFxNone11914659kRenderTransAdd255); set_rendering(EntkRenderFxGlowShell11914659kRenderNormal30); Sound(0121); } // LightGreen
                        // Wawe
                        
case 9: { set_rendering(FluxingkRenderFxNone25500kRenderTransAdd255); set_rendering(EntkRenderFxGlowShell25500kRenderNormal30); } // RED
                        
case 10: { set_rendering(FluxingkRenderFxNone02550kRenderTransAdd255); set_rendering(EntkRenderFxGlowShell02550kRenderNormal30); } // GREEN
                        
case 11: { set_rendering(FluxingkRenderFxNone00255kRenderTransAdd255); set_rendering(EntkRenderFxGlowShell00255kRenderNormal30); } // BLUE
                        
                        
case 12: { set_rendering(FluxingkRenderFxNone255255255kRenderTransAdd255); set_rendering(EntkRenderFxGlowShell255255255kRenderNormal30); Sound(011); } // WHITE
                    
}
                    
set_pev(Entpev_nextthinkget_gametime() + 0.1)
                    
set_pev(Fluxingpev_framerate5.0)
                    
dllfunc(DLLFunc_SpawnFluxing)    
                    
set_pev(Entpev_num2)
                    return
                }
                case 
2: {
                    static 
num
                    
new Float:Velocity[3], Float:Angle[3]
                    for(new 
1<= get_maxplayers(); i++) {
                        if (!
is_user_alive(i) || is_user_bot(i))
                            continue
                            
                        
Move(iEnt800.0VelocityAngle)
                        
set_pev(ipev_velocityVelocity)
                    }
                    
num++
                    if (
num >= 10) {
                        
set_pev(Entpev_num3)
                        
num 0
                    
}
                    
set_pev(Entpev_nextthinkget_gametime() + 0.3)
                }
                case 
3: {
                    
                    
set_pev(Entpev_nextthinkget_gametime() + 2.2)
                    
engfunc(EngFunc_RemoveEntityFluxing)
                    
set_pev(Entpev_num4)
                    
Anim(Ent51.0)
                    
Sound(Ent180)
                }
                case 
4: {
                    switch (
CurrentColor) {
                        case 
1: { g_Ability[0] = trueset_pev(Entpev_fuser1get_gametime() + 5.0); boss_zombie(zombie_max_healthzombie_max_speedzombie_max_damagezombie_max_num); }
                        case 
2: { g_Ability[1] = trueset_pev(Entpev_fuser1get_gametime() + player_speed_time); boss_zombie(zombie_min_healthzombie_min_speedzombie_min_damagezombie_min_num); }
                        case 
3: { g_Ability[2] = trueboss_zombie(zombie_normal_healthzombie_normal_speedzombie_normal_damagezombie_normal_num); boss_infect(poison_red_num); }
                        case 
4: { g_Ability[3] = trueset_pev(Entpev_fuser1get_gametime() + player_speed_time); }
                        case 
5: { g_Ability[4] = trueboss_infect(poison_yellow_num); }
                        case 
6: { g_Ability[5] = trueset_pev(Entpev_fuser1get_gametime() + player_speed_time); boss_infect(poison_blue_num); }
                        
// Phase 2
                        
case 7: { g_Ability[7] = trueset_pev(Entpev_fuser1get_gametime() + mine_time); boss_purple(1); }
                        case 
8: { g_Ability[8] = trueset_pev(Entpev_fuser1get_gametime() + damage_time); }
                        
                        case 
9: {}
                        case 
10: { g_Ability[9] = trueset_pev(Entpev_fuser3get_gametime() + 1.0); }
                        case 
11: { g_Ability[11] = trueset_pev(Entpev_fuser2get_gametime() + blue_speed_time); }
                        case 
12: { g_Ability[14] = trueset_pev(Entpev_fuser1get_gametime() + 5.0); }
                    }
                    
Anim(Ent21.0)
                    
boss_shockwave(CurrentColor)
                    
Sound(Ent170)
                    if (
g_Ability[8]) { Anim(g_Alien21.0); return; }
                    
set_rendering(Ent)
                    if (
g_Ability[12]) {
                        
set_pev(Entpev_nextthinkget_gametime() + 1.0)
                        
set_pev(Entpev_num0)
                        return
                    }
                    if (
CurrentColor == 1Sound(081)
                    
CurrentColor 0
                    set_pev
(Entpev_nextthinkget_gametime() + 0.3)
                    
set_pev(Entpev_num0)
                    
set_pev(Entpev_abilityRUN)
                }
            }
        }
        case 
PHASE2: {
            switch (
pev(Entpev_num)) {
                case 
0: {
                    new 
Float:Velocity[3], Float:Angle[3], Len
                    Len 
Move(Ente_go200.0VelocityAngle)
                    
Velocity[2] = 0.0
                    set_pev
(Entpev_velocityVelocity)
                    
set_pev(Entpev_anglesAngle)
                    if (
Len 200) {
                        
set_pev(Entpev_nextthinkget_gametime() + 2.0)
                        
set_pev(Entpev_num1)
                        
Anim(Ent21.0)
                        
Sound(061)
                        
g_Ability[6] = 1
                        
return
                    }
                    
set_pev(Entpev_nextthinkget_gametime() + 0.1)
                    return
                }
                case 
1: { Light(Ent18050, {2550247}); set_pev(Entpev_num2); set_pev(Entpev_nextthinkget_gametime() + 2.0); }
                case 
2: { Light(Ent18050, {11914659}); set_pev(Entpev_num3); set_pev(Entpev_nextthinkget_gametime() + 2.0); }
                case 
3: { Light(Ent18050, {150024}); set_pev(Entpev_num4); set_pev(Entpev_nextthinkget_gametime() + 2.0); }
                case 
4: { Light(Ent18050, {255255255}); set_pev(Entpev_num0); set_pev(Entpev_abilityMAHADASH); set_pev(Entpev_nextthinkget_gametime() + 2.0); }
            }
        }
        case 
MAHADASH: {
            static 
Float:Velocity[3], Float:Angle[3]
            switch (
pev(Entpev_num)) {
                case 
0: {
                    new 
Player zl_player_random()
                    if (!
is_user_alive(Player) || is_user_bot(Player)) {
                        
set_pev(Entpev_nextthinkget_gametime() + 0.1)
                        
Player zl_player_random()
                        return
                    }                
                    
Move(EntPlayer2000.0VelocityAngle)
                    
set_pev(Entpev_nextthinkget_gametime() + 0.6)
                    
set_pev(Entpev_movetypeMOVETYPE_NONE)
                    
set_pev(Entpev_anglesAngle)
                    
set_pev(Entpev_num1)
                    
Anim(Ent71.5)
                    
set_pev(Entpev_movetypeMOVETYPE_FLY)
                }
                case 
1: {
                    
BeamFollow(Ent270, {25500})
                    
set_pev(Entpev_nextthinkget_gametime() + 0.6)
                    
set_pev(Entpev_velocityVelocity)
                    
set_pev(Entpev_num2)
                }
                case 
2: {
                    
BeamKill(Ent)
                    
set_pev(Entpev_nextthinkget_gametime() + 0.1)
                    
set_pev(Entpev_abilityRUN)
                    
set_pev(Entpev_num0)
                }
            }
        }
    }
}

public 
Think_Ship(Ent) {
    static 
Float:Velocity[3], Float:Angle[3], Beam
    
    
switch (pev(Entpev_num)) {
        case 
0: {
            
#if defined PLAYER_HP
            
g_Health PlayerHp(boss_hp)
            
#else
            
g_Health boss_hp
            
#endif
            
Move(Ente_coord[1], 500.0VelocityAngle)
            
set_pev(Entpev_body1)
            
set_pev(Entpev_velocityVelocity)
            
set_pev(Entpev_anglesAngle)
            
set_pev(Entpev_num1)
        }
        case 
1: { 
            if (
Move(Ente_coord[1], 500.0VelocityAngle) < 50) {
                
Beam engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
                new 
Float:Origin[3]; pev(e_lightpev_originOrigin)
                
engfunc(EngFunc_SetModelBeamResource[2])
                
engfunc(EngFunc_SetSizeBeamFloat:{-1.0, -1.0, -1.0}, Float:{1.01.01.0})
                
engfunc(EngFunc_SetOriginBeamOrigin)
                
set_pev(Beampev_effectspev(Beampev_effects) | EF_NODRAW)
                
set_pev(Beampev_solidSOLID_NOT)
                
set_pev(Beampev_movetypeMOVETYPE_FLY)
                
set_pev(Entpev_velocity, {0.00.00.0})
                
set_pev(Entpev_nextthinkget_gametime() + 0.5)
                
set_pev(Entpev_body0)
                
SpawnBoss(float(g_Health))
                
set_pev(Entpev_num2)
                return
            }
        }
        case 
2: {
            
set_rendering(e_glowkRenderFxNone000kRenderTransAdd90)
            
set_pev(Entpev_nextthinkget_gametime() + 0.5)
            
set_pev(Entpev_num3)
            return
        }
        case 
3: {
            static 
alpha
            set_pev
(Beampev_effectspev(Beampev_effects) & ~EF_NODRAW
            
set_rendering(e_glowkRenderFxNone000kRenderTransAdd90)
            
set_rendering(g_AlienkRenderFxNone000kRenderTransAlphaalpha)
            
alpha += 5
            
            
if (alpha >= 255) {
                
set_rendering(g_AlienkRenderFxNone000kRenderTransAlpha255)
                
set_pev(Entpev_nextthinkget_gametime() + 0.5)
                
set_pev(Entpev_num4)
                return
            }
        }
        case 
4: { engfunc(EngFunc_RemoveEntityBeam); set_pev(Entpev_nextthinkget_gametime() + 0.5); set_pev(Entpev_num5); return; }
        case 
5: { engfunc(EngFunc_RemoveEntitye_glow); set_pev(Entpev_nextthinkget_gametime() + 0.5); set_pev(Entpev_num6); return; }
        case 
6: {
            
Move(Ente_coord[2], 500.0VelocityAngle)
            
set_pev(g_Alienpev_euser11)
            
set_pev(Entpev_velocityVelocity)
            
set_pev(Entpev_anglesAngle)
            
set_pev(Entpev_body1)
            
set_pev(Entpev_num7)
        }
        case 
7: if (Move(Ente_coord[2], 500.0VelocityAngle) < 200) { engfunc(EngFunc_RemoveEntityEnt); return; }
    }
    
set_pev(Entpev_nextthinkget_gametime() + 0.1)
}

public 
Think_Health(Ent) {
    static 
Float:Origin[3], Float:HealthFloat:hpbuff
    pev
(g_Alienpev_originOrigin)
    
Origin[2] += 230.0
    set_pev
(Entpev_originOrigin)
    
pev(g_Alienpev_healthhpbuff)
            
    
Health hpbuff 100.0 g_Health
    set_pev
(Entpev_frameHealth)
    
    switch (
pev(g_Alienpev_euser1)) {
        case 
0: { set_pev(Entpev_nextthinkget_gametime() + 1.0); return; }
        case 
1: {
            
Sound(091)
            
set_pev(Entpev_effectspev(Entpev_effects) & ~EF_NODRAW)
            
set_pev(Entpev_nextthinkget_gametime() + 8.1)
            
set_pev(g_Alienpev_nextthinkget_gametime() + 8.0)
            
set_pev(g_Alienpev_euser12)
            return
        }
        case 
2: {
            
client_cmd(0"mp3 play ^"sound/%s^""SoundList[15])
            
set_pev(g_Alienpev_takedamageDAMAGE_YES)
            
set_pev(g_Alienpev_euser13)
        }
    }
    
    switch (
floatround(Healthfloatround_round)) {
        case 
0..10: if(pev(g_Alienpev_ability) == RUN) if(pev(g_Alienpev_button) == 8) { set_pev(g_Alienpev_button9); boss_ability(0); }
        case 
11..20: if(pev(g_Alienpev_ability) == RUN) if(pev(g_Alienpev_button) == 7) { set_pev(g_Alienpev_button8); boss_ability(0); Sound(0111); }
        case 
21..30: if(pev(g_Alienpev_ability) == RUN) if(pev(g_Alienpev_button) == 6) { set_pev(g_Alienpev_button7); boss_ability(0); }
        case 
31..44: if(pev(g_Alienpev_ability) == RUN) if(pev(g_Alienpev_button) == 5) { set_pev(g_Alienpev_button6); boss_ability(0); }
        case 
45..54: if(pev(g_Alienpev_ability) == RUN) if(pev(g_Alienpev_button) == 4) { set_pev(g_Alienpev_button5); boss_ability(0); }
        case 
55..64: if(pev(g_Alienpev_ability) == RUN) if(pev(g_Alienpev_button) == 3) { set_pev(g_Alienpev_button4); boss_ability(0); }
        case 
65..74: if(pev(g_Alienpev_ability) == RUN) if(pev(g_Alienpev_button) == 2) { set_pev(g_Alienpev_button3); boss_ability(0); }
        case 
75..84: if(pev(g_Alienpev_ability) == RUN) if(pev(g_Alienpev_button) == 1) { set_pev(g_Alienpev_button2); boss_ability(0); }
        case 
85..95: if(pev(g_Alienpev_ability) == RUN) if(pev(g_Alienpev_button) == 0) { set_pev(g_Alienpev_button1); boss_ability(0); }
    }
    
    
set_pev(Entpev_nextthinkget_gametime() + 0.1)
}

public 
Think_Timer(Ent) {
    if (!
zl_player_alive()) {
        
set_pev(Entpev_nextthinkget_gametime() + 1.0)
        return
    }
    
    if (
pev(g_Alienpev_deadflag) == DEAD_DYING)
        return
    
    static 
Counter
    
switch(pev(Entpev_num)) {
        case 
0: { Counter prepare_timeset_pev(Entpev_num1); }
        case 
1: { Counter --; if (Counter <= 0) { EventPrepare(); set_pev(Entpev_num2); }}
        case 
2: { Counter ++; }
    }
    
    
set_pev(Entpev_nextthinkget_gametime() + 1.0)
    
message_begin(MSG_ALLget_user_msgid("RoundTime"))
    
write_short(Counter
    
message_end()
    
    
    if (
pev(g_Alienpev_fuser4) <= get_gametime()) {
        if (
g_Ability[6]) {
            if (
g_Ability[6] <= 10
                
boss_zombie(zombie_normal_healthzombie_normal_speedzombie_normal_damageg_Ability[6])
            else
                
boss_zombie(zombie_normal_healthzombie_normal_speedzombie_normal_damage10)
            
set_pev(g_Alienpev_fuser4get_gametime() + float(zombie_phase_time))
        }
    }
    static 
Float:TimeBuff
    
if (g_Ability[6]) {
        if (
TimeBuff get_gametime()) {
            
TimeBuff get_gametime() + float(zombie_add_time)
            
g_Ability[6]++
        }
    }
        
    if (
pev(g_Alienpev_fuser2) <= get_gametime()) {
        if (
g_Ability[11]) {
            for(new 
id 1id <= get_maxplayers(); id++) {
                
g_PlayerSpeed[id] = -1
                
if (is_user_connected(id)) BeamKill(id)
            }
            
g_Ability[11] = false
        
}
    }
    
    if (
pev(g_Alienpev_fuser1) <= get_gametime()) {
        if (
g_Ability[0]) {
            
boss_zombie(zombie_max_healthzombie_max_speedzombie_max_damage1)
            
set_pev(g_Alienpev_fuser1get_gametime() + float(zombie_spawn_time))
        }
        if (
g_Ability[3] || g_Ability[1] || g_Ability[5]) {
            for(new 
id 1id <= get_maxplayers(); id++) {
                
g_PlayerSpeed[id] = -1
                
if (is_user_connected(id)) BeamKill(id)
                if (
g_Ability[3] || g_Ability[5]) set_pev(g_Alienpev_fuser1get_gametime() + 99999.9)
            }
            
g_Ability[1] = false
        
}
        if (
g_Ability[7]) {
            
boss_purple(2)
            
set_pev(g_Alienpev_fuser1get_gametime() + float((mine_time 4)))
        }
        if (
g_Ability[8]) {
            
set_pev(g_Alienpev_nextthinkget_gametime() + 0.3)
            
set_pev(g_Alienpev_abilityRUN)
            
set_pev(g_Alienpev_num0)
            
set_rendering(g_Alien)
            
g_Ability[8] = false
        
}
        if (
g_Ability[14]) {
            static 
num
            
if (num lighting_count) {
                
boss_lighting()
                
set_pev(g_Alienpev_fuser1get_gametime() + 5.0)
                
num++
            } else 
g_Ability[14] = false
        
}
    }
    
    if (
pev(g_Alienpev_fuser3) <= get_gametime()) {
        if (
g_Ability[9]) {
            for(new 
id 1id <= get_maxplayers(); id++) {
                if (!
is_user_alive(g_PlayerBuffer[id]))
                    continue
                    
                
set_pev(g_PlayerBuffer[id], pev_gravity0.01)
            }
            
set_pev(g_Alienpev_fuser3get_gametime() + green_gravity_time)
            
g_Ability[9] = false
            g_Ability
[10] = true
            
return
        }
        if (
g_Ability[10]) {
            for(new 
id 1id <= get_maxplayers(); id++) {
                if (!
is_user_alive(g_PlayerBuffer[id]))
                    continue
                
                
Sound(g_PlayerBuffer[id], 51)
                
set_pev(g_PlayerBuffer[id], pev_gravity9.9)
            }
            
set_pev(g_Alienpev_fuser3get_gametime() + 2.0)
            
g_Ability[10] = false
            g_Ability
[13] = true
            
return
        }
        if (
g_Ability[13]) {
            for(new 
id 1id <= get_maxplayers(); id++) {
                if (!
is_user_alive(g_PlayerBuffer[id]))
                    continue
                
                
set_pev(g_PlayerBuffer[id], pev_gravity0.8)
                
g_PlayerBuffer[id] = -1
            
}
            
g_Ability[13] = false
        
}
    }
}

public 
Think_Player(id) {
    if (!
is_user_alive(g_PlayerSpeed[id]))
        return 
HAM_IGNORED
    
    
if (g_Ability[11]) set_pev(idpev_maxspeedfloat(blue_speed_player))
    if (
g_Ability[1] || g_Ability[3] || g_Ability[5]) set_pev(idpev_maxspeedfloat(player_min_speed))
    return 
HAM_IGNORED
}

public 
Think_Mine(Ent) {
    if(!
pev_valid(Ent))
        return
    
    for(new 
isizeof e_bomb; ++i)
        if(
pev_valid(g_MineExpl[i])) {
            
dllfunc(DLLFunc_Useg_MineExpl[i], g_MineExpl[i])
            
g_MineExpl[i] = -1
            g_MineEnt
[i] = -1
        
}
    
engfunc(EngFunc_RemoveEntityEnt)
}

public 
Think_Lighting(Ent) {        
    static 
victim = -1
    
new Float:Origin[3]; pev(Entpev_originOrigin)
    
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(0)
    
engfunc(EngFunc_WriteCoordOrigin[0])
    
engfunc(EngFunc_WriteCoordOrigin[1])
    
engfunc(EngFunc_WriteCoordOrigin[2])
    
engfunc(EngFunc_WriteCoordOrigin[0]) 
    
engfunc(EngFunc_WriteCoordOrigin[1])
    
engfunc(EngFunc_WriteCoordOrigin[2] + 1000.0)
    
write_short(g_Resource[6])
    
write_byte(1)
    
write_byte(5)
    
write_byte(2)
    
write_byte(20)
    
write_byte(80)
    
write_byte(200)
    
write_byte(200)
    
write_byte(200)
    
write_byte(200)
    
write_byte(200)
    
message_end()
    
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_SPARKS)
    
engfunc(EngFunc_WriteCoordOrigin[0])
    
engfunc(EngFunc_WriteCoordOrigin[1])
    
engfunc(EngFunc_WriteCoordOrigin[2])
    
message_end()
    
    while ((
victim engfunc(EngFunc_FindEntityInSpherevictimOrigin80.0)))    
        if (
is_user_alive(victim)) {
            if (
pev(g_Alienpev_weaponanim) == 0) {
                
set_pev(g_Alienpev_weaponanim1)
                
Sound(021)
            }
            
ExecuteHamB(Ham_TakeDamagevictim0victimfloat(lighting_damage), DMG_BLAST)
        }
            
    
engfunc(EngFunc_RemoveEntityEnt)
}

public 
Touch_Boss(BossEnt) {
    if (
pev(Bosspev_ability) == ATTACK)
        return
        
    if (
pev_valid(Ent) && g_Ability[6] && !g_Ability[7]) {
        for (new 
isizeof e_bomb; ++i) {
            if (
g_MineEnt[i] == Ent) {
                if (
pev_valid(g_MineExpl[i])) { dllfunc(DLLFunc_Useg_MineExpl[i], g_MineExpl[i]); g_MineExpl[i] = -1; }
                if (
pev_valid(g_MineEnt[i]))  { engfunc(EngFunc_RemoveEntityg_MineEnt[i]); g_MineEnt[i] = -1; }
            }
        }
    }
                
        
    if (
pev(Bosspev_ability) == MAHADASH) {
        static 
Float:Origin[3]
        
pev(Bosspev_originOrigin)
        if(
TraceCheckCollides(Origin50.0)) {
            if (
is_user_alive(Ent)) ExecuteHamB(Ham_KilledEntEnt2)
            
set_pev(Bosspev_movetypeMOVETYPE_NONE)
            
set_pev(Bosspev_velocity, {0.00.00.0})
        }
        return
    }
        
    if (
pev(Bosspev_ability) != RUN)
        return
    
    if (!
is_user_alive(Ent))
        return
        
    
set_pev(Bosspev_abilityATTACK)
    
set_pev(Bosspev_victimEnt)
    
set_pev(Bosspev_num0)
}

public 
Touch_Player(PlayerInfector) {

    if (
is_user_alive(Player) && pev_valid(Infector) && g_Ability[6] && !g_Ability[7]) {
        for (new 
isizeof e_bomb; ++i) {
            if(
g_MineEnt[i] == Infector) {
                if (
pev_valid(g_MineExpl[i])) { dllfunc(DLLFunc_Useg_MineExpl[i], g_MineExpl[i]); g_MineExpl[i] = -1; }
                if (
pev_valid(g_MineEnt[i]))  { engfunc(EngFunc_RemoveEntityg_MineEnt[i]); g_MineEnt[i] = -1; }
            }
        }
    }
    
    if (
g_Ability[2] || g_Ability[4] || g_Ability[5]) {
        if (
zl_zombie_valid(Infector) && zombie_poison(Infector)) {
            
set_rendering(PlayerkRenderFxGlowShell02550kRenderNormal20)
            
ScreenFade(Player00, {02550}, 804)
            
g_PlayerBuffer[Player] = Player
        
}
        
        if (
is_user_alive(Infector)) {
            if (
is_user_alive(g_PlayerBuffer[Infector])) {
                
set_rendering(PlayerkRenderFxGlowShell02550kRenderNormal20)
                
ScreenFade(Player00, {02550}, 804)
                
g_PlayerBuffer[Player] = Player
            
}
        }
    }
}

public 
EventPrepare() {
    new 
Ship engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    new 
Float:Origin[3]; pev(e_coord[0], pev_originOrigin)
    
    
engfunc(EngFunc_SetModelShipResource[1])
    
engfunc(EngFunc_SetSizeShipFloat:{-1.0, -1.0, -1.0}, Float:{1.01.01.0})
    
engfunc(EngFunc_SetOriginShipOrigin)
    
    
set_pev(Shippev_classname"Ship")
    
set_pev(Shippev_solidSOLID_NOT)
    
set_pev(Shippev_movetypeMOVETYPE_FLY)
    
set_pev(Shippev_nextthinkget_gametime() + 0.1)
}

public 
SpawnBoss(Float:hp) {
    new 
Float:Origin[3], hpbar
    g_Alien 
engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
hpbar engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
set_rendering(g_AlienkRenderFxGlowShell000kRenderTransAlpha0)
    
pev(e_bosspev_originOrigin)
    
    
engfunc(EngFunc_SetModelg_AlienResource[0])
    
engfunc(EngFunc_SetSizeg_AlienFloat:{-32.0, -32.0, -36.0}, Float:{32.032.096.0})
    
engfunc(EngFunc_SetOriging_AlienOrigin)
    
    
set_pev(g_Alienpev_classname"AlienBoss")
    
set_pev(g_Alienpev_solidSOLID_BBOX)
    
set_pev(g_Alienpev_movetypeMOVETYPE_TOSS)
    
set_pev(g_Alienpev_takedamageDAMAGE_NO)
    
set_pev(g_Alienpev_deadflagDEAD_NO)
    
set_pev(g_Alienpev_healthhp)
    
    
Origin[2] += 230.0
    engfunc
(EngFunc_SetOriginhpbarOrigin)
    
engfunc(EngFunc_SetModelhpbarResource[3])
    
entity_set_float(hpbarEV_FL_scale0.5)
    
set_pev(hpbarpev_effectspev(hpbarpev_effects) | EF_NODRAW)
    
set_pev(hpbarpev_nextthinkget_gametime() + 1.0)
    
set_pev(hpbarpev_classname"Health")
    
set_pev(hpbarpev_frame100.0)
    
    
Anim(g_Alien21.0)
}

public 
Hook_Killed(victimattackercorpse) {
    if (!
zl_player_alive())    {
        
set_task(6.0"changemap")
        return 
HAM_IGNORED
    
}
    
    if (!
zl_boss_valid(victim))
        return 
HAM_IGNORED
        
    
if (pev(victimpev_deadflag) == DEAD_DYING)
        return 
HAM_IGNORED
    
    Sound
(001)
    
Anim(victim11.0)
    
set_pev(victimpev_solidSOLID_NOT)
    
set_pev(victimpev_velocity, {0.00.00.0})
    
set_pev(victimpev_deadflagDEAD_DYING)
    
set_task(10.0"changemap")
    return 
HAM_SUPERCEDE
}

public 
Hook_BloodColor(Ent) {
    if (!
zl_boss_valid(Ent))
        return 
HAM_IGNORED
        
    SetHamReturnInteger
(blood_color)
    return 
HAM_SUPERCEDE
}


public 
Hook_TakeDamage(victimwpnattackerFloat:damagedamagebyte) {
    if (
g_Ability[8] && zl_boss_valid(victim)) {
        if(
is_user_alive(attacker)) {
            
boss_damage(attackerfloatround(damage damage_returnfloatround_round), {25500})
            return 
HAM_SUPERCEDE
        
}
    }
    
    if (
zl_boss_valid(victim) || zl_zombie_valid(victim)) {
        if (!
pev_valid(attacker))
            return 
HAM_IGNORED
        
        
static ClassName[32]
        
pev(attackerpev_classnameClassNamecharsmax(ClassName))
        
        if(
equal(ClassName"env_explosion"))
            return 
HAM_SUPERCEDE
        
        
#if defined LASER
        
if(equal(ClassName"trigger_hurt"))
            return 
HAM_SUPERCEDE
        
#endif
    
}
    return 
HAM_IGNORED
}

public 
Hook_Spawn(id) {    
    if (!
g_Ability[6]) {
        if(
pev(g_Alienpev_takedamage) == DAMAGE_NO)    
            
client_cmd(id"mp3 play ^"sound/%s^""SoundList[14])
        else
            
client_cmd(id"mp3 play ^"sound/%s^""SoundList[16])
    } else 
client_cmd(id"mp3 play ^"sound/%s^""SoundList[15])
}



public 
MapEvent() {
    new 
LaserDmg[4], BombDmg[4]
    
    
formatex(LaserDmgcharsmax(LaserDmg), "%d"damage_laser)
    
formatex(BombDmgcharsmax(LaserDmg), "%d"damage_mine)
    
    for (new 
isizeof e_zombie; ++i) {
        static 
ClassName[10]
        
formatex(ClassNamecharsmax(ClassName), "zombie_%d"1)
        
e_zombie[i] = engfunc(EngFunc_FindEntityByStringe_zombie[i], "targetname"ClassName)
    }
    for (new 
isizeof e_bomb; ++i) {
        static 
ClassName[10]
        
formatex(ClassNamecharsmax(ClassName), "bomb%d"i)
        
e_bomb[i] = engfunc(EngFunc_FindEntityByStringe_bomb[i], "targetname"ClassName)
        
DispatchKeyValue(e_bomb[i], "iMagnitude"BombDmg)
    }    
    
e_laser engfunc(EngFunc_FindEntityByStringe_laser"targetname""damage")
    
e_coord[0] = engfunc(EngFunc_FindEntityByStringe_coord[0], "targetname""ship_1")
    
e_coord[1] = engfunc(EngFunc_FindEntityByStringe_coord[1], "targetname""ship_2")
    
e_coord[2] = engfunc(EngFunc_FindEntityByStringe_coord[2], "targetname""ship_3")
    
e_light engfunc(EngFunc_FindEntityByStringe_light"targetname""light")
    
e_boss engfunc(EngFunc_FindEntityByStringe_boss"targetname""boss")
    
e_glow engfunc(EngFunc_FindEntityByStringe_glow"targetname""glow")
    
e_multi engfunc(EngFunc_FindEntityByStringe_multi"targetname""multi")
    
e_go engfunc(EngFunc_FindEntityByStringe_go"targetname""go")
    
DispatchKeyValue(e_laser"damage"LaserDmg)
    
set_pev(e_coord[0], pev_classname"Timer")
    
set_pev(e_coord[0], pev_nextthinkget_gametime() + 1.0)
}

public 
plugin_precache() {
    for (new 
isizeof Resourcei++)
        
g_Resource[i] = precache_model(Resource[i])
        
    for (new 
isizeof SoundListi++)
        
precache_sound(SoundList[i])
}

public 
plugin_cfg()
    
config_load()

public 
changemap() {
    
#if defined MAPCHOOSER
    
zl_vote_start()
    
#else
    
server_cmd("changelevel ^"%s^""boss_nextmap)
    
#endif
}


zombie_poison(Infector) {
    for (new 
isizeof g_ZombieBuffer; ++i)
        if (
g_ZombieBuffer[i] == Infector) return 1
    
return 0
}

boss_ability(num) {
    switch(
num) {
        case 
0: {
            
Anim(g_Alien31.8)
            
set_pev(g_Alienpev_movetypeMOVETYPE_PUSHSTEP)
            
set_pev(g_Alienpev_nextthinkget_gametime() + 0.3)
            
set_pev(g_Alienpev_num0)
            if (
pev(g_Alienpev_button) == 5
                
set_pev(g_Alienpev_abilityPHASE2)
            else 
                
set_pev(g_Alienpev_abilityCAST)
            
boss_clear()
        }
        case 
1: {
            switch (
pev(g_Alienpev_button)) {
                case 
0..5: return 0
                
case 6: return 7
                
case 7: return 8
                
case 8: { g_Ability[12] = trueboss_wave(); }
                case 
9: return 12
            
}
        }
    }
    return 
0
}

boss_zombie(hpspeeddamagenum) {
    --
num
    
for (new i<= num; ++i) {
        new 
Float:Origin[3]
        
pev(e_zombie[num random(10)], pev_originOrigin)
        
zl_zombie_create(Originhpspeeddamage)
    }
}

boss_damage(victimdamagecolor[3]) {
    
ExecuteHamB(Ham_TakeDamagevictim0victimfloat(damage), DMG_BLAST)
    
ScreenFade(victim60color1301)
    
ScreenShake(victim, ((1<<12) * 8), ((2<<12) * 7))
}

boss_color() {
    new 
ijba[6]
    for(
06i++)
        
a[i] = i
       
    
for(06i++) {
        
random(6)
        
a[i]
        
a[i] = a[j]
        
a[j] = b
    
}
    new 
randoms = (a[random(6)] + 1)
    
#if defined MESSAGE
    
switch (randoms) {
        case 
1ChatColor(0"!y%L"LANG_PLAYER"RED_YELLOW")
        case 
2ChatColor(0"!y%L"LANG_PLAYER"RED_BLUE")
        case 
3ChatColor(0"!y%L"LANG_PLAYER"RED_GREEN")
        case 
4ChatColor(0"!y%L"LANG_PLAYER"YELLOW_BLUE")
        case 
5ChatColor(0"!y%L"LANG_PLAYER"YELLOW_GREEN")
        case 
6ChatColor(0"!y%L"LANG_PLAYER"BLUE_GREEN")
    }
    
#endif
    
return randoms
}

boss_shockwave(CurrentColor) {
    new 
Float:Origin[3], Float:Vector[3], Float:Angle[3], DistLenbool:groundDamageColor[3], WidthRadius
    
switch (CurrentColor) {
        case 
1: { Dist 450ground trueDamage damage_sw_maximumColor = {25516510}, Width 35Radius 1000; }    /* RedYellow */
        
case 2: { Dist 221ground falseDamage damage_sw_minimumColor = {1390255}, Width 140Radius 364; }    /* RedBlue */
        
case 3: { Dist 450ground trueDamage damage_shockwaveColor = {150750}, Width 35Radius 1000; }        /* RedGreen */
        
case 4: { Dist 450ground falseDamage damage_sw_maximumColor = {02550}, Width 140Radius 1000; }    /* YellowBlue */
        
case 5: { Dist 450ground trueDamage damage_shockwaveColor = {1022550}, Width 35Radius 1000; }    /* YellowGreen */
        
case 6: { Dist 221ground falseDamage damage_sw_minimumColor = {48213200}, Width 140Radius 364; }     /* BlueGreen */
        // Phase2
        
case 7: { Dist 450ground trueDamage damage_sw_minimumColor = {2550247}, Width 35Radius 1000; }     /* Purple */
        
case 8: { Dist 450ground trueDamage damage_sw_minimumColor = {11914659}, Width 35Radius 1000; }     /* Green */
        // Wawe
        
case 9: { Dist 450ground trueDamage damage_sw_minimumColor = {25500}, Width 35Radius 1000; }     /* RED */
        
case 10: { Dist 450ground trueDamage damage_sw_minimumColor = {02550}, Width 35Radius 1000; }     /* GREEN */
        
case 11: { Dist 450ground falseDamage damage_sw_minimumColor = {00255}, Width 140Radius 1000; }     /* BLUE */
        
        
case 12: { Dist 450ground trueDamage damage_sw_minimumColor = {255255255}, Width 35Radius 1000; }     /* WHITE */
    
}
    for(new 
1<= get_maxplayers(); i++) {
        if (!
is_user_alive(i) || is_user_bot(i))
            continue
                            
        
Len Move(ig_Alien800.0VectorAngle)
            
        if (
Len Dist)
            continue 
            
        if (
ground) {
            if (
pev(ipev_flags) & FL_ONGROUND) {
                if (
CurrentColor == 9) {
                    
ExecuteHamB(Ham_Killedii2)
                    continue
                }
                if (
CurrentColor == 10)
                    
g_PlayerBuffer[i] = i
                boss_damage
(iDamageColor)
            }
        } else {
            
BeamFollow(ifloatround(player_speed_timefloatround_round), 10Color)
            
g_PlayerSpeed[i] = i
            boss_damage
(iDamageColor)
        }
                
    }
    
pev(g_Alienpev_originOrigin)
    
ShockWave(Origin5Widthfloat(Radius), Color)
}

boss_infect(num) {
    if (
g_Ability[2]) {
        new 
zombie_num
        
new ClassName[32]
        for (new 
isizeof e_zombie; ++i) {        
            
formatex(ClassNamecharsmax(ClassName), "NpcZombie_%d"i)
            
g_ZombieBuffer[i] = engfunc(EngFunc_FindEntityByStringg_ZombieBuffer[i], "classname"ClassName)
                
            if (!
pev_valid(g_ZombieBuffer[i]))
                continue
                
            if (
zombie_num >= num) {
                
g_ZombieBuffer[i] = -1
                
continue
            }
                
            
set_rendering(g_ZombieBuffer[i], kRenderFxGlowShell02550kRenderNormal20)
            
zombie_num++
        }
    }
    
    if (
g_Ability[4] || g_Ability[5]) {
        for(new 
1<= num; ++i) {
            
g_PlayerBuffer[i] = zl_player_random()
            
ScreenFade(g_PlayerBuffer[i], 00, {02550}, 804)
            
set_rendering(g_PlayerBuffer[i], kRenderFxGlowShell02550kRenderNormal20)
        }
    }
}

boss_purple(num) {
    static 
ijba[sizeof e_bomb]
    switch(
num) {
        case 
1: {
            
#if defined LASER
            
dllfunc(DLLFunc_Usee_multie_multi)
            
#endif
        
}
        case 
2: {
            
/* By PomanoB Thank you :) */
            
for(0sizeof e_bombi++)
                
a[i] = i
             
            
for(0sizeof e_bombi++) {
                
random(sizeof e_bomb)
                
a[i]
                
a[i] = a[j]
                
a[j] = b
            
}
            for (new 
i< (g_Ability[7] ? (mine_num) : (mine_num_last)); i++) {
                new 
Float:Origin[3]
                
pev(e_bomb[a[i]], pev_originOrigin)
                
Origin[2] += 1000.0
                
new mine engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
                
                if (!
pev_valid(mine))
                    continue
                
                
g_MineEnt[i] = -1
                g_MineExpl
[i] = -1
                g_MineEnt
[i] = mine
                g_MineExpl
[i] = e_bomb[a[i]]
                
engfunc(EngFunc_SetModelmineResource[7])
                
engfunc(EngFunc_SetSizemineFloat:{-5.0, -5.0, -1.0}, Float:{5.05.01.0})
                
engfunc(EngFunc_SetOriginmineOrigin)
                
set_pev(minepev_classname"Mine")
                
set_pev(minepev_solidSOLID_BBOX)
                
set_pev(minepev_movetypeMOVETYPE_TOSS)
                if (
g_Ability[7]) {
                    new 
Float:velocity[3]
                    
velocity[0] = random_float(0.0500.0)
                    
velocity[1] = random_float(0.0500.0)
                    
velocity[2] = random_float(0.0500.0)
                    
set_pev(minepev_avelocityvelocity)
                    
set_pev(minepev_nextthinkget_gametime() + 3.0)
                    
BeamFollow(mine15, {2550247})
                } else 
BeamFollow(mine14, {255255255})
            }
        }
    }
}

boss_wave() {
    static 
num
    num
++
    if (
num 3)
        
g_Ability[12] = false
    
return random_num(911)
}

boss_lighting() {
    if (!
g_Ability[14])
        return
        
    new 
Num
    
if (30 <= lighting_num <= 32)
        
Num get_maxplayers()
    else
        
Num = (lighting_num ? (lighting_num 2) : (get_maxplayers()))
        
    for(new 
1<= Numi++) {
        if (!
is_user_alive(i) || is_user_bot(i))
            continue
        
        new 
Float:Origin[3]
        new 
Lighting engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
        
pev(ipev_originOrigin)
        
Origin[2] -= 35.0
        engfunc
(EngFunc_SetModelLightingResource[8])
        
engfunc(EngFunc_SetOriginLightingOrigin)
        
set_pev(Lightingpev_nextthinkget_gametime() + 3.0)
        
set_pev(Lightingpev_classname"Lighting")
        
Origin[0] = 90.0
        Origin
[1] = random_float(0.0100.0)
        
Origin[2] = 0.0
        set_pev
(Lightingpev_anglesOrigin)
    }
}

boss_clear() {
    if (
g_Ability[2] || g_Ability[4] || g_Ability[5]) {
        for (new 
id 1id <= get_maxplayers(); id++) {
            if (!
is_user_alive(g_PlayerBuffer[id]))
                continue
            
            if (
g_Ability[2]) boss_damage(g_PlayerBuffer[id], poison_normal_damage, {02550})
            if (
g_Ability[4]) boss_damage(g_PlayerBuffer[id], poison_max_damage, {02550})
            if (
g_Ability[5]) boss_damage(g_PlayerBuffer[id], poison_min_damage, {02550})
            
            
set_rendering(id)
            
g_PlayerBuffer[id] = -1
        
}
        if (
g_Ability[2]) g_Ability[2] = false
        
if (g_Ability[4]) g_Ability[4] = false
        
if (g_Ability[5]) g_Ability[5] = false
    
}
    if (
g_Ability[0]) g_Ability[0] = false
    
if (g_Ability[2]) g_Ability[2] = false
    
if (g_Ability[3]) g_Ability[3] = false
    
if (g_Ability[7]) {
        for(new 
isizeof e_bomb; ++i) {
            if (
pev_valid(g_MineExpl[i])) { dllfunc(DLLFunc_Useg_MineExpl[i], g_MineExpl[i]); g_MineExpl[i] = -1; }
            if (
pev_valid(g_MineEnt[i]))  { engfunc(EngFunc_RemoveEntityg_MineEnt[i]); g_MineEnt[i] = -1; }
        }
        
#if defined LASER
        
dllfunc(DLLFunc_Usee_multie_multi)
        
#endif
        
g_Ability[7] = false
        boss_purple
(2)
    }
}

config_load() {
    if (
zl_boss_map() != 2)
        return
        
    new 
path[64]
    
get_localinfo("amxx_configsdir"pathcharsmax(path))
    
format(pathcharsmax(path), "%s/zl/%s"pathFILE_SETTING)
    
    if (!
file_exists(path)) {
        new 
error[100]
        
formatex(errorcharsmax(error), "Cannot load customization file %s!"path)
        
set_fail_state(error)
        return
    }
    
    new 
linedata[1024], key[64], value[960], section
    
new file fopen(path"rt")
    
    while (
file && !feof(file)) {
        
fgets(filelinedatacharsmax(linedata))
        
replace(linedatacharsmax(linedata), "^n""")
       
        if (!
linedata[0] || linedata[0] == '/') continue;
        if (
linedata[0] == '[') { section++; continue; }
       
        
strtok(linedatakeycharsmax(key), valuecharsmax(value), '=')
        
trim(key)
        
trim(value)
        
        switch (
section) { 
            case 
1: {
                if (
equal(key"HEALTH"))
                    
boss_hp str_to_num(value)
                else if (
equal(key"PREPARE"))
                    
prepare_time str_to_num(value)
                else if (
equal(key"SPEED"))
                    
boss_speed str_to_num(value)
                else if (
equal(key"BLOOD_COLOR"))
                    
blood_color str_to_num(value)
                
#if !defined MAPCHOOSER
                
else if (equal(key"NEXT_MAP"))
                    
copy(boss_nextmapcharsmax(boss_nextmap), value)
                
#endif
                
else if (equal(key"DMG_SW"))
                    
damage_shockwave str_to_num(value)
                else if (
equal(key"DMG_ATTACK"))
                    
damage_boss_attack str_to_num(value)
                else if (
equal(key"TIME_MAHADASH"))
                    
mahadash_time str_to_float(value)
            }
            case 
2: {
                if (
equal(key"ZM_NORMAL_NUM"))
                    
zombie_normal_num str_to_num(value)
                else if (
equal(key"ZM_NORMAL_HEALTH"))
                    
zombie_normal_health str_to_num(value)  
                else if (
equal(key"ZM_NORMAL_DAMAGE"))
                    
zombie_normal_damage str_to_num(value)
                else if (
equal(key"ZM_NORMAL_SPEED"))
                    
zombie_normal_speed str_to_num(value)
            }
            case 
3: {
                if (
equal(key"DMG_SW_MAX"))
                    
damage_sw_maximum str_to_num(value)
                else if (
equal(key"ZM_TIME_SPAWN"))
                    
zombie_spawn_time str_to_num(value)  
                else if (
equal(key"ZM_MAX_NUM"))
                    
zombie_max_num str_to_num(value)
                else if (
equal(key"ZM_MAX_HEALTH"))
                    
zombie_max_health str_to_num(value)
                else if (
equal(key"ZM_MAX_DAMAGE"))
                    
zombie_max_damage str_to_num(value)
                else if (
equal(key"ZM_MAX_SPEED"))
                    
zombie_max_speed str_to_num(value)
            }
            case 
4: {
                if (
equal(key"ZM_MIN_NUM"))
                    
zombie_min_num str_to_num(value)
                else if (
equal(key"ZM_MIN_HEALTH"))
                    
zombie_min_health str_to_num(value)  
                else if (
equal(key"ZM_MIN_DAMAGE"))
                    
zombie_min_damage str_to_num(value)
                else if (
equal(key"ZM_MIN_SPEED"))
                    
zombie_min_speed str_to_num(value)
                else if (
equal(key"PLAYER_MIN_SPEED"))
                    
player_min_speed str_to_num(value)
                else if (
equal(key"PLAYER_SPEED_TIME"))
                    
player_speed_time str_to_float(value)
            }
            case 
5: {
                if (
equal(key"POISON_RED_NUM"))
                    
poison_red_num str_to_num(value)
                else if (
equal(key"POISON_YELLOW_NUM"))
                    
poison_yellow_num str_to_num(value)  
                else if (
equal(key"POISON_BLUE_NUM"))
                    
poison_blue_num str_to_num(value)
                else if (
equal(key"POISON_MAX_DAMAGE"))
                    
poison_max_damage str_to_num(value)
                else if (
equal(key"POISON_NORMAL_DMG"))
                    
poison_normal_damage str_to_num(value)
                else if (
equal(key"POISON_MIN_DAMAGE"))
                    
poison_min_damage str_to_num(value)
            }
            case 
6: {
                if (
equal(key"ZOMBIE_PHASE_NUM"))
                    
zombie_phase_time str_to_num(value)
                else if (
equal(key"ZOMBIE_ADD_TIME"))
                    
zombie_add_time str_to_num(value)  
            }
            case 
7: {
                if (
equal(key"DAMAGE_LASER"))
                    
damage_laser str_to_num(value)
                else if (
equal(key"DAMAGE_MINE"))
                    
damage_mine str_to_num(value)  
                else if (
equal(key"MINE_TIME"))
                    
mine_time str_to_num(value)
                else if (
equal(key"MINE_NUM"))
                    
mine_num str_to_num(value)
                else if (
equal(key"MINE_NUM_LAST"))
                    
mine_num_last str_to_num(value)
            }
            case 
8: {
                if (
equal(key"DAMAGE_RETURN"))
                    
damage_return str_to_float(value)
                else if (
equal(key"PROTECT_TIME"))
                    
damage_time str_to_num(value)  
            }
            case 
9: {
                if (
equal(key"BLUE_SPEED_TIME"))
                    
blue_speed_time str_to_num(value)
                else if (
equal(key"BLUE_SPEED_PLAYER"))
                    
blue_speed_player str_to_num(value)  
                else if (
equal(key"GREEN_TIME"))
                    
green_gravity_time str_to_num(value)  
            }
            case 
10: {
                if (
equal(key"LIGHTING_NUM"))
                    
lighting_num str_to_num(value)
                else if (
equal(key"LIGHTING_COUNT"))
                    
lighting_count str_to_num(value)  
                else if (
equal(key"LIGHTING_DAMAGE"))
                    
lighting_damage str_to_num(value)  
            }
        }
    }
    if (
filefclose(file)
}

/*========================
// STOCK 
========================*/

stock bool:TraceCheckCollides(Float:origin[3], const Float:BOUNDS) {
    new 
Float:traceEnds[8][3], Float:traceHit[3], hitEnt
    traceEnds
[0][0] = origin[0] - BOUNDS
    traceEnds
[0][1] = origin[1] - BOUNDS
    traceEnds
[0][2] = origin[2] - BOUNDS

    traceEnds
[1][0] = origin[0] - BOUNDS
    traceEnds
[1][1] = origin[1] - BOUNDS
    traceEnds
[1][2] = origin[2] + BOUNDS

    traceEnds
[2][0] = origin[0] + BOUNDS
    traceEnds
[2][1] = origin[1] - BOUNDS
    traceEnds
[2][2] = origin[2] + BOUNDS

    traceEnds
[3][0] = origin[0] + BOUNDS
    traceEnds
[3][1] = origin[1] - BOUNDS
    traceEnds
[3][2] = origin[2] - BOUNDS
     
    traceEnds
[4][0] = origin[0] - BOUNDS
    traceEnds
[4][1] = origin[1] + BOUNDS
    traceEnds
[4][2] = origin[2] - BOUNDS

    traceEnds
[5][0] = origin[0] - BOUNDS
    traceEnds
[5][1] = origin[1] + BOUNDS
    traceEnds
[5][2] = origin[2] + BOUNDS

    traceEnds
[6][0] = origin[0] + BOUNDS
    traceEnds
[6][1] = origin[1] + BOUNDS
    traceEnds
[6][2] = origin[2] + BOUNDS

    traceEnds
[7][0] = origin[0] + BOUNDS
    traceEnds
[7][1] = origin[1] + BOUNDS
    traceEnds
[7][2] = origin[2] - BOUNDS

    
for (new 08i++) {
        if (
point_contents(traceEnds[i]) != CONTENTS_EMPTY)
            return 
true

        hitEnt 
trace_line(0origintraceEnds[i], traceHit)
        if (
hitEnt != 0) return true
        
        
for (new 03j++) {
            if (
traceEnds[i][j] != traceHit[j])
                return 
true
        
}
    }
    return 
false
}

stock Move(StartEndFloat:speedFloat:Velocity[], Float:Angles[]) {
    new 
Float:Origin[3], Float:Origin2[3], Float:Angle[3], Float:Vector[3], Float:Len
    pev
(Startpev_originOrigin2)
    
pev(Endpev_originOrigin)
    
xs_vec_sub(OriginOrigin2Vector)
    
Len xs_vec_len(Vector)
    
vector_to_angle(VectorAngle)
    
Angles[0] = 0.0
    Angles
[1] = Angle[1]
    
Angles[2] = 0.0
    xs_vec_normalize
(VectorVector)
    
xs_vec_mul_scalar(VectorspeedVelocity)
    return 
floatround(Lenfloatround_round)
}

stock PlayerHp(hp) {
    new 
CountHp
    
for(new id 1id <= get_maxplayers(); id++)
        if (
is_user_connected(id) && !is_user_bot(id))
            
Count++
            
    
Hp hp Count
    
return Hp
}

stock Anim(entsequenceFloat:speed) {        
    
set_pev(entpev_sequencesequence)
    
set_pev(entpev_animtimehalflife_time())
    
set_pev(entpev_frameratespeed)
}

stock Sound(EntSoundtype) {
    if (
type)
        
client_cmd(Ent"spk ^"%s^""SoundList[Sound]) 
    else
        
engfunc(EngFunc_EmitSoundEntCHAN_AUTOSoundList[Sound], VOL_NORMATTN_NORM0PITCH_NORM)
}

stock ScreenFade(idTimerFadeTimeColors[3], Alphatype) {
    if(
id) if(!is_user_connected(id)) return

    if (
Timer 0xFFFFTimer 0xFFFF
    
if (FadeTime <= 0FadeTime 4
    
    message_begin
(id MSG_ONE_UNRELIABLE MSG_BROADCASTget_user_msgid("ScreenFade"), _id);
    
write_short(Timer << 12)
    
write_short(FadeTime << 12)
    switch (
type) {
        case 
1write_short(0x0000)        // IN ( FFADE_IN )
        
case 2write_short(0x0001)        // OUT ( FFADE_OUT )
        
case 3write_short(0x0002)        // MODULATE ( FFADE_MODULATE )
        
case 4write_short(0x0004)        // STAYOUT ( FFADE_STAYOUT )
        
default: write_short(0x0001)
    }
    
write_byte(Colors[0])
    
write_byte(Colors[1])
    
write_byte(Colors[2])
    
write_byte(Alpha)
    
message_end()
}

stock ScreenShake(idduration17frequency) {
    if(
id) if(!is_user_connected(id)) return
    
    
message_begin(id MSG_ONE_UNRELIABLE MSG_ALLget_user_msgid("ScreenShake"), _id id 0);
    
write_short(1<<14)
    
write_short(duration17)
    
write_short(frequency)
    
message_end()
}

stock ShockWave(Float:Origin[3], LifeWidthFloat:RadiusColor[3]) {
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYOrigin0)
    
write_byte(TE_BEAMCYLINDER// TE id
    
engfunc(EngFunc_WriteCoordOrigin[0]) // x
    
engfunc(EngFunc_WriteCoordOrigin[1]) // y
    
engfunc(EngFunc_WriteCoordOrigin[2]-40.0// z
    
engfunc(EngFunc_WriteCoordOrigin[0]) // x axis
    
engfunc(EngFunc_WriteCoordOrigin[1]) // y axis
    
engfunc(EngFunc_WriteCoordOrigin[2]+Radius// z axis
    
write_short(g_Resource[4]) // sprite
    
write_byte(0// startframe
    
write_byte(0// framerate
    
write_byte(Life// life (4)
    
write_byte(Width// width (20)
    
write_byte(0// noise
    
write_byte(Color[0]) // red
    
write_byte(Color[1]) // green
    
write_byte(Color[2]) // blue
    
write_byte(255// brightness
    
write_byte(0// speed
    
message_end()
}

stock Light(EntTimeRadiusRateColors[3]) {
    if(!
pev_valid(Ent)) return
    new 
Float:Origin[3]; pev(Entpev_originOrigin)
        
    
engfunc(EngFunc_MessageBeginMSG_PASSVC_TEMPENTITYOrigin0)
    
write_byte(TE_DLIGHT// TE id
    
engfunc(EngFunc_WriteCoordOrigin[0]) // x
    
engfunc(EngFunc_WriteCoordOrigin[1]) // y
    
engfunc(EngFunc_WriteCoordOrigin[2]) // z
    
write_byte(Radius// radius
    
write_byte(Colors[0]) // r
    
write_byte(Colors[1]) // g
    
write_byte(Colors[2]) // b
    
write_byte(10 Time//life
    
write_byte(Rate//decay rate
    
message_end()
}

stock BeamFollow(idLifeSizeColor[3]) {
    if (
is_user_alive(id) || pev_valid(id)) {
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)     // TE_BEAMFOLLOW ( msg #22) create a line of decaying beam segments until entity stops moving
    
write_byte(TE_BEAMFOLLOW)                // msg id
    
write_short(id)                // short (entity:attachment to follow)
    
write_short(g_Resource[6])         // short (sprite index)
    
write_byte(Life 10)                // byte (life in 0.1's)
    
write_byte(Size)                // byte (line width in 0.1's)
    
write_byte(Color[0])                // byte (color)
    
write_byte(Color[1])                // byte (color)
    
write_byte(Color[2])                // byte (color)
    
write_byte(255)                // byte (brightness)
    
message_end()
}
}

stock BeamKill(id) {
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_KILLBEAM)
    
write_short(id)
    
message_end()
}

stock ChatColor(const id, const input[], any:...) {
    new 
count 1players[32]
    static 
msg[191]
    
vformat(msg190input3)
    
replace_all(msg190"!g""^4"// Green Color
    
replace_all(msg190"!y""^1"// Default Color
    
replace_all(msg190"!team""^3"// Team Color
    
if (idplayers[0] = id; else get_players(playerscount"ch"); {
        for (new 
0counti++) {
            if (
is_user_connected(players[i])) {
                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i])
                
write_byte(players[i]);
                
write_string(msg);
                
message_end();
            }
        }
    }
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/ 
zl_noroundend with your cvar.
PHP Code:
//-----------
// [ZL] NoRoundEnd
//
// NPC Forum
// http://zombielite.Ru/
//--
// By Alexander.3
// http://Alexander3.Ru/

#include < amxmodx >

#define NAME             "[ZL] NoRoundEnd"
#define VERSION            "1.0"
#define AUTHOR            "Alexander.3"

native zl_boss_map()

public 
plugin_init() {
    
register_plugin(NAMEVERSIONAUTHOR)
    
    if (
zl_boss_map()) {
        
set_cvar_num("ir_block_roundend"1)
    } else {
        
set_cvar_num("ir_block_roundend"0)
        
pause("ad")
    }
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/ 
Modules:

Code:
//Active
fun
engine
fakemeta
nvault
cstrike
csx
hamsandwich
cs_ham_bots_api
orpheu

//Disabled
;sqlite
;mysql
;geoip
;sockets
;regex
__________________
Contact: Steam
Videos: Youtube

Last edited by SkumTomteN; 04-18-2014 at 16:34.
SkumTomteN is offline
bat
Veteran Member
Join Date: Jul 2012
Old 04-19-2014 , 03:17   Re: zl_alienboss [round ends.. for no reason][Solved]
Reply With Quote #2

Contact author plugin's for help.
__________________
bat is offline
Send a message via Skype™ to bat
SkumTomteN
Veteran Member
Join Date: Oct 2013
Location: Asgard
Old 04-19-2014 , 13:25   Re: zl_alienboss [round ends.. for no reason][Solved]
Reply With Quote #3

Quote:
Originally Posted by bat View Post
Contact author plugin's for help.
Already solved, and no help from the author, because this is a leaked plugin, and it costs.
__________________
Contact: Steam
Videos: Youtube
SkumTomteN 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 04:54.


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