├── assets └── images │ ├── 3.png │ ├── tip.jpg │ ├── 封面.jpg │ ├── 工具.jpg │ ├── 界面1.jpg │ └── 工坊文本格式.png ├── .gitmodules ├── Animation.md ├── Readme.md ├── PreviousKnowledge.md └── FastHandbook.md /assets/images/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CN-DST-DEVELOPER/DST_Handbook/HEAD/assets/images/3.png -------------------------------------------------------------------------------- /assets/images/tip.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CN-DST-DEVELOPER/DST_Handbook/HEAD/assets/images/tip.jpg -------------------------------------------------------------------------------- /assets/images/封面.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CN-DST-DEVELOPER/DST_Handbook/HEAD/assets/images/封面.jpg -------------------------------------------------------------------------------- /assets/images/工具.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CN-DST-DEVELOPER/DST_Handbook/HEAD/assets/images/工具.jpg -------------------------------------------------------------------------------- /assets/images/界面1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CN-DST-DEVELOPER/DST_Handbook/HEAD/assets/images/界面1.jpg -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "scripts"] 2 | path = scripts 3 | url = https://github.com/CN-DST-DEVELOPER/scripts 4 | -------------------------------------------------------------------------------- /assets/images/工坊文本格式.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CN-DST-DEVELOPER/DST_Handbook/HEAD/assets/images/工坊文本格式.png -------------------------------------------------------------------------------- /Animation.md: -------------------------------------------------------------------------------- 1 | # 动画基础教程 by LaLa 2 | 3 | ![img](assets/images/封面.jpg) 4 | 5 | ## 开发工具安装 6 | 7 | ![img](assets/images/工具.jpg) 8 | ![img](assets/images/3.png) 9 | 10 | ## 动画工程目录解析 11 | 12 | ![img](assets/images/界面1.jpg) 13 | 14 | ## 常见问题 15 | 16 | ![img](assets/images/tip.jpg) 17 | -------------------------------------------------------------------------------- /Readme.md: -------------------------------------------------------------------------------- 1 | # mod开发基础教程和手册 2 | 3 | | 文件夹 | 内容 | 4 | | :------------------------------------------: | :------------------------------: | 5 | | [PreviousKnowledge.md](PreviousKnowledge.md) | mod开发前置知识 | 6 | | [FastHandbook.md](FastHandbook.md) | 快速手册 | 7 | | mod_template/ | MOD模板 | 8 | | api_mod/ | API MOD介绍 | 9 | | scripts/ | 子模块引用方式导入的官方脚本目录 | 10 | | scripts_explanation/ | 针对官方脚本的解析(未完成) | 11 | 12 | ### 饥荒官方脚本阅读 13 | 14 | 官方源码目录`Don't Starve Together/data/databundles/scripts.zip`解压即可 15 | 16 | ### 制作动画贴图音频等 17 | 18 | 在库中搜索`Don't Starve Mod Tools`并下载 19 | 20 | - Spriter用于制作动画 21 | - FMOD Designer用于制作音频 22 | - 将jpg/png格式的贴图文件置于`Don't Starve Together/mods/mod_template/export/`目录下,启动游戏将自动编译为贴图 23 | - [反编译贴图文件](https://github.com/CN-DST-DEVELOPER/dont-starve-tools) 24 | 25 | ### 上传至创意工坊 26 | 27 | 使用Don't Starve Mod Tools以上传mod至steam创意工坊,请注意遵守[饥荒联机版模组开发联盟公约](https://cn-dst-developer.github.io/_pages/AllianceConvention) 28 | 29 | ### 其他饥荒MOD教程 30 | - [朋也的饥荒联机版MOD开发教程](https://tomoya92.github.io/dstmod-tutorial) -------------------------------------------------------------------------------- /PreviousKnowledge.md: -------------------------------------------------------------------------------- 1 | # 前置知识 2 | 3 | ### 开发环境搭建(面向win用户) 4 | 5 | - 安装[vscode](https://code.visualstudio.com/)和Lua插件([Lua](https://marketplace.visualstudio.com/items?itemName=sumneko.lua),[vscode-lua](https://marketplace.visualstudio.com/items?itemName=trixnz.vscode-lua))、[Git插件](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens) 6 | - 安装[Git](https://git-scm.com/download/win) 7 | - [注册GitHub账号](https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2Fexplore&source=header)并[加入](https://github.com/CN-DST-DEVELOPER/CN-DST-DEVELOPER.github.io/issues/1)组织 8 | - 学习[Markdown语法](https://gist.github.com/Thesharing/5e5f5842ede0cb6d95d38ea39d9e0234#html)(可选) 9 | 10 | ### Lua基本语法 11 | 12 | - [Lua 数据类型](https://www.runoob.com/lua/lua-data-types.html) 13 | - [Lua 字符串](https://www.runoob.com/lua/lua-strings.html) 14 | - [Lua 运算符](https://www.runoob.com/lua/lua-miscellaneous-operator.html) 15 | - [Lua 流程控制](https://www.runoob.com/lua/lua-decision-making.html) 16 | - [Lua 循环](https://www.runoob.com/lua/lua-loops.html) 17 | - [Lua 函数](https://www.runoob.com/lua/lua-functions.html) 18 | - [Lua 数组](https://www.runoob.com/lua/lua-arrays.html) 19 | 20 | ### Lua进阶教程 21 | 22 | - [Lua 迭代器](https://www.runoob.com/lua/lua-iterators.html) 23 | - [Lua 元表(Metatable)](https://www.runoob.com/lua/lua-metatables.html) 24 | - [Lua 文件 I/O](https://www.runoob.com/lua/lua-file-io.html) 25 | 26 | ### Git基础教程 27 | 28 | - [Git及GitHub教程](https://www.githubs.cn/post/git-tutorial) 29 | 30 | -------------------------------------------------------------------------------- /FastHandbook.md: -------------------------------------------------------------------------------- 1 | # 快速手册 2 | 3 | ### 常用Git命令 4 | 5 | 6 | | 命令 | 功能 | 7 | | ----------------------------- | ---------------------------- | 8 | | git clone [url] | 克隆拉取库 | 9 | | git pull | 拉取上游库当前分支 | 10 | | git push | 推送本地库到上游 | 11 | | git fetch | 与上游库同步,但不合并变更 | 12 | | git checkout [branch] | 切换分支 | 13 | | git checkout -b [branch] | 新建分支并切换 | 14 | | git remote add [name] [url] | 添加上游库 | 15 | 16 | ### 常用调试命令 17 | 18 | 19 | | 命令 | 功能 | 20 | | ------------------------------- | ------------------------------------------------------------------------------------------------ | 21 | | c_godmode() | 上帝模式/复活 | 22 | | c_supergodmode() | 同c_godmode(),但会 额外加满三维 | 23 | | c_freecrafting() | 解锁全部配方,合成不需材料 | 24 | | c_reset() | 重载(客户端)/回到最近一次存档(服务器端) | 25 | | c_regenerateworld() | 重新生成世界 | 26 | | c_spawn(prefab,num) | 在鼠标处生成num个prefab | 27 | | c_give(prefab,num) | 给你num个某prefab | 28 | | c_despawn() | 重选人物 | 29 | | c_skip(num) | 跳过num天 | 30 | | c_removeall(prefab) | 删除全部prefab | 31 | | c_gonext(prefab) | 传送到下一个prefab处 | 32 | | c_armor() | 使你获得100%防御 | 33 | | c_save() | 立即存档 | 34 | | c_select() | 选中当前鼠标下的实体以调试,返回值为实体的引用。在客户端调用时,可以在调试层查看实体的多种信息 | 35 | | c_setmoisture(percent) | 设置潮湿度 | 36 | | c_sethealth(percent) | 设置血量 | 37 | | c_setsanity(percent) | 设置理智 | 38 | | c_sethunger(percent) | 设置饥饿度 | 39 | | c_setminhealth(num) | 设置血量最低值(锁血) | 40 | | c_settemperature(num) | 设置体温 | 41 | | c_connect(ip, port, password) | 手动连接服务器 | 42 | 43 | 更多控制台命令在`consolecommands.lua`中 44 | 45 | ### 工坊页面特殊格式标记 46 | 47 | ![img](assets/images/工坊文本格式.png) 48 | 49 | ### MOD基本文件夹结构 50 | 51 | 52 | | 路径名 | 内容 | 53 | | :---------------------------- | :--------------------------------------------------------- | 54 | | ./images/ | 一些零碎贴图 | 55 | | ./images/inventoryimages/ | 物品栏贴图 | 56 | | ./images/map_icons/ | 小地图图标 | 57 | | ./images/colour_cubes/ | 滤镜 | 58 | | ./anim/ | 编译后的动画文件 | 59 | | ./export/ | 未编译的动画文件 | 60 | | ./scripts/ | 所有脚本一般都放在这里 | 61 | | ./scripts/brains/ | AI相关代码 | 62 | | ./scripts/components/ | 自定义组件目录 | 63 | | ./scripts/prefabs/ | 模组添加的全部物体,包括人物、物品、buff类 | 64 | | ./scripts/stategraphs/ | 自定义的动作图 | 65 | | ./scripts/widgets/ | 自定义窗体相关脚本 | 66 | | ./modinfo.lua | 游戏内模组介绍及模组配置都在这里 | 67 | | ./modmain.lua | 模组代码入口 | 68 | | ./modworldgenmain.lua | 加载MOD时运行,优先级比modmain高,在这里可以修改世界生成 | 69 | | ./modservercreationmain.lua | 暂时与modworldgenmain功能类似,但只会在服务器加载 | 70 | 71 | ### 常用官方函数与组件 72 | 73 | - 全局函数 74 | 75 | 76 | | 函数名 | 功能 | 77 | | ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | 78 | | SpawnPrefab | 生成一个实体,返回对这个实体的引用 | 79 | | AddStategraphState | 添加动作图,自定义的stategraphs需要在modmain调用这个函数才会被加载 | 80 | | modimport | 加载另一个lua文件并立即执行,文件内的return会立即结束加载,被加载的文件与当前文件共用环境 | 81 | | CreateEntity | 添加一个实体,用于自定义prefab | 82 | | MakeHauntableLaunch | 让物品可以被“闹鬼” | 83 | | AddMinimapAtlas | 加载小地图图标,之后才可以在prefab中绑定 | 84 | | GetModConfigData | 读取mod配置页的设置,只可以在modmain或者modworldgenmain中调用 | 85 | | AddModCharacter | 将一个实体声明为人物 | 86 | | AddReplicableComponent | 声明一个组件为replica组件,带有_replica后缀的组件将在主客机同时存在,不带后缀的组件只会存在于主机,AddComponent只需要在主机调用 | 87 | | AddRecipe | 添加一个自定义制作配方 | 88 | | AddRecipeTab | 添加一个自定义配方组 | 89 | | SetSharedLootTable | 设置共用的掉落物品表 | 90 | | GetTime | 获取当前时间戳 | 91 | | AddStategraphActionHandler | 将自定义动作图与动作绑定 | 92 | | AddComponentAction | 添加自定义动作 | 93 | | SpawnSaveRecord | 加载一个实体,并将它设置为传入存档数据中的状态 | 94 | | dumptable | 解码一个table并打印 | 95 | | UserToPlayer | 将userid转为player实体 | 96 | | AddCookerRecipe | 添加自定义食谱 | 97 | 98 | 此外,官方提供的大部分模组函数在```modutil.lua```文件中(上表不全部包含),数学拓展公式在```mathutil.lua```中,实体相关函数在```entityscript.lua```中,平滑过渡函数在```easing.lua```中,RPC类函数在`networkclientrpc.lua`中 99 | - 常用组件,以下组件建议仔细阅读源码 100 | 101 | 102 | | 组件名 | 介绍 | 常用功能 | 103 | | --------------- | ------------ | ------------------------------------------ | 104 | | health | 血量组件 | 掉血回血、死亡、生命上限惩罚、火焰伤害等 | 105 | | sanity | 理智组件 | | 106 | | hunger | 饥饿组件 | 控制饥饿速度 | 107 | | armor | 护甲组件 | 护甲防御力,耐久,耐久耗尽是否破碎 | 108 | | weapon | 武器组件 | 武器攻击力,攻击附带特效 | 109 | | inventory | 物品栏组件 | | 110 | | inventoryitem | 物品组件 | 使实体可作为物品放入物品栏或箱子中 | 111 | -
其他组件 112 |
组件名介绍常用功能
birdspawner鸟类生成点修改生成的鸟类类型、频率等
book书籍组件添加自定义书籍时可能会用
builder建造组件让玩家可以制作/建造物品,可以在这里修改来实现一键制造、重复制造等
burnable可燃组件设置物品燃烧时间,冒烟情况等
childspawner巢穴组件绑定到巢穴上来自动生成实体,如猪人、蜘蛛等,可以修改生成条件、生成速度、实体种类、巢穴被攻击时的某些特殊生成
colourcube滤镜组件自定义季节、时间、地上地下滤镜
combat战斗组件设置攻击伤害、攻击间隔、攻击距离、攻击buff、自动选择目标逻辑
container容器组件设置箱子格数,可放入物品判断,箱子内是否可堆叠,箱子是否可打开
cookable 使一个实体可以在火堆上烹饪,可以设置烹饪产品和烹饪回调
cooldowncd组件设置某种操作的冷却时间,每个实体同时只可计算一种cd
debuffbuff组件添加在buff上,SetAttachedFn设置buff被施加到实体时的回调,SetDetachedFn设置buff解除回调,SetExtendedFn设置buff未过期时被上了一个相同buff触发的回调
debuffable 添加在实体上,使该实体可以附加buff并影响
deployable 使实体可以被部署,如耕地机,可以设置部署地皮类型等
drawable画板组件使一个实体可以被"画",如小木牌
drownable溺水组件 
dynamicmusic背景音乐组件可以设置/修改不同季节,不同位置的环境背景音乐或与不同敌人作战时的音乐
eater 使实体可以吃东西,可以设置能吃的食品类型,是否可以吃腐烂食物,吃东西时的回调,喜欢吃的食物种类
edible 标记实体为可吃,可以设置食品三维,食品类型,对体温的影响效果,被吃时的回调
equippable 使物品可装备,可设置装备槽,穿上/脱下的回调,装备额外移速,保温效果,防水效果、理智回复效果
finiteuses耐久组件设置物品总耐久,单次使用消耗耐久就
follower跟随者使生物可以跟随其他生物,可以设置单次跟随最大跟随时间,是否可以随领导者战斗
freezable 设置冰冻抗性
fuel 使物品成为燃料,可以设置燃料种类,燃烧值
fueled 使实体可以燃烧燃料,可以设置燃烧速度,接受燃料的种类等
grogginess困倦组件实体被催眠时即与这个组件有关
growable成长组件主要用于树木生长,可以设置不同生长阶段的属性
harvestable 主要用于可收获的建筑,如蜂箱、蘑菇农场,可设置收获产品类型,成熟时间
healer 使物品可以用来“治疗”,可设置治疗量
healthtrigger 添加到实体上,在实体生命值达到一定百分比时触发对应回调
leader 与follower组件组合,实现领导——跟随
locomotor移动组件实体移动(非传送)均依赖于此组件,主要提供各种改变移速的方法
machine 使实体可作为机器,主要提供启动/关闭操作
moisture潮湿组件与潮湿度相关
perishable 食物腐烂相关
pickable 可采摘的物品,如胡萝卜
plantable 可种植的物品,如松果
playervision 在这里替换玩家视野,夜视等,也可替换玩家滤镜
projectile弹道组件投掷品、发射物必需组件
reader 使玩家可以读书
rechargeable充能组件主要用于装备cd等
repairable 使物品可修理,设置接收修理工具类型
repairer 使物品作为修理品,设置修理的目标属性
resistance 免伤组件,骨甲的免伤就是用的这个
rider 让玩家可以骑牛
sanityaura 区域性的理智值buff,如格罗姆。可设置区域范围大小
scaler 可随存档保存的放大缩小组件,默认只缩放提醒,通过OnApplyScale函数可自定义其他缩放
schoolspawner 鱼群刷新组件
spawner 这个是用来刷新boss类生物的,而不是猪人等
spellcaster法术组件使物品可以用来释放法术,如唤月法杖
stackable堆叠组件 
talker发言组件实体说话时头上的那行小字,可以详细设置字号、字体、颜色等
timer计时器组件可以用来进行多个倒计时,每个计时结束时都会对附加的实体发送事件,具体计时情况会跟随存档,用途例如人物技能cd
tool工具组件用来给物品添加工具功能,例如砍、挖
tradable 使物品可以用来换金子,具体换几个可以在设置
trader商人组件使实体可以与玩家交易,可设置具体交易内容
upgradeable可升级组件使物品可以用其他物品升级
useableitem 是物品可以被“使用”,如灌木丛帽
waterproofer 使装备具有防水效果
workable 使物品可以被“砸”、“砍“等
writeable 使物品可以被写,如木牌
113 |
114 | --------------------------------------------------------------------------------