LCS ServerList CS2 STATS Premium LCS LCS Resources CS 1.6 Tutorials Join Staff TeamSpeak DNS Request
0
Awards
LV
0
 
0
Likes
2

Messages

Hilaro22

Member
Membru LCS
Joined
May 6, 2026
Reaction score
0
Points
1
Credits
19
Salutare! Am o problemă, lipsește din plugin funcția când schimbi harta pentru boss să oprească infecția zm și sa seteze timpul mai mare la runda, mă poate ajuta cineva?
Code:
Босс скачан с сайта Zombie-Mod.ru

#include <amxmodx>

#include <amxmisc>

#include <engine>

#include <cstrike>

#include <hamsandwich>

#include <fakemeta>

#include <fun>

#include <zombieplague>



#define PLUGIN "[ZS] Alien Boss"

#define VERSION "3.0"

#define AUTHOR "Remake muxaz"



#define ANIM_DUMMY 0

#define ANIM_DEATH 1

#define ANIM_IDLE 2

#define ANIM_WALK 3

#define ANIM_RUN 4

#define ANIM_SHOCKWAVE 5

#define ANIM_JUSTICESWING 6

#define ANIM_MAHADASH 7



#define ALIEN_HEALTH 100000.0 // Жизнь Босса

//#define ALIEN_BONUS_KILL 5000 // Бонус для убийства Босса

#define ALIEN_ATTACK_DELAY 1.0 // Промежуток между атаками Босса

#define ALIEN_ATTACK_DISTANCE 160.0 // Дистанция для атаки Босса

#define ALIEN_DASH_DISTANCE 200.0 // Дистанция на каторую Босс прыгает



#define ALIEN_JUMP_AFTER_SWING_COUNT 4 // Отсчет между скиллами



#define ALIEN_TASK 231211

#define ALIEN_TASK1 113713

#define ALIEN_TASK2 123714

#define ALIEN_TASK3 133715

#define ALIEN_TASK4 143716



// Agression one - 1-ый уровенить агресси

#define ALIEN_SPEED_AG1 220 // Скорость Босса при 1 агрессии

#define ALIEN_DAMAGE_ATTACK_AG1 100.0 // Урон Босса при 1 агрессии

#define ALIEN_DASH_DAMAGE_AG1 100 // Урон Босса при использование скилла в 1 агрессии

#define ALIEN_SHOCK_SCREEN_RADIUS_AGRES1 800 // Радиус тряски и урона при волне в 1 агрессии

#define ALIEN_SHOCK_SCREEN_DAMAGE_AGRES1 50 // Урон от волны в 1 агрессии



// Agression two - 2-ой уровень агресси когда мень 50 % жизни у алиена

#define ALIEN_SPEED_AG2 260 // Скорость Босса при 2 агрессии

#define ALIEN_DAMAGE_ATTACK_AG2 100.0 // Урон Босса при 2 агрессии

#define ALIEN_DASH_DAMAGE_AG2 150 // Урон Босса при использование скилла в 2 агрессии

#define ALIEN_SHOCK_SCREEN_RADIUS_AGRES2 500 // Радиус тряски и урона при волне в 1 агрессии

#define ALIEN_SHOCK_SCREEN_DAMAGE_AGRES2 200 // Урон от волны в 2 агрессии



#define npc_classname "zs_alien"

#define npc_model "models/zombie_plague/boss_alien.mdl" // Модель Босса

#define npc_sprite "sprites/zombie_plague/boss_health.spr" // Спрайт жизни Босса

#define SPRITE_Z 250 // Высота спрайта жизни



new const g_AlienSound[][] =

{

"zombie_plague/boss_death.wav",

"zombie_plague/boss_dash.wav",

"zombie_plague/boss_swing.wav",

"zombie_plague/boss_shokwave.wav"

}



new const g_CountSound[][] =

{

"zombie_plague/vox/1.wav",

"zombie_plague/vox/2.wav",

"zombie_plague/vox/3.wav",

"zombie_plague/vox/4.wav",

"zombie_plague/vox/5.wav",

"zombie_plague/vox/6.wav",

"zombie_plague/vox/7.wav",

"zombie_plague/vox/8.wav",

"zombie_plague/vox/9.wav",

"zombie_plague/vox/10.wav"

}



enum

