Как заспавнить бота в расте
Как заспавнить бота в rust
В данной статье мы постарались собрать все актуальные консольные команды из игры раст. Некоторые из них помогут вам упростить и настроить некоторые элементы игры, что даст вам небольшое преимущество в виде прироста FPS или автоматизации рутинных действий. Другие же помогут вам настроить интерфейс игры, управлять сервером или заниматься разработкой.
Для того чтобы использовать какую либо команду, нужно открыть консоль. Сделать это можно нажав кнопку F1, после чего появиться окно со строкой ввода, куда необходимо ввести нужную вам команду.
Практически все консольные команды требуют для исполнения передать какое либо значение:
Команды настройки античита
Команды управления игровым античитом.
RUST spawn scientist command (1 of 2)
Note that this command does not work from RCON platforms and does require being logged into the game server.
Use the command below to spawn a single scientist:
On success the console will display:
Команды для разработчиков
Управление эвентами
Команды для управления игровыми событиями, позволяющие их запускать и управлять по желанию администратора.
Bradley APC
Команда | Значение по умолчанию | Описание |
---|---|---|
spawn bradleyapc | Немедленно спавнит бредли рядом. | |
bradley.enabled [Boolean] | TRUE | Команда включает, либо выключает эвент с бредли на локации стартовой площадки. |
bradley.respawndelayminutes [Value] | 60 | устанавливает таймаут в минутах, с которым бредли будет респавниться. |
bradley.respawndelayvariance [Value] | 1 | Добавляет к основному времени кулдауна бредли, случайное количество минут от 0 до указанного командой. |
Вертолёт
Команда | Значение по умолчанию | Описание |
---|---|---|
heli.call | Вертолёт начинает патрулирование по своему маршруту. | |
heli.calltome | Вертолёт прилетает к вашему местоположению. | |
heli.lifetimeMinutes [Value] | 15 | Указывает интервал между вылетами вертолёта. Значение 0 отключает вертолёт. |
heli.bulletAccuracy [Value] | 2 | Коэффициент определения точности стрельбы вертолёта. По умолчанию стоит 2 (50%). Чем выше значение, тем меньше точность. |
heli.bulletDamageScale [Value] | 1 | Сила атаки вертолёта. Чем выше цифра, тем сильнее атака. |
heli.strafe |
Воздушный шар
Команда | Значение по умолчанию | Описание |
---|---|---|
hotairballoon.population [Value] | 1 | Команда определяет радиус респ Воздушного шара(в километрах) на карте. Команда принимает значения от 0 и выше. По умолчанию стоит 1. Значение 0 выключает их респ на карте. |
hotairballoon.outsidedecayminutes [Value] | 180 | Время распада воздушного шара (в минутах) |
hotairballoon.serviceceiling [Value] | 300 | максимальная высота полёта (в метрах) |
Миникоптер
Команда | Значение по умолчанию | Описание |
---|---|---|
spawn minicopter.entity | 1 | Команда спавнит миникоптер, но при этом надо соблюдать некоторые требования:Данная команда не будет работать на RCON-платформах, потому администраторам потребуется залогиниться на игровом сервере. При использовании команды, администратор должен находиться над землёй. Администратор не должен упираться в стену или прочие особенности ландшафта. |
minicopter.population [Value] | 1 | Команда определяет радиус респ миникоптера(в километрах) на карте. Команда принимает значения от 0 и выше. По умолчанию стоит 1. Значение 0 выключает их респ на карте. |
minicopter.outsidedecayminutes [Value] | 240 | Время распада миникоптера (в минутах) |
minicopter.serviceceiling [Value] | 300 | Максимальная высота полёта (в метрах) |
Сухогруз
Команда | Значение по умолчанию | Команда |
---|---|---|
cargoship.event_enabled [Boolean] | TRUE | Команда включает, либо выключает эвент с сухогрузами. Если команду ввести без аргумента, в результате отобразится статус ивента. |
spawn cargoshiptest | Спавнит сухогруз. | |
ai.npc_spawn_on_cargo_ship [Boolean] | TRUE | Команда включает, либо выключает NPC на короблях. |
cargoship.egress_duration_minutes [Value] | 10 | |
cargoship.event_duration_minutes [Value] | 40 | Устанавливает интервал запуска эвента (в минутах) |
Рождественский эвент
Команда | Значение по умолчанию | Описание |
---|---|---|
xmas.refill | Команда запускает эвент RUST Xmas немедленно. Если xmas.enabled установлен на true, xmas.refill работает автоматически по расписанию. | |
xmas.enabled [Boolean] | TRUE | Команда включает событие RUST Xmas. |
xmas.jpgtsperplayer [Value] | 2 | Эта команда используется для установки количества подарков, которые будут среспаны для каждого игрока, когда будет запущено событие RUST Xmas. По умолчанию 2 подарка на одного игрока. Команда может влиять на производительность сервера. |
xmas.spawnattempts [Value] | 5 | Эта команда устанавливает количество попыток появления подарков вокруг игрока. В случае недоступности случайно сгенерированной точки(координаты) для респа подарка, будет предпринята попытка генерации новой точки. Команда может влиять на производительность сервера. |
xmas.spawnrange [Value] | 50 | Команда устанавливает радиус (в метрах) от игрока, в котором будут респаться подарки. Не делайте слишком большой радиус, игроки могут не найти подарки, но и не делайти слишком маленький, не все подарки смогут быть выданы. |
Санта Клаус
Команда | Значение по умолчанию | Описание |
---|---|---|
santasleigh.drop | Команда запускает событие RUST Santa Sleigh и респает Большой подарок на том месте, где вы сейчас находитесь. В случае успеха консоль ответит Santa Inbound, иначе N/A. | |
spawn santasleigh | Спавнит сани Санты. | |
santasleigh.desiredaltitude [Value] | 50 | Команда устанавливает высоту(в метрах), на которой будет спавниться большой подарок. |
santasleigh.altitudeaboveterrain [Value] | 60 | Команда устанавливает высоту(в метрах), на которой будет спавниться Санта. |
Related Minicopter variables
Variable | Default | Description |
minicopter.population | 0 | Population active on the server. |
minicopter.outsidedecayminutes | 480 | How long before a minicopter is killed while outside |
minicopter.insidedecayminutes | 2880 | How long before a minicopter is killed while indoors |
About dg
Dg is the founder and co-owner of Corrosion Hour, a niche gaming community established in 2016 focusing on the survival game RUST. He is an active and contributing member of numerous other RUST communities. As a community leader and server owner for over 15 years, he spends much of his time researching and writing guides about survival games, covering topics such as server administration, game mechanics, and community growth.
Scientist Hazmat Suits (Gear)
Below are the RUST item IDs used to spawn in the different Hazmat suits found in RUST. These item IDs can be used with inventory. give and entity.spawnitem commands and passing the specific Item ID.
Item ID | Color | Craftable |
hazmatsuit | Red, Yellow, Blue | Yes |
hazmatsuit_scientist | Blue | No |
hazmatsuit_scientist_peacekeeper | Green | No |
scientistsuit_heavy | Green | No |
Управление игровым миром
Команды для настройки игрового мира.
RUST Scientist Command and Variables
The RUST scientist command, introduced in Devblog 195, allows admins and moderators to spawn scientist NPCs into the game server. The scientists are controlled by an AI system that can be configured through server variables. In Devblog 194, player worn radiation suits had a full makeover, to help differentiate players from the scientists NPCs, which wear a solid blue colored radiation suit and can be seen wielding numerous range and melee weapons.
Server admins and moderators can still manually spawn scientists into the game world and a full list of variables controlling the scientist event and AI can be found below.
A few practical reasons for using the RUST scientist command and variables:
Общие команды
Команды доступные каждому игроку, не требующие особых прав на использование.
Управление погодой
Команды для настройки погодных условий на сервере.
Команда | Значение по умолчанию | Описание |
---|---|---|
water.quality | 1 | Регулирует качество погодных явлений. |
weather.clouds | 1 | Команда регулирует степень облачности. Доступные значения от 0 до 9. Чем выше значение, тем сильнее погодное явление. Значение 0 отключает облака. |
weather.fog | 1 | Команда регулирует степень тумана. Доступные значения от 0 до 9. Чем выше значение, тем сильнее погодное явление. Значение 0 отключает туман. |
weather.rain | 1 | Команда регулирует степень дождя. Доступные значения от 0 до 9. Чем выше значение, тем сильнее погодное явление. Значение 0 отключает дождь. |
weather.wind | 1 | Команда регулирует степень ветра. Доступные значения от 0 до 9. Чем выше значение, тем сильнее погодное явление. Значение 0 отключает ветер. |
world.monuments | TRUE | Включает монументы на карте. |
RUST minicopter.entity command (1 of 1)
Note that this RUST admin command does not work from RCON platforms and does require being logged into the game server.
Use the command below to spawn a single Minicopter:
On success the console will display:
RUST ai.npc_enable variable (2 of 2)
Note that this command does work from RCON platforms and doesn’t require being logged into the game server.
Get the server’s current configuration value
Use the command below to report the current configuration:
On success the console will display:
Enable the scientist NPCs
Use the command below to enable the scientist:
On success the console will display:
Disable the scientist NPCs
Use the command below to enable the scientist:
On success the console will display:
Who can enter the RUST Minicopter command
The RUST Minicopter command can be issued and configured on vanilla RUST servers by RUST admins and moderators only. Non-admin players on vanilla RUST servers cannot use the RUST Minicopter command and variables but will be able to find the Minicopters scattered across the map on vanilla servers.
Команды администратора
RUST Chinook 47 Command and Variables
The RUST Chinook Helicopter Command and event were introduced and slated in quarter 3 of the RUST Experimental Roadmap. Later updates have introduced the Chinook entity and event to the main branch, making it spawn-able by admins and moderators.
The Chinook 47 event will be piloted and crewed by the mysterious blue hazmat suit wearing scientist. It will fly to specific radiation towns and monuments, in which a locked supply crate will be dropped to the ground and must be defended from other players while the code lock on the crate is brute forced, before being opened. There will be two versions of the locked crate, which can now be viewed on Devblog 198, a code lock version and a padlock version.
Полезные примеры использования биндов.
Бинды призваны помочь вам с рутинным и не всегда удобным вводом консольных команд. Ниже представлены примеры их использования, которые помогут вам избежать постоянного использования консоли. При необходимости вы можете заменить клавиши на удобные для вас.
Чтобы снять бинд с кнопки достаточно ввести в консоль unbind КНОПКА
Подробнее о том как создавать и пользоваться биндами,а так же больше примеров вы можете узнать из нашего гайда.
Команды управления правами
Команды для владельцев серверов, с их помощью можно выдать игрокам особые права на сервере.
Команда | Значение по умолчанию | Описание |
---|---|---|
ownerid [Steam ID] | Команда выдаёт игроку права администратора. | |
removeowner [Steam ID] | Команда снимает права администратора с определённого игрока. | |
moderatorid [Steam ID] | Выдаёт игроку права модератора. | |
removemoderator [Steam ID] | Команда позволяет снять права модератора с определённого игрока. |
Related Scientist Variables
Команды настройки клиента
Команды для персонализации клиента игры. С их помощью можно более тонко настроить графику игры,а так же включить или выключить дополнительные возможности интерфейса, такие как отображение количества кадров в секунду или игрового чата.
RUST Minicopter Command and Variables
The RUST Minicopter, introduced on 2/7/2019 in the February update and later substantially modified in the Modular Vehicle Update on 7/2/2020, is the fifth aircraft to be introduced to RUST and the second to be officially pilot-able by players.
Minicopters and scrap transport helicopters, can be purchased by players for scrap at the RUST Air Wolf Shop. This is currently unlike other vehicles such as hot air balloons, rowboats, and RHIBs, which are spread across the game world and are controlled by server population variables.
Practical reasons for using the RUST Minicopter command and variables
Scrapped together with a handful of pieces, the Minicopters appear to sit on the frame of a rusted boat trailer, with the wheels intact. Two makeshift chairs have been welded on, but mind the bubble gum when sitting down. The tail rudder appears to be made out of sheet metal resembling a stop sign.
Human Carrying Capacity
Health, Decay & Repair
Over time the Minicopter will take decay damage. This occurs regardless if it housed properly or not, similar to the rowboat, hot air balloon, and RHIB. With the default variable value set, Minicopters take up to 8 hours to decay outside and 36 hours inside or under a roof. The inside decay rate is now controlled by its own decay variable, unlike previous implementations. (See variables below.)
Damage done to Minicopters can be repaired using a wooden hammer and metal fragments. Each hit with the hammer will heal 52 damage and consume 13 metal fragments. When a Minicopter hits 0 health, whether from decay or player damage, it will explode into a ball of flame, covering the ground with fire. Much like popcorn, Minicopters can be heard blowing up in the distance all across the map.
However, do note that the Minicopters are impervious to arrows and fire damage. When the Minicopter explodes, if players are mounted, they will die in the explosion.
Vehicle Operation & Fuel Storage
To control the Minicopter:
Scientist Junk Piles
Below are the IDs used to spawn in the different junkpiles found in RUST. These objects can be spawned in the game using the spawn command and passing the specific Item ID.
Item ID | Location |
junkpile_a | Roadside, Powerline |
junkpile_b | Roadside, Powerline |
junkpile_c | Roadside, Powerline |
junkpile_d | Roadside, Powerline |
junkpile_e | Roadside, Powerline |
junkpile_f | Roadside, Powerline |
junkpile_g | Roadside, Powerline |
junkpile_water_a | Underwater |
junkpile_water_b | Underwater |
junkpile_water_c | Underwater |
About dg
Dg is the founder and co-owner of Corrosion Hour, a niche gaming community established in 2016 focusing on the survival game RUST. He is an active and contributing member of numerous other RUST communities. As a community leader and server owner for over 15 years, he spends much of his time researching and writing guides about survival games, covering topics such as server administration, game mechanics, and community growth.
Related Posts
RUST Submarine Command
August 1, 2021 August 5, 2021
RUST Rendermap Command
RUST Rendertunnels Command
February 26, 2021 April 11, 2021
One Comment on “RUST Scientist Command and Variables”
So given these variables, I want to decrease the accuracy and damage of scientists for a casual experience on my private server.
Прочие команды
Остальные консольные команды, которые не были распределены по категориям.
Who can enter the RUST scientist command and variables
The RUST scientist command and variables can be issued and configured on vanilla RUST servers by RUST admins and moderators only. Non-admin players on vanilla RUST servers cannot use the RUST scientist command and variables.
Телепортация
Команды позволяющие использовать телепортацию игроков.
Создание телеграм бота на Rust
В целях знакомства с Rust я решил сделать Телеграм Бота для чтения своей ленты в Inoreader.
Подготовка
После этих действий в нашем распоряжении будет 2 ключа один для работы с Inoreader, другой для работы с Телеграм. Теперь можно приступить непосредственно к созданию бота.
Создание модуля настроек
Для начала инициализируем новый проект с помощью cargo :
Первым этапом будет создание модуля настройек для нашего бота. Настройки будут хранится в файле config.toml и содержать следующие параметры:
Для парсинга toml файла будем использовать библиотеку toml-rs. Стурктура с настройками будет храниться в файле config.rs :
Функция new получает на вход путь до конфиг файла и возвращает новый экземпляр конфига.
Также тут надо отметить, что в моем случае поля у структуры содержат тип String, который в Rust представляет собой что-то аналогичное вектору ( Vec ) и используется, когда планируется проводить какие-то действия со строковыми данными, так же в Rust есть еще тип str, который является неизменяемой последовательность UTF-8 символов переменной длинны.
Функция unwrap() также будет дальше часто встречаться, она служит для обработки ошибок. Данная функция при ошибке будет генерить panic() и завершать программу с выводом стектрейса.
Служебное слово pub означает, что стурктура, ее поле или метод будут доступны из вне, т. е. будут публичными.
Создание модуля для работы с Inoreader API
После того, как модуль работы с настройками был создан. Можно приступить к описанию объекта для работы с нужными функциями Inoreader API. В качетсве клиента для работы с http я выбрал модуль curl-rust, который является биндингом к libcurl.
Код клиента будет следующий:
Также надо отметить что, так как, стурктура содержит ссылочные поля, то у нее должно быть задано “время жизни” (в нашем случае ), это сделано для того, чтобы не получилось ситуации, что поле будет ссылаться на очищенную область памяти.
Когда основа клиента создана, можно добавлять к ней полезную функциональность.
Как видно часть функции, описанной выше, вынесена в отдельную область видимости, чтобы не терять доступ к данным клиента после чтения ответа. Так как после присвания мутабельной переменной предыдущая становится не доступна.
Итак, после того как у нас появилась функция работы с сервером, можно написать метод для получения кол-ва непрочитанных новостей:
Теперь напишем обработчик получения непрочитанных новостей от сервера.
Для хранения новостей будет использоваться отдельная структура:
Также описана функция для перевода новости в формат Markdown (назначение этого будет видно дальше).
Теперь все готово для создания метода получения списка новостей:
Данный метод отправляет запрос на получение заданного в параметре количества новостей, затем преобразует ответ в json и возвращает вектор из структуры с новостями.
Описанных возможностей должно хватить, для нашей задачи и поэтому можно перейти к написанию объекта для работы с Telegram.
Создание модуля для работы с Telegram API
Для начала создадим базовую структуру для работы с API. Ее код будет таким:
Теперь создадим функцию отвечающую за отправку запросов серверу:
Данная функция немного отличается от той, что описана в реализации клиента для Inoreader API. Это связано с тем, что телеграм в ответе на неверный запрос присылает еще и описание ошибки, которое в данном коде будет возвращаться, в случае неудачного запроса. В случае удачного запроса вернется структура, которая содержит json ответ.
Теперь когда у нас есть функция для работы с сервером, мы можем получить от него все id чатов активных на данный момент:
Данная функция возвращает вектор из id чатов, в которые в будущем будет осуществляться рассылка.
Для того чтобы чат попал в рассылку нужно отправить боту любое сообщение, тогда при запросе getUpdates бот вернет все сообщения из открытых чатов за сутки. Также обновления из Telegram можно получать через Webhook, но для этогу нужен https сертификат.
Кроме определения чатов нам нужно в них как-то отправлять сообщения, для этого реализуем следующую функцию:
Создание модуля для хранилища мета-данных
Так как обновления с помощью Telegram API мы можем получить только за сутки, то необходимо где-то хранить ранее полученные id чатов. Для этого реализуем отдельную струтктуру хранилица, которая будет складывать id чатов в БД SQLite.
Для работы с БД я выбрал библиотеку rusqlite. Код хранилища будет следующий:
Как видно из кода у хранилища есть 3 функции:
Создание главного кода приложения
Когда все вспомогательные модули я описал пришло время объединить их в одно приложение. Его код будет выглядеть следующим образом:
Разбереем что происходит в этом коде.
При запуске проверяется что задан путь до конфига, и если это не так то осуществляем выход из приложения с ошибкой.
Далее создаем экземпляры для работы с Inoreader API и Telegram API и запускаем основной цикл для работы бота. В цикле мы считываем новые id чатов, в которые будут пересылаться сообщения, и, если их не было, добавляем их к списку существующих из хранилища. Затем получаем кол-во непрочитанных сообщений и считываем их из inoreader.
Особое внимание стоит уделить циклу:
В нем осуществляется отправка новых сообщений во все доступные чаты, причем для каждого чата создается отдельный поток. Для безопасной работы с потоками создается копии списка новостей для каждого потока, так как структура содержит поля тип String, которому метод Copy задать нельзя. Rust использует данный метод для безопасной работы с данными в разных потоках. Также для бота создаем новый инстанс, так как струтура TelegramBotClient не может быть склонирована или скопирована, по причине того, что содержит curl::easy::Easy, которая не поддерживает ни один из этих методов.
После его завершения мы выжидаем заданный в секундах таймаут и повторяем все действия.
Заключение
На этом написание бота закончено. При его реализации, возможно, использовались не лучшие решения, так как цель была именно по максимому попробывать Rust.
В целом язык мне понравился. Первое время действительно борешься с компилятором, но потом к этому привыкаешь, тем более большинство ошибкок имееют понятные описания с примерами. В целом на практике понимание концепций заимствования и владения дается лучше чем при только чтении документации.
Итоговый код бота лежит на GitHub.
Если вдург вы найдете неточность или ошибку в этой статье, сообщите мне, пожалуйста.