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); }
/// <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); }
void InitBaseAttr() { BasicAttrs = new ActorAttribute(); if (DBSoul != null) { foreach (var kv in DBSoul.BasicAttrs) { BasicAttrs.Add(kv.Key, (long)kv.Value); } } }
/// <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); }
/// <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)); }
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; } } }
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 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; } } }