【触发器攻略】(很难,新人勿入)分页触发器做法
这个攻略写出来之后本来我是不打算放在论坛里面的,因为对很多人来说太难了,得对触发器有很不错的了解才能看得懂(更何况有些制图者根本不会使用触发器)。不过,近期我自己做地图的时候,发现很多匪夷所思的触发器技术,其基础都是分页触发器,于是我打算把分页触发器的做法分享一下。
我刚刚设计出了一套系统,就是完全删了装备系统,然后用纯触发器做出来一套装备系统。这套系统和原来的装备系统一样,可以进行装备,卸装等等的操作。听上去是很复杂的,但是其实也还好,这个技术的前置就是分页触发器。
(这个系统完全没有任何用,只是我为了好玩才设计的,我也不想把它做出来)
以下为正文。
目前,关于各级菜单的制作有两种框架有两种做法,一种是逍遥随风的做法,一种是我的。我们的主要目的都是实现可以增添按钮的菜单,但是做法不同。
逍遥的做法是,借用传统的菜单框架,也就是说,每一级菜单都有对应的开启与关闭触发器,也就是直接触发。不过他会把所有的可能出现在同一级列表的按钮都做出来。与正常的触发不同的是,他对于每一个按钮都添加了一个触发条件,一般是每个按钮对应一个计数器,比如说计数器a大于等于1时触发器才会生效。这是一种很容易实现的思路,并且执行效率很高,总体来说可以应付绝大多数情况了,所以正常地图我推荐这种做法。
我的做法是间接触发。当点击上一级触发器的时候,会触发警戒x,当警戒x被触发的时候,子菜单的按钮都会开启。同样关闭是另一个警戒触发。当某个按钮不需要开启的时候,此触发器会被关闭(不是触发效果-关闭按钮,而是触发效果-关闭触发器)。原理是,触发触发器优先级比开关触发器高,而开关触发器优先级比其他的间接触发和触发启动高。这样一来,我的做法就不是在某一个很长的菜单地下去掉我不想要的东西了,而是将我想要的东西添加到某个菜单底下。
我的方法相较于随风的方法,难度主要是得理清楚各个触发启动之间的关系,还要需要记住各个警戒的作用。不过正规的地图制作我建议还是需要自己写一些明确的策划案来辅助的。
正常来说逍遥的办法就已经足够使用了,但是还是有不正常的情况。
当时我们在讨论如何制作物品栏的,当拥有某个物品的时候,点击按钮物品栏,会出现对应的物品。但是军团战棋的菜单最多只能显示十个按钮,所以当物品很多的时候逍遥的方式并不合适。我们有试过用溢出来做,但是不行。而这个时候,需要换一种方式。
即为:分页触发器
也就是,当某个页面需要塞下的按钮多于一定的值之后自动换一页。
我们最终期望的成品是这样的:物品栏下每一页都有8个物品,一个下一页按钮,一个返回按钮。当物品小于8个的时候没有下一页按钮。当物品大于等于8个的时候自动划为下一页出现的内容,点击按钮之后所有按清除并生成下一页的内容,以此类推。初始状态时,物品栏只有返回按钮。
假设所有按钮开启都是触发警戒1,所有按钮关闭都是触发警戒2,那么想实现分页就需要极为复杂的判断。
其实我们知道,不论是触发触发器组还是其他的多触发,它们的执行都是一个一个执行的。那么先执行的触发器可以使后执行的触发器失效。这个是很关键的一点,也是分页触发器的基础。
假设当前有12个选项需要我们来做分页,分别为物品1~物品12,则生成他们的基础的触发器是这样的:
(额外需求:当前物品数量大于0时才可触发,numx为编号x的物品数量)
对于每一页面来说,如果其可以放入的物品达到了上限,之后前往别的页面时,就只有两种选择:下一页或者是返回上一级菜单,而这两种都意味着一件事情:那就是我们并不需要记录每个物品在哪一页,我们只需要知道这个物品是否已经出现就可以了。为每一个物品x建立一个计数器page_x,page_x=1时代表已经显示过了,初始状态会被置位0。则以物品1为例,触发条件加入一条:“计数器:page_1=0”,只有一件物品的属性page_x=0也就是未出现在任何页面时,才会进行接下来的判断。物品被添加到本页之后,pagex_num+1。
当每个物品对应的触发器page_x=0时,就说明它不在任何页面上。那么如何判断此时物品应该在哪一页呢?我们为所有页面建立一个计数器pagex_num,用于记录当前页面的物品数目。初始状态时,此类计数器都为0。以第一页为例,当page1_num<8时,直接开启按钮,并且pagex_num数值加1,并且page_x的值设置为page。这样,当pagex_num=8时,之后就添加不了任何物品按钮了。此时,加上原有的下一页和返回,当前页面正好10个按钮。
此时对于每个物品,触发器是这样的:
当我们点击下一页的时候,清空上一页的所有物品,若有物品对应的计数器page_x=0的话,则从此开始接着像上面那样进行判断。则下一页按钮应该是这样做的(和返回按钮一样,只需要做一个下一页按钮就可以了):
而此时,我们也能得到了物品栏的做法:
最后是返回的做法:
注意1:实际上,每种物品都是有着数量要求的。为了防止剧透,仅在每种物品数量大于1的时候才能显示,于是记得在所有生成物品的触发条件加上一条对应的判断条件啊。
注意2:所有用到“触发效果:触发警戒1”的地方下方都有添加“触发效果:触发警戒3”,然后所有的触发器“开启下一页x按钮”与触发器“物品栏返回”的触发启动是“警戒3触发”,这是为了保证下一页按钮和返回按钮显示在同一页的所有物品下方,所以记住触发警戒1一定要在触发警戒3上方!
改进1:可以将触发器“生成物品1-1”的“计数器:pagex_num<8”改为“计数器:pagex_num<pagemax”,其中pagemax为计数器,用来调控每一页显示的最大物品数量