注册 | 登录

游侠NETSHOW论坛





游侠NETSHOW论坛 游侠NETSHOW论坛 太阁立志传5·绯红之章·人间五十年 【真】剧本制作教学贴,从安装到开发实例 ...
楼主: crispnut
打印 上一主题 下一主题

[教程] 【真】剧本制作教学贴,从安装到开发实例 [复制链接]

帖子
9
精华
0
积分
5
金钱
218
荣誉
0
人气
0
评议
0
21#
发表于 2014-6-4 19:44:22 |只看该作者
好!!!!!

使用道具 举报

帖子
746
精华
2
积分
910
金钱
3918
荣誉
12
人气
171
评议
0
22#
发表于 2014-6-4 20:48:23 |只看该作者
【90后】玩命 发表于 2014-6-4 19:44
好!!!!!

要认真看代码啊

使用道具 举报

帖子
746
精华
2
积分
910
金钱
3918
荣誉
12
人气
171
评议
0
23#
发表于 2014-6-4 20:53:59 |只看该作者
本帖最后由 crispnut 于 2014-6-4 20:55 编辑

第七章太阁的数据结构二

第四章讲解了太阁的数据结构,在此基础上,这章节来讲解容器的概念。所谓容器,实际上是对复数个变量的选定和操作,也就是在现有的数据结构上划定想要处理的复数个对象。关于容器的讲解比较复杂,本章讲解不涉及指针的容器操作,可以参考:

two001

***************************************************

【光荣工作组】銀鳥的容器的初階教程:

技术讲解:

http://game.ali213.net/thread-2634241-1-1.html

***************************************************

这里可以补充说明的是,繁中编辑器自带日文剧本翻译功能,在工具选项下。如果在看官方说明书或者日文剧本教程的时候,可以用这个功能帮助学习,也可以将日文剧本转化为繁中代码。然而,加菲猫插件的语句不能直接转化,需要查表后手动输入。容器功能被总结在繁中编辑器的容器选项下:

首先是容器设定,使用了容器设定,也就是选定了一组特定的数据:

顺次点击之后就能生成一个容器,下面是一些例子:

需要注意的是,上述例子的最后一个语句是无效的,而倒数第二个语句却是有效的。

这种情况可能和容器的底层结构有关,由于不了解编译器的细节,只能在不断的实践中总结可能的错误和形式。

在选定了容器之后,还需要对容器进行进一步筛选和定位,其实这一切操作都可以用容器指针来操作,然而剧本编辑器为开发者提供了更加便捷的操作语句。

然而,无论指针还是容器操作语句,都只能对容器进行减法的操作,如果要对容器进行加法的操作,需要有全局变量的知识,这一点将在以后的章节里讲解。

容器筛选,就是将选定的容器进一步缩小为筛选的范围之内,比如选出泛用对手中的几位女子(鹤,枫这几位大众情人):

容器排除,也就是讲设定容器中不符合条件的变量排除,比如选出武士阶层里部将以上的人物:

容器检所是一个主要和指针配合使用的命令,本章暂不涉及。

容器清理是一个很常用的命令:

其中的指针方式本章不讲,消去和保留的意思是,按照现有的容器排序(这点非常重要,也就是说容器不是一个无序的集合),从第一个数据开始顺次保留或者去除一定数目的变量,最后一个是按照奇偶性去除容器内的变量,不太常用。例如,使用容器命令选中所有的合战卡片,可以写成:

这样就选中了所有的合战卡,至于代码中的数字,那是查询官方说明书的表格而来(参见数据一览)。

既然谈到了容器的有序性,那就来说一说容器排序命令,一个是容器排序,一个是特殊容器排序:

按照提示,可以按照容器内变量的某一属性值升序,降序排列,也可以将容器内变量的数据打乱次序。

最后就是从容器中选出想要的变量了,这里就要用到容器选择的命令:

最后四种选择方式,是将容器内的变量展示在玩家面前,由玩家选择变量,

这时候需要考虑到玩家点击右键退出的情况,加入真伪判断,下面将会给出一个规范的例子。

而前面四种,则是直接选择先头,末尾,或者指针所指向的变量,不需经过玩家选择。

除了这些命令之外,伴随着容器指令的有两个变量,分别是容器指针(指向容器中的某一个变量的位置数值,犹如门牌号码)

和容器记录数(记录容器中有多少个变量),当容器为空时,指针指向无穷大(-1)

