Как получить значок Discord Quest, не выполняя задания?
Discord Quests являются частью бизнес-плана, поскольку 93% пользователей Discord играют в игры ежедневно. Поэтому они запустили функцию Quests для продвижения игр и увеличения своего дохода. В результате вы получите бесплатные внутриигровые награды вместе с Quest Badge на Discord.
Discord Quest всплывает в левом нижнем углу после подключения к голосовому каналу, предлагая вам поиграть в видеоигру в течение 15 минут, транслируя ее другу. Однако, только ради значка, возможно, не стоит терять 15-20 ГБ памяти оборудования, чтобы транслировать ее в течение 15 минут другу. Поэтому в этом руководстве мы расскажем вам о 2 самых эффективных способах получить значок Quest, не загружая игру и не транслируя ее другу.
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)
1. Запустить скрипт
Чтобы получить значок Quest, вам придется запустить скрипт, который автоматически завершит Quests без необходимости загрузки игры. Однако этот скрипт будет работать для каждого отдельного Quest, если Discord не исправит его в ближайшие дни.
Чтобы запустить скрипт, вам нужно будет открыть элемент inspect в Discord. Поскольку вы не можете сделать это в приложении Discord, вам нужно установить Discord PTB (Public Test Build) и войти в свою учетную запись, чтобы запустить скрипт.
- Загрузите и установите Дискорд PTB по ссылке.
- После загрузки установите его на свой ПК.
- Затем войдите в свою учетную запись и следуйте инструкциям по запуску скрипта.
- После этого нажмите Ctrl + Shift + I на клавиатуре, чтобы открыть окно проверки элемента.
- Перейдите на вкладку консоли сверху.
- Затем введите команду, разрешающую вставку, и нажмите Enter.
- После этого примите Quest и подключитесь к любому голосовому каналу. После подключения вам понадобится 1 друг, который подключится к вам и будет смотреть вашу трансляцию. Однако, если у вас сейчас нет друзей, вы можете использовать свой другой аккаунт Discord, чтобы смотреть свою собственную трансляцию.
- После этого запустите следующий скрипт в консоли и нажмите Enter для его выполнения. let wpRequire; window.webpackChunkdiscord_app.push((( Math.random() ), {}, (req) => { wpRequire = req; })); let ApplicationStreamingStore, RunningGameStore, QuestsStore, ExperimentStore, FluxDispatcher, api; if (window.GLOBAL_ENV.SENTRY_TAGS.buildId === “366c746173a6ca0a801e9f4a4d7b6745e6de45d4”) { ApplicationStreamingStore = Object.values(wpRequire.c).find(x => x?.exports?.default?.getStreamerActiveStreamMetadata).exports.default; RunningGameStore = Object.values(wpRequire.c).find(x => x?.exports?.default?.getRunningGames).exports.default; QuestsStore = Object.values(wpRequire.c).find(x => x?.exports?.default?.getQuest).exports.default; ExperimentStore = Object.values(wpRequire.c).find(x => x?.exports?.default?.getGuildExperiments).exports.default; FluxDispatcher = Object.values(wpRequire.c).find(x => x?.exports?.default?.flushWaitQueue).exports.default; api = Object.values(wpRequire.c).find(x => x?.exports?.getAPIBaseURL).exports.HTTP; } else { ApplicationStreamingStore = Object.values(wpRequire.c).find(x => x?.exports?.Z?.getStreamerActiveStreamMetadata).exports.Z; RunningGameStore = Object.values(wpRequire.c).find(x => x?.exports?.ZP?.getRunningGames).exports.ZP; QuestsStore = Object.values(wpRequire.c).find(x => x?.exports?.Z?.getQuest).exports.Z; ExperimentStore = Object.values(wpRequire.c).find(x => x?.exports?.Z?.getGuildExperiments).exports.Z; FluxDispatcher = Object.values(wpRequire.c).find(x => x?.exports?.Z?.flushWaitQueue).exports.Z; api = Object.values(wpRequire.c).find(x => x?.exports?.tn?.get).exports.tn; } let quest = (…QuestsStore.quests.values()).find(x => x.id !== “1245082221874774016” && x.userStatus?.enrolledAt && !x.userStatus?.completedAt && new Date(x.config.expiresAt).getTime() > Date.now()); let isApp = navigator.userAgent.includes(“Electron/”); if (!isApp) { console.log(“Это больше не работает в браузере. Используйте приложение для настольного компьютера!”); } else if (!quest) { console.log(“У вас нет незавершенных квестов!”); } else { const pid = Math.floor(Math.random() * 30000) + 1000; let applicationId, applicationName, secondsNeeded, secondsDone, canPlay; если (quest.config.configVersion === 1) { applicationId = quest.config.applicationId; applicationName = quest.config.applicationName; secondsNeeded = quest.config.streamDurationRequirementMinutes * 60; secondsDone = quest.userStatus?.streamProgressSeconds ?? 0; canPlay = quest.config.variants.includes(2); } иначе если (quest.config.configVersion === 2) { applicationId = quest.config.application.id; applicationName = quest.config.application.name; canPlay = ExperimentStore.getUserExperimentBucket(“2024-04_quest_playtime_task”) > 0 && quest.config.taskConfig.tasks(“PLAY_ON_DESKTOP”); const taskName = canPlay ? “PLAY_ON_DESKTOP” : “STREAM_ON_DESKTOP”; secondsNeeded = quest.config.taskConfig.tasks(taskName).target; secondsDone = quest.userStatus?.progress?.(taskName)?.value ?? 0; } если (canPlay) { api.get({ url: `/applications/public?application_ids=${applicationId}` }).then(res => { const appData = res.body(0); const exeName = appData.executables.find(x => x.os === “win32”).name.replace(“>”,””); const games = RunningGameStore.getRunningGames(); const fakeGame = { cmdLine: `C:\\Program Files\\${appData.name}\\${exeName}`, exeName, exePath: `c:/program files/${appData.name.toLowerCase()}/${exeName}`, hidden: false, isLauncher: false, id: applicationId, name: appData.name, pid: pid, pidPath: (pid), processName: appData.name, start: Date.now(), }; games.push(fakeGame); FluxDispatcher.dispatch({ type: “RUNNING_GAMES_CHANGE”, removed: (), added: (fakeGame), games: games }); let fn = data => { let progress = quest.config.configVersion === 1 ? data.userStatus.streamProgressSeconds : Math.floor(data.userStatus.progress.PLAY_ON_DESKTOP.value); console.log(`Прогресс квеста: ${progress}/${secondsNeeded}`); if (progress >= secondsNeeded) { console.log(“Квест завершен!”); const idx = games.indexOf(fakeGame); if (idx > -1) { games.splice(idx, 1); FluxDispatcher.dispatch({ type: “RUNNING_GAMES_CHANGE”, removed: (fakeGame), added: (), games: () }); } FluxDispatcher.unsubscribe(“QUESTS_SEND_HEARTBEAT_SUCCESS”, fn); } }; FluxDispatcher.subscribe(“QUESTS_SEND_HEARTBEAT_SUCCESS”, fn); console.log(`Ваша игра подделана для ${applicationName}. Подождите еще ${Math.ceil((secondsNeeded – secondsDone) / 60)} минут.`); }); } else { let realFunc = ApplicationStreamingStore.getStreamerActiveStreamMetadata; ApplicationStreamingStore.getStreamerActiveStreamMetadata = () => ({ id: applicationId, pid, sourceName: null }); let fn = data => { let progress = quest.config.configVersion === 1 ? data.userStatus.streamProgressSeconds : Math.floor(data.userStatus.progress.STREAM_ON_DESKTOP.value); console.log(`Прогресс квеста: ${progress}/${secondsNeeded}`); if (progress >= secondsNeeded) { console.log(“Квест завершен!”); ApplicationStreamingStore.getStreamerActiveStreamMetadata = realFunc; FluxDispatcher.unsubscribe(“QUESTS_SEND_HEARTBEAT_SUCCESS”, fn); } }; FluxDispatcher.subscribe(“QUESTS_SEND_HEARTBEAT_SUCCESS”, fn); console.log(`Подделал ваш поток в ${applicationName}. Транслируйте любое окно в vc еще ${Math.ceil((secondsNeeded – secondsDone) / 60)} минут.`); console.log(“Помните, что в vc должен быть хотя бы 1 другой человек!”); } }
- Если после выполнения скрипта вы видите Quest Progress 30/900 или что-то похожее из 900, это означает, что скрипт теперь выполняется. Вы можете проверить Quest Progress, перейдя в Settings > Gift Inventory.
- Если вы видите какой-либо прогресс, подождите 15 минут, пока квест не закончится.
- После этого проверьте, можете ли вы получить награду или нет.
Если вы не хотите, чтобы Discord Quests отображались в вашем приложении Discord, вы можете просто отключить его, перейдя в Настройки > Конфиденциальность и безопасность. Здесь отключите опцию Внутриигровые награды (т. н. Quests), чтобы отключить Discord Quests.
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)