← База знаний
Lua

Client, server и shared в Lua

Как работают realms, AddCSLuaFile и include, и почему код «работает только у владельца».

Три области выполнения

Серверный код управляет правилами, данными и проверками. Клиентский рисует интерфейс, обрабатывает ввод и визуальные эффекты. Shared-код исполняется с обеих сторон, но состояние памяти у клиента и сервера раздельное.

if SERVER then
    AddCSLuaFile("myaddon/sh_config.lua")
    AddCSLuaFile("myaddon/cl_menu.lua")
end

include("myaddon/sh_config.lua")
if SERVER then
    include("myaddon/sv_logic.lua")
else
    include("myaddon/cl_menu.lua")
end

Главное правило безопасности

Клиенту нельзя доверять цену, права, количество денег, выбранную цель или результат проверки. Клиент отправляет намерение, сервер повторно проверяет всё и только затем меняет состояние.

Типовые признаки ошибки