예제 #1
0
파일: Distance.cs 프로젝트: sczhaoyu/mh
 /// <summary>
 ///开始地图和目标
 /// </summary>
 /// <param name="mapID"></param>
 /// <param name="targetId"></param>
 public Distance(Execute e, int mapID, int targetId, FinishCallBack callback)
 {
     list          = model.MhxyRouterRec.GetRouterAll(mapID, targetId);
     this.hwnd     = e.hwnd.ToInt32();
     this.ex       = e;
     this.callback = callback;
     //判断当前地图所在位置,是否需要继续寻路
     for (int i = 0; i < list.Count; i++)
     {
         if (list[i].mapExit.toMap.map_no == Global.addr.GetMapID(hwnd))
         {
             if (list.Count - 1 > i)
             {
                 idx = i + 1;
             }
             else
             {
                 idx = i;
             }
         }
         //坐标偏移
         bean.Axis      a  = OffsetAxis(list[i].mapExit.wait_x, list[i].mapExit.wait_y, -1, 2, -2, 2);
         model.MhxyAxis ma = RandomAxis(list[i].mapExit.id, 1);
         if (ma != null)
         {
             a = new bean.Axis(ma.x, ma.y);
         }
         list[i].mapExit.wait_x = a.x;
         list[i].mapExit.wait_y = a.y;
     }
     if (idx <= list.Count - 1)
     {
         Log.WriteLine("开始地图:{0}", list[idx].mapExit.myMap.name);
     }
 }
예제 #2
0
파일: Distance.cs 프로젝트: sczhaoyu/mh
        public void MoveNPC(int npcid)
        {
            //获取NPC坐标
            model.MhxyNPC npc = model.MhxyNPC.GetNPCID(npcid);
            if (npc == null || npc.x == 0 || npc.y == 0)
            {
                return;
            }
            //坐标偏移
            bean.Axis      a  = OffsetAxis(npc.x, npc.y, -3, 3, -4, 4);
            model.MhxyAxis ma = RandomAxis(npcid, 0);
            if (ma != null)
            {
                a = new bean.Axis(ma.x, ma.y);
            }


            npc.x = a.x;
            npc.y = a.y;
            am.ReSetMove(Global.addr.GetMapID(hwnd), npc.x, npc.y, 0);
            bool to = true;

            while (to)
            {
                int[] xy = Global.addr.getPeopleXY(hwnd);
                if (xy[0] == npc.x && xy[1] == npc.y)
                {
                    Log.WriteLine("已到达NPC所在坐标!");
                    to = false;
                    if (callback != null)
                    {
                        callback();
                    }
                }
                System.Threading.Thread.Sleep(1000);
            }
        }