Graal Forums

Graal Forums (https://forums.graalonline.com/forums/index.php)
-   NPC Scripting (https://forums.graalonline.com/forums/forumdisplay.php?f=8)
-   -   Changing an NPC's X/Y Coordinates (https://forums.graalonline.com/forums/showthread.php?t=65210)

MegaMasterX90875 04-05-2006 03:19 PM

Changing an NPC's X/Y Coordinates
 
I'm trying to make a script that tokenizes and sets X/Y coordinates according to tokenized results. This is what I have so far (Note: It's in GS1):
NPC Code:
 if (created) {
set OrigX;
set OrigY;
OrigX=this.x;
OrigY=this.y;
//This is in case it messes up.
set EditMode;
}
if (playerchats&&strequals(#c,/Editmode)) {
EditMode=1;
message EditMode On!;
sleep 2;
message ;
}
if (playerchats&&strequals(#c,/Editmode off)) {
EditMode=0;
message EditMode Off!;
sleep 2;
message ;
}
if (playerchats&&EditMode=1&&strcontains(#c,/move chair1)) {
tokenize #c;
this.x=strtofloat(#t(3));
this.y=strtofloat(#t(4));
}
if (playertouchsme&&EditMode=1) {
blockagain;
canbepushed;
canbepulled;
}
if (playertouchsme&&EditMode=0) {
dontblock;
cannotbepushed;
cannotbepulled;
player.sprite=37;
}


The /move chair1 is supposed to be like /move chair1 <NewX> <NewY>
Also, when the player chats the sprite is changed to sitting (37) even when the player is not touching the chair.
Is there a way to make this serverside and save the position of the objects?
Is this the best way to do this?
And, can I make it check to see if it's on a wall? How do I do that?

Yen 04-05-2006 05:42 PM

Well.. Using GS1 is a bad way to script anything. It's so.. Tacky! :(

You're going to want setshape2 w,h,{tiletypes}. You can set it's tiletype to chair tiles. Unfortunately, I don't remember what the chair tiletype is. Anyway, it would look like this:
setshape2 2,2,{7,7,7,7};

For onwall checks, you'll want to use the boolean onwall2(x,y,w,h). For example:
if (!onwall2(x,y,2,2)) will check if anyway in a 2x2 rectangle of the NPC's x and y is blocking. If it returns false, it'll keep going.

Andy0687 04-05-2006 05:44 PM

I think I will try to answer this for you ^^

Kinda seems to me like you have a lot of fluff in the script that you dont neccessarily need, but im not going for that now, just helping you to fix up the part you want fixed.

Quote:

Originally Posted by MegaMasterX90875
I'm trying to make a script that tokenizes and sets X/Y coordinates according to tokenized results. This is what I have so far (Note: It's in GS1):

NPC Code:

if (playerchats&&EditMode=1&&strcontains(#c,/move chair1)) {
tokenize #c;
this.x = strtofloat(#t(3));
this.y = strtofloat(#t(4));
}



I think unless you have gs2 enabled on your server (Correct me If Im wrong someone) this.x and this.y will not set the x and y of the npc. just use x and y. Another thing you might want to look at to clean up your code some, is nesting your statements, makes things more readable.

NPC Code:
 
if (playerchats) {
if (strequals(#c,blah1)) {
}
else if (strequals(#c,blah2)) {
}
else if (strequals(#c,blah3)) {
}
}



The first mistake I see is if you want something to be
Quote:

The /move chair1 is supposed to be like /move chair1 <NewX> <NewY>
You probably wanted to see if it "startswith" /move chair1
Tokens start at 0 so they would be like this
/move = #t(0)
chair1 = #t(1)
xnumber = #t(2)
ynumber = #t(3)

NPC Code:

if (playerchats) {
if (startswith(/move chair1,#c)) {
tokenize #c;
x = strtofloat(#t(2));
y = strtofloat(#t(3));
}
}



You had the x as 3 and the y as 4, so you were probably moving the chair completely away from the board on the y, because there was no value.

Quote:

And, can I make it check to see if it's on a wall? How do I do that?
Try using onwall2(x,y,w,h) for checking if the tile is a blocking tile or not.

Edit: Yen got the Onwall better then I did, and setshape2 :)

MegaMasterX90875 04-06-2006 12:52 AM

Gah, I see now! Thanks to all who helped!

Projectshifter 04-06-2006 01:28 AM

You don't need to initialize variables in Graal, and if you're just trying to set them true/false you can just do var = true/var = false;


All times are GMT +2. The time now is 07:20 PM.

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