Example #1
0
    public bool GetFittMinMax(int id, int proid, ref int min, ref int max)
    {
        FittingsTableItem fres = DataManager.FittingsTable[id] as FittingsTableItem;

        if (fres == null)
        {
            return(false);
        }

        int ind   = FittingsProperty.GetResId(proid);
        int minid = 0;
        int maxid = 0;

        if (!fres.GetIntervalByID(ind, ref minid, ref maxid))
        {
            return(false);
        }

        for (int i = minid; i <= maxid; ++i)
        {
            FittoddsTableItem odres = DataManager.FittoddsTable[i] as FittoddsTableItem;
            if (odres == null)
            {
                GameDebug.LogError("资源ID为" + i + "不存在表格fittodds.txt中 ");
                return(false);
            }
        }

        if (!fres.GetIntervalByValue(ind, ref min, ref max))
        {
            return(false);
        }

        return(true);
    }
Example #2
0
    private void InitFittingsItemInfo()
    {
        WeaponModule wmodule = ModuleManager.Instance.FindModule <WeaponModule>();

        if (wmodule == null)
        {
            return;
        }

        PlayerDataModule module = ModuleManager.Instance.FindModule <PlayerDataModule>();

        if (module == null)
        {
            return;
        }
        FittingsTableItem fres = DataManager.FittingsTable[uiparam.itemid] as FittingsTableItem;

        if (fres == null)
        {
            GameDebug.LogError("资源ID为" + uiparam.itemid + "不存在表格fittings.txt中 ");
            return;
        }
        ConfigTableItem configitem = DataManager.ConfigTable[fres.grade] as ConfigTableItem;

        if (null == configitem)
        {
            return;
        }
        mFitName.text   = "[" + configitem.value + "]" + fres.name;
        mFitType.text   = "物品类型";
        mFitUseLv.text  = fres.itemtype;
        mFitDesc.text   = fres.itemdesc;
        mFitAbtain.text = fres.itemabtain;

        SetIcon(mFitPic, fres.bmp);
        SetIcon(mItemPic1, null);
        mItemLb.text = "";

        FittingsData fdata = module.GetFittingsData((uint)uiparam.packpos);

        if (fdata == null)
        {
            for (int i = 0; i < (int)FittingsType.MAX_PROPERTY; ++i)
            {
                mFitProNameList[i].text  = "";
                mFitproValueList[i].text = "";
            }
            mFitProNameList[0].text = "配件未洗练!";
            return;
        }

        for (int i = 0; i < (int)FittingsType.MAX_PROPERTY; ++i)
        {
            int  proid  = -1;
            int  value  = -1;
            bool forbid = false;
            if (!fdata.GetProValue((uint)i, ref proid, ref value, ref forbid))
            {
                continue;
            }

            string pname = RoleProperty.GetPropertyName(proid);
            if ("error".Equals(pname))
            {
                pname = "属性名称";
            }
            mFitProNameList[i].text = pname;

            int min = 0;
            int max = 1;
            if (!wmodule.GetFittMinMax(uiparam.itemid, proid, ref min, ref max))
            {
                mFitproValueList[i].text = "该条属性尚未洗炼!";
                continue;
            }

            mFitproValueList[i].text = value.ToString();

            /*int proindex = FittingsProperty.GetResId(proid);
             * string colorss = "000000";
             * Hashtable map = DataManager.FittcolorTable;
             * foreach (FittcolorTableItem fcres in map.Values)
             * {
             *  if (fcres.qualityid == fres.grade && value > System.Convert.ToInt32(fcres["max_" + proindex]))
             *      continue;
             *
             *  colorss = fcres.color;
             *  break;
             * }*/
        }
    }
