Exemple #1
0
        /// <summary>
        /// 获取在ui上使用的角色等级颜色(区分浅色和深色)
        /// </summary>
        /// <param name="actorId"></param>
        /// <param name="bk_type">0: 浅色 1: 深色</param>
        /// <returns></returns>
        public static string GetColorLvDiff(uint actorId, uint bk_type)
        {
            string oriLv = GetActorLevel(actorId).ToString();

            if (IsMonsterByActorId(actorId) == false)
            {
                return(oriLv);
            }

            DBActor db        = DBManager.GetInstance().GetDB(typeof(DBActor).Name) as DBActor;
            var     _Color    = db.GetData(actorId).color;
            string  colorText = "<color=#ffffff>";

            switch (_Color)
            {
            case Monster.QualityColor.BOSS:     // 红色
            case Monster.QualityColor.ELITE:
            {
                colorText = GoodsHelper.GetTextColor(GameConst.QUAL_COLOR_RED, bk_type);        // "<color=#FF3F40>";
                break;
            }

            default:
            {
                colorText = GoodsHelper.GetTextColor(GameConst.QUAL_COLOR_WHITE, bk_type);         //"<color=#ffffff>";
                break;
            }
            }

            return(string.Format("{0}Lv{1}</color>", colorText, oriLv));
        }
Exemple #2
0
        /// <summary>
        /// 根据角色id判断是否为跨服boss
        /// </summary>
        /// <param name="actorId"></param>
        /// <param name="isLocal">是否是单服</param>
        /// <returns></returns>
        public static bool IsServerBoss(uint actorId, bool isLocal = false)
        {
            if (IsMonsterByActorId(actorId) == false)
            {
                return(false);
            }

            DBActor db = DBManager.GetInstance().GetDB(typeof(DBActor).Name) as DBActor;

            if (db.ContainsKey(actorId) == false)
            {
                GameDebug.LogError("Record does't exist. actor id:" + actorId);
                return(false);
            }
            var data = db.GetData(actorId);

            if (isLocal)
            {
                return(data.war_tag == GameConst.WAR_TAG_SPAN_BOSS_LOCAL);
            }
            else
            {
                return(data.war_tag == GameConst.WAR_TAG_SPAN_BOSS);
            }
        }
Exemple #3
0
        /// <summary>
        /// 设置变身技能
        /// </summary>
        /// <param name="actor_id"></param>
        void SetShapeShiftSkill(uint actor_id)
        {
            DBActor db = DBManager.Instance.GetDB <DBActor>();

            if (db == null)
            {
                return;
            }

            Dictionary <DBCommandList.OPFlag, SkillInfo> config = null;

            if (!mFitSkillIdPos.TryGetValue(m_ShiftFitIdx, out config))
            {
                config = new Dictionary <DBCommandList.OPFlag, SkillInfo>();
                mFitSkillIdPos[m_ShiftFitIdx] = config;
            }

            // 拿到玩家职业的默认按键信息数据
            DBActor.ActorData act_data = db.GetData(actor_id);
            if (act_data != null)
            {
                for (uint i = 0; i < act_data.skill_count; ++i)
                {
                    SkillInfo info = new SkillInfo();
                    info.Id = act_data.skill_idx[i];
                    config[DBCommandList.BtnToOPFlag(i + 1)] = info;
                }
            }
        }
Exemple #4
0
        public static uint CheckResourceActorId(uint actorId)
        {
            string prefab = RoleHelp.GetPrefabName(actorId);

            if (prefab != "" && SGameEngine.ResourceLoader.Instance.is_exist_asset("Assets/Res/" + prefab + ".prefab") == false)
            {//资源不存在,尝试默认资源
                DBActor db = DBManager.GetInstance().GetDB <DBActor>();

                if (!db.ContainsKey(actorId))
                {
                    return(actorId);
                }

                DBActor.ActorData data = db.GetData(actorId);
                if (data.default_actor_id != 0)
                {
                    return(data.default_actor_id);
                }
                return(actorId);
            }
            else
            {
                return(actorId);
            }
        }
Exemple #5
0
        public static bool HasExistResourceActorId(uint actorId)
        {
            string prefab = RoleHelp.GetPrefabName(actorId);

            if (prefab == null || prefab == "")
            {
                return(false);
            }
            if (prefab != "" && SGameEngine.ResourceLoader.Instance.is_exist_asset("Assets/Res/" + prefab + ".prefab"))
            {
                return(true);
            }

            //资源不存在,尝试默认资源
            DBActor db = DBManager.GetInstance().GetDB <DBActor>();

            if (!db.ContainsKey(actorId))
            {
                return(false);
            }

            DBActor.ActorData data = db.GetData(actorId);
            if (data.default_actor_id == 0 || actorId == data.default_actor_id)
            {
                return(false);
            }
            return(HasExistResourceActorId(data.default_actor_id));
        }
