Physgun Wiki

Как подключить свой модуль

Геймод грузит файлы через file.AutoInclude, а не через include/AddCSLuaFile напрямую: реалм выбирается по префиксу имени файла.

1. Структура папки

gamemode/ └── mymodule/ ├── sh_mymodule.lua # оба реалма ├── sv_player.lua # только сервер └── cl_hud.lua # только клиент

2. Подключение в sh_init.lua

Добавьте вызовы рядом с существующими модулями, порядок важен, если модуль зависит от netvars.lua/config.lua:

file.AutoInclude('mymodule/sh_mymodule.lua') file.AutoInclude('mymodule/sv_player.lua') file.AutoInclude('mymodule/cl_hud.lua')

3. Методы PLAYER/ENTITY

Геймод кеширует метатаблицы в глобальные PLAYER и ENTITY (sh_init.lua), поэтому новые методы объявляются напрямую:

-- mymodule/sv_player.lua function PLAYER:MyMethod() -- ... end

4. Хуки с дефолтной реализацией

Для блокирующих хуков (On*) регистрируйте дефолт в GM:, как это сделано для дверей и экономики, чтобы поведение работало без сторонних аддонов:

function GM:OnMyModuleAction(ply, ent) return true end