Creation/Dev/Script/Vector Position Functions
From Graal Bible
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(); } }