曹操传吧 关注:87,801贴子:1,313,464
  • 89回复贴,共1

【工具】另一种方式写曹操传剧本的尝试

只看楼主收藏回复

本来我对曹操传剧本一直都不大熟悉,也没有要深入了解的冲动。之所以写这个工具只是由于上星期的一个意外,让我无意中发现原来现在的剧本编辑器程序是加了壳的(exe加密)。既然是加了密,出于对作者的尊敬,那么我就没必要再继续分析它的内部结构了。其实也是看不懂,或者说要弄懂的话实在太浪费时间了。如果是为了做剧本扩展功能而硬着头皮去分析汇编,倒不如重新自己写一个编辑器了。恩,所以就有了这次的尝试。
剧本的文件结构很好理解,只要用现有的编辑器保存多几条简单的指令,稍微对比一下应该就能搞清楚了。虽然现在看上去是挺简单,完全不需要再去做什么汇编代码分析就能够弄明白,但是,其实那是因为编辑器的作者当年努力替我们分析过了,如果没有前人的成果,要从头开始研究曹操传的exe再重写一个编辑器,就不是那么容易的事情了。因此,这里必须要向剧本编辑器的作者Van致敬,感谢他的无私奉献!
在了解到剧本的数据结构后,我倒不是接着去学习掌握各条指令的实际用法,如果不是翻译需要的话,其实我并不想去知道指令的具体用法。因为不需要,我写这个程序的目的之一就是为了提供一个可以自定义指令内容和数据结构的工具。也就是说,如果你有能力修改曹操传exe实现了新的指令,不需要再把新的指令用法告诉我,自己就可以在工具里手动添加新的指令进去。
另外我想实现的一个主要功能就是希望能让剧本文本化。之前看到一个吧友发布自己mod的时候号称开源,我就一直在想曹操传剧本这种二进制文件能算源码吗,到底能不能用记事本来写剧本代码呢?现在我是尝试把剧本以xml的格式来显示出来,跟eex相互间可以自由转换,总算是基本实现了可以直接手写剧本的目的。虽然大概没什么人会这样写,但是,文本跟二进制文件的最大区别就是:文本是可以随意大段大段替换而不会出问题的,二进制文件你替换长度不一样的来试试看?这里插一句,原剧本编辑器只有导出并无导入功能,因此不算真正意义上的文本化。
好了,不经不觉,又说了那么多,最初的想法和目的也就上面两个,具体其他功能或使用方法就请下载自行尝试了。本来就很简单的一个小工具而已,感觉应该不需要再写什么教程了吧。如果是碰到有疑问的地方或bug,都可以在下面留言。大家有什么的建议和意见也可以提,虽说肯定不可能全部都实现或改正,但说出来一起讨论一下也挺好。为了保持版面整洁,请大家就别发“顶”“支持”这类没有讨论价值的回复了,心领了,【如删勿怪】【谢谢合作】。
有一点差点忘记说了,当前程序并没有进行剧本指令位置有效性的校验,一来我还不是很清楚具体的约束条件,如“code0、1、2不能手动添加这类”;二来这个工具本身是不建议对指令不熟悉的人下载使用的。当然,要是有哪位了解其中约束的朋友能够把内部各种硬性规定跟我讲讲,或许能够再下个版本里添加一个约束条件也可自定义的功能。
最后贴两个截图吧:


看到这两者后,大家应该明白我为何那么大费周章非得搞个英文版的了吧。如果用中文界面的话那么跟旧版界面的相似度就实在是太高了,非常有抄袭甚至剽窃的嫌疑。为了表达对原剧本编辑器的敬意,同时证明有做出过自己的努力,希望能做到只是借鉴了表达形式,而非赤裸裸的模仿。因此,在工具发布后,我是不会再提供原先的那个中文文档下载的了,前两天有下载过的朋友,可以自己手动放到【ConfigTable】目录下使用,但不建议公开分享。其实,那些描述,自己再一个个利用【CMD Config】菜单项修改也是可以了。其他的属性描述,也同样可以自己改成中文的,只要你喜欢。


