此帖源于SPT项目组 MODDING IN 3.0.0 ;
翻译由SPT项目组测试员 Sarix 完成;
3.0.0 JS和TS制作mod示范模板由社友 playgzsmac 提供(模板下载在一楼底部)。
模组改动
服务器现在使用TypeScript而不是JavaScript, 模组的制作流程也因此存在改动。最基础的信息包含在Readme文件中,参见此处. 范例模组可以在此处下载,其中的模组分别演示:
1- 获取记录器(logger)功能并使用
2- 访问并编辑SPT数据库中的一个特定数值
3- 访问并编辑SPT参数配置文件中的一个特定数值
4- 访问并使用您自己创建的参数配置文件中的一个数值
5- 将SPT使用的method(方法)替换为您自己定义的method
6- 使用除了您自己编写的mod.ts文件之外的class(类)
7- 将自己的hook(钩子)挂载到onload事件上
8- 将自己的hook挂载到onupdate事件上
9- 增加自己的程序路径
10- 在load()期间向容器中添加自己的class,之后在delayedLoad()中使用该class,以及singleton/transient方式的区别
11- 如何加载一个bundle文件
12- 如何override(覆盖)一个class
13- 如何增添一个商人
我们建议使用Visual Studio Code浏览代码。
您的模组代码应当置于src/mod.ts中。
该文件中有两个函数,load()和delayedLoad(),其中load()内所写的一切代码会在服务器加载自身代码之前运行,比如增加程序路径。delayedLoad()内的代码则会在服务器加载自身代码之后运行——您大部分的代码应当位于delayedLoad()内。
实际运行服务器时,mod.ts文件会被编译成mod.js文件。
如果您需要打包您的mod上传,可以通过VSCode内的npm: build:zip指令打包供上传用。
LogToConsole范例
1- 导入段:这些是范例模组中使用的class,即给我们的物件赋予属性的代码。您可以在mod/types中找到可导入的class
2- 模组实装IMod接口,本质上就是要求模组需要有load()和delayedLoad()两个函数。如果你只需要一个的话,另一个下面写return就行了,就像这个范例模组一样
3- 我们需要使用ILogger“解析”SPT代码才能访问它。<ILogger>是我们需要的type(类别)——其实可以略去,但是它会给VSCode分类提供额外信息,”WinstonLogger”是我们请求的记录器名字(网址)。
4- 一般代码,就和以前一样
5- 我们不需要的函数(范例中我们不需要在服务器装载自身代码之后运行任何代码),直接留白,写一个return
模组内容
参见每个范例模组的readme文件。
常见问题
问:我还能和以前一样干这干那么?
答:应该都可以,只是方法会不同。
问:我用container.resolve()能解析什么?
答:任何SPT使用的class都可以。在VSCode中打开服务器源代码,找到一个叫container.ts的文件,该文件里有我们在SPT中注册使用的所有class和接口。
问:如果我要导入class的话怎么样找到它的实际路径?
答:有几个方法:
1. 打开types文件夹然后观察结构
2. 使用@spt-aki/指令和VSCode提供的intellisense功能浏览文件夹
3. 在VSCode中打开服务器然后手动找文件
(1) 你要找的container.ts,里面有SPT注册使用的所有class和接口。
(2) 源文件网址
此帖源于SPT项目组 MODDING IN 3.0.0 ;
翻译由SPT项目组测试员 Sarix 完成;
3.0.0 JS和TS制作mod示范模板由社友 playgzsmac 提供。
蓝奏云盘:ModExamples-master 提取码:oddba 第三方病毒检测:检测结果
大小: 4992133 字节
修改时间: 2022年6月23日, 13:23:23
MD5: 2B32822BDD82CDCA4369317198FBC7C7
SHA1: E681D2F0D5E7EF355D9B1767AF89E6B2E2F9DA17
CRC32: 8E755698
666
666666666666
虽然我看不懂但是感觉好6啊
感谢分享
666666666666666666666
想请问一下新版本mod要怎么安装,还有就是这个帖子的示例mod有没有实际作用,如果有用我会先直接安装到游戏
666666666666666
好厉害哦