/// <summary> /// 删除NPC身上特定的触发器 /// </summary> /// <returns>The trigger.</returns> /// <param name="TriggerId">Trigger identifier.</param> /// <param name="npcId">Npc identifier.</param> public ITriggerItem RemoveTrigger(int TriggerId, int npcId) { if (TriggerId <= 0) { return(null); } ITriggerItem one = null; foreach (WarMsg_Type key in OnWork.Keys) { List <ITriggerItem> list = null; //有队列 if (OnWork.TryGetValue(key, out list)) { int count = list.Count; if (count > 0) { int idx = -1; for (int i = 0; i < count; ++i) { if (list[i].GetID() == TriggerId) { idx = i; one = list[i]; break; } } //删除管理器里面的 if (idx >= 0) { list.RemoveAt(idx); //移回Idle List <ITriggerItem> idleList = null; if (!OnIdle.TryGetValue(key, out idleList)) { idleList = new List <ITriggerItem>(); OnIdle[key] = idleList; } one.OnRest(); OnIdle[key].Add(one); break; } } } } //挂在Npc上删除 ServerNPC npc = WarServerManager.Instance.npcMgr.GetNPCByUniqueID(npcId); npc.rmTrigger(TriggerId); return(one); }