////登陆时发送给客户端圣物数据 ////发送格式为 string = 圣物数量:<圣物类型:圣物部件数:<部件位置:部件阶数:部件碎片数量:>> //public void PlayGameAfterSend(GameClient client) //{ // TarotSystemData tarotData = client.ClientData.TarotData; // if (tarotData == null) // return; // client.sendCmd<TarotSystemData>((int)TCPGameServerCmds.CMD_SPR_TAROT_DATA, tarotData); //} /// <summary> /// 更新玩家塔罗牌加成属性 /// </summary> public void UpdataPalyerTarotAttr(GameClient client) { var itemNew = new EquipPropItem(); var extProps = itemNew.ExtProps; foreach (var card in client.ClientData.TarotData.TarotCardDatas) { EquipPropItem item = GameManager.EquipPropsMgr.FindEquipPropItem(card.GoodId); if (card.Postion > 0) { for (int i = 0; i < extProps.Length; i++) { var addLevel = 0; if (client.ClientData.TarotData.KingData.AddtionDict.ContainsKey(card.GoodId)) { addLevel = client.ClientData.TarotData.KingData.AddtionDict[card.GoodId]; } extProps[i] += item.ExtProps[i] * (card.Level + addLevel); } } } client.ClientData.PropsCacheManager.SetExtProps(PropsSystemTypes.TarotCard, 0, extProps); GameManager.ClientMgr.NotifyUpdateEquipProps(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client); }
/// <summary> /// 设置属性 /// </summary> private static void SetTalentProp(GameClient client, TalentEffectType type, EquipPropItem item) { switch (type) { case TalentEffectType.PropBasic: client.ClientData.PropsCacheManager.SetBaseProps((int)PropsSystemTypes.Talent, (int)type, item.BaseProps); break; case TalentEffectType.PropExt: client.ClientData.PropsCacheManager.SetExtProps((int)PropsSystemTypes.Talent, (int)type, item.ExtProps); break; } }
public static void SetUnionPalaceProps(GameClient client, UnionPalaceData myData) { lock (client.ClientData.LockUnionPalace) { int life = 0; int attack = 0; int defense = 0; int injure = 0; UnionPalaceBasicInfo basicInfo = UnionPalaceManager.GetUPBasicInfoByID(myData.StatueID); int bangHuiLevel = Global.GetBangHuiLevel(client); if (basicInfo != null && basicInfo.UnionLevel <= bangHuiLevel && myData.StatueLevel <= bangHuiLevel) { life = myData.LifeAdd; attack = myData.AttackAdd; defense = myData.DefenseAdd; injure = myData.AttackInjureAdd; } foreach (UnionPalaceBasicInfo d in UnionPalaceManager._unionPalaceBasicList.Values) { if (d.StatueID < myData.StatueID && d.UnionLevel <= bangHuiLevel && d.StatueLevel <= bangHuiLevel) { life += d.LifeMax; attack += d.AttackMax; defense += d.DefenseMax; injure += d.AttackInjureMax; } } double lifePercent = 0.0; int step = (myData.StatueID - 1) / 8; if (step > 0) { if (myData.ResultType == 4 || myData.ResultType == -7) { int maxID = 0; IOrderedEnumerable <UnionPalaceBasicInfo> temp = from info in UnionPalaceManager._unionPalaceBasicList.Values where info.StatueID <= myData.StatueID && info.StatueLevel <= myData.StatueLevel && info.UnionLevel <= myData.UnionLevel && info.UnionLevel > 0 orderby info.StatueID descending select info; if (temp.Any <UnionPalaceBasicInfo>()) { maxID = temp.First <UnionPalaceBasicInfo>().StatueID; } step = maxID / 8; } UnionPalaceSpecialInfo s = UnionPalaceManager.GetUPSpecialInfoByID(step); if (s != null && s.UnionLevel <= bangHuiLevel) { lifePercent = s.MaxLifePercent; } } EquipPropItem propItem = new EquipPropItem(); propItem.ExtProps[13] = (double)life; propItem.ExtProps[45] = (double)attack; propItem.ExtProps[46] = (double)defense; propItem.ExtProps[27] = (double)injure; propItem.ExtProps[14] = lifePercent; client.ClientData.PropsCacheManager.SetExtProps(new object[] { 19, propItem.ExtProps }); } }
public static void SetUnionPalaceProps(GameClient client, UnionPalaceData myData) { lock (client.ClientData.LockUnionPalace) { //加成 int life = 0; int attack = 0; int defense = 0; int injure = 0; UnionPalaceBasicInfo basicInfo = GetUPBasicInfoByID(myData.StatueID); int bangHuiLevel = Global.GetBangHuiLevel(client); if (basicInfo != null && basicInfo.UnionLevel <= bangHuiLevel && myData.StatueLevel <= bangHuiLevel) { life = myData.LifeAdd; attack = myData.AttackAdd; defense = myData.DefenseAdd; injure = myData.AttackInjureAdd; } foreach (UnionPalaceBasicInfo d in _unionPalaceBasicList.Values) { if (d.StatueID < myData.StatueID && d.UnionLevel <= bangHuiLevel && d.StatueLevel <= bangHuiLevel) { life += d.LifeMax; attack += d.AttackMax; defense += d.DefenseMax; injure += d.AttackInjureMax; } } //额外加成 double lifePercent = 0; int step = (myData.StatueID - 1) / STATUE_COUNT; if (step > 0) { if (myData.ResultType == (int)EUnionPalaceState.PalaceMore || myData.ResultType == (int)EUnionPalaceState.EPalaceMore) { int maxID = 0; var temp = from info in _unionPalaceBasicList.Values where info.StatueID <= myData.StatueID && info.StatueLevel <= myData.StatueLevel && info.UnionLevel <= myData.UnionLevel && info.UnionLevel > 0 orderby info.StatueID descending select info; if (temp.Any()) { maxID = temp.First <UnionPalaceBasicInfo>().StatueID; } step = maxID / STATUE_COUNT; } UnionPalaceSpecialInfo s = GetUPSpecialInfoByID(step); if (s != null && s.UnionLevel <= bangHuiLevel) { lifePercent = s.MaxLifePercent; } } EquipPropItem propItem = new EquipPropItem(); propItem.ExtProps[(int)ExtPropIndexes.MaxLifeV] = life; propItem.ExtProps[(int)ExtPropIndexes.AddAttack] = attack; propItem.ExtProps[(int)ExtPropIndexes.AddDefense] = defense; propItem.ExtProps[(int)ExtPropIndexes.AddAttackInjure] = injure; propItem.ExtProps[(int)ExtPropIndexes.MaxLifePercent] = lifePercent; client.ClientData.PropsCacheManager.SetExtProps((int)PropsSystemTypes.UnionPalace, propItem.ExtProps); } }