Hi there all
I had a fully working drowning and no-prone script for COD 1.
Now I need to port it to COD2
however, it doesn't work,
The line in BOLD is where I get an Script Compile Error ( Uninitilised Variable 'looper' )
Any help on what this means and how to cure it, also if anyone sees any further bugs relating to COD2 in this script, I would appreciate the heads up.
Cheers.
Like I said this worked fantastic in COD, just hope We can get it to work for COD2.
// Multiplayer drown script for CoD
//
// written by [D]delica
// based on _noprone.gsc by r0ger and the stock IW S&D scripts ;)
main()
{
drownage = getentarray("drown","targetname");
if (isDefined("drownage"))
{
precacheShader("black");
precacheShader("white");
level._effect["bubbles1"] = loadfx ("fx/bubbles.efx");
level.barsize = 288;
level.drowntime = 8;
level.hurttime = 6;
for(d = 0; d < drownage.size; d++)
{
drownage[d] thread water();
}
}
}
Water()
{
while (1)
{
self waittill("trigger", other);
if(isPlayer(other) && other istouching(self))
other thread drown(self);
}
}
drown(trigger)
{
dceiling = getent(trigger.target,"targetname");
while (self istouching(trigger) && !self istouching(dceiling))
{
wait .125;
if(isDefined(self.drowning))
return;
self.drowning = true;
if(!isDefined(self.sounder))
{
looper = spawn( "script_model", self.origin );
wait 0.025;
looper show();
looper linkto(self);
looper playLoopSound("water");
self.sounder = true;
}
level.barincrement = (level.barsize / (20.0 * level.drowntime));
if(!isDefined(self.progressbackground))
{
self.progressbackground = newClientHudElem(self);
self.progressbackground.alignX = "center";
self.progressbackground.alignY = "middle";
self.progressbackground.x = 320;
self.progressbackground.y = 385;
self.progressbackground.alpha = 0.5;
}
self.progressbackground setShader("black", (level.barsize + 4), 12);
if(!isDefined(self.progressbar))
{
self.progressbar = newClientHudElem(self);
self.progressbar.alignX = "left";
self.progressbar.alignY = "middle";
self.progressbar.x = (320 - (level.barsize / 2.0));
self.progressbar.y = 385;
}
self.progressbar setShader("white", 0, 8);
self.progressbar scaleOverTime(level.drowntime, level.barsize, 8);
self.progresstime = 0;
d = 0;
f = 0;
while(isalive(self) && self istouching(trigger) && !self istouching(dceiling) && (self.progresstime < level.drowntime))
{
d ++;
f ++;
wait 0.05;
self.progresstime += 0.05;
playfxOnTag( level._effect["bubbles1"], self, "TAG_HELMET");
rand = randomInt (9);
if (d > (30 + rand))
{
self playSound("bubble");
d = 0;
}
if(self.progresstime >= level.hurttime)
{
if(f >= 4)
{
radiusDamage(self.origin,9, 1, 1);
f = 0;
}
}
}
if(isalive(self) && self istouching(trigger) && !self istouching(dceiling) && (self.progresstime >= level.drowntime))
{
self.progressbackground destroy();
self.progressbar destroy();
wait 0.025;
radiusDamage(self.origin,22, 3000, 3000);
self.drowning = undefined;
self.sounder = undefined;
looper stopLoopSound("water");
looper delete();
randb = randomInt(4);
deathmethod1 = " made a hole in the water and lay down quietly to rest forever.";
deathmethod2 = " paid a long lasting visit to Davy Jones's Locker.";
deathmethod3 = " went diving without breathing apparatus.";
deathmethod4 = " swam like a brick.";
if (randb == 0)
iPrintLn( self.name, deathmethod1);
if (randb == 1)
iPrintLn( self.name, deathmethod2);
if (randb == 2)
iPrintLn( self.name, deathmethod3);
if (randb == 3)
iPrintLn( self.name, deathmethod4);
}
else
{
self.progressbackground destroy();
self.progressbar destroy();
looper stopLoopSound("water");
looper delete();
self.drowning = undefined;
self.sounder = undefined;
}
wait .05;
}
}
|