Scientist

Placing Structures

Valid building placement

Invalid building placement

To place a structure, a Building Plan must be crafted. Building plans costs 50 Wood. When the Building Plan is crafted, place it in the hotbar and select it. By default, the foundation object is selected, and you will see a «ghost» of it as you look around. To select other building objects, hold right mouse button, move your mouse in a circle to the object you want, and left click. To begin building, choose either a foundation or a triangular foundation, look at an area suitable for a house, and left click. This will create a foundation. To place walls, select them and aim at the edge of a foundation. Floors must be placed at the top edge of a wall, and doors must be placed inside door frames. Be careful, because as you build up, you have to keep track of the building’s stability. If too many floors are built too far away from a wall, it will collapse.

PvE и PvP

Сервера делятся на PvE и PvP. В первом случае игроки не могут нападать друг на друга, защищаться нужно лишь от зверей и радиации.

На PvP серверах игроки могут нападать друг на друга. Это даёт новые возможности получения ресурсов, более быстрые и интересные, чем собирание и крафт — убийство других игроков и грабежи домов. На таких серверах нужно быть очень осторожным, ведь практически каждый встречный игрок попытается убить Вас.

Сервера PvE представляют из себя себя режим «спокойного» выживания, с отключенной функцией «грабить караваны» в котором вы хоть и можете навредить игроку косвенными способами (Например: привести стаю волков к дому), но не можете воздействовать напрямую.

В Rust нет бардака с библиотеками

У С++ всегда было две проблемы: недостаточная квалификация разработчиков и отсутствие нормальных пакетных менеджеров.

Раньше приходилось гуглить, копировать и компилировать исходники библиотек — та ещё головная боль. Бывало, найдёшь исходники, а компилятор не подходит, потому что он слишком старый, хедеры протухшие или версии зависимостей не совпадают. Тогда вместо готового решения придумывали своё — и это своё всегда заканчивалось кучей багов.


Изображение: Public Domain

Например, я видел реализации std::optional, которые не вызывают деструктор, даже если тип нетривиально деструктурируемый. Тогда как стандартная реализация — это куча boilerplate-кода, который даже командой из трёх-четырёх человек невозможно отладить.

Получается полный бардак. Часть кода покрывают тестами, она кое-как работает, а когда начинаешь детально тестировать — тут дедлок, там use-after-free и так далее. В Rust эти заботы можно частично переложить на плечи компилятора, но с ним иногда приходится бороться: богатая система типов требует более педантичной работы.

Переменные и их изменяемость

Переменные — это точки данных, которые сохраняются и помечаются для последующего использования. Формат объявлений переменных таков:

let  = ;

Имя переменной должно быть информативным, т. е. описывать, чем является ее значение. Например:

let my_name = "Ryan";

Здесь создана переменная со значением .

Совет Всегда давайте переменным названия, начинающиеся со строчной буквы, а новое слово начинайте с заглавной.

В Rust переменные неизменяемы по умолчанию, т. е. их значение нельзя изменить после того, как они заданы.

Например, вот этот код выдаст ошибку во время компиляции:

fn main() {    let x = 5;    println!("The value of x is: {}", x);    x = 6;    println!("The value of x is: {}", x);}

Ошибка в строке 4, где мы попытались установить значение . Но значение уже задано в строке 2 и изменить его нельзя.

На первый взгляд такое свойство языка Rust кажется неудобным, но оно помогает применять лучшие практики минимизации изменяемых данных. Ведь наличие изменяемых данных часто приводит к появлению багов, если как минимум две функции ссылаются на одну и ту же переменную.

Представьте, что у вас есть две функции: , которая использует переменную, имеющую значение , и функция , которая изменяет эту же переменную. Выполнение функции будет прервано!

Чем больше у вас становится переменных и функций, тем легче случайно изменить их значения. Такого рода ошибки поддаются отладке с трудом, поэтому в Rust предпочитают избегать их в принципе.

Чтобы переопределить это значение по умолчанию и создать изменяемую переменную, объявим ее вот так:

let mut x = 5;

Изменяемые переменные чаще всего используются как переменные-итераторы или как переменные в структурах цикла .

