骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
购买霸主CDKEY 购买战帆CDKEY
查看: 22046|回复: 32

[源码与工具] txt2py反编译txt的工具(14.4.21 发个别人的程序)(0.7自己用了下修复问题)(开源)

 关闭 [复制链接]

5

主题

107

回帖

79

积分

扈从

Rank: 2Rank: 2

UID
207504
第纳尔
571
精华
0
互助
7
荣誉
1
贡献
0
魅力
0
注册时间
2010-2-28
鲜花(4) 鸡蛋(0)
发表于 2013-11-1 14:53:58 | 显示全部楼层 |阅读模式
本帖最后由 小丑遊戲 于 2021-9-2 19:52 编辑


如果有人想研究關於反編譯資訊,此帖的內容進行保留,不進行刪減。

關於潘德G的事件,由於過往的一些事情,利用反編譯程序將別人未開源程式碼強行開源,是非常不尊重的事情。

所以將此帖鎖住,不讓人再討論關於此事。
BY - 小丑遊戲



--------------------------------------------------------------



(点击展开 / 收起)

如题,这是将txt还原成py是工具,还原后可编译,
将程序放入mod文件夹,运行得到module_scripts.py等,保存在reversed目录下。生成的py scripts是用常量硬编码出来的,而不是"trp_xxx_xxxx" "itm_xxx_xxxx"这种形式。其他自己看程序里的说明。
(点击展开 / 收起)

(点击展开 / 收起)

(点击展开 / 收起)

(点击展开 / 收起)

PS:只在战团1.153测试过

!!注意!!:如果发生不能识别的字符错误,就要把那个文件另存为utf-8带签名。比如潘德的module_strings.py要另存为utf-8带签名。
0.7.1 忘了改了什么了-。-

http://pan.baidu.com/s/1pJv0mGN
0.7 2014.4.25
1.修复了conversation不能正常编译,同时能解决txt autoid不规范的问题(之前竟然一直没发现,话说这是我自己第一用我写的程序。。。)
2.其他若干小问题
3.增加conversation反编译 再编译 然后和原始 conversation.txt比较 替换修复dialogs.csv汉化的功能
旧文件命名为conversation_old.txt 新生成的文件命名为conversation_new.txt 同目录下再放一个dialogs.csv 最后悔生成一个dialogs.csv.new
txt2py.rar (55.97 KB, 下载次数: 2027)

0.6.2
发现一个致命错误,解析了trp_字符串之后,会无法编译。。当初写完脑袋一热一直都没试过 今天试了下才发现问题很严重。。。
因此修改反编译为两种模式,第一种常量硬编码trp_字符串为TROOP+xxx,第二种模式类似注释,可以打开2个txt对照看
编译时记得使用第一种模式,并且不要把module_troops.py拖进去覆盖掉原来的,这个文件只能用来看。troops和templates啥的关联太多,果然不能这么硬的解析出来。

PS:最近有点想把simple_triggers啥的加进去。。。可惜以前写的代码忘的太多了。。。哎。。
PS2:趁最近有时间有啥问题拜托帮忙测试反馈一下
txt2py.rar (58.27 KB, 下载次数: 1656)

0.6.1
发现潘德2.5G反编译会崩,增强了一下兼容性
txt2py_0.6.1.rar (54.27 KB, 下载次数: 1546)

0.6
txt2py_0.6.rar (50.81 KB, 下载次数: 1709)
看处理troops的函数时看到了这个
def wp_one_handed(x):
  return (((bignum |(x*3/2)) & 0x3FF) << one_handed_bits)
百思不得其解铃还须系铃人啊。。想破脑袋怎么想都不对啊,和txt里的值不一样。。结果我发现我打开的是领军者的header_troop.py 想到了R大可能改了这公式,以平衡属性。。原来是这样的:
def wp_one_handed(x):
  return (((bignum | x) & 0x3FF) << one_handed_bits)

PS:潘德反编译再编译发现高于255的属性值会溢出。386的力量会变80,小于则正常,看来要么只能改process_troop.py要么只能编译完改txt。
PS2:休息几天——w——

0.6更新:
1.增加troops.txt strings.txt(写strings时乐开了花,写troops时苦死了。。
2.解析掉了TROOP+ STRING+ 两个标志(不过mission tpl里的trp_xx_xxx|plyr 这种还没解析,保持174|plyr 以后再说了
3.只支持1.153 没有后续更新了

v0.5测试:
1.领军者最新版,反编译再重新编译生成的txt完全一样。
2.潘德3.611原版反编译再重新编译生成代码完全一样。
3.潘德G2.81fixed hotfix5反编译再重新编译module_dialogs.py无法编译。不过幸好其他文件可以正常反编译。因为module_dialogs.py不被任何文件引用(大概
(好久没玩MB了 电脑就这3个版本,欢迎提交bug,尽量维护)

潘德G2.81fixed hotfix5反编译再重新编译module_dialogs.py无法编译分析:
编译时错误时:1.ERROR: INPUT TOKEN NOT FOUND        2.ERROR: Output token not found
INPUT TOKEN NOT FOUND意为,这条对话的start state无法触发,因为其他对话的output state没有引导到这条对话,而该对话的start state 又不是anyone start等等预定义的触发条件,也就是说该对话永远无法触发,自然就是错误了。
Output token not found意为,这条对话所指向的另一条对话不存在。
解决方法:(看12L =- =)
1.看错误log删除无法触发的对话
2.看错误log修复错误的指向(引用)
不过以上都是不妨碍游戏的,只要绕过了编译程序。

0.5更新日志:
1.砍掉重写了代码,模块化程度更高更以维护(不过看不出来,因为还是控制台程序,这样比较酷么-v-,才不是不想写界面类)
2.增加conversations.txt mission_templates.txt menus.txt triggers.txt(顺手) 的反编译
3.反编译代码生成时处理了一些细节。
4.不再要需要随带的txt文件了,定义到了程序里。
0.5
txt2py_0.5 .rar (45.31 KB, 下载次数: 1634)

旧版(只能还原scripts.txt,某种意义上还挺好用。。)
txt2py.rar (52.12 KB, 下载次数: 1803)











评分

参与人数 2荣誉 +1 第纳尔 +45 互助 +4 收起 理由
BigM + 10 + 1 分享美~
心中飞翔 + 1 + 35 + 3 更新费~

查看全部评分

鲜花鸡蛋

greole  在2013-11-5 22:21  送朵鲜花  并说:继续加油
chenwz  在2013-11-4 10:56  送朵鲜花  并说:非常不错
mskimizd  在2013-11-3 22:03  送朵鲜花  并说:~~

5

主题

107

回帖

79

积分

扈从

Rank: 2Rank: 2

UID
207504
第纳尔
571
精华
0
互助
7
荣誉
1
贡献
0
魅力
0
注册时间
2010-2-28
鲜花(4) 鸡蛋(0)
 楼主| 发表于 2013-11-1 16:09:32 | 显示全部楼层
xylcxyfc 发表于 2013-11-1 15:26
只能反编译scripts.txt?

对。。其他暂时没写。。太累- -

5

主题

107

回帖

79

积分

扈从

Rank: 2Rank: 2

UID
207504
第纳尔
571
精华
0
互助
7
荣誉
1
贡献
0
魅力
0
注册时间
2010-2-28
鲜花(4) 鸡蛋(0)
 楼主| 发表于 2013-11-4 15:38:15 | 显示全部楼层
chenwz 发表于 2013-11-4 10:56
那么,能不能做个搞定item_kinds1.txt和troops.txt,party_templates.txt,particle_systems.txt等简单文件 ...

野生无名大。不太理解啊。。这些魔球不是都可以编辑么。。
如果是说找两个txt文件不同的话我推荐个软件beyond compare,找出2个txt不同后再用魔球修改就方便了。

另外有反编译mission_templates conversations menu这3个txt文件的打算,因为魔球没法改,至于上面几个的反编译需求真的有必要么?

5

主题

107

回帖

79

积分

扈从

Rank: 2Rank: 2

UID
207504
第纳尔
571
精华
0
互助
7
荣誉
1
贡献
0
魅力
0
注册时间
2010-2-28
鲜花(4) 鸡蛋(0)
 楼主| 发表于 2013-11-5 21:34:24 | 显示全部楼层
greole 发表于 2013-11-5 01:03
其实我很想知道楼主最初想怎么改潘德守城的AI...(想达到怎样的效果)

玩的时候我发现,当敌我人数相差很大时(300vs2500) 弓箭手就几乎不会站在城垛边上,敌我人数相当时貌似会好点,就像假如优先考虑把城垛上射手的位置站满,应该会好点。

另外to c大
那几个txt我看了下,逻辑上挺简单,就是涉及到128位数的计算,比较麻烦,而且好累啊一口气写了这么多个=- =。另外找不同直接在txt层面用beyond compare找,找到后,再魔球定位到相应条目修改不是也挺好么。先偷懒几天-v-。。。。。

5

主题

107

回帖

79

积分

扈从

Rank: 2Rank: 2

UID
207504
第纳尔
571
精华
0
互助
7
荣誉
1
贡献
0
魅力
0
注册时间
2010-2-28
鲜花(4) 鸡蛋(0)
 楼主| 发表于 2013-11-5 22:50:40 | 显示全部楼层
greole 发表于 2013-11-5 22:20
想不到楼主这么快就搞定conversations.txt mission_templates.txt menus.txt了。赞一个。
看了下module_di ...

没细想。。也是 两个token填了那些字符串就不用填了。。反编译的时候我是无视token的。。难怪信息丢失了。。要解析token太麻烦,嘛。

格式什么的有空会再调整下,虽然我觉得已经很好了=- = PS:troops.txt还没解析呀。。否则代码可读性可以提高一倍。。因为引用到的地方太多了。。128数运算拒我于门外。。野生大数类不敢用,别人如果写的很糙的话,出了bug简直无法调试QAQ

5

主题

107

回帖

79

积分

扈从

Rank: 2Rank: 2

UID
207504
第纳尔
571
精华
0
互助
7
荣誉
1
贡献
0
魅力
0
注册时间
2010-2-28
鲜花(4) 鸡蛋(0)
 楼主| 发表于 2013-11-7 10:39:47 | 显示全部楼层
mmccccmm 发表于 2013-11-7 10:32
生产PY文件后里面的注释都没了。。@路西菲爾

只有0.1 scripts有那注释。后来就没加了,重写代码的时候没考虑注释,因为最终肯定都能解析出来。如果你说是原版的注释,或者mod作者的注释。。那怎么可能有啊。。。

5

主题

107

回帖

79

积分

扈从

Rank: 2Rank: 2

UID
207504
第纳尔
571
精华
0
互助
7
荣誉
1
贡献
0
魅力
0
注册时间
2010-2-28
鲜花(4) 鸡蛋(0)
 楼主| 发表于 2013-11-9 10:59:00 | 显示全部楼层
小洛 发表于 2013-11-8 23:07
潘德G2,91反编译崩溃  读取script程序退出

我这没问题啊。。亲是不是二次修改了?

5

主题

107

回帖

79

积分

扈从

Rank: 2Rank: 2

UID
207504
第纳尔
571
精华
0
互助
7
荣誉
1
贡献
0
魅力
0
注册时间
2010-2-28
鲜花(4) 鸡蛋(0)
 楼主| 发表于 2014-4-21 04:07:02 | 显示全部楼层
发个工具,up一下。。就不重复造轮子了
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

Archiver|手机版|小黑屋|骑马与砍杀中文站

GMT+8, 2025-12-22 18:38 , Processed in 0.114427 second(s), 21 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表