
Коротко о событии грузового поезда
Это именно то, на что это похоже : рабочая тележка , загруженная ценным грузом , начинает случайным образом пересекать железнодорожную систему - ЭТО БУДЕТ РАБОТАТЬ НА ЛЮБОЙ КАРТЕ С ПОДДЕРЖКОЙ ПОЕЗДА, ВКЛЮЧАЯ PROCGENS И ПОЛЬЗОВАТЕЛЬСКИЕ КАРТЫ, ИЗ КОРОБКИ! Игроки должны победить ученых и завладеть добычей до того, как грузовой поезд самоуничтожится . Жители тоннелей и возможная радиация в поезде — это только одна из ваших проблем: следите за другими игроками, которые могут следить за каждым вашим движением на камерах видеонаблюдения поезда, пока событие активно! Случайная добыча может включатьЯщики Bradley, Heli, Elite и Locked по умолчанию . Легко настраиваемый , оптимизированный для производительности и работает на любой карте с железнодорожной системой, включая PvE и пользовательские карты ! И отлично подходит для тех, где грузовой корабль просто невозможен.Посмотрите видео ниже.
Наконец, событие, чтобы оживить вашу железнодорожную систему
Когда подключаемый модуль загружается, первое событие будет запланировано для запуска на случайном таймере на основе значений, указанных в конфигурации (по умолчанию: случайным образом через час или два часа). Вы увидите сообщение в консоли сервера, сообщающее, когда произойдет следующее событие, как только оно будет запланировано. Если вы не хотите ждать, используйте одну из консольных команд, чтобы запланировать поезд в указанное время, или запустите событие сразу после запланированного таймера — читайте ниже для тех.Как только событие начнется, если в вашем конфиге включено соответствующее уведомление, игроки увидят в чате сообщение о том, что событие произошло. По умолчанию они также увидят координаты поезда и список камер видеонаблюдения в поезде (всегда в формате TRAIN000X, где 000 — число от 0 до 999, а X — буква от A до Z). После добавления их на компьютерную станцию любой желающий может наблюдать за происходящим на камерах видеонаблюдения поезда, если они не были уничтожены. Видеокамеры, как и любую другую добычу / объект, можно перемещать, поворачивать, отключать или уменьшать вероятность их появления.
Единственное, что может быть интереснее, чем наблюдать за ограблением с вашей базы, — это участвовать в нем!
Вот большая часть того, что ваши игроки должны знать о грузовом поезде…
Он содержит случайную комбинацию возможных ящиков/ученых. Вы никогда не знаете, что получите, но, согласно конфигурации по умолчанию, гарантирован как минимум 1 запертый ящик.
Если в поезде все еще есть запертый ящик, вы можете следить за ним на своей карте или следить за сообщениями в чате, сообщающими вам последнюю известную позицию сетки.
На время события сама тележка будет невосприимчива к повреждениям. Чтобы помочь ему прорваться сквозь эти надоедливые баррикады!
Поезд поставляется с водителем NPC. Пока водитель жив, он будет случайным образом пересекать подключенную железнодорожную систему на карте (без топлива) и останавливать поезд, когда он подвергается атаке.
Стрельба/повреждение любого NPC/сущности в грузовом поезде также заставит NPC-водителя остановить поезд (опять же, пока он жив).
Сохраните жизнь NPC-водителю, если у вас нет топлива и вам нужно продолжать движение, или убейте его, чтобы получить контроль над тележкой. Убийство машиниста также может остановить поезд, если включена настройка переключателя мертвеца (по умолчанию включена).
Рабочая тележка может быть радиоактивной! Вы можете указать радиус пузыря радиоактивности и его силу (НЕОБЯЗАТЕЛЬНО, включено по умолчанию). Так что лучше костюм, что hazzie вверх!
Тележка также может сочиться каплями загадочной кислотно-зеленой жидкости (сама по себе не радиоактивной), которые останутся на несколько минут вдоль железнодорожных путей — вы можете следовать за ними, как за следом из хлебных крошек!
Как и в случае с грузовым кораблем, время идет. Основываясь на вашей конфигурации (30 минут до последовательности самоуничтожения + 60 секунд окончательного обратного отсчета по умолчанию), поезд в конечном итоге самоуничтожится, серьезно повредив всех и вся в настраиваемом радиусе взрыва и с заданным уроном (по умолчанию 2000 HP в в радиусе 12 метров, что гарантирует мгновенное убийство всего поблизости). Хватай добычу и окунайся, когда время на исходе! Если ваша конфигурация позволяет это (и это еще не окончательный обратный отсчет), взлом закрытого ящика в поезде может продлить таймер (по умолчанию: выключено).
Счетчики энергии в кабине водителя (включены по умолчанию) покажут вам оставшиеся минуты/секунды до самоуничтожения/финального обратного отсчета.
По умолчанию к грузовому поезду подключено 4 камеры видеонаблюдения, через которые может наблюдать любой желающий. Камеры видеонаблюдения также можно разрушить, если участники решат, что им нужно уединение.
Грузовые поезда всегда красные, обычные поезда всегда желтые, поэтому их легко отличить даже издалека.
Ученые будут без разбора стрелять в любого человека поблизости, в том числе в жителей туннелей (которые не будут стрелять в ответ).
Работает на любой карте без настройки, включая пользовательские карты, такие как Last Train!
Если вы еще не видели потрясающую карту Грубера – обязательно посмотрите! Карта и плагин очень хорошо дополняют друг друга. Бери, пока горячо! ПРИМЕЧАНИЕ. Карта продается отдельно другим поставщиком и не является частью плагина.Разрешения (пользователь Oxide.Grant YourName [имя разрешения, начинающееся с cargotrainevent.])
На данный момент есть только одно разрешение — разрешение администратора:Cargotrainevent.admin
Это позволит вам запустить команду /te_cfg и все команды консоли администратора, если у вас нет идентификатора владельца/модератора на сервере.Поскольку это один из тех плагинов «установил и забыл», я, честно говоря, не мог придумать больше. Если у вас есть идея для разрешения, которое могло бы украсить ваш VIP-пакет, не стесняйтесь, дайте мне знать!
Команды консоли администратора (должны быть разрешения ownerid/moderatorid/cargotrainevent.admin)
Их можно запускать из консоли сервера или клиентской консоли F1 или даже вызывать из других плагинов. Только игроки с разрешением ownerid/moderatorid/cargotrainevent.admin могут запускать их с консоли F1. Очевидно, что это не относится к консоли сервера.Если не указан конкретный поезд/место (с trainevent_now_at и/или trainevent_now_nearest ), один из простаивающих поездов (без игроков, без движения вперед, опционально только на станции), уже существующих на сервере, будет выбран случайным образом для событие, если не найдены действительные поезда — в этом случае вы не увидите сообщения.
Конфигурация (oxid/config/CargoTrainEvent.json)
Подавляющее большинство настроек можно настроить с помощью команды чата /te_cfg . Ввод его в чат без параметров должен вывести список полей конфигурации и их значений.Чтобы запустить любую из команд конфигурации, вам потребуется идентификатор владельца или модератора (или разрешение cargotrainevent.admin ).
Расширенная конфигурация — создавайте свои собственные грузовые поезда со случайными объектами Workcart.
Каждая камера, электрический объект, ящик и ученый, которых вы видите на тележке (а иногда и нет), были выбраны полуслучайно из списка возможных определений сущности рабочей тележки в конфигурации. Они определяют, куда поместить сущность (и какое вращение), какой скин ей дать (если есть), смогут ли игроки нанести урон этой сущности, шанс появления этой сущности в каждом событии, какие сущности (если они есть) должны быть успешно появляются первыми (так что у вас нет ученых, стоящих ни на чем, где был бы запертый ящик — скорее, они просто не появляются, если ящика нет) и т. д. (смотрите ниже)…Когда вы загружаете плагин в первый раз, список определений по умолчанию можно найти в файле oxide/config/CargoTrainEvent.json . С этими определениями вы совершенно свободно можете прикреплять к рабочей тележке почти любой объект, который можно порождать (некоторые объекты, такие как переработчики, батареи/солнечные панели, станут невидимыми на большом расстоянии от исходной точки появления — это не ошибка плагина, точно так же, как ржавчина отбраковывает рендеринг модели на основе расстояния). Имейте в виду, я не проверял его с разными типами сущностей!
Поэтому, если вы отредактируете файл JSON, вы найдете список предопределенных записей. Не стесняйтесь изменять их значения, удалять записи, добавлять свои собственные и т. д. — если вы знаете, что делаете! Всегда проверяйте окончательный файл JSON с помощью такого инструмента, как JSON lint , прежде чем перезагружать плагин! Ниже приведен пример записи — в данном случае это первый ученый, который должен стоять на первом ящике (тот, что в середине тележки):
- Идентификатор (в данном случае 3) предназначен для идентификации с другими префабами — оба числа должны совпадать в первых двух строках записи. Если вы позволите двум записям иметь одинаковый идентификатор, произойдут плохие вещи.
- PrefabName — это то, что звучит, полное сборное имя порождаемой сущности — в данном случае это учёный-турель. Если вы можете создать его из консоли, вы можете использовать его как объект рабочей тележки… в теории!
- SpawnChance — это доля вероятности от 0 (никогда) до 1 (всегда). Это базовая вероятность появления сущности в поезде (она все равно будет проверяться, если это позволяют зависимости/конфликты — если они не равны нулю)
- Indestructible применяется к BaseCombatEntities — то есть ко всему, что имеет здоровье, например к игрокам, развертываемым объектам и т. д. Установите для него значение true, если вы не хотите, чтобы эти объекты получали какой-либо урон при прикреплении к поезду.
- HealthMultiplier позволит вам дать сущности больше или меньше здоровья (он умножит здоровье на это значение, поэтому 2,0 — это удвоенное нормальное здоровье, 0,25 — четверть нормального здоровья и т. д.)
- PickupEnabled по умолчанию имеет значение false, и я не вижу абсолютно никаких причин, по которым вы хотели бы, чтобы ваши игроки могли поднимать сущности из поезда с помощью молотка — но что бы там ни было, оно есть, сходите с ума, если вам нужно.
- IsLocked также имеет значение false по умолчанию. Если это правда, то флаг Locked сущности будет установлен в true — и это означает разные вещи для разных сущностей, обычно это означает, что игроки не могут взаимодействовать с ними (только украшение, в основном).
- PowerUpImmediately установлен в true означает, что если объект представляет собой электрическую вещь (сирена, мигалка и т. д.), он будет включен в начале события и останется включенным на протяжении всего события. Если false, он включится только во время последнего обратного отсчета.
- ReliesOnSpawningIDs может быть нулевым, и он будет проигнорирован. Но если он содержит список идентификаторов, эти идентификаторы должны быть созданы первыми, прежде чем этот объект сможет появиться. В этом примере это ученый, полагающийся на ID 0 (согласно конфигурации по умолчанию, это первый запертый ящик). Если ящик не появляется (хотя в этом примере это всегда происходит), этот конкретный ученый тоже не появится.
- ConflictsWithSpawningID также может быть нулевым, и он будет проигнорирован. Но если он содержит список идентификаторов, эти идентификаторы противоположны идентификаторам ReliesOnSpawningID — они должны были не порождаться в первую очередь, чтобы этот конкретный объект мог быть рассмотрен. По понятным причинам нельзя полагаться на один и тот же идентификатор и конфликтовать с одной и той же записью, поэтому, если будут обнаружены какие-либо такие несоответствия, они будут автоматически устранены при загрузке плагина путем повторного создания конфигурации, поэтому всегда делайте резервные копии!
- LocalPosX , LocalPosY, LocalPosZ, LocalRotX, LocalRotY, LocalRotZ относятся к положению и повороту префаба относительно рабочей тележки. Как их узнать? Просто откройте пустую карту в Rust Edit, поместите Entity Workcart точно в 0,0,0 с поворотом 0,0,0 и начните размещать объекты относительно них. Обратите внимание на 3 координаты и 3 угла поворота сущностей, и все, никаких предположений!
- В большинстве случаев SkinID будет равен 0, но если вы хотите разместить что-либо, что можно изменить (целевые практики, коробки, холодильники и т. д.), это поле вам нужно изменить. Вы можете извлечь идентификатор скина из URL-адреса предмета мастерской.
Поддержка перевода (oxid/lang/en/CargoTrainEvent.json)
Я усвоил урок. И урок был в том, что не у всех были уроки английского языка, Rust — это игра для игроков со всего мира! Никто не любит редактировать плагин для изменения текста, поэтому я включил все строки (кроме config, но это только для администраторов) в языковой файл, который можно быстро редактировать, чтобы вы могли придать своему серверу дополнительный индивидуальный подход.Хуки/API (для разработчиков плагинов)
void OnTrainEventStarted (поезд TrainEngine){
//Это вызывается, когда начинается событие грузового поезда (поезд превращается в специальную рабочую тележку)
}
void OnTrainEventEnded (поезд TrainEngine)
{
// Это вызывается, когда событие грузового поезда заканчивается (умирает специальный объект рабочей тележки)
}
void OnBookmarkControlStartedTrainCCTV ( проигрыватель BasePlayer , строковый текст, CCTV_RC cctv)
{
//Это вызывается, когда игрок начинает управлять камерой видеонаблюдения поезда
}
void OnTrainCrateHack ( поезд TrainEngine, ящик HackableLockedCrate )
{
//Это вызывается, когда игрок начинает взламывать ящик поезда
}
void OnPlayerEnterPVPBubble ( TrainEngine Train, игрок BasePlayer )
{
//Вызывается, когда включен TruePVE и игрок входит в пузырек PVP вокруг поезда
}
void OnPlayerExitPVPBubble ( поезд TrainEngine, игрок BasePlayer )
{
//Это вызывается, когда TruePVE включен, и игрок выходит из пузыря PVP вокруг поезда
}
void OnTrainStartBraking ( поезд TrainEngine , float delayStopFor)
{
//Вызывается, когда грузовой поезд начинает тормозить из-за полученных повреждений
}
void OnTrainFinalizeBraking ( поезд TrainEngine )
{
//Это вызывается, когда грузовой поезд полностью останавливается из-за полученных повреждений
}
void OnTrainMoveAgain ( поезд TrainEngine )
{
//Это вызывается, когда грузовой поезд снова начинает двигаться после остановки на определенный период времени
}
void OnTrainDriverDeath ( поезд TrainEngine, BasePlayer trainDriver , информация HitInfo )
{
//Это вызывается, когда по какой-либо причине умирает оригинальный NPC машинист поезда
}
void OnTrainSelfDestructionInitiated ( поезд TrainEngine , число секунд с плавающей запятойLeftUntilDestruction, логическое значение, потому что драйвер умер)
{
//Это вызывается, когда начинается обратный отсчет
}