ai-exitsleeping
Игрок, который выходит из игры, остаётся в мире спящим телом, которое другие могут нести и сажать в транспорт.
ai-exitsleeping оставляет вышедших персонажей в мире. Когда игрок выходит с сервера или возвращается на экран персонажей, его персонаж ложится спящим телом там, где стоял. Другие игроки могут нести его, посадить в транспорт и снова вынуть, а владелец просыпается там, где в итоге оказалось тело.
Что он делает в игре
- Спящие тела. У тела внешность персонажа (через слой внешности AI Core, поэтому работает любой поддерживаемый скрипт одежды) и одна из поз лёжа из панели. Каждый игрок видит одну и ту же позу.
- Переноска. Подойдите к телу и нажмите клавишу взаимодействия у Carry Sleeping Player. X (или Stop Carrying) кладёт его там, где вы стоите. Нести нельзя, находясь в транспорте, без сознания или в наручниках.
- Транспорт. Во время переноски Put in Vehicle у транспорта сажает тело на пассажирское сиденье. Take Out Sleeping Player у транспорта с телом внутри вынимает его (тогда вы его несёте).
- Пробуждение. Следующее появление владельца происходит там, где сейчас тело: на земле, на плече того, кто несёт, или на сиденье транспорта, куда его посадили.
- Истечение. Тела игроков, которые вышли раньше, чем количество дней из панели, удаляются.
- Скрытые области и отдельные миры. Внутри скрытой области (панель) тело не остаётся, а тела, положенные там, скрываются. При включённом Ignore private worlds игроки внутри интерьера дома или мотеля не оставляют тело и не видят тел.
Установка
Устанавливается рецептом AI Core. Вручную: ensure ai-exitsleeping после ai-core. Таблица ai_exitsleeping_sleepers создаётся при первом запуске.
Если ваш скрипт появления сам размещает игрока после появления через ai-core, установите Wake up on в PlayerLoaded export (spawn script) и вызывайте из него exports['ai-exitsleeping']:PlayerLoaded() (см. страницу разработчика).
Настройки панели
Админ-панель > Exit Sleeping.
Вкладка General
Сколько хранятся спящие тела, на каком расстоянии они рисуются и что с ними могут делать игроки.
Sleeping bodies (спящие тела): игрок, который выходит, остаётся в мире спящим телом там, где вышел, и просыпается там, где в итоге оказалось тело.
| Настройка | Что меняет | Единица | По умолчанию |
|---|---|---|---|
| Keep bodies for | Тела игроков, которые вышли раньше этого срока, удаляются. 1-365. | дни | 3 |
| Draw distance | Спящие тела появляются, когда игрок подходит на это расстояние, и исчезают дальше него. 5-60, с шагом 0.5. | м | 25 |
| Ignore private worlds | Игроки внутри отдельного мира (интерьер дома или номера мотеля) не оставляют тело при выходе и не видят тел, пока находятся внутри. | вкл. / выкл. | вкл. |
| Wake up on | Character spawn (ai-core) или PlayerLoaded export (spawn script). Оставьте значение по умолчанию, если только скрипт появления не вызывает exports['ai-exitsleeping']:PlayerLoaded() после своего собственного появления. | Character spawn (ai-core) |
Carrying and vehicles (переноска и транспорт): игроки могут нести спящее тело, посадить его на сиденье транспорта и снова вынуть.
| Настройка | Что меняет | Единица | По умолчанию |
|---|---|---|---|
| Interaction distance | Насколько близко должен стоять игрок, чтобы нести тело или дотянуться до транспорта. 1-10, с шагом 0.5. | м | 2.5 |
| Server distance check | Сервер отклоняет переноску или действие с транспортом с большего расстояния (против читов). 2-30, с шагом 0.5. | м | 6 |
| Position check | Как часто сервер обновляет, где находятся несомые тела и тела в транспорте, чтобы владелец проснулся в нужном месте. 1-60. | с | 5 |
| Debug messages | Печатает действия скрипта в консоли сервера и клиента. | вкл. / выкл. | выкл. |
Вкладка Animations
Позы лёжа спящих тел и анимация переноски. Каждая анимация задаётся Animation dictionary, Animation name и Animation flags (флаги анимаций GTA, 0-65535: 1 по кругу, 49 по кругу на верхней части тела во время ходьбы, 33 по кругу, пока прикреплено).
| Карточка | Что меняет | По умолчанию |
|---|---|---|
| Lying poses | Каждое тело случайно выбирает одну из них; каждый игрок видит одну и ту же позу. До 20. | amb@world_human_bum_slumped@male@laying_on_left_side@idle_a / idle_b, флаги 1 |
| Carrying player | Анимация игрока, который несёт тело. | missfinale_c2mcs_1 / fin_c2_mcs_1_camman, флаги 49 |
| Carried body | Анимация тела на плече того, кто несёт. | nm / firemans_carry, флаги 33 |
Carry position (положение при переноске): где несомое тело находится на том, кто несёт.
| Настройка | Что меняет | Единица | По умолчанию |
|---|---|---|---|
| Bone index | Индекс кости того, кто несёт, к которой прикрепляется тело (0 = корень педа). | 0 | |
| Offset right | От -5 до 5, с шагом 0.01. | м | 0.2 |
| Offset forward | От -5 до 5. | м | 0.15 |
| Offset up | От -5 до 5. | м | 0.63 |
| Rotation X | От -360 до 360, с шагом 0.5. | ° | 0.5 |
| Rotation Y | От -360 до 360. | ° | 0.5 |
| Rotation Z | От -360 до 360. | ° | 5 |
Вкладка Hidden areas
Места, где спящие тела не показываются, например интерьеры или безопасные зоны. Одна запись на область (New area / Delete area). Удаление области снова делает видимыми спящие тела внутри. Готовых областей нет.
Area (область): игроки, которые выходят внутри, не оставляют тело; тела, положенные внутри, скрываются (владелец всё равно просыпается там).
| Настройка | Что меняет | Единица | По умолчанию для новых |
|---|---|---|---|
| Name | Название области. | ||
| Shape | Ball, Cylinder или Polygon: шар или цилиндр вокруг центральной точки или многоугольник из угловых точек. | Ball | |
| Centre | Середина области (шар и цилиндр). | точка | |
| Radius | Метры от центра до края (шар и цилиндр). 1-2000. | м | 25 |
| Height | На сколько метров вверх и вниз простирается область (цилиндр: от центра; многоугольник: за пределы его самого низкого и самого высокого угла). 0.5-1000. | м | 10 |
Polygon corners (углы многоугольника, только для многоугольника): добавляйте угол на каждом повороте границы по порядку (свободной камерой или своей позицией); многоугольнику нужно не меньше трёх, до 64. Пока это поле на экране, форма рисуется в мире.
Команды
| Команда | Аргументы | Кто | Что делает |
|---|---|---|---|
/exitsleeptest | нет | Администраторы (ai.admin) | Переключить своё собственное спящее тело (тест): создаёт тело там, где вы стоите, или убирает его. |
Привязки клавиш
| Клавиша по умолчанию | Что делает |
|---|---|
| X | Положить спящего игрока, которого вы несёте |
Известные ограничения
- Тела существуют только в общем мире: внутри инстанс-интерьера несомое тело кладётся в его последней позиции снаружи.
- После перезапуска сервера каждое тело лежит на земле в своей последней сохранённой позиции (состояния «несут» и «сидит» не сохраняются).
- Игрок, который просыпается в течение нескольких секунд после исчезновения того, кто его нёс, или транспорта, может появиться в последней сохранённой точке (интервал Position check).