Exemple #6
0
        public static string GetColorNameByActorId(uint actorId)
        {
            string oriName = GetActorName(actorId);

            if (IsMonsterByActorId(actorId) == false)
            {
                return(oriName);
            }
            DBActor db        = DBManager.GetInstance().GetDB(typeof(DBActor).Name) as DBActor;
            var     _Color    = db.GetData(actorId).color;
            string  colorText = "<color=#ffffff>";

            switch (_Color)
            {
            case Monster.QualityColor.BOSS:
            {
                colorText = "<color=#FF3F40>";
                break;
            }

            case Monster.QualityColor.ELITE:
            {
                colorText = "<color=#FF3F40>";
                break;
            }

            default:
            {
                colorText = "<color=#ffffff>";
                break;
            }
            }

            return(string.Format("{0}{1}</color>", colorText, oriName));
        }
Exemple #7
0
        /// <summary>
        /// 通过角色表id来进行属性字段的初始化(用于LocalActorAttribure的初始化)
        /// </summary>
        /// <param name="type_id"></param>
        public void InitAttributeData(uint type_id)
        {
            //查表根据类型填充属性字段
            DBActor db = DBManager.GetInstance().GetDB <DBActor>();

            if (null == db)
            {
                GameDebug.Log("[ActorAttributeData]DBActor is null");
                return;
            }

            if (!db.ContainsKey(type_id))
            {
                GameDebug.Log("[ActorAttributeData]DBActor not exist type_id: " + type_id);
                return;
            }

            DBActor.ActorData data = db.GetData(type_id);
            Vocation            = data.vocation;
            BehaviourTree       = data.behaviour_tree + ".json";
            SummonBehaviourTree = data.summon_behaviour_tree + ".json";
            DefaultMotionRadius = data.motion_radius;
            WarTag        = data.war_tag;
            AttackRotaion = data.attack_rotaion;
            Quality       = (uint)data.color;
            Gravity       = data.gravity;

            // 设置默认属性,保证初始的攻速为1
            Attribute[GameConst.AR_ATK_SPEED_BASE].Value  = 100;
            Attribute[GameConst.AR_ATK_SPEED_ADD].Value   = 0;
            Attribute[GameConst.AR_MOVE_REAL_SPEED].Value = (uint)(data.runspeed);
        }
Exemple #8
0
        public UnitID CreateNPC(Neptune.NPC npcInfo, Actor parent = null)
        {
            if (npcInfo == null)
            {
                GameDebug.LogError("Error in create npc, npc info is null!!!");
                return(null);
            }

            Vector3 bornPos = npcInfo.Position;

            NpcDefine npcDefine = NpcHelper.MakeNpcDefine((uint)npcInfo.ExcelId);

            if (npcDefine == null)
            {
                GameDebug.LogError("Error in create npc, npc define is null!!!");
                return(null);
            }

            // 护送任务NPC可以创建多个
            if (GetNpcByNpcId((uint)npcInfo.Id) != null && npcDefine.Function != NpcDefine.EFunction.ESCORT)
            {
                return(null);
            }

            uint uuid = GetAvailableUUId(npcInfo, npcDefine);

            DBActor dbActor = DBManager.GetInstance().GetDB <DBActor>();

            DBActor.ActorData actorData = dbActor.GetData((uint)npcDefine.ActorId);

            bornPos = RoleHelp.GetPositionInScene((uint)npcDefine.ActorId, npcInfo.Position.x, npcInfo.Position.z);
            if (npcInfo.Id >= 300)
            {
                GameDebug.LogError("npcInfo.Id is too large! " + npcInfo.Id);
            }
            xc.UnitCacheInfo initData = new xc.UnitCacheInfo(EUnitType.UNITTYPE_NPC, uuid);
            initData.ClientNpc       = npcInfo;
            initData.ClientNpcDefine = NpcHelper.MakeNpcDefine((uint)(npcInfo.ExcelId));
            initData.CacheType       = xc.UnitCacheInfo.EType.ET_Create;
            initData.PosBorn         = bornPos;
            initData.ParentActor     = parent;

            // 如果有父角色,则出生在父角色附近的一个随机位置
            if (parent != null)
            {
                Vector3 pos    = AIHelper.GetActorRangeRandomPosition(parent, 1f, 2f);
                bool    result = false;
                initData.PosBorn = InstanceHelper.ClampInWalkableRange(pos, pos, out result);
            }

            mCreatings.Add(initData.UnitID.obj_idx);

            ActorManager.Instance.PushUnitCacheData(initData);

            return(initData.UnitID);
        }
Exemple #9
0
        public static bool GetIsHideSelectEffect(uint actorId)
        {
            DBActor db = DBManager.GetInstance().GetDB(typeof(DBActor).Name) as DBActor;

            if (db.ContainsKey(actorId) == false)
            {
                GameDebug.LogError("Record does't exist. actor id:" + actorId);
                return(false);
            }

            return(db.GetData(actorId).is_hide_select_effect);
        }
Exemple #10
0
        public static uint GetDeadTimeline(uint actorId)
        {
            DBActor db = DBManager.GetInstance().GetDB(typeof(DBActor).Name) as DBActor;

            if (db.ContainsKey(actorId) == false)
            {
                GameDebug.LogError("Record does't exist. actor id:" + actorId);
                return(0);
            }

            return(db.GetData(actorId).dead_timeline);
        }
Exemple #11
0
        public const float DisplayPercentUnitConvert = 100.00f;   //人物属性转百分比

        public static uint GetRaceIdByActorId(uint rid)
        {
            DBActor db = DBManager.GetInstance().GetDB(typeof(DBActor).Name) as DBActor;

            if (db.ContainsKey(rid) == false)
            {
                GameDebug.LogError("Record does't exist. type_id:" + rid);
                return(0);
            }

            return(db.GetData(rid).race_id);
        }
Exemple #12
0
        public static string GetActorName(uint actorId)
        {
            DBActor db = DBManager.GetInstance().GetDB(typeof(DBActor).Name) as DBActor;

            if (db.ContainsKey(actorId) == false)
            {
                GameDebug.LogError("Record does't exist. actor id:" + actorId);
                return(string.Empty);
            }
            var data = db.GetData(actorId);

            return(data.name);
        }
Exemple #13
0
        /// <summary>
        /// 通过角色id来获取角色对应的在对话框里面的摄像机旋转
        /// </summary>
        /// <param name="type_id"></param>
        /// <returns></returns>
        public static Vector3 GetPrefabCamRotateInDialogWnd(uint type_id)
        {
            DBActor db = DBManager.GetInstance().GetDB <DBActor>();

            if (!db.ContainsKey(type_id))
            {
                GameDebug.LogError(string.Format("GetPrefabCamRotateInDialogWnd Id:[{0}] don't exist", type_id));
                return(Vector3.zero);
            }

            DBActor.ActorData data = db.GetData(type_id);
            return(ModelHelper.GetModelCamRotateInDialogWnd(data.model_id));
        }
Exemple #14
0
        public static float GetPrefabFloatScale(uint type_id)
        {
            DBActor db = DBManager.GetInstance().GetDB <DBActor>();

            if (!db.ContainsKey(type_id))
            {
                GameDebug.LogError(string.Format("GetPrefabScale Id:[{0}] don't exist", type_id));
                return(1f);
            }

            DBActor.ActorData data = db.GetData(type_id);
            return(ModelHelper.GetModelScale(data.model_id));
        }
Exemple #15
0
        public static uint GetActorLevel(uint actorId)
        {
            DBActor db = DBManager.GetInstance().GetDB(typeof(DBActor).Name) as DBActor;

            if (db.ContainsKey(actorId) == false)
            {
                GameDebug.LogError("Record does't exist. actor id:" + actorId);
                return(0);
            }
            var data = db.GetData(actorId);

            return((uint)data.level);
        }
Exemple #16
0
        /// <summary>
        /// 通过角色id来获取角色对应的资源缩放
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public static Vector3 GetPrefabScale(xc.UnitCacheInfo info)
        {
            uint id = GetActorId(info);

            DBActor db = DBManager.GetInstance().GetDB <DBActor>();

            if (!db.ContainsKey(id))
            {
                return(Vector3.one);
            }

            float scale = ModelHelper.GetModelScale(db.GetData(id).model_id);

            return(new Vector3(scale, scale, scale));
        }
Exemple #17
0
        /// <summary>
        /// 根据角色id判断是否为世界boss
        /// </summary>
        /// <param name="actorId"></param>
        /// <returns></returns>
        public static bool IsWorldBoss(uint actorId)
        {
            if (IsMonsterByActorId(actorId) == false)
            {
                return(false);
            }
            DBActor db = DBManager.GetInstance().GetDB(typeof(DBActor).Name) as DBActor;

            if (db.ContainsKey(actorId) == false)
            {
                GameDebug.LogError("Record does't exist. actor id:" + actorId);
                return(false);
            }
            var data = db.GetData(actorId);

            return(data.war_tag == GameConst.WAR_TAG_WORLD_BOSS);
        }
