本帖最后由 小桐 于 2020-12-17 22:18 编辑
装备合成有很多 像魔兽地图都有装备合成 我觉得你可以借鉴下 魔兽的装备合成发展这么多年有很多方式 这是魔兽的 装备升级的方式有很多很多,其实综合起来和物品合成只有稍稍区别,也就是检查身上携带的物品以及通过条件来判断删除源物品创建新物品。装备升级可以用一个触发完成,但相对的改动起来会比较麻烦,因为是直接指定物品的,也可以用变量来进行设定,这样改动起来非常方便,先来看一下变量设定:
[trigger]
事件
地图初始化
条件
动作
可见度 - 禁用战争迷雾
可见度 - 禁用黑色阴影
设置 TYPE[1] = 攻击之爪 +3
设置 TYPE[2] = 攻击之爪 +6
设置 TYPE[3] = 攻击之爪 +9
设置 TYPE[4] = 攻击之爪 +12
设置 TYPE[5] = 攻击之爪 +15
设置 TYPE_Up[1] = Lv 1 up
设置 TYPE_Up[2] = Lv 2 up
设置 TYPE_Up[3] = Lv 3 up
设置 TYPE_Up[4] = Lv 4 up
[/trigger]
演示要点:这里所有的变量组类型都是“物品类型”,TYPE[?]就是装备,TYPE Up[?]是配合物品,还有一个物品是用来升级装备的“武器升级”,在另一个触发里:
[trigger]
事件
单位 - 任意单位 获得物品
条件
((被操作物品) 的类型) 等于 武器升级
动作
For N 从 1 到 4, 做动作
Loop - 动作
如果所有条件成立则做动作1,否则做动作2
If - 条件
(((触发单位) 所持有的 TYPE[N]) 的类型) 等于 TYPE[N]
(((触发单位) 所持有的 TYPE_Up[N]) 的类型) 等于 TYPE_Up[N]
Then - 动作
物品 - 删除 ((触发单位) 所持有的 TYPE[N])
物品 - 删除 ((触发单位) 所持有的 TYPE_Up[N])
英雄 - 创建 TYPE[(N + 1)] 给 (触发单位)
如果所有条件成立则做动作1,否则做动作2
If - 条件
TYPE[(N + 1)] 等于 TYPE[5]
Then - 动作
游戏 - 对 ((触发单位) 的所有者) 在屏幕位移(0.00,0.00)处显示文本: 装备已经升级到顶!
Else - 动作
无动作
设置 N = 4
Else - 动作
无动作
[/trigger]
演示要点:可以看到,这里的升级是先获得“武器升级”这个物品,然后再进行判断,一般来说,像用来升级的物品,尽量用书本或者神符等可以在物品携带满的情况下获得的物品来制作,这样就不会因为物品数量限制而无法获得。
接下来是循环判断,在这里用了一个自定义数循环变量,然后看下面的动作,TYPE[?]和TYPE Up[?]在这里充当了一个相互配合的作用,在[?]下标相同的情况下合成才会实现,而这个下标的定义在前面一个触发里已经设定好了,只要修改前面触发里对等的两个变量就可以对升级产生不同的合成方式。
在条件成立的情况下,将这两个物品删除,然后再赋于一个新的高一等级的物品,这个就是装备升级的特色,不同于物品合成的地方。然后看下面有一个N=4,其作用就是跳出这个循环,因为再执行下去N会自然变成N+1,也就是5。如果不跳出这个循环,将会出现装备一升到顶的情况:比如你拿着攻击之爪+3,再携带升级物品1到4级,会直接升级成攻击之爪+15。
演示6,通用物品合成 这个其实就是类似于物品合成,不过应用范围相对更广一些,当然也不可能面面俱到啦~不过只需要适当调整一下就可以应用到任何(源+源)+卷=合的合成中了。这个触发也需要另一个物品类型的定义配合,比如:
物品类型变量[1]=原材料1 物品类型变量[2]=原材料2 物品类型变量[3]=合成物 物品类型变量[4]=合成卷
而第一个FOR循环的10就是你的组数,上面四个变量为一组,类推……在这里需要说明的是,如果利用前面的物品初始化的话,可以很方便的对大量物品在进行定义和修正。
通告:本演示发现重大BUG,其中原来的“购买者”系原地图上设定,因为是购买物品升级,未及时更改,现修正为“触发单位”!
[trigger]
事件
单位 - 任意单位 获得物品
条件
动作
For循环整数A从 1 到 10, 做动作
Loop - 动作
如果所有条件成立则做动作1,否则做动作2
If - 条件
((被操作物品) 的类型) 等于 TYPE[((循环整数A) x 4)]
Then - 动作
设置 A = TYPE[(((循环整数A) x 4) - 3)]
设置 B = TYPE[(((循环整数A) x 4) - 2)]
设置 C = TYPE[(((循环整数A) x 4) - 1)]
Else - 动作
无动作
For循环整数A从 1 到 6, 做动作
Loop - 动作
如果所有条件成立则做动作1,否则做动作2
If - 条件
A 不等于 (没有物品 的类型)
(((触发单位) 物品栏第 (循环整数A) 格的物品) 的类型) 等于 A
Then - 动作
For循环整数B从 1 到 6, 做动作
Loop - 动作
如果所有条件成立则做动作1,否则做动作2
If - 条件
(((触发单位) 物品栏第 (循环整数B) 格的物品) 的类型) 等于 B
Then - 动作
物品 - 删除 ((触发单位) 所持有的 A)
物品 - 删除 ((触发单位) 所持有的 B)
英雄 - 创建 C 给 (触发单位)
Else - 动作
无动作
Else - 动作
无动作
设置 A = (没有物品 的类型)
设置 B = (没有物品 的类型)
设置 C = (没有物品 的类型)
[/trigger]
这个演示稍稍修改一下都可以做成附合任何独立配方的触发器,附演示。 |
|