标题: 曹操传剧本代码详解, 挖一坑
性别:男-离线 博雅张生
(张生手持石鼓文)

象郡公中书令枢密直学士

Rank: 19Rank: 19Rank: 19Rank: 19
资政殿大学士(从一品)
组别 经略使
级别 前将军
好贴 3
功绩 1118
帖子 1730
编号 28805
注册 2004-12-26


发表于 2005-12-12 19:42 资料 个人空间 短消息 只看该作者 QQ
其实也没有什么新东西。曹操传的剧本代码已经基本被研究透彻了。van的编辑器也做得很完美。
在这里我再把剧本代码总结总结,顺便把我这些天做剧本的经验写一写。
欢迎大家指正、补充。

一、剧本的基本结构

用剧本编辑器可以看到,曹操传的剧本是由多个Scene组成的。
而每个Scene是由一个或多个Section构成的。
每个Section由两部分组成:测试条件和事件。同一个Section的各个测试条件是and的关系,同时满足这些测试条件,才会发生下面的事件。

只含有一个Section的Scene和含有多个Section的Scene稍有不同。只含有一个Section的Scene的Section只能以2 内部信息为测试条件,也就是没有实际的测试条件。下面的事件会自动发生,按顺序执行一遍后自动转到下一个Scene,不需要用d 结束Scene。而含有多个Section的Scene的Section可以以各种测试代码为测试条件。系统按由下到上的顺序检查这些测试条件是否满足。一旦满足某个Section的测试条件,就执行这个Section的事件。执行后继续按由下到上的顺序(重新从最下面的Scene开始)检查各个Section的测试条件是否满足。要想进入下一个Scene,就必须用d 结束Scene。

Section的事件部分可以嵌套子事件,子事件里可以进一步嵌套子事件。子事件的结构与Section类似,但是只能有一个测试条件。如果子事件的测试条件不满足,则会跳过子事件而执行后面的代码。

下面说一下剧本文件的具体结构:

前10个字节是文件头: 45 45 58 00 01 02 00 00 00 00
在这之后的n*4个字节用来标志n个Scene的开始位置。其后就是各个Scene。
对于每一个Scene。首先要用2个字节说明这个Scene里有多少个Section,其后就是各个Section了。
每个Section,首先要用2个字节说明这个Section的总长度(不包括这2个字节本身),随后是各个测试条件的代码。测试条件部分的最后一条代码是0 事件结束,随后用2个字节说明事件部分的长度(同样不包括这2个字节本身),随后就是事件代码。事件部分的最后一条代码同样是0 事件结束。
子事件的开头是1 子事件开始标志(2个字节),随后是1条子事件测试条件代码。随后用2个字节说明子事件的事件部分的长度(同样不包括这2个字节本身),随后是事件代码。事件部分的最后一条代码同样是0 事件结束

二、剧本代码

0 事件结束

前面已经说过了。用于Section的测试条件的最后、Section的最后、子事件的最后。在剧本编辑器里是自动设置的,不能手动添加。

实际代码:
00 00

1 子事件设定

同样前面说过。是子事件开头的标志。在剧本编辑器里要用添加子事件的方法添加。要注意的是,在剧本编辑器要想删除或移动一个子事件,一定要把子事件设定和后面的子事件的内容同时删除或移动,否则剧本会出错,而且保存后无法再用剧本编辑器打开,只能用UE等工具修复。

实际代码:
01 00

2 内部信息

没什么实际意义,更多的是作为注释来使用。原版曹操传剧本多数内部信息没写什么内容。但我们做剧本时应该在这里写上这后面一段代码的作用,这样自己检查剧本也容易,其他人查看剧本也好理解。

实际代码:
02 00
05 00 文字 00

3 else

作为子事件的测试条件,与各种高级语言里的else含义相同,就是将和这个子事件并列的上一个子事件的测试条件取反。很有用。

实际代码:
03 00

4 询问测试

弹出一个对话框“可以么?”,根据玩家的选择来确定是否满足测试条件。注意如果要对是否两个选择都安排一些事件,那就需要两个子事件,第一个的条件是询问测试,而第二个的条件要用else而不要用询问测试,否则对话框会弹出两次。

实际代码:
04 00
26 00 XX XX (0000表示选否,0100表示选是)

5 变量测试

很重要的测试条件。同时测试多个变量。只有这些变量同时满足要求,才算是满足测试条件。

实际代码:
05 00
35 00 XX XX (要求变量值为true的变量个数,假设是a)
(XX XX)*a (a个要求变量值为true的变量序号)
35 00 XX XX (要求变量值为false的变量个数,假设是b)
(XX XX)*b (b个要求变量值为false的变量序号)

6 我军出场设定

