Три области выполнения
Серверный код управляет правилами, данными и проверками. Клиентский рисует интерфейс, обрабатывает ввод и визуальные эффекты. 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Главное правило безопасности
Клиенту нельзя доверять цену, права, количество денег, выбранную цель или результат проверки. Клиент отправляет намерение, сервер повторно проверяет всё и только затем меняет состояние.
Типовые признаки ошибки
attempt to call global ... (a nil value)только на клиенте — функция определена на сервере;- интерфейс не открывается у других игроков — файл не отправлен через
AddCSLuaFile; - значение shared-переменной различается — оно было изменено только в одном realm;
- секрет виден игрокам — конфигурация была отправлена клиенту.
