Exemple #1
0
    private int randomReword(int id)
    {//从可获得物品中随机一个(有保底)  调该方法时意味着比得一个
        int tem = Random.Range(0, 1000);

        string[] nums      = AllUnitData.getSpoilData(id);
        int      ratherNum = 0;

        for (int i = REWORD_NUM; i < nums.Length - 5; i += 2)
        {
            ratherNum += int.Parse(nums[i + 1]) * 10;
            if (tem < ratherNum)
            {
                return(int.Parse(nums[i]));
            }
        }
        tem = Random.Range(0, 2);
        if (tem == 0)
        {
            return(int.Parse(nums[nums.Length - 4]));
        }
        else
        {
            return(int.Parse(nums[nums.Length - 3]));
        }
    }
Exemple #2
0
    //-------------------计算累积奖励
    private void comulativeReword(int id)
    {
        int num = 0;    //最终个数

        string[] spoilData = AllUnitData.getSpoilData(id);
        int[]    nums      = new int[9];
        //计算数量
        for (int i = 1; i < REWORD_NUM; i++)
        {
            nums[i - 1] = int.Parse(spoilData[i]);    //+++奖励数量几率参数
            //下标 1 2 3 4 5 6 7 8 9是个数倍率  接受1位小数  即0.5%
        }
        int tem       = Random.Range(0, 1000);
        int ratherNum = 0;

        for (int i = 0; i < nums.Length; i++)
        {
            ratherNum += nums[i] * 10;
            if (tem < ratherNum)
            {
                tem = i;
                break;
            }
        }
        //逐个计算概率
        for (int i = 0; i < tem; i++)
        {
            //添加结果
            int rewordID = randomReword(id);
            spoils.spoils.Add(rewordID);
            Debug.Log("【掉落物品】" + AllUnitData.getGoodData(rewordID)[1]);
        }
        //给钱
        spoils.coinType = int.Parse(spoilData[spoilData.Length - 1]);
        spoils.coins    = (int)(float.Parse(spoilData[spoilData.Length - 2]) * (1 - Random.Range(-GameData.Data.CoinMovement, GameData.Data.CoinMovement)));
        Debug.Log("【钱】" + spoils.coins);
    }