PDA

View Full Version : Plus score



EvoloZz
24th December 2012, 16:36
So I have tried to install "plusscore" from iznos cod4mod, but it gets some error when developer is set to 1,

******* script runtime error *******
pair 'undefined' and '2' has unmatching types 'undefined' and 'float': (file 'maps/mp/gametypes/_plusscore.gsc', line 7)
while(self.scoresize<2.0 && isdefined(self.hud_plusscore))
*
I did all stuff just like needed:

onPlayerConnect();

self.scoretoshow=0;

onPlayerSpawned();

self.scoretoshow=0;

self.scoresize=0.5;

self.scorealpha=0.3;
And called the hud:

precacheString(&"IZNO_PLUS");

So whats wrong?

IzNoGoD
24th December 2012, 18:24
Do you call the plusscore() thread on a player? Show how it's called.

EvoloZz
27th December 2012, 17:38
I am not entirely sure what you mean, but I tried adding something in the tdm.gsc, but still same

IzNoGoD
27th December 2012, 17:44
Show where you have self plusscore(10); or w/e.

EvoloZz
27th December 2012, 18:47
I tried something like this

attacker thread maps\mp\gametypes\_plusscore::plusscore();
attacker.plusscore+=10;
attacker.scoretoshow=10;

IzNoGoD
27th December 2012, 22:35
ok, are the onplayerconnect() and onplayerspawned() threads called in the correct way? (called at all?)

IzNoGoD
27th December 2012, 23:47
Just updated code. Use this instead:

http://codepad.org/isAcUNgK

Only call the init() and the plusscore(score) at the appropriate times (plusscore on a player AND threaded)

Remove all other (old plusscore-related) self.variables from your script



init()
{
precachestring(&"");
precachestring(&"+");
game["precached_plusscore_strings"] = true;
}

plusscore(score)
{
if(!isdefined(game["precached_plusscore_strings"]))
{
iprintln("Plusscore strings not precached. Call init() on startgametype...");
return;
}
if(!isplayer(self))
{
iprintln("Plusscore not called on a player. Go fix this before you try anything else!");
return;
}
if(!isdefined(self.izno_plusscore)) //first run
{
self.izno_plusscore = newclienthudelem(self);
self.izno_plusscore.instance = 0;
self.izno_plusscore.score = score;
self.izno_plusscore.horzAlign = "center";
self.izno_plusscore.vertAlign = "middle";
self.izno_plusscore.alignX = "center";
self.izno_plusscore.alignY = "middle";
self.izno_plusscore.x = 0; //middle of screen
self.izno_plusscore.y = -40; //just above middle of screen
self.izno_plusscore.alpha = 0.3;
self.izno_plusscore.fontscale = 0.5;
}
else //not first-run
{
if(self.izno_plusscore.alpha < 0.3 || self.izno_plusscore.score == 0)
self.izno_plusscore.alpha = 0.3;
if(self.izno_plusscore.fontscale < 0.5 || self.izno_plusscore.score == 0)
self.izno_plusscore.fontscale = 0.5;
self.izno_plusscore.instance++;
self.izno_plusscore.score += score;
}
if(self.izno_plusscore.score < 0)
{
self.izno_plusscore.color = (235/255,10/255,10/255); //negative scores are red
self.izno_plusscore.label = &"";
}
else
{
self.izno_plusscore.color = (1,230/255,125/255); //yellow-ish
self.izno_plusscore.label = &"+";
}
self.izno_plusscore setvalue(self.izno_plusscore.score);

current_instance = self.izno_plusscore.instance;
make_bigger = true;
more_opaque = true;
steady_opaque_timer = 0;
alpha_done = false;
size_done = false;
while(isdefined(self) && current_instance == self.izno_plusscore.instance && !(alpha_done && size_done))
{
if(make_bigger && self.izno_plusscore.fontscale < 2)
self.izno_plusscore.fontscale += 0.35;
else if(make_bigger)
make_bigger = false;
else if(self.izno_plusscore.fontscale > 2)
self.izno_plusscore.fontscale -= 0.2;
else
{
size_done = true;
self.izno_plusscore.fontscale = 1.5;
}

if(more_opaque && self.izno_plusscore.alpha <= 0.9) //dont overflow this
self.izno_plusscore.alpha += 0.1;
else if(more_opaque && steady_opaque_timer == 20)
more_opaque = false;
else if(more_opaque)
steady_opaque_timer++;
else if(self.izno_plusscore.alpha >= 0.1) //dont underflow this
self.izno_plusscore.alpha -= 0.1;
else
{
alpha_done = true;
self.izno_plusscore.alpha = 0;
}
wait 0.05;
}
if(!isdefined(self))
return;
if(current_instance == self.izno_plusscore.instance)
{
wait 0.5;
if(isdefined(self) && self.izno_plusscore.instance == current_instance)
self.izno_plusscore.score = 0;
}
}

EvoloZz
28th December 2012, 12:30
It works now, thanks for helping me out!