Index: src/map/script.c =================================================================== --- src/map/script.c (revision 17307) +++ src/map/script.c (working copy) @@ -15372,17 +15372,13 @@ bl = map_id2bl(script_getnum(st,2)); if( bl == NULL ) - { script_pushint(st, 0); - } - else if( script_hasdata(st,4) ) - { + + if( script_hasdata(st,4) ) { int x = script_getnum(st,3); int y = script_getnum(st,4); - script_pushint(st, unit_walktoxy(bl,x,y,0));// We'll use harder calculations. - } - else - { + script_pushint(st,add_timer(gettick()+50, unit_delay_walktoxy_timer, bl->id, (x<<16)|(y&0xFFFF))); + } else { int map_id = script_getnum(st,3); script_pushint(st, unit_walktobl(bl,map_id2bl(map_id),65025,1)); } Index: src/map/unit.c =================================================================== --- src/map/unit.c (revision 17307) +++ src/map/unit.c (working copy) @@ -298,7 +298,7 @@ return 0; } -static int unit_delay_walktoxy_timer(int tid, unsigned int tick, int id, intptr_t data) +int unit_delay_walktoxy_timer(int tid, unsigned int tick, int id, intptr_t data) { struct block_list *bl = map_id2bl(id); Index: src/map/unit.h =================================================================== --- src/map/unit.h (revision 17307) +++ src/map/unit.h (working copy) @@ -86,9 +86,10 @@ int unit_can_move(struct block_list *bl); int unit_is_walking(struct block_list *bl); int unit_set_walkdelay(struct block_list *bl, unsigned int tick, int delay, int type); +int unit_delay_walktoxy_timer(int tid, unsigned int tick, int id, intptr_t data); int unit_escape(struct block_list *bl, struct block_list *target, short dist); -// ˆÊ’u‚Ì‹­§ˆÚ“®(‚«”ò‚΂µ‚È‚Ç) +// Instant unit changes int unit_movepos(struct block_list *bl, short dst_x, short dst_y, int easy, bool checkpath); int unit_warp(struct block_list *bl, short map, short x, short y, clr_type type); int unit_setdir(struct block_list *bl,unsigned char dir);