//创建怪物 public void CreateMonster(GameStruct.GeneratorInfo info) { GameStruct.MonsterInfo minfo = ConfigManager.Instance().GetMonsterInfo(info.monsterid); if (minfo == null) { Log.Instance().WriteLog("无法找到怪物id:" + info.monsterid.ToString()); return; } MonsterObject obj; Random rd = new Random(); for (int i = 0; i < info.amount; i++) { short cx = 0; short cy = 0; byte index = 0; while (true) { cx = (short)rd.Next((int)info.bound_x, (int)(info.bound_x + info.bound_cx)); cy = (short)rd.Next((int)info.bound_y, (int)(info.bound_y + info.bound_cy)); if (CanMove(cx, cy)) { break; } index++; if (index >= 100) { cx = cy = 0; break; } } if (cx == 0 && cy == 0) { Log.Instance().WriteLog("创建怪物失败,无法找到落脚点" + this.GetMapInfo().name + "怪物名称:" + minfo.name + "地图id:" + info.mapid.ToString() + " x:" + info.bound_x.ToString() + " y:" + info.bound_y.ToString()); return; } obj = new MonsterObject(minfo.id, minfo.ai, cx, cy, true); if (info.dir == DIR.MAX_DIRSIZE) { obj.SetDir(GameStruct.DIR.Random_Dir()); } else { obj.SetDir(info.dir); } obj.SetRebirthTime(info.time); AddObject(obj); } }
//创建怪物 public void CreateMonster(GameStruct.GeneratorInfo info) { GameStruct.MonsterInfo minfo = ConfigManager.Instance().GetMonsterInfo(info.monsterid); if (minfo == null) { Log.Instance().WriteLog("无法找到怪物id:" + info.monsterid.ToString()); return; } MonsterObject obj ; Random rd = new Random(); for (int i = 0; i < info.amount; i++) { short cx = 0; short cy = 0; byte index = 0; while (true) { cx = (short)rd.Next((int)info.bound_x, (int)(info.bound_x + info.bound_cx)); cy = (short)rd.Next((int)info.bound_y, (int)(info.bound_y + info.bound_cy)); if (CanMove(cx, cy)) { break; } index++; if (index >= 100) { cx = cy = 0; break; } } if (cx == 0 && cy == 0) { Log.Instance().WriteLog("创建怪物失败,无法找到落脚点" + this.GetMapInfo().name + "怪物名称:" + minfo.name + "地图id:"+ info.mapid.ToString()+" x:"+info.bound_x.ToString()+" y:"+info.bound_y.ToString()); return; } obj = new MonsterObject(minfo.id, minfo.ai,cx,cy,true); if (info.dir == DIR.MAX_DIRSIZE) { obj.SetDir(GameStruct.DIR.Random_Dir()); } else { obj.SetDir(info.dir); } obj.SetRebirthTime(info.time); AddObject(obj); } }