找回密码
 点一下
查看: 2833|回复: 3

可控掉率-物品掉落-T

[复制链接]
发表于 2010-5-5 16:40:20 | 显示全部楼层 |阅读模式
昨天晚上看到成品区的一个掉落问题。
去研究了下,才发现,掉落物品列表无法应用于改变所属的非中立敌对单位身上。。
所以掉落还是使用触发实在点。。
于是乎就有了下面这个物品掉落系统(不知道有没有人举过T版的例子)。
该系统可方便调节掉落物品的概率与掉落限制数量。


变量说明:
                ItemStyle——物品类型,数组,用于设置掉落物品类型,需初始化;
                Real_ItemLost ——实数,数组,用于设置概率,需初始化;
                Inter_ItemLostCount——整数,数组,用于限制掉落数量,需初始化,默认值为0;
                Inter_ItemCount——整数,非数组,用于记录掉落物品总数,需初始化;
                Inter_Random——整数,非数组,用于随机数;
                Inter_LmtLow ——整数,非数组,概率下限,不用人为设定的中间变量;
                Inter_LmtHigh ——整数,非数组,概率上限,不用人为设定的中间变量;
                Inter_i  ——整数,非数组,用于自定义循环数用;
                Point_ItemLost——点,非数组,用于物品掉落点;


初始化的触发
[trigger]
ItemStyle Set
    事件
        地图初始化
    条件
    动作
        -------- ItemStyle为记录掉落物品类型的数组。 --------
        设置 ItemStyle[1] = 国王之冠 +5
        设置 ItemStyle[2] = 死亡面罩
        设置 ItemStyle[3] = 霜冻之球
        设置 ItemStyle[4] = 荣誉护盾
        设置 ItemStyle[5] = 火焰手套
        设置 ItemStyle[6] = 远古战斧
        设置 ItemStyle[7] = 力量之锤
        -------- Real_ItemLost为记录对应掉落物品类型的概率百分比,目前该系统只支持小数点后两位。 --------
        -------- 同时,最好能保证这里所有概率百分比之和必须为1,否则,将有无法想象的事情发生。 --------
        设置 Real_ItemLost[1] = 25.00
        设置 Real_ItemLost[2] = 10.00
        设置 Real_ItemLost[3] = 15.00
        设置 Real_ItemLost[4] = 20.00
        设置 Real_ItemLost[5] = 10.00
        设置 Real_ItemLost[6] = 10.00
        设置 Real_ItemLost[7] = 10.00
        -------- 记录对应物品掉落限制数量。。。。。。不填或小于等于0为无限制。。。。。。 --------
        设置 Inter_ItemLostCount[1] = 3
        设置 Inter_ItemLostCount[2] = 1
        设置 Inter_ItemLostCount[4] = -1
        设置 Inter_ItemLostCount[6] = 1
        -------- 记录掉落列表的总数。 --------
        设置 Inter_ItemCount = 7
[/trigger]


这个是主要触发。
[trigger]
Item Lost
    事件
    条件
    动作
        设置 Inter_Random = (随机整数,最小值: 1 最大值: 10000)
        游戏 - 对 玩家1(红色) 在屏幕位移(0.00,0.00)处显示文本: (随机数大小: + (转换 Inter_Random 为字符串))
        For Inter_i 从 1 到 Inter_ItemCount, 做动作
            Loop - 动作
                设置 Inter_LmtLow = Inter_LmtHigh
                设置 Inter_LmtHigh = (Inter_LmtHigh + (转换 (Real_ItemLost[Inter_i] x 100.00) 为整数))
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        Inter_Random 大于 Inter_LmtLow
                        Inter_Random 小于或等于 Inter_LmtHigh
                        Boolean_ItemOnlyOne[Inter_i] 等于 FALSE
                    Then - 动作
                        物品 - 创建 ItemStyle[Inter_i] 在 Point_ItemLost
                        游戏 - 对 玩家1(红色) 在屏幕位移(0.00,0.00)处显示文本: (掉落概率范围:   + ((转换 Inter_LmtLow 为字符串) + (  ——————   + (转换 Inter_LmtHigh 为字符串))))
                        如果所有条件成立则做动作1,否则做动作2
                            If - 条件
                                Inter_ItemLostCount[Inter_i] 小于或等于 0
                            Then - 动作
                                无动作
                            Else - 动作
                                设置 Inter_ItemLostCount[Inter_i] = (Inter_ItemLostCount[Inter_i] - 1)
                                如果所有条件成立则做动作1,否则做动作2
                                    If - 条件
                                        Inter_ItemLostCount[Inter_i] 等于 0
                                    Then - 动作
                                        设置 Boolean_ItemOnlyOne[Inter_i] = TRUE
                                    Else - 动作
                                        无动作
                        点 - 清除 Point_ItemLost
                        设置 Inter_i = 0
                        设置 Inter_LmtLow = 0
                        设置 Inter_LmtHigh = 0
                        设置 Inter_Random = 0
                        跳过剩余动作
                    Else - 动作
                        无动作
        点 - 清除 Point_ItemLost
        设置 Inter_i = 0
        设置 Inter_LmtLow = 0
        设置 Inter_LmtHigh = 0
        设置 Inter_Random = 0
        跳过剩余动作
[/trigger]


引起掉落的事件,使用这个系统的话,就只需要更改这一部分就可以了。
[trigger]
Dead
    事件
        单位 - 任意单位 死亡
    条件
    动作
        设置 Point_ItemLost = ((触发单位) 的位置)
        触发器 - 运行 Item Lost <预设> (无视条件)
[/trigger]

或许有需要完善的地方。。。等我想到了再改。。。

评分

参与人数 1威望 +2 收起 理由
血戮魔动冰 + 2 以示鼓励~

查看全部评分

发表于 2010-5-5 23:16:54 | 显示全部楼层
有待强化
回复

使用道具 举报

 楼主| 发表于 2010-5-9 15:21:22 | 显示全部楼层
囧。。。发现 原来有 随机实数这东西
回复

使用道具 举报

发表于 2010-5-20 08:44:51 | 显示全部楼层
我正在做一个掉宝的演示,快做好了。

是这样定义的
{怪物,怪物}-[(物品>概率*个数#物品>概率*个数#)叠加方式&-最大掉落个数]

中间除了文字以外的符号,统统都是区分数值的,我是用字符串保存,可以无视。

一个变量可以同时定义多个怪物和多个不同暴率的物品,可以设置叠加方式为相乘或是相加。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-22 04:21 , Processed in 0.088735 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表