public virtual bool InitNPC(Scene _this) { List <SceneNpcRecord> tempList; if (!SceneManager.SceneNpcs.TryGetValue(_this.TypeId, out tempList)) { return(true); } foreach (var record in tempList) { if (record.InitActivate == 0) { continue; } var dataId = record.DataID; var pos = new Vector2((float)record.PosX, (float)record.PosZ); var dir = new Vector2((float)Math.Cos(record.FaceDirection), (float)Math.Sin(record.FaceDirection)); try { var npc = _this.CreateNpc(record, dataId, pos, dir); if (null != npc) { npc.CanRelive = true; //只有场景初始化时造的怪才可以重生 } } catch (Exception ex) { Logger.Error("InitNPC Error, SceneId={0},NpcId={1},dump={2}", record.SceneID, record.DataID, ex); } } return(true); }
//刷新怪物 public ObjNPC CreateSceneNpc(Scene _this, int sceneNpcId, Vector2 pos = default(Vector2), int level = -1) { var record = Table.GetSceneNpc(sceneNpcId); var dataId = record.DataID; if (pos == default(Vector2)) { if (Math.Abs(record.PosX - (-1)) > Double.Epsilon && Math.Abs(record.PosZ - (-1)) > Double.Epsilon) { pos = new Vector2((float)record.PosX, (float)record.PosZ); } else { pos = Utility.GetRandomPosFromTable(record.RandomStartID, record.RandomEndID); } } var dir = new Vector2((float)Math.Cos(record.FaceDirection), (float)Math.Sin(record.FaceDirection)); var npc = _this.CreateNpc(record, dataId, pos, dir, "", level); return(npc); }