{

FM_CS_TEAM_UNASSIGNED = 0,

FM_CS_TEAM_T,

FM_CS_TEAM_CT,

FM_CS_TEAM_SPECTATOR

}



new Float:g_dmg[512]

new Float:g_distance[512]

new Float:g_lastat[512]

new Float:g_atdelay[512]

new g_speed[512]

new g_moves[512]

new g_alive[512]

new g_target[512]

//new g_reward[512]

new g_animrun[512]

new g_exprew[512]

new g_animattack[512]

new g_ability

new g_timer

new g_game_start

new g_can_jump

new g_maxplayers

new g_pBeam

new g_pSprite

new g_jump_count[512]

new bool:start_swing[512]

new bool:start_knock[512]

new bool:g_bAlienLevel

new spr_blood_drop, spr_blood_spray

new g_screenshake

new const UNIT_SECOND = (1<<12)



// HoLLyWooD

#define TASK_CREATE_NPC 123124

#define ALIEN_CREATE_TASK 21341

new Float:g_fUserDamage[33]

new g_iRandomSkills = ALIEN_JUMP_AFTER_SWING_COUNT;

new bool:g_bChangeLevel = false;



// Command for changelevel

new const g_sVoteCommand[] = "amx_map de_cityrush";



new msgID_deathMsg, msgID_sayText;

new g_szName[33][32]



public plugin_init()

{

register_plugin(PLUGIN, VERSION, AUTHOR)

a

RegisterHam(Ham_Killed, "info_target", "npc_killed");

RegisterHam(Ham_Killed, "player", "player_killed");

RegisterHam(Ham_Think, "info_target", "npc_think");

RegisterHam(Ham_TraceAttack, "info_target", "npc_traceattack");

RegisterHam(Ham_TakeDamage, "info_target", "npc_takedamage")



register_forward(FM_PlayerPreThink, "fw_PlayerPreThink");

register_forward(FM_UpdateClientData, "fwd_UpdateClientData", 1);



register_logevent("round_end", 2, "1=Round_End")

register_event("DeathMsg", "event_death", "ae")



register_clcmd("+attack", "block", g_timer)



g_screenshake = get_user_msgid("ScreenShake")



g_maxplayers = get_maxplayers()



g_pSprite = create_entity("info_target");



entity_set_model(g_pSprite, npc_sprite);



entity_set_int(g_pSprite, EV_INT_rendermode, kRenderTransTexture);

entity_set_float(g_pSprite, EV_FL_renderamt, 0.0);



msgID_deathMsg = get_user_msgid("DeathMsg");

msgID_sayText = get_user_msgid("SayText");



register_message(msgID_deathMsg, "msg_deathMsg")

}



public plugin_precache()

{

new mapname[32]

get_mapname(mapname, charsmax(mapname))



if(equali(mapname, "zp_boss_city"))

{

set_task(15.0, "begin_create_npc", TASK_CREATE_NPC);

}else{

pause("ad");

}



precache_model(npc_model)

precache_model(npc_sprite)



new i;

for(i = 0 ; i < sizeof g_CountSound ; i++)

precache_sound(g_CountSound);



for(i = 0 ; i < sizeof g_AlienSound ; i++)

precache_sound(g_AlienSound);



spr_blood_drop = precache_model("sprites/blood.spr")

spr_blood_spray = precache_model("sprites/bloodspray.spr")

g_pBeam = precache_model( "sprites/shockwave.spr" )

}



public block(id)

return PLUGIN_HANDLED;



public begin_create_npc(){

spawn_alien();

}



public client_connect(id){

g_fUserDamage[id] = 0.0

}



public spawn_alien()

{

set_task(1.0, "count_start", ALIEN_TASK)

g_timer = 15 //26



set_task(16.0, "create_alien", ALIEN_CREATE_TASK);

}



public create_alien()

{

new Float:origin[3];



// Origins for center map

origin[0] = -27.0

origin[0] = 24.0

origin[2] = 460.0



origin[1] += 50.0



new ent = npc_alien_spawn(1, 1);



set_pev(ent, pev_origin, origin);



start_swing[ent] = false

start_knock[ent] = false

g_ability = false

g_game_start = false

g_jump_count[ent] = 0



origin[2] += SPRITE_Z;



entity_set_origin(g_pSprite, origin);



entity_set_int(g_pSprite, EV_INT_rendermode, kRenderNormal);

entity_set_float(g_pSprite, EV_FL_renderamt, 16.0);



entity_set_float(g_pSprite, EV_FL_frame, 100.0);



g_game_start = true;

}



