Skip to content

Configuration ru RU

ArchiBot edited this page Nov 29, 2024 · 141 revisions

Конфигурация

Эта статья посвящена конфигурированию ASF. Здесь содержится полная документация по содержимому папки config, позволяющая настроить ASF под ваши нужды.


Введение

Конфигурация ASF разделена на две основные части - глобальная конфигурация (для всего процесса), и конфигурация каждого бота. У каждого бота есть собственный файл конфигурации бота с именем BotName.json (где BotName это имя, которое вы дали боту), а для конфигурации процесса ASF используется один файл с именем ASF.json.

Бот - это один аккаунт Steam используемый ASF. Для нормальной работы ASF требует чтобы был определён хотя бы один бот. Жёсткого ограничения на количество ботов нет, поэтому вы можете использовать столько ботов (аккаунтов Steam) сколько захотите.

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

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


Сетевой генератор конфигураций

Цель нашего Web-генератора ConfigGenerator - предоставить вам удобный интерфейс, который используется для генерации файлов конфигурации ASF. Сетевой генератор конфигураций работает на 100% на стороне клиент, это значит что никакие данные, которые вы в нём вводите, никуда не пересылаются, и обрабатываются только на вашей машине. Это обеспечивает безопасность и надёжность, поскольку он может работать даже оффлайн если вы скачаете все файлы и запустите index.html в своём любимом браузере.

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

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


Настройка ASF-ui

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

Чтобы использовать ASF-ui, у вас должен быть включен интерфейс IPC. IPC включен по умолчанию, поэтому вы можете получить к нему доступ сразу, если вы не отключили его самостоятельно.

После запуска программы просто перейдите к IPC-адресу ASF. Если все работает правильно, вы также можете изменить конфигурацию ASF там.


Ручная настройка

В общем, мы настоятельно рекомендуем использовать либо наш ConfigGenerator, либо ASF-ui, так как это намного проще и гарантирует, что вы не ошибетесь в структуре JSON, но если по какой-то причине вы этого не хотите, вы также можете создать конфиг вручную. Ознакомьтесь с примерами JSON ниже, чтобы получить правильное начало в структуре, вы можете скопировать контент в файл и использовать его в качестве основы для своей конфигурации. Поскольку вы не используете какой-либо из наших интерфейсов, убедитесь, что ваша конфигурация действительна, поскольку ASF откажется загружать ее, если она не может быть проанализирована. Даже если это действительный JSON, вы также должны убедиться, что все свойства имеют правильный тип, как того требует ASF. Для правильной структуры JSON всех доступных полей см. Раздел Отображение JSON и нашу документацию ниже.


Файл глобальной конфигурации

Файл глобальной конфигурации называется ASF.json и имеет следующую структуру:

{
    "AutoRestart": true,
    "Blacklist": [],
    "CommandPrefix": "!",
    "ConfirmationsLimiterDelay": 10,
    "ConnectionTimeout": 90,
    "CurrentCulture": null,
    "Debug": false,
    "DefaultBot": null,
    "FarmingDelay": 15,
    "FilterBadBots": true,
    "GiftsLimiterDelay": 1,
    "Headless": false,
    "IdleFarmingPeriod": 8,
    "InventoryLimiterDelay": 4,
    "IPC": true,
    "IPCPassword": null,
    "IPCPasswordFormat": 0,
    "LicenseID": null,
    "LoginLimiterDelay": 10,
    "MaxFarmingTime": 10,
    "MaxTradeHoldDuration": 15,
    "MinFarmingDelayAfterBlock": 60,
    "OptimizationMode": 0,
    "PluginsUpdateList": [],
    "PluginsUpdateMode": 0,
    "ShutdownIfPossible": false,
    "SteamMessagePrefix": "/me ",
    "SteamOwnerID": 0,
    "SteamProtocols": 7,
    "UpdateChannel": 1,
    "UpdatePeriod": 24,
    "WebLimiterDelay": 300,
    "WebProxy": null,
    "WebProxyPassword": null,
    "WebProxyUsername": null
}

Все параметры описаны ниже:

AutoRestart

Параметр типа bool со значением по-умолчанию true. Этот параметр определяет, разрешено ли ASF перезапускаться при необходимости. Существуют события, которые могут потребовать перезапуска ASF, такие как обновление (раз в UpdatePeriod или по команде update), редактирование файла ASF.json, команда restart и тому подобное. Перезапуск обычно включает в себя две части - создание нового процесса и завершение текущего. Для большинства пользователей подойдёт оставить этому параметро значение по-умолчанию true, однако если вы запускаете ASF через собственный скрипт и/или dotnet, возможно вы захотите иметь полный контроль над запуском процесса, и избежать ситуации когда новый (перезапущеный) процесс ASF работает где-то в фоне, а не в основном процессе скрипта, который завершится вместе со старым процессом ASF. Особенно важно то, что новый процесс не будет прямым потомком вашего скрипта, из-за чего вы не сможете например использовать его стандартный поток вывода.

В этом случае вам поможет этот параметр, вы можете установить его в false. Однако помните, что в этом случае вы несёте ответственность за перезапуск процесса. Это особенно важно поскольку в этом случае ASF просто выйдет вместо создания нового процесса (например, после обновления), поэтому если вы не добавили свою логику для этого случая он просто перестанет работать пока вы его не запустите снова. ASF всегда выходит с правильным кодом выхода, указывающим на удачу (ноль) или неудачу (не ноль), поэтому вы можете добавить правильную логику в своём скрипте чтобы избежать перезапуска ASF в случае отказа, или как минимум создавать резервную копию log.txt для дальнейшего анализа. Также помните, что команда restart выполнит перезапуск ASF независимо от значения этого параметра, поскольку этот параметр задаёт поведение по-умолчанию, а команда restart производит принудительный перезапуск процесса. Если у вас нет причин отключать эту функцию, рекомендуется оставить её включенной.


Blacklist

Параметр типа ImmutableHashSet<uint> с пустым значением по-умолчанию. Как следует из названия, это глобальное свойство конфигурации определяет appID (игры), которые будут полностью игнорироваться автоматическим процессом фарма ASF. К сожалению Steam любит отмечать значки летней/зимней распрожажи как "доступные для выпадения карточек", из-за чего ASF пытается их фармить как будто это настоящая игра. Если бы не было черного списка, ASF просто "зависал" бы пытаясь фармить эти игры, которые на самом деле не игры, и бесконечно бы ждал пока из них выпадут карточки, чего никогда не произойдёт. Черный список ASF позволяет отметить эти значки как недоступные для фарма, что позволяет просто тихо игнорировать их при определении следующей игры для фарма, и избегать таких ловушек.

ASF включает в себя два черных списка по умолчанию - SalesBlacklist, который закодирован в код ASF и не может быть отредактирован, а также обычный Blacklist, который определен здесь. SalesBlacklist обновляется вместе с версией ASF и обычно включает в себя все "плохие" ID приложений во время выпуска, так что если вы используете обновленный ASF, то вам не нужно поддерживать свой собственный Blacklist указанный здесь. Основная цель этого параметра - позволить вам заносить в черный список новые, не известные на момент релиза ASF appID, которые не следует фармить. Хардкорный SalesBlacklist обновляется как можно быстрее, поэтому вам не требуется обновлять свой собственный Blacklistк, если вы используете последнюю версию ASF, но без Blacklist вы бы были вынуждены обновить ASF, чтобы "продолжать работать", когда Valve выпускает новый значок распродажи - я не хочу заставлять вас использовать последний ASF, поэтому это свойство позволяет вам "фиксировать" ASF себя, если вы по каким-то причинам не хотите или не можете, обновление до нового жёсткого SalesBlacklist в новом релизе ASF, но вы хотите оставить ваш старый ASF. Если у вас нет веских причин для редактирования этого свойства, оставьте его по умолчанию.

Если вам нужен черный список на основе ботов, взгляните на fb, fbadd и fbrm команды.


CommandPrefix

Параметр типа string со значением по-умолчанию !. Это свойство определяет префикс с учетом регистра, используемый для команд ASF. Другими словами, это то, с чего должна начинаться каждая команда ASF чтобы ASF вас послушался. Этому параметру можно присвоить значение null или пустую строку, чтобы заставить ASF не использовать префикс, в этом случае команды вводятся просто своими идентификаторами. Однако, это может привести к снижению производительности ASF, поскольку ASF оптимизирован пропускать команды, если они не начинаются с CommandPrefix - если вы намеренно решите не пользоваться им, ASF будет вынужден читать все сообщения и отвечать на них, даже если это не команды. Поэтому рекомендуется использовать какой-нибудь CommandPrefix, как например /, если вам не нравится значение по-умолчанию !. Для единообразия, CommandPrefix влияет на весь процесс ASF. Если у вас нет причин редактировать этот параметр, рекомендуется оставить ему значение по-умолчанию.


ConfirmationsLimiterDelay

Параметр типа byte со значением по-умолчанию 10. ASF гарантирует, что между двумя последовательными запросами на получение подтверждений 2FA будет не менее ConfirmationsLimiterDelay секунд, чтобы избежать срабатывания ограничения - они используются ASF 2FA во время, например, команды 2faok, а также по мере необходимости при выполнении различных торговых операций. Значение по-умолчанию было установлено исходя из результатов наших тестов, и его не стоит снижать если вы не хотите возникновения проблем. Если у вас нет веских причин для редактирования этого свойства, оставьте его по умолчанию.


ConnectionTimeout

Параметр типа byte со значением по-умолчанию 90. Этот параметр определяет таймауты для различных сетевых действий, производимых ASF, в секундах. В частности, ConnectionTimeout определяет таймаут в секундах для HTTP и IPC запросов, ConnectionTimeout / 10 определяет максимальное число пропущенных тактов сторожевого таймера, а ConnectionTimeout / 30 определяет время в минутах, которое мы выделяем на начальный запрос подключения к сети Steam. Значение по умолчанию 90 должно подходить большинству пользователей, однако, если у вас очень медленное сетевое подключение или ПК, возможно вы захотите увеличить это значение (например до 120). Имейте в виду, что большие значения не починят волшебным образом медленные или недоступные сервера Steam, поэтому нет смысла бесконечно ждать чего-то, что никогда не случится, и проще попробовать заново позже. Установка этому параметру слишком большого значения приведёт к излишним задержка обнаружения проблем с сетью, а также приведёт к общему падению производительности. Установка этому параметру слишком маленького значения также уменьшит общую стабильность и производительность, поскольку ASF будет прерывать нормальные запросы, которые ещё обрабатываются. Поэтому устанавливать этому параметру значение меньше значения по-умолчанию в целом не даёт преимуществ, поскольку сервера Steam время от времени работают очень медленно, и поэтому требуют больше времени для обработки запросов ASF. Значение по-умолчанию - это попытка уравновесить предположение о стабильности сетевого подключения и сомнения в способности сети Steam обработать запрос за отведенное время. Если вы хотите обнаруживать проблемы с сетью как можно раньше и позволить ASF переподключаться/реагировать как можно быстрее, значение по умолчанию вам подойдёт (можно поставить ему значение немножко ниже, например 60, чтобы ASF стал менее терпеливым). Если же вы замечаете, что у ASF часто происходят проблемы с сетью, такие как ошибки обменов, потери тактов сторожевого таймера, или разрывы связи со Steam, вероятно имеет смысл увеличить это значение если вы уверены что это связано с самим Steam, а не с вашей сетью, поскольку увеличение таймаутов делает ASF более "терпеливым" и не пытаться сразу же переподключаться.

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

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

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


CurrentCulture

Параметр типа string со значением по-умолчанию null. По-умолчанию ASF пытается использовать язык вашей операционной системы, и использовать переведенные на этот язык строки, если они доступны. Это возможно благодаря нашему сообществу, которое старается локализовать ASF на большинство популярных языков. Если по какой-то причине вы не хотите использовать язык вашей ОС, вы можете использовать этот параметр чтобы выбрать любой существующий язык, который бы вы хотели использовать. Полный список языков вы можете найти в MSDN в колонке Language tag. Рады сообщить, что ASF воспринимает как точные указания на языки, как например "en-GB", так и нейтральные, такие как "en". Указание языка также будет влиять на другие региональные настройки, такие как формат валюты, даты и тому подобное. Обратите внимание, что вам могут понадобиться дополнительные шрифты/языковые пакеты для правильного отображения символов некоторых языков, если вы выбрали язык отличный от языка вашей системы. Обычно вам может понадобиться этот параметр если вы хотите пользоваться ASF на английском языке вместо своего родного.


Debug

