Exemple #1
0
        public string GetAtkStr(ActorAttribute actor_attr, DBAtkGroupItem atk_item)
        {
            if (actor_attr == null || atk_item == null)
            {
                return("");
            }
            IActorAttribute value_1_data = actor_attr.GetAttr(atk_item.ItemArray[0].Id);
            IActorAttribute value_2_data = actor_attr.GetAttr(atk_item.ItemArray[1].Id);

            if (value_1_data == null && value_2_data == null)
            {
                return("");
            }
            long value_1 = 0;

            if (value_1_data != null)
            {
                value_1 = value_1_data.Value;
            }
            long value_2 = 0;

            if (value_2_data != null)
            {
                value_2 = value_2_data.Value;
            }
            return(GetGroupStr(value_1, value_2));
        }
Exemple #2
0
 public void Clear()
 {
     UnitId = null;
     if (Attribute != null)
     {
         Attribute.Clear();
         Attribute = null;
     }
 }
        public ActorAttribute GetGoodsShowAttr(uint gid)
        {
            ActorAttribute attr = null;

            if (mGoodsShowAttrsInfos.TryGetValue(gid, out attr))
            {
                return(attr);
            }

            string query_str    = string.Format("SELECT * FROM {0} WHERE {0}.{1}=\"{2}\"", mTableName, "gid", gid.ToString());
            var    table_reader = DBManager.Instance.ExecuteSqliteQueryToReader(GlobalConfig.DBFile, mTableName, query_str);

            if (table_reader == null)
            {
                mGoodsShowAttrsInfos[gid] = null;
                return(null);
            }

            if (!table_reader.HasRows)
            {
                mGoodsShowAttrsInfos[gid] = null;
                table_reader.Close();
                table_reader.Dispose();
                return(null);
            }

            if (!table_reader.Read())
            {
                mGoodsShowAttrsInfos[gid] = null;
                table_reader.Close();
                table_reader.Dispose();
                return(null);
            }

            attr = new ActorAttribute();
            string attrsStr = GetReaderString(table_reader, "attrs");

            attrsStr = attrsStr.Replace(" ", "");
            var matchs = Regex.Matches(attrsStr, @"\{(\d+),(\d+)\}");

            foreach (Match _match in matchs)
            {
                if (_match.Success)
                {
                    uint attrId    = (DBTextResource.ParseUI(_match.Groups[1].Value));
                    uint attrValue = DBTextResource.ParseUI(_match.Groups[2].Value);
                    attr.Add(attrId, attrValue);
                }
            }

            mGoodsShowAttrsInfos[gid] = attr;

            table_reader.Close();
            table_reader.Dispose();

            return(attr);
        }
 void InitBaseAttr()
 {
     BasicAttrs = new ActorAttribute();
     if (DBSoul != null)
     {
         foreach (var kv in DBSoul.BasicAttrs)
         {
             BasicAttrs.Add(kv.Key, (long)kv.Value);
         }
     }
 }
Exemple #5
0
        /// <summary>
        /// 根据PkgKvMin列表生成ActorAttribute
        /// </summary>
        /// <param name="pkgKvMins"></param>
        /// <returns></returns>
        public static ActorAttribute ParseByPkgKvMins(List <Net.PkgKvMin> pkgKvMins)
        {
            ActorAttribute actorAttribute = new ActorAttribute();

            foreach (var attr in pkgKvMins)
            {
                actorAttribute.Add(attr.k, attr.v);
            }

            return(actorAttribute);
        }
Exemple #6
0
        public ActorAttribute Clone()
        {
            ActorAttribute attr = new ActorAttribute();

            foreach (var id in base.Keys)
            {
                attr.Add(id, this[id].Value);
            }

            return(attr);
        }
 public GoodsLightWeaponSoul(uint GID)
 {
     CreateGoodsByTypeId(GID);
     if (DBSoul == null)
     {
         GameDebug.LogError("光武兵魂找不到ID[{0}]的数据");
         return;
     }
     InitBaseAttr();
     UpgradeAttrs = new ActorAttribute();
     IsWearing    = false;
 }
