The playerenters function (same as playercreated) does not happen again when you reenter a room with a player youve already met in a gani (apparently). instead, the timeout keeps going. Likewise, leaving the room is destroying the objects, so when you return, there is nothing to reference. This is my solution.
PHP Code:
function onCreated() {
onTimeout();
}
function createStat(i,stat) {
with (findimg(201 + i)) {
font = "Verdana";
style = "cb";
zoom = (stat == "nick") ? 0.7:0.5;
layer = 1;
textshadow = true;
shadowcolor = {1, 1, 1};
shadowoffset = {0.1, 0.1};
if (stat == "armor") {
red = 0;
green = 0;
blue = 1;
}
thiso.(stat @ "img") = this;
}
}
function onTimeOut() {
temp.i;
temp.stat, temp.stats;
stats = {"nick", "hp", "armor"};
i = 0;
for (stat: stats) {
if(this.(stat @ "img").font != "Verdana") // Does not exist
createStat(i,stat);
i++;
}
this.nickimg.x = player.x + 1.5;
this.nickimg.y = player.y + 3.2;
this.nickimg.text = player.nick;
this.hpimg.x = player.x + 1.5;
this.hpimg.y = player.y - 1;
this.hpimg.text = "HP: " @ player.attr[11];
temp.colors = hpColor(player.attr[11]);
this.hpimg.red = temp.colors[0];
this.hpimg.green = temp.colors[1];
this.hpimg.blue = temp.colors[2];
this.armorimg.x = player.x + 1.5;
this.armorimg.y = player.y + 4;
this.armorimg.text = "Armor: " @ player.attr[12];
setTimer(0.05);
}
function hpColor(pattr) {
temp.hp = temp.pattr.substring(0, temp.pattr.pos("/"));
if (temp.hp >= 7) {
return {0,1,0,1};
}
else if (temp.hp >= 4) {
return {1,1,0,1};
}
else {
return {1,0,0,1};
}
}