更强的物品合成触发
不知道现在WE的UI发展到什么程度了,我这个偶然想到的方案会不会已经毫无意义了移植比较方便吧,如果新人可以直接拿去用,目前支持99个基础物品和8000个合成物品。呃,其实,基础物品可以扩展到999个(录入的工作量加大一点,多一条动作)甚至9999999(7个9)那么多(多5条动作)
用一个初始化触发声明配件清单,然后声明合成物品的清单,登记3个整数变量(每个合成物品)。然后就行了
其实如果WE支持精确的12位整数变量的话,还能少登记一个变量。然而最多精确到7位,只好拆成左右两个6位的整数凑合用一下。
像这样:
对战初始化
事件
地图初始化
条件
动作
设置 Item = 敏捷便鞋+3
设置 Item = 食人鬼手套 +3
设置 Item = 智力斗篷 +3
设置 Item = 贵族圆环
设置 Item = 速度之靴
设置 Item = 死亡面罩
设置 Item = 辉煌之靴
★ 辉煌鞋000504030201 ★
设置 Item_C = 辉煌之靴
设置 code_r = 30201
设置 code_l = 504
设置 code_A = 5
★ 昏暗鞋070604030201 ★
设置 Item_C = 昏暗之靴
设置 code_r = 30201
设置 code_l = 70604
设置 code_A = 6
然后主触发直接复制粘贴就行了,修改也很方便,只要改动初始化的那个触发就行,主触发不需要动
如果要扩展功能,比如书本合成、雇佣兵合成、其他黑科技的话,也可以在此基础上很容易扩展出来
以下是吹牛(事实)的内容
1--便于移植,15个变量,4个触发器,体量很小,移植的时候不需要对运算部分做任何改动
2--便于使用,新增物品时无需在触发内做物品关联方面的任何条件或者循环动作,只需要在初始化的时候设置一个物品类型,登记三个整数变量即可
3--没有延迟,触发运算过程全是整型变量的计算,不涉及物品类型的判断与循环
4--便于修改升级。增减物品无需修改主触发,方便调试。多个参数可以调用,从而扩展功能(升级卷轴/物品书本化/雇佣兵化)
主触发,贴一下吧
get
事件
单位 - 任意单位 获得物品
条件
动作
设置 UNIT = (触发单位)
设置 TC = 0
设置 TC_A = 0
For循环整数A从 1 到 6, 做动作
Loop - 动作
设置 J[循环整数A ] = 0
设置 K[循环整数A ] = 0
设置 N[循环整数A ] = 0
设置 ol[循环整数A ] = 0
设置 CT[循环整数A ] = 0
设置 M[循环整数A ] = 0
For循环整数A从 1 到 6, 做动作
Loop - 动作
设置 output[循环整数A ] = 0
For循环整数B从 1 到 99, 做动作
Loop - 动作
如果所有条件成立则做动作1,否则做动作2
If - 条件
所有条件成立
条件
(((触发单位) 物品栏第 循环整数A 格的物品) 的类型) 等于 Item[循环整数B ]
((触发单位) 物品栏第 循环整数A 格的物品) 不等于 没有物品
Then - 动作
设置 output[循环整数A ] = 循环整数B
Else - 动作
触发器 - 运行 seprate <预设> (无视条件)
seprate
事件
条件
动作
For循环整数A从 1 到 66, 做动作
Loop - 动作
设置 TC = 循环整数A
设置 TC_A = code_A[循环整数A ]
设置 M = (code_r[循环整数A ] mod 100)
设置 M = ((code_r[循环整数A ] - M) mod 10000)
设置 M = (M / 100)
设置 M = (((code_r[循环整数A ] - (M x 100)) - M) mod 1000000)
设置 M = (M / 10000)
设置 M = (code_l[循环整数A ] mod 100)
设置 M = ((code_l[循环整数A ] - M) mod 10000)
设置 M = (M / 100)
设置 M = (((code_l[循环整数A ] - (M x 100)) - M) mod 1000000)
设置 M = (M / 10000)
设置 K = 1
For循环整数B从 1 到 6, 做动作
Loop - 动作
设置 ol[循环整数B ] = output[循环整数B ]
设置 N[循环整数B ] = 0
For循环整数B从 1 到 TC_A, 做动作
Loop - 动作
设置 K[循环整数B ] = 0
如果所有条件成立则做动作1,否则做动作2
If - 条件
M[循环整数B ] 等于 ol
Then - 动作
设置 K[循环整数B ] = 1
设置 CT[循环整数B ] = M[循环整数B ]
设置 ol = 0
设置 N = 1
Else - 动作
如果所有条件成立则做动作1,否则做动作2
If - 条件
M[循环整数B ] 等于 ol
Then - 动作
设置 K[循环整数B ] = 1
设置 CT[循环整数B ] = M[循环整数B ]
设置 ol = 0
设置 N = 1
Else - 动作
如果所有条件成立则做动作1,否则做动作2
If - 条件
M[循环整数B ] 等于 ol
Then - 动作
设置 K[循环整数B ] = 1
设置 CT[循环整数B ] = M[循环整数B ]
设置 ol = 0
设置 N = 1
Else - 动作
如果所有条件成立则做动作1,否则做动作2
If - 条件
M[循环整数B ] 等于 ol
Then - 动作
设置 K[循环整数B ] = 1
设置 CT[循环整数B ] = M[循环整数B ]
设置 ol = 0
设置 N = 1
Else - 动作
如果所有条件成立则做动作1,否则做动作2
If - 条件
M[循环整数B ] 等于 ol
Then - 动作
设置 K[循环整数B ] = 1
设置 CT[循环整数B ] = M[循环整数B ]
设置 ol = 0
设置 N = 1
Else - 动作
如果所有条件成立则做动作1,否则做动作2
If - 条件
M[循环整数B ] 等于 ol
Then - 动作
设置 K[循环整数B ] = 1
设置 CT[循环整数B ] = M[循环整数B ]
设置 ol = 0
设置 N = 1
Else - 动作
设置 K = (K x K[循环整数B ])
如果所有条件成立则做动作1,否则做动作2
If - 条件
所有条件成立
条件
K 等于 1
TC_A 不等于 0
Then - 动作
For循环整数B从 1 到 6, 做动作
Loop - 动作
游戏 - 显示Debug信息: ((N + (转换 循环整数B 为字符串)) + ( =+ (转换 N[循环整数B ] 为字符串)))
游戏 - 显示Debug信息: ((TC + <空字符串>) + ( =+ (转换 TC 为字符串)))
★ 以上几个用于测试的动作,返回部分变量参数供参考,可以删除 ★
触发器 - 运行 operate <预设> (无视条件)
跳过剩余动作
Else - 动作
operate
事件
条件
动作
For循环整数A从 1 到 6, 做动作
Loop - 动作
如果所有条件成立则做动作1,否则做动作2
If - 条件
N[循环整数A ] 等于 1
Then - 动作
物品 - 删除 (UNIT 物品栏第 循环整数A 格的物品)
Else - 动作
设置 Item_T = (新建 Item_C 在((UNIT 所在X轴坐标),(UNIT 所在Y轴坐标)))
游戏 - 对 (UNIT 的所有者) 在屏幕位移(0.00,0.00)处显示文本: ((Item_T 的名字) +合成成功)
英雄 - 给予 UNIT Item_T
附件1是演示图
附件2是UI(很久了吧,随便拿了一个老物用了)
以前有个读取颜色代码做的合成更好用 萌新顶一下............................................. 萌新顶一下.............................................
页:
[1]