Как сделать самоубийство в раст

Обновлено: 07.07.2024

Только купили игру и не знаете с чего начать? Этот гайд по выживанию в Rust поможет вам.

Выбор сервера

Для начала нужно выбрать сервер, чтобы узнать азы игры. Для этого найдите модифицированный сервер по тегу "creative", на нем вы сможете через консоль, нажатием клавиши F1 - выбор ITEMS, выдавать себе предметы, ресурсы, оружие. Так вы сможете что-нибудь построить, пострелять и немного втянуться в игру без сжигания нервов и седалищной мышцы. Если хотите потренировать стрельбу, то ищите сервер по тегу "aim training".

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

С чего начать игру

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

Если испытываете жажду и голод, то воду и еду можно найти на дороге в ящиках или на РТ (Рэдтаун - это строения, в которых появляются ящики. У них есть надписи на карте). Также можно приготовить на костре мясо животных или растеров, ставших у вас на пути, но их мясо обезвоживает вас и оно не такое питательное.

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

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

Для строительства используется план построек, а для улучшения киянка. Поставьте шкаф, чтобы другие не могли строить и ставить что-то в пределах 50 метров.

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

Часто бывает так, что ты встречаешь "фермера", который страсть как любит добывать ресурсы, но он беззащитен и бегает только со своим инструментом. Убив такого игрока вы получите ресурсы на дом, не потратив время на фарм.

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


Руководства

Мирный город

COMPOUNDSTREET
COMPOUNDCRUDE
COMPOUNDMUSIC
COMPOUNDCHILL

Лагерь бандитов

Большая нефтевышка

OILRIG2L6D
OILRIG2L6C
OILRIG2L6B
OILRIG2L6A
OILRIG2EXHAUST
OILRIG2HELI
OILRIG2L5
OILRIG2L4
OILRIG2L3B
OILRIG2L3A
OILRIG2L1
OILRIG2L2
OILRIG2DOCK

Малая нефтевышка

OILRIG1L4
OILRIG1L3
OILRIG1L2
OILRIG1L1
OILRIG1DOCK
OILRIG1HELI


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

Совет №1 – выбор сервера.

Выбирая свой первый сервер для игры, вы можете стремиться к менее чем 100 игрокам. А может, даже меньше 50 игроков. Таким образом, вы сможете быстрее прогрессировать и легче изучить механику игры, не убиваясь слишком много раз.

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

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

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


Совет №2: научитесь PVP.

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

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

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


Как только вы почувствуете себя комфортно с оружием, еще один совет – просто использовать его. Не оставляйте их в коробке, потому что вы боитесь потерять их, потому что вы никогда не сможете их использовать. Кроме того, даже если вы умрете и потеряете оружие, это хороший опыт для pvp на реальном сервере.

Совет №3: научитесь строить.

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

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

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


Совет №4: выбирайте, где строить.

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

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


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

Совет №5: не фармите слишком много, пока не получите базу.

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

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


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

Совет №6 – спальные мешки.

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

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


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

Совет № 7 – смотреть назад.

Хотя это может показаться глупым, он может пригодиться, когда вы бежите, фармите или занимаетесь чем-то еще. Если вы нажмете alt, вы сможете свободно смотреть, не меняя направления бега или взгляда.


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

Совет № 8 – это сельскохозяйственный лом.

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

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


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

Совет № 9 – выращивание ресурсов.

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

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


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

Совет № 10 – это почетные упоминания.


Если вы зажжете костер на своей базе и сядете рядом с ней, комфорт возрастет до 50%, если вас будет только один. Вы можете использовать это, чтобы определить, есть ли кто-то у двери кемпинга, потому что ваш комфорт будет выше 50%.
Если вы щелкнете правой кнопкой мыши по элементу в очереди создания, он переместится в начало очереди, поэтому вам не придется ждать, пока другие предметы будут созданы в первую очередь.
Если вы перетащите среднюю кнопку мыши, это разделит стек пополам. Если вы сдвинете среднюю кнопку мыши и потянете, она разделит одну треть стека.


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

Введение

Зачем, собственно, учить новый язык, тем более сложный? Мне кажется, что ближе всего к истине ответ статьи "Побеждая посредственность", а именно:

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

Чем сложнее язык, тем богаче фразы, составленные с его помощью, и тем лучше он может выразить требуемую предметную область. Т.к. концепции обычно изучаются единожды, а применяются многократно, намного выгоднее с точки зрения вложения собственного времени изучить всякие страшные слова вроде "монадические трансформеры" (а еще, желательно, их смысл), чтобы потом экономить свои ментальные силы и тратить их на что-то более приятное. И поэтому весьма грустно видеть тренд некоторых компаний делать специально "упрощенные" языки. В итоге словарь этих языков намного меньше, и выучить его не составляет особого труда, но читать потом программы "моя твоя покупать лук" весьма тяжело, не говоря про возможные неоднозначные трактовки.

Основы

А что у нас в расте?

Утроенное количество кода, все эти реверансы с созданием переменной перед использованием (привет Паскаль!), вызовом кучи вспомогательного кода, и т.п. "Что за ужас" подумает среднестатистический разработчик и в очередной раз убедится в "системности" языка.

А ведь на самом деле это можно написать существенно проще:

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

Лайфтаймы и борроучекер