Базовая игровая механика

На вашем экране в правом нижнем углу расположены три разные колонки, вы увидите,что-то похожее на это:

  • Здоровье (Health): 100​
  • Еда/Вода/Калории (Food/Water/Calories): 1500
  • РАД (Rads): 0

Здоровье — показывает какое количество урона вы сможете пережить. Вы можете сократить это урон ношением брони. Здоровье можно восстановить если съесть приготовленную пищу, постоять у зажженного костра, либо просто подождать.

Калории — это ваши очки голода. Калории можно восполнить при помощи еды. Когда калории достигают нуля вы начинаете терять здоровье.

РАД показывает количество полученной радиации. Уведомление о радиации можно услышать как быстрые клики. При получении радиации вы услышите счетчик гейгера . Радиация будет быстро уничтожать калории. Если вы получили дозу радиации более 500 РАД, ваш персонаж начнет терять здоровье из-за радиационного излучения. Вы будете терять очки здоровья до отметки 1. Вы можете уменьшать уровень радиации, если отойдете от зон радиационного заражения и подождете или примете анти-радиационные таблетки или еду с анти-радиационными свойствами.

Когда начнется ночь и у Вас не будет никакого типа одежды, Вы получите эффект замерзания. Если у вас эффект замерзания, вы будете терять калории быстрее, чем обычно и не сможете регенерировать здоровье. Чтобы избавиться от этого эффекта есть два варианта:

1) Подойдите близко к костру или работающей печи и согрейтесь. Это добавит эффект «Комфорт». Когда действует этот эффект, Ваши калории будет исчезать медленнее, но вам все равно нужно будет есть.

2) Добудьте одежду. Одежда может быть создана или может выпасть из мутировавших врагов.

Цель игры это ВЫЖИТЬ. Как Вы будете выживать — решать Вам.

Установка

Из репозитория

Для установки последней стабильной версии Rust из официальных репозиториев Arch Linux, установите пакет . Он установит компилятор rustc.

С помощью Rustup

Преимуществом использования Rustup вместо обычной устаноки Rust из репозитория является возможность установки нескольких toolchains (stable, beta, nightly) для нескольких целевых платформ (windows, mac, android) и архитектур (x86, x86_64, arm).

Есть два способа установки rustup: официально поддерживаемый разработчиками Rust и поддерживаемый Arch Linux.

Скачайте скрипт установки с помощью , просмотрите его: и запустите: для установки. Для обновления rustup в будущем запускайте .
Также пакет доступен в официальных репозиториях Arch Linux

Обратите внимание, что при установке с помощью этого пакета обновление с помощью работать не будет, и для обновления rustup следует обновлять этот пакет с помощью pacman.

Теперь нужно установить сам Rust. По умолчанию будет установлена стабильная версия для вашей архитектуры.

Примечание: Добавьте $HOME/.cargo/bin в переменную окружения PATH перед выполнением команды rustup.

$ rustup default stable

Проверим версию Rust с помощью  :

$ rustc -V 
rustc 1.13.0 (2c6933acc 2016-11-07)

Если вы хотите использовать nightly, выполните:

$ rustup install nightly
$ rustup default nightly
$ rustc -V 
rustc 1.15.0-nightly (c80c31a50 2016-12-02)

Проверка после установки

Давайте убедимся, что Rust установился корректно, написав простую программу:

~/hello.rs
 fn main() {
     println!("Hello, World!");
 }

Затем скомпилируйте её с помощью , введя это:

$ rustc hello.rs && ./hello
Hello, World!

Быстрое развитие

Дом построен, еды вдоволь, вы изучили найденное оружие, броню и медикаменты. Совет: найденные чертежи изучайте сразу, но если вы хотите изучить, допустим, Анти-радиационную броню с помощью наборов исследования, пусть их изучит кто-то один. так вы сэкономите ресёрчи. Вы готовы к чему-то большему, чем лутание соседнего городка. Хорошо снарядившись и взяв оружие, вся команда может отправиться в поход по всей карте с попутным сбором ресурсов и убийством игроков. Так вы сможете принести множество дерева и достроить дом. Продолжайте изучать самые полезные из найденных предметов. Теперь развитие пойдёт быстро.