IP属地:广西1楼2016-07-03 17:36回复
    我擦,忘了我的剧本格式已经被改得面目全非了,然后打不开……


    5楼2016-07-03 19:20
    收起回复
      2025-07-28 20:41:08
      广告
      不感兴趣
      开通SVIP免广告
      还是傻瓜式剧本编辑器适合初学者....


      IP属地:湖北6楼2016-07-03 21:46
      收起回复
        话说什么时候能把修改兵种名称,人物特性,兵种特效的功能直接加到dota修改器里面,让制作MOD更加的普及化...


        IP属地:湖北7楼2016-07-03 21:59
        收起回复
          我认为懒大概可以分为两种:一是懒得动手;二是懒得动脑。人类的不少发明应该还是缘于懒得动手,而不大可能是懒得动脑的成果。
          既然楼上能说出【有视频教程或者图文详解制作流程这样的吗?纯文字难以理解..】这样的话,显然属于第二种懒法。我也懒得做过多评价,既然各有各的活法,自然也各有各的懒法,无可厚非。
          只是个人能力十分有限,无法掌握与第二类懒人的沟通技能。因此,倘若阁下自问具备加入第二懒人的条件,还望绕道,请恕在下无法解答各类由于懒得动脑而提出的疑问和建议。
          我之所以懒得给这个工具写说明或教程也正是因为这个: 对于真正能看懂的人来讲,他们肯定懒得去看那么浅显的东西,而对于看不懂的人,他们同样懒得去看字如此之多的玩意。就拿5楼说吧,我只是提及“试试重新配置一下cid和pid”,并没有细说cid和pid的联系是什么,和到底该怎么配。结果5楼层主就已经晓得了,估计他也懒得去问,宁可自己摸索。我比较喜欢跟这第一种懒人打交道,彼此之间懒的契合度高,就不会有什么交流障碍。


          IP属地:广西12楼2016-07-05 06:22
          收起回复
            我不是懒得去问,是因为ccz剧本格式我已经研究透了,你说pid和cid我一看就知道是指的什么。
            所以我根本就没自己摸索过啊……= =
            这不是懒不懒的问题,是有没有程序基础的问题。
            对剧本格式一脸懵逼的人,你说了他也搞不懂,自己去研究也很可能碰一鼻子灰。
            在程序业界外聊程序,大家都搞不懂,才是正常的。
            有人能弄懂,那是偶然。


            13楼2016-07-05 18:42
            收起回复
              @失翼之证
              刚刚确认了,新引擎使用&【前四个字】还是不能把五个字的人招唤出来,原版&六个字人名也是能够出来的。应该属于特殊处理过的后遗症了。


              IP属地:广西23楼2016-07-18 20:46
              收起回复
                偶然间发现伯伯的编辑器突破了战前最多15人出战的限制,方便多了,赞一个


                IP属地:安徽30楼2016-07-28 12:46
                收起回复
                  2025-07-28 20:35:08
                  广告
                  不感兴趣
                  开通SVIP免广告
                  昨天发布了一个版本,我一直在犹豫要不要上来写发布说明。
                  因为几乎是跟剧本没什么关联的功能,上次修改data姓名列表那个版本毕竟剧本显示人名要用到,还能靠上点关系。这次添加的,完完全全就是辅助性质的功能了,但考虑到,既然这个工具所预期面对的是进阶mod作者,那么此项功能或许能用得上的吧。所以,还是稍微说明一下用法吧。

                  【Hex Code】各列定义说明如下:
                  <Enable>是否激活该行代码
                  <CodeName>自定义代码名称
                  <FileName>修改的exe目标名称
                  <Address>代码开始地址
                  <UseNew>选中表示使用新代码,不选则使用原/旧代码
                  <OldCode>原/旧代码,可使用空格隔开。不是必须填的,留空可自动获取数据
                  <NewCode>需要替换的新代码
                  <Running>是否为正在运行的进程,是进程的话则会实时修改内存而不是修改文件
                  <IsOffset>代码开始地址的数值是否为文件偏移值,否则为虚拟地址值
                  <Comments>注释
                  默认提供的是6.1关闭血条的代码演示,三行代码都是一样的作用,只是第二行是实时修改运行中游戏,第三行的代码地址为文件实际地址。
                  其实主要是想弄一个简易的修改和管理代码界面。虽然我一般是不会用这样的方式来修改exe,但是我想通常作者修改exe无非是用调试工具实时修改保存或使用UE修改吧。如果熟练使用调试工具的话,大概是瞧不上这个功能的了。这就当是专门为UE用户提供的书签功能吧,因为你修改过什么总得记录下来吧,然后有时候担心改错总得备份exe吧?使用这个界面就可以帮你把所做的修改记录下来,然后想还原某项改动的话只需<UseNew>反选即可。当然,也不一定是代码,其他的十六进制数据如资源等也可以使用这种方式来备份,此时把<IsOffset>开启表示地址<Address>为文件实际地址。
                  v1.07 2016-07-29
                  1. Support to read/write memory in process.
                  2. Add [ReadOnly] column into [HEX Table].
                  3. Can use [IndexTable] as parent menuitem.
                  4. [HEX Code], modify exe/mem with hex code.
                  v1.06 2016-07-26
                  1. Support to search by keyword in 'Hex Data Table' view.
                  2. Support to read/write string resourse in EXE.


                  IP属地:广西31楼2016-07-30 20:04
                  回复
                    这个工具其实能让初阶的mod作者更快更好的升阶……我就用OD改错过,然后怎么都找不回来……


                    IP属地:安徽32楼2016-07-31 12:37
                    收起回复
                      虽说楼上回复链接无效了,我确认过我这边可以打开,但为避免现在或将来其他无法预料的情况,还是再添加多两个另外的下载方式吧。
                      新方式1:

                      新方式2:
                      i m bobo. 0(注是零不是o)fees. u s


                      IP属地:广西34楼2017-04-23 14:02
                      回复