- LuckySXyd
-
呵呵,现在关于mod制作的教程有很多,例如幽人的《曹操传Mod新手教程》,雪芸的《曹操传EXE修改》详解等等。
不过,作为一个战棋游戏,战斗无疑是一个游戏的精华所在!一个游戏,能否作出一个个经典的战斗关卡,则是这个游戏最重要的部分之一!
在曹操传mod中,对于关卡的设计,也就是s剧本的设计制作,始终是一个mod好坏的最重要评判标准之一!而现在关于s剧本的详细教程却几乎没有。愚者不才,愿意抛砖引玉,写出这么一个s剧本教程,以便对那些有志于曹操传mod的新血起到一定的指导作用。
当然,本教程完全是一家之言,由于本人水平有限,难免会有些疏漏不足之处,还请各位达人不吝指正。
本教程所有内容根基于Van太守的剧本编辑器,在此,请让我们首先对Van太守和其他伟人表示由衷的感谢!若不是他们的努力,我们也不会如此容易的就构建自己的mod剧本!
所以,看到这里的朋友,请让我们一起默谢三分钟,以表达我们最真挚的感激和敬仰之情……
第一章 基础篇
在这一章中,在下将把s剧本的整体流程和各个部分作一个基本的介绍和讲解,此部分基本上可以说是s剧本基础的基础,虽然可能对于有些人来说太过简单,但是我还是要把它写出来,以便使新血可以更迅速的明了剧本的结构!(本章部分内容节选自幽人的《曹操传Mod新手教程》,在此特别表示感谢!)
1、简明结构
所有的S剧本都是由3个Sence组成的。
①第一个Sence是战前设置,只有一个Section,固定依次包含以下内容:44战斗初始化、45战场全局变量、46/47友敌出场控制、子事件HEX我军设定、子事件个人装备设定、背景显示(使用哪一张地图)、9延时、1c绘图、若干个子事件用来展现战前的一些事件、24CD音轨、19对话框里的胜利条件、1a大字显示胜利条件、b变量赋值、8菜单处理。
有时配合胜利条件,会高亮显示人5c和地5b;如前一个R剧本无军帐,则在44战斗初始化前会有一段4a我军出场强制设定。
注意:这一段里的b变量赋值是具有全局意义的顺利连接各剧本的重要变量,其值为500+剧本编号
②第二个Sence是战中处置,是S剧本的主体部分,由许多个Section组成,每个Section的结构也基本固定,都是事件测试-变量测试-事件结果-变量赋值这样的结构,具体如下:
Section
├2内部信息
├某测试事件
├5变量测试
└0事件结束
├由测试引发的结果事件
├b变量赋值
└0事件结束
*注意:除非特殊需要(或者说只要是独立的事件),在同一个剧本中的变量赋值不能相同,贯穿整个游戏的全局性变量也不能相同。否则会出现事件无法发生、事件循环发生等问题。
另外虽然变量值是可以随意取的,但最好由统一的规划,或者就沿用曹操传里的命名规则。
③第三个Sence是战后处置,仅有一个Section,非常简单,24CD音轨(无)、8菜单处理(false)、1d调色板处理。有时会配合剧情增加11剧本跳转。
*(以上内容完全转自幽人的《曹操传Mod新手教程》,只因为幽人的这段写的太好了!我实在找不到增减之法……)
2、战前设置
战前设置是整个游戏进行的基础。所以大家一定要明了其中的内容。
战前设置的基本结构前面已经有所说明,下面将对其中的内容做详细的讲解!
(1)45战场全局变量
前面两个未知可以忽略,而后是最大回合数,添上你希望的本关回合,超出时即战斗失败。
等级加成:原版曹操传的默认等级是根据我军所有人的等级进行公式计算后的默认等级,一般选择-2则是说敌军的一般等级为我军平均等级-2级!一般来说,可以凭借修改这个来控制游戏难度。
两个无用和敌我方主将:一般来说,如果设置了敌我方主将,则击败敌方主将后,战斗获胜;
我方主将被击败后,我军失败。至于两个无用,当设置了主将时,对应的写1,没有设置时,对应的为0。由于我方主将一般都是第一主人公,第一主人公死后都有固定的战斗失败测试,所以第二个无用一般都是1。
而由于击败敌军主将时,第二个Sence里一般都有对应的剧情发展,所以前面的那个无用确实无用(汗……),当敌军主将为无时,则剧本里全灭敌人是一个默认的过关方式。
天气类别:这个将决定整个战场的主要天气情况,天气情况影响法术的施展,所以不同的天气类别将对战术的使用产生特殊的影响。(可以想象,连续阴雨的话,火计就全部废掉了……)
起始天气:没什么说的,最开始一天或者五天的天气,个人喜好了。不过,在特殊的时候,由于前几个回合的天气和敌我军位置的设定,也可以据此制定特殊的剧情和战术!
(2)46/47友/敌军设定
武将:选择友军或者敌军的武将。
隐藏:开始出现或者不出现,打勾的话开始不出现,需要后面剧情然后用4c隐藏武将出现来让他出现。
坐标:就是武将初始坐标,没什么说的。
朝向:初始朝的方向(汗……)
等级加成:默认等级就是前面设置好后的敌军平均等级。一般来说,将领加4,大将和君主+6,不过你可以根据自己喜好来加减!
兵种级别限制:即可以三转的兵种的级别。一般来说是高级不用修改。不过,未修改过的曹操传前两章敌军小兵级别即使这里是高级也不会自动升级。
AI:被动攻击:可以攻击到敌人时才会移动,否则不会移动。
主动攻击:主动攻击可以攻击到的敌人,优先攻击可以直接杀死的敌人。攻击不到敌人时自动向敌军方向移动。
坚守原地:无论任何情况都不会移动。会攻击不移动就可以攻击到的敌人。
攻击武将:主动攻击的特殊形式。分为两种:攻击敌方武将,攻击我方武将。第一种情况下,当身边有可以攻击到的指定的敌军武将时,只会去攻击敌方武将。当不能攻击到指定的敌军武将时,攻击可以攻击到的敌军。当不能攻击到任何敌军时,朝指定的敌军武将方向移动!
第一种情况下,当身边有可以攻击到的敌军时,攻击敌军。当不能攻击到任何敌军时,朝指定的我军武将移动(类似跟随武将)。
到指定点:能够直接到达指定点时,移动到指定点。不能直接到达,可以攻击到敌军时,
主动攻击敌军;不能攻击到敌军时,朝指定点方向移动。
跟随武将:不主动攻击,指定的武将到哪里,这个武将跟到哪里。始终向着离指定的武将最近的位置移动。
逃至指定点:不主动攻击,直接选择最近的路线向指定点移动。
援军:用来将敌军区别为两个部分。一般后面用到区域状态变更或者区域武将消失的时候,可以让被标示为援军的敌军发生变化,而其他的援军不发生变化。
(3)我军设定
一般来说,都用子事件设定和内部信息把所有我军设定放在一起,以便剧本阅读方便。
4b,我军出场设定,BFindex,指我军的出场顺序编号。0一般为我军主人公。当前面设定主人公不出场时,为我军第一个出场的武将。坐标和朝向是出现时候的位置。后面有出场时隐藏和不隐藏的选项。选择了隐藏的话,那么剧本中最好设定出隐藏武将出现的剧情。
(4)个人装备设定
一般来说,这里指的是非我军装备设定。代码编号为48。
需要注意的是,指定的装备必须和武将的兵种相适应!否则战场上则会显示该武将相应位置没有装备,而没有装备武器的武将一般不会主动攻击的。
(5)地图设定
27背景显示,战场地图,编号。这没什么说的,选择关卡地图就好了。
(6)绘图前的事件
一般来说,在1c前面有可能会出现两个事件:门设置和放火障碍设置。这部分的内容可以参考曹操传的相应关卡。如果需要在剧本中使用的话,一定要注意后面的开关门选项和放火障碍等出现
消失的内容,以防出现明明消失却无法通过的情况。这个部分将会在以后的进阶篇中进行详细说明。
(7)绘图和cd音轨
没什么说的,固定模式。音乐看个人喜欢。
(8)战前事件
这里是第一个发生的事件,一般用子事件内部信息放在一起,以便剧本阅读方便。在这个里面,对话、动作、单挑、隐藏武将出现,武将移动、消失,放火、等等都可以出现。这就看个人的喜好和剧本设定了!具体内容可以参考曹操传的原版剧本来学习。有些有些难点的内容将会在以后的进阶篇中进行详细说明。
(9)胜利条件和显示胜利条件
胜利条件是指你点击菜单中的胜利条件时显示的对话框。显示胜利条件是剧情进行中可以让玩家看到的东西。
胜利条件的固定格式为:
胜利条件
一、******。
失败条件
一、**死亡。
二、******。
三、回合数超过**。
一般来说,常见的胜利条件分为:歼灭所有敌军,击败特定武将,逃到指定点三种。不过实际制作剧本的时候,还可以根据剧情设置不同的胜利条件。
失败条件,一般来说第一个是主人公死亡。第二个为特殊失败条件(当然可以继续三、四),比如敌军进入指定点,特殊人物死亡,我军少于一定等等,不过这些特殊的失败条件都需要在剧本的第二个scene中进行设定。剩下的就是回合数超过开始的设定回合。如果剧本中没有再进行回合设定的话,那么这个是固定的,如果剧本中重新进行了回合设定,那么就需要同时更改胜利条件。
显示胜利条件。一般是将胜利条件中的内容直接写到里面,游戏时会出现在整个画面面前醒目显示。如果胜利条件是歼灭所有敌军,那么没有什么了。如果胜利条件是击败特定武将或者逃到指定点,那么1a显示胜利条件后面一般跟着5c战场高亮人物或者5b战场高亮区域来鲜明表示。
注意:5b战场高亮区域分为战斗中和胜利条件两种。胜利条件是剧情中发生一次,而当你游戏中点击菜单选项中的胜利条件时,它也会再次发生。而战斗中则只是剧本中发生,点击菜单中的胜利条件时不再发生。
(10)5a战场操作开始,b:变量赋值,8:菜单处理true。
一般来说,在这里就可以添加5a,不过如果我军目前一个人都没有时,建议等到剧情发生我军隐藏武将出现后再添加(例如曹操传原版第零关)。这里的b变量赋值为联系剧本的全局变量,一般为500+剧本编号。8:菜单处理true为固定内容,一般按照固定格式写即可。
3、 战中设置
战中设置为整个剧本所有战斗中事件的集合,可以说是s剧本的灵魂,所以大家一定要明了其基本内容。下面我将就曹操传的默认习惯方法将其中的基础部分给大家做一个详细的介绍,相信大家看后便会明白基本的s剧本设置常识。
(1)什么是变量
变量是整个s剧本的基础,可以说,整个s剧本的战中设置就是由一个个变量构成的。而一个好的s剧本,变量的应用更是重中之重!那么,什么是变量呢?
变量,简单地说就是一个个事件,变量为false,表示这个事件没有发生;变量为true,则表示这个事件发生了!当前面没有把哪个变量赋值为true时,这个变量默认初始为false。
下面,我们来看一个简单的结构:
Section
├2内部信息
├某测试事件
├5变量测试 Var15;Var12 Var11
└0事件结束
├由测试引发的结果事件
├b变量赋值 Var11 true
└0事件结束
可以说,这就是一最常见的事件结构。它的意义为,在满足“某测试事件”的情况下,而且事件15发生过,事件11,12没有发生过的情况下,那么发生“由测试引发的结果事件”,同时把变量11赋值为true。表示事件11发生过了。
一般来说,简单的事件都是前面一个变量测试,结尾一个变量赋值。结尾的变量赋值表示这个事件发生过了。而前面的变量测试里false的同样变量表示测试的事件还没有发生。也就是说,都要先测试这个事件没发生,然后才会触发了这个事件,而触发后用变量赋值打上标记,说明事件发生过了!
呵呵,也不知道我说的是否明白,不过只要理解了变量,那么s剧本的内容也就基本理解了一半!
(2)曹操传一般通用事件(前面为常用变量)
5-10, 各种特殊事件,一般为固定发生剧情后,变量赋值6-8,而后其他事件里根据发生的事件不同而进行不同的测试。
11-19,各种一般事件,包括剧情和敌军武将方针变更等等。常见的测试事件有:
3f回合测试:在这个回合限制的范围内时便向下继续。
行动方测试:分为我军、友军、敌军三个阶段,即只在特定的阶段时向下继续。
战场人数测试:当整个或者局部达到一定人数时候便向下继续。
20-29,进入特定地点,获得特定道具。很简单,不说了。
30-39,进入指定区域,发生特定事件。常见的发生事件是武将方针变更,武将的AI上文已经提到了。当然有时候也会发生一些特殊的事件。
40-49,武将相邻测试,包括发生剧情和单挑。格式很固定,一般是对话,有时候有武将状态变更。关于单挑的内容和制作,以后会在进阶篇里说明。
50-69,武将阵亡或者撤退事件。很简单,参考曹操传原版剧本。需要注意的一点:武将状态测试的是hpcur,这表示的是生命当前值,不要写成hp,那个表示的是最大值!
70-, 特殊事件,如门的开关,武将的复活等等。有些复杂,可以参考曹操传,或者等以后进阶篇里说明。
事件0,战斗胜利测试。这个是默认的敌军全灭时发生的。属于固定事件,必须拥有,格式固定,顺序为:51,发生的事件,59,49,b,d。其中:59,战利品,表示过关后得到的物品,后面有一个平时和结局。平时表示游戏没有结束,结局表示游戏结束了。结局时,一般都会有一句表示结局的话出现。变量赋值,一般至少两个:0,固定要写。600+剧本编号,关系到剧本结构,一般都要写。d,注意一定不要忘了,否则会出错。
事件1,战斗失败测试。主人公死亡时发生。属于固定事件,固定结构,必须拥有。信息随便写,其他固定。
其他胜利或者失败条件。当你希望达到其他条件时,战斗胜利或者失败,那么只需要在达到的事件下面把胜利或失败的内容写上即可!需要注意的是,其基本结构和事件0,1的结构是完全相同的,唯一不同的是你可以在那前面添加你希望发生的其他事件内容。详细的剧本写法可以参考原版的曹操传。
战中设置的内容其实非常多,如果想要一点一点完全说明白那将是一个非常大的工作量。所以在这里我只会简单的介绍一些基础的部分。想要更好的学习,最好的办法还是学习曹操传的原始剧本,根据自己的想法,找到曹操传中相对应的部分翻出来进行比较和印证,这样才是学习的最快办法!
当然,有些相对有些难度的内容我以后也会写出来,不过那些就要放在进阶篇里了。
至于第三部分战后测试,完全固定,只需要复制就可以了!
3、常见错误和一些经验
对于初学者来说,犯错误是很正常的,而对于初学者来说最可怕的错误就是“无效的结尾”!
往往辛辛苦苦写了半天的剧本保存后再打开却发现什么都没有了,只提示“无效的结尾”!这是什么原因呢?别的错误还可以通过查找剧本来修改,而这个错误却是最打击积极性的!往往因此便会让人不得不重写,有的时候也因此会让人失去继续作mod的动力。
那么现在,我就来说明一下这个错误的原因和避免的方法:
一般来说,这个错误的发生常见的是两个原因:
1、变量测试出现在了剧本不应该出现的位置。变量测试只能够放在第二个scene战中事件的那个开头和子事件设定后面的展开里面。如果你把这个变量测试放在了其他的位置,那么当你保存退出后,便会使得这个位置以后的剧本无法识别,从而导致无效的结尾。(一般容易犯的错误是变量测试的位置放错,实际上其他测试的位置放错也会产生同样后果。)
2、子事件设定后面没有扩展。一般来说,子事件设定都是添加而成。不过有时候为了方便快捷,常常会用复制粘贴命令来制作剧本。这个时候,一旦不注意的话,可能就会造成子事件设定后面没有扩展。这时如果你保存退出的话,便会使得这个位置以后的剧本无法识别,同样导致无效的结尾。
那么,面对这种情况应该如何解决呢?如果对剧本结构有着很深的了解的话,可以通过UE来修复错误,不过对于一般新手来说,这是很困难的。那么,下面我将告诉大家一个简单的方法,从而尽可能的避免这个问题!
首先,当你完成一定程度的剧本后,选择保存,但是不要退出。而后,找到你保存好的文件,复制一个副本,再打开副本。如果副本出现了“无效的结尾”,那么马上回到没有关闭的原剧本,
根据副本结尾可以看到的位置来察看原剧本的对应位置,应该就可以找到导致剧本错误的对应语句。进行修改后储存,重复同样的步骤。如果副本再次打开没有问题的话,那么说面原剧本至少语法上没有错误。这时候就可以关闭了。
其实,简单的说就是备份!只要多备份,那么就不会出现大的故障和问题!无论是编程还是其他,建议大家都能够做到随时备份,这样才可以在意外发生的时候最大的减少损失。像我的东西,每个都至少有两个备份。呵呵,这也是经验之谈啊!
好了,s剧本教程的基础篇就写到这里。从上星期决定写到写完基础篇,想不到竟然用了这么长的时间。不过,只要我的教程能够对新手有一些帮助的话,那么我也就知足了。
下一次,我将会写出教程的进阶篇,对于各种事件进行一个相对比较完整的介绍,包括s剧本中的一个特殊重点:单挑。不过什么时候写,呵呵,却不是我现在可以确定的了。
好了,就先到这里吧,再见吧!