Параметр типа bool со значением по умолчанию false. Этот параметр определяет, должен ли ASF работать в режиме отладки. В режиме отладки, ASF использует специальную папку debug рядом с папкой config, в которой сохраняются все взаимодействия между ASF и серверами Steam. Отладочная информация может помочь обнаруживать сложные проблемы, связанные с сетью и общей работой ASF. В дополнение к этому, некоторые подпрограммы будут выводить гораздо больше информации, так например WebBrowser будет указывать конкретную причину, почему запросы завершаются неудачно - такая информация записывается в обычный журнал ASF. Вам не следует использовать ASF в режиме отладки, если вас об этом не попросил разработчик. Работа в отладочном режиме уменьшает производительность, отрицательно влияет на стабильность и выводит гораздо больше информации в разных местах, поэтому этот режим должен использоваться исключительно намеренно, кратковременно, для отладки конкретной проблемы, воспроизведения проблемы или получения дополнительной информации о сбое запроса, и тому подобное, не предназначенно для нормальной работы программы. Вы увидите огромное количество новых ошибок, проблем, и исключений - подумайте, обладаете ли вы достаточными знаниями об ASF, Steam и его глюках прежде чем вы решите анализировать эти данные самостоятельно, поскольку часть этих сообщений может не соответствовать истине.

ПРЕДУПРЕЖДЕНИЕ: активация этого режима включает журналирование потенциально конфиденциальной информации, такой как логины и пароли, используемые для входа в Steam (из-за журналирования сетевых запросов). Эти данные записываются как в папку debug, так и в обычный log.txt (который в этом режиме будет гораздо более подробным). Вам не следует выкладывать отладочную информацию, сгенерированную ASF, в публичных местах, разработчики ASF всегда будут просить передать её на e-mail, или выложить в другое безопасное место. Мы не сохраняем и не используем эти персональные данные, они записываются как часть процедуры отладки, поскольку их присутствие может быть связано с имеющейся у вас проблемой. Мы бы предпочли чтобы вы не изменяли журнал ASF, но если вы беспокоитесь о безопасности, вы можете соответственно отредактировать свои персональные данные.

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


DefaultBot

Параметр типа string со значением по-умолчанию null. В некоторых сценариях ASF функционирует с концепцией бота по умолчанию, отвечающего за обработку чего-либо - например, IPC-команд или интерактивной консоли, когда вы не указываете целевого бота. Это свойство позволяет выбрать бота по умолчанию, отвечающего за обработку подобных сценариев, поместив сюда его BotName. Если заданного бота не существует, или используется значение по умолчанию null, то ASF выберет первого зарегистрированного бота, отсортированного по алфавиту. Обычно это свойство конфигурации используется, если вы хотите опустить аргумент [Bots] в командах IPC и интерактивной консоли, и всегда выбирать одного и того же бота в качестве бота по умолчанию для таких вызовов.


FarmingDelay

Параметр типа byte со значением по-умолчанию 15. Для работы ASF требуется периодически проверять каждые FarmingDelay минут, не выпали ли уже все карточки из текущей игры. Слишком маленькое значение в этом параметре приведёт к избыточному количеству запросов к steam, а слишком большое может привести к тому что ASF будет "фармить" игру на FarmingDelay дольше чем требуется. Значение по умолчанию должно прекрасно подойти большинству пользователей, однако если у вас много ботов вы можете захотеть увеличить это значение до чего-то вроде 30 минут чтобы ограничить количество запросов к сети Steam. К счастью, ASF использует механизм обработки событий и проверяет страницу значков в Steam каждый раз когда появляется уведомление о новых предметов, поэтому в общем случае нам вообще не нужно проверять это через фиксированные промежутки времени, но поскольку мы не полностью доверяем сети Steam - мы всё же проверяем страницу со значками, чтобы убедиться что за последние FarmingDelay минут не выпало карточек (на случай если Steam не пришлёт уведомление о новый предметах, или что-то подобное). Если предположить что сеть Steam работает правильно, уменьшение этого значения никак не повлияет на эффективность фарма, но существенно увеличит нагрузку на сеть - поэтому рекомендуется только увеличивать его (при необходимости) относительно значения по умолчанию в 15 минут. Если у вас нет веских причин редактировать этот параметр, рекомендуется оставить ему значение по умолчанию.


FilterBadBots (фильтр "плохих" ботов)

Параметр типа bool со значением по-умолчанию true. Это свойство определяет, будет ли ASF автоматически отклонять трейдый, полученные от известных и отмеченных "плохими" субъектов. Для этого по мере необходимости ASF связывается с нашим сервером для получения списка идентификаторов из чёрного списка. Перечисленные боты управляются людьми, которые квалифицируются как вредные для нашей инициативы, такие как нарушения, которые нарушают наш кодекс поведения, используют предоставленные функциональные возможности и ресурсы, такие как PublicListing для злоупотреблений и использования других людей, или ведут прямую преступную деятельность, такую как запуск DDoS атак на сервере. Поскольку ASF придерживается твердой позиции на общую справедливость, честность и сотрудничество между пользователями, чтобы все сообщество процветало, это свойство включено по умолчанию, и поэтому ASF фильтрует ботов, которых мы классифицировали как вредных от предлагаемых сервисов. Если у вас есть веские причины для редактирования этого свойства, таких как несогласие с нашим заявлением и преднамеренное разрешение на работу ботов (включая использование ваших аккаунтов), вы должны оставить его по умолчанию.


GiftsLimiterDelay

Параметр типа byte со значением по-умолчанию 1. ASF обеспечивает чтобы между последовательными запросами на обработку(активацию) подарков/ключей/лицензий прошло как минимум GiftsLimiterDelay секунд во избежание превышения лимита запросов . Кроме того, он будет использоваться в качестве глобального ограничителя для запросов на список игр, например таких, как запрос команды owns. Если у вас нет веских причин редактировать этот параметр, рекомендуется оставить ему значение по умолчанию.


Headless

Параметр типа bool со значением по-умолчанию false. Этот параметр определяет, должен ли ASF работать в безынтерфейсном режиме. В безынтерфейсном режиме ASF предполагает что оно запущено на сервере или в другой не-интерактивной среде, и поэтому не будет пытаться получить какую-любо информацию через консольный ввод. Это включает в себя данные по требованию (учётные данные, такие как код 2ФА, код SteamGuard, пароль или любые другие переменные, необходимые ASF для работы), а также любой другой консольный ввод (такой как интерактивная консоль команд). Другими словами, режим Headless равнозначен переводу консоли ASF в режим только для чтения. Эта настройка полезна в основном для пользователей, запускающих ASF на серверах, поскольку вместо запроса на, например, код аутентификации, ASF будет просто прерывать операцию и останавливать "проблемный" аккаунт. Если вы не пользуетесь ASF на сервере, и не убедились что ASF сможет работать без ввода дополнительных данных, вам стоит оставить этот параметр выключенным. В режиме headless любое взаимодействие с пользователем будет запрещено, и ваши аккаунты не будут запущены, если они требуют любого консольного ввода при запуске. Это полезно на серверах, чтобы ASF просто прекращал попытки входа в аккаунт если для этого нужны дополнительные данные, а не ждал (бесконечно) пока пользователь их введёт. Включение этого режима также позволит использовать команды input, которая выступает в качестве замены стандартного консольного ввода. Если вы не уверены как настроить этот параметр - оставьте ему значение по-умолчанию false.


IdleFarmingPeriod

Параметр типа byte со значением по-умолчанию 8. Когда ASF нечего фармить, он будет проверять каждые IdleFarmingPeriod часов, не появилось ли на аккаунте новых игр для фарма. Эта функция не нужна когда мы говорим о добавлении новых игр на аккаунт, поскольку алгоритм ASF достаточно умен чтобы автоматически проверять в этом случае страницу со значками. IdleFarmingPeriod в основном для тех случаев, когда в старую игру, которае есть у нас на аккаунте, добавили коллекционные карточки. В этом случае нет никакого события, поэтому ASF приходится периодически проверять страницу со значками чтобы предусмотреть такой вариант. Значение 0 выключает эту функцию. Also check: ShutdownOnFarmingFinished preference in FarmingPreferences.


InventoryLimiterDelay

Параметр типа byte со значением по-умолчанию 4. ASF will ensure that there will be at least InventoryLimiterDelay seconds in between of two consecutive web inventory requests to avoid triggering rate-limit - those are being used for example during marking inventory notifications as read, might also be used by third-party plugins fetching inventory of other users. This property is not used for fetching our own inventory, as ASF is using much more efficient internal network call for that, so it'll not affect commands like loot or transfer in any way. Default value of 4 was set based on marking inventories of over 100 consecutive bot instances, and should satisfy most (if not all) of the users. You may however want to decrease it, or even change to 0 if you have very low amount of bots, so ASF will ignore the delay and mark Steam inventories much faster. Be warned though, as setting it too low will result in Steam temporarily banning your IP, and that will prevent you from making any calls at all. Вам может также понадобиться увеличить это значение если у вас много ботов который производят много запросов к инвентарю, хотя возможно в этом случае вам стоит вместо этого уменьшить количество запросов. Если у вас нет веских причин редактировать этот параметр, рекомендуется оставить ему значение по умолчанию.


IPC

Параметр типа bool со значением по-умолчанию true. Этот параметр определяет, должен ли IPC сервер ASF запускаться при запуске программы. IPC обеспечивает взаимодействие между процессами, включая использование ASF-ui, путем запуска локального HTTP-сервера. Если вы не собираетесь использовать стороннюю интеграцию IPC с ASF, включая наш ASF-ui, вы можете безопасно отключить эту опцию. В противном случае рекомендуется оставить его включенным (опция по умолчанию).


IPCPassword

Параметр типа string со значением по-умолчанию null. Этот параметр задаёт пароль, который будет обязательным для любого запроса API через IPC и послужит дополнительной мерой безопасности. Когда этому параметру присвоено не пустое значение, все IPC запросы будут требовать дополнительный параметр password со значением заданным тут. Значение по-умолчанию null снимает необходимость в пароле, позволяя ASF обрабатывать все запросы. В дополнение к этому, включение этого параметра также включает встроенный в IPC механизм предотвращения перебора, который будет временно банить любой IP -адрес посылающий слишком много неавторизованных запросов за короткий интервал времени. Если у вас нет причин редактировать этот параметр, рекомендуется оставить ему значение по-умолчанию.


IPCPasswordFormat

Параметр типа byte со значением по-умолчанию 0. Этот параметр задаёт формат параметра IPCPassword и использует EHashingMethod как базовый тип. Пожалуйста, прочтите раздел "Безопасность" если хотите узнать больше, поскольку вам потребуется убедиться, что параметр IPCPassword действительно содержит пароль в формате, соответствующем IPCPasswordFormat. Другими словами, когда вы меняете IPCPasswordFormat ваш IPCPassword должен уже быть в этом формате, а не только планироваться как таковой. Вам следует оставить этому параметру значение по-умолчанию ​0​, кроме тех случаев когда вы хорошо знаете, что делаете.


LicenseID

Guid? тип со значением по умолчанию null. Это свойство позволяет нашим спонсорам улучшить ASF дополнительными возможностями, требующими платные ресурсы для работы. В настоящее время это позволяет использовать MatchActively в плагине ItemsMatcher.

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

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

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

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


LoginLimiterDelay

Параметр типа byte со значением по-умолчанию 10. ASF обеспечивает чтобы между двумя последовательными запросами на подключение прошло как минимум LoginLimiterDelay секунд во избежание превышения лимита запросов . Значение по-умолчанию 10 было выбрано на основе подключения 100 ботов, и должно удовлетворить большинство (если не всех) пользователей. Вы можете, однако, захотеть увеличить/уменьшить его, или даже сделать равным 0, если у вас очень малое количество ботов, в этом случае ASF будет игнорировать задержку и подключаться к Steam намного быстрее. Но учтите, что слишком низкое значение при большом количестве ботов приведёт к временному бану по IP, что приведёт к полной невозможности подключиться и ошибке InvalidPassword/RateLimitExceeded - и это касается и обычного клиента Steam, не только ASF. Аналогично, если у вас очень много ботов, особенно если вы параллельно используете другие клиенты/утилиты Steam на том же IP адресе, вероятно вам понадобится увеличить это значение, чтобы распределить попытки входа через большие интервалы времени.

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


MaxFarmingTime

Параметр типа byte со значением по-умолчанию 10. Как вы должны знать, Steam не всегда работает должным образом, иногда могут произойти странные ситуации, такие как незаписывающееся игровое время, несмотря на то, игра была запущена. ASF будет фармить одну игру в соло-режиме максимум MaxFarmingTime часов, и будет считать что фарм завершен по окончанию этого периода. Это необходимо не только чтобы процесс фарма не "зависал" в случае каких-то странных ситуаций, но и на случай если Steam выпускает новый значок, который не даёт ASF продолжить работу (см. Blacklist). Значение по-умолчанию в 10 часов должно быть достаточно для выпадения карточек из одной игры. Установка слишком маленького значения может привести к тому что обычные игры будут пропускаться (и да, известны случаи когда выпадение карт в игре занимает 9 часов), а слишком высокое значение может привести к "зависанию" процесса. Обратите внимание, что этот параметр влияет только на одну игру в одном сеансе фарма (поэтому после того, как пройдёт вся очередь, ASF снова вернётся к той же игре), а также на то, что это не общее время в игре, а внутреннее время фарма в ASF, так что ASF также вернется к этой игре после перезапуска. Если у вас нет веских причин редактировать этот параметр, рекомендуется оставить ему значение по умолчанию.


