Graal Forums

Graal Forums (https://forums.graalonline.com/forums/index.php)
-   New Scripting Engine (GS2) (https://forums.graalonline.com/forums/forumdisplay.php?f=153)
-   -   Yet another gani script question... (https://forums.graalonline.com/forums/showthread.php?t=72305)

napo_p2p 02-20-2007 06:35 AM

Yet another gani script question...
 
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

Quote:

Originally Posted by napo_p2p (Post 1279684)
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

Quote:

Originally Posted by Kristi (Post 1279696)
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:
PHP Code:

player.attr[10] = "opan_playerstats.gani";
player.attr[11] = "15/15";
player.attr[12] = "0/0"

Here is the gani script:
PHP Code:

function onPlayerEnters() {
  
temp.i;
  
temp.stattemp.stats
  
stats = {"nick""hp""armor"};
  
  
0;
  for (
statstats) { 
    
with (findimg(201 i)) {
      
font "Verdana";
      
style "cb";
      
zoom = (stat == "nick") ? 0.7:0.5;
      
layer 1;
      
textshadow true;
      
shadowcolor = {111};
      
shadowoffset = {0.10.1};
      if (
stat == "armor") {
        
red 0;
        
green 0;
        
blue 1;
      }
      
thiso.(stat "img") = this;
    }
    
i++;
  }

  
setTimer(0.05);
}

function 
onTimeOut() {
  
this.nickimg.player.1.5;
  
this.nickimg.player.3.2;
  
this.nickimg.text player.nick;

  
this.hpimg.player.1.5;
  
this.hpimg.player.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.player.1.5;
  
this.armorimg.player.4;
  
this.armorimg.text "Armor: " player.attr[12];
  
setTimer(0.05);
}

function 
hpColor(pattr) {
  
temp.hp temp.pattr.substring(0temp.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

Quote:

Originally Posted by Chandler (Post 1279730)
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

Quote:

Originally Posted by Kristi (Post 1279748)
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 :(.

Quote:

Originally Posted by Stefan (Post 1280044)
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.

Quote:

Originally Posted by Stefan (Post 1280044)
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.

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 = {111};
    
shadowoffset = {0.10.1};
    if (
stat == "armor") {
      
red 0;
      
green 0;
      
blue 1;
    }
    
thiso.(stat "img") = this;
  }
}

function 
onTimeOut() {
  
temp.i;
  
temp.stattemp.stats
  
stats = {"nick""hp""armor"};
  
  
0;
  for (
statstats) { 
    if(
this.(stat "img").font != "Verdana"// Does not exist
      
createStat(i,stat);
    
i++;
  }
  
this.nickimg.player.1.5;
  
this.nickimg.player.3.2;
  
this.nickimg.text player.nick;

  
this.hpimg.player.1.5;
  
this.hpimg.player.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.player.1.5;
  
this.armorimg.player.4;
  
this.armorimg.text "Armor: " player.attr[12];
  
setTimer(0.05);
}

function 
hpColor(pattr) {
  
temp.hp temp.pattr.substring(0temp.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

Quote:

Originally Posted by Kristi (Post 1280468)
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 :).


All times are GMT +2. The time now is 02:00 AM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2026, vBulletin Solutions Inc.
Copyright (C) 1998-2019 Toonslab All Rights Reserved.