Hmm..
I'm kinda confuse with your script
What cause error to your script is that during
set .@i,( select( .@Menu$ ) - 1 );
Of course the output would be like this
Luneta Mall
Donation Area
Luneta Vend Room
Payon
When the user select Donation Area for example select function would return '2'
Lets take a look back at your setarray
setarray .@MapList$,
"turbo_room","Luneta Mall","100","68",
"turbo_room","Donation Area","115","94",
"pron_mall","Luneta Vend Room","98","42",
"Payon","Payon","162","133";
during this line
warp .@MapList$[.@i],atoi( .@MapList$[.@i+2] ),atoi( .@MapList$[.@i+3] );
.@i = 2 - 1. right?
therefore since .@i = 1, I'll replace .@i with 1
warp .@MapList$[1],atoi( .@MapList$[3] ),atoi( .@MapList$[4] );
Therefore your 2nd warp and above wouldn't work because
your index 1 is "Luneta Mall" which will cause an unknown map when used on warp function.
How about instead of having this
setarray .@MapList$,
"turbo_room","Luneta Mall","100","68",
"turbo_room","Donation Area","115","94",
"pron_mall","Luneta Vend Room","98","42",
"Payon","Payon","162","133";
What if you change it to this?
setarray .@Map$, "turbo_room", "turbo_room", "pron_mall", "Payon";
setarray .@MapName$, "Luneta Mall", "Donation Area", "Luneta Vend Room", "Payon";
setarray .@MapX,100,115,98,162;
setarray .@MapY, 68,94,42,133;
So that during selection when the user selects an option your warp function would be like
warp .@Map$[.@i],.@MapX[.@i],.@MapY[.@i];
Uh. just a suggestion for this part.