MaxTradeHoldDuration

Параметр типа byte со значением по-умолчанию 15. Этот параметр задаёт максимальную длительность удержания обмена с которой мы готовы принимать обмены, в днях - ASF будет отказываться от обменов, у которых длительность удержания больше MaxTradeHoldDuration дней, как описано в разделе "Обмены". Этот параметр влияет только на ботов у которых TradingPreferences имеет значение SteamTradeMatcher, и не затрагивает ни обменов с Master/SteamOwnerID ни пожертвований. Удержания обменов не нравятся никому, и никто не хочет иметь с ними дела. ASF предполагает работу по либеральным правилам и помощь каждому, независимо от удержания обмена - поэтому по-умолчанию значение этого параметра 15. Однако, если вы предпочитаете отклонять все обмены с удержанием, вы можете указать здесь 0. Также учитывайте, что карты с коротким сроком жизни не подвержены влиянию этого параметра, и обмены с ними отклоняются в случае наличия задержек, как описано в разделе "Обмены", поэтому нет нужды глобально отклонять все обмены только из-за этого. Если у вас нет причин редактировать этот параметр, рекомендуется оставить ему значение по-умолчанию.


MinFarmingDelayAfterBlock

Параметр типа byte со значением по-умолчанию 60. Это свойство определяет минимальное количество времени, в секундах, которое ASF будет ждать перед возобновлением фарма карт, если он был ранее отключен с LoggedInElsewhere, что происходит, когда вы решите принудительно отключить текущую ферму путем запуска игры у себя. Эта задержка существует главным образом по соображениям удобства и отсутствия накладных расходов, Например, он позволяет вам перезапустить игру без необходимости сражаться с ASF, пытающимся занять ваш аккаунт, только потому что блокировка заняла доли секунды. Из-за того, что повторное подключение к сессии вызывает LoggedInElsewhere разъединение, ASF должен пройти всю процедуру переподключения, которая оказывает дополнительную нагрузку на машину и сеть Steam, поэтому желательно избегать дополнительных отключений. По умолчанию, это настраивается на 60 секунд, что должно быть достаточно, чтобы позволить вам перезапустить игру без лишних проблем. Тем не менее, есть сценарии, когда вы можете быть заинтересованы в его увеличении. Например, если ваша сеть часто отключается и ASF слишком скоро перестает работать, что приводит к тому, что придется самостоятельно переподключаться. Мы допускаем максимальное значение 255 для этого свойства, поскольку этого должно быть достаточно для всех общих сценариев. В дополнение к вышесказанному, также можно уменьшить задержку, или даже полностью удалить её со значением 0, хотя это обычно не рекомендуется по указанным выше причинам. Если у вас нет причин редактировать этот параметр, рекомендуется оставить ему значение по-умолчанию.


OptimizationMode

Параметр типа byte со значением по-умолчанию 0. Этот параметр определяет режим оптимизации, который ASF будет использовать при работе. На данный момент ASF поддерживает два режима - 0, который называется MaxPerformance(Максимальная производительность), и 1 который называется MinMemoryUsage(Минимальное потребление памяти). По умолчанию ASF предпочитает как можно больше вещей делать параллельно (одновременно), что увеличивает производительность распределяя нагрузку на всех ядрах ЦПУ, нескольких потоках ЦПУ, нескольких сокетах и нескольких очередях задач. Например, ASF запросит первую страницу значков чтобы узнать какие игры фармить, и после завершения этого запроса прочитает сколько страниц со значками у вас есть, и запросит их все одновременно. Это то что вам нужно почти всегда, поскольку избыточность минимальна, а выгода от использования асинхронного кода ASF может быть заметна даже на очень старом железе с одноядерным CPU и ограниченной производительностью. Однако, когда много задач выполняется параллельно, ASF отвечает за их поддержку, как например поддержку открытых сокетов, запущенных потоков и обрабатываемых задач, что иногда может привести к увеличению использования памяти, и если вы очень ограничены доступной памятью, возможно вы захотите переключить значение этого параметра в 1 (MinMemoryUsage), что приведёт к тому что ASF будет последовательно выполнять код, который мог бы быть распараллелен. Вам следует рассмотреть возможность переключения этого свойства только в том случае, если вы ранее читали Настройка с низким объемом памяти и намеренно хотите пожертвовать гигантским повышением производительности ради очень небольшого уменьшения загрузки памяти. Обычно этот вариант намного хуже, чем то, что вы можете достичь другими возможными способами, например, ограничив производительность ASF или настроив сборщик мусора во время выполнения, как объяснено в настройке с низким объемом памяти. Следовательно, вы можете использовать MinMemoryUsage как крайнее средство, прямо перед перекомпиляцией среды выполнения, если вы не можете получить удовлетворительных результатов с другими (гораздо лучшими) параметрами. Если у вас нет веских причин редактировать этот параметр, рекомендуется оставить ему значение по умолчанию.


PluginsUpdateList

Параметр типа ImmutableHashSet<string> с пустым значением по-умолчанию. This property defines list of plugin assembly names that are either blacklisted or whitelisted for being considered for automatic updates, as per PluginsUpdateMode defined below.

Если у вас нет причин редактировать этот параметр, рекомендуется оставить ему значение по умолчанию.


PluginsUpdateMode

Параметр типа byte со значением по-умолчанию 0. This property defines plugins update mode that gives meaning to PluginsUpdateList defined above. By specifying this property you can easily enable/disable automatic updates for all plugins except those declared.

  • Value of 0, called Whitelist, disables automatic update of all plugins, except those defined in PluginsUpdateList.
  • Value of 1, called Blacklist, enables automatic update of all plugins, except those defined in PluginsUpdateList.

ASF team would like to remind you that, for your own safety, you should enable automatic updates only from trusted parties. Keep in mind that malicious plugins can decide to update themselves or execute remote commands regardless of this setting, this is why this setting applies to ASF-provided plugins update functionality exclusively, and you should still ensure that you've appropriately verified every plugin that you've decided to use.

Updates of plugins are performed by default along with ASF update routine - UpdateChannel and UpdatePeriod. Standard ASF update mechanisms such as update command will also trigger optional plugins update. If instead you'd like to update plugins manually without updating ASF version at the same time, updateplugins command offers such possibility.

Если у вас нет причин редактировать этот параметр, рекомендуется оставить ему значение по-умолчанию.


ShutdownIfPossible

Параметр типа bool со значением по-умолчанию false. When enabled, ASF will try to shutdown the process if possible, that is, when all of your registered bots are stopped. This can be especially useful when combined with ShutdownOnFarmingFinished on all of your bot instances, since this way ASF will be allowed to automatically shutdown when the last one of your bots finishes farming.

Since the expectation of majority of the users is to have the process running at all times, e.g. for IPC usage, this option is disabled by default.


SteamMessagePrefix

Параметр типа string со значением по-умолчанию /me. Этот параметр задаёт префикс, который будет добавляться в начало всех сообщений в Steam, отсылаемых ASF. По умолчанию ASF использует префикс "/me " чтобы сообщения от бота можно было легко отличить по другому цвету в чате Steam. Другой достойный упоминания префикс - "/pre ", который даёт похожий результат но использует другой вид форматирования. Вы также можете сделать этот параметр равным пустой строке или null чтобы полностью отключить использование префиксов и отправлять все сообщения ASF в обычном виде. Приятно отметить, что этот параметр влияет только на сообщения в Steam - ответы полученные через другие каналы (такие как IPC) не меняются. Кроме случая, когда вы хотите изменить стандартное поведение ASF, хорошей идеей будет оставить этому параметру значение по-умолчанию.


SteamOwnerID

Параметр типа ulong со значением по-умолчанию 0. Этот параметр задаёт 64-битный SteamID владельца процеса ASF, и очень похож на права доступа Master в настройках конкретного бота (но работающий глобально). Почти всегда вам нужно задать в этом параметре ID вашего основного аккаунта Steam. Права доступа Master даёт полный контроль над конкретным ботом, но глобальные команды, такие как exit, restart или update доступны только для SteamOwnerID. Это удобно если вы захотите запускать у себя ботов ваших друзей, не давая им при этом контроля над процессом ASF, например не позволяя завершить его командой exit. Значение по-умолчанию 0 указывает что у процесса ASF нет владельца, то есть никто не сможет использовать глобальные команды. Следует помнить, что это свойство относится исключительно к чату Steam. IPC, а также интерактивная консоль все равно позволят выполнять команды Owner, даже если это свойство не установлено.


SteamProtocols

Параметр типа byte flags со значением по-умолчанию 7. Этот параметр определяет протоколы по которым ASF будет соединяться с серверами Steam, которые задаются следующим образом:

Значение Имя Описание
0 None Отсутствие протокола
1 TCP Transmission Control Protocol
2 UDP User Datagram Protocol
4 WebSocket WebSocket

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

По-умолчанию ASF будет использовать все доступные протоколы в качестве меры борьбы с простоями и другими проблемами Steam. Обычно это свойство необходимо изменять, если вы хотите ограничить использование ASF только одним или двумя конкретными протоколами. Такие меры могут понадобиться например если у вас есть брандмауэр на котором разрешён только TCP-трафик и вы не хотите чтобы ASF пытался подключиться по UDP. Однако, если вы не пытаетесь отладить какую-то конкретную проблему, почти всегда будет лучше дать ASF возможность выбрать любой из доступных протоколов, а не только один или два. Если у вас нет веских причин редактировать этот параметр, рекомендуется оставить ему значение по умолчанию.


UpdateChannel

Параметр типа byte со значением по-умолчанию 1. Этот параметр задаёт используемый канал обновлений, который будет использоваться либо для авто-обновлений (если UpdatePeriod больше 0), либо для оповещения о доступных обновлениях (в противном случае). Currently ASF supports three update channels - 0 which is called None, 1, which is called Stable, and 2, which is called PreRelease. Канал Stable это канал обновлений по-умолчанию, который должен использоваться большинством пользователей. PreRelease channel in addition to Stable releases, also includes pre-releases dedicated for advanced users and other developers in order to test new features, confirm bugfixes or give feedback about planned enhancements. PreRelease versions often contain unpatched bugs, work-in-progress features or rewritten implementations. Если вы не считаете себя продвинутым пользователем, то оставайтесь на канале обновления по умолчанию 1 (Stable). PreRelease channel is dedicated to users who know how to report bugs, deal with issues and give feedback - no technical support will be given. Ознакомьтесь с циклом выпуска ASF если хотите узнать больше. Вы также можете установить параметру UpdateChannel значение 0 (None) если вы хотите полностью отключить проверку наличия новых версий. Установка параметра UpdateChannel в 0 полностью отключит все функции связанные с обновлениями, в том числе командой update. Использование канала None крайне не рекомендуется, поскольку в этом случае вы подвергнете себя разнообразным проблемам (упомянутым в описании параметра UpdatePeriod ниже).

Настойчиво рекомендуем оставить этому параметру значение по умолчанию, кроме случая когда вы точно знаете что делаете.


UpdatePeriod

Параметр типа byte со значением по-умолчанию 24. Этот параметр определяет, как часто ASF будет проверять наличие обновлений. Обновления важны не только для получения новых возможностей и патчей критических уязвимостей, но и для получения исправлений ошибок, улучшения производительности, стабильности и так далее. Если этому параметру присвоено значение больше 0, ASF будет автоматически скачивать, заменять и перезапускать себя (если это разрешено в AutoRestart) при наличии обновлений. Для этого ASF будет проверять каждые UpdatePeriod часов, нет ли обновлений в нашем репозитории GitHub. Значение 0 выключает автоматические обновления, но позволяет вам запускать команду update вручную. Возможно вам также будет интересен параметр UpdateChannel, которому должен следовать UpdatePeriod.

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

Если у вас нет веских причин отключать эту функцию, вам следует оставить авто-обновления включенными с разумной величиной UpdatePeriod, для вашего же блага. Не только потому, что мы предоставляем техническую поддержку только для последней стабильной версии ASF, но и потому что мы даём гарантии безопасности только для последней версии. Если вы пользуетесь устаревшей версией ASF - вы намеренно подвергаете себя разнообразным проблемам, от мелких ошибок, до сломанного функционала и заканчивая перманентной блокировкой аккаунта Steam, поэтому мы настоятельно рекомендуем, для вашего же блага, следить за тем что у вас была последняя версия ASF. Автоматические обновления позволяют нам быстро реагировать на любые проблемы, и исправлять проблемы в коде пока они не привели к непредвиденным последствиям, и если вы от них отказываетесь - вы теряете все гарантии безопасности в случае если исполняемый код окажется потенциально опасным, не только для сети Steam, но и (по определению) для вашего аккаунта Steam.


