void SetNpcTipsByTaskID(uint nTaskID, bool checkAcceptNpc) { QuestTraceInfo questInfo = QuestTranceManager.Instance.GetQuestTraceInfo(nTaskID); if (questInfo == null) { return; } SetNpcTipsByTraceInfo(questInfo); //如果是接受了任务 检测提交跟接受npc一不一样 不一样移除接受npc特效 if (checkAcceptNpc) { if (questInfo.endNpc != questInfo.beginNpc) { Client.IEntitySystem es = Client.ClientGlobal.Instance().GetEntitySystem(); if (es == null) { Engine.Utility.Log.Error("实体系统为null"); return; } Client.INPC npc = es.FindNPCByBaseId((int)questInfo.beginNpc); DeleteEffectByNpc(npc); } } }
public void UpdateBelong(Client.INPC npc, uint owernuserid, uint owernteamid, uint ownerclanid, string ownerName) { bool preBelong = npc.BelongOther; bool nowBelong = IsBelongOther(owernuserid, owernteamid, ownerclanid); npc.TeamID = owernteamid; npc.OwnerID = owernuserid; if (preBelong != nowBelong) { Client.stEntityChangename e = new Client.stEntityChangename(); e.uid = npc.GetUID(); Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.ENTITYSYSTEM_CHANGENAME, e); } stRefreshNPCBelongParam param = new stRefreshNPCBelongParam() { npcid = npc.GetUID(), teamid = owernteamid, ownerid = owernuserid, clanid = ownerclanid, ownerName = ownerName, }; OnBelongChanged(param); DataManager.Manager <UIPanelManager>().SendMsg(PanelID.MainPanel, UIMsgID.eRefreshNpcBelong, param); }
void DeleteEffectByNpc(Client.INPC npc) { if (npc == null) { return; } if (m_DictNpceffect.ContainsKey(npc.GetID())) { npc.SendMessage(Client.EntityMessage.EntityCommand_RemoveLinkEffect, m_DictNpceffect[npc.GetID()].effectid); m_DictNpceffect.Remove(npc.GetID()); } }
public bool IsHaveTips(Client.INPC npc) { if (null == npc) { return(false); } List <QuestTraceInfo> traceTask; DataManager.Manager <TaskDataManager>().GetAllQuestTraceInfo(out traceTask); int index; return(IsNeedSetTip(npc, ref traceTask, out index)); }
/// <summary> /// 移除特效 /// </summary> /// <param name="nTaskID"></param> void DeleteEffectByTaskID(uint nTaskID) { table.QuestDataBase questDB = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(nTaskID); if (questDB == null) { return; } Client.IEntitySystem es = Client.ClientGlobal.Instance().GetEntitySystem(); if (es == null) { Engine.Utility.Log.Error("实体系统为null"); return; } Client.INPC npc = es.FindNPCByBaseId((int)questDB.dwEndNpc); DeleteEffectByNpc(npc); }
void SetCampNpOnTrigger(GameCmd.eCamp mycamp) { Client.IEntitySystem es = Client.ClientGlobal.Instance().GetEntitySystem(); if (es != null) { es.FindAllEntity <Client.INPC>(ref m_lstNpc); for (int i = 0; i < m_lstNpc.Count; i++) { Client.INPC npc = m_lstNpc[i]; GameCmd.eCamp camp = (GameCmd.eCamp)npc.GetProp((int)Client.CreatureProp.Camp); if (mycamp != camp) { CampNpcOnTrigger callback = new CampNpcOnTrigger(); npc.SetCallback(callback); UnityEngine.Debug.Log("SetCallback : " + npc.GetName()); } } m_lstNpc.Clear(); } }
void SetNpcTipsByTraceInfo(QuestTraceInfo questInfo) { Client.IEntitySystem es = Client.ClientGlobal.Instance().GetEntitySystem(); if (es == null) { Engine.Utility.Log.Error("实体系统为null"); return; } GameCmd.TaskProcess process = questInfo.GetTaskProcess(); uint npcid = 0; uint effectID = 0; if (process == GameCmd.TaskProcess.TaskProcess_None)//可接 { npcid = questInfo.beginNpc; effectID = EFFECT_CANACCEPT; } else if (process == GameCmd.TaskProcess.TaskProcess_CanDone) { npcid = questInfo.endNpc; effectID = EFFECT_CANCOMMIT; } else if (process == GameCmd.TaskProcess.TaskProcess_Doing) { npcid = questInfo.endNpc; effectID = EFFECT_DOING; } Client.INPC npc = es.FindNPCByBaseId((int)npcid); if (npc == null) { Engine.Utility.Log.Info("查找不到npc{0}", npcid); return; } AddNpcTip(npc, effectID, questInfo.taskId, process); }
bool IsNeedSetTip(Client.INPC en, ref List <QuestTraceInfo> traceTask, out int index) { index = -1; if (en == null) { return(false); } if (en.IsMonster()) { return(false); } QuestTraceInfo tranceInfo = null; GameCmd.TaskProcess process = GameCmd.TaskProcess.TaskProcess_Max; for (int i = 0; i < traceTask.Count; i++) { int npcid = en.GetProp((int)Client.EntityProp.BaseID); tranceInfo = traceTask[i]; process = tranceInfo.GetTaskProcess(); if (process == GameCmd.TaskProcess.TaskProcess_None) { if (tranceInfo.beginNpc == npcid) { index = i; return(true); } } else if (process == GameCmd.TaskProcess.TaskProcess_CanDone || process == GameCmd.TaskProcess.TaskProcess_Doing) { if (tranceInfo.endNpc == npcid) { index = i; return(true); } } } return(false); }
public void OnEvent(int nEventId, object param) { if (nEventId == (int)Client.GameEventID.ENTITYSYSTEM_CREATEENTITY) { Client.stCreateEntity createEntity = (Client.stCreateEntity)param; Client.IEntitySystem es = Client.ClientGlobal.Instance().GetEntitySystem(); if (es == null) { Engine.Utility.Log.Error("严重错误:EntitySystem is null!"); return; } Client.IEntity en = es.FindEntity(createEntity.uid); if (en != null && en is Client.INPC) { List <QuestTraceInfo> traceTask; DataManager.Manager <TaskDataManager>().GetAllQuestTraceInfo(out traceTask); int index; Client.INPC npc = en as Client.INPC; if (IsNeedSetTip(npc, ref traceTask, out index)) { SetNpcTipsByTraceInfo(traceTask[index]); } } } else if (nEventId == (int)Client.GameEventID.ENTITYSYSTEM_REMOVEENTITY) { Client.stRemoveEntity removeEntiy = (Client.stRemoveEntity)param; Client.IEntitySystem es = Client.ClientGlobal.Instance().GetEntitySystem(); if (es == null) { Engine.Utility.Log.Error("严重错误:EntitySystem is null!"); return; } Client.IEntity en = es.FindEntity(removeEntiy.uid); if (en != null && en is Client.INPC) { Client.INPC npc = en as Client.INPC; DeleteEffectByNpc(npc); } } else if (nEventId == (int)Client.GameEventID.TASK_ACCEPT) { uint taskId = (uint)param; SetNpcTipsByTaskID(taskId, true); } else if (nEventId == (int)Client.GameEventID.TASK_DELETE) { uint taskId = (uint)param; DeleteEffectByTaskID(taskId); } else if (nEventId == (int)Client.GameEventID.TASK_DONE) { Client.stTaskDone td = (Client.stTaskDone)param; DeleteEffectByTaskID(td.taskid); } else if (nEventId == (int)Client.GameEventID.TASK_CANSUBMIT) { Client.stTaskCanSubmit tcs = (Client.stTaskCanSubmit)param; SetNpcTipsByTaskID(tcs.taskid, false); } else if (nEventId == (int)Client.GameEventID.SYSTEM_GAME_READY) { RefreshAllNpcTips(); } else if (nEventId == (int)Client.GameEventID.TASK_CANACCEPT) { uint taskId = (uint)param; SetNpcTipsByTaskID(taskId, false); } }