|
昨天晚上看到成品区的一个掉落问题。
去研究了下,才发现,掉落物品列表无法应用于改变所属的非中立敌对单位身上。。
所以掉落还是使用触发实在点。。
于是乎就有了下面这个物品掉落系统(不知道有没有人举过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]
或许有需要完善的地方。。。等我想到了再改。。。 |
评分
-
查看全部评分
|