Creation/Dev/Script/Vector Position Functions: Difference between revisions
From Graal Bible
No edit summary |
No edit summary |
||
| Line 73: | Line 73: | ||
== See Also == | == See Also == | ||
* [http://forums.graalonline.com/forums/showthread.php?p=1649547 Tig's {{g|vecx}} and {{g|vecy}} explanation] | * [http://forums.graalonline.com/forums/showthread.php?p=1649547 Tig's {{g|vecx}} and {{g|vecy}} explanation] | ||
[[Category:Scripting Reference]] | |||
Latest revision as of 14:34, 24 September 2011
This article is currently being written or rewritten by Chris Vimes.
vecx and vecy are two commonly-used GScript functions which help calculate positions based on a direction.
vecx(dir) - returns the amount a player would move on the x axis if moving in direction dir vecy(dir) - returns the amount a player would move on the y axis if moving in direction dir
The amount is based on a player speed of one tile per movement. You can multiply the returned value by your desired speed to find the appropriate movement delta for your situation.
Reference Table
| Direction | vecx(dir) | vecy(dir) |
|---|---|---|
| 0 (up) | 0 | -1 |
| 1 (left) | -1 | 0 |
| 2 (down) | 0 | 1 |
| 3 (right) | 1 | 0 |
Example (Staff Boots)
//#CLIENTSIDE
function onCreated() {
this.speed = 1;
}
function onKeyPressed(code, key) {
if (key == "b") {
// toggle boots
this.on = ! this.on;
if (this.on) {
this.trigger("timeout", null);
}
}
}
function onTimeOut() {
if (! this.on) {
return;
}
for (temp.key = 0; key < 4; key ++) {
if (keydown(key)) { // is the key down?
// move the player in the appropriate direction using vecx and vecy, multiplying
// them by the current speed
player.x += (vecx(key) * this.speed);
player.y += (vecy(key) * this.speed);
}
}
this.setTimer(0.05);
}
function onPlayerChats() {
if (player.chat.starts("/speed ")) {
this.speed = player.chat.substring(7).trim();
}
}