Ох уж эти страшные звери. Люди бросаются непонятными заклинаниями навроде

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

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

  • Each elided lifetime in input position becomes a distinct lifetime parameter.
  • If there is exactly one input lifetime position (elided or not), that lifetime is assigned to all elided output lifetimes.
  • If there are multiple input lifetime positions, but one of them is &self or &mut self, the lifetime of self is assigned to all elided output lifetimes.
  • Otherwise, it is an error to elide an output lifetime.

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

И компилятор сам с радостью выведет всё, что нужно, чтобы это работало.

Лично я вижу прелесть концепции в автоматическом управлении в нескольких аспектах

В итоге, код получается чистый (как в языке с GC), но в то же время все ресурсы освобождаются максимально быстро (как в языке с ручным управлением). А лайфтайм: декларативное описание ожидаемого времени жизни объекта. А декларативное описание всегда лучше, чем императивное "освободи объект здесь".

Жестокий компилятор

Некоторое следствие предыдущего пункта. Есть хорошая картинка, она в целом описывает многие языки, но нарисованна конкретно для случая раста:


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

Компилятор скомпилирует объявление этой структуры, но воспользоваться ей не получится, т.к. Box является владеющей ссылкой, или unique_ptr в терминах C++. А уникальная ссылка, конечно же, может быть только одна

Следующая попытка человека может выглядеть так:

Теперь у нас есть невладеющие ссылки (они же shared_ptr ), и их может быть сколько угодно на один объект. Но тут возникает две проблемы: во-первых владелец должен где-то быть. А значит мы скорее всего получим кучу ошибок компиляции "владелец умер, когда кто-то ссылался на его данные", потому как dangling pointers раст не допускает. А во-вторых, что важнее, мы не сможем изменять эти значения, из-за правил раста "либо одна мутабельная ссылка, либо произвольное количество иммутабельных, и никак иначе".

После этого человек обычно начинает биться о клавиатуру, и писать статьи что "в расте даже связный список реализовать нормально не получится". Реализовать же его, конечно, можно, но немного сложнее чем в других языках, придется руками добавить подсчёт ссылок (примитивы Rc / Arc / Cell / RefCell ), чтобы рантайме подсчитывать количество этих самых ссылок, потому что компилятор в данной ситуации бессилен.

Причины этого: эта структура данных плохо ложится на концепцию владения раста, вокруг построен весь язык и экосистема в целом. Любые структуры данных, где необходимо наличие нескольких владельцев потребуют некоторых приседаний, например реализация всевозможных лесов/деревьев/графов или тех же связных списков. Но это верно для всех языков программирования: попытки реализовать своё управление памятью в языках с GC приводит к страшным монстрам, работающих через WeakReferences с гигантскими byte[] массивам, воскрешающие объекты в деструкторах, чтобы вернуть их в пул, и прочей страшной некромантией. Попытки уйти от динамической природы JS, чтобы написать производительный код, приводит к еще более странным вещам.

Таким образом, в любом языке программирования есть своя "болевая точка", и в случае раста, это структуры данных с многими владельцами. Но, если мы смотрим с прикладной точки зрения высокоуровневых программистов, наши программы устроенны как раз таким образом. Например, в моем окружении типовое приложение выглядит как некоторый слой контроллеров, которые шарят между собой сервисы. Каждый сервис имеет ссылку на какие-то репозитории, которые возвращают какие-то объекты. Всё это отлично укладывается в концепцию ownership'а. И если учесть, что на практике основными структурами данных являются списки, массивы и хэшмапы, то оказывается, что всё не так уж и плохо.

Что же делать с этим зверем

Он говорит как раз о том, что мы передали владение ссылкой одному элементу, и уже не можем его использовать повторно. Также он нам рассказывает, что есть некий Copy трейт, который позволяет вместо перемещения объекта производить его копирование, из-за чего его использовать после "перемещения", потому что переместили мы копию. Если вы не знали про его существование, то ошибка компиляции снабдит вас информацией для размышления "А может стоит добавить реализацию этого трейта?".

Вообще, раст для меня первый язык, в котором есть compiler-driven development. Вы просто запускаете компиляцию, если что-то не работает, язык просто скажет вам "хмм, что-то не сходится. Я думаю, проблема в Х. Попробуй добавить вот этот код, и всё заработает". Типовой пример, допустим мы написали две функции, и забыли добавить ограничение на генерик:

Компилируем, получаем ошибку:

Да, IDE всех современных языков умеют это делать через всякие сниппеты, но во-первых тут польза в том, что вы видите, из какого крейта/неймспейса прилетело ограничение, а во-вторых это поддержка всё же со стороны компилятора, а не IDE. Это очень помогает при кросс-платформенной разработке, когда у вас локально всё собирается, а на некоторой матрице на CI сервере где-то что-то падает из-за условной компиляции. На билд-сервере IDE нет, а так лог глянул, подставил, и всё собралось. Удобно.

Я писал некоторое время назад телеграм-бота на расте, в качестве тренировки языка. И у меня был момент, где я решил отрефакторить всё приложение. Я заменил всё, что хотел, а потом в течение получаса пытался собрать проект, и вставлял предложения от компилятора тут и там. По прошествии этого времени всё собралось и заработало с первого раза.

Уверенность в том, что собралось == работает действительно имеет место. Это не значит, что в коде нет багов, это значит, что все баги связаны с логикой приложения. У вас нет неожиданных нуллов, несихнронизированного доступа, buffer overflow и так далее. А их намного легче отловить, а иногда можно вынести на уровень типов (хорошая статья на тему).

Итого

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

Читайте также: