示例#1
0
    public List <NPCInfo> GetTransmitList()
    {
        List <NPCInfo> list = new List <NPCInfo>();

        for (int i = 0; i < allNpcList.Count; i++)
        {
            var         npc = allNpcList[i];
            NpcDataBase db  = GameTableManager.Instance.GetTableItem <NpcDataBase>((uint)npc.npcID);
            if (db != null)
            {
                if (db.dwType == (int)GameCmd.enumNpcType.NPC_TYPE_TRANSFER)
                {
                    list.Add(npc);
                }
            }
        }
        return(list);
    }
        void ShowFlashColor(IEntity defender)
        {
            Profiler.BeginSample("ShowFlashColor");
            INPC npc = defender as INPC;

            if (npc != null)
            {
                int         baseID = npc.GetProp((int)EntityProp.BaseID);
                NpcDataBase npcDb  = GameTableManager.Instance.GetTableItem <NpcDataBase>((uint)baseID);
                if (npcDb != null)
                {
                    uint monsterType = npcDb.dwMonsterType;
                    if (monsterType == 0)
                    {
                        return;
                    }
                    List <uint> configList = SkillSystem.GetColorList(monsterType);
                    if (configList != null)
                    {
                        if (configList.Count > 0)
                        {
                            uint show = configList[0];
                            if (show == 1)
                            {
                                if (configList.Count != 6)
                                {
                                    // Log.Error("全局配置FlashColor  长度错误 ,检查配置");
                                }
                                else
                                {
                                    FlashColor fc = new FlashColor();
                                    fc.color = new Color(configList[2] * 1.0f / 255, configList[3] * 1.0f / 255, configList[4] * 1.0f / 255, configList[5] * 1.0f / 255);
                                    fc.fLift = configList[1] * 1.0f / 1000;
                                    defender.SendMessage(EntityMessage.EntityCommand_FlashColor, fc);
                                    // Log.Error("flash color " + defender.GetName());
                                }
                            }
                        }
                    }
                }
            }
            Profiler.EndSample();
        }
示例#3
0
    void onClickHuntingGrid(HuntingDataBase huntDa)
    {
        HuntingDataBase data = huntDa;

        MonsterID = data.ID;
        DataManager.Manager <HuntingManager>().MonsterID = MonsterID;
        if (boss_dic.Count > 0 && boss_dic.ContainsKey(MonsterID))
        {
            NpcDataBase monster = GameTableManager.Instance.GetTableItem <NpcDataBase>(boss_dic[MonsterID].boss_npc_id);
            if (monster != null)
            {
                m_label_BossName.text = monster.strName;
                MapDataBase map = GameTableManager.Instance.GetTableItem <MapDataBase>(data.mapID);
                m_label_mapLabel.text = map.strName;
            }
        }
        ShowModel(data);
        onClick_DropBtn_Btn(data);
        m_label_LieHunNum.text = data.HuntingScore.ToString();
    }
示例#4
0
    void ShowModel(uint mstID)
    {
        NpcDataBase npcData = GameTableManager.Instance.GetTableItem <NpcDataBase>(mstID);

        if (npcData != null)
        {
            uint modelID = npcData.dwViewModelSet;  // 使用观察模型
            if (m_RTObj != null)
            {
                m_RTObj.Release();
                m_RTObj = null;
            }

            m_RTObj = DataManager.Manager <RenderTextureManager>().CreateRenderTextureObj((int)modelID, 800);
            if (m_RTObj == null)
            {
                return;
            }
            ModeDiplayDataBase modelDisp = GameTableManager.Instance.GetTableItem <ModeDiplayDataBase>(modelID);
            if (modelDisp == null)
            {
                Engine.Utility.Log.Error("BOSS模型ID为{0}的模型展示数据为空", modelID);
                return;
            }
            m_RTObj.SetDisplayCamera(modelDisp.pos800, modelDisp.rotate800, modelDisp.Modelrotation);
            m_RTObj.PlayModelAni(Client.EntityAction.Stand);
            UIRenderTexture rt = m__Model.GetComponent <UIRenderTexture>();
            if (null == rt)
            {
                rt = m__Model.gameObject.AddComponent <UIRenderTexture>();
            }
            if (null != rt)
            {
                rt.SetDepth(3);
                rt.Initialize(m_RTObj, m_RTObj.YAngle, new UnityEngine.Vector2(800, 800));
            }
        }
    }
示例#5
0
    public override void SetGridData(object data)
    {
        base.SetGridData(data);
        if (null == data)
        {
            return;
        }
        this.huntingdata = data as HuntingDataBase;
        MonsterID        = huntingdata.ID;
        level.text       = huntingdata.level.ToString();
        if (null != icon)
        {
            UIManager.GetTextureAsyn(huntingdata.icon, ref m_iconCASD, () =>
            {
                if (null != icon)
                {
                    icon.mainTexture = null;
                }
            }, icon);
        }
        //刷新时间
        uint boss_index = huntingdata.ID;

        if (boss_dic.Count > 0)
        {
            string      msg  = "";
            TextManager tMgr = DataManager.Manager <TextManager>();
            if (boss_dic.ContainsKey(boss_index))
            {
                BossRefreshInfo info = boss_dic[boss_index];
                if (info.boss_state == (uint)BossState.BossState_Live)
                {
                    msg = tMgr.GetLocalText(LocalTextType.HuntingBoss_YiShuaXin);
                }
                //击杀中
                else if (info.boss_state == (uint)BossState.BossState_Attacted)
                {
                    msg = tMgr.GetLocalText(LocalTextType.HuntingBoss_GongJiZhong);
                }
                else if (info.boss_state == (uint)BossState.BossState_Die)
                {
                    DateTime dt = SetTime(info.remaintime);
                    msg = tMgr.GetLocalFormatText(LocalTextType.HuntingBoss_ShuaXinShiJian, string.Format("{0:d2}", dt.Hour) + ":" + string.Format("{0:d2}", dt.Minute));
                }
                else if (info.boss_state == (uint)BossState.BossState_Rest)
                {
                    msg = tMgr.GetLocalText(LocalTextType.HuntingBoss_YiXiuXi);
                }

                NpcDataBase monster = GameTableManager.Instance.GetTableItem <NpcDataBase>(info.boss_npc_id);
                if (monster != null)
                {
                    name.text = monster.strName;
                }
                else
                {
                    Engine.Utility.Log.Error("NPC表格中找不到ID为{0}的怪物,请确认表格或者重新打表", info.boss_npc_id);
                }

                m_lab_bossState.text = msg;
            }
        }
    }
示例#6
0
    void InitTargetChangeUI()
    {
        IEntity ie = Client.ClientGlobal.Instance().GetControllerSystem().GetActiveCtrl().GetCurTarget();

        if (ie == null)
        {
            m_trans_target.gameObject.SetActive(false);
        }
        else
        {
            m_trans_target.gameObject.SetActive(true);
            IEntity entity = ie;
            string  name   = entity.GetName();
            string  lvstr  = entity.GetProp((int)CreatureProp.Level).ToString();
            m_label_MonsterLevel_Label.text = lvstr;

            bool showPackage = false;
            //怪
            if (entity.GetEntityType() == EntityType.EntityType_NPC)
            {
                INPC        npc = entity as INPC;
                NpcDataBase ndb = GameTableManager.Instance.GetTableItem <NpcDataBase>((uint)npc.GetProp((int)EntityProp.BaseID));
                if (ndb == null)
                {
                    return;
                }
                showPackage = npc.IsBoss();
                if (ndb.dwMonsterType == 1)
                {
                    InitTargetUIInMonster();
                    m_widget_player.gameObject.SetActive(false);
                    m_widget_monster.gameObject.SetActive(true);
                    m_lableTargetLevel.text = entity.GetProp((int)CreatureProp.Level).ToString();
                }
                else
                {
                    InitTargetUI();
                    string iconName = UIManager.GetIconName(ndb.npcIcon, npc.IsPet());
                    UIManager.GetTextureAsyn(iconName,
                                             ref m_curTargetIconAsynSeed, () =>
                    {
                        if (null != m_spriteTargetIcon)
                        {
                            m_spriteTargetIcon.mainTexture = null;
                        }
                    }, m_spriteTargetIcon, false);

                    m_widget_player.gameObject.SetActive(true);
                    m_widget_monster.gameObject.SetActive(false);
                }
            }

            // 玩家
            else
            {
                InitTargetUI();
                m_widget_player.gameObject.SetActive(true);
                m_widget_monster.gameObject.SetActive(false);
                IPlayer player = entity as IPlayer;
                if (player != null)
                {
                    int job = player.GetProp((int)PlayerProp.Job);
                    int sex = player.GetProp((int)PlayerProp.Sex);
                    SelectRoleDataBase sdb = table.SelectRoleDataBase.Where((GameCmd.enumProfession)job, (GameCmd.enmCharSex)sex);
                    if (sdb != null)
                    {
                        UIManager.GetTextureAsyn(sdb.strprofessionIcon,
                                                 ref m_curTargetIconAsynSeed, () =>
                        {
                            if (null != m_spriteTargetIcon)
                            {
                                m_spriteTargetIcon.mainTexture = null;
                            }
                        }, m_spriteTargetIcon, false);
                    }
                    m_transHateList.gameObject.SetActive(false);
                }
            }
            m_toggle_packageState.gameObject.SetActive(showPackage);
            m_lableTargetName.text = name;
            UpdateTargetHp(entity);
        }
    }
示例#7
0
    //StringBuilder targetName = new StringBuilder(20);
    private void OnTargetChange(object param)
    {
        stTargetChange tc = (stTargetChange)param;

        if (tc.target == null)
        {
            m_trans_target.gameObject.SetActive(false);
        }
        else
        {
            IEntity entity = tc.target;
            string  name   = entity.GetName();
            string  lvstr  = entity.GetProp((int)CreatureProp.Level).ToString();
            m_label_MonsterLevel_Label.text = lvstr;
            bool showPackeage = false;

            if (entity.GetEntityType() == EntityType.EntityType_NPC)
            {
                INPC npc = entity as INPC;
                showPackeage = npc.IsBoss();
                NpcDataBase ndb = GameTableManager.Instance.GetTableItem <NpcDataBase>((uint)npc.GetProp((int)EntityProp.BaseID));
                if (ndb != null)
                {
                    if (ndb.dwMonsterType == 1)
                    {
                        InitTargetUIInMonster();
                        m_widget_player.gameObject.SetActive(false);
                        m_widget_monster.gameObject.SetActive(true);
                        m_lableTargetLevel.text = entity.GetProp((int)CreatureProp.Level).ToString();
                    }
                    else
                    {
                        InitTargetUI();
                        string iconName = UIManager.GetIconName(ndb.npcIcon, npc.IsPet());
                        UIManager.GetTextureAsyn(iconName,
                                                 ref m_curTargetIconAsynSeed, () =>
                        {
                            if (null != m_spriteTargetIcon)
                            {
                                m_spriteTargetIcon.mainTexture = null;
                            }
                        }, m_spriteTargetIcon, false);

                        m_widget_player.gameObject.SetActive(true);
                        m_widget_monster.gameObject.SetActive(false);
                    }
                }
                if (npc.IsMonster() == false)
                {
                    bool bVisit = true;
                    if (npc.IsSummon() || npc.IsPet())
                    {
                        bVisit = false;
                    }

                    CopyTypeTable ct = DataManager.Manager <ComBatCopyDataManager>().GetCurCopyType();
                    if (ct != CopyTypeTable.Arena)
                    {
                        if (bVisit)
                        {
                            Client.ClientGlobal.Instance().GetControllerSystem().GetActiveCtrl().VisiteNPC(npc.GetUID());
                        }
                    }
                }
                else
                {
                    //请
                    if (m_nLastNpcId != entity.GetUID())
                    {
                        BShowEnemyList = false;
                        m_transHateList.gameObject.SetActive(false);
                    }
                }
                m_nLastNpcId = entity.GetUID();
                if (m_nLastNpcId != 0)
                {
                    stRefreshNPCBelongParam npcbelongdata = NpcAscription.Instance.GetNpcBelongByNpcID(m_nLastNpcId);
                    UpdateTargetStatus(npcbelongdata.npcid, npcbelongdata.teamid, npcbelongdata.ownerid, npcbelongdata.clanid, npcbelongdata.ownerName);
                }
            }
            else
            {
                InitTargetUI();
                m_widget_player.gameObject.SetActive(true);
                m_widget_monster.gameObject.SetActive(false);
                IPlayer player = entity as IPlayer;
                if (player != null)
                {
                    int job = player.GetProp((int)PlayerProp.Job);
                    int sex = player.GetProp((int)PlayerProp.Sex);
                    SelectRoleDataBase sdb = table.SelectRoleDataBase.Where((GameCmd.enumProfession)job, (GameCmd.enmCharSex)sex);
                    if (sdb != null)
                    {
                        UIManager.GetTextureAsyn(sdb.strprofessionIcon,
                                                 ref m_curTargetIconAsynSeed, () =>
                        {
                            if (null != m_spriteTargetIcon)
                            {
                                m_spriteTargetIcon.mainTexture = null;
                            }
                        }, m_spriteTargetIcon, false);
                    }
                    m_transHateList.gameObject.SetActive(false);

                    //目标选择
                    OnSetSelectTargetGrid(player.GetID());
                }
            }
            m_toggle_packageState.gameObject.SetActive(showPackeage);

            m_lableTargetName.text = name;
            //m_lableTargetLevel.text = entity.GetProp((int)CreatureProp.Level).ToString();

            UpdateTargetHp(entity);

            BuffManager.TargetBuffList.Clear();


            if (entity != null)
            {
                List <Client.stAddBuff> lstBuff;
                IBuffPart part = entity.GetPart(EntityPart.Buff) as IBuffPart;
                if (part != null)
                {
                    part.GetBuffList(out lstBuff);
                    for (int i = 0; i < lstBuff.Count; ++i)
                    {
                        stAddBuff          buff = lstBuff[i];
                        table.BuffDataBase db   = GameTableManager.Instance.GetTableItem <table.BuffDataBase>(buff.buffid);
                        if (db != null)
                        {
                            if (db.dwShield == 1)
                            {//不显示的直接跳过
                                continue;
                            }
                        }
                        BuffManager.TargetBuffList.Add(lstBuff[i]);
                    }
                }
                else
                {
                    Engine.Utility.Log.Error("获取{0}Buff部件失败!", entity.GetName());
                }
            }
            m_trans_target.gameObject.SetActive(true);
            RefreshBuffIcon(m_trans_TargetBUffContainer, BuffManager.TargetBuffList);
        }
    }
        private void SendPlayDefenerAniMessage(IEntity defender, string aniName)
        {
            CreatureState state = defender.GetCurState();

            ShowFlashColor(defender);
            if (state != CreatureState.Dead)
            {
                bool bRide = (bool)defender.SendMessage(EntityMessage.EntityCommond_IsRide, null);
                if (bRide)
                {
                    return;
                }
                SkillState skillState = GetTargetSkillState(defender);
                if (skillState != SkillState.Attack && skillState != SkillState.Prepare)
                {
                    if (defender.GetCurState() == CreatureState.Contrl)
                    {
                        return;
                    }
                    if (state != CreatureState.Move)
                    {
                        Client.IControllerSystem cs = m_ClientGlobal.GetControllerSystem();
                        if (cs != null)
                        {
                            Client.ICombatRobot robot = cs.GetCombatRobot();
                            if (robot.Status == CombatRobotStatus.RUNNING)
                            {
                                if (SkillSystem.GetClientGlobal().IsMainPlayer(defender.GetID()))
                                {//自动挂机 不播受击
                                    return;
                                }
                            }
                        }
                        INPC npc = defender as INPC;
                        if (npc != null)
                        {
                            int         baseID = npc.GetProp((int)EntityProp.BaseID);
                            NpcDataBase ndb    = GameTableManager.Instance.GetTableItem <NpcDataBase>((uint)baseID);
                            if (ndb != null)
                            {
                                if (ndb.dwMonsterType == 3)
                                {
                                    return;
                                }
                            }
                        }
                        //defender.SendMessage( EntityMessage.EntityCommand_StopMove , defender.GetPos() );
                        //移动不播放受击动作
                        PlayAni anim_param = new PlayAni();
                        anim_param.strAcionName  = aniName;
                        anim_param.fSpeed        = 1;
                        anim_param.nStartFrame   = 0;
                        anim_param.nLoop         = 1;
                        anim_param.fBlendTime    = 0.2f;
                        anim_param.aniCallback   = OnHitCallback;
                        anim_param.callbackParam = defender;

                        //                         if (SkillSystem.GetClientGlobal().IsMainPlayer(m_Master.GetID()))
                        //                         {
                        //                             Engine.Utility.Log.Info("技能 播放受击动作 {0} {1}", anim_param.strAcionName, state);
                        //                         }
                        defender.SendMessage(EntityMessage.EntityCommand_PlayAni, anim_param);
                    }
                    else
                    {
                        if (SkillSystem.GetClientGlobal().IsMainPlayer(m_Master.GetID()))
                        {
                            //Engine.Utility.Log.Info("移动不播放受击动作");
                        }
                    }
                }
                else
                {
                    //  Engine.Utility.Log.Error(string.Format("{0}技能状态错误不能播放受击动作 状态:{1}", defender.GetName(), GetTargetSkillState(defender)));
                }
            }
        }