WebLimiterDelay

Параметр типа ushort со значением по умолчанию 300. Этот параметр задаёт минимальную задержку (в миллисекундах), которая должна пройти между двумя последовательными запросами к одному web-сервису Steam. Такие задержки необходимы из-за того, что сервис AkamaiGhost, который используется Steam, включает в себя ограничение частоты глобального числа запросов за единицу времени. При обычных условиях довольно сложно получить блокировку akamai, но при высоких нагрузках с большими очередями запросов вполне возможно её срабатывание если мы продолжим слать большое количество запросов за короткий интервал времени.

Значение по-умолчанию установлено исходя из предположения что ASF - единственный инструмент, использующий web-сервисы Steam, в частности steamcommunity.com, api.steampowered.com и store.steampowered.com. Если вы пользуетесь другими утилитами, посылающими запросы к тому же web-сервису, вам стоит убедиться, что эти инструменты имеют функционал, схожий с WebLimiterDelay, и установить и в этом инструменте и в ASF удвоенную величину задержки, равную 600. Это гарантирует вам что ни при каких обстоятельствах вы не пошлёте больше 1 запроса за 300 мс.

В общем случае, уменьшение WebLimiterDelay ниже значения по умолчанию крайне не рекомендуется, поскольку это может привести к различным блокировкам по IP, некоторые из которых могут оказаться перманентными. Значение по-умолчанию должно хорошо подойдти для одной копии ASF на сервере, а также при использовании ASF параллельно с обычным клиентом Steam. Он должен быть правильным для большинства случаев использования, и его следует только увеличивать (никак не уменьшать). Короче говоря, глобальное число всех запросов с одного IP на один домен Steam никогда не должно превышать 1 запрос в 300 мс.

Если у вас нет причин редактировать этот параметр, рекомендуется оставить ему значение по-умолчанию.


WebProxy

Параметр типа string со значением по-умолчанию null. Этот параметр задаёт адрес прокси-сервера который будет использоваться для всех внутренних http и https запросов от HttpClient ASF, особенно к сервисам таким как github.com, steamcommunity.com и store.steampowered.com. Проксирование запросов ASF в общем случае не имеет достоинств, однако очень полезно для обхода различных брандмауэров, в частности "Великого китайского файрвола".

Этот параметр задаётся как строка uri:

Строка URI состоит из схемы (поддерживается: http/https/socks4/socks4a/socks5), хоста и необязательного порта. Пример полной строки uri: "http://contoso.com:8080".

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

На данный момент ASF использует прокси только для http и https запросов, что не включает в себя внутреннее взаимодействие с сетью Steam клиента ASF. В настоящее время нет планов для обеспечения такой поддержки, в основном из-за отсутствия такого функционала в SK2. Если вы хотите чтобы это случилось - начинать надо там.

Если у вас нет причин редактировать этот параметр, рекомендуется оставить ему значение по-умолчанию.


WebProxyPassword

Параметр типа string со значением по умолчанию null. Этот параметр задаёт пароль, используемый в базовой, дайджест, NTLM и Kerberos авторизации, которая поддерживается заданным в WebProxy прокси-сервером. Если ваш прокси не требует учётных данных пользователя, нет необходимости что-то вводить в этом параметре. Использование этого параметра имеет смысл только если задан WebProxy, и не имеет никакого эффекта в противном случае.

Если у вас нет причин редактировать этот параметр, рекомендуется оставить ему значение по-умолчанию.


WebProxyUsername

Параметр типа string со значением по-умолчанию null. Этот параметр задаёт имя пользователя, используемое в базовой, дайджест, NTLM и Kerberos авторизации, которая поддерживается заданным в WebProxy прокси-сервером. Если ваш прокси не требует учётных данных пользователя, нет необходимости что-то вводить в этом параметре. Использование этого параметра имеет смысл только если задан WebProxy, и не имеет никакого эффекта в противном случае.

Если у вас нет причин редактировать этот параметр, рекомендуется оставить ему значение по-умолчанию.


Конфигурация бота

Как вы уже должны знать, у каждого бота должен быть свой файл конфигурации, основанный на примере структуры JSON, приведенном ниже. Начните с выбора имени вашего бота (например 1.json, main.json, primary.json или AnythingElse.json) и переходите к конфигурированию.

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

Файл конфигурации бота имеет следующую структуру:

{
    "AcceptGifts": false,
    "BotBehaviour": 0,
    "CompleteTypesToSend": [],
    "CustomGamePlayedWhileFarming": null,
    "CustomGamePlayedWhileIdle": null,
    "Enabled": false,
    "FarmingOrders": [],
    "FarmingPreferences": 0,
    "GamesPlayedWhileIdle": [],
    "HoursUntilCardDrops": 3,
    "LootableTypes": [1, 3, 5],
    "MatchableTypes": [5],
    "OnlineFlags": 0,
    "OnlinePreferences": 0,
    "OnlineStatus": 1,
    "PasswordFormat": 0,
    "RedeemingPreferences": 0,
    "RemoteCommunication": 3,
    "SendTradePeriod": 0,
    "SteamLogin": null,
    "SteamMasterClanID": 0,
    "SteamParentalCode": null,
    "SteamPassword": null,
    "SteamTradeToken": null,
    "SteamUserPermissions": {},
    "TradeCheckPeriod": 60,
    "TradingPreferences": 0,
    "TransferableTypes": [1, 3, 5],
    "UseLoginKeys": true,
    "UserInterfaceMode": 0
}

Все параметры описаны ниже:

AcceptGifts

Параметр типа bool со значением по-умолчанию false. Если этот параметр включен, ASF будет автоматически принимать и активировать все подарки в Steam(включая электронные подарочные карты для пополнения кошелька Steam), отправленные боту. Это также включает в себя подарки от пользователей, не указанных в SteamUserPermissions. Помните о том, что подарки, отправленные на электронную почту не передаются в клиент автоматически, поэтому ASF не сможет принять их без вашей помощи.

Эта возможность рекомендуется только для дополнительных аккаунтов, поскольку весьма вероятно что вы не захотите активировать все подарки, полученные на основной аккаунт. Если вы не уверены, нужна ли вам эта возможность, оставьте её равной значению по-умолчанию false.


BotBehaviour

Параметр типа byte flags со значением по-умолчанию 0. Этот параметр определяет реакцию бота под управлением ASF на различные события, и задаётся следующим образом:

Имя Имя Описание
0 None Бот не имеет особых реакций, наименее агрессивный режим, используется по умолчанию
1 RejectInvalidFriendInvites ASF будет отклонять (а не игнорировать) неверные запросы на добавление в друзья
2 RejectInvalidTrades ASF будет отклонять (а не игнорировать) неверные предложения обмена
4 RejectInvalidGroupInvites ASF будет отклонять (а не игнорировать) неверные приглашения в группы
8 DismissInventoryNotifications ASF будет автоматически отмечать все уведомления о предметах в инвентаре как просмотренные
16 MarkReceivedMessagesAsRead ASF будет автоматически отмечать все полученные сообщения как прочитанные
32 MarkBotMessagesAsRead ASF будет автоматически отмечать сообщения, полученные от других ботов ASF (запущенных в том же экземпляре ASF) как прочитанные

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

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

Нормальное (None) поведение ASF подразумевает автоматизацию только нужных пользователю вещей (например, фарм карточек или обработка обменов по правилам SteamTradeMatcher, если это задано в TradingPreferences). Это наименее агрессивный режим, и он подойдёт большинству пользователей, поскольку у них остаётся полный контроль над аккаунтом, и они могут сами решать, выполнять ли какие-то нестандартные взаимодействия, или нет.

Неверный запрос на добвление в друзья - это такой, который пришёл не от пользователя с правами FamilySharing или выше (задаётся в параметре SteamUserPermissions). ASF в нормальном режиме игнорирует такие запросы, как и ожидается, давая вам выбор принимать их или нет. Значение RejectInvalidFriendInvites приведёт к тому, что такие запросы будут автоматически отклоняться, что практически исключит возможность другим людям добавить вас в друзья (поскольку ASF будет отклонять все их запросы, кроме людей заданных в SteamUserPermissions). Если вы не хотите целиком заблокировать запросы на добавление в друзья, не используйте это значение.

Неверное предложение обмена это такое предложение, которое не будет автоматически принято модулем ASF. Вы можете прочесть об этом больше в разделе "Обмены", который посвящен непосредственно тому, какие обмены ASF будет принимать автоматически. Правильные обмены также определяются и другими настройками, особенно TradingPreferences. Значение RejectInvalidTrades приведёт к тому, что все неверные предложения будут отклонены, а не проигнорированы. Если вы не хотите запретить все обмены, кроме тех которые автоматически обрабатывает ASF вам не следует использовать этот значение.

Неверное приглашение в группу это приглашение которое пришло не от группы SteamMasterClanID. ASF в нормальном режиме, как и ожидается, будет игнорировать такие приглашения, позволяя вам самостоятельно решить, хотите ли вы вступать в конкретную группу Steam или нет. Значение RejectInvalidGroupInvites приведёт к тому что все эти приглашения в группы будут автоматически отклонены, делая попросту невозможным пригласить вас в группу, отличную от SteamMasterClanID. Если вы не хотите запретить все приглашения в группы, вам не следует использовать это значение.

DismissInventoryNotifications чрезвычайно полезен, если вас начинают раздражать постоянные уведомления Steam о получении новых предметов. ASF не может избавится от самого уведомления, так как оно встроено в ваш клиент Steam, но может автоматически очистить уведомление после его получения, чтобы у вас больше не висело уведомление "новые предметы в инвентаре". Если вы желаете сами оценить все полученные предметы (особенно карты выфармленные с ASF), тогда, естественно, вы не должны включать данную опцию. Когда вы начинаете сходить с ума, помните, что это предлагается как вариант.

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

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

Если вы не уверены, как настроить этот параметр, лучше оставить ему значение по-умолчанию.


CompleteTypesToSend

Параметр типа ImmutableHashSet<byte> с пустым значением по умолчанию. Когда ASF заканчивает собирать полный набор предметов указанных в этом параметре типов, оно может отправить предложение обмена в Steam пользователю с правами доступа Master, что очень удобно если вы хотите использовать бота для обмена по принципам STM и передавать завершённые наборы на другой аккаунт. Эта функция аналогична команде loot, поэтому помните что для неё нужно чтобы был установлен пользователь с правами Master, а также может понадобиться правильный SteamTradeToken, ну и конечно аккаунту должно быть разрешено совершать обмены.

На сегодняшний день эта настройка поддерживает следующие типы:

Значение Имя Описание
3 FoilTradingCard Аналог TradingCard, но для металлических карточек
5 TradingCard Коллекционные карточки Steam, используемые для создания значков (обычных)

Обратите внимание, что независимо от настроек выше, ASF будет отправлять только предметы сообщества Steam (appID 753, contextID 6), поэтому все игровые предметы, подарки, и так далее, исключены из предложений обмена по определению.

Due to additional overhead of using this option, it's recommended to use it only on bot accounts that have a realistic chance of finishing sets on their own - for example, it makes no sense to activate if you're already using SendOnFarmingFinished preference in FarmingPreferences, SendTradePeriod or loot command on usual basis.

Если вы не уверены, как настроить этот параметр, лучше оставить ему значение по-умолчанию.


CustomGamePlayedWhileFarming

Параметр типа string со значением по-умолчанию null. Во время фарма ASF может показывать статус "В сторонней игре: CustomGamePlayedWhileFarming" вместо названия текущей игры. Это может оказаться полезным если вы хотите дать знать своим друзьям что вы фармите, но не хотите использовать Offline в OnlineStatus. Обратите внимание, ASF не может гарантировать порядок отображения статусов в Steam, поэтому этот статус может как работать так и не работать правильно. В частности, настраиваемое имя не будет отображаться в алгоритме фарма Complex, если ASF заполнит все 32 слота с играми, требующими часов для наигрывания. Значение по-умолчанию null выключает эту функцию.

ASF предоставляет несколько особых переменных, которые вы можете использовать в своём тексте. {0} будет заменено ASF на значение AppID игр(ы), которыя(ая) сейчас фармится, а {1} будет заменено ASF на значение GameName игр(ы), которые(ая) сейчас фармится.


CustomGamePlayedWhileIdle

Параметр типа string со значением по-умолчанию null. Аналогично CustomGamePlayedWhileFarming, но для ситуации когда ASF нечего делать (все карточки на аккаунте уже выбиты). Обратите внимание, ASF не может гарантировать порядок отображения статусов в Steam, поэтому этот статус может как работать так и не работать правильно. Если вы используете GamesPlayedWhileIdle вместе с этой опцией, то имейте в виду, что GamesPlayedWhileIdle получает приоритет, поэтому вы не можете объявить более чем 31 из них, в противном случае CustomGamePlayedWhileIdle не сможет занять слот для пользовательского имени. Значение по-умолчанию null выключает эту функцию.