Food

As we all know, Food is one of the most important things that we need in order to survive. In Rust, it is no different. I would suggest making food one of your top priorities and always keep a high amount in stock just in case. Also, for protection, I keep all my food out of storage containers in the emergency that someone stumbles upon them.Find the  boars, you want to Sprint-Smack, and repeat until dead.

In order to efficiently gather some good Ol’ grub, you are going to want to fancy yourself a Bow, and some Arrows. This is pretty easy on an unpopulated server. You need to first have gathered some cloth. Easy enough, if you Sprint-Smack a boar you can get them that way.

The second part is to gather some arrows so you can actually put your newfound tool to use. So go back to the old grind to finding your stones. On a lower populated server, they shouldn’t be too difficult to find.

In my opinion, (coming from a non-pvp low populated server ~25 people) arrows are the best source of HUNTING at a low level. I played a server, Non-PVP, with about 128 people constant, and it still remained a good way to hunt and kill things, even with low spawns.

After you have gotten yourself some food, it is time to cook it on a fireplace in your shelter. To cook the food move to your fireplace, press and hold «E» choose open, and then place the food into one of the cook slots. You can also add wood here as well.

Shots with Bow/ Food
Red Bear/ Red Wolf Bear Boar Deer Wolf Chicken Rabbit?

3 shots/

2 Shots

   4  Shots    2 Shots    2 Shots    2 Shots 1 Shot

1 Shot

Loot items (in Backpack)

Raw Meat

(~3)

Raw Meat

(~5)

Raw Meat

(~3)

Raw Meat

(~5)

Raw Meat

(~3)

Raw Meat

(~2)

Raw meat

(~2)

(Please note that the above table is with the Bow and Arrows only, the meat does not change, however.)

Неизменяемость

В функциональных языках приходится много работать с неизменяемыми структурами. JavaScript программистов никто не заставляет работать с неизменяемостью, но популярные библиотеки, такие как Redux и Immutable.js, научили нас это делать. Сегодня есть ключевые слова и для объявления изменяемых и неизменяемых переменных соответственно.

На Rust для объявления переменных мы будем использовать лишь только , причём переменные эти будут неизменяемы по умолчанию. Если мы захотим использовать изменяемые данные, нам придётся добавить ключевое слово в объявление:

fn main() {    let a = 42;    let mut b = 1;    a = 43; // ОШИБКА: a - неизменяемая    b = 2;}

Чертежи и наборы исследований

Чертежи

Чертежи необходимы для изучения новых рецептов крафта. Они могут быть найдены в ящиках, у игроков, или мутировавших зверей. По большей части, это чертежи крафта оружия. Как только вы выучите этот чертёж, он останется навсегда. Даже в случае гибели, после респауна вы его не забудете.

Наборы исследований

Наборы исследований чрезвычайно полезны и чрезвычайно редки могут спокойно выбиваться с мутировавших живтоных в размерах 3 штуки на 12 животных . Они позволяют научиться крафтить почти все вещи в игре, включая те, рецепты которых не выпадают из ящиков и зверей. Следует в первую очередь изучать рецепты крафта оружия, патронов, брони, редких материалов(explosives), и С4(explosive charge).

Method 2 — Connect using your IP:

Here we will determine what IP address that is.

  • Hold down the windows key and hit R
  • In the Run Box that pops up, type and hit enter
  • In the Command Box that runs, type and hit enter.

Your screen will have a section that looks similar to this

Ethernet adapter Ethernet:

Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::1de5:48b8:737d:342a%8
IPv4 Address. . . . . . . . . . . : 192.168.1.2
Subnet Mask . . . . . . . . . . . : 255.255.255.
Default Gateway . . . . . . . . . : 192.168.1.1

Look for the line that starts with IPv4 Address and record this number

This is the IP address for your Rust Server that you will use to connect to it.

Test local connection on your network

You can run the server using the IP address set by your local router.

In Step 7 above, we found the IP address to be 192.168.1.2

In step 5 above, we set the server port to be 28015

To test this, we are going to start a Rust client and check to see if we can connect locally.

Launch Rust from the Steam library and when you get to the menu hit f1 and type (or whatever your information is) and hit enter

If you’ve inputted the correct information and have installed and launched the server correctly you should now connect to the server!

Adding yourself as administrator

Once you are playing locally, switch to the black command box that is the server and type «users». Don’t confuse this command with a SteamCMD. This is to be done in the text window that is your server. You should receive back that 1 user is connected. It will give you data similar to the following but with your Steam information:

> users
<slot:userid:»name»>
12345678901234567:»TomSmith»
1users

While still in the server command box, to set yourself up as admin or moderator respectively, type one the following:

> ownerid 12345678901234567 «TomSmith»
Added owner TomSmith, steamid 12345678901234567

> moderatorid 12345678901234567 «TomSmith»
Added moderator TomSmith, steamid 12345678901234567

Note that the if you know how to copy/paste, the colon «:» in the output needs to be replaced with a space. Now write the config change with the following command:

writecfg

You are now able to do admin/moderator functions while playing Rust with your client.

Setting up your router

You want your server to always be the same local IP. To do this, you need to set up your router to always assign the same IP address to the computer running your server

Refer to your router user manual for how to set up a static IP for your Rust server computer.

If you want people outside your network to be able to connect, you need to have your router forward traffic coming from the internet to the port on your computer. If you are just running on your local network, you don’t need this step.

Refer to your router user manual on how to port forward internet traffic to a specific computer and UDP port.

Additional server commands are needed for Hosting Custom Maps

Основные команды

  • дерево.
  • notice.popuall «ваше сообщение» — Сообщение для всех на сервере от админа.
  • find * — Список доступных вами команд консоли.
  • Kick «ник игрока» — Кикнуть указанного игрока
  • ban «ник игрока@ or «стим айди» — Бан игрока по нику и стим айди.
  • banid «стим айди игрока» — Бан игрока по стим айди.
  • unbanall — Разбанить всех игроков которые находятся в бане.
  • save.all — сохраняет карту сервера и весь инвентарь игроков.
  • teleport.toplayer «ник 1 игрока» «ник 2 игрока» — Телепорт игроков.
  • teleport.toplayer «ник 1 игрока» «позиция по x» «позиция по y» — телепорт игрока на определенную позицию.
  • inv.giveplayer «ник игрока» «название вещи» «количество» — Дает игроку определенный предмет.
  • inv.giveall «название вещи» «количество» — Дает всем игрокам определенную вещь.
  • dmg.godmode true/fale — команда дает всем админам бессмертие.
  • crfting.complete — все начинают крафтить.
  • crafting.cancel — все прекращают крафтить.
  • crafting.instant true/false — Устанавливает мгновенный крафт для всего сервера.
  • crafting.instant_admins true/false — Устанавливает мгновенный крафт для админов.
  • crafting.timescale «количество» — устанавливает время крафта 1шт-0.5 секунд.
  • airdrop.drop — Вызывает самолет с лутом.
  • airdrop.min_players «количество» — самолет начинает сбрасывать лут только когда будет х количество игроков.
  • vihicle.spawn — Автомобиль появляется на вашем месте. (авто работает не корректно, ждем патчей, если сели в машину, то только релог).
  • server.hostname — Задает имя хосту.
  • server.pvp true/false — Включает или выключает пвп на вашем сервере.
  • server.maxplayers «количество» — устанавливает максимально допустимое количество человек на сервере.
  • sleepers.on true/false — это чтобы тела игроков оставались после выхода с сервера, если «false», то не оставались
  • env.timescale «число» — Устанавливает течением времени (день/ночь цикл) до определенной скорости, то по-умолчанию 0.0066666667.
  • falldamage.enabled true/false — Включает или выключает урон от падения с высоты.

Не распределённые команды

Список команд, назначение которых пока что остаётся неописанным.

Команда Тип Значение по умолчанию Описание
dump global.dump C
echo global.echo C Выводит некоторую информацию для отладки.
error global.error C
file.time C false
net.debug C false
net.log C false
net.visdebug C false
note.craft_add
note.craft_done
note.craft_start
note.inv
objects global.objects Выводит список всех объектов на сервере.
pool.clear
pool.status
queue global.queue
rcon.ip S
rcon.login C Использовать ваш пароль для входа в Rcon при помощи внутриигровой консоли (F1).
rcon.password
rcon.port
respawn global.respawn C
respawn_sleepingbag global.respawn_sleepingbag C
respawn_sleepingbag_remove global.respawn_sleepingbag_remove C
safemode global.safemode false EAC protection
spawn.fill_groups
spawn.fill_populations
spawn.max_density
spawn.min_density
spectate Если вы хотите понаблюдать со стороны за игровым процессом, то откройте консоль и введите команду «spectate». Теперь вы можете полетать по серверу и посмотреть за любым игроком, используя пробел. Когда вы будете готовы снова играть, введите команду «respawn».
stability.queuewarmup
textures
time.fixeddelta C 0.03333 How many times a frame to tick / Fixed delta time in seconds.
time.maxdelta C 0.33 The minimum amount of times to tick per frame
time.maximumdelta C 4 The minimum amount of times to tick per frame
vehicle.spawn C Спавнит машину. Примечание: Команда больше не поддерживается.

Комментарии

Комментарии — это сообщения, которые содержат описание того, для чего нужен тот или иной сегмент кода. Они помогают автору кода быстро вспомнить логику дальнейших своих действий, а другим программистам — быстро понять, как устроена программа. Так что написание хороших комментариев полезно всем.

В Rust есть два способа писать комментарии. Первый — использовать двойную косую черту . В этом случае все, вплоть до конца строки, игнорируется компилятором. Например:

fn main() {    // Эта строка полностью игнорируется    println!("Hello, world!"); // А эта напечатала сообщение    // Все готово. Пока!}

Второй способ — предварять комментарий косой чертой со звездочкой и завершать его звездочкой с косой чертой . Преимущества такого способа оформления комментариев: 1) есть возможность помещать комментарии в середину строки кода и 2) так легче писать многострочные комментарии. Недостаток в том, что во многих случаях приходится задействовать больше символов, чем просто .