Exemple #8
0
        public void UpdateAttr(uint gid, Net.PkgGoodsInfo decorate)
        {
            NetDecorate = decorate;

            if (BasicAttrs == null)
            {
                BasicAttrs = new ActorAttribute();
            }
            else
            {
                BasicAttrs.Clear();
            }

            if (LegendAttrs == null)
            {
                LegendAttrs = new EquipAttributes();
            }
            else
            {
                LegendAttrs.Clear();
            }

            var rec = DBDecorate.Instance.GetData(gid);

            if (rec != null)
            {
                string raw = rec.Attrs;
                raw = raw.Replace(" ", "");

                var matchs = Regex.Matches(raw, @"\{(\d+),(\d+)\}");
                foreach (Match _match in matchs)
                {
                    if (_match.Success)
                    {
                        uint attrId    = (DBTextResource.ParseUI(_match.Groups[1].Value));
                        uint attrValue = DBTextResource.ParseUI(_match.Groups[2].Value);
                        BasicAttrs.Add(attrId, attrValue);
                    }
                }
            }

            if (decorate != null && decorate.decorate != null && decorate.decorate.legend_attrs != null)
            {
                foreach (var attr in decorate.decorate.legend_attrs)
                {
                    LegendAttrs.Add(attr.id, attr.vals);
                }
            }
        }
Exemple #9
0
        public string GetTextByAttr(ActorAttribute attr)
        {
            int index = 1;

            //string attrStr = "";
            //foreach (var kv in attr)
            //{
            //    DefaultActorAttribute default_attr = kv.Value as DefaultActorAttribute;
            //    string name = default_attr.Name;
            //    if (index < attr.Count)
            //    {
            //        name = name + "\n";
            //    }
            //    attrStr = attrStr + name;
            //    index++;
            //}


            List <xc.Equip.EquipHelper.AttributeDescItem> list = xc.Equip.EquipHelper.GetEquipBaseDesItemArray(attr);
            StringBuilder showStr = new StringBuilder();

            for (int i = 0; i < list.Count; i++)
            {
                showStr.Append(list[i].PropName);
                showStr.Append(": ");
                showStr.Append(list[i].ValueStr);
                if (i < list.Count - 1)
                {
                    showStr.Append("\n");
                }
            }


            return(showStr.ToString());

            /*
             * <color=#ebded6>武魂等级:30</color>
             * <color=#ebded6>镶嵌后获得属性:</color>
             * <color=#2ae961>命中+137</color>
             *
             * <color=#ebded6>武魂满级之后:</color>
             * <color=#2ae961>命中+5600</color>
             *
             * <color=#0fc5f9>目不窥园,心无旁骛</color>
             */

            //return attrStr;
        }
Exemple #10
0
 public DBAtkGroupItem GetAtkGroupItem(ActorAttribute actor_attr)
 {
     if (actor_attr == null)
     {
         return(null);
     }
     foreach (var item in mAtkGroupItemArray)
     {
         if (actor_attr.ContainsKey(item.Value.ItemArray[0].Id) == false)
         {
             continue;
         }
         return(item.Value);
     }
     return(null);
 }
Exemple #11
0
        public GoodsWeddingRing(uint idInfo, XLua.LuaTable mateInfo)
        {
            mIdInfo   = idInfo;
            mMateInfo = mateInfo;
            CreateGoodsByTypeId(DBData.gid);


            if (normal_attrs == null)
            {
                normal_attrs = new ActorAttribute();
            }
            else
            {
                normal_attrs.Clear();
            }

            if (DBData != null)
            {
                List <DBTextResource.DBAttrItem> list = DBData.normal_attrs;
                for (int i = 0; i < list.Count; i++)
                {
                    normal_attrs.Add(list[i].attr_id, list[i].attr_num);
                }
            }



            if (couple_attrs == null)
            {
                couple_attrs = new ActorAttribute();
            }
            else
            {
                couple_attrs.Clear();
            }

            if (DBData != null)
            {
                List <DBTextResource.DBAttrItem> list = DBData.couple_attrs;
                for (int i = 0; i < list.Count; i++)
                {
                    couple_attrs.Add(list[i].attr_id, list[i].attr_num);
                }
            }
        }