Enabled

Параметр типа bool со значением по умолчанию false. Этот параметр определяет, что бот включен. Включенный бот (true) будет автоматически запускаться при запуске ASF, а выключенный бот (false) необходимо запускать вручную. По умолчанию каждый бот выключен, поэтому вы вероятно захотите переключить этот параметр в true на всех ботах, которые должны запускаться автоматически.


FarmingOrders

Параметр типа ImmutableList<byte> с пустым значением по умолчанию. Этот параметр задаёт предпочитаемый порядок фарма, которы ASF будет использовать для данного бота. На данный момент вам доступны следующие варианты порядка фарма:

Значение Имя Описание
0 Unordered Без сортировки, незначительно улучшает производительность ЦПУ
1 AppIDsAscending Пытаться сначала фармить игры с самым маленьким appID
2 AppIDsDescending Пытаться сначала фармить игры с самым большим appID
3 CardDropsAscending Пытаться сначала фармить игры с наименьшим количеством доступных для выпадения карточек
4 CardDropsDescending Пытаться сначала фармить игры с наибольшим количеством доступных для выпадения карточек
5 HoursAscending Пытаться сначала фармить игры с наименьшим количеством наигранных часов
6 HoursDescending Пытаться сначала фармить игры с наибольшим количеством наигранных часов
7 NamesAscending Пытаться фармить игры в алфавитном порядке, начиная с A
8 NamesDescending Пытаться фармить игры в обратном алфавитном порядке, начиная с Z
9 Random Пытаться фармить игры в совершенно случайном порядке (разном для каждого запуска программы)
10 BadgeLevelsAscending Пытаться сначала фармить игры с самым маленьким уровнем значка
11 BadgeLevelsDescending Пытаться сначала фармить игры с самым большим уровнем значка
12 RedeemDateTimesAscending Пытаться сначала фармить игры, которые добавлены на аккаунт раньше других
13 RedeemDateTimesDescending Пытаться сначала фармить игры, которые добавлены на аккаунт позже других
14 MarketableAscending Пытаться сначала фармить игры, карточки из которых нельзя продать
15 MarketableDescending Пытаться сначала фармить игры, карточки из которых можно продать

Поскольку этот параметр - массив, вы можете использовать несколько значений в нужном вам порядке. Например, вы можете добавить значения 15, 11 и 7 чтобы сортировать сначала по играм с продаваемыми предметами, затем по самому высокому уровню значка, и в конце - по алфавиту. Как вы можете догадаться, порядок на самом деле имеет значение, так как обратный порядок (7, 11 и 15) достигает совершенно другого результата (сначала сортирует игры по алфавиту, а из-за того, что названия игр уникальны, два других фактически бесполезны). Большинство пользователей вероятно будут использовать только один способ сортировки, но в случае если вам этого хочется - вы можете уточнить сортировку дополнительными параметрами.

Также обратите внимание на слово "пытаться" в описаниях выше - реальный порядок сильно зависит от выбранного алгоритма фарма карточек и сортировка будет влиять только на результаты, которые ASF посчитает эффективными с точки зрения производительности. Например, при выбранном алгоритме Simple, выбранные FarmingOrders будут полностью соблюдаться в текущей сессии фарма (поскольку у все игры в данном случае одинаковы с точки зрения производительности), а при алгоритме Complex реальный порядок зависит в первую очередь от наигранных часов и только потом сортируется согласно выбранному FarmingOrders. Это приведёт к различным результатам, поскольку игры в которых уже есть "время в игре" будут иметь приоритет над остальными, поэтому ASF будет предпочитать в первую очередь игры, у которых "время в игре" уже достигло требуемого в HoursUntilCardDrops, и только затем производить сортировку этих игр согласно выбранным FarmingOrders. Аналогично, как только у ASF закончатся игры с требуемым "временем в игре", остаток очереди будет сначала отсортирован по существующему "времени в игре" (поскольку это уменьшит время, требуемое для накрутки времени в этих играх до HoursUntilCardDrops). Следовательно, этот параметр - это только пожелание, которое ASF будет учитывать пока оно не влияет негативно на производительность (в противном случае из соображений производительности фарма всегда будут иметь приоритет перед FarmingOrders).

Существует также приоритетная очередь фарма, которая доступна через команду fq. Если он используется, то фактическая очередь сначала сортируется по производительности, затем по очереди фарма и, наконец, по вашему FarmingOrders.


FarmingPreferences

Параметр типа byte flags со значением по-умолчанию 0. This property defines ASF behaviour related to farming, and is defined as below:

Значение Имя
0 None
1 FarmingPausedByDefault
2 ShutdownOnFarmingFinished
4 SendOnFarmingFinished
8 FarmPriorityQueueOnly
16 SkipRefundableGames
32 SkipUnplayedGames
64 EnableRiskyCardsDiscovery
128 AutoSteamSaleEvent
256 AutoUnpackBoosterPacks

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

All of the options are described below.

FarmingPausedByDefault defines initial state of CardsFarmer module. Normally bot will automatically start farming when it's started, either because of Enabled or start command. Using FarmingPausedByDefault can be used if you want to manually resume automatic farming process, for example because you want to use play all the time and never use automatic CardsFarmer module - this works exactly the same as pause command.

ShutdownOnFarmingFinished allows you to shutdown bot once it's done farming. Normally ASF is "occupying" an account for the whole time of process being active. Когда на аккаунте закончен фарм карточек, ASF периодически проверяет (каждые IdleFarmingPeriod часов), не появились ли новые игры с карточками, чтобы продолжить фарм без необходимости перезапуска процесса. Это полезно для большинства пользователей, поскольку ASF продолжает фармить по мере необходимости. However, you may actually want to stop the process when given account is fully farmed, you can achieve that by using this flag. Если этот параметр включен, ASF будет выходить из аккаунта когда фарм на нём закончен, а значит не сможет периодически проверять или занимать его. Вам нужно решить, хотите ли вы чтобы ASF работал с данным аккаунтом всё время, или ASF должен останавливать его, когда закончин фарм.

This option makes the most sense to be combined with ShutdownIfPossible, so when all accounts are stopped, ASF will shutdown as well, putting your machine at rest and allowing you to schedule other actions, such as sleep or shutdown at the same moment of last card dropping.

SendOnFarmingFinished allows you to automatically send steam trade containing everything farmed up to this point to user with Master permission, which is very convenient if you don't want to bother with trades yourself. Эта функция аналогична команде loot, поэтому помните что для неё нужно чтобы был установлен пользователь с правами Master, а также может понадобиться правильный SteamTradeToken, ну и конечно аккаунту должно быть разрешено совершать обмены. В дополнение к запуску loot после окончания фарма, если эта функция активна, ASF будет также вызывать loot каждый раз при получении уведомления о получении новых предметов (только когда фарм не запущен), и после завершения каждого обмена при котором получены новые предметы(всегда). Это особенно удобно для передачи "по цепочке" предметов полученных от других людей на основной аккаунт. Обычно вам нужно использовать ASF 2FA вместе с этой функцией, хотя это не обязательно, если вы планируете своевременно обрабатывать подтверждения 2FA вручную.

FarmPriorityQueueOnly defines if ASF should consider for automatic farming only apps that you added yourself to priority farming queue available with fq commands. Если этот параметр включен, ASF будет пропускать все appID отсутствующие в списке, позволяя вам выбрать игры для автоматического фарма. Помните, что если вы не добавили ни одной игры в очередь, ASF будет нечего фармить на вашем аккаунте.

SkipRefundableGames defines if ASF should skip games that are still refundable from automatic farming. Возврат средств разрешён за игры, которые были куплены не более чем 2 недели назад через магазин Steam, и в которые наиграно менее 2 часов, это описано на странице "Возврат средств в Steam". By default, ASF ignores Steam refunds policy entirely and farms everything, as most people would expect. However, you can use this flag if you want to ensure that ASF won't farm any of your refundable games too soon, allowing you to evaluate those games yourself and refund if needed without worrying about ASF affecting playtime negatively. Пожалуйста, обратите внимание, что если вы включите этот параметр, игры купленные в магазине Steam не будут фармиться ASF в течение 14 дней с даты покупки, и это будет отображаться "На этом аккаунте нечего фармить!" если других игр для фарма на аккаунте нет.

SkipUnplayedGames defines if ASF should skip games that you didn't launch yet. Unplayed game in this context means that you have exactly no playtime recorded for it on Steam. If you use this flag, then such games will be skipped until Steam registers any playtime for them. This allows you to control better which games ASF is eligible to farm, skipping those that you didn't have a chance of trying out yet, keeping selected Steam features more useful - such as suggesting unplayed games to play.

EnableRiskyCardsDiscovery enables additional fallback which triggers when ASF is unable to load one or more of badge pages and is therefore unable to find games available for farming. В частности, на некоторых аккаунтах с большим количеством сбросов карт может возникнуть ситуация, когда загрузка страниц со значками становится невозможной (из-за накладных расходов), и на этих аккаунтах становится невозможным фарм просто потому, что мы не можем загрузить информацию, на основе которой мы можем начать процесс. For those handful cases, this option allows alternative algorithm to be used, which uses a combination of boosters possible to craft and booster packs the account is eligible for, in order to find potentially available games to idle, then spending excessive amount of resources for verifying and fetching required information, and attempting to start the process of farming on limited amount of data and information in order to eventually reach a situation when badge page loads and we'll be able to use normal approach. Обратите внимание, что при использовании этого резервного варианта ASF работает только с ограниченными данными, поэтому для ASF совершенно нормально находить гораздо меньше дропа, чем на самом деле — другой дроп будет найден на более позднем этапе процесса фарма.

Этот параметр называется "рискованным" по очень веской причине - он крайне медленный и требует значительного количества ресурсов (в том числе сетевых запросов) для работы, поэтому его не рекомендуется включать, особенно в долгосрочной перспективе. Этот параметр следует использовать только в том случае, если ранее было установлено, что ваш аккаунт страдает от невозможности загрузки страниц со значками и ASF не может работать с ним, постоянно не загружая необходимую для начала процесса информацию. Даже если мы постараемся максимально оптимизировать этот процесс, все равно не исключено, что данный параметр может привести к нежелательным последствиям, например, к временной и даже постоянной блокировке со стороны Steam за отправку слишком большого количества запросов и другие накладные расходы на серверы Steam. Поэтому предупреждаем заранее и предлагаем этот вариант абсолютно без каких-либо гарантий, вы используете его на свой страх и риск.

AutoSteamSaleEvent allows you to claim additional cards during Steam summer/winter sale events from browsing discovery queue each day. When this option is enabled, ASF will automatically check Steam discovery queue each 8 hours (starting in one hour since program start), and clear it if needed - that is, when there are additional card drops possible to obtain due to that. Не рекомендуется включать эту функцию если вы хотите выполнять это самостоятельно, обычно эта функция будет иметь смысл только на дополнительных аккаунтах. Обратите внимание, что из-за постоянных проблем Steam, и изменений в заданиях, мы не гарантируем что эта функция будет правильно работать, а значит вполне возможен вариант, когда она не будет работать вообще. Мы не принимаем никаких сообщений об ошибках, и не оказываем техническую поддержку связанную с этой функцией. Она предоставляется абсолютно без гарантий, и вы используете её на свой страх и риск.

AutoUnpackBoosterPacks will automatically unpack all booster packs upon receiving new items notification. This will allow you to immediately acquire additional card drops, which might be wanted scenario especially in combination with other options (e.g. SteamTradeMatcher or CompleteTypesToSend).


GamesPlayedWhileIdle

Параметр типа ImmutableHashSet<uint> с пустым значением по-умолчанию. Если ASF нечего фармить, вместо фарма будут запускаться указанные игры (appID) Steam. Запуск игр таким способом увеличивает "время в игре" для этих игр, но ничего кроме этого. Для корректной работы этой команды к вашему аккаунту Steam должны быть привязаны лицензии для всех указанных appID, включая бесплатные игры. Эта функция может использоваться одновременно с CustomGamePlayedWhileIdle с целью запуска игр и одновременно показе заданного статуса в Steam, но в этом случае, как и с CustomGamePlayedWhileFarming, реальный порядок отображения не гарантируется. Пожалуйста, обратите внимание, что Steam позволяет ASF запустить не более 32 appID одновременно, поэтому вы не можете указать больше в этом параметре.


HoursUntilCardDrops

