RobinCode
📚 文章 DOTA2 API 更新日志🛠️ 工具
Power by Vercel & Next.js

虽然V社有给出Lua的Debug工具,但是有些问题,例如无法定位文件, 而且还要开另外一个编辑工具,官方提供的是基于Eclipse的Debug工具, 我实在不想再开另外一个软件了,索性就搞一个支持VSCode的Debug工具。

工具下载

当前版本:0.3

度盘

链接:https://pan.baidu.com/s/1dFtAbxJMVKvMwfM7TEa3ew
提取码:vrhe

注意:使用本工具优先使用小号,实现的原理就是利用注入机制修改DOTA2内部的Lua, 这种情况也就导致有被封号的危险。

启动

命令行工作目录cd到该工具目录

然后输入

./StartDota2.exe dota2.exe路径 项目名

例如

./StartDota2.exe "F:\SteamLib\steamapps\common\dota 2 beta\game\bin\win64\dota2.exe" test

正常情况下可以顺利启动编辑器,如果出现运行库问题,尝试安装 https://aka.ms/vs/16/release/VC_redist.x64.exe

VSCode

-- 需要改一下代码,打开 LuaPanda.lua 就可以看到 customGetSocketInstance
-- 改成下面这样
local customGetSocketInstance = function() return luasocket.tcp() end;
  • .vscode目录下创建launch.json,基本可以不用改动,然后按F5应该就可以启动Debug等待响应。
{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "lua",
            "request": "launch",
            "name": "LuaPanda",
            "program": "",
            "cwd": "${workspaceFolder}",
            "luaFileExtension": "lua",
            "connectionPort": 8818,
            "pathCaseSensitivity": true,
            "stopOnEntry": true,
            "useCHook": true,
            "autoPathMode": true,
            "logLevel": 1
        },
    ]
}
  • 最后在addon_game_mode.lua中加入代码,并运行游戏
function CAddonTemplateGameMode:InitGameMode()
    require("LuaPanda").start("127.0.0.1",8818)
end

目前存在的一些问题

由于LuaPanda并没有完整支持luajit,所以Debug的时候可能会出现直接跳出的情况, 此外对多目录结构支持得不是很好,所以会出现无法识别game/core/scriptsgame/dota/scripts底下lua文件的情况, 最近看GitHub上的issue已经说在做多目录结构的支持

🏷️DOTA2自定义游戏教程

📅 创建于2020-10-10