Exemple #12
0
        /// <summary>
        /// 获取法宝自身评分
        /// </summary>
        /// <param name="magicId"></param>
        public int GetMagicSelfScore(uint magicId)
        {
            var magicInfo = GetData(magicId);

            if (magicInfo == null)
            {
                return(0);
            }

            ActorAttribute attr = new ActorAttribute();

            foreach (var v in magicInfo.AssistAttrs)
            {
                attr.Add(v.attr_id, v.attr_num);
            }

            return(xc.Equip.EquipHelper.GetEquipBaseAttrScoreByType(AttrScoreGType.EquipBase, attr));
        }
Exemple #13
0
        public void UpdateAttr(Net.PkgMagicEquip equip)
        {
            // 基础属性
            if (BasicAttrs == null)
            {
                BasicAttrs = new ActorAttribute();
            }

            else
            {
                BasicAttrs.Clear();
            }

            if (DbData != null)
            {
                foreach (var v in DbData.BaseAttrs)
                {
                    BasicAttrs.Add(v.attr_id, v.attr_num);
                }
            }

            // 附加属性
            if (AppendAttrs == null)
            {
                AppendAttrs = new EquipAttributes();
            }

            else
            {
                AppendAttrs.Clear();
            }

            if (equip == null)
            {
                return;
            }

            foreach (var attr in equip.spec_attrs)
            {
                AppendAttrs.Add(attr.id, attr.vals);
            }
        }
Exemple #14
0
        private void InitBaseAttrsByConfig()
        {
            if (DBData == null)
            {
                return;
            }

            if (BasicAttrs == null)
            {
                BasicAttrs = new ActorAttribute();
            }
            else
            {
                BasicAttrs.Clear();
            }
            foreach (var kv in DBData.BasicAttrs)
            {
                BasicAttrs.Add(kv.Key, (long)kv.Value);
            }
        }
Exemple #15
0
        private void SetAttribute(string key, ActorAttribute attr, bool isCur)
        {
            var info = DBSoulLv.Instance.GetData(key);

            if (info != null)
            {
                using (var iter = info.attr.GetEnumerator())
                {
                    while (iter.MoveNext())
                    {
                        var cur = iter.Current;
                        attr.Add(cur.Key, cur.Value);
                    }
                }

                if (isCur)
                {
                    UpLvNeedVal = info.cream;
                }
            }
        }
Exemple #16
0
        /// <summary>
        /// 获取对应光武类型上镶嵌的兵魂的所有属性
        /// </summary>
        /// <param name="Pos_Type"></param>
        /// <returns></returns>
        public static ActorAttribute GetTotalAttrs(uint Pos_Type)
        {
            ActorAttribute TotalAttr = new ActorAttribute();

            if (ItemManager.Instance.InstalledLightWeaponSoul.ContainsKey(Pos_Type))
            {
                foreach (var Souls in ItemManager.Instance.InstalledLightWeaponSoul[Pos_Type])
                {
                    foreach (var basicAttr in Souls.Value.BasicAttrs)
                    {
                        TotalAttr.Add(basicAttr.Key, basicAttr.Value.Value);
                    }

                    foreach (var upgradeAttr in Souls.Value.UpgradeAttrs)
                    {
                        TotalAttr.Add(upgradeAttr.Key, upgradeAttr.Value.Value);
                    }
                }
            }
            return(TotalAttr);
        }
Exemple #17
0
        public void UpdateGodEquip(Net.PkgGodEquip godEquip)
        {
            PkgGodEquip = godEquip;
            if (PkgGodEquip == null)
            {
                InitBaseAttrsByConfig();
                return;
            }
            Net.PkgKvMin kv;

            if (BasicAttrs == null)
            {
                BasicAttrs = new ActorAttribute();
            }
            else
            {
                BasicAttrs.Clear();
            }

            for (var i = 0; i < godEquip.base_attrs.Count; i++)
            {
                kv = godEquip.base_attrs[i];
                BasicAttrs.Add(kv.k, kv.v);
            }


            if (ExtraAttrs == null)
            {
                ExtraAttrs = new EquipAttributes();
            }
            else
            {
                ExtraAttrs.Clear();
            }

            foreach (var attr in godEquip.spec_attrs)
            {
                ExtraAttrs.Add(attr.id, attr.vals);
            }
        }
Exemple #18
0
        public GoodsMountEquip(uint typeId, Net.PkgGoodsInfo goodsInfo)
        {
            _netInfo = goodsInfo;
            CreateGoodsByTypeId(typeId);
            if (BasicAttrs == null)
            {
                BasicAttrs = new ActorAttribute();
            }
            else
            {
                BasicAttrs.Clear();
            }

            if (DBData != null)
            {
                List <DBTextResource.DBAttrItem> list = DBData.attrs;
                for (int i = 0; i < list.Count; i++)
                {
                    BasicAttrs.Add(list[i].attr_id, list[i].attr_num);
                }
            }
        }
Exemple #19
0
        public ActorAttribute StrengthAttr(uint lv, uint equipPos)
        {
            string         key  = string.Format("{0}_{1}", lv, equipPos);
            ActorAttribute attr = null;

            if (mStrengthAttrs.TryGetValue(key, out attr) == true)
            {
                return(attr);
            }

            attr = new ActorAttribute();

            List <string> dbs = DBManager.Instance.QuerySqliteField <string>(GlobalConfig.DBFile, "data_strength_attr", "csv_id", key, "base_attr");

            if (dbs.Count == 0)
            {
                mStrengthAttrs.Add(key, attr);
                return(attr);
            }

            string raw = dbs[0];

            raw = raw.Replace(" ", "");
            var matchs = Regex.Matches(raw, @"\{(\d+),(\d+)\}");

            foreach (Match _match in matchs)
            {
                if (_match.Success)
                {
                    uint attrId    = (DBTextResource.ParseUI(_match.Groups[1].Value));
                    uint attrValue = DBTextResource.ParseUI(_match.Groups[2].Value);
                    attr.Add(attrId, attrValue);
                }
            }

            mStrengthAttrs.Add(key, attr);
            return(attr);
        }
Exemple #20
0
        public void UpdateSoul()
        {
            if (BasicAttrs == null)
            {
                BasicAttrs = new ActorAttribute();
            }
            BasicAttrs.Clear();


            CurLvHaveVal = 0;
            if (Lv >= 2)
            {
                for (int i = 1; i < Lv; i++)
                {
                    string csv_id = string.Format("{0}_{1}", type_idx, i);
                    var    info   = DBSoulLv.Instance.GetData(csv_id);
                    if (info != null)
                    {
                        CurLvHaveVal += info.cream;
                    }
                }
            }



            string key = string.Format("{0}_{1}", type_idx, Lv);

            SetAttribute(key, BasicAttrs, true);



            if (MaxBasicAttrs == null)
            {
                MaxBasicAttrs = new ActorAttribute();
            }
            MaxBasicAttrs.Clear();
            var data_soul_list = DBManager.Instance.QuerySqliteLikeKeyRow <string>(GlobalConfig.DBFile, "data_soul", "gid", type_idx.ToString());

            if (data_soul_list.Count <= 0)
            {
                GameDebug.LogError("不存在该武魂id" + type_idx.ToString());
                return;
            }

            var data_soul = data_soul_list[0];

            MaxLv = DBTextResource.ParseUI(data_soul["max_lv"]);
            Tips  = data_soul["tips"];


            mSoulType = DBTextResource.ParseUI(data_soul["type"]);

            if (data_soul["s_type"].Contains("["))
            {
                mTypeList = DBTextResource.ParseArrayUint(data_soul["s_type"], ",");
            }
            else
            {
                mTypeList = new List <uint>();
                uint value = DBTextResource.ParseUI(data_soul["s_type"]);
                mTypeList.Add(value);
            }


            key = string.Format("{0}_{1}", type_idx, MaxLv);
            SetAttribute(key, MaxBasicAttrs, false);


            IsMaxLv = MaxLv == Lv;


            string oriDes = GoodsHelper.GetGoodsDescriptionByTypeId(type_idx);

            if (isShowAttr)
            {
                base.description = GetShowDetailText();
            }
            else
            {
                base.description = oriDes;
            }
        }
        public void ProcessCharacterInfo(S2CPlayerSyncAttrs attrs)
        {
            // 有变化的属性
            ActorAttribute actorAttributeOffset = new ActorAttribute();

            actorAttributeOffset.Clear();

            // 同步服务端数据
            foreach (PkgAttrElm attrElm in attrs.attr_elm)
            {
                // 属性赋值
                IActorAttribute attr = null;
                if (LocalActorAttribute.Attribute.TryGetValue(attrElm.attr, out attr))
                {
                    if ((ushort)attrElm.attr != GameConst.AR_BAT_PW)
                    {
                        // 属性增加才显示
                        if (attrElm.value > attr.Value)
                        {
                            actorAttributeOffset.Add(attrElm.attr, attrElm.value - attr.Value);
                        }
                    }
                    attr.Value = attrElm.value;
                }
                else
                {
                    if ((ushort)attrElm.attr != GameConst.AR_BAT_PW)
                    {
                        actorAttributeOffset.Add(attrElm.attr, attrElm.value);
                    }
                    //包含其他字段赋值
                    LocalActorAttribute.Attribute.Add(attrElm.attr, attrElm.value);
                }

                if ((ushort)attrElm.attr == GameConst.AR_BAT_PW)//战斗力赋值
                {
                    long new_battlepower = attrElm.value;
                    long delta           = new_battlepower - mLastBattlePower;
                    if (new_battlepower != 0 && mLastBattlePower != 0)
                    {
                        //if (delta > 0)
                        if (delta != 0)
                        {
                            TryShowFightRankAnim(delta);
                        }
                    }

                    mLastBattlePower = new_battlepower;
                    LocalActorAttribute.BattlePower = new_battlepower;

                    if (delta != 0)
                    {
                        ClientEventMgr.GetInstance().FireEvent((int)ClientEvent.CE_LOCALPLAYER_BATTLE_POWER_CHANGED, null);
                    }
                }

                // 移动速度的同步需要特殊处理
                Actor actor = Game.GetInstance().GetLocalPlayer();
                if (null != actor)
                {
                    if ((ushort)attrElm.attr == GameConst.AR_SPEED || (ushort)attrElm.attr == GameConst.AR_SPEED_ADD)
                    {
                        actor.SetMoveSpeedScale(LocalActorAttribute.MoveSpeedScale * GlobalConst.AttrConvert, LocalActorAttribute.MoveSpeedAdd);
                    }
                }
            }

            if (mUpdateTipsShowLevelRange == null)
            {
                mUpdateTipsShowLevelRange = GameConstHelper.GetUintList("GAME_ATTR_UPDATE_TIPS_SHOW_LEVEL_RANGE");
            }
            if (mUpdateTipsShowReasons == null)
            {
                mUpdateTipsShowReasons = GameConstHelper.GetUintList("GAME_ATTR_UPDATE_TIPS_SHOW_REASONS");
            }
            bool meetShowReason = false;

            foreach (uint reason in mUpdateTipsShowReasons)
            {
                if (reason == attrs.reason)
                {
                    meetShowReason = true;
                }
            }
            if (meetShowReason == true && Level >= mUpdateTipsShowLevelRange[0] && Level <= mUpdateTipsShowLevelRange[1] && attrs.init != 1 && actorAttributeOffset.Count > 0)
            {
                // 属性变化界面的弹出,如果战力提升界面正在显示,则等该界面关闭后再弹出属性变化界面
                if (xc.ui.ugui.UIManager.Instance.GetExistingWindow("UIAttributeTipsWindow") != null)
                {
                    ClientEventMgr.GetInstance().FireEvent((int)ClientEvent.CE_SHOW_ATTRS_UPDATE_WINDOW, new CEventBaseArgs(actorAttributeOffset));
                }
                else
                {
                    xc.ui.ugui.UIManager.Instance.ShowWindow("UIAttributeTipsWindow", actorAttributeOffset);
                }
            }

            // 设置本地玩家的属性
            Actor local_player = Game.GetInstance().GetLocalPlayer();

            if (null != local_player)
            {
                bool need_update_hp = false;
                if (mLastHp != LocalActorAttribute.HP || mLastHpMax != LocalActorAttribute.HPMax)
                {
                    need_update_hp = true;
                    mLastHp        = LocalActorAttribute.HP;
                    mLastHpMax     = LocalActorAttribute.HPMax;
                }

                local_player.SetActorAttribute(LocalActorAttribute);

                ClientEventMgr.GetInstance().FireEvent((int)ClientEvent.CE_ACTOR_BASEINFO_UPDATE, new CEventActorArgs(local_player));

                if (need_update_hp)
                {
                    ClientEventMgr.GetInstance().FireEvent((int)ClientEvent.CE_LOCAL_PLAYER_NWAR_CHANGED, new CEventEventParamArgs("hp", LocalActorAttribute.HP));
                    local_player.CurLife  = local_player.CurLife;// 强制更新下当前血量, 发送相关的消息
                    local_player.FullLife = LocalActorAttribute.HPMax;
                }
            }
        }
Exemple #22
0
        public void UpdateAttr(uint gid, Net.PkgGoodsInfo equip)
        {
            NetEquip = equip;
            if (LegendAttrs == null)
            {
                LegendAttrs = new EquipAttributes();
            }
            else
            {
                LegendAttrs.Clear();
            }
            if (BasicAttrs == null)
            {
                BasicAttrs = new ActorAttribute();
            }
            else
            {
                BasicAttrs.Clear();
            }

            if (ExtraAttrs == null)
            {
                ExtraAttrs = new ActorAttribute();
            }
            else
            {
                ExtraAttrs.Clear();
            }

            //生成基础属性
            var base_attr = DBEquipBase.Instance.GetAttrInfo(gid);

            if (base_attr != null)
            {
                using (var iter = base_attr.GetEnumerator())
                {
                    while (iter.MoveNext())
                    {
                        var cur = iter.Current;
                        BasicAttrs.Add(cur.Key, cur.Value);
                    }
                }
            }

            if (NetEquip == null)
            {
                return;
            }
            if (equip != null && equip.equip != null && equip.equip.legend_attrs != null)
            {
                foreach (var attr in equip.equip.legend_attrs)
                {
                    LegendAttrs.Add(attr.id, attr.vals);
                }
            }
            if (equip != null && equip.equip != null && equip.equip.extra_attrs != null)
            {
                foreach (var attr in equip.equip.extra_attrs)
                {
                    ExtraAttrs.Add(attr.k, attr.v);
                }
            }
            if (equip != null && equip.equip != null)
            {
                SuitLv = equip.equip.suit_lv;
                foreach (var item in equip.equip.gems)
                {
                    if (Gems.ContainsKey(item.id) == true)
                    {
                        Gems[item.id] = item.gem_id;
                    }
                    else
                    {
                        Gems.Add(item.id, item.gem_id);
                    }
                }

                // 套装精炼等级
                RefineLv = equip.equip.refine_lv;

                // 铸魂等级
                CastSoulLv = equip.equip.cast_soul_lv;

                // 记录扩展属性
                if (equip.equip.extend_propertys != null && equip.equip.extend_propertys.Count > 0)
                {
                    ExtendPropertys = new Dictionary <string, string>();
                    ExtendPropertys.Clear();
                    foreach (Net.PkgStrStr pkgStrStr in equip.equip.extend_propertys)
                    {
                        ExtendPropertys.Add(System.Text.Encoding.UTF8.GetString(pkgStrStr.k), System.Text.Encoding.UTF8.GetString(pkgStrStr.v));
                    }
                }
            }
            if (IsHasIdentifyWing())
            {
                this.color_type = equip.equip.qual; //装备的品质
            }
        }