([image: 1758231226237-01661904-49de-4f57-a72b-a7b4d1715a6f-image-resized.png]
#include maps\_utility;
#include common_scripts\utility;
#include maps\_zombiemode_utility;
init()
{
thread onConnect();
}
onConnect()
{
for(;;)
{
level waittill( "connecting", player );
player thread zombiesleft_hud();
player thread zombie_health_hud();
}
}
///////////////////////////////////////////////////////////
////////////////////////COUNTER ZM/////////////////////////
///////////////////////////////////////////////////////////
zombiesleft_hud()
{
Remaining = create_simple_hud(); //Hud Zombie Value
Remaining.horzAlign = "center";
Remaining.vertAlign = "bottom";
Remaining.alignX = "left";
Remaining.alignY = "bottom";
Remaining.y = -5;
Remaining.x = 0;
Remaining.foreground = 1;
Remaining.fontscale = 1.5;
Remaining.alpha = 0;
Remaining.color = ( 0, 255, 0 );
ZombiesLeft = create_simple_hud(); //Hud Zombie Text
ZombiesLeft.horzAlign = "center";
ZombiesLeft.vertAlign = "bottom";
ZombiesLeft.alignX = "left";
ZombiesLeft.alignY = "bottom";
ZombiesLeft.y = -5;
ZombiesLeft.x = -29;
ZombiesLeft.foreground = 1;
ZombiesLeft.fontscale = 1.5;
ZombiesLeft.alpha = 0;
ZombiesLeft.color = (0.7, 0, 0);
ZombiesLeft SetText("ZM:");
thread fade_in(Remaining, 1, 0.5);
thread fade_in(ZombiesLeft, 1, 0.5);
while(1)
{
remainingZombies = get_enemy_count() + level.zombie_total;
Remaining SetValue(remainingZombies);
if(remainingZombies == 0 )
{
Remaining SetText("Waiting...");
thread fade_out(Remaining, 0, 0.5);
thread fade_out(ZombiesLeft, 0, 0.5);
while(1)
{
remainingZombies = get_enemy_count() + level.zombie_total;
if(remainingZombies != 0 )
{
thread fade_in(Remaining, 1, 0.5);
thread fade_in(ZombiesLeft, 1, 0.5);
break;
}
wait 0.5;
}
}
wait 0.5;
}
}
fade_in(hudElem, targetAlpha, duration)
{
steps = 10;
stepTime = duration / steps;
for(i = 0; i <= steps; i++)
{
hudElem.alpha = i * (targetAlpha / steps);
wait stepTime;
}
hudElem.alpha = targetAlpha;
}
fade_out(hudElem, targetAlpha, duration)
{
steps = 10;
startAlpha = hudElem.alpha;
stepTime = duration / steps;
for(i = 0; i <= steps; i++)
{
hudElem.alpha = startAlpha - i * ((startAlpha - targetAlpha) / steps);
wait stepTime;
}
hudElem.alpha = targetAlpha;
}
////////////////////////////////////////////////////////////////////
////////////////////////VIEWER ZOMBIE HP////////////////////////////
////////////////////////////////////////////////////////////////////
zombie_health_hud()
{
level endon("game_ended");
self endon("disconnect");
health_hud = NewHudElem();
health_hud.alignX = "center";
health_hud.alignY = "middle";
health_hud.horzAlign = "center";
health_hud.vertAlign = "middle";
health_hud.y = 50;
health_hud.alpha = 0;
health_hud.fontScale = 1.4;
health_hud.color = (1, 0.8, 0);
health_hud.hidewheninmenu = true;
health_bar = NewHudElem();
health_bar.alignX = "center";
health_bar.alignY = "middle";
health_bar.horzAlign = "center";
health_bar.vertAlign = "middle";
health_bar.y = 80;
health_bar.x = -75;
health_bar.alpha = 0;
health_bar.width = 150;
health_bar.height = 12;
health_bar.foreground = 1;
health_bar.hidewheninmenu = true;
health_bar.color = (0, 1, 0);
last_target = undefined;
while(1)
{
zombie = self get_zombie_in_crosshair();
if(isDefined(zombie) && isAlive(zombie))
{
if(!isDefined(last_target) || zombie != last_target)
{
health_hud FadeOverTime(0.3);
health_hud.alpha = 1;
health_bar FadeOverTime(0.3);
health_bar.alpha = 1;
last_target = zombie;
}
health = zombie.health;
if(isDefined(zombie.maxhealth))
max_health = zombie.maxhealth;
else
max_health = 150;
enemy_type = "Enemy";
if(isDefined(zombie.model) && (zombie.model == "zombie_dog" || zombie.classname == "actor_zombie_dog"))
enemy_type = "Hellhound";
else if(isDefined(zombie.is_zombie))
enemy_type = "Zombie";
health_hud SetText(enemy_type + " HP: " + health + "/" + max_health);
health_hud.alpha = 1;
health_percent = health / max_health;
if(health_percent > 0.5)
health_bar.color = (0, 1, 0);
else if(health_percent > 0.25)
health_bar.color = (1, 1, 0);
else
health_bar.color = (1, 0, 0);
health_bar.width = int(150 * health_percent);
health_bar.alpha = 1;
}
else
{
if(isDefined(last_target))
{
health_hud FadeOverTime(0.3);
health_hud.alpha = 0;
health_bar FadeOverTime(0.3);
health_bar.alpha = 0;
last_target = undefined;
}
}
wait 0.05;
}
}
get_zombie_in_crosshair()
{
self endon("death");
start = self.origin + (0,0,60);
end = start + AnglesToForward(self.angles) * 1000;
trace = BulletTrace(start, end, true, self);
if(!isDefined(trace["entity"]))
return undefined;
entity = trace["entity"];
if(!isDefined(entity))
return undefined;
distance = Distance(self.origin, entity.origin);
if(distance > 400)
return undefined;
return entity;
}
This script shows the health status of zombies and, of course, hellhounds, etc. (When aiming at a zombie or a dog.)
(If you want to turn off the zombie hp indicator, just comment in line 16 and then it will not be displayed.)
Этот скрипт показывает состояние здоровья зомби и конечно же, адских гончих и т.д. (когда наводишь прицел на зомби или на собаку.)
(Если хотите выкл индикатор здоровье зомби то просто закоментируйте в 16 строке и тогда не будет отображаться.)
//player thread zombie_health_hud();
Tutorial
Go to the plutonium folder C:\Users\YOU_NAME\AppData\Local\Plutonium\storage\t4\raw\scripts\sp
Create a text document and name it whatever you want, but replace the extension of this .txt with this .gsc
We enter my code in the notepad
And we check if you did everything right.
Руководство
Заходим в папку plutonium C:\Users\YOU_NAME\AppData\Local\Plutonium\storage\t4\raw\scripts\sp
Создаем текстовый документ и называем его как хотите, но заменяем расширение это .txt на .gsc
Вставляем мой код в блокнот
И проверяем, все ли вы сделали правильно.