public npc_alien_spawn(anim_run, exprew)

{

new ent = create_entity("info_target");



if(!ent) return 0;



entity_set_string(ent, EV_SZ_classname, npc_classname);

entity_set_model(ent, npc_model);



entity_set_int(ent, EV_INT_iuser4, 0);

entity_set_int(ent, EV_INT_solid, SOLID_BBOX);

entity_set_int(ent, EV_INT_movetype, MOVETYPE_PUSHSTEP);



entity_set_float(ent, EV_FL_takedamage, 1.0);

entity_set_float(ent, EV_FL_gravity, 1.0);

entity_set_float(ent, EV_FL_health, ALIEN_HEALTH);

entity_set_float(ent, EV_FL_animtime, get_gametime());

entity_set_float(ent, EV_FL_nextthink, get_gametime() + 1.0)



Util_PlayAnimation(ent, ANIM_SHOCKWAVE);



new Float: maxs[3] = { 16.0, 16.0, 60.0 }

new Float: mins[3] = {-16.0, -16.0, -36.0}



entity_set_size(ent, mins, maxs)



g_alive[ent] = 1

g_dmg[ent] = ALIEN_DAMAGE_ATTACK_AG1

g_animrun[ent] = ANIM_RUN

//g_reward[ent] = ALIEN_BONUS_KILL

g_speed[ent] = ALIEN_SPEED_AG1

g_distance[ent] = ALIEN_ATTACK_DISTANCE

g_atdelay[ent] = ALIEN_ATTACK_DELAY

g_lastat[ent] = 0.0

g_exprew[ent] = exprew

g_target[ent] = find_closes_enemy(ent)



set_task(5.0, "update_target", ent)



return ent;

}



public npc_think(ent)

{

if(!is_valid_ent(ent))

return;



static className[32], animation;

animation = 0;

entity_get_string(ent, EV_SZ_classname, className, charsmax(className))



if(!equali(className, npc_classname))

return;



if (!g_bAlienLevel)

if (entity_get_float(ent, EV_FL_health) <= (ALIEN_HEALTH / 2.0))

{

g_bAlienLevel = true;



g_speed[ent] = ALIEN_SPEED_AG2;

g_dmg[ent] = ALIEN_DAMAGE_ATTACK_AG2;

}



if(g_alive[ent])

{

new Float:vecOrigin[3];



entity_get_vector(ent, EV_VEC_origin, vecOrigin);



vecOrigin[2] += SPRITE_Z;



entity_set_origin(g_pSprite, vecOrigin);



if(g_game_start)

{

new Float:velocity[3]

pev(ent,pev_velocity,velocity)

velocity[0] += velocity[1] + velocity[2]



if(!is_user_alive(g_target[ent]))

g_target[ent] = find_closes_enemy(ent)



new Float:angle[3], Float:zmaim[3]

pev(g_target[ent], pev_origin, zmaim)

aim_at_origin(ent, zmaim, angle)

angle[0] = 0.0

entity_set_vector(ent, EV_VEC_angles, angle)



if(g_target[ent])

{

new Float:origins[3]

pev(ent, pev_origin, origins)

new Float:flDistance = get_distance_f(origins, zmaim)



if(flDistance> 170.0)

{

if(g_moves[ent])

{

zmaim[0] += random_num(1, -1) * 80.0

zmaim[1] += random_num(1, -1) * 80.0

g_moves[ent] -= 1

}

else if(!g_moves[ent] && random_num(1, 5) == 1)

g_moves[ent] = 20

}

if(flDistance <= ALIEN_ATTACK_DISTANCE) g_moves[ent] = 0

if(flDistance <= g_distance[ent] && get_gametime() - g_lastat[ent] > g_atdelay[ent])

{

if(!start_swing[ent] && !start_knock[ent])

{

g_lastat[ent] = get_gametime()



new anim = ANIM_JUSTICESWING



Util_PlayAnimation(ent, ANIM_IDLE)

Util_PlayAnimation(ent, anim)



ExecuteHamB(Ham_TakeDamage, g_target[ent] , 0, 0, g_dmg[ent], DMG_BULLET);



set_task(2.0, "reset_swing", ent + ALIEN_TASK3)

start_swing[ent] = true

g_animattack[ent] = anim



if(anim == ANIM_JUSTICESWING)

emit_sound(ent, CHAN_VOICE, g_AlienSound[2], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)



if(g_jump_count[ent] < g_iRandomSkills)

g_jump_count[ent]++

}

}

else

{

new Float:frames

if(g_animattack[ent] == ANIM_JUSTICESWING) frames = 1.5



if(get_gametime() - g_lastat[ent] > frames)

{

if(flDistance <= g_distance[ent])

Util_PlayAnimation(ent, ANIM_IDLE)

else

{

if(g_jump_count[ent] == g_iRandomSkills && flDistance <= 400.0)

{

// change skill delay

g_iRandomSkills = random_num(2,4);



if(!task_exists(ent + ALIEN_TASK2) && !task_exists(ent + ALIEN_TASK1))

{

new task_args[4]

task_args[0] = ent

task_args[1] = floatround(zmaim[0]*100000, floatround_floor)

task_args[2] = floatround(zmaim[1]*100000, floatround_floor)

task_args[3] = floatround(zmaim[2]*100000, floatround_floor)



if(!g_ability)

{

g_ability = true

Util_PlayAnimation(ent, ANIM_MAHADASH)

emit_sound(ent, CHAN_VOICE, g_AlienSound[1], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)



set_task(0.8, "go_jump", ent + ALIEN_TASK1, task_args, 4)



animation = 1;

}

else

{

if (entity_get_float(ent, EV_FL_health) > (ALIEN_HEALTH / 2))

{

server_print("--------- 1");

Util_PlayAnimation(ent, ANIM_SHOCKWAVE)

start_knock[ent] = true

set_task(2.1, "go_knock_agres1", ent + ALIEN_TASK1, task_args, 4)

}

else if (entity_get_float(ent, EV_FL_health) <= (ALIEN_HEALTH / 2))

{

server_print("--------- 2");

Util_PlayAnimation(ent, ANIM_SHOCKWAVE)

start_knock[ent] = true

set_task(2.1, "go_knock_agres2", ent + ALIEN_TASK1, task_args, 4)

}



animation = 2;

}

}

}

else

{

ent_move_to(ent, zmaim, g_speed[ent])

Util_PlayAnimation(ent, g_animrun[ent])

}

}

}

}

}

if(!g_target[ent]) Util_PlayAnimation(ent, ANIM_IDLE)

}

else if(g_can_jump)

Util_PlayAnimation(ent, ANIM_IDLE)

else

Util_PlayAnimation(ent, ANIM_IDLE)

if(animation == 1)

entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.8);

else if(animation == 2)

entity_set_float(ent, EV_FL_nextthink, get_gametime() + 2.1);

else

entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.01);

}

}



public check_dash_damage(ent, id)

{

ent = ent - ALIEN_TASK4



for(new i = 0; i < g_maxplayers; i++)

{

if(is_user_alive(i))

{

new Float:range_distance = entity_range(ent, i)

new health = get_user_health(i)



if(ALIEN_DASH_DISTANCE < floatround(range_distance) < ALIEN_ATTACK_DISTANCE)

{

if (g_bAlienLevel)

{

if(health - ALIEN_DASH_DAMAGE_AG2 > 0)

set_user_health(i, health - ALIEN_DASH_DAMAGE_AG2)

else

{

user_silentkill(i)

message_begin(MSG_ALL, get_user_msgid("DeathMsg"))

write_byte(ent)

write_byte(i)

write_byte(0)

write_string("Boss Alien")

message_end()

}

}

else

{

if(health - ALIEN_DASH_DAMAGE_AG1 > 0)

set_user_health(i, health - ALIEN_DASH_DAMAGE_AG1)

else

{

user_silentkill(i)

message_begin(MSG_ALL, get_user_msgid("DeathMsg"))

write_byte(ent)

write_byte(i)

write_byte(0)

write_string("Boss Alien")

message_end()

}

}

}

}

}

}



public go_knock_agres1(args[], id)

