コード例 #1
0
ファイル: NpcHeadTips.cs プロジェクト: zuojiashun/src
    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);
            }
        }
    }
コード例 #2
0
ファイル: NpcAscription.cs プロジェクト: zuojiashun/src
    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);
    }
コード例 #3
0
ファイル: NpcHeadTips.cs プロジェクト: zuojiashun/src
 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());
     }
 }
コード例 #4
0
ファイル: NpcHeadTips.cs プロジェクト: zuojiashun/src
    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));
    }
コード例 #5
0
ファイル: NpcHeadTips.cs プロジェクト: zuojiashun/src
    /// <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);
    }
コード例 #6
0
 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();
     }
 }
コード例 #7
0
ファイル: NpcHeadTips.cs プロジェクト: zuojiashun/src
    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);
    }
コード例 #8
0
ファイル: NpcHeadTips.cs プロジェクト: zuojiashun/src
    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);
    }
コード例 #9
0
ファイル: NpcHeadTips.cs プロジェクト: zuojiashun/src
    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);
        }
    }