Graal Forums

Graal Forums (https://forums.graalonline.com/forums/index.php)
-   NPC Scripting (https://forums.graalonline.com/forums/forumdisplay.php?f=8)
-   -   Vecx and Vecy (https://forums.graalonline.com/forums/showthread.php?t=37431)

haunter 09-06-2002 05:19 AM

Vecx and Vecy
 
Someone mind explaining these two things too me in plain english? :) I know that vec stands for Vector, and I think vectors = speed+direction, but thats where my knowlege ends on this subject ;P

Torankusu 09-06-2002 05:35 AM

posted a while back.

NPC Code:

dir vecx vecy
0 0 -1
1 -1 0
2 0 1
3 1 0



Quote:

commands.rtf
vecx( dir ) vertical movement vector (0,-1,0,1)
vecy( dir ) horizontal movement vector (-1,0,1,0)

I'm no expert at this, but I would think that if the player was facing down:


vecx(playerdir) //<-- that would equal the tile the player was standing on. (numeral direction for down: 2)

Numeral Directions:
0 Up
1 Left
2 Down
3 Right


Hope it helps.

haunter 09-06-2002 05:54 AM

Err sort of, I still dont quite understand it, thanks though.

Torankusu 09-06-2002 06:03 AM

Quote:

Originally posted by haunter
Err sort of, I still dont quite understand it, thanks though.
What don't you understand about it?

Knuckles 09-06-2002 06:54 AM

I didn't really understand it at first either.. And it's kinda hard to explain.. Let's see...

*Steals Tarankusu's list*
NPC Code:

dir vecx vecy
0 0 -1
1 -1 0
2 0 1
3 1 0



*explains list ferther*
vecx(playerdir) // the best usage for it.
vecx={0,-1,0,1} // like if playerdir {0,1,2,3}
vecy={-1,0,1,0} // like if playerdir {0,1,2,3}
if playerdir = 0, the VECY would = -1
if playerdir = 1, the VECX would = -1
if playerdir = 2, the VECY would = 1
if playerdir = 3, the VECX would = 1

playery=playery+vecy(playerdir)
if he was faceing up, the playerdir would = 0, so it would add -1 to his playery, AKA playery-=1 //in other words.. move him up


playerx=playerx+vecx(playerdir)
if he was facing left, the playerdir would = 1, so it would add -1 to his playerx, AKA playerx-=1 //in other words.. move him left

and so on and so forth... >;/ get it?

haunter 09-06-2002 08:08 AM

So vecx and vecy are for moving the player?

Torankusu 09-06-2002 08:12 AM

Quote:

Originally posted by haunter
So vecx and vecy are for moving the player?
not always.
you can also use them for detecting tiles infront of the players dir.
EXAMPLE:
NPC Code:

hitobjects 2,playerx+1.5+vecx(playerdir)*2,playery+2+vecy(pla yerdir)*2;


Knuckles 09-06-2002 08:14 AM

No, but MOST SCRIPTERS when there new.. they use it for movement...

NPC Code:

if (playerenters || timeout) {
moveplayer();
timeout=0.05;
}
function moveplayer() {
for (i=0;i<4;i++) {
if (keydown(i)) {
playerdir=i;
playerx=playerx+vecx(i);
playery=playery+vecy(i);
}
}


haunter 09-06-2002 08:18 AM

Quote:

Originally posted by Torankusu
not always.
you can also use them for detecting tiles infront of the players dir.
EXAMPLE:
NPC Code:

hitobjects 2,playerx+1.5+vecx(playerdir)*2,playery+2+vecy(pla yerdir)*2;


Yes, that is the kind of thing I want to know, for using with a triggeraction, to detect a player in front of you. Can you explain why the playerx has the +1.5+vecx(playerdir)*2 and the playery has +2+vecy(playerdir)*2 , please?

Torankusu 09-06-2002 08:22 AM

Quote:

Originally posted by haunter

Yes, that is the kind of thing I want to know, for using with a triggeraction, to detect a player in front of you. Can you explain why the playerx has the +1.5+vecx(playerdir)*2 and the playery has +2+vecy(playerdir)*2 , please?

ask screen_name.

I'm not sure about the playery+2 / playerx+1.5 myself. I tried taking it out, but it didn't work. It doesn't move the player or anything though.

haunter 09-06-2002 08:24 AM

Hmmm... Is there like a guide or something, in plain english for scripting @_@;?

Knuckles 09-06-2002 08:41 AM

// Delete's post...

I posted a explination.. but explaining.. didn't make it sound right... hehe, i kinda confused myself >;O.. good idea < ask screen_name...

Dach 09-06-2002 08:44 AM

Quote:

Originally posted by Torankusu

NPC Code:

hitobjects 2,playerx+1.5+vecx(playerdir)*2,playery+2+vecy(pla yerdir)*2;


Is for hitting stuff in front of the player... use your imagination

haunter 09-06-2002 09:00 AM

Quote:

Originally posted by Knuckles
// Delete's post...

I posted a explination.. but explaining.. didn't make it sound right... hehe, i kinda confused myself >;O.. good idea < ask screen_name...

Hmm alright, thanks for your help.

By the way, I was playing around with triggeraction and I can't get it to work,

NPC Code:


if (created) {
showcharacter;
}
if (playerchats&&strequals(#c,Test)) {
triggeraction x,y,test,;
}
if (actiontest) {
setcharprop #c,Test_kekeke;
}



Should that work, or am I just really dumb?

Torankusu 09-06-2002 09:53 AM

Quote:

Originally posted by haunter


Hmm alright, thanks for your help.

By the way, I was playing around with triggeraction and I can't get it to work,

NPC Code:


if (created) {
showcharacter;
}
if (playerchats&&strequals(#c,Test)) {
triggeraction x,y,test,;
}
if (actiontest) {
setcharprop #c,Test_kekeke;
}



Should that work, or am I just really dumb?

What's the need for that?

haunter 09-07-2002 07:29 AM

Quote:

Originally posted by Torankusu

What's the need for that?

Testing triggeraction ;P

Torankusu 09-07-2002 07:33 AM

Quote:

Originally posted by haunter


Testing triggeraction ;P

well, you need a //#CLIENTSIDE
and the actiontest goes above the clientsided part.

haunter 09-07-2002 11:19 AM

Quote:

Originally posted by Torankusu
well, you need a //#CLIENTSIDE
and the actiontest goes above the clientsided part.

I was testing offline ;O does that still matter?

Torankusu 09-07-2002 11:50 AM

Quote:

Originally posted by haunter


I was testing offline ;O does that still matter?

i don't think triggering actions works offline...

bigkow44 09-07-2002 11:56 AM

Quote:

Originally posted by haunter


Hmm alright, thanks for your help.

By the way, I was playing around with triggeraction and I can't get it to work,

NPC Code:


if (created) {
showcharacter;
}
if (playerchats&&strequals(#c,Test)) {
triggeraction x,y,test,;
}
if (actiontest) {
setcharprop #c,Test_kekeke;
}



Should that work, or am I just really dumb?

You use the (actiontest) or whatever in a different NPC usually...If its the same NPC you do a function

Also if it is a separate NPC and the separate one has an image, the triggeraction must be on the image. kind of like opening an NPC, your mouse has to be on its image or that blank NPC outline

Dach 09-08-2002 03:17 AM

Quote:

Originally posted by Torankusu
i don't think triggering actions works offline...
It does.

KuJi2002 09-08-2002 03:24 AM

How do u work the mouse thingy anyway?
if (mousex==playerx) {
or something?

haunter 09-08-2002 08:20 AM

Quote:

Originally posted by KuJi2002
How do u work the mouse thingy anyway?
if (mousex==playerx) {
or something?

open newfeatures2001.txt (or 2002 i forget which one) in notepad, press Ctrl+f and search for the word "mouse" and you should find how to use all of the new mouse, that's how I found out :)

Torankusu 09-08-2002 08:24 AM

Quote:

Originally posted by Dach

It does.

I've never gotten serverside actions to be triggered offline...


And for the mousex questionaire,
I'm not too sure either.

I've tried it all different ways. :(

Goboom 09-08-2002 10:27 PM

Quote:

Originally posted by haunter


Hmm alright, thanks for your help.

By the way, I was playing around with triggeraction and I can't get it to work,

NPC Code:


if (created) {
showcharacter;
}
if (playerchats&&strequals(#c,Test)) {
triggeraction x,y,test,;
}
if (actiontest) {
setcharprop #c,Test_kekeke;
}



Should that work, or am I just really dumb?

...read this....it was in new features...
- New script command: triggeraction targetx,targety,action,params;
This is one of the commands that give you like 50% more scripting
power than before. It is like a combination of hitobjects and
callnpc, but better. With 'triggeraction' you invoke an event
to the object on positon (targetx,targety). If the object is
an npc, then the npc script is called with the flag
'action<action>' set, when the object is a player then the
weapon scripts of the that player are called with the
'action<action>' flag set.
'params' can be one or more parameters, divided by commas;
the called script can read the paramters by accessing the
message code #p(paramindex).
Because this is hard to explain with words, here some
little examples:

- trigger player weapons
You can easily do a weapon which freezes the other
player:

if (playertouchsme) toweapons Freezing-Weapon;
if (weaponfired) {
triggeraction playerx+1.5+vecx(playerdir)*2,
playery+2+vecy(playerdir)*2,freeze,;
}
if (actionfreeze) {
freezeplayer 3;
setplayerprop #c,FREEZED;
}

Both players must have this weapon for making it
working. Then use it on the other player, and he will
be freezed, because a 'freeze' action is sent to him
and his weapon script, called with flag 'actionfreeze',
will freeze him. You can also move the if (actionfreeze) ...
into an system npc so the weapon can be used on all
players.
Other nice things you could do with triggering actions
on players: a stealing weapon which lets the other player
loose gralats (if (actionsteal) lay2 greenrupee,... );
complex attacking weapons that use your own hitpoint
system instead of the default hearts thing

- trigger npcs

Until now npcs can only react to 'playertouchsme' and
'washit', other things are very hard to do (e.g. the
mining on Graal2001 was made by checking periodically
what animation the player has and before which stone the
player stands). You could do callnpc, but this works only
client-side and you needed to pass parameters with
flags.
Using 'triggeraction' you can make those things much easier.
The mining axe could have the script
if (weaponfired) {
setani jaxe,hammergold0.png;
triggeraction playerx+1.5+vecx(playerdir)*2,
playery+2+vecy(playerdir)*2,mining,#v(axepower);
}
If you now use the weapon on a stone, the stone npc could
check this so:
if (actionmining) {
axepower = strtofloat(#p(0));
this.power -= axepower;
if (this.power<=0) {
setstring uncraftedgold,#v(strtofloat(#s(uncraftedgold))+1);
hide;
}
}
With this thing you can also easily do switches which are
activated with the hammer, or torch lamps which are turned on
by using a torch on it.

haunter 09-09-2002 02:37 AM

I DID read that, and to me there is nothing wrong with what i coded.

R0b1n-NPC 09-10-2002 11:23 PM

x+1.5
y+1.5

I find triggeraction woorks better when in the middle of the npc/player.

emortylone 09-11-2002 03:32 AM

I doubt this is possible, but can you use a call for a function via CLIENTSIDE and have the function DEFINED serverside?
---Shifter

Graal2001_NAT 09-11-2002 03:58 AM

Quote:

Originally posted by emortylone
I doubt this is possible, but can you use a call for a function via CLIENTSIDE and have the function DEFINED serverside?
---Shifter

probaby not

emortylone 09-11-2002 07:42 AM

Figured as much. Never tried it, lolz.
---Shifter


All times are GMT +2. The time now is 12:21 AM.

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