Classic Forums

Please login or register.

Login with username, password and session length
Advanced search  

News:

Graal the Adventure 2004 is now on Graal Reborn! | Introducing Project GrailWay

Pages: 1 2 3 [4] 5 6 ... 10
 31 
 on: August 20, 2017, 01:23:16 PM 
Started by maximus_asinus - Last post by Racil
Don't remember, did that guy who was following me and my friends for over a year also beg to be admin for that long, or just ask you to make a server for him?
Or maybe he never actually asked to be admin, just for you to make him a server?

 32 
 on: August 20, 2017, 06:19:28 AM 
Started by maximus_asinus - Last post by Thor
Code: [Select]
function onPlayerEnters() {
  if (client.waterfilled = true) {

Using a single = will always treat the conditional as TRUE, it should be ==. Better yet if you're storing boolean values (true/false or 1/0) you can just do:

Code: [Select]
function onPlayerEnters() {
  if (client.waterfilled) {

or

Code: [Select]
function onPlayerEnters() {
  if (!client.waterfilled) {

--------

Rather than use a timeout I use scheduleEvent(), which can be cancelled with cancelEvents("action").

Code: [Select]

function onFillWater() {
  //blah blah
  this.scheduleEvent(0.2, "FillWater");
}

function onDrainWater() {
  //blah blah
  this.scheduleEvent(0.2, "DrainWater");
}

function stopFill() {
  //blah blah
  this.cancelEvents("FillWater");
}

function stopDrain() {
  //blah blah
  this.cancelEvents("DrainWater");
}


 33 
 on: August 20, 2017, 02:59:27 AM 
Started by maximus_asinus - Last post by Thor
Most "can i b admin"s aren't a big deal. But occasionally you get someone who spends hours/days/weeks/months begging for it non stop.

 34 
 on: August 20, 2017, 01:21:42 AM 
Started by maximus_asinus - Last post by maximus_asinus
Sorry to bring this back up. I'm not sure if this is appropriate to talk about here or if I should ask these questions on the other forum.

I've been reviewing the water script and I finally got to a point where I somewhat understand what is happening. I tried to add on draining functionality (which works) but it is definitely hacked together. Do you have any advice on how to clean this up?

Code: [Select]
// setting variables and giving the object a name

function onCreated() {
  this.waterWidth = 24;
  this.waterHeight = 8;
  this.boundaryWidth = 2;
  this.boundaryHeight = 2;
  this.level.foobar = this;
}

// designed to show proper water level if the player were to log off.
// using client variable to save status

function onPlayerEnters() {
  if (client.waterfilled = true) {
    this.showpoly(200, {this.x, this.y, this.x + this.waterWidth, this.y, this.x + this.waterWidth, this.y + this.waterHeight, this.x, this.y + this.waterHeight});
    this.changeimgcolors(200,0,0,1,0.75);
    this.changeimgvis(200,1);
  }
  else this.hideimg(200);
}

// triggering public function from a switch in the level.
// using it this way so I can break a nested timeout.

public function watercheck() {
  if (client.waterfilled == true) {
    this.filledHeight = 0;
    this.filledWidth = 0;
  }
  else {
    this.filledHeight = this.waterHeight;
    this.filledWidth = this.waterWidth;
  }
  setTimer(0.05);
}

function onTimeout() {
  waterAction();
  setTimer(0.1);
}

function waterAction() {

// the truly hacked part
// enabling and disabling the movement and breaking the timeout once the water is finished it's thing

  if (client.waterfilled == true) {
    if (this.waterWidth == this.filledWidth && this.waterHeight == this.filledHeight) {
      disablescriptmovement = false;
      return;
    }
    else  disablescriptmovement = true;
  }
  if (client.waterfilled ==  false) {
    if (this.filledWidth <= 0 && this.filledHeight <= 0) {
      disablescriptmovement = false;
      return;
    }
    else  disablescriptmovement = true;
  }
  temp.w = this.waterWidth - (this.boundaryWidth * 2);
  temp.h = this.waterHeight - (this.boundaryHeight * 2);
  this.xIncrease = 50;
  this.yIncrease = 50;
  if (this.boundaryWidth > 0) {
    if (this.waterWidth - this.filledWidth <= this.boundaryWidth * 2) {
      temp.w = this.boundaryWidth;
      this.xIncrease /= 2;
    }
    if (this.waterHeight - this.filledHeight <= this.boundaryHeight * 2) {
      temp.h = this.boundaryHeight;
      this.yIncrease /= 2;
    }
  }
  this.xIncrease = (temp.w / this.xIncrease);
  this.yIncrease = (temp.h / this.yIncrease);

// checking whether to flood or empty the room

  if (client.waterfilled = true) {
    this.filledWidth = min(this.waterWidth, this.filledWidth + this.xIncrease);
    this.filledHeight = min(this.waterHeight, this.filledHeight + this.yIncrease);
  }
  else {
    this.filledWidth = min(this.waterWidth, this.filledWidth - this.xIncrease);
    this.filledHeight = min(this.waterHeight, this.filledHeight - this.yIncrease);
  }
  updatePoly();
}

// drawing the polygon

function updatePoly() {
  temp.x = this.x + this.getWaterX();
  temp.y = this.y + this.getWaterY();
  this.showpoly(200, {temp.x, temp.y, temp.x + this.filledWidth, temp.y, temp.x + this.filledWidth, temp.y + this.filledHeight, temp.x, temp.y + this.filledHeight});
  this.changeimgcolors(200,0,0,1,0.75);
  this.changeimgvis(200,1);
}

function getWaterX() {
  return (this.waterWidth - this.filledWidth) / 2;
}

function getWaterY() {
  return (this.waterHeight - this.filledHeight) / 2;
}

 35 
 on: August 19, 2017, 04:40:11 PM 
Started by maximus_asinus - Last post by maximus_asinus
I get asked about 3 times a day. I now understand your struggle, Thor.

 36 
 on: August 18, 2017, 01:30:31 PM 
Started by maximus_asinus - Last post by Thor
Seems awkward to post about this here unless it's specific to Classic.

I posted a reply at http://forums.graalonline.com/forums/showthread.php?p=1741824#post1741824

 37 
 on: August 17, 2017, 10:36:43 PM 
Started by maximus_asinus - Last post by maximus_asinus
Quick update:

I went back and tried public function again after reading a post by fp4 and got something that ALMOST works.

CLASS A
Code: [Select]
//#CLIENTSIDE
function onActionAHPhit() { // custom sword hit detection
  temp.foobar = this.level.foobar;
  temp.foobar.baz();
}
 
CLASS B
Code: [Select]
//#CLIENTSIDE
function onCreated() {
  this.setimg("block.png");
  this.level.foobar = this;
}
public function baz() {
  this.chat = "debug";
}

The problem is only the last NPC to join Class B will receive the update. If I could get around that I would be all set.

 38 
 on: August 17, 2017, 06:28:46 PM 
Started by maximus_asinus - Last post by maximus_asinus
Maybe you can answer me. This my post from the other forums:

Quote
is it possible for two classes to communicate?

My example:

In the first class I have a switch that the player interacts with by swinging the sword. This class is supposed to tell the second class that it was hit. In the second class I have blocks that raise or lower depending on the status of the switch.

I can do a hack solution like a check in a looping timeout but I feel like this can be done with a trigger, and I don't want to use triggeraction if I have 20 different blocks. Want to make something that will allow me to just drag-and-drop these for the most part.

 39 
 on: August 15, 2017, 11:20:16 PM 
Started by maximus_asinus - Last post by maximus_asinus
Also can you explain how attachplayertoobj works online?

Offline if I use attachplayertoobj it acts as if the player is on a layer above the tileset and ignores blocking tiles. In combination with setshape2 I can make blocking tiles swimmable.

Code: [Select]
if (created) {
  setshape2 2,2,{11,11,11,11};
}
if (playertouchsme) {
  attachplayertoobj 0,id;
}

With the same script (updated to GS2 obviously) the tiles are still swimmable but it doesn't put me on that separate layer.

Code: [Select]
//#CLIENTSIDE
function onCreated() {
setshape2(2,2,{11,11,11,11});
}
function onPlayerTouchsMe() {
attachplayertoob(0, id);
}

And again, thanks for your patience. I am learning a lot from what you've shown me so far. I appreciate the help.

 40 
 on: August 15, 2017, 10:01:42 PM 
Started by maximus_asinus - Last post by maximus_asinus
Okay I've run what you gave me and it works, though it looks a bit odd when you're flooding in long skinny sections. Also how would you handle two intersecting flows of water? I am demoing in an L shaped room and want to flood both sections. Here is a demo of what I am talking about.

https://www.youtube.com/watch?v=cj6dqNfGnMw

I'm assuming it was luck that they came together at the same time.

Could this be done with one source of water instead of adding multiple?





Pages: 1 2 3 [4] 5 6 ... 10