void fnJump(object oDest) { object oMe=OBJECT_SELF; if (GetArea(oMe)!=GetArea(oDest)||GetDistanceBetween(oMe,oDest)>1.0) { // jump AssignCommand(oMe,ClearAllActions(TRUE)); AssignCommand(oMe,JumpToObject(oDest)); DelayCommand(0.5,fnJump(oDest)); } // jump } // fnJump() void main() { object oMe=OBJECT_SELF; object oPC=GetLastUsedBy(); object oDest; string sTag=GetTag(oMe); oDest=GetWaypointByTag("STAGE"+sTag+"_ARRIVE"); AssignCommand(oPC,fnJump(oDest)); }