{

new ent = args[0]

new Float:origin[3]



pev(ent,pev_origin,origin)

message_begin(MSG_BROADCAST, SVC_TEMPENTITY );

write_byte(TE_BEAMCYLINDER)

write_coord(floatround(origin[0]))

write_coord(floatround(origin[1]))

write_coord(floatround(origin[2])-16)

write_coord(floatround(origin[0]))

write_coord(floatround(origin[1]))

write_coord(floatround(0.0))

write_short(g_pBeam) // sprite

write_byte(0) // startframe

write_byte(0) // framerate

write_byte(25) // life

write_byte(60) // width

write_byte(0) // noise

write_byte(255) // red

write_byte(255) // green

write_byte(0) // blue

write_byte(200) // brightness

write_byte(0) // speed

message_end()



emit_sound(ent, CHAN_VOICE, g_AlienSound[3], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)



set_task(1.0, "reset_knock", ent + ALIEN_TASK2)



static Float:flOrigin[3] , Float:flDistance , Float:flSpeed

for(new iVictim=1;iVictim <= 32;iVictim++)

{

new health = get_user_health(iVictim)



if(is_user_connected(iVictim) && is_user_alive(iVictim))

{

pev(iVictim, pev_origin, flOrigin)

flDistance = get_distance_f ( origin, flOrigin )



if(flDistance <= ALIEN_SHOCK_SCREEN_RADIUS_AGRES1)

{

ScreenShake(iVictim)



flSpeed = 1400.0



static Float:flNewSpeed

flNewSpeed = flSpeed * ( 1.0 - ( flDistance / 1000.0 ) )

set_user_health(iVictim, health - ALIEN_SHOCK_SCREEN_DAMAGE_AGRES1)



static Float:flVelocity [ 3 ]

get_speed_vector ( origin, flOrigin, flNewSpeed, flVelocity )



set_pev ( iVictim, pev_velocity,flVelocity )

}

}

}

}



public go_knock_agres2(args[], id)

{

new ent = args[0]

new Float:origin[3]



pev(ent,pev_origin,origin)

message_begin(MSG_BROADCAST, SVC_TEMPENTITY );

write_byte(TE_BEAMCYLINDER)

write_coord(floatround(origin[0]))

write_coord(floatround(origin[1]))

write_coord(floatround(origin[2])-16)

write_coord(floatround(origin[0]))

write_coord(floatround(origin[1]))

write_coord(floatround(0.0))

write_short(g_pBeam) // sprite

write_byte(0) // startframe

write_byte(0) // framerate

write_byte(10) // life

write_byte(60) // width

write_byte(0) // noise

write_byte(250) // red

write_byte(0) // green

write_byte(0) // blue

write_byte(200) // brightness

write_byte(0) // speed

message_end()



emit_sound(ent, CHAN_VOICE, g_AlienSound[3], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)



set_task(1.0, "reset_knock", ent + ALIEN_TASK2)



static Float:flOrigin[3] , Float:flDistance , Float:flSpeed

for(new iVictim=1;iVictim <= 32;iVictim++)

{

new health = get_user_health(iVictim)



if(is_user_connected(iVictim) && is_user_alive(iVictim))

{

pev(iVictim, pev_origin, flOrigin)

flDistance = get_distance_f ( origin, flOrigin )



if(flDistance <= ALIEN_SHOCK_SCREEN_RADIUS_AGRES2)

{

ScreenShake(iVictim)



flSpeed = 1400.0



static Float:flNewSpeed

flNewSpeed = flSpeed * ( 1.0 - ( flDistance / 1000.0 ) )

set_user_health(iVictim, health - ALIEN_SHOCK_SCREEN_DAMAGE_AGRES2)



static Float:flVelocity [ 3 ]

get_speed_vector ( origin, flOrigin, flNewSpeed, flVelocity )



set_pev ( iVictim, pev_velocity,flVelocity )

}

}

}

}



public ScreenShake(id)

{

if(!is_user_alive(id))

return;



message_begin(MSG_ONE_UNRELIABLE, g_screenshake, _, id)

write_short(UNIT_SECOND*7) // amplitude

write_short(UNIT_SECOND*5) // duration

write_short(UNIT_SECOND*15) // frequency

message_end()

}



public reset_knock(ent)

{

ent = ent - ALIEN_TASK2



start_knock[ent] = false

g_ability = false

g_jump_count[ent] = 0

}



public go_jump(args[])