Параметр типа byte со значением по-умолчанию 3. Этот параметр задаёт, есть ли у аккаунта ограничение на выпадение карточек, и если да - то на сколько часов. Ограничение на выпадение карточек означает что у данного аккаунта не выпадает карточек из игры пока в этой игре не наиграно как минимум HoursUntilCardDrops часов. К сожалению, нет никакого волшебного способа узнать, есть ли ограничение или нет, поэтому ASF полагается в этом на вас. Этот параметр влияет на используемый алгоритм фарма. Правильная настройка этого параметра максимизирует прибыль и минимизирует время, необходимое на фарм всех карточек. Помните о том, что нет очевидного ответа, какое значение вам использовать, это полностью зависит от вашего аккаунта. Похоже что старые аккаунты, с которых не запрашивали возврат средств не имеют ограничений на выпадение карт, поэтому им следует использовать значение ​0​, а новые аккаунты, и те кто запрашивал возврат средств за игры - имеют ограничение на 3 часа. Но это только теория, и не стоит полагаться на это как на правило. Значение по-умолчанию основано на том, что будет в данном случае меньшим злом, и подходит для большинства случаев.


LootableTypes

Параметр типа ImmutableHashSet<byte> со значением по умолчанию 1, 3, 5. Этот параметр определяет поведение ASF при отправке предметов от ботов аккаунту с правами Master - как инициированной вручную с помощью команды, так и автоматической, заданной в одном или более параметрах конфигурации. ASF будет отправлять в предложении обмена только предметы соответствующие LootableTypes, поэтому вы можете указать, что вы хотите получить в предложениях обмена, которые будет вам присылать бот.

Значение Имя Описание
0 Unknown Типы предметов, которые не попадают ни в одну из категорий ниже
1 BoosterPack Набор карточек, содержащий 3 случайные карточки из игры
2 Emoticon Эмоции, используемые в чате Steam
3 FoilTradingCard Аналог TradingCard, но для металлических карточек
4 ProfileBackground Фоны, используемые в вашем профиле Steam
5 TradingCard Коллекционные карточки Steam, используемые для создания значков (обычных)
6 SteamGems Самоцветы и мешки самоцветов, используемые для создания наборов карточек
7 SaleItem Особые предметы которые можно получить во время распродаж Steam
8 Consumable Особые используемые предметы, которые исчезают после использования
9 ProfileModifier Особые предметы, изменяющие внешний вид профиля Steam
10 Sticker Особые предметы, которые можно использовать в чате Steam
11 ChatEffect Особые предметы, которые можно использовать в чате Steam
12 MiniProfileBackground Особый фон для профиля Steam
13 AvatarProfileFrame Особая рамка для аватара профиля Steam
14 AnimatedAvatar Особый аватар профиля Steam
15 KeyboardSkin Специальный скин клавиатуры для Steam Deck
16 StartupVideo Особый видеоролик запуска для Steam Deck

Обратите внимание, что независимо от настроек выше, ASF будет отправлять только предметы сообщества Steam (appID 753, contextID 6), поэтому все игровые предметы, подарки, и так далее, исключены из предложений обмена по определению.

Значение по умолчанию основано на наиболее распространённом применении ботов, и пересылает только наборы карт и сами карты (включая металлические). Этот параметр позволяет вам изменить это поведение по своему вкусу. Обратите внимание, что все типы, кроме описанных выше, будут относиться к типу Unknown, это может быть важно в случае если Valve выпустит новый тип предметов Steam, такие предметы будут относиться к типу Unknown, пока их не добавят в какой-то новый тип (в будущих версиях программы). Именно поэтому в общем случае не рекомендуется включать тип Unknown в вашем LootableTypes, кроме случая когда вы знаете, что делаете, и понимаете, что ASF отправит вам весь инвентарь в предложении обмена если сеть Steam опять сломается и начнёт обозначать все предметы как Unknown. Настоятельно не рекомендуем добавлять тип Unknown в LootableTypes, даже если вы хотите пересылать всё (остальное).


MatchableTypes

Параметр типа ImmutableHashSet<byte> со значением по умолчанию 5. Этот параметр задаёт, какие типы предметов разрешено обменивать, если в параметре TradingPreferences включено значение SteamTradeMatcher. Типы определяются следующим образом:

Значение Имя Описание
0 Unknown Типы предметов, которые не попадают ни в одну из категорий ниже
1 BoosterPack Набор карточек, содержащий 3 случайные карточки из игры
2 Emoticon Эмоции, используемые в чате Steam
3 FoilTradingCard Аналог TradingCard, но для металлических карточек
4 ProfileBackground Фоны, используемые в вашем профиле Steam
5 TradingCard Коллекционные карточки Steam, используемые для создания значков (обычных)
6 SteamGems Самоцветы и мешки самоцветов, используемые для создания наборов карточек
7 SaleItem Особые предметы которые можно получить во время распродаж Steam
8 Consumable Особые используемые предметы, которые исчезают после использования
9 ProfileModifier Особые предметы, изменяющие внешний вид профиля Steam
10 Sticker Особые предметы, которые можно использовать в чате Steam
11 ChatEffect Особые предметы, которые можно использовать в чате Steam
12 MiniProfileBackground Особый фон для профиля Steam
13 AvatarProfileFrame Особая рамка для аватара профиля Steam
14 AnimatedAvatar Особый аватар профиля Steam
15 KeyboardSkin Специальный скин клавиатуры для Steam Deck
16 StartupVideo Особый видеоролик запуска для Steam Deck

Разумеется, обычно имеет смысл использовать в этом параметре только типы 2, 3, 4 и 5, поскольку только эти типы поддерживает STM. ASF включает в себя логику распознавания редкости предметов, поэтому можно безопасно обменивать смайлики и фоны, поскольку ASF посчитает честными только предмета одного и того же типа и из одной и той же игры, у которых одинаковая редкость.

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

Вам следует оставить этому параметру значение по-умолчанию 5, кроме тех случаев когда вы хорошо знаете, что делаете.


OnlineFlags

Параметр типа ushort flags со значением по умолчанию 0. Это свойство работает как дополнение к OnlineStatus и определяет дополнительные функции онлайн-присутствия, анонсированные в сети Steam. Требует OnlineStatus, отличного от Не в сети, и определяется как показано ниже:

Значение Имя Описание
0 None Нет специальных флагов присутствия в сети, по умолчанию
256 ClientTypeWeb Клиент использует веб-интерфейс
512 ClientTypeMobile Клиент использует мобильное приложение
1024 ClientTypeTenfoot Клиент использует big picture
2048 ClientTypeVR Клиент использует VR шлем

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

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

Если вы не уверены как настроить этот параметр - оставьте ему значение по-умолчанию ​0​.


OnlinePreferences

Параметр типа byte flags со значением по-умолчанию 0. This property can enable some additional online features on the Steam platform, and is defined as below:

Значение Имя Описание
0 None No special online preferences, default
1 IsSteamDeck Present itself as Steam Deck

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

Если вы не уверены как настроить этот параметр - оставьте ему значение по-умолчанию ​0​.


OnlineStatus

Параметр типа byte со значением по-умолчанию 1. Этот параметр задаёт статус в сообществе Steam, который будет указывать бот при входе в сеть Steam. На данный момент вы можете выбрать один из нижеприведенных статусов:

Имя Имя
0 Offline
1 Online
2 Busy
3 Away
4 Snooze
5 LookingToTrade
6 LookingToPlay
7 Invisible

Статус Offline чрезвычайно полезен для основных аккаунтов. Как вы уже должны знать, фарм игры отображает ваш статус в Steam как "В игре: XXX", что может ввести в заблуждение ваших друзей, которые подумают что вы играете в игру, которую вы просто фармите. Использование статуса Offline решает этот проблему - ваш аккаунт никогда не будет отображаться как "в игре", когда вы фармите карточки в ASF. Это возможно благодаря тому, что ASF может не входить в сообщество Steam но при этом продолжать работу, поэтому он запускает игры, подключившись к сети Steam но вообще не оповещая его о том, что мы онлайн. Помните, что игры запущенные в со статусом Offline всё равно учитываются в наигранное время, и отображаются в разделе "Недавняя активность" на странице вашего профиля.

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

Важно отметить, что ASF в режиме Offline не сможет принимать никакие команды через обычные чаты Steam, поскольку чат, как и наличие в сообществе вообще, полностью оффлайн. Решение этой проблемы - использовать режим Invisible, который работает похожим образом (не отображает статус), но сохраняет возможность получать и отвечать на сообщения (а также возможность отмечать уведомления как просмотренные и сообщения как прочитанные, как описано выше). Режим Invisible имеет смысл для дополнительных аккаунтов, которые вы не хотите раскрывать (с точки зрения статуса), но которым вы всё же хотите отправлять команды.

Однако, есть одна проблема со статусом Invisible - он не очень хорошо работает с основными аккаунтами. Проблема в том, что любая сессия Steam, со статусом online, раскрывает реальный статус, даже если сам ASF не делает этого. Это происходит из-за текущего ограничения/ошибки в сети Steam, которое невозможно починить со стороны ASF, поэтому если вы хотите пользоваться режимом Invisible, то вам необходимо проследить чтобы все другие сессии того же аккаунта тоже были в режиме Invisible. Это будет именно так для дополнительных аккаунтов, где ASF, скорее всего, единственная активная сессия, но на основном аккаунте, который вы практически всегда захотите видеть как Online, скрыв при этом активность ASF, и в этом случае режим Invisible будет полностью бесполезен для вас (мы рекомендуем использовать вместо этого режим Offline). Мы надеемся что это ограничение/ошибка будет со временем исправлена Valve, но не стоит ожидать что это произойдёт в ближайшее время...

Если вы не уверены, как правильно настроить этот параметр, рекомендуется использовать значение 0 (Offline) для основных аккаунтов и 1 (Online) для остальных.


PasswordFormat

Параметр типа byte со значением по-умолчанию 0 (PlainText). Это свойство определяет формат свойства SteamPassword и в настоящее время поддерживает значения, указанные в разделе security. Вы должны следовать инструкциям, указанным там, так как вам нужно убедиться, что свойство SteamPassword действительно включает пароль в соответствие с PasswordFormat. Другими словами, когда вы меняете PasswordFormat ваш SteamPassword должен уже быть в этом формате, а не только планироваться как таковой. Вам следует оставить этому параметру значение по-умолчанию ​0​, кроме тех случаев когда вы хорошо знаете, что делаете.

If you decide to change PasswordFormat of a bot that has already logged in to Steam network at least once, it's possible that you'll get one-time decrypt error on the next bot's start - this is caused by the fact that PasswordFormat is also used in regards to automatic encryption/decryption of sensitive properties in Bot.db database file. You can safely ignore that error, as ASF will be able to recover from this situation on its own. If it's happening on constant basis though, e.g. each restart, it should be investigated.


RedeemingPreferences

Параметр типа byte flags со значением по-умолчанию 0. Этот параметр определяет поведение ASF при активации ключей в Steam, и задаётся следующим образом:

Имя Имя Описание
0 None Никаких особых настроек для активации, по умолчанию
1 Forwarding Передавать ключи, которые не удалось активировать, другим ботам
2 Distributing Распределять все ключи между этим и другими ботами
4 KeepMissingGames Не передавать ключи для игр, которые (возможно) отсутствуют на аккаунте, оставлять их неиспользованными
8 AssumeWalletKeyOnBadActivationCode Считать что статус активации ключа BadActivationCode равнозначен статусу CannotRedeemCodeFromClient, и следовательно пытаться их активировать как коды для пополнения кошелька

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

Forwarding приведёт к тому, что бот будет передавать ключи, которые не удалось активировать, другим подключенным и запущенным ботам, у которых нет данной игры (если удалось проверить). Наиболее распространённая ситуация это передача это игры со статусом AlreadyPurchased(уже есть на аккаунте) другому боту, у которого нет этой игры, но это значение также поддерживает другие случаи, такие как DoesNotOwnRequiredApp(отсутствует базовая игра), RateLimited(слишком много попыток активации) or RestrictedCountry(ключ не может быть активирован в вашем регионе).

Distributing приведёт к тому, что все полученные ключи будут распределены между этим и другими ботами. Это означает, что каждый бот получит один ключ и списка. Обычно это используется только если вы активируете много ключей от одной и той же игры, и хотите равномерно распределить их по всем ботам, ситуация противоположная активации нескольких ключей от разных игр. Эта функция не имеет никакого смысла если вы активируете только один ключ в одной команде redeem (поскольку нет дополнительных ключей, которые можно распределить).

KeepMissingGames приведёт к тому, что бот будет игнорировать значение Forwarding если нет уверенности в том, что активируемый ключ от игры, которая уже есть на аккаунте. Это попросту означает, что Forwarding будет применять только к ключам, получившим статус AlreadyPurchased, не покрывая другие случаи, такие как DoesNotOwnRequiredApp, RateLimited и RestrictedCountry (см. выше). Обычно вам пригодиться это значение только для основного аккаунта, чтобы убедиться, что активируемые на нём ключи не будут переданы дальше если он временно получил статус RateLimited. Как вы можете догадаться из описания, это значение не будет иметь абсолютно никакого эффекта, если не включено значение Forwarding.