Example #3
0
    public void BapFittings(uint pos, int fiId, bool[] lockIndex)
    {
        PlayerDataModule module = ModuleManager.Instance.FindModule <PlayerDataModule>();

        if (module == null)
        {
            return;
        }

        FittingsData fdata = module.GetFittingsData(pos);

        if (fdata == null)
        {
            return;
        }

        int id = fdata.GetId();

        FittingsTableItem fres = DataManager.FittingsTable[id] as FittingsTableItem;

        if (fres == null)
        {
            return;
        }

        uint chance = module.GetFittChance();

        BapFittingsActionParam param = new BapFittingsActionParam();

        param.pos    = pos;
        param.itemId = (uint)fres.costid;

        if (chance <= 0)
        {
            int lnum = 0;
            for (int i = 0; i < (int)FittingsType.MAX_PROPERTY; ++i)
            {
                if (lockIndex[i])
                {
                    lnum++;
                }
            }
            uint cnum = 0;
            if (lnum == 0)
            {
                cnum = fres.num_0;
            }
            else if (lnum == 1)
            {
                cnum = fres.num_1;
            }
            else if (lnum == 2)
            {
                cnum = fres.num_2;
            }

            uint count = PlayerDataPool.Instance.MainData.mPack.GetNumByID(fres.costid);
            if (count < cnum)
            {
                string ons = ItemManager.Instance.getItemName(fres.costid);
                PopTipManager.Instance.AddNewTip(StringHelper.GetString("item_need").Replace("?", ons));
                return;
            }

            param.price = cnum;
        }
        else
        {
            param.price = 0;
        }

        int mCount = 0;

        for (int i = 0; i < (int)FittingsType.MAX_PROPERTY; ++i)
        {
            int proid = -1;
            if (lockIndex[mCount])
            {
                int  value  = -1;
                bool forbid = false;
                if (!fdata.GetProValue((uint)mCount, ref proid, ref value, ref forbid))
                {
                    continue;
                }
                param.set_mproperty(mCount, proid);
                param.set_mvalue(mCount, value);
                param.set_mlock(mCount, lockIndex[mCount]);
                param.set_start(mCount, (uint)0);
                param.set_end(mCount, (uint)1);
                mCount++;
                continue;
            }


            proid = fres.GetProId();
            if (proid == -1)
            {
                continue;
            }

            int ind   = FittingsProperty.GetResId(proid);
            int minid = 0;
            int maxid = 0;
            if (!fres.GetIntervalByID(ind, ref minid, ref maxid))
            {
                continue;
            }

            FittoddsTableItem odres = DataManager.FittoddsTable[maxid] as FittoddsTableItem;
            if (odres == null)
            {
                GameDebug.LogError("fittodds.txt填写错误 id = " + maxid);
                return;
            }

            uint roodds = (uint)UnityEngine.Random.Range(0, (int)odres.odds);

            for (int j = minid; j <= maxid; ++j)
            {
                FittoddsTableItem rares = DataManager.FittoddsTable[j] as FittoddsTableItem;
                if (rares == null)
                {
                    GameDebug.LogError("fittodds.txt填写错误 id = " + j);
                    return;
                }

                if (rares.odds > roodds)
                {
                    param.set_mproperty(mCount, proid);
                    param.set_mvalue(mCount, 1);
                    param.set_mlock(mCount, lockIndex[mCount]);
                    param.set_start(mCount, rares.start);
                    param.set_end(mCount, rares.end - rares.start == 0 ? 1 : rares.end - rares.start);
                    mCount++;
                    break;
                }
            }
        }
        Net.Instance.DoAction((int)Message.MESSAGE_ID.ID_MSG_WD_BAP_FITTINGS, param);
    }
Example #4
0
    //枪械属性
    public static void BuildWeaponProperty(PlayerData mainData, PropertyOperation operation)
    {
        operation.Clear();
        //主武器属性
        WeaponObj obj = mainData.mPack.GetItemByID(mainData.main_weaponId, PackageType.Pack_Weapon) as WeaponObj;

        if (null != obj)
        {
            obj.BuildProperty(operation);
        }
        //强化属性
        StrenTableItem item = DataManager.StrenTable[mainData.mStrenLv] as StrenTableItem;

        if (null == item)
        {
            GameDebug.LogError("没有此强化等级 lv = " + mainData.mStrenLv);
            return;
        }
        operation.AddPro((int)PropertyTypeEnum.PropertyTypeDamage, item.value);
        int starlv = (int)(mainData.mStrenLv / (int)STARS_RANK.MAX_STARS_RANK_NUMBER);

        if (starlv > 0 && (mainData.mStrenLv % (int)STARS_RANK.MAX_STARS_RANK_NUMBER) == 0)
        {
            starlv -= 1;
        }
        if (0 != starlv)
        {
            for (int i = 1; i <= starlv; ++i)
            {
                StrProTableItem itempro = DataManager.StrProTable[i] as StrProTableItem;
                if (null == itempro)
                {
                    GameDebug.LogError("strenthpro.txt中不存在id = " + starlv);
                    return;
                }
                if (itempro.life != uint.MaxValue)
                {
                    operation.AddPro((int)PropertyTypeEnum.PropertyTypeMaxHP, itempro.life);
                }
                if (itempro.damage != uint.MaxValue)
                {
                    operation.AddPro((int)PropertyTypeEnum.PropertyTypeDamage, itempro.damage);
                }
                if (itempro.crits != uint.MaxValue)
                {
                    operation.AddPro((int)PropertyTypeEnum.PropertyTypeCrticalLV, itempro.crits);
                }
                if (itempro.defence != uint.MaxValue)
                {
                    operation.AddPro((int)PropertyTypeEnum.PropertyTypeDefance, itempro.defence);
                }
                if (itempro.energy != uint.MaxValue)
                {
                    operation.AddPro((int)PropertyTypeEnum.PropertyTypeMaxMana, itempro.energy);
                }
            }
        }
        //配件属性
        FittingsData[] mFittings = mainData.mFittings;
        WeaponModule   module    = ModuleManager.Instance.FindModule <WeaponModule>();

        if (null == module)
        {
            return;
        }
        for (int i = 0; i < (int)FittingsType.MAX_FITTGINS; ++i)
        {
            FittingsTableItem fittingsitem = DataManager.FittingsTable[mFittings[i].GetId()] as FittingsTableItem;
            if (null == fittingsitem)
            {
                break;
            }
            for (int j = 0; j < (int)FittingsType.MAX_PROPERTY; ++j)
            {
                int min = 0;
                int max = 1;
                if (!module.GetFittMinMax(mFittings[i].GetId(), mFittings[i].GetProIdByPos(j), ref min, ref max))
                {
                    continue;
                }

                operation.AddPro(mFittings[i].GetProIdByPos(j), mFittings[i].GetProValueByPos(j));
            }
        }
    }