用法比较固定。主要用在R剧本中。

(1)  出场限制是true,屏幕上出现“出兵”、“装备”、“买进”、“卖出”四个按钮。人数限制就是下一关的最大出场人数。最大是15,其后是5个强制出场人物和5个强制不出场人物。注意默认情况下,0号武将是强制出场的。所以在强制出场人物里不必填0号武将。但要想让他不出场,就要填到强制不出场的人物里。
(这一句通常用在R剧本,情节已经交待完毕,需要玩家调整装备买卖物品的时候)

(2) 出场限制是False,屏幕上的“出兵”、“装备”、“买进”、“卖出”四个按钮消失。此时其余参数不起作用。
(这一句通常用在R剧本出战测试的Section里)

实际代码:
06 00
2e 00 XX XX (0000表示出场限制为False,0100表示出场限制为True)
04 00 XX XX XX XX(人数限制)
(38 00 XX XX)*5  (五个强制出场的人物,FFFF表示无)
(39 00 XX XX)*5  (五个强制不出场的人物,FFFF表示无)

7 出战测试

按下“出兵”并选定人物按下确定按钮后,此测试条件成立。注意这个条件一旦成立,菜单会自动变成无效(类似与8 菜单处理False的状态),并且“出兵”、“装备”、“买进”、“卖出”四个按钮不消失但是也变得无效。此时如果使用 8 菜单处理 True 可以恢复到按下出兵按钮之前的状态。

实际代码:
07 00

8 菜单处理

控制菜单和菜单下面的一排按钮是否有效。

(1)当菜单处理为True时,这些菜单和按钮多数是可以点击的。(当然RS剧本略有不同,R剧本中检索未执行部队、结束回合、胜利条件、战场缩小图永远是无效的)

(2)当菜单处理为False时,只有第一个“结束游戏”的按钮是可以点击的,其余菜单和按钮都是无效的。

另外,在战斗过程中,我方阶段菜单总是有效的,友方和敌方阶段菜单总是无效的,所以战斗中这条指令不起什么作用。

实际代码:
08 00
2E 00 XX XX (0000表示False,0100表示True)

9 延时

延时在很多地方都用得上。用得比较多的是音轨或音效代码之后。如果需要音轨或音效放一段时间再执行后面的命令,就要用延时(岳飞传的满江红字幕就是这样弄的)。延时时间以十分之一秒为单位。

实际代码:

09 00
04 00 XX XX XX XX (延时时间,以十分之一秒为单位)

a 初始化局部变量

将所有局部变量的值都变成False。通常用在R剧本开头。
曹操传里的0-255号变量都是局部变量,256-2047号是全局变量。

实际代码:

0a 00

b 变量赋值

给变量赋值。

实际代码:

0b 00
04 00 XX XX XX XX  (变量序号)
27 00 XX XX (0100表示True,0000表示False)

c 结束Section

用来强行结束一个Section。

实际代码:

0c 00

d 结束Scene

用来结束Scene。前面已经提到了,如果一个Scene里只有一个Section,那没必要用这条代码。而如果一个Scene里有多个Section,就必须用这条代码来结束Scene。

实际代码:

0d 00

e 战斗失败

战斗失败。通常用在49 战斗结束之后。

实际代码:

0e 00

f 结局设定

结局设定。用在游戏的最后。

实际代码:

0f 00
12 00 XX XX (0000表示红线,0100表示黄线,0200表示蓝线)

待续……


顶部
性别:男-离线 ethos1001

中大夫

Rank: 7Rank: 7Rank: 7Rank: 7
组别 羽林都尉
级别 军师将军
好贴 2
功绩 134
帖子 957
编号 52681
注册 2005-11-7
家族 慕容世家


发表于 2005-12-13 13:32 资料 文集 短消息 只看该作者
两个问题,请高手回答:
1.  请问用van太守的剧本编辑器,可以直接设定回合数么?
2.  在原始剧本的虎劳关之战,当我军有人撤退时会出现袁绍是否参战的选项,但从剧本中看不到两种选择对结局的影响。在用van太守的剧本编辑器设定战利品时,过关后似乎没有效果。利用多功能修改器打开剧本察看,发现有两个战利品设定选项,在前面剧本修改器修改的只是第二个选项,需要把第一个也进行修改,过关后战利品才能按照修改后的效果显示。是不是由于原始剧本缺乏相应代码的问题,如何修正。(本人只会用剧本编辑器,不会编程,无法直接修改原始剧本)
如违反版规,请转移至相应板块并告知,谢谢!


顶部
性别:未知-离线 btzhang02

Rank: 2Rank: 2
组别 百姓
级别 奋威校尉
功绩 1
帖子 104
编号 42683
注册 2005-7-9


