public virtual void OnInit() { foreach (var NpcData in mMapInfo.MapDetail.NpcList) { try { var tplNpc = CSTable.StaticDataManager.NPCTpl[NpcData.tid]; if (tplNpc.type == (int)CSCommon.eNpcType.FoodCar || tplNpc.type == (int)CSCommon.eNpcType.MoneyCar) { continue; } NPCInstance.CreateNPCInstance(NpcData, this); } catch (System.Exception ex) { Log.Log.Server.Warning("CreateNPCInstance Error,id={0}", NpcData.tid); } } foreach (var portal in mMapInfo.MapDetail.PortalList) { try { var p = TriggerInstance.CreateTriggerInstance(portal, this); if (null == p) { continue; } AddTrigger(p); } catch (System.Exception ex) { Log.Log.Server.Warning("CreateTriggerInstance Error,id={0}", portal.id); } } foreach (var path in mMapInfo.MapDetail.PathList) { foreach (var node in path.PatrolNodeList) { try { var p = WayPoint.CreateWayPoint(node, this); if (null == p) { continue; } AddWayPoint(path.id, p); } catch (System.Exception ex) { Log.Log.Server.Warning("CreateWayPoint Error,pathId={0},nodeId={1}", path.id, node.id); } } } }
private NPCInstance CreateNpc(MapInfo_Npc NpcData) { NpcData.rebornTime = -1; NpcData.guardRange = 1000; if (NpcData.camp == (int)eCamp.Friend) { NpcData.camp = (int)Owner.Camp; } return(NPCInstance.CreateNPCInstance(NpcData, this)); }
void OnTimeReborn(TimerEvent evt) { var map = evt.param as MapInstance; if (map == null || map.Planes == null) { return; } NPCInstance.CreateNPCInstance(InMapData, map); }
public void Tick(Int64 elapsedMiliSeccond) { try { mRpcProcessor.Tick(); foreach (PlayerInstance i in mPlayerPool) {//这个不怕迭代中删除 if (i != null) { i.Tick(elapsedMiliSeccond); } } lock (mAddedNPCList) { foreach (var i in mAddedNPCList) { mNpcDictionary[i.Id] = i; } mAddedNPCList.Clear(); } lock (mRemovedNPCList) { foreach (var npc in mRemovedNPCList) { mNpcDictionary.Remove(npc.Id); } mRemovedNPCList.Clear(); } foreach (var npc in mNpcDictionary) { npc.Value.Tick(elapsedMiliSeccond); } foreach (var npc in mGatherDictionary) { npc.Value.Tick(elapsedMiliSeccond); } // tick trigger foreach (var trigger in mTriggerDictionary.Values) { trigger.Tick(elapsedMiliSeccond); } if (null == mTransmitingNpc && mNpcCreatingQueue.Count == 0) { for (var i = 0; i < mNpcCreatingPool.Count; i++) { if (mNpcCreatingQueue.Count < mLimitCount) { mNpcCreatingQueue.Add(mNpcCreatingPool[i]); mNpcCreatingPool.RemoveAt(i); i--; } } } for (var i = 0; i < mNpcCreatingQueue.Count; i++) { if (null == mNpcCreatingQueue[i]) { continue; } if (IServer.timeGetTime() - mLastCreateTime >= mIntervalTime) { NPCInstance npc = NPCInstance.CreateNPCInstance(mNpcCreatingQueue[i], this); mLastCreateTime = IServer.timeGetTime(); mNpcCreatingQueue[i] = null; if (i == (int)mLimitCount - 1) { mTransmitingNpc = npc; } } } } catch (System.Exception ex) { Log.Log.Common.Print(ex.ToString() + "==>"); Log.Log.Common.Print(ex.StackTrace.ToString()); } }