protected virtual void RPC_S2C_SyncEquips(uLink.BitStream stream, uLink.NetworkMessageInfo info) { int[] equipIDs = stream.Read <int[]>(); if (null == _entity) { return; } EquipmentCmpt equipmentCmpt = _entity.GetCmpt <EquipmentCmpt>(); if (null == equipmentCmpt) { return; } foreach (int id in equipIDs) { if (-1 == id) { continue; } ItemObject equip = ItemMgr.Instance.Get(id); if (null != equip) { equipmentCmpt.PutOnEquipment(equip); } } }
public void POW_AddChargItem(int index, ItemObject item) { if (item == null) { return; } //´íÎó #7042 Crash bug if (null == PeCreature.Instance || null == PeCreature.Instance.mainPlayer) { return; } PlayerPackageCmpt packageCmpt = PeCreature.Instance.mainPlayer.GetCmpt <PlayerPackageCmpt>(); if (null == packageCmpt || null == packageCmpt.package || !packageCmpt.package.HasItemObj(item)) { return; } EquipmentCmpt equipCmpt = PeCreature.Instance.mainPlayer.GetCmpt <EquipmentCmpt>(); if (null == equipCmpt || null == equipCmpt._ItemList || equipCmpt._ItemList.Contains(item)) { return; } RPCServer(EPacketType.PT_CL_POW_AddChargItem, index, item.instanceId); }
/// <summary>套装属性</summary> string SuitAttribute(string text) { string str = text; if (null == str) { return(string.Empty); } if (null == ItemObj) { return(text); } string greenColFomat = "[B7EF54]{0}[-]"; string grayColFomat = "[808080]{0}[-]"; string suitNameFomat = "{0} ( {1}/{2} )"; char newLineStr = '\n'; string baseAttribute = ""; //基础属性 string singleAttribute = ""; //单个属性加成 string suitActiveInfo = ""; //套装信息 string suitAttribute = ""; //套装属性加成 string commonAttribute = ""; //通用属性 List <string> curCommonAttributes = new List <string>(); for (int i = 0; i < m_CommonAttributeIDs.Count; i++) { curCommonAttributes.Add(PELocalization.GetString(m_CommonAttributeIDs[i])); } if (curCommonAttributes.Count > 0) { string[] strArray = text.Split(new string[] { "\\n" }, StringSplitOptions.RemoveEmptyEntries); if (null != strArray && strArray.Length > 0) { string curStr = ""; bool containsCommonAttri = false; for (int i = 0; i < strArray.Length; i++) { containsCommonAttri = false; curStr = strArray[i]; for (int j = 0; j < curCommonAttributes.Count; j++) { if (curStr.Contains(curCommonAttributes[j])) { commonAttribute += (curStr + newLineStr); containsCommonAttri = true; break; } } if (!containsCommonAttri) { baseAttribute += (curStr + newLineStr); } } } if (baseAttribute.Length > 1) { baseAttribute = baseAttribute.Substring(0, baseAttribute.Length - 1); } if (commonAttribute.Length > 1) { commonAttribute = commonAttribute.Substring(0, commonAttribute.Length - 1); } } else { baseAttribute = str; } EquipSetData data = EquipSetData.GetData(ItemObj); if (null != data) { singleAttribute = data.desStr; if (singleAttribute.Length > 1) { singleAttribute = singleAttribute.Substring(0, singleAttribute.Length - 1); } //lz-2016.11.07 颜色改到里面处理 //singleAttribute = string.Format(greenColFomat, singleAttribute); } EquipmentCmpt equipCmpt = GetEquipmentByCurItemPlace(); List <SuitSetData.MatchData> matchDatas = new List <SuitSetData.MatchData>(); if (null != equipCmpt && equipCmpt.matchDatas.Count > 0) { matchDatas = equipCmpt.matchDatas; } else { SuitSetData suitData = SuitSetData.GetData(ItemObj.protoId); if (null != suitData) { SuitSetData.MatchData matchData = new SuitSetData.MatchData(); matchData.name = suitData.suitSetName; matchData.itemProtoList = suitData.itemProtoList; matchData.itemNames = suitData.itemNames; matchData.tips = suitData.tips; matchData.activeTipsIndex = -1; matchDatas.Add(matchData); } } suitActiveInfo = ""; if (null != matchDatas && matchDatas.Count > 0) { SuitSetData.MatchData matchData = new SuitSetData.MatchData(); string curStr = ""; for (int i = 0; i < matchDatas.Count; i++) { if (null != matchDatas[i].itemProtoList && matchDatas[i].itemProtoList.Contains(ItemObj.protoId)) { matchData = matchDatas[i]; break; } } if (null != matchData.itemNames && matchData.itemNames.Count > 0) { int activeCount = (null == matchData.activeIndex) ? 0 : matchData.activeIndex.Count(a => a == true); suitActiveInfo = string.Format(suitNameFomat, matchData.name, activeCount, matchData.itemNames.Count); suitActiveInfo = string.Format(greenColFomat, suitActiveInfo); suitActiveInfo += newLineStr; for (int j = 0; j < matchData.itemNames.Count; j++) { curStr = matchData.itemNames[j]; if (!string.IsNullOrEmpty(curStr)) { if (null != matchData.activeIndex && j < matchData.activeIndex.Count && matchData.activeIndex[j]) { curStr = string.Format(greenColFomat, curStr); } else { curStr = string.Format(grayColFomat, curStr); } suitActiveInfo += (curStr + newLineStr); } } } if (null != matchData.tips && matchData.tips.Length > 0) { for (int j = 0; j < matchData.tips.Length; j++) { if (0 != matchData.tips[j]) { curStr = PELocalization.GetString(matchData.tips[j]); if (!string.IsNullOrEmpty(curStr)) { if (j <= matchData.activeTipsIndex) { curStr = string.Format(greenColFomat, curStr); } else { curStr = string.Format(grayColFomat, curStr); } suitAttribute += (curStr + newLineStr); } } } } } if (suitActiveInfo.Length > 1) { suitActiveInfo = suitActiveInfo.Substring(0, suitActiveInfo.Length - 1); } if (suitAttribute.Length > 1) { suitAttribute = suitAttribute.Substring(0, suitAttribute.Length - 1); } string newAttributeStr = ""; if (string.IsNullOrEmpty(singleAttribute) && string.IsNullOrEmpty(suitActiveInfo) && string.IsNullOrEmpty(suitAttribute)) { newAttributeStr = str; } else { if (!string.IsNullOrEmpty(baseAttribute)) { newAttributeStr += (baseAttribute + newLineStr + newLineStr); } if (!string.IsNullOrEmpty(singleAttribute)) { newAttributeStr += (singleAttribute + newLineStr + newLineStr); } if (!string.IsNullOrEmpty(suitActiveInfo)) { newAttributeStr += (suitActiveInfo + newLineStr + newLineStr); } if (!string.IsNullOrEmpty(suitAttribute)) { newAttributeStr += (suitAttribute + newLineStr + newLineStr); } if (!string.IsNullOrEmpty(commonAttribute)) { newAttributeStr += commonAttribute; } for (int i = newAttributeStr.Length - 1; i >= 0; i--) { if (newAttributeStr[i] == newLineStr) { newAttributeStr = newAttributeStr.Substring(0, i); } else { break; } } } return(newAttributeStr); }