{

new ent = args[0]

new Float:zmaim[3]



zmaim[0]=float(args[1]/100000)

zmaim[1]=float(args[2]/100000)

zmaim[2]=float(args[3]/100000)



ent_jump_to(ent, zmaim, 1700)



g_can_jump = true



set_task(0.6, "check_dash_damage", ent + ALIEN_TASK4)

set_task(1.4, "reset_jump", ent + ALIEN_TASK2)

}



public reset_swing(ent)

{

ent = ent - ALIEN_TASK3

start_swing[ent] = false

}



public reset_jump(ent)

{

ent = ent - ALIEN_TASK2

g_jump_count[ent] = 0

set_task(0.5, "reset_time", ent + 55555)

}



public reset_time()

g_can_jump = false



public zp_user_infected_pre(id, inflector, nemesis){

zp_disinfect_user(id, 1);

return ZP_PLUGIN_HANDLED;

}



public zp_user_infect_attempt(id, inflector, nemesis){

zp_disinfect_user(id, 1);

return ZP_PLUGIN_HANDLED;

}



public npc_takedamage(ent, inflictor, attacker, Float:damage, damage_type)

{

if(!is_user_alive(attacker) || !is_valid_ent(ent))

return;



new className[32];

entity_get_string(ent, EV_SZ_classname, className, charsmax(className))



if(!equali(className, npc_classname) || !g_alive[ent])

return;



g_fUserDamage[attacker] += damage;



//client_print(attacker, print_center, "%f" , g_fUserDamage[attacker]);

if(g_fUserDamage[attacker] >= 2000){

g_fUserDamage[attacker] -= 2000;



zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker)+1);

}



entity_set_float(g_pSprite, EV_FL_frame, entity_get_float(ent, EV_FL_health) / (ALIEN_HEALTH / 100.0));

}



public fw_PlayerPreThink(id)

{

if(cs_get_user_team(id) == CS_TEAM_T)

cs_set_user_team(id, CS_TEAM_CT)

}



public force_team(id)

{

engclient_cmd(id, "jointeam", "2", "3")

}



public npc_traceattack(ent, attacker, Float: damage, Float: direction[3], trace, damageBits)

{

if(!is_valid_ent(ent) || !g_alive[ent])

return;



new className[32];

entity_get_string(ent, EV_SZ_classname, className, charsmax(className))



if(!equali(className, npc_classname) || !g_alive[ent])

return;



new Float: end[3]

get_tr2(trace, TR_vecEndPos, end);



message_begin(MSG_BROADCAST, SVC_TEMPENTITY)

write_byte(TE_BLOODSPRITE)

engfunc(EngFunc_WriteCoord, end[0])

engfunc(EngFunc_WriteCoord, end[1])

engfunc(EngFunc_WriteCoord, end[2])

write_short(spr_blood_spray)

write_short(spr_blood_drop)

write_byte(247)

write_byte(random_num(5, 10))

message_end()

}



public player_killed(ent, attacker)

{

for(new id=1;id<g_maxplayers;id++)

{

if(is_user_alive(id))

return;

}



begin_changelevel();

client_print(0, print_chat, "Все люди умерли! Смена карты началась!");

}



public npc_killed(ent, attacker)

{

new className[32];

entity_get_string(ent, EV_SZ_classname, className, charsmax(className))



if(!equali(className, npc_classname) || !g_alive[ent])

return HAM_IGNORED;



g_alive[ent] = 0

Util_PlayAnimation(ent, ANIM_DEATH);

emit_sound(ent, CHAN_VOICE, g_AlienSound[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

remove_task(ent)

set_pev(ent, pev_solid, SOLID_NOT)

set_task(4.5, "npc_remove", ent)



entity_set_int(ent, EV_INT_iuser4, 1);



//cs_set_user_money(attacker, cs_get_user_money(attacker) + g_reward[ent])



zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker) + random_num(40,60));



entity_set_int(g_pSprite, EV_INT_rendermode, kRenderTransTexture);

entity_set_float(g_pSprite, EV_FL_renderamt, 0.0);



begin_changelevel();



client_print(0, print_chat, "Босс умер! Смена карты началась!");



return HAM_SUPERCEDE;

}



public round_end()