AssumeWalletKeyOnBadActivationCode приведёт к тому, что статус активации ключа BadActivationCode будет обрабатываться так же, как статус CannotRedeemCodeFromClient, и следовательно ASF будет пытаться активировать такие ключи как коды для пополнения кошелька. Это необходимо потому, что Steam может возвращать для кодов кошелька статус BadActivationCode (а не CannotRedeemCodeFromClient как это было раньше), в результате чего ASF не будет пытаться их активировать. Однако, мы рекомендуем не пользоваться этой настройкой, поскольку в результате ASF будет пытаться активировать все неверные ключи как коды для пополнения кошелька, что приведёт к излишнему количеству (потенциально неверных) запросов к службе Steam, со всеми возможными последствиями. Вместо этого мы рекомендуем пользоваться режимом ForceAssumeWalletKey для команды redeem^ когда вы знаете, что активируете коды пополнения кошелька, что включит необходимый механизм только при необходимости, по мере надобности.

Если вы включите и Forwarding и Distributing, вы получите сочетание передачи с распределением, то есть ASF будет сначала пытаться активировать один ключ на всех аккаунтах (передача) перед тем как переходить к следующему (распределение). Обычно такое сочетание нужно если вы хотите использовать Forwarding, но со сменой следующего бота для активации, вместо того чтобы перебирать всех ботов по порядку (как происходит при одном Forwarding). Этот вариант может быть полезен если вы знаете что большинство или все ключи от одной и той же игры, потому что в этой ситуации один Forwarding будет пытаться активировать их все сначала на пером боте (что имеет смысл если ключи от разных игр), а Forwarding + Distributing будет менять бота для следующего ключа, "передавая" задачу активации нового ключа следующему боту (что имеет смысл если все ключи для одной игры, пропускается бессмысленная попытка активации для каждого ключа).

Реальный порядок ботов для всех вариантов активации - по алфавиту, исключая ботов которые не доступны (не подключены, остановлены и тому подобное). Помните, что у Steam есть ограничени попыток активации, как для одного аккаунта, так и для одного IP, и каждая попытка активации не завершившаяся статусом OK увеличивает счётчик неудачных попыток. ASF прилагает все усилия, чтобы уменьшить число статусов AlreadyPurchased, например пытаясь избежать передачи ключа боту, у которого уже есть эта игра, но это не всегда работает из-за того как Steam работает с лицензиями. Использование флагов активации, таких как Forwarding или Distributing, всегда увеличивает ваш шанс на получение статуса RateLimited.

Также помните, что вы не можете передавать или распределять ключи ботам, для которых у вас нет прав доступа. Это должно быть очевидно, но убедитесь что у вас есть права как минимум Operator для всех ботов, которых вы хотите задействовать в процессе активации, например с помощью команды status ASF.


RemoteCommunication

Параметр типа byte flags со значением по-умолчанию 3. Это свойство определяет поведение ASF для каждого бота при взаимодействии с удаленными сторонними службами и определяется следующим образом:

Имя Имя Описание
0 None Запрещено взаимодействие с третьими сторонами, что делает некоторые функции ASF невозможными для использования
1 SteamGroup Позволяет взаимодействовать с группой ASF в Steam
2 PublicListing Позволяет общаться с листингом ASF STM для того, чтобы попасть в список, если пользователь включил SteamTradeMatcher в TradingPreferences

Обратите внимание что это параметр типа flags, и следовательно ему может быть присвоена любая комбинация приведенных выше значений. Check out json mapping if you'd like to learn more. Если вы не включите никаких флагов, будет использоваться вариант None.

Этот параметр включает не все сторонние коммуникации, предлагаемые ASF, а только те, которые не управляются другими настройками. Например, если вы включили автообновления ASF, ASF будет связываться как с GitHub (для загрузки), так и с нашим сервером (для проверки контрольной суммы), в соответствии с вашей конфигурацией. Аналогично, включение MatchActively в TradingPreferences предполагает связь с нашим сервером для получения списка ботов, которые необходимы для этой функции.

Дальнейшее объяснение по этому вопросу доступно в разделе remote communication. Если у вас нет причин редактировать этот параметр, рекомендуется оставить ему значение по-умолчанию.


SendTradePeriod

Параметр типа byte со значением по-умолчанию 0. This property works very similar to SendOnFarmingFinished preference in FarmingPreferences, with one difference - instead of sending trade when farming is done, we can also send it every SendTradePeriod hours, regardless of how much we have to farm left. Это полезно, если вы хотите получать предметы с дополнительных аккаунтов на регулярной основе, не дожидаясь окончания фарма. Значение по-умолчанию ​0​ отключает эту функцию, если вы хотите чтобы ваш бот отсылал вам предложения обмена, например, каждый день - поставьте сюда значение 24.

Обычно вам нужно использовать ASF 2FA вместе с этой функцией, хотя это не обязательно, если вы планируете своевременно обрабатывать подтверждения 2FA вручную. Если вы не уверены как настроить этот параметр - оставьте ему значение по-умолчанию ​0​.


SteamLogin

Параметр типа string со значением по-умолчанию null. В этом параметре задаётся ваш логин Steam - тот, с которым вы входите в Steam. Помимо задания логина в этом параметре, вы можете оставить ему значение null если хотите вводить логин каждый раз при запуске ASF вместо хранения его в конфигурационном файле. Это может быть полезным, если вы не хотите сохранять конфиденциальные данные в конфигурационном файле.


SteamMasterClanID

Параметр типа ulong со значением по-умолчанию 0. В этом параметре задаётся steamID группы Steam, к которой бот должен автоматически присоединяться, и входить в чат. Вы можете узнать steamID вашей группы перейдя на её страницу, а затем добавив /memberslistxml?xml=1 в конец ссылки в адресной строке, чтобы ссылка приобрела такой вид. Затем вы сможете получить steamID из результирующей выдачи (в некоторых браузерах может понадобиться включить режим просмотра исходного кода), он находится в теге <groupID64>. В примере выше это будет 103582791440160998. В добавок к попытке присоединиться к группе на старте, бот будет также автоматически принимать приглашения в эту группу, что даёт вам возможность пригласить бота вручную, если ваша группа не открытая. Если у вас нет группы для ваших ботов, вам следует оставить этому параметру значение по-умолчанию, равное 0.


SteamParentalCode

Параметр типа string со значением по-умолчанию null. В этом параметре задаётся ваш PIN для семейного просмотра. ASF требуется доступ к ресурсам, защищённым средствами семейного просмотра, если вы пользуетесь этим функционалом Steam - вам следует указать ваш PIN для корректной работы ASF. Значение по-умолчанию null​ означает что для просмотра содержимого на этом аккаунте не нужен PIN семейного просмотра, это то значение которое вам нужно если вы не пользуетесь этой функцией в Steam.

В некоторых случаях, ASF также может сгенерировать верный код семейного просмотра Steam самостоятельно, хотя это требует значительных ресурсов ОС и дополнительного времени, не говоря уже о том, что успех не гарантируется, поэтому мы рекомендуем не полагаться на эту функцию и вместо этого указать верное значение в параметре SteamParentalCode конфигурационного файла для использования его в ASF. Если ASF определит, что требуется PIN-код, и он не сможет генерировать его самостоятельно, он попросит вас ввести PIN-код.


Пароль Steam

Параметр типа string со значением по-умолчанию null. В этом параметре задаётся ваш пароль Steam - тот, с которым вы входите в Steam. Помимо задания пароля в этом параметре, вы можете оставить ему значение null если хотите вводить пароль каждый раз при запуске ASF вместо хранения его в конфигурационном файле. Это может быть полезным, если вы не хотите сохранять конфиденциальные данные в конфигурационном файле.


SteamTradeToken

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

Чтобы найти ваш токен, вы должны зайти в Steam с аккаунта, который указан как Master, перейти сюда и посмотреть на свою ссылка на обмен. Токен, который вы ищете, состоит из 8 символов после &token= в вашей ссылке на обмен. Вам нужно скопировать эти 8 символов сюда, в параметр SteamTradeToken. Не нужно указывать целиком ссылку на обмен, и даже часть &token=, только сам токен (8 символов).


SteamUserPermissions

Параметр типа ImmutableDictionary<ulong, byte> с пустым значением по-умолчанию. Этот параметр - ассоциативный массив, задающий соответствие между пользователем Steam, указанным с помощью 64-битного Steam ID, и числом типа byte, которое задаёт его права для данного бота ASF. На данный момент доступны следующие права:

Имя Имя Описание
0 None Никаких особых прав, это зарезервированное значение, которое нужно только чтобы описывать те steam ID, которые отсутствуют в этом массиве - нет необходимости задавать какой-то аккаунт с такими правами
1 FamilySharing Даёт минимальный доступ для пользователей использующих семейный доступ. Опять же, это скорее зарезервированное значение, поскольку ASF способен автоматически обнаруживать каким steam ID разрешён доступ к вашей библиотеке
2 Operator Даёт основные права доступа к боту, в основном для активации ключей и добавления бесплатных лицензий
3 Master Даёт полный доступ к данному боту

Если коротко, этот параметр позволяет вам управлять разрешениями для выбранных пользователей. Разрешения важны для доступа к командам, но также для активации различных функций ASF, таких как принятие предложений обмена. Например, вы можете объявить свой аккаунт как Master, и дать права Operator 2-3 своим друзьям, чтобы они могли активировать ключи на ваших ботах, но при этом не могли, например, остановить их. Благодаря этому вы легко можете назначать права выбранным пользователям и давать им доступ к выбранным вами ботам до определённой вами степени.

Мы рекомендуем указать только одного пользователя как Master, и сколько захотите - как Operator и ниже. While it's technically possible to set multiple Masters and ASF will work correctly with them, for example by accepting all of their trades sent to the bot, ASF will use only one of them (with lowest steam ID) for every action that requires a single target, for example a loot request, so also properties like SendOnFarmingFinished preference in FarmingPreferences or SendTradePeriod. Если вы хорошо понимаете эти ограничения, особенно тот факт что запрос loot всегда будет отсылать предметы аккаунту Master с самым маленьким steam ID, независимо от того, кто из Masterов отдал эту команду - вы можете задать здесь несколько пользователей с правами Master, но мы всё же рекомендуем схему с одним Master.

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


TradeCheckPeriod

Параметр типа byte со значением по-умолчанию 60. Обычно ASF обрабатывает поступающие торговые предложения сразу после получения уведомления о них, но иногда из-за сбоев в работе Steam не может сделать это в тот же момент, и такие торговые предложения остаются без внимания до следующего уведомления о торговле или перезапуска бота, что может привести к отмене сделок или недоступности предметов в это позднее время. Если этот параметр имеет ненулевое значение, то ASF будет дополнительно проверять наличие таких незавершенных сделок каждые TradeCheckPeriod минут. Значение по умолчанию выбрано с учетом баланса между дополнительными запросами к серверам steam и потерей входящих сделок. Однако если вы используете ASF только для работы с карточками и не планируете автоматически обрабатывать входящие сделки, вы можете установить значение 0, чтобы полностью отключить эту функцию. С другой стороны, если ваш бот участвует в публичном ASF's STM listing или предоставляет другие автоматизированные услуги в качестве торгового бота, возможно, вам стоит уменьшить этот параметр до 15 минут или около того, чтобы своевременно обрабатывать все сделки.


TradingPreferences

Параметр типа byte flags со значением по-умолчанию 0. Этот параметр определяет поведение ASF при получении предложений обменов, и задаётся следующим образом:

Имя Имя Описание
0 None Никаких особых настроек для обменов, по умолчанию
1 AcceptDonations Принимаются предложения обменов, в которых бот не отдаёт никаких предметов
2 SteamTradeMatcher Пассивно участвует в предложениях обменов по правилам STM. Ознакомьтесь с разделом "Обмены" чтобы узнать больше
4 MatchEverything Требует, чтобы был задан SteamTradeMatcher, и в сочетании с ним - также принимаются "плохие" сделки в дополнение к "хорошим" и "нейтральным"
8 DontAcceptBotTrades Не принимаются автоматически предложения обмена, отправленные по команде loot другими ботами
16 MatchActively Активно участвует в предложениях обменов по правилам STM. Ознакомьтесь с разделом ItemsMatcherPlugin для дополнительной информации

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

Дальнейшее объяснение логики работы ASF с предложениями обмена, и описание всех доступных флагов вы найдёте в разделе "Обмены".


TransferableTypes

Параметр типа ImmutableHashSet<byte> со значением по умолчанию 1, 3, 5. Это свойство определяет, какие типы предметов Steam будут рассматриваться для передачи между ботами во время команды transfer. ASF будет отправлять в предложении обмена только предметы соответствующие TransferableTypes, поэтому вы можете указать, что вы хотите получить в предложениях обмена, отправленных одному из ваших ботов.

