Instead of *6.5 you want *(960/420) to scale it to the gmap..
(The map is actually 960 tiles big not 957)
That can be simplified to *(16/7)....
...however i think you have some logical errors... firstly... mapxy[] is where the map is positioned on the screen? Or where you are saving the cordinates to? You seem to be using it for both

. Also you seem to use to totally new variables when passing to the triggeraction...
Try...
NPC Code:
if (mousescreenx in | mapxy[0], mapxy[0] + 420 | && mousescreeny in | mapxy[1], mapxy[1] + 420 | ) {
if (keydown2(17, true)) {
this.tempxy = {mousescreenx-mapxy[0]*(16/7),mousescreeny-mapxy[1]*(16/7)};
triggeraction 0, 0, serverside, -Map, warp, #v(this.tempxy[0]),#v(this.tempxy[1]);
}
}
Now mapxy[] is the position of the map on the screen and tempxy[] is where we temporarily store the values when calculating them.
If there somthing glaringly wrong in what I posted, then blame lack of sleep
