PDA

View Full Version : [CoD2][Standalone] Progress bar



BlancO
23rd September 2013, 16:05
blanco\_progress.gsc


////////////////////////
// Scripted by BlancO //
// For killtube.org //
// 23.09.2013 //
////////////////////////

main()
{
// Image of progress background
level.progressBar_back = "gfx/hud/hud@health_back.tga";
// Image of progress
level.progressBar = "gfx/hud/hud@health_bar.tga";
// Show time left (0 = no timer, 1 = timer, 2 tenthsTimer)
level.progressShowTime = 2;
// Progress passed "time", "melee" (when holding melee button), "use" (when holding use button), "attack" (when holding attack button),
level.progressPassesOn = "use";
// Reset Timer when key is no longer holded (bool)
level.progressReset = 1;
// Lock player when progressing (bool)
level.progressLockPlayer = 1;
// Disable player weapon when progressing (bool)
level.progressDisableWeapon = 1;
// Check if player is on the ground (bool)
level.progressMustBeOnTheGround = 1;
// Hud settings
level.progressHudX = 220; // x position
level.progressHudY = 360; // y position
level.progressHudMaxWidth = 200; // max width
level.progressHudHeight = 12; // height
level.progressHudColor = (0, 1, 0); // color
level.progressHudBackgroundColor = (1, 1, 1); // color of the background
// Timer hud settings
level.progressTimerX = (level.progressHudX + 10); // x position
level.progressTimerY = (level.progressHudY - 1); // y position
level.progressTimerColor = (0, 0, 0); // color

// Precache
precacheShader(level.progressBar_back);
precacheShader(level.progressBar);
}

startProgressBar(total)
{
self endon("progress_end");
part = 0;

if(!isDefined(self.progressBlocker))
self.progressBlocker = spawn("script_origin", self.origin);

while(isDefined(self) && isAlive(self))
{
if(level.progressReset && part >= 0)
{
self unLink();
self enableWeapon();
part = 0;
self thread deleteProgressBar();
}

if((!level.progressMustBeOnTheGround || (level.progressMustBeOnTheGround && self isOnGround())))
{
while((level.progressPassesOn == "melee" && self meleeButtonPressed()) || (level.progressPassesOn == "use" && self useButtonPressed()) || (level.progressPassesOn == "attack" && self attackButtonPressed()) || (level.progressPassesOn == "time"))
{
self thread updateProgressBar(part, total);

if(level.progressLockPlayer)
self linkTo(self.progressBlocker);

if(level.progressDisableWeapon)
self disableWeapon();

if(part >= total)
{
self unLink();
self enableWeapon();
self thread deleteProgressBar();
self notify("progress_end");
}

wait 0.05;
part += 0.05;
}
}

timeleft = total - part;
if(timeleft > 0 && level.progressShowTime == 1 && isDefined(self.progressHudTimer))
self.progressHudTimer setTimer(timeleft);
if(timeleft > 0 && level.progressShowTime == 2 && isDefined(self.progressHudTimer))
self.progressHudTimer setTenthsTimer(timeleft);

wait 0.05;
}

self unLink();
self enableWeapon();
self thread deleteProgressBar();
}

updateProgressBar(part, max)
{
maxwidth = level.progressHudMaxWidth;

if(!isDefined(self.progressHud))
{
self.progressHud = newClientHudElem(self);
self.progressHud setShader(level.progressBar, (maxwidth - 2), level.progressHudHeight);
self.progressHud.color = level.progressHudColor;
self.progressHud.alignX = "left";
self.progressHud.alignY = "middle";
self.progressHud.x = (level.progressHudX + 2);
self.progressHud.y = (level.progressHudY);
self.progressHud.sort = -1;
}

if(!isDefined(self.progressHudBg))
{
self.progressHudBg = newClientHudElem(self);
self.progressHudBg setShader(level.progressBar_back, maxwidth, level.progressHudHeight);
self.progressHudBg.color = level.progressHudBackgroundColor;
self.progressHudBg.alignX = "left";
self.progressHudBg.alignY = "middle";
self.progressHudBg.x = level.progressHudX;
self.progressHudBg.y = level.progressHudY;
self.progressHudBg.sort = 1;
}

if(!isDefined(self.progressHudTimer) && (level.progressShowTime == 1 || level.progressShowTime == 2))
{
self.progressHudTimer = newClientHudElem(self);
self.progressHudTimer.color = level.progressTimerColor;
self.progressHudTimer.alignX = "left";
self.progressHudTimer.alignY = "middle";
self.progressHudTimer.x = level.progressTimerX;
self.progressHudTimer.y = level.progressTimerY;
self.progressHudTimer.sort = 2;
}

timeleft = max - part;
if(timeleft > 0 && level.progressShowTime == 1)
self.progressHudTimer setTimer(timeleft);
if(timeleft > 0 && level.progressShowTime == 2)
self.progressHudTimer setTenthsTimer(timeleft);

if(part <= 0)
part = 0.1;

if(level.progressHudColor == (0, 1, 0))
self.progressHud.color = (max - part, max/part, 0);

hud_width = int((part/max) * (maxwidth - 2));

if(hud_width < 1)
hud_width = 1;
if(hud_width > (maxwidth - 2))
hud_width = (maxwidth - 2);

self.progressHud setShader(level.progressBar, hud_width, level.progressHudHeight);
}

deleteProgressBar()
{
if(isDefined(self.progressHud))
self.progressHud destroy();

if(isDefined(self.progressHudBg))
self.progressHudBg destroy();

if(isDefined(self.progressHudTimer))
self.progressHudTimer destroy();
}


Call on server start

thread blanco\_progress::main();

Call when progress bar should start (time = total time of progress bar)

self blanco\_progress::startProgressBar(time);

I think it's clear. Don't change anything except main() function. :D

461

462

kung foo man
23rd September 2013, 16:58
Please upload your images next time yourself as attachment (free hosters are not reliable) :)

RobsoN
23rd September 2013, 18:24
Awesome work dude :D .

guiismiti
2nd December 2014, 16:12
I'm trying to create a new bar hud for a vehicle, it displays the vehicle's health.
The label I want for it is that classic health cross. I don't know the name of that shader, does anybody know?

Editted: I just checked the original hud_teamscore file and found out a label can't be an icon...

Editted #2: Also just found the cross -> "gfx/hud/hud@health_cross.tga"