Implementing Discord RPC/ru
Эта подстраница используется на странице Implementing Discord RPC для отображения содержимого на русский (Russian).
Если вы внесли изменения в языковую подстраницу, не забудьте очистить основную страницу, нажав на кнопку справа. В противном случае её содержимое не обновится.
Нужно сделать: Эта реализация довольно проста, поэтому любые изменения или дополнения будут высоко оценены!
Внедрение Discord RPC в Source Engine — это просто, и это делает ваш мод более заметным, так как ваша игровая активность может быть увидена через Discord.
Contents
- 1 Что такое Discord RPC?
- 2 Установка
- 3 Настройка
- 4 Заключение
Что такое Discord RPC?
Discord RPC — это библиотека служащая для коммуникации вашей игры с запущенным на вашем компьютере клиентом Discord’a. Это работает на Windows, MacOS и Linux. Вы можете использовать библиотеку напрямую, если хотите, или использовать ее в качестве руководства по написанию своей собственной, если она не подходит для вашей игры как есть.
Ниже приведен пример использования этой статьи в качестве основы с видимыми изменениями:
Установка
Наперво, вам нужно скачать последнюю версию Discord RPC. Вы можете сделать это перейдя в GitHub репозиторий Discord’a. И скачать последнюю версию discord-rpc-win.zip, на момент написания статьи мы будем использовать версию v3.3.0. После завершения загрузки, откройте архив, перейдите в «win32-dynamic/lib/» и извлеките discord-rpc.lib в ваш мод /src/lib/public/, после того как с этим будет покончено, сделайте тоже самое с зависимыми файлами, в открытом архиве перейдите на шаг назад и откройте директорию include, теперь извлеките discord_rpc.h и discord_register.h в /src/public/. Теперь, заключающий шаг, снова перейдите на шаг назад в открытом архиве и откройте bin директорию, извлеките discord-rpc.dll в /bin директорию вашего мода. Для примера /steamapps/sourcemods/YourMod/bin/.
Настройка
Теперь, когда установка завершена, время настроить нашу систему. Здесь не так уж много нужно сделать, но это необходимый шаг, который вам придется сделать, дабы реализация работала.
Для начала, перейдите в /src/vpc_scripts/ и откройте source_dll_win32_base.vpc в вашем любимом текстовом редакторе (Лично я использую Notepad++). После того, как вы открыли файл, опуститесь в самый вниз до $Folder «Link Libraries» и под $Implib «$LIBPUBLIC\vstdlib» добавьте $Lib «$LIBPUBLIC\discord-rpc» . После того, как вы изменили VPC скрипт, не забудьте перезапустить createallprojects.bat и/или creategameprojects.bat прежде чем продолжить, в ином случае при сборке могут возникнуть ошибки.
Все, что нужно сделать — запустить систему Discord RPC при запуске модификации. Для того чтобы сделать это, откройте cdll_client_int.cpp и в самом низу списка заголовочных файлов, добавьте #include «discord_rpc.h» и #include , далее под
static ConVar s_cl_class("cl_class", "default", FCVAR_USERINFO|FCVAR_ARCHIVE, "Default class when joining a game");
// Discord RPC static ConVar cl_discord_appid("cl_discord_appid", "123456789123456789", FCVAR_DEVELOPMENTONLY | FCVAR_CHEAT); static int64_t startTimestamp = time(0);
где номера после cl_discord_appid , это RPC AppID вашего приложения, чтобы настроить RPC клиент, перейдите суда, как только вы настроите приложение, номер, который вам нужно поместить после cl_discord_appid будет находится в «APPLICATION ID», смотрите в разделе «General Information».
Как только это будет сделано, добавьте следующее выше CHLClient::CHLClient()
//----------------------------------------------------------------------------- // Discord RPC //----------------------------------------------------------------------------- static void HandleDiscordReady(const DiscordUser* connectedUser) DevMsg("Discord: Connected to user %s#%s - %s\n", connectedUser->username, connectedUser->discriminator, connectedUser->userId); > static void HandleDiscordDisconnected(int errcode, const char* message) DevMsg("Discord: Disconnected (%d: %s)\n", errcode, message); > static void HandleDiscordError(int errcode, const char* message) DevMsg("Discord: Error (%d: %s)\n", errcode, message); > static void HandleDiscordJoin(const char* secret) // Not implemented > static void HandleDiscordSpectate(const char* secret) // Not implemented > static void HandleDiscordJoinRequest(const DiscordUser* request) // Not implemented >
Теперь пролистайте вниз до CHLClient::Init( . ) и добавьте следующее выше return true; внизу функции.
// Discord RPC DiscordEventHandlers handlers; memset(&handlers, 0, sizeof(handlers)); handlers.ready = HandleDiscordReady; handlers.disconnected = HandleDiscordDisconnected; handlers.errored = HandleDiscordError; handlers.joinGame = HandleDiscordJoin; handlers.spectateGame = HandleDiscordSpectate; handlers.joinRequest = HandleDiscordJoinRequest; char appid[255]; sprintf(appid, "%d", engine->GetAppID()); Discord_Initialize(cl_discord_appid.GetString(), &handlers, 1, appid); if (!g_bTextMode) DiscordRichPresence discordPresence; memset(&discordPresence, 0, sizeof(discordPresence)); discordPresence.state = "In-Game"; discordPresence.details = "Main Menu"; discordPresence.startTimestamp = startTimestamp; discordPresence.largeImageKey = "ModImageHere"; Discord_UpdatePresence(&discordPresence); >
«ModImageHere» это ключ изображения, помните ту старинцу разработчика Discord на которой вы были ранее, где настраивали свое приложение? Вернитесь туда и зайдите на страницу приложения, теперь, слева в списке, перейдите в «Rich Presence» и нажмите на «Art Assets», после, на «Add Image(s)». Добавьте изображение, которое вы хотите использовать для своего мода, и независимо от того, как вы назовете это изображение, это имя, послужит для «ModImageHere» . Для примера, вот как это будет выглядеть, в мое случае very_cool_pic является «ModImageHere» .
Теперь, когда с этим покончено, давайте перейдем к CHLClient::Shutdown( void ) функции, здесь мы добавим метод Shutdown, добавим его ниже #endif для WORKSHOP_IMPORT_ENABLED
// Discord RPC Discord_Shutdown();
Теперь спуститесь еще ниже, к CHLClient::LevelInitPreEntity( . ) и выше комментария для g_RagdollLVManager.SetLowViolence( pMapName ); добавьте
// Discord RPC if (!g_bTextMode) DiscordRichPresence discordPresence; memset(&discordPresence, 0, sizeof(discordPresence)); char buffer[256]; discordPresence.state = "In-Game"; sprintf(buffer, "Map: %s", pMapName); discordPresence.details = buffer; discordPresence.largeImageKey = "ModImageHere"; Discord_UpdatePresence(&discordPresence); >
Теперь добавим последний кусочек кода в CHLClient::LevelShutdown( void ) . Ниже
gHUD.LevelShutdown();
// Discord RPC if (!g_bTextMode) DiscordRichPresence discordPresence; memset(&discordPresence, 0, sizeof(discordPresence)); discordPresence.state = "In-Game"; discordPresence.details = "Main Menu"; discordPresence.startTimestamp = startTimestamp; discordPresence.largeImageKey = "ModImageHere"; Discord_UpdatePresence(&discordPresence); >
Заключение
Установка и настройка завершены! Попробуйте запустить ваш мод и проверить Discord статус, теперь загрузите карту и проверьте его снова!
This implementation works on Source SDK 2013 (SP/MP), as well as Source SDK 2007 (thanks to the IOSoccer team for testing!). Эта реализация работает на Source SDK 2013 (SP/MP), а также на Source SDK 2007 (спасибо IOSoccer team за тестирование)
- Russian
- TODO
Simple Discord RPC — интеграция с дискорд [1.20.2] [1.19.4] [1.18.2] [1.17.1] [1.16.5] [1.15.2] [1.12.2]
Simple Discord RPC — мод, который показывает вашу игровую активность в discord. Он может показывать на каком сервере вы играете, или в каком мире находитесь. Работает из коробки, но имеет очень гибкую настройку. также в новости вы найдёте конфиг-файл с переводом на русский язык и гайд по редактированию вручную.
Simple Discord RPC показывает ваш статус в discord. Умеет показывать что именно вы делаете в игре, на каком сервере играете, в каком биоме или на каких координатах. В отличии от Simple Discord Rich Presence не требует настройки и сложных махинаций для работы. Он выполняет все свои функции сразу после установки, но делает это на английском. Сейчас я расскажу как его перевести и настроить по вкусу:
Все настройки мода находятся в файле «simple-rpc.json», который расположен в папке .minecraft/config.
В нём всё разделено на блоки: main_menu, server_list и т.д. Для каждого блока подписи можно настроить отдельно, или вовсе отключить конкретный блок (под названием блока в строке «enabled» меняем «true» на «false»).
![Simple Discord RPC - интеграция с дискорд [1.20.2] [1.19.4] [1.18.2] [1.17.1] [1.16.5] [1.15.2] [1.12.2]](https://ru-minecraft.ru/uploads/posts/2021-04/medium/1617636588_blok-konfig.png)
На скриншоте выделен блок подписей когда игрок в одиночной игре
теперь по пунктам:
Остальные пункты я не затрагивал, и не знаю зачем именно они надо.
Не спешите в блокнот, ведь если вы просто измените всё в блокноте, то вместо букв вы увидите это:
Для того чтобы мод понял что вы ввели русские буквы, надо изменить кодировку конфиг-файла на UTF-8. Я знаю лишь один метод менять кодировку — программа Notepad++. Но в моём конфиг-файле кодировка уже заменена, так что сможете редактировать его блокнотом. А вообще в Notepad++ это делается так:
Не забудьте сохранить файл чтобы значок возле имени стал синим:
![Simple Discord RPC - интеграция с дискорд [1.20.2] [1.19.4] [1.18.2] [1.17.1] [1.16.5] [1.15.2] [1.12.2]](https://ru-minecraft.ru/uploads/posts/2021-04/1617636548_save1.png)
Также в файле можно заметить %такое%. Это сменные, которые заменяются словами в соответствии с вашей игрой:
%player% — Ваш ник в игре
%mcver% — Версия вашей игры
%mods% — Количество установленных модов
%world% — Измерение, в котором вы находитесь (из коробки поддерживает только три ванильные измерения, однако можно добавлять и свои из модов). Внизу есть большой блок «worlds», там вся информация об измерениях.
%difficulty% — сложность в игре
%position% — координаты игрока
%biome% — показывает текущий биом (например Taiga, Plains, Desert и т.д.)
%servername% — название сервера, на котором вы играете
%ip% — айпи адрес сервера, на котором вы играете
%players% — количество игроков на сервере (не включая вас)
Думаю, на этом гайд можно закончить. Если вам лень это делать и вы просто хотите готовый перевод, то внизу скачайте simple-rpc.json и поместите его в .minecraft/config (с заменой если мод уже был загружен).
Может получиться что-то такое:
Как установить мод:
- Установи Forge или Fabric
- Установи все дополнительные моды если указано.
- Скачай мод и скопируй в .minecraft/mods
- В лаунчере запускай версию игры с форджем или фабриком.
