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