Покрытие сети
Сколько делений сети у телефона и что происходит, когда их нет.
По умолчанию функция выключена. Город, который не просил покрытие, получает тот телефон, который у него всегда был: полные деления везде, ничего не отклоняется, ничего не измеряется:
-- shared/config/signal.luaEnabled = false, -- turn it on when you want bars that come from where the player is standingЕсли включить её и больше ничего не менять, всё равно почти ничего не произойдёт: без вышек и мёртвых зон карта полностью покрыта, а единственное отличие — индикатор сигнала, который наконец говорит правду. Добавьте одну из строк ниже — и он начнёт что-то значить.
Всё решается на сервере, исходя из того, где игрок действительно стоит. Клиент, который сам решает, какой у него сигнал, — это клиент без делений, пока ему звонят, и с четырьмя, пока он звонит сам.
Что означает «нет сигнала»
Заголовок раздела «Что означает «нет сигнала»»То же, что и режим полёта, потому что это тот же факт с другой стороны: город не может достучаться до этого телефона.
- Входящие и исходящие звонки отклоняются, и телефон пишет Здесь нет сигнала, а не «недоступен».
- Сообщения не отправляются, а сообщения, отправленные им, сохраняются.
- Всё, что город пытался доставить, передаётся в ту же секунду, как деления вернутся, — ничего не теряется, оно ждёт.
- Сам телефон продолжает работать: камера, заметки, фонарик, фотографии, уже лежащие на нём.
Строка состояния рисует имеющиеся деления, а при нуле пишет Нет сети.
За городом, без какой-либо настройки
Заголовок раздела «За городом, без какой-либо настройки»-- shared/config/signal.luaCity = { Centre = vector3(195.0, -890.0, 30.0), -- Legion Square, near enough Full = 3000.0, -- full signal within this None = 9000.0, -- nothing at all past this},В городе деления полные, а по пути из него они убывают по одному. Замер на работающем сервере с указанными выше значениями по умолчанию:
| Где | Деления |
|---|---|
| Legion Square | 4 |
| Sandy Shores | 3 |
| Paleto Bay | 1 |
Установите City = false, чтобы отключить это и использовать только вышки.
Вышки — для города, где покрытие — это то, на что игроки могут показать пальцем
Заголовок раздела «Вышки — для города, где покрытие — это то, на что игроки могут показать пальцем»Range = 900.0, -- full signal this close to a mastFade = 1400.0, -- and nothing this much further outMasts = { vector3(-75.0, -818.0, 326.0), -- the tower on Maze Bank vector3(2358.0, 2570.0, 46.0), -- the masts above Sandy Shores},Когда в этом списке что-то есть, деления определяются ближайшей вышкой, а City игнорируется. Вышка, которую кто-то взорвал, — это район без телефонов, пока её не починят, — именно такая версия стоит того, чтобы её иметь, если ваш город хочет с этим что-то делать.
Dead = { { Coords = vector3(895.0, -3245.0, -98.0), Radius = 120.0, Bars = 0 }, -- the labs { Coords = vector3(480.0, -1310.0, 29.0), Radius = 40.0, Bars = 1 }, -- the chop shop},Дыра важнее того, что говорят вышки, а при пересечении двух побеждает меньшее число: бункер в долине не покрыт лучше оттого, что находится в обеих зонах. Bars = 0 — это полное отсутствие; любое другое число — подвал, где всё же ловится одно деление.
Сфера — потому что у сферы можно найти центр одной командой.
Для других ресурсов
Заголовок раздела «Для других ресурсов»exports.mic_phone:GetSignal(src) --> 0 to Config.Signal.Barsexports.mic_phone:SetJammed(src, true) --> takes their bars away until you give them backОба работают при выключенном покрытии. GetSignal отвечает полным количеством, так что скрипт может читать его, не спрашивая, существует ли функция, — а глушение по-прежнему отнимает у человека деления, потому что ограблению или тюрьме, которым нужно здание без телефонов, не должно требоваться предварительно настраивать всю функцию. Это единственный случай, когда телефон может потерять сигнал при установке по умолчанию, и причина в том, что этого попросил другой ресурс.
Глушение намеренно серверное: state bag, в который клиент мог бы писать, — это state bag, который клиент может очистить. Именно им пользуются ограбление, тюрьма или сюжет — глушат всех в здании и отпускают, когда всё закончилось.
Чтение через bag вообще ничего не стоит:
if (Player(src).state.phoneSignal or 4) == 0 then -- nobody is calling the police from in hereendМелкий шрифт
Заголовок раздела «Мелкий шрифт»- Ничто из тайминга не имеет значения, пока не установлено
Enabled = true; при выключенной функции не измеряется вообще ничего. - Расчёт идёт каждые
Config.Signal.Tickсекунд, по умолчанию пять. Это проверка расстояния по короткому списку, и точность до секунды никому не нужна. Config.Signal.Tellрешает, говорит ли телефон хоть слово, когда деления пропадают и когда возвращаются. Включены оба варианта: потеря сигнала требует объяснения, а возвращение — это момент, когда приходит всё, что ждало.