1
Hello and Goodbyes / Re: Hey Thor do you have an old backup of Classic?
« on: October 19, 2020, 07:39:27 AM »
How recent is this? I was hoping to get him something closer to the end of Classic pre NPC server.
We're back. Discord - https://discord.gg/U7C8YNYF63
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.The worst I've had is someone ask about 3 times, and when I didn't respond he kindly told me to fellate him.
// 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;
}
//#CLIENTSIDE
function onActionAHPhit() { // custom sword hit detection
temp.foobar = this.level.foobar;
temp.foobar.baz();
}
//#CLIENTSIDE
function onCreated() {
this.setimg("block.png");
this.level.foobar = this;
}
public function baz() {
this.chat = "debug";
}
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.
if (created) {
setshape2 2,2,{11,11,11,11};
}
if (playertouchsme) {
attachplayertoobj 0,id;
}
//#CLIENTSIDE
function onCreated() {
setshape2(2,2,{11,11,11,11});
}
function onPlayerTouchsMe() {
attachplayertoob(0, id);
}
//#CLIENTSIDE
function onCreated() {
this.setimg("block.png");
}
function onActionPulled() {
if (this.waterlevel == 0) {
this.final = {9,39,47,39,47,27,55,27,55,47,9,47}; // x, y values of where the water starts filling
this.current = {11,41,49,41,49,29,53,29,53,45,11,45}; // x, y values where the water is finished filling
}
else if (this.waterlevel == 1) {
this.final = {11,41,49,41,49,29,53,29,53,45,11,45};
this.current ={9,39,47,39,47,27,55,27,55,47,9,47};
}
this.time = 0;
this.waterlevel = !this.waterlevel;
setTimer(0.05);
}
function onTimeout() {
for (this.a=0;this.a<=this.final.size();this.a++;) {
this.distx = this.final[0+this.a] - this.current[0+this.a]; // finds the difference between the coordinates in both arrays
this.disty = this.final[1+this.a] - this.current[1+this.a];
this.movelength = (this.distx * this.distx + this.disty * this.disty) ^ 0.5; // finds out how many tiles away
this.distx = this.distx / this.movelength;
this.disty = this.disty / this.movelength;
this.current[0+this.a] = this.current[0+this.a] + this.distx * 0.05; // move a step towards the final target
this.current[1+this.a] = this.current[1+this.a] + this.disty * 0.05;
showpoly(200,this.current);
changeimgcolors 200,0,0,1,0.75;
this.a++;
}
setTimer(0.05);
}
}
toPlayerX = playerx - x;
toPlayerY = playery - y;
toPlayerLength = (toPlayerX * toPlayerX + toPlayerY * toPlayerY) ^ 0.5;
toPlayerX = toPlayerX / toPlayerLength;
toPlayerY = toPlayerY / toPlayerLength;
x = x + toPlayerX * this.speed;
y = y + toPlayerY * this.speed;