PDA

View Full Version : Yet another gani script question...


napo_p2p
02-20-2007, 06:35 AM
I have a gani script so that it shows player hp and nicks.

The gani is working fine, but just that if I am with another player and I leave the level, I no longer see the text from that player at all, but I still see the text from my player. If either of us reconnect, the text from the other player reappears.

Any ideas?

Kristi
02-20-2007, 07:03 AM
I have a gani script so that it shows player hp and nicks.

The gani is working fine, but just that if I am with another player and I leave the level, I no longer see the text from that player at all, but I still see the text from my player. If either of us reconnect, the text from the other player reappears.

Any ideas?

Showing the scripts involved helps a tad!

napo_p2p
02-20-2007, 07:13 AM
Showing the scripts involved helps a tad!

lol, I was going to come back to this and add them, and completely forgot. >_<

Here is some code that sets up the gani to an attr and some sample attrs that the ganis uses:
player.attr[10] = "opan_playerstats.gani";
player.attr[11] = "15/15";
player.attr[12] = "0/0";

Here is the gani script:
function onPlayerEnters() {
temp.i;
temp.stat, temp.stats;
stats = {"nick", "hp", "armor"};

i = 0;
for (stat: stats) {
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;
}
i++;
}

setTimer(0.05);
}

function onTimeOut() {
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};
}
}

Chandler
02-20-2007, 09:58 AM
Kristi [Hell Raven] sometimes uses "thiso.(stat @ "img") = this;" things similar to this. It works, however I don't really know much about it.
Maybe try "thiso.(stat @ "img") = findIMG(201 + i);".

napo_p2p
02-20-2007, 10:12 AM
Kristi [Hell Raven] sometimes uses "thiso.(stat @ "img") = this;" things similar to this. It works, however I don't really know much about it.
Maybe try "thiso.(stat @ "img") = findIMG(201 + i);".

Yeah, I tried both :(. Same thing.

Kristi
02-20-2007, 11:53 AM
Read this:
thiso.(stat @ "img") = this;

Now read this:
this.nickimg.x = player.x + 1.5;

thiso. to this. MIGHT be a problem? :o Just a guess. Fix that up first, then if theres still a problem report back, and I will finish looking at it. :D

Admins
02-21-2007, 02:18 AM
The script looks ok. The text disappears when you leave the level (where the other guy is) and then come back to that level ? Both see the text of the other player disappearing?

napo_p2p
02-21-2007, 08:14 AM
Read this:
thiso.(stat @ "img") = this;

Now read this:
this.nickimg.x = player.x + 1.5;

thiso. to this. MIGHT be a problem? :o Just a guess. Fix that up first, then if theres still a problem report back, and I will finish looking at it. :D Well, thiso. is just a way to refer to the weapon script's 'this.' flags (distinguishes them from the img's this. flags), so it should act the same. I still tried both ways too and got the same thing :(.

The script looks ok. The text disappears when you leave the level (where the other guy is) and then come back to that level ? Yes.

Both see the text of the other player disappearing? No, it just happens to me.

Kristi
02-22-2007, 12:40 AM
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.


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};
}
}

napo_p2p
02-22-2007, 12:43 AM
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.

That did it. TYVM :).