{

remove_task(ALIEN_TASK)

remove_task(ALIEN_TASK1)

remove_task(ALIEN_TASK2)

remove_task(ALIEN_TASK3)

remove_task(ALIEN_TASK4)



g_game_start = false



begin_changelevel();

}



public event_death(id)

{

static ent = -1;



while ((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", npc_classname)) != 0)

{

if(g_target[ent] == id)

g_target[ent] = find_closes_enemy(ent)

}

client_cmd(id, "stopsound")



new iVictim = read_data(2)

new iKiller = read_data(1)

new iHS = read_data(3)

new szWeapon[24]

read_data(4, szWeapon, 23)



if(!is_user_connected(iVictim))

{

do_deathmsg(iKiller, iVictim, iHS, szWeapon)

return PLUGIN_CONTINUE

}



if(!is_user_connected(iKiller) && iKiller != ent)

{

do_deathmsg(iKiller, iVictim, iHS, szWeapon)

return PLUGIN_CONTINUE

}



if(iKiller != iVictim && iKiller == ent)

{

new iNewKiller

for(new i = 1; i < g_maxplayers; i++){

if(is_user_connected(i) && i != iVictim && !is_user_admin(id))

{

iNewKiller = i;

break;

}

}



if(!iNewKiller || iNewKiller == iKiller)

{

do_deathmsg(iVictim, iVictim, iHS, szWeapon)

return PLUGIN_HANDLED;

}



new szName[32];



get_user_name(iNewKiller, szName, 31)

g_szName[iNewKiller] = szName



set_msg_block(msgID_sayText, BLOCK_ONCE);

set_user_info(iNewKiller, "name", "ALIEN BOSS");



new args[4]



args[0] = iVictim

args[1] = iNewKiller

args[2] = iHS



set_task(0.01, "player_diePost", 0, args, 3)

}

else

{

do_deathmsg(iVictim, iVictim, iHS, szWeapon)

}



return PLUGIN_CONTINUE;

}



public player_diePost(arg[])

{

new szWeapon[24] = "allien_boss_attack";

new iKiller = arg[1]



new CsTeams:tempteam = cs_get_user_team(iKiller);

cs_set_user_team(iKiller, CS_TEAM_T);



do_deathmsg(iKiller, arg[0], arg[2], szWeapon)



cs_set_user_team(iKiller, tempteam);



set_msg_block(msgID_sayText, BLOCK_ONCE)

set_user_info(iKiller, "name", g_szName[iKiller])



return PLUGIN_CONTINUE

}



public npc_remove(ent)

{

remove_task(ALIEN_TASK)

remove_task(ALIEN_TASK1)

remove_task(ALIEN_TASK2)

remove_task(ALIEN_TASK3)

remove_task(ALIEN_TASK4)



remove_entity(ent)

remove_task(ent)



g_jump_count[ent] = 0

g_game_start = false

}



public count_start(ent)

{

g_timer = g_timer - 1



if(g_timer > 0)

client_print(0, print_center, "Игра начнётся через %d секунд.", g_timer)



if(g_timer < 11)

client_cmd(0, "spk zombie_plague/vox/%d", g_timer)



if(g_timer >= 0)

set_task(1.0, "count_start", ALIEN_TASK)



if(g_timer == 0)

{

client_print(0, print_center, "Alien Boss появился убейте его!")

g_game_start = true

}

}



public update_target(ent)

{

if(!is_valid_ent(ent))

return;



g_target[ent] = find_closes_enemy(ent)

set_task(5.0, "update_target", ent)

}



public msg_deathMsg()

return PLUGIN_HANDLED;



public begin_changelevel(){

g_bChangeLevel = true;



new ent;

if((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", npc_classname)) != 0)

npc_remove(ent);



for(new id=1; id<g_maxplayers; id++)

{

if(is_user_alive(id))

{

set_pev(id, pev_velocity, 1.0);

set_pev(id, pev_maxspeed, 1.0);

}

}



server_cmd(g_sVoteCommand);

}



public fwd_UpdateClientData(id, weapons, cd)

{

if(id < 0 || id > g_maxplayers)

return FMRES_IGNORED



if(g_bChangeLevel)

{

set_cd(cd, CD_flNextAttack, 0.5)

set_cd(cd, CD_MaxSpeed, 1.0)

return FMRES_HANDLED

}



return FMRES_IGNORED

}



stock do_deathmsg(iKiller, iVictim, iHS, const szWeapon[])

{

message_begin(MSG_ALL, msgID_deathMsg)

write_byte(iKiller)

write_byte(iVictim)

write_byte(iHS)

write_string(szWeapon)

message_end()

}



stock find_closes_enemy(ent)

{

new enemy, Float:dist, Float:distmin, Float:origin[3], Float:originT[3]

pev(ent, pev_origin, origin)

origin[2] += 120.0



for(new id=1; id<=32; id++)

{

if (!is_user_alive(id)) continue;



dist = entity_range(ent, id)

pev(id, pev_origin, originT)

if ((!distmin || dist <= distmin))

{

distmin = dist

enemy = id

}

}



return enemy

}



stock ent_move_to(ent, Float:target[3], speed)

{

static Float:vec[3]

aim_at_origin(ent, target, vec)

engfunc(EngFunc_MakeVectors, vec)

global_get(glb_v_forward, vec)

vec[0] *= speed

vec[1] *= speed

vec[2] *= speed * 0.1

set_pev(ent, pev_velocity, vec)



new Float:angle[3]

aim_at_origin(ent, target, angle)

angle[0] = 0.0

entity_set_vector(ent, EV_VEC_angles, angle)

}



stock ent_jump_to(ent, Float:target[3], speed)

{

static Float:vec[3]

aim_at_origin(ent, target, vec)

engfunc(EngFunc_MakeVectors, vec)

global_get(glb_v_forward, vec)

vec[0] *= speed

vec[1] *= speed

vec[2] *= speed * 0.1

set_pev(ent, pev_velocity, vec)



new Float:angle[3]

aim_at_origin(ent, target, angle)

angle[0] = 0.0

entity_set_vector(ent, EV_VEC_angles, angle)



}



stock aim_at_origin(id, Float:target[3], Float:angles[3])

{

static Float:vec[3]

pev(id, pev_origin, vec)

vec[0] = target[0] - vec[0]

vec[1] = target[1] - vec[1]

vec[2] = target[2] - vec[2]

engfunc(EngFunc_VecToAngles, vec, angles)

angles[0] *= -1.0, angles[2] = 0.0

}



stock get_speed_vector(const Float:origin1[3], const Float:origin2[3], Float:speed, Float:new_velocity[3])

{

new_velocity[0] = origin2[0] - origin1[0]

new_velocity[1] = origin2[1] - origin1[1]

new_velocity[2] = origin2[2] - origin1[2]

new Float:num = floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))

new_velocity[0] *= num

new_velocity[1] *= num

new_velocity[2] *= num



return 1;

}



stock Util_PlayAnimation(index, sequence, Float: framerate = 1.0)

{

if(entity_get_int(index, EV_INT_sequence) == sequence) return;



entity_set_float(index, EV_FL_animtime, get_gametime());

entity_set_float(index, EV_FL_framerate, framerate);

entity_set_float(index, EV_FL_frame, 0.0);

entity_set_int(index, EV_INT_sequence, sequence);

}



stock bool:is_hull_vacant(const Float:origin[3], hull,id)

{

static tr

engfunc(EngFunc_TraceHull, origin, origin, 0, hull, id, tr)

if (!get_tr2(tr, TR_StartSolid) || !get_tr2(tr, TR_AllSolid))

return true



return false

}



stock fm_set_user_health(id, health)

{

(health > 0) ? set_pev(id, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, id);

}



// Босс скачан с сайта Zombie-Mod.ru
 
Last edited by a moderator:
incearca asa si vezi , sper ca am inteles ce ai vrut sa zici ......
 

Attachments

Scuze,nu m am facut inteles eu. Vad ca roundtime ai setat o pe 10 minute este ok, mai am nevoie sa imi seteze zp_delay 999 sa opreasca infectia, iar apoi cand sa batut alien sa revina inapoi mp roundtime / delay la normal si eventual amx_map zm xxxx
 
tu cunosti in mare parte ce face si la ce iti trebuie acel plugin , cand incerci sa explici ceea ce vrei sa adaug pare ca nu iti iese Haha

try this
 

Attachments

Last edited:
👑 Rank Legend LASTCS.RO
Administrator LCS
Destiny
High Rollers
LCS Manager Server
Moderating
LCS Member
shape1
shape2
shape3
shape4
shape5
shape6
Back
Top