dst-ts-api
v0.0.3
Published
饥荒联机版API
Readme
dst-ts-api
存档目录
~\Documents\Klei\DoNotStarveTogether
日志
服务端(森林):~\Documents\Klei\DoNotStarveTogether\master_server_log.txt
服务端(洞穴):~\Documents\Klei\DoNotStarveTogether\caves_server_log.txt
客户端:~\Documents\Klei\DoNotStarveTogether\client_log.txt
源码解析
源码位置
C:\Program Files (x86)\Steam\steamapps\common\Don't Starve Together\data\databundles\scripts.zip
main.lua
该文件是主入口,在ModSafeStartup中调用ModManager:LoadMods进行Mod加载。
mods.lua
ModWrangler就是在此文件中定义,在ModWrangler:LoadMods中处理了几件事:
通过
KnownModIndex:UpdateModInfo更新所有Mod信息,该步骤需要Mod定义modinfo.lua文件。通过
KnownModIndex:LoadModOverides加载modoverrides.lua文件(这个文件不是Mod提供的,而是在存档目录下,只有一个,里面记录了所有Mod的配置)。通过
KnownModIndex:ApplyEnabledOverrides将modoverrides.lua中配置了enabled = true的Mod进行启用,否则禁用。通过
KnownModIndex:GetModsToLoad获取需要加载的Mod。TODO(了解该方法作用)
KnownModIndex:LoadModConfigurationOptions暂不清楚作用。通过
CreateEnvironment为Mod创建一个环境,可以从这里查找Mod能使用的方法,具体方法将在后续解析。通过
KnownModIndex:ApplyConfigOptionOverrides应用modoverrides.lua中的Mod配置。根据Mod的优先级排序。
TODO(了解该方法作用)
kleiregistermods暂不清楚作用。TODO(验证猜想) 将Mod的
scripts目录加入到package.path以加载其中的脚本,按照逻辑后面的Mod可以使用前面Mod的组件。通过
InitializeModMain先后调用Mod中的modworldgenmain.lua和modmain.lua。
CreateEnvironment创建的环境有以下方法:
- TODO(列出环境中的方法)
Mod结构
modmain.lua、modworldgenmain.lua
这两个文件是通过InitializeModMain方法调用的,全局变量从CreateEnvironment就能知道。
scripts/**/.lua
这个文件夹里的脚本是通过如EntityScript:AddComponent等方法来间接导入的,这些模块早已导入到游戏中,因此scripts/**/.lua也只会继承这些模块里的全局变量而非为Mod提供的CreateEnvironment里的全局变量。
