Physgun Wiki

Как зарегистрировать сетевую переменную

Геймод не использует SetNWInt/SetNWString: вместо них своя библиотека nw, с типизированной сериализацией и полной синхронизацией при заходе игрока.

1. Регистрация

Общий (sh_) файл, переменная регистрируется одинаково на сервере и клиенте:

-- gamemode/netvars.lua nw.Register 'reputation' :Write(net.WriteInt, 16) :Read(net.ReadInt, 16)

2. Приватная переменная

Модификатор SetLocalPlayer реплицирует значение только владельцу, как у денег:

nw.Register 'faction_secret' :Write(net.WriteString) :Read(net.ReadString) :SetLocalPlayer()

3. Чтение и запись

-- сервер ent:SetNetVar('reputation', 10) -- оба реалма local rep = ent:GetNetVar('reputation', 0)

4. Реакция на изменение

Модификатор SetHook вызывает хук на клиенте при каждом обновлении, без опроса переменной в Think:

nw.Register 'reputation' :Write(net.WriteInt, 16) :Read(net.ReadInt, 16) :SetHook("OnReputationChanged") hook.Add("OnReputationChanged", "UpdateHUD", function(ent, value) print(ent, "теперь имеет репутацию", value) end)