3DMGAME论坛

标题: ASI类 脚本 编写 修改 汉化 Native Trainer 开源计划 ———— 标题长点,希望更多的朋友加入开发,国内没有此类研究,该帖持续不断更新! [打印本页]

作者: lovemf    时间: 2015-5-6 16:49
标题: ASI类 脚本 编写 修改 汉化 Native Trainer 开源计划 ———— 标题长点,希望更多的朋友加入开发,国内没有此类研究,该帖持续不断更新!
本帖最后由 lovemf 于 2015-8-22 18:53 编辑

转发请保留该字样:“[L4D WInd && OB]” 昔日的战友OB又复活归来。。
目录【以帖楼层】:



说点题外话:
说是开源,其实本身Native Trainer就是开源的我只是整合、修改、汉化部分代码,所以相当的惭愧,国内基本上找不到此类话题的网站,那不如从此帖开始,慢慢的整合一群志同道合的朋友,共同研究,为大家创造更多的插件,打个简单的比方外挂,敢于开源的人少之又少,及时开源也是过期的东西。国情就是如此,也只能感慨一番。   
我相信付出都会有收获,也因为这种精神我认识了许多志同道合的朋友,从最初的pvpgn、bnetd project此类开源项目,让我学习到这种精神,让我印象最为深刻的就是SourceMod类[Half Life]插件,几乎是共享的,有很多优秀的作品,L4D1代,我制作了LXD、Random event、viprank等插件,如当初我不开源,没有那群志同道合的朋友,也不至于能霸占全球rank第一如此之久,也不会在L4D2的时候还能看到我制作的hack能够得到延续,也不会看到一批一批优秀的制作者。
所以我想说,共同进步的同时又能方便广大玩家,何乐而不为。So 此帖不光开源,也会在空余时间进行授课,对SDK进行慢慢的翻译,逐渐更新,个人思想始终是有局限的,期待大家的共同加入。

第一篇帖子权当基础教程,我并非是c++高手,只是趋于爱好,逐渐学习,学学忘忘。【不足之处还望指正,学习就是摸索、研究、请教
1、什么是Asi
Asi是Script Hook V的脚本文件,与其说是脚本,我认为不如说是DLL文件更为恰当,用Editplus类软件编辑Asi文件时,都能看到文件头的标准win32结构,Script Hook从字面了解,就能明白,通过hook(例如我给你打电话,中间需要一个基站,hook你可以看作一个伪造的基站,拦截正规基站的信息,然后对其发出修改后的指令,然后得到结果,外挂常用的一种形式)创建我们需要功能,让Script Hook来识别,并在游戏内体现出来。而Asi的书写结构是标准的c++结构,所以说大家还是学c++吧,哈哈。

2、如何编译Asi
安装VS2013,打开 Source\samples\NativeTrainer.sln 工程文件,然后如图所示,下方会有简要提示,无论是否编译成功。


3、关于中文编译
采用中文需要注意事项,首先编码必须是utf8,然后字符集必须采用"使用 Unicode 字符集", 因为编码的问题(这是我的猜测,我在很早以前看到过GTA系列是单字节游戏,汉化也是采取的外挂形式,在实际测试过程中,乱码问题,建议全部采取繁体中文书写,如果编译出现错误C2001,偶数中文背后加上英文符,或gbk to utf8字符转换)


4、代码基础讲解
因为代码都是标准的C++结构,所以这里不对最基础的指令进行说明,只对针对游戏有作用的代码进行说明。首先来看一段代码,代码内能备注的,我都进行备注

创建菜单函数,创建菜单的方式有许多种,这里只以其中之一进行说明,该函数涵盖本附件源码内的基础功能

首先看创建菜单的一个功能
<
后面一堆参数怎么知道表达的是什么意思?你可以在vs中搜索draw_menu_line后会出现下方的代码,相对应后你就知道都是什么意思了,或者直接在vs中自己手动键入draw_menu_line他也会提示,那么翻译出现就是
<
那么我们继续看下面的一段代码

