您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Save progress for DofusPlanet without account.
// ==UserScript== // @name DofusPlanet Quest Progress Saving // @namespace https://github.com/blackstar0169/dofusplanet-quest-saving // @version 1.1 // @description Save progress for DofusPlanet without account. // @author blackstar0169 // @match https://dofusplanet.com/quetes/* // @icon https://www.google.com/s2/favicons?sz=64&domain=dofusplanet.com // @license GNU GPLv3 // @grant GM.setValue // @grant GM.getValue // ==/UserScript== (function() { 'use strict'; // Retrieve checkboxes const checkboxeSelector = 'input[type="checkbox"][name^="quete"]'; const checkboxes = document.querySelectorAll(checkboxeSelector); const scriptID = 'DPQPS_5ece4797eaf5e'; console.log('['+scriptID+'] Init DofusPlanet Quest Progress Saving'); function parseDatas(datas) { const defaultDatas = { quests: {} }; if (typeof datas === 'string' && datas.charAt(0) === '{') { try { datas = JSON.parse(datas); datas = Object.assign(defaultDatas, datas); } catch (e) { datas = defaultDatas; } } else { datas = defaultDatas; } return datas; } function updateCheckboxes(datas) { // console.log('['+scriptID+'] updateCheckboxes'); // console.log(datas); for (var i=0; i<checkboxes.length; i++) { var checked = false; const questId = checkboxes[i].name.replace('quete', ''); for (var id in datas.quests) { if (datas.quests.hasOwnProperty(id) && id == questId) { checked = datas.quests[id]; break; } } checkboxes[i].checked = checked; } } // Retrieve datas and update checkboxes setInterval(function () { GM.getValue(scriptID).then(function (datas) { updateCheckboxes(parseDatas(datas)); }); }, 3000); // Listen any modifications for (var i=0; i<checkboxes.length; i++) { checkboxes[i].addEventListener('change', function (e) { const questId = e.target.name.replace('quete', ''); // console.log(e); //console.log('['+scriptID+'] Change '+questId); // Save modifications GM.getValue(scriptID).then(function (datas) { datas = parseDatas(datas); datas.quests[questId] = e.target.checked; GM.setValue(scriptID, JSON.stringify(datas)); }); }); } })();