例1:选出现存人物中,武力最高的那位,在道场提供高等武具赠送的额外服务

现存人物是指人物已经出现,如果人物没有出现而且没有死亡,那就是没有元服的未成年人;

如果一个人死亡,按照正常的情况,应该是同时具备死亡和未出现的性质。

高级物品和一般物品的所有情况,有着不同的表达方式,

低等物品是看所有个数而高等物品是看所有者(因为高等物品只有一个,其数据结构也有不同)源代码可见附件,

但是进行容器选择的时候请注意真伪的判别:

代码编译调试之后的效果:

例1是通过玩家点击实现的一个容器的遍历,更加一般的写法是:

通过一个一个地容器清理,可以实现容器的遍历,但是我们发现,这样遍历容器的结果将会导致容器变成一个空容器,也就是说这样的遍历是不可逆的破坏性的遍历。若要实现容器的无损遍历,则需要指针或者全局变量的知识,这点我们以后再讲。现在来谈最后一个问题,容器存取:

这个命令的意思是将现有的容器冻结起来,允许剧本作者在保留前一个容器的同时,运用另外一个容器。换句话说,最多可以同时使用两个容器。三国立志传有一个城市判断的源代码,就是利用容器存取实现的,还有五彩麒麟的包围网等功能,可以参考这个帖子:

五彩麒麟

***************************************************

剧本编辑讲座:

http://game.ali213.net/thread-2728754-1-1.html

***************************************************

限于章节,请直接看三楼的容器存取部分,这里我也举一个简单例子,查询一个地方町的人物信息:

例2.在座打听本地方的町的人物情报

先载入町所在的地方,外层容器遍历国内町,内层容器遍历町的人物

代码编译调试之后的效果:

这样不涉及指针的容器操作就介绍完了,下一章将介绍容器指针的用法,如果读者看到这里还没晕,说明你的水准还是很高的,如果觉得简单,那么下面一章的内容绝对不会让你觉得无聊。反之,如果读者觉得不知所云,请回第四章甚至第一章重新看起。

源代码:



附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

帖子
746
精华
2
积分
910
金钱
3918
荣誉
12
人气
171
评议
0
24#
发表于 2014-6-5 15:39:06 |只看该作者

第八章 太阁的数据结构三

第四章介绍了太阁的一般数据结构,第七章介绍了容器的简单情况,那么容器指针,就是本教程所讲的数据结构的最后一章。可以认为容器指针是管理容器的一种特殊的变量,他负责指向容器中确定的位置。它伴随着容器设定的操作而产生,容器为空时,容器指针指向无穷远(-1);容器不为空时,指针初始的数值是0,指向第一个数据。容器指针若指向最后一个值,他的数值应当是(容器记录数-1),当付给容器指针一个大于等于容器记录数的值的时候,指针也就离开了容器,并没有指示容器位置的功能了,指针溢出的情况编译器并不能自己检查出来,需要剧本作者自己检查。

下面举一个查询武将人物编号的的例子:

例1.在宿屋查询武将的编号,或者通过输入编号查询武将,查看容器指针溢出的情况

数字输入可以通过繁中编辑器的其它选项设定,将输入的数据存入一个变量,最大值也可以是一个变量,但都要事先声明。

有关人物的数据结构,可以参见官方说明书:

选择武将后,从零开始移动指针位置,直至指针选项和玩家选项重合,就读出了人物的编号。反过来,输入编号,再设定指针的数值,就能指相对应的人物,最后还示例了指针溢出的结果, 代码编译调试之后的效果:

对于容器指针的运算,和一般变量并没有差别,比如生成随机数的方法,可以参照五彩麒麟的教程。至于容器检索的功能,则是将指针移动到特定数值的变量上(无效时指向-1),这些运用在五彩麒麟的帖子中讲解的都非常透彻,这里不再赘述,只将这两个运用写成一个例子,方便大家查看效果,有兴趣的朋友可以将这个例子改写成不用指针的代码:

例2.在马屋查询武力数值数值在任意区间的在世人物,随机抽取两张不同的名胜卡片,请注意容器清理之后指针的情况(容器记录数不为零时是0,否则为-1)

代码编译调试之后的效果:

检查一下人物数据,说明程序代码和实际情况相符。

随机两张名胜卡的效果:

用指针遍历筛选的时候,需要注意容器排除之后的时候指针复位的情况。如果模仿五彩麒麟教程的写法,需要使用条件模块,本人并不推荐使用,因为容易出错。例2,例3,例4完成的是一样的功能,但是书写的方法并不相同,例2将循环变量独立了出来,循环重复容器记录数的次数,确保容器的遍历,这是最简明的:

例3是五彩麒麟的条件模块写法:

例4是变更为一般循环和调查的写法,这样出错的几率可能更小:

掌握了容器指针和容器保存的写法,就可以实现非常复杂的功能,例如三国立志传的第四版城市判断代码,重新编写了据点的相邻问题,确保了ai增强时出兵的合理性。具体的框架是,遍历所有非玩家势力的城据点,在处理每一个城的时候,除了每月增加500人的士兵,更采用容器存取的命令,人工构造出一个该城相邻城所组成的容器(需要注意的是,如果简单采用相邻大名家这个命令,则会发生岛津直取近畿这种诡异的情况,这是因为相邻大名家的命令包含了海路相邻的情况),检索这个容器中是否存在玩家势力的非交战状态的城市。如果有,则将其选取出来,在满足外交条件的前提下,如果最外层的地方城市兵力超过一万,则主动发起攻击(这个剧本在传递全局变量,即事件之间的变量时,采用的依然是人物功勋的传统方式,如果想要用更好的方法,作者将会在后面的全局变量中介绍,然而他的军团调用命令则很先进)。这个例子比较综合,也涉及到一些还未涉及的知识,但读者如果有心,则可以通过其他的学习资料看懂。但我希望读者至此至少能看懂该代码的容器存取和指针调用,当然这个代码的效率并不高(容器的指针并没有保存记录,而是简单重复+1):

外周循环敌方城市:

构建相邻城市的容器:

监察相邻城市中是否存在玩家城市,判断出兵条件,记录相关的城市信息:

容器回复,继续外循环:

另一个例子是五彩麒麟的包围网代码,原版发布的时候是日文版,作者已经将其转化成繁中代码,这个例子则更为复杂,涉及到更多的额外知识。玩家可以在奈良马场设置相关的参数。与三国立志传的思路不同的是,五彩麒麟的代码通过据点之间代码的差值来排除海路相邻的情况。在代码的257行,运用了容器存取的方法实现了参与包围网的各个大名家和被包围的大名家敌对以及互相之间结成同盟(在不声明的情况下,容器保存之后的新容器与原容器相同):

代码的215行,使用容器指针配合容器排序。用于在包围网大名家较多的情况下,去掉一些弱小的大名家:

上述两个综合性例子比较复杂,就算悟性较高的朋友看懂也会比较费劲,以后的综合开发可能也会举这些代码的例子。如果不能全部看懂,则只要看懂本章提及的段落即可。话说指针的确是非常复杂和困难的应用,如果是在学不明白也可以先跳过,请套用例1实现指针检索(第一个变量的指针值是0,最后一个是容器记录数减一,可以配合容器排序的命令实现功能);套用例2,例3或者例4的例子,实现用指针遍历容器并且按照特定需求排除变量的功能。容器指针结束后,可以说太阁的数据结构就基本讲完了。

源代码打包:


附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

帖子
746
精华
2
积分
910
金钱
3918
荣誉
12
人气
171
评议
0
25#
发表于 2014-6-6 11:49:06 |只看该作者

第九章 全局變量一

前面第四,第七和第八章,讲解了太阁的数据结构,但是这些变量的结构都只能在一个事件中调用。如果要实现一个复杂的剧情,则需要在事件之间传递数据。这种在事件之间,也就是不在同一段代码内传递的数据,就叫做全局变量。在这里,作者需要声明,太阁不仅有全局变量,而且有长度可控的全局变量。甚至还有可以指定对象的全局变量(隐性标记)。这一章讲解最简单的全局变量:事件标识符和事件名称。

点击调查,可以看到事件和事件标志的选项:

所有的事件标识,在未标记的时候,默认为0;而事件在没发生的时候,也默认为0。通过这两个全局变量,可以构建各种复杂结构的剧情流程。

例1.东北之旅,从北海道开始,开启一个游历东北数个町的剧情

第一个事件无条件发生,提示第二个町的地址,而之后的剧情都以前一个剧情发生为前提,从而实现一个线性剧情。这是最简单的情况。

代码编译调试之后的效果:

此时如果不按照提示提前去酒田,则不会发生任何事件。

而按照剧情路线的结果如下:

线性剧情是最简单的结构,如果要让一个线性反复发生,可以用两个事件标识符闭锁事件发生的条件,从而达到可以反复发生的效果,下面修改例1的例子,将其改成一个可循环的单线结构:

例2.东北之旅,从北海道开始,开启一个游历东北数个町的剧情,游历之后可以再次游历

监视系列剧情的开启:

剧情发生后,闭锁已发生的剧情

监视下一个剧情的开启,以前一个剧情的发生做前提:

同样,发生之后闭锁剧情,避免剧情反复发生

在最后一个剧情,将所有的剧情闭锁打开,就能使剧情再度循环:

代码编译调试之后的效果:

剧情开启:

再次进入宇须岸,剧情不会反复触发

不按剧情走,也不会发生意外

一样的线性剧情:

走完最后一个剧情,可以再次循环

现在讲解最后一个例子,是上述线性循环例子的变形,在屋子里发生妻子做饭的事件。这个例子是将线性的循环控制在一个节点上反复发生:

例3,在自宅和妻子对话,发生买菜的事件。事件的结构如下:

或者可以写成:

事实上所有的剧情结构,分歧也好,循环也好,都可以拆结成线性结构的组合。就像实际上所有的程序结构,最后都是线性结构的变形组合一样。

在自宅中构成了线性循环的公用节点,转述据点名称时采用调用变量的方式,可以避免改名导致的错误:

所有的节点符合“条件-闭锁”的结构:

代码编译调试之后的效果:

选一个有老婆的人

剧情开始

例3只是用事件标示符来表达剧情条件,读者可以试着将事件的触发条件加入交易品的变化,也可以在这个过程中观察全局变量,作为控制多个事件组合结构的框架作用。那么下一章将会讲解全局变量在作为数据存储运用时的结构和方法。

源代码:


附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

帖子
746
精华
2
积分
910
金钱
3918
荣誉
12
人气
171
评议
0
26#
发表于 2014-6-6 17:47:31 |只看该作者

第十章全局变量二

上一章讲到全局变量可以作为剧情结构的开关,这一章来讲解全局变量如何实现数据传输。在这里,首先要了解进制转化的概念。所谓十进制,就是用十个符号来表示数值;而二进制,也就是事件标识符,是用两个符号来表示数值。数值虽然一样,但是其表示方法并不一样,导致其外观并不相同。如果学过c语言,这些内容应该已经很熟悉了,如果没有,可以参考:

http://baike.baidu.com/view/18536.htm?fr=aladdin#5_1

那么,为了实现不同事件之间的数据传送,就需要运用事件标识符,而事件标识符是一种二进制符号,为了表达十进制的局部变量,就需要做进制转化,也就是十进制和二进制的互相转化。如果学过c语言,这些内容应该已经很熟悉了,如果没有,可以参考:

http://baike.baidu.com/link?url=lAVybtFiBvhl1Tl1c18bMiftkjWqjxAh-JTgkifibpqXwFRKOuPTyNluHV9ifskp

简单来说,拆解一个十进制数就是相除取余,组合一个二进制数就是幂积相加,如果觉得复杂,也可以直接套用模板。下面的例1是一个如何跨越事件传递数据的例子:

例1.在京的座输入一个数字,然后在界的座显示这个输入的数字,该数字的上限是十万

从零开始数二进制的位数,比如0到n的二进制位,可以表达上限是2的n次方的双倍减一的数值。例如0到16位,可以表达(2*65536-1)这么大的数字,如果少于16位,就无法表示十万这么大的数字了。

读取的时候,可以套用这样的模板:

在录入的时候,首先要清空所有的二进制位(注意,如果需要调用这些数据的话,则需要先读取再清空)

读入二进制位的时候,采用取余-相除的步骤,一直到所有的二进制位被填满

代码编译调试之后的效果:

在了解了进制转换的全局变量之后,我们来看一下这个例子的应用之一,时间的计算。请参考这个教程的第二讲:

ericsim

***************************************************

剧本编辑讲座:

http://game.ali213.net/thread-2300183-1-1.html

***************************************************

总体思路是,将时间看成一个静态的矢量,而将时间的计算转为向量差值的计算,由于现有的剧本编辑器可以将事件前推到1500年,游戏的最后一年是1620年,所以时间的最大跨度是120年,需要0到15的二进制位进行记录,一共15个事件标识符。 ericsim的教程里并没有采用这种高级的数据记录方法,而是用死人功勋作为替代,但他的思想方法是先进的,而且特别指出了每日这个契机可能被错过的情况。但每月的最后绝对,这个契机是必定会发生的,如果事件以月为周期,推荐使用这个契机来简化运算。以下是时间计算的图示:

例2.在奈良寺设置时间起点,在甲府马屋查看当前时间距离时间起点的差值

首先计算时间起点距离1500年一月一日的差值

用同样的格式读取目前事件距1500年一月一日的差值

计算二者差值,得到时间的偏移

代码编译调试之后的效果:

当然,除了时间的数值,据点的数值也可以用这种方法传递,读者可以尝试着改写一下第八章提到的三国立志传的第四版城市判断代码,将其改写成不依靠死人功勋的模式。现在给出一个综合的例子,也就是转动太阁的时刻里面,医生职业的主命系统。在富山接受任务,被分配到随机的町,在限定的时间里完成任务,获得功勋的增长。一共涉及到时间,地点和功勋值这三种全局变量。至于随机町的写法可以参考:

也就是据点编号180以后的62个非海外町,通过随机变量获得并记录

代码编译调试之后的效果:

请读者自行研究医生主命系统代码,搞明白全局变量的传递模式。下一章讲解有特定对象的全局变量。

源代码:


附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

帖子
746
精华
2
积分
910
金钱
3918
荣誉
12
人气
171
评议
0
27#
发表于 2014-6-7 00:30:22 |只看该作者

第十一章全局变量三

前面介绍了事件标识符和事件作为全局变量的应用,这一章讲解其他类型的全局变量。事实上利用事件标识符进制转化的方法,几乎可以解决一切涉及数据传递的问题,只是在解决某些问题的时候比较繁琐。比如跨事件选定一个人物,需要十个事件标识符记录人物的编号,然而要跨事件选定数个,乃至不定数目的人物,就太麻烦了。这时候,就需要和特定对象契合的一种变量,也就是说在不影响期望的功能的前提下,全局变量可以跟随一个特定的单位。

在发卡命令研发出来之前,就是利用人物的标识符(例如无敌标识符)来选定人物,而在发卡命令出现后,就多出了63个伴随人物的二进制变量。对于npc而言,称号卡中除了剑圣卡并不对人物的属性产生影响,可以说是一个隐形的属性值,通过操纵这些属性值,就可以实现全局变量的功能。

比如圣剑剧本的决战系统,其发生契机就要求敌方大名不持有漂泊旅人卡,而决战之后就会自动给敌方大名配置一张漂泊旅人卡,使得决战不会反复发生(每年年末消去人物的漂泊旅人卡)。以下程序段落均出自圣剑剧本,有兴趣的可以研究(比如把死人功勋的存取模式改写成二进制事件标识符的模式):

只有该年未决战的对象才会产生决战剧情:

剧情后闭锁人物:

年末恢复人物状态:

例1.限制主人公只能先预约再喝茶,最多一个月只能预约五个人,并且在不赴约的情况下会遭到斥责:

选自转动太阁的时刻剧本,这个例子的关键在于踏入npc居所的一瞬间,调查是否有预约的标示,如果没有邀请就将次拜访人物的可茶席标志闭锁,并在出门后恢复。并且在赴约之后,用一个标示指示茶会已经参加。表里比兴表示茶会预约,奸臣表示茶会赴约,弑主者表示拜访过,再加上系统原有的茶席标志,一共四种伴随人物的全局变量,程序的逻辑关系如下:

代码编译调试之后的效果:

选择和助,半右卫门,喜助和又四郎:

在进入npc居所之前,茶席标志是开放的

但没有预约的话,是不能茶席的,这就是闭锁的功效

茶会赴约提示

可以同预约的人进行茶席

如果没有茶席,就不会留下茶席的痕迹

如果参加了茶席,就会留下痕迹

如果隔月没参加茶会,就会发出失约的提醒

以上这个例子还可以进一步改良成如果没有进行茶席,就不算赴约,读者可以自行修改。然而在转动太阁的时刻剧本中实现了茶会重制,所以这一点并没有加以考虑,只是不茶席的话,茶席次数就不会增加(这个变量不可更新)。

除了标志人物的功能之外,使用这种全局变量还能够变相地实现容器的加法。这种加法并非是编辑器现成的语句,而是在标定了全局变量之后重新生成的容器,从而实现了类似加法的功能,比如实现举出一个容器,这个容器包含一国之内的人物。当然可以将人物全部检索一遍,将不属于某一国的人物逐个排除(请回忆容器指针的章节,并且尝试写出这个代码);但我们也可以利用容器保存命令,先检索一国之内的据点,再将所有据点人物打上标记,再构造出一个新的容器:

例2.在町的酒场,选出一国之内的人物(武将和泛用对手)

用容器存取,外层循环该国的据点,内层循环据点的人物,标记成博徒卡持有的状态

所有博徒卡持有的人就是该国的人物

逆向取消标记,消除调用的痕迹,这个例子是在一个事件内进行的,但也可以在不同事件之间传递,但一定要记住最后还原标记的状态

代码编译调试之后的效果:

就如同事件标识符即可以作为单个控件,也可以传递数据一样。如果征用人物的多个称号卡,就可以实现为人物新增某一个隐藏数值,请读者自行编辑一个记录人物拜访数目的代码,可以查询任意一个人物的拜访数目(比如上限是100,就需要7张称号卡作数据存取)。类似的还可能是妻子的贤惠度或者君主的民心值之类的。那么特定对象的全局变量和容器加法的内容就讲完了。

源代码:


附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

正六位上 神祗少副
吴 虎豹骑

帖子
1906
精华
0
积分
1044
金钱
8063
荣誉
9
人气
14
评议
0
28#
发表于 2014-6-7 02:45:01 |只看该作者
前排支持~~~~

使用道具 举报

游侠剑阁工作组【制作】

帖子
789
精华
2
积分
1418
金钱
5826
荣誉
62
人气
32
评议
0

29#
发表于 2014-6-7 09:27:41 |只看该作者
C大的教程,对老编很有价值,对小白来说晦涩了一点

使用道具 举报

帖子
746
精华
2
积分
910
金钱
3918
荣誉
12
人气
171
评议
0
30#
发表于 2014-6-7 09:29:31 |只看该作者
rockymei2k 发表于 2014-6-7 09:27
C大的教程,对老编很有价值,对小白来说晦涩了一点

不知不觉越写越难。。。不过也写了如果实在看不懂怎么套用的权宜之计

使用道具 举报

帖子
437
精华
0
积分
229
金钱
4285
荣誉
1
人气
4
评议
0
31#
发表于 2014-6-7 11:12:04 |只看该作者
{:14_485:}
前排听课,全局变量的算法很新颖,我还是第一次在太阁剧本编辑中看到,虽然似懂非懂,但解决了不同事件的数据传送问题,前段时间还在思考用死人功勋的方法可用传送的变量太少呢,没想到这么快解决了。

使用道具 举报

帖子
714
精华
0
积分
357
金钱
3841
荣誉
0
人气
0
评议
0
32#
发表于 2014-6-7 13:47:33 |只看该作者

感谢楼主分享

使用道具 举报

帖子
746
精华
2
积分
910
金钱
3918
荣誉
12
人气
171
评议
0
33#
发表于 2014-6-8 09:50:08 |只看该作者
zhaoyusi 发表于 2014-6-7 11:12
前排听课,全局变量的算法很新颖,我还是第一次在太阁剧本编辑 ...

這個其實很早就有人想到了 只是早期作者似乎都沒有使用

使用道具 举报

帖子
30
精华
0
积分
15
金钱
560
荣誉
0
人气
0
评议
0
34#
发表于 2014-6-9 06:42:43 |只看该作者
打开签到! Crispnut的帖子十分受用,作为初学者一直希望有大神做剧本系统教学。 感谢!请继续更新

使用道具 举报

帖子
746
精华
2
积分
910
金钱
3918
荣誉
12
人气
171
评议
0
35#
发表于 2014-6-9 13:47:54 |只看该作者

第十二章军团命令一

有关军团命令和军团契机的讲解,请自行查询官方说明书,所有军团指令被总结在作战选项下:

有关军团编码的问题,请首先参考:

五彩麒麟

***************************************************

剧本编辑讲座:

http://game.ali213.net/thread-2678727-1-1.html

***************************************************

总结一下这篇划时代的文章,可以总结出以下几个事实:

1.0号军团=主人公军团

2.军团编号上限99,也就是说最多可以同时调用的军团是100个

3.事件1至事件5军团=25号至29号军团,可能会和原版剧情冲突(读者可以参考圣剑剧本的主角事件判别法,相对繁琐不推荐使用),所以应当优先使用25至29之外的军团编号

需要指出的是,事件军团生成的时候,并不会对城内的物资造成消耗,所以如果要考虑到物资消耗的情况,还需要读者自行编辑(比如读者可以试着增加一个系统判别式,使得原版的剧情军团消耗据点的物资,并且使得对应物资不足的时候削减军团的编制),这个编号的知识结合五彩麒麟关于援军的研究,使得我受到启发,发明了轨道冻结的编程模式,可以控制一次野战双方的军队数目,这个将会在下一章讲解。

有关战争模式的封锁(主要是为了避免ai出兵破坏剧情),可以参考第四讲:

ericsim

***************************************************

剧本编辑讲座:

http://game.ali213.net/thread-2300183-1-1.html

***************************************************

利用剧团移动终了的契机,再配合时间地理条件(比如设定某一年之前某个据点不能被攻击,否则)或者势力状态条件(保留势力的最后一个据点不能被攻破),就能消弭相关的战斗。

例1.在界的茶人宅,选定某一个城进入无敌状态:

代码编译调试之后的效果:

读者可以自行思考将这个式神模式作如下拓展:

1.只允许玩家出兵而消除ai的战争

2.保护某一家大名不受侵略

3.确保某一家大名的最后一个据点不被侵略

在编写军团编成命令的时候,作者总结了以下注意事项:

第一,如前所述,军团编号可以任意调用,并且请注意事件军团的编号,避免重复使用军团的情况

第二,事件军团不消耗物资,返回据点时也不会归还物资,这两点请注意

第三,军团编成的种类必须和军团的出击据点匹配,也就是说城不能编出忍者和海贼的军队,但是可以利用出击据点的选项使得军团出现在任意据点

第四,军团野战的战场和大地图相遇的坐标有关,大部分有河流存在

第五,友军(同盟,从属)不能攻击

第六,军团长不能为空,这一点和个人战的人物编排类似,当主人公军团军团长不为主人公时只能操作主人公的分队

第七,虽然作战中的归属由军团的出击据点决定,但当军团长不为出击据点的人物时,就会出现无法使用军团归还指令的错误

第八,军团移动结束的契机在野战开始,攻城开始的契机之前。如果在据点攻击的半路上遭遇截击,则会插入两个军团移动结束的契机。

例2.查看事件军团的物资消耗情况和人物调用的情况,请选择第六剧本蠣崎慶廣开始游戏

代码编译调试之后的效果:

查看之前据点的情况

触发事件军团

据点物资无变化

事件军团开始返回

返回后依然无变化

触发第一视角的结果,地方军团的武将可以全是一个人

己方军团也可以重复

只能操控主人公的军团分队

战斗结束

据点物资依然没有变化

可以看到,事件军团的出击和归还,都不会对据点物资造成影响,军团人物的设置相对自由。

关于野战和攻城战的区别如下:

野战在一瞬间开始和结束,没有时间的流逝,有关野战的攻击方判别式可以参考圣剑剧本的野战判断攻击方,野战军团的上限是五队,至于如何实现五队的排列组合,将在下一章的轨道冻结法中讲解

攻城战开始之后,可以追踪其事件的流逝,以每日处理的开头为契机,可以步步跟随每一次的攻防转换,有关攻城战的攻击方判别式可以参考圣剑剧本的电脑任命城主,攻城战军团的上限也是是五队,但在援军抵达时可以达到六军团混战的效果,这也是太阁军团混战的上限,有关野战突入的攻击方判别式可以参考圣剑剧本的攻城战判断攻击方

圣剑剧本的三种判别式都附在本章的源代码内。

例3.第六剧本选择丰臣秀赖开局,触发一个德川带四队围城的剧情,德川的援军从第二天开始,每隔一天增加一队,到第六天真田的援军到达,达到六队混战的效果

代码编译调试之后的效果:

回自宅之后,开始战斗:

切换到自动战斗:

以上总结了攻城战的参数操控方法,而有关野战的参数方法,也就是作者称之为轨道冻结的方法,将在下一章讲解。读者可以尝试编写出北条家的特技:铜墙铁壁,其效果是攻城时每回合守方士气增长5点,城市耐久恢复被损害值的50%。

源代码:


附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

帖子
437
精华
0
积分
229
金钱
4285
荣誉
1
人气
4
评议
0
36#
发表于 2014-6-9 22:29:07 |只看该作者
crispnut 发表于 2014-6-8 09:50
這個其實很早就有人想到了 只是早期作者似乎都沒有使用

翻了下root重来大人的中文编辑器的帖子,还真找到了,原来已经集成在编辑器里了,
又一发现

使用道具 举报

帖子
746
精华
2
积分
910
金钱
3918
荣誉
12
人气
171
评议
0
37#
发表于 2014-6-9 22:39:33 |只看该作者
zhaoyusi 发表于 2014-6-9 22:29
翻了下root重来大人的中文编辑器的帖子,还真找到了,原来已经集成在编辑器里了,
又一发现

所以说没人系统总结前人的研究成果是一种巨大的遗憾

使用道具 举报

帖子
746
精华
2
积分
910
金钱
3918
荣誉
12
人气
171
评议
0
38#
发表于 2014-6-9 22:43:36 |只看该作者
本帖最后由 crispnut 于 2014-6-9 22:46 编辑

第十三章军团命令二

有关野战遭遇时援军出现规律的研究,最早见于五彩麒麟的援军,出击系统。作者现在将其规律总结如下:

1.作为受攻击的军团,在被攻击的时候,其援军会在瞬间参与到野战战斗中

2.作为攻击的军团,在出击的时候,只有一个援军会在瞬间参与到野战战斗中

3.如果野外交战的军团数,如果超过五个,就会发生溢出错误

总结以上规律,可知太阁剧本的野外交战可能一共10种:

1v1,1v2,1v3,1v4;

2v1,2v2,2v3;

3v1,3v2;

4v1。

再加上由大地图决定的野战地形,可能的战斗模式有数十种不同的变化。为了避免考虑军团在行走时相遇这种复杂的几何问题,建议将交战的所有军团设定在同一个点遭遇,这样也容易确定交战的地形。以上方法作者将其命名为轨道冻结法。

例1.考察被攻击军团的援军规律:

选择在宇须岸的座开启战斗,随机选择两个非同盟据点出兵,相遇地点选在高屋城,敌方军团一:

将敌方军团二的出现据点设定在遥远的北海道:

主人公军团在高屋城攻击敌方军团一:

代码编译调试之后的效果:

远在北海道的军团瞬间出现在了战场

1v4的场面:

如果是1v5的情况,就会导致游戏崩溃:

例2. 考察攻击军团的援军规律:

选择在宇须岸的座开启战斗,随机选择两个非同盟据点出兵,相遇地点选在高屋城,敌方军团一:

设定主人公军团主动出击:

给主人公设定一个援军:

代码编译调试之后的效果:

出现了2v1的情况:

如果主人公军团是攻击方,援军有两个,出现的效果则是2v1,攻击方的援军只能有一个出现:

调换攻击方,让敌方军团出击,使得主人公军团成为受攻击方,就能得出3v1的效果了:

以上,10种野战可能就被总结完毕了。本教材也暂时宣告结束,实际上如果读者能看懂这十三章,相信在遇到新问题的时候也能自己调试解决,如果读者有新的发现或者疑惑,可以在后面跟帖。

源代码:


附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

帖子
360
精华
0
积分
180
金钱
3316
荣誉
0
人气
0
评议
0
39#
发表于 2014-6-15 17:42:59 |只看该作者
我用的是搜狗輸入法,調整到了繁中全角,但打出來的%和:無法通過編譯。如果用下載的劇本就可以了,求指導

使用道具 举报

帖子
360
精华
0
积分
180
金钱
3316
荣誉
0
人气
0
评议
0
40#
发表于 2014-6-15 18:05:29 |只看该作者
土豆烤白薯 发表于 2014-6-15 17:42
我用的是搜狗輸入法,調整到了繁中全角,但打出來的%和:無法通過編譯。如果用下載的劇本就可以了,求指導 ...

劇本文件大多只能使用編輯器給出的選項套入編劇本,不能實現純手打劇本,因為符號很難通過編輯,繁中全角符號很多不符合。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版|Archiver|游侠NETSHOW论坛 ( 苏ICP备2023007791号 )

GMT+8, 2024-4-27 01:21 , Processed in 0.315856 second(s), 9 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

分享到