<

上面部分完了,只是起个抛砖引玉的作用,很多不明白的参数,可以按照我提供的方法,找到函数入口,查看对于的参数,来知道其中的意思。
那么接着继续,上面说到创建菜单,其中有部分SDK参数,但是我们在代码中还发现了一个奇怪的部分,为什么要搞那么多次?其实我们按照逻辑分析一下,创建菜单的函数为draw_menu_line,创建输出文字又是另外一个函数,一个的目的很单纯,一个则是创建菜单,细看两段代码,都是很多不同之处,从这里可以思考到一个问题,那么以后我们在单独制作其他的插件的时候是否也应该考虑到这个问题了?我们改变其中的参数有会得到具体的什么表现了?不如自己尝试修改后实下。


<


突然想起来一个严重的问题,那必须要说下,且到了上班的点了,也不够时间了。
<

process_main_menu() 解释
<
前文中我们提到了
<

该段代码中我们可以追踪代码段,得到

<

前文中多次提到过update_features,那么作为本次代码讲解的结束,我想再合适不过了

<

5、SDK整理翻译
网站地址:http://www.dev-c.com/nativedb/   该SDK由网友维护更新,可随时去更新,这样才会有一些新的备注,不会出现类似于unnkow情况发生.SDK部分需要很长时间研究
PLAYER [203]              玩家部分
ENTITY [150]                                                        实体
PED [525]                                                                        角色模型
VEHICLE [476]                                                        车辆相关
OBJECT [101]                                                        对象
AI [274]                                                                        AI
GAMEPLAY [254]                                                操作类
AUDIO [217]                                                                音乐类
CUTSCENE [41]                                                        动画类
INTERIOR [33]                                                        室内
CAM [191]                                                                        摄像机
WEAPON [86]                                                                武器
ITEMSET [9]
STREAMING [112]
SCRIPT [25]                                                                脚本
UI [407]                                                                        界面
GRAPHICS [286]                                                图形
STATS [137]                                                                统计
BRAIN [11]
MOBILE [15]                                                                手机
APP [17]
TIME [15]                                                                        时间
PATHFIND [51]
CONTROLS [32]                                                        控制
DATAFILE [50]
FIRE [15]                                                                        火
DECISIONEVENT [13]
ZONE [9]
ROPE [42]                                                                        范围
WATER [6]                                                                        水
WORLDPROBE [10]
NETWORK [619]                                                        网络
NETWORKCASH [76]                                        高级网络 金钱?
DLC1 [38]
DLC2 [7]
SYSTEM [24]                                                                系统
DECORATOR [10]
UNK_SC [49]
UNK [8]

6、文件结构

SDK部分:
source\inc\enums.h

source\inc\main.h
source\inc\nativeCaller.h
source\inc\\natives.h   SDK主要文件,网上更新也是更新该文件
source\inc\types.h    自定义数据类型文件

Lib文件:
source\lib\ScriptHookV.lib


可编写脚本文件:
source\lib\samples\NativeTrainer\keyboard.h
source\lib\samples\NativeTrainer\keyboard.cpp
source\lib\samples\NativeTrainer\main.cpp   看结构就是一个DLL
source\lib\samples\NativeTrainer\script.cpp   主要代码存放文件
source\lib\samples\NativeTrainer\script.h


作者: 3dm_15157514    时间: 2022-12-8 08:12
6666666666666

作者: lifengsun    时间: 2023-2-19 00:06
提示: 作者被禁止或删除 内容自动屏蔽
作者: steven011    时间: 2023-4-30 02:27
感谢分享
作者: jq.qct@qq.com    时间: 2023-8-8 15:36
6666666666
作者: 3dm汉化病    时间: 2024-1-28 21:46
学习学习
作者: DJ8-8    时间: 2024-12-4 10:56
膜拜大佬牛逼,社区有你们真幸福





欢迎光临 3DMGAME论坛 (https://bbs.3dmgame.com/) Powered by Discuz! X3.2