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)); }
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); } } }
/// <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); }
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; }
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); } } }
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; }
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); }
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); } } }
/// <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)); }
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); } }
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); } }
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; } } }
/// <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); }
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); } }
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); } } }
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); }
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; } } }
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; //装备的品质 } }