发表于 2005-12-13 14:11 资料 短消息 只看该作者
1.既然是剧本编辑器,当然可以设定.......45 战场全局变量里就可以.
2.用剧本编辑器打开剧本S,代码59就是战利品的设置....
==============================================
建议你先去看精华帖,里面有编辑剧本方法的说明
PS.占了张生的一层楼,不好意思啊,斑竹帮忙删了吧...
顶部
性别:男-离线 ethos1001

中大夫

Rank: 7Rank: 7Rank: 7Rank: 7
组别 羽林都尉
级别 军师将军
好贴 2
功绩 134
帖子 957
编号 52681
注册 2005-11-7
家族 慕容世家


发表于 2005-12-13 15:38 资料 文集 短消息 只看该作者


QUOTE:
原帖由btzhang02于2005-12-13, 14:11:07发表
1.既然是剧本编辑器,当然可以设定.......45 战场全局变量里就可以.
2.用剧本编辑器打开剧本S,代码59就是战利品的设置....
==============================================
建议你先去看精华帖,里面有编辑剧本方法的说明
PS.占了张生的一层楼,不好意思啊,斑竹帮忙删了吧...

非常感谢!
关于第二个问题,请楼上再仔细看一下我的描述。在下已经在对应位置更改代码,过关未显示修改效果。用多功能查看,发现有两个战利品选项,怀疑是对应袁绍是否出战的不同结局(类似于赤壁一,选“抵抗到底”全灭敌人过关可得双鞭,选“撤退”全灭敌人就无法得到。)
由于在下在虎劳关准备依据是否触发袁绍出战剧情设计不同的战利品,单纯修改现有的剧本代码无法达到目的。

问题一:在原有剧本的基础上,可否根据是否触发袁绍剧情,触发后的两种选择设定不同战利品?
要解决这个问题,需要对应不同情况编写结局。原有剧本需要增加新的代码,该怎么写?

问题二:不考虑袁绍出战的问题,直接更改过关后战利品?
这个用剧本修改器直接修改剧本就可以,别的关都没问题,但是这关不行。可能是剧本本身的问题(没有编写相应代码),可能是剧本修改器的问题(原始剧本有,但用剧本修改器打开时看不到相应的部分)。

在下只是为了研究剧本结构和剧本修改器的功能,纯粹为学术探讨,请高手答疑解惑。
顶部
性别:男-离线 奉孝
(東望洋生神仙)

琅邪郡公枢密直学士

Rank: 14Rank: 14Rank: 14Rank: 14Rank: 14
柱国(正二品)
组别 翰林学士
级别 安南将军
好贴 1
功绩 1209
帖子 2865
编号 65
注册 2004-11-3
来自 東望洋山


发表于 2005-12-13 16:04 资料 个人空间 短消息 只看该作者
要根據袁紹是否出戰而設置不同的戰利品,可在劇本中多做一個戰場勝利測試。袁紹沒有出戰的,走一個。袁紹出戰的,走另一個。兩個戰場勝利測試中的戰利品設置成不一樣(例如不出戰可得馬鎧,出戰了就沒有戰利品)就行了。
顶部
性别:男-离线 ethos1001

中大夫

Rank: 7Rank: 7Rank: 7Rank: 7
组别 羽林都尉
级别 军师将军
好贴 2
功绩 134
帖子 957
编号 52681
注册 2005-11-7
家族 慕容世家


发表于 2005-12-13 18:04 资料 文集 短消息 只看该作者


QUOTE:
原帖由奉孝于2005-12-13, 16:04:48发表
要根據袁紹是否出戰而設置不同的戰利品,可在劇本中多做一個戰場勝利測試。袁紹沒有出戰的,走一個。袁紹出戰的,走另一個。兩個戰場勝利測試中的戰利品設置成不一樣(例如不出戰可得馬鎧,出戰了就沒有戰利品)就行了。

考虑过,不过按照现有的程序,询问测试之后的子事件是无法进行变量测试和变量赋值的,伤脑筋。
不过也许可以可以进行给定区域内的战场人物测试,袁绍出战就会离开区域,就可设计不同的战利品了,多谢楼上提醒。
其实问题不难解决,关键是出现问题的原因无法解释。我提出的问题二,直接变更战利品是做不到的。胜利后战利品的代码也改了,但是不起作用,请大家也测试一下。
顶部
性别:未知-离线 火羽

Rank: 2Rank: 2
组别 百姓
级别 奋威校尉
功绩 1
帖子 111
编号 61244
注册 2006-3-1
家族 轩辕学院


