0 of 0

File information

Last updated

Original upload

Created by

Ljzd-PRO

Uploaded by

LjzdPRO

Virus scan

Safe to use

Documentation

Readme

View as plain text

# DGLab Injury Experience Mod

半条命 2 Mod —— 用郊狼⚡模拟一下自己和敌人的受伤痛觉~

## 使用说明

> 本 Mod 需要与一个中转程序(PyDGLab-WS 连接器)配合使用,以实现与郊狼 DG-Lab App 的连接。

1. 安装 Mod 后,运行 PyDGLab-WS 连接器程序
- 可从 [Release](https://github.com/Ljzd-PRO/HL2-DGLabInjuryExperienceMod/releases) 页面下载(PyDGLab-WS Connector)
- 如果遇到**防火墙权限请求**,请同意,否则手机端 DG-Lab App 的传入请求将被阻断
2. 确保手机与电脑处于**同一局域网**,并在 PyDGLab-WS 连接器中**切换至对应网络**的二维码
3. DG-Lab App 打开“SOCKET 控制”界面,扫描 PyDGLab-WS 连接器程序中显示的二维码
4. 开启游戏,在 主菜单/暂停菜单 中打开 Mod 设置界面进行设置
5. 【可选】根据实际情况,在 Mod 设置界面中修改 PyDGLab-WS 连接器的 IP 地址和端口号
6. 在 Mod 设置界面中,点击“连接”按钮以连接至 PyDGLab-WS 连接器
7. 开始游戏!

### “AI Disabled” 修复

如果您遇到进入存档后显示“AI Disabled”字样,游戏敌人等实体**静止无反应**,那么需要重建地图节点图。可按下面步骤修复:

1. 进入暂停界面,在 “选项” - “键盘” - “高级” 界面,勾选 “启用开发者控制台”
2. 按 ` 键(默认)开启开发者控制台,在控制台内查找您当前存档对应的地图名称:

找到类似 `Loading game from //MOD/save/d1_canals_03.HL1...` 的日志,其中的 `d1_canals_03` 即为地图名称
3. 在开发者控制台输入 `map <地图名称>` 命令重新加载地图。此处有自动补全提示,因此不用担心地图名称难以确定
4. 加载完成,当前游戏进度将发生变化,你需要退回主菜单,重新进入原来的存档
5. 修复完成

> 如果有大量地图需要重新加载,可通过命令 `buildcubemaps` 重新加载所有地图,这需要较长的时间完成

### 其他注意事项

- 在游戏中 Mod 设置界面修改设置后,需要点击**保存按钮**以使其生效
- 如果 PyDGLab-WS 连接器程序启动后,无法显示二维码,可能是由于**端口被占用**,请在程序目录下创建 `.env` 文本文件以进行配置,内容如下:
```dotenv
# 用于与 DG-Lab App 建立连接的监听接口(一般保持如下默认值即可)
WS_HOST=0.0.0.0

# 用于与 DG-Lab App 建立连接的监听端口号(如下为默认值,如果端口被占用,可以尝试换一个)
WS_PORT=5678

# 用于与游戏 Mod 建立连接的监听接口(一般保持如下默认值即可)
CONNECTOR_WS_HOST=0.0.0.0

# 用于与游戏 Mod 建立连接的监听端口号(如下为默认值,如果端口被占用,可以尝试换一个)
CONNECTOR_WS_PORT=5679
```
> 更多配置项请参考:[`pydglab_ws_connector/config.py`](pydglab_ws_connector/config.py)

随后再重启 PyDGLab-WS 连接器程序

## 功能说明

当 **玩家自身** / **人类敌人**(城市警察、联合军) 受到伤害时,会根据**伤害量**,触发不同**强度**的电击效果。

具体规则如下:
- 已提前设定郊狼强度范围(**最大值**和***最小值**)
- 根据人类敌人受到的**伤害量占其总生命值的百分比**,设定范围内的电击强度
- 当人类敌人受到的伤害量大于其总生命值时,电击强度为最大值
- 当玩家受到伤害时,设定**固定**电击强度
- 当玩家死亡时,向郊狼发送 **5 秒**的**强度最大**的持续波形
- 玩家重生时停止电击
- 出现下列情况时电击强度增大:
- 伤害类型为 燃烧 时:**强度 * 5**
- 实体为 联合军 时:**强度 * 2**

上述规则中的**为玩家自身开启**、**为人类敌人开启**、**强度范围**、**玩家固定强度**均可自定义。

## 主要代码

### 新增的代码文件

- `src/dglab_ws_client/*`: 与 PyDGLab-WS 连接器建立 WebSocket 连接
- `src/server/dglab_damage_handler.[cpp|h]`: 处理玩家和人类敌人受到伤害的事件,计算电击强度并发送波形
- `src/server/dglab_ws_server_commands.cpp`: 响应 client 端(Source SDK 定义的客户端)Mod 设置界面的修改请求
- `src/client/CDGLabIEModPanel.cpp`: 定义 Mod 设置界面
- `game/mod_hl2/resource/*`: 里面包含主菜单及语言本地化文件

### 修改的代码文件

包括城市警察、联合军、玩家和 VGUI 等相关代码文件,您可以直接在 Git 提交日志或上述代码的引用中查找。

## 构建说明

供希望自定义或改进该 Mod 的开发者参考,可避免踩坑(

1. 安装 Visual Studio **2013**(主要是需要其**生成工具及 v120_xp 工具集**)
2. 安装您喜欢的 VS 项目开发 IDE(如 Visual Studio 或 JetBrains Rider)
3. 克隆本仓库,并确保子模块仓库同样被克隆下来
4. 在您喜欢的 IDE 中打开 Mod 解决方案(`src/games.sln`)
5. 用 IDE 或编辑器全局替换文本: \
将原项目路径:
```
C:\Users\mcdha\Documents\HL2-DGLabInjuryExperienceMod
```
替换为您的实际项目路径,如:`C:\Users\yourname\HL2-DGLabInjuryExperienceMod`
> 暂时未找到更好的解决方案
6. 开始构建,构建生成的服务端和客户端 DLL(`server.dll`, `client.dll`)将**自动复制**到最终 Mod 目录 `game/mod_hl2` 的 `bin` 目录下。
> 提示:按某个配置(如 Debug)构建完后,如果要切换到其他配置(如 Release)进行构建,需要先清理解决方案

其余可参考 Source SDK 官方文档:https://developer.valvesoftware.com/wiki/SDK_Docs


### GitHub Actions 自动构建 CI/CD

目前遇到了困难,主要是 Visual Studio 2013 难以安装,即使使用 chocolatey。如果您有解决方法,欢迎提交 PR!

相关 Workflow 文件:[.github/workflows/msbuild.yml](.github/workflows/msbuild.yml)

## 其他

- Mod 许可证:[LICENSE](LICENSE)
- 该 Mod 基于 Source SDK 开发,源 SDK 遵循以下许可证:
- [Source SDK License](LICENSE_SOURCE_SDK)
- [thirdpartylegalnotices.txt](thirdpartylegalnotices.txt)
- 如果您需要再分发该 Mod 或 Source SDK,需要附带上述许可证文件
- Source SDK 仓库链接:https://github.com/ValveSoftware/source-sdk-2013