Имя Имя Описание
0 Unknown Типы предметов, которые не попадают ни в одну из категорий ниже
1 BoosterPack Набор карточек, содержащий 3 случайные карточки из игры
2 Emoticon Эмоции, используемые в чате Steam
3 FoilTradingCard Аналог TradingCard, но для металлических карточек
4 ProfileBackground Фоны, используемые в вашем профиле Steam
5 TradingCard Коллекционные карточки Steam, используемые для создания значков (обычных)
6 SteamGems Самоцветы и мешки самоцветов, используемые для создания наборов карточек
7 SaleItem Особые предметы которые можно получить во время распродаж Steam
8 Consumable Особые используемые предметы, которые исчезают после использования
9 ProfileModifier Особые предметы, изменяющие внешний вид профиля Steam
10 Sticker Особые предметы, которые можно использовать в чате Steam
11 ChatEffect Особые предметы, которые можно использовать в чате Steam
12 MiniProfileBackground Особый фон для профиля Steam
13 AvatarProfileFrame Особая рамка для аватара профиля Steam
14 AnimatedAvatar Особый аватар профиля Steam
15 KeyboardSkin Специальный скин клавиатуры для Steam Deck
16 StartupVideo Особый видеоролик запуска для Steam Deck

Обратите внимание, что независимо от настроек выше, ASF будет отправлять только предметы сообщества Steam (appID 753, contextID 6), поэтому все игровые предметы, подарки, и так далее, исключены из предложений обмена по определению.

Значение по умолчанию основано на наиболее распространённом применении ботов, и пересылает только наборы карт и сами карты (включая металлические). Этот параметр позволяет вам изменить это поведение по своему вкусу. Обратите внимание, что все типы, кроме описанных выше, будут относиться к типу Unknown, это может быть важно в случае если Valve выпустит новый тип предметов Steam, такие предметы будут относиться к типу Unknown, пока их не добавят в какой-то новый тип (в будущих версиях программы). Именно поэтому в общем случае не рекомендуется включать тип Unknown в вашем TransferableTypes, кроме случая когда вы знаете, что делаете, и понимаете, что ASF отправит вам весь инвентарь в предложении обмена если сеть Steam опять сломается и начнёт обозначать все предметы как Unknown. Настоятельно не рекомендуем добавлять тип Unknown в TransferableTypes, даже если вы собираетесь пересылать весь инвентарь.


UseLoginKeys

Параметр типа bool со значением по-умолчанию true. Этот параметр задаёт, должен ли ASF использовать механизм ключей авторизации для этого аккаунта Steam. Механизм ключей авторизации подобен функции "Запомнить мой пароль" официального клиента Steam, он делает возможным для ASF сохранить временный одноразовый ключ авторизации для следующего подключения, снимая необходимость в пароле, коде Steam Guard или 2ФА если сохранённый ключ авторизации верный. Ключ авторизации хранится в файле BotName.db и обновляется автоматически. Поэтому вам не нужно вводить пароль/код SteamGuard/код 2ФА после того как вы зашли в ASF хотя бы раз.

Ключи авторизации по-умолчанию используются для вашего удобства, чтобы вам не нужно было вводить SteamPassword и коды SteamGuard или 2ФА (если вы не пользуетесь 2ФА ASF) при каждом входе. Это превосходная альтернатива, поскольку ключ авторизации может быть использован только один раз и никоим образом не раскрывает ваш пароль. Точно такой же метод используется самим клиентом Steam, который сохраняет имя вашего аккаунта и ключ авторизации для следующего входа, что по сути то же самое что использование SteamLogin с UseLoginKeys и пустым SteamPassword в ASF.

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


UserInterfaceMode

Параметр типа byte со значением по-умолчанию 0. This property specifies user interface mode that the bot will be announced with after logging in to the Steam network. It might influence how the account is visible e.g. on the Steam chat, if your presence allows that through OnlineStatus. В настоящее время вы можете выбрать один из режимов ниже:

Имя Имя Описание
0 VGUI Default Steam client mode
1 Tenfoot Big picture mode
2 Мобильный Steam mobile app
3 Web Web browser session
4 ClientUI
5 MobileChat Steam mobile chat app
6 EmbeddedClient

Not all modes might have an effect. Also, you might be interested in checking OnlinePreferences, since some additional features are enabled there. Если вы не уверены как настроить этот параметр - оставьте ему значение по-умолчанию ​0​.


Файловая структура

ASF использует достаточно простую файловую структуру.

├── 📁 config
│     ├── ASF.json
│     ├── ASF.db
│     ├── Bot1.json
│     ├── Bot1.db
│     ├── Bot2.json
│     ├── Bot2.db
│     └── ...
├── ArchiSteamFarm.dll
├── log.txt
└── ...

Чтобы перенести ASF в новое место, например на другой ПК, достаточно скопировать только папку config, и это же рекомендуется для создания любых "резервных копий ASF", поскольку всё остальное (программу) вы всегда можете скачать с GitHub, не опасаясь повредить внутренние файлы ASF, например из-за неудачного создания резервной копии.

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

Папка config это место где хранятся настройки ASF, включая настройки для всех ботов.

ASF.json это файл глобальных настроек ASF. Этот конфигурационный файл используется для настройки поведения ASF как процесса, эти настройки влияют на всех ботов и на саму программу. В нём вы найдёте глобальные параметры, такие как настройка владельца ASF, авто-обновлений или режима отладки.

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

Кроме конфигурационных файлов, ASF также хранит в папке config свои базы данных.

ASF.db это файл глобальной базы данных ASF. Она служит глобальным постоянным хранилищем, и используется для хранения различной информации, необходимой процессу ASF, такой как IP-адреса локальных адресов Steam. Вам не следует редактировать этот файл.

BotName.db это база данных конкретного бота. Этот файл используется для хранения важных данных о конкретном боте в постоянном хранилище, таких как ключ авторизации или 2ФА ASF. Вам не следует редактировать этот файл.

BotName.keys это особый файл, который может использоваться для импорта ключей в модуль фоновой активации. Это не обязательный файл, и не создаётся, а только распознаётся ASF. Этот файл автоматически удаляется после того как ключи успешно импортированы.

BotName.maFile это особый файл, который может использоваться для импорта 2ФА ASF. Это не обязательный файл, и не создаётся, а только распознаётся ASF если ваш бот BotName ещё не имеет подключенного 2ФА ASF. Этот файл автоматически удаляется после того как 2ФА ASF успешно импортирован.


Типы параметров в JSON

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

Мы настоятельно рекомендуем использовать Генератор Конфигураций для создания файлов конфигурации - он берёт на себя большую часть низкоуровневых задач (таких как проверка типов), так что вам остаётся только ввести правильные значения, и вам не придётся разбираться в типах переменных, описанных ниже. Этот раздел в основном для людей, создающих/редактирующих файлы конфигурации вручную, чтобы они знали, какие значения можно использовать.

Типы используемые в ASF это встроенные типы C#, описанные ниже:


bool - логический тип, принимающий только значения true и false.

Пример: "Enabled": true


byte - Тип беззнакового байта, принимающий только целые числа из диапазона от ​0​ до 255 (включительно).

Пример: "ConnectionTimeout": 90


ushort - Тип беззнакового короткого целого, принимающий только целые числа из диапазона от ​0​ до 65535 (включительно).

Пример: "WebLimiterDelay": 300


uint - Тип беззнакового целого, принимающий только целые числа из диапазона от ​0​ до 4294967295 (включительно).


ulong - Тип беззнакового длинного целого, принимающий только целые числа от ​0​ до 18446744073709551615 (включительно).

Пример: "SteamMasterClanID": 103582791440160998


string - Строковый тип, принимающий любую последовательность символов, включая пустую последовательность "" и null. Пустая последовательность и значение null обрабатываются ASF одинаково, поэтому вы можете выбрать на свой вкус, какое значение использовать (мы предпочитаем null).

Примеры: "SteamLogin": null, "SteamLogin": "", "SteamLogin": "MyAccountName"


Руководство? - Тип Nullable UUUID, в JSON кодировке как строка. UUID состоит из 32 шестнадцатеричных символов, в диапазоне от 0 до 9 и a до f. ASF принимает различные допустимые форматы - строчные буквы, заглавные буквы, с и без тире. В дополнение к действующему UUID, так как это свойство является nullable, специальное значение null принято указывать на отсутствие UUID для предоставления.

Примеры: "LicenseID": null, "LicenseID": "f6a0529813f74d119982eb4fe43a9a24"


ImmutableList<valueType> - Неизменяемая коллекция (набор) уникальных значений заданного типа valueType. В JSON задаётся как массив элементов заданного типа valueType. ASF использует тип List чтобы показать что этот параметр поддерживает указание нескольких значений, и что их порядок может иметь значение.

Пример для типа ImmutableList<byte>: "FarmingOrders": [15, 11, 7]


ImmutableHashSet<valueType> - Неизменяемая коллекция (набор) уникальных значений заданного типа valueType. В JSON задаётся как массив элементов заданного типа valueType. ASF использует HashSet чтобы показать что данный параметр имеет смысл только для уникальных значений, поэтому он будет намеренно игнорировать любые возможные дубликаты во время разбора файла (если вы их туда случайно добавите).

Пример для ImmutableHashSet<uint>: "Blacklist": [267420, 303700, 335590]


ImmutableDictionary<keyType, valueType> - неизменяемый ассоциативный массив, задающий соответствие уникального ключа типа keyType значению типа valueType. В JSON задаётся как объект с парами ключ-значение. Помните, что в этом случае keyType всегда берётся в кавычки, даже если это значение таких типов как ulong. Также здесь имеется строгое требование чтобы ключ был уникальным в ассоциативном массиве, на этот раз обусловленное также форматом JSON.

Пример ImmutableDictionary<ulong, byte>: "SteamUserPermissions": { "76561198174813138": 3, "76561198174813137": 1 }


flags - Флаговый атрибут объединяет несколько разных значений в одно конечное значение параметра с помощью битовых операций. Это позволяет выбирать любые комбинации допустимых значений одновременно. Окончательное значение формируется как сумма значений всех выбранных опций.

Например, вам даны следующие значения:

Имя Имя
0 None
1 A
2 B
4 C

Использование комбинации B + C даст в результате значение 6, использование A + C даст значение 5, использование C даст значение 4 и так далее. Это позволяет вам создавать любые возможные комбинации допустимых значений - если вы решите объединить их все, создав None + A + B + C, вы получите конечное значение 7. Обратите внимание, что флаг со значением ​0​ включён по-умолчанию во все возможные комбинации, поэтому чаще всего этот флаг не задаёт ничего важного (как например None).

Как видите, в примере выше у нас есть 3 доступных флага, которые можно включить или выключить (A, B, C), и 8 возможных комбинаций суммарно:

  • None -> 0
  • A -> 1
  • B -> 2
  • A + B -> 3
  • C -> 4
  • A + C -> 5
  • B + C -> 6
  • A + B + C -> 7

Пример: "SteamProtocols": 7


Совместимость типов

Из-за ограничений JavaScript, связанных с невозможностью должным образом сериализовать простые поля ulong в JSON при использовании веб-генератора ConfigGenerator, поля ulong будут отображаться как строки с префиксом s _ в полученном конфиге. Это включает, например, "SteamOwnerID": 76561198006963719, который будет записан нашим ConfigGenerator как "s_SteamOwnerID": "76561198006963719". В ASF автоматически поддерживает такие строковые параметры, поэтому записи с префиксом s_ в ваших конфигурационных являются верными. Если вы создаёте конфигурационные файлы самостоятельно, мы рекомендуем по возможности придерживаться исходных полей ulong, но если вы по какой-то причине не можете этого сделать, вы можете также действовать по этой схеме и кодировать их как строки добавляя к названию префикс s_. Мы надеемся со временем обойти это ограничение JavaScript.


Совместимость конфигураций

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

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

В связи с этим ASF автоматически мигрирует/оптимизирует ваши конфигурации, переформатируя их и удаляя поля, содержащие значения по умолчанию. Вы можете отключить это поведение при помощи **аргумента командной строки ** --no-config-migrate, если у вас есть конкретная причина, Например, вы предоставляете конфигурационные файлы только для чтения, и вы не хотите, чтобы ASF модифицировал их.


Автоматическая перезагрузка

ASF узнает об изменении конфигураций «на лету» — благодаря этому ASF автоматически:

  • Создаёт (и при необходимости запускает) нового бота, если вы создали для него файл конфигурации
  • Останавливает (при необходимости) и удаляет старого бота, если вы удалили его файл конфигурации
  • Останавливает (и при необходимости запускает) любого бота, если вы изменили его файл конфигурации
  • Перезапускает (при необходимости) бота с новым именем, если вы переименовали файл конфигурации

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

В добавок к этому, ASF автоматически перезапустится (если это разрешено в параметре AutoRestart) если вы измените файл глобальной конфигурации ASF ASF.json. Также, программа завершится если вы удалите или переименуете его.

Вы можете отключить это поведение с помощью [аргумента командной строки](https://github.com/JustArchiNET/ArchiSteamFarm/wiki/Command -line-arguments#arguments) --no-config-watch, если у вас есть конкретная причина, например, вы не хотите, чтобы ASF реагировал на изменения файла в папке config.

Clone this wiki locally