发表于 2008-1-11 18:11 资料 短消息 只看该作者
想知道在咱们大陆,是哪位大贤制作出首款《曹操传》剧本编辑器呢?真的很想认识一下,不知道是不是咱们论坛的?
顶部
性别:男-离线 炎帝瀑布碎
(月半月半)

余杭郡公
监管使
京东西路经略使
★★★★★★

Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23
资政殿大学士(从一品)
组别 经略使
级别 征东将军
好贴 1
功绩 2358
帖子 5212
编号 85388
注册 2006-10-1
来自 轩辕学院
家族 肉肉门


发表于 2008-1-11 18:15 资料 个人空间 短消息 只看该作者
回复 #7 火羽 的帖子

剧本编辑器啊
用的最多的就是van的
本坛修改区节度使
他的介绍大概看看箱子的回忆录吧
http://www.xycq.net/forum/thread-157681-1-1.html
这贴35楼
另外本坛博雅张生也写过个剧本编辑器
顶部
性别:未知-离线 火羽

Rank: 2Rank: 2
组别 百姓
级别 奋威校尉
功绩 1
帖子 111
编号 61244
注册 2006-3-1
家族 轩辕学院


发表于 2008-1-11 21:16 资料 短消息 只看该作者


QUOTE:
原帖由 炎帝瀑布碎 于 2008-1-11 18:15 发表
剧本编辑器啊
用的最多的就是van的
本坛修改区节度使
他的介绍大概看看箱子的回忆录吧
http://www.xycq.net/forum/thread-157681-1-1.html
这贴35楼
另外本坛博雅张生也写过个剧本编辑器

哦,这样啊!van算是鼻祖了吧?最早是在游侠补丁网上知晓其大名……看她头像,是个小女子?强!从明日开始,我就要立志创造自己的游戏了,如果我成功了,可能又会挂起一场革新风暴。前提是我有足够的实力来阐述自己的改编思想,开始努力!
顶部
性别:未知-离线 反斗奇彬

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
功绩 3
帖子 294
编号 377846
注册 2010-5-25


发表于 2010-5-25 15:57 资料 短消息 只看该作者
到底怎么做剧本啊,我晕
顶部
性别:未知-离线 dujian15

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 45
编号 114854
注册 2007-3-1


发表于 2010-6-1 12:13 资料 短消息 只看该作者
这个东西太有用了,摸索了好久才发现的,还是受教了。
顶部
性别:未知-离线 dujian15

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 45
编号 114854
注册 2007-3-1


发表于 2010-6-2 04:39 资料 短消息 只看该作者
这些都是死用法,理解最重要,我最初也是花了一些时间在这方面,不过还好有点编程基础。。。
顶部
性别:未知-离线 coldrain

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 1
编号 400472
注册 2010-10-21


发表于 2010-10-24 00:04 资料 短消息 只看该作者
如果我只想要一个R剧本,做个类似电影的展示。怎么让他不关联S呢?也就是说怎么确定游戏结束啊?
顶部
性别:未知-离线 529200599

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 4
编号 391491
注册 2010-8-11


发表于 2010-11-2 12:06 资料 短消息 只看该作者 QQ
回复 #13 coldrain 的帖子

怎么设置战斗中敌军的将领和小兵都能升级?
顶部
性别:未知-离线 yangzaixing
(杨家枪,传承着……)

Rank: 2Rank: 2
组别 百姓
级别 奋威校尉
功绩 1
帖子 114
编号 403292
注册 2010-11-13


发表于 2010-11-13 18:27 资料 短消息 只看该作者
多谢向新手们伸出援手!
顶部
性别:未知-离线 engineerjia

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 32
编号 320009
注册 2009-4-29


发表于 2010-11-20 16:40 资料 短消息 只看该作者
好帖~
不过帖子结尾说“待续……”,后续的在哪里呢?
很想知道0x10之后的指令详细格式~
顶部
性别:男-离线 513633522
(小越)

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 右将军
功绩 12
帖子 1179
编号 349592
注册 2009-12-6
家族 轩辕狼党


发表于 2011-8-20 15:25 资料 文集 短消息 只看该作者
看看待续还能续不

正好学习改剧本指令呢
来看看
顶部
性别:男-离线 飞将军VS小霸王
(小傲)

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 17
编号 471457
注册 2012-11-2


发表于 2012-11-12 19:21 资料 短消息 只看该作者
谁能告诉我怎么解决剧本顺序相反地问题。

例如我设置:
武将出现 赵云 XX YY 普通
延时5
对话  &赵云/nXXXXXXX……

结果我用EKd5测试,就会变成说完话以后出现,这是怎么回事?
顶部

正在浏览此帖的会员 - 共 6 人在线




当前时区 GMT+8, 现在时间是 2024-11-27 05:14
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.015474 second(s), 10 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP