Beispiel #1
0
    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);
    }
Beispiel #3
0
    /// <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);
    }