Exemple #18
0
        /// <summary>
        /// 根据角色id判断是否为boss
        /// </summary>
        /// <param name="actorId"></param>
        /// <returns></returns>
        public static bool IsBoss(uint actorId)
        {
            if (IsMonsterByActorId(actorId) == false)
            {
                return(false);
            }
            DBActor db = DBManager.GetInstance().GetDB(typeof(DBActor).Name) as DBActor;

            if (db.ContainsKey(actorId) == false)
            {
                GameDebug.LogError("Record does't exist. actor id:" + actorId);
                return(false);
            }
            var data = db.GetData(actorId);

            return(data.color == Monster.QualityColor.BOSS);
        }
Exemple #19
0
        /// <summary>
        /// 通过角色id来获取角色对应的角色头像
        /// </summary>
        /// <param name="type_id"></param>
        /// <returns></returns>
        public static string GetRoleIcon(uint type_id)
        {
            DBActor db = DBManager.GetInstance().GetDB <DBActor>();

            if (!db.ContainsKey(type_id))
            {
                GameDebug.LogError(string.Format("GetRoleIcon Id:[{0}] don't exist", type_id));
                return("");
            }

            DBActor.ActorData data = db.GetData(type_id);
            string            icon = ModelHelper.GetModelIcon(data.model_id);

            if (icon.Length == 0)
            {
                return(string.Empty);
            }

            return(icon);
        }
Exemple #20
0
        /// <summary>
        /// 通过角色id来获取角色对应的资源名字
        /// </summary>
        public static string GetPrefabName(xc.UnitCacheInfo info)
        {
            uint id = GetActorId(info);

            DBActor db = DBManager.GetInstance().GetDB <DBActor>();

            if (!db.ContainsKey(id))
            {
                return(string.Empty);
            }

            string name = ModelHelper.GetModelPrefab(db.GetData(id).model_id, info.IsUIModel);

            if (name.Length == 0)
            {
                return(string.Empty);
            }

            return(name);
        }
Exemple #21
0
        /// <summary>
        /// 根据角色表id来获取角色的名字
        /// </summary>
        public static string GetActorName(uint type_id)
        {
            DBActor db = DBManager.GetInstance().GetDB <DBActor>();

            if (!db.ContainsKey(type_id))
            {
                GameDebug.LogError(string.Format("GetActorName Id:[{0}] don't exist", type_id));
                return("");
            }

            DBActor.ActorData data = db.GetData(type_id);
            string            name = data.name;

            if (name.Length == 0)
            {
                return("");
            }

            return(name);
        }
Exemple #22
0
        /// <summary>
        /// 通过角色id来获取角色对应的资源名字
        /// </summary>
        public static string GetPrefabName(uint type_id, bool is_local_player = false)
        {
            DBActor db = DBManager.GetInstance().GetDB <DBActor>();

            if (!db.ContainsKey(type_id))
            {
                GameDebug.LogError(string.Format("GetPreFabName Id:[{0}] don't exist", type_id));
                return("");
            }

            DBActor.ActorData data = db.GetData(type_id);
            string            name = ModelHelper.GetModelPrefab(data.model_id, is_local_player);

            if (name.Length == 0)
            {
                return(string.Empty);
            }

            return(name);
        }
Exemple #23
0
        /// <summary>
        /// 根据角色id判断是否为怪
        /// </summary>
        /// <param name="actorId"></param>
        /// <returns></returns>
        public static bool IsMonsterByActorId(uint actorId)
        {
            DBActor db = DBManager.GetInstance().GetDB(typeof(DBActor).Name) as DBActor;

            if (db.ContainsKey(actorId) == false)
            {
                GameDebug.LogError("Record does't exist. actor id:" + actorId);
                return(false);
            }
            var data     = db.GetData(actorId);
            var UnitType = (EUnitType)data.type;

            if (UnitType == EUnitType.UNITTYPE_MONSTER)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Exemple #24
0
        public static string GetDeadNotify(uint actorId)
        {
            DBActor db = DBManager.GetInstance().GetDB(typeof(DBActor).Name) as DBActor;

            if (db.ContainsKey(actorId) == false)
            {
                GameDebug.LogError("Record does't exist. actor id:" + actorId);
                return(string.Empty);
            }

            var notify_notice = db.GetData(actorId).dead_notify;

            if (notify_notice != null)
            {
                return(System.Text.Encoding.UTF8.GetString(notify_notice));
            }
            else
            {
                return(string.Empty);
            }
        }