fn main(/* я могу это сделать! */) {    /* первый комментарий  */    println!("Hello, world!" /* второй комментарий */);    /* Все готово. Пока!       третий комментарий     */}

Совет используйте комментарии для «закомментирования» разделов кода, выполнение которых не требуется, но которые позже понадобится добавить.

Кросс-компиляция

С помощью rustup

Использовать кросс-компиляцию с rustup очень легко. Он поддерживает очень много целевых платформ. Полный их список можно увидеть с помощью команды .

Например, если вы хотите использовать stable Rust для Windows с компилятором GNU, сделайте следующее:

$ rustup install stable-x86_64-pc-windows-gnu

Эта команда установит только rust и инструменты для вашей целевой платформы, и для кросс-компиляции нужно сделать ещё несколько вещей.

Windows

В этом разделе будет целевой архитектурой ( или ).

  1. и
  2. Добавьте определение binfmt для исполняемых файлов Windows вручную.
  3. Если вы используете rustup, достаточно просто выполнить команды и для установки Rust и стандартной библиотеки для вашей архитектуры. Если вы не используете rustup, поставьте стандартную библиотеку Rust для Windows в вашем каталоге rustlib ( если у вас AUR или если вы используете пакет ). Простейший путь для этого — скачать установщик Rust под Windows для нужной вам архитектуры, установить с помощью Wine () и скопировать в ваш каталог rustlib.
  4. Подскажите cargo, где искать MinGW-w64 gcc/ar добавлением следующих параметров в (создайте файл, если он отсутствует):
~/.cargo/config
linker = "/usr/bin/$ARCH-w64-mingw32-gcc"
ar = "/usr/$ARCH-w64-mingw32/bin/ar"

Теперь вы можете выполнять кросс-компиляцию для Windows, указывая дополнительный аргумент при вызове cargo:

$ # Сборка
$ cargo build --release --target "$ARCH-pc-windows-gnu"
$ # Запуск unit-тестов через wine
$ cargo test --target "$ARCH-pc-windows-gnu"

Неофициальные пакеты

содержит rust-nightly и стандартную библиотеку Rust для i686, ARM, ARMv7, Windows 32 и 64, и вы можете просто установить то, что вам нужно, и использовать кросс-компиляцию. Тем не менее вам нужно найти ARM toolchain самостоятельно. Для Windows 32bit вам нужно получить libgcc_s_dw2-1.dll для сборки и запуска.

Building

Building in Legacy was very different to the current version of Experimental Rust. In many ways, the building mechanics were a lot simpler but were also unforgiving of error. To name a few differences; there were no Tool Cupboards, Building Plans or Hammers. This meant that players could not set Building Privilege around their bases which lead to the emergence of many unique raiding strategies. In order to counter these raiding strategies, a widely accepted method was developed by players which involved surrounding their bases with Wood Foundations and Wood Pillars. Because foundations and pillars were almost indestructible, this method worked quite effectively. The metal variants also worked for this.

The only way players could demolish structural items that they had placed themselves was to manually destroy them using explosive items such as F1 Grenades or Explosive Charges. However, they were quite expensive and were best used to raid other player’s bases. It should be noted that foundations and pillars could not be destroyed without access to admin controls. Additionally, structural items could not be rotated once placed, however, this did not matter as both sides of structural items were equally strong.

A player looking towards an extremely tall base, presumably still under construction.

Because there was no height limit on how high players could build, many players proceeded to build extremely tall bases. This created numerous problems for raiders trying to raid extremely tall base designs. However, most players who still wanted to collect and store loot had to have a staircase up to the top, therefore meaning that the base could be raided if the raiders had enough Explosive Charges to get to the top. One clever player also managed to invent a so-called ‘unraidable base’ design, but fortunately, these bases could still be raided (although it was very difficult).

One of the most significant building changes, when compared with Experimental, was the fact that all players had to manually craft and place individual structural items. This meant that there was an increased risk to the building process as structural items that were crafted but not placed were at risk of being stolen during raids. This forced players to be smart when planning their builds as they needed to ensure that they had enough (but not too much), of every structural item needed to build their desired base.

Владение

Владение — это центральная особенность Rust и одна из причин такой его популярности.

Во всех языках программирования должна предусматриваться система освобождения неиспользуемой памяти. В некоторых языках, таких как Java, JavaScript или Python, есть сборщики мусора, которые автоматически удаляют неиспользуемые ссылки. В низкоуровневых языках типа C или C++ от разработчиков требуется всякий раз, когда это необходимо, выделять и освобождать память вручную.

Ручное выделение памяти сопряжено с многочисленными проблемами, поэтому практиковать его затруднительно. Когда память выделяется на очень продолжительное время, она расходуется впустую. А слишком раннее освобождение памяти, как и выделение одной и той же памяти дважды, приводит к ошибке.

Rust выгодно отличает от всех этих языков система владения, которая управляет памятью с помощью набора правил, применяемых компилятором во время компиляции.

Вот эти правила владения.

  • У каждого значения в Rust есть переменная, которая называется его владельцем.
  • В каждый конкретный момент времени у значения есть только один владелец.
  • Когда владелец выходит из области видимости, значение удаляется.

А теперь посмотрим, как владение уживается с функциями. Для объявленных переменных память выделяется, пока они используются. Если эти переменные передаются в качестве параметров в другую функцию, выделение перемещается или копируется к другому владельцу и используется у него.

fn main() {     let x = 5; // переменная x владеет значением 5     function(x);} fn function (number : i32)   { // number становится владельцем значения 5        let s = "memory";  // начинается область видимости переменной s, здесь s становится действительной        // здесь с s выполняются какие-то действия    }                                  // эта область видимости заканчивается, и теперь s                                       // больше недействительна

Главный вывод касается разного использования и . Сначала владеет значением , но после выхода ее из области видимости функции переменная должна передать владение параметру . Ее использование в качестве параметра позволяет продолжить область видимости выделения памяти под значение за пределы исходной функции.

С другой стороны, переменная не используется в качестве параметра и поэтому память для нее остается выделенной только тогда, когда программа находится внутри . По завершении значение никогда больше не потребуется и для высвобождения памяти от него избавляются.

Команды для разработчиков

Команды разработчиков для отладки сценариев, скриптов и модов.

Команда Тип Значение по умолчанию Описание
developer global.developer C false Показывает некоторую информацию для разработчиков.
vis.attack C false Показывает траекторию полёта пуль. Примечание: Работает только в режиме разработчика (developer) или отладки.
vis.damage C false Показывает нанесённый урон. Примечание: Работает только в режиме разработчика (developer) или отладки.
vis.metab C false Показывает информацию по метаболизму. Примечание: Работает только в режиме разработчика (developer) или отладки.
vis.triggers C false Показывает триггеры. Примечание: Работает только в режиме разработчика (developer) или отладки.
debugmode global.debugmode C false
dev.culling C
dev.hidelayer C
dev.netgraph C false Показывает качество связи с сервером.
dev.sampling C
dev.shaderlod C 2147483647 Примечание: Команда больше не поддерживается.
dev.showlayer C Показывает количество игроков на сервере.
dev.togglelayer C
cui.test C, S
data.export S
ddraw.arrow
ddraw.line
ddraw.sphere
ddraw.text
entity.debug_toggle C

Легенда

Значения команд условно делятся на несколько типов:

— Логический. Имеет 2 возможных значения, как принято в программировании — истина и ложь. Говоря простым языком в контексте консольных команд включить и выключить. Значение true (оно же 1) включает параметр команды, значение false (оно же 0) выключает.

— Числовой тип. Значения могут быть как положительные, так и отрицательные

Важно знать, что некоторые команды ограничивают диапазон возможных значений своей функциональностью.

— имя игрока.

— Steam ID

— текстовый тип. Тут может быть любой текст.

— В этом параметры допустимы только цифровые значения не меньше 1.

Некоторые команды можно использовать только в клиенте, некоторые только в консоли сервера, а другие в обоих интерфейсах. Это обозначено в колонке «Тип» где:
C — Клиент
S — Консоль сервера

Server Commands

Syntax Shorthand Description Notes
admin.mutevoice «player»
admin.unmutevoice Unmute a players or admins in-game capability of speaking
admin.mutechat «player» Mute a players in-game capability of speaking in the in-game chat
admin.unmutechat «player» Unmute a players in-game capability of speaking in the in-game chat
global.status status Print out currently connected clients etc Only available for admins nowadays.
global.kick «player» kick «player» Kick a player/Admin
global.kickall kickall «reason» Kick everyone in the game
global.ban «player» ban «player» Banish a player/Admin
global.moderatorid «SteamID» moderatorid «SteamID» Make a player moderator AuthLevel 1, (Moderator)
global.ownerid «SteamID» ownerid «SteamID» Make a player/moderator owner AuthLevel 2, (Admin)
global.removemoderator «SteamID» removemoderator «SteamID» Remove a moderator
global.removeowner «SteamID» removeowner «SteamID» Remove an owner
global.banid «SteamID» banid «SteamID» on description
global.unban «SteamID» unban «SteamID» no description
global.players players Print out currently connected clients etc
global.say «text» say «text» Sends a message in chat
global.users( ) users Show user info for players on server.
global.banlist banlist List of banned users (sourceds compat)
global.banlistex( ) banlistex List of banned users — shows reasons and usernames
global.listid( ) listid List of banned users, by ID (sourceds compat)
chat.say «text» chat.say «text» Prints your text in the chat e.g «t0kenz: Hello»
draft.add( void ) no description
craft.canceltask( void ) no description
craft.cancel( void ) no description
data.export( void ) no description
entity.debug_toggle( void ) no description
entity.nudge( void ) no description
env.addtime( void ) no description
event.run( void ) no description
gc.collect( void ) no description
global.restart( ) restart Restart the server — with 300 seconds warning at 5 second intervals.
global.quit( ) quit Leave the game
global.report( void ) report no description
global.objects( void ) objects no description
global.textures( void ) textures no description
global.colliders( void ) colliders no description
global.error( void ) error no description
global.queue( void ) queue no description
global.setinfo( void ) setinfo no description
global.sleep( void ) sleep no description
global.kill( void ) kill Suicide command Used for respawning
global.respawn( void ) respawn no description
global.injure( void ) injure no description
global.spectate( void ) spectate no description
global.respawn_sleepingbag( void ) no description
global.respawn_sleepingbag_remove( void ) no description
global.teleport( void ) teleport «name» no description
global.teleport2me( void ) teleport2me «name» no description
global.teleportany( void ) teleportany «bear, deer..» no description
global.cleanup( void ) cleanup

on description

hierarchy.ls( void ) no description
hierarchy.cd( void ) no description
hierarchy.del( void ) no description
inventory.endloot( void ) on description
inventory.give( void ) no description
inventory.giveall( void ) no description
inventory.givebpall( void ) no description
inventory.giveto( void ) no description
inventory.giveid( void ) no description
inventory.givearm( void ) no description
inventory.givebp( void ) no description
pool.status( void ) no description
pool.clear( void ) on description
server.start( ) Starts a server
server.stop( string DisconnectMessage ) Stops a server
server.backup( ) Backup server folder
server.writecfg( ) writecfg Writes config files
server.fps( void ) no description
server.save( ) save Force save the current game
server.readcfg( void ) no description
spawn.fill_populations( void ) no description
spawn.fill_groups( void ) no description
weather.clouds( void ) no description
weather.fog( void ) no description
weather.wind( void ) no description
weather.rain Sets the rain factor where 0 is none and 1.0 is 100%. Using anything other than a valid value will set it to «auto».
world.monuments( void ) prints pos of all monuments and caves to console DISABLED
global.dump( void ) dump server diagnostics to
global.find( string Name ) Search for a command
global.echo( string output ) Prints something to the debug output
airdrop.drop( void ) no description
cui.test( void ) no description
global.ent kill ent kill Destroys/kills the entity you’re targeting (looking at) Useful binding for admins:bind q “ent kill”
global.ent lock ent lock locks the sign/painting you’re targeting (looking at)
global.ent unlock ent unlock unlocks the sign/painting you’re targeting (looking at)

Типы данных

Пока что мы видели, что значения переменных задаются либо с помощью фраз (называемых строками), либо целых чисел. Эти переменные представляют собой различные типы данных, которые обозначают, какой вид имеют содержащиеся в них значения и какие операции они выполняют.

В Rust имеется такая функциональная особенность, как определение типа. Она позволяет компилятору предположить, какой тип данных должен быть у той или иной переменной, даже в отсутствие четкого указания. Так экономится время при написании объявлений переменных с очевидными типами, например для строки .

Указав между именем переменной и ее значением , мы явно определим тип для этой переменной.

В этом случае наш пример с объявлением будет переписан следующим образом:

let my_name = "Ryan"; // с явно определенным типомlet my_name: &str = "Ryan"; // с явно определенным типом

Явная типизация позволяет соответствующим образом определять тип переменной и избегать ошибок в тех случаях, когда тип переменной неочевиден. Rust сделает наиболее правильное с его точки зрения предположение, но это может привести к неожиданному поведению.

Допустим, имеется переменная , которая записывает ответ пользователя в форму.

let answer = "true";

Rust неявно определит строковый тип для этой переменной, так как она приводится в кавычках. Тогда как переменная наверняка булева, что подразумевает выбор между двумя вариантами: и .

Во избежание недопонимания со стороны других разработчиков и для недопущения синтаксической ошибки поменяем объявление следующим образом:

let answer: bool = true;

Основные типы на Rust:

  • Integer: целочисленный (целые числа).
  • Float: числа с плавающей запятой (с десятичными знаками).
  • Boolean: логический (булев) с выбором между двумя вариантами ( или ).
  • String: строковый (набор символов, заключенных в кавычки).
  • Char: скалярное значение Юникод, представляющее конкретный символ.
  • Never: тип без значения (обозначается как ).
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector