您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
默认支持更多平台文明2:自动云端存档,理论支持所有平台,请自行添加试用...
当前为
// ==UserScript== // @name 文明2辅助 // @namespace http://bmqy.net/ // @version 1.0.2 // @description 默认支持更多平台文明2:自动云端存档,理论支持所有平台,请自行添加试用... // @author bmqy // @match https://game1.dusays.com/* // @match https://g1tyx.github.io/cividlization2/* // @icon https://www.google.com/s2/favicons?sz=64&domain=dusays.com // @grant GM_addStyle // @grant GM_setValue // @grant GM_getValue // @grant GM_xmlhttpRequest // ==/UserScript== (function() { 'use strict'; // Your code here... const AutoSync = { gistName: 'dusays.com', gistFileNamePrefix: 'cv2sv_', // 增加加载gist按钮 addLoadGistBtn(){ window.onload = function(){ let $btnOld = document.querySelector('.btn.btn-dark.btn-block'); let $btn = document.createElement('div'); $btn.id = 'btnLoadGist'; $btn.className = 'btn btn-dark btn-block'; $btn.innerHTML = '加载GIST存档'; $btn.addEventListener('click', function () { AutoSync.loadSaveForCloud() }); $btnOld.parentNode.appendChild($btn); } }, // 监听自动存档,保存至gist云端 bindAutoSaveToSaveGist(){ setInterval(() => { AutoSync.saveToCloud(); }, 10000); }, checkGithub(){ let storage = GM_getValue('github') || {} if(!storage.username){ storage.username = prompt('请输入你的github用户名') if(!storage.username) return false; GM_setValue('github', storage); } if(!storage.token){ storage.token = prompt('请输入你的github gist token') if(!storage.token) return false; GM_setValue('github', storage); } return true; }, // 保存本地存档到云端 saveToCloud(){ let local = localStorage for (const key in local) { if (key!='openpages' && Object.hasOwnProperty.call(local, key)) { AutoSync.gist({key: key, value: local[key]}); console.log('存档已保存到云端') } } }, // 加载云端存档 async loadSaveForCloud(){ let cloud = await AutoSync.gist(); let count = 0; if(cloud && Object.keys(cloud).length>0){ if(confirm('检测到云端存档,是否需要恢复?')){ for (const key in cloud) { if (key.indexOf(AutoSync.gistFileNamePrefix) == 0 && Object.hasOwnProperty.call(cloud, key)) { count++; console.log(`云端存档 [${key.split('_')[1]}] 已恢复`, cloud[key].content); localStorage.setItem(key, cloud[key].content); } } alert(`共恢复 ${count} 个存档。`); location.href = './'; } } else { alert('没有云端存档!'); } }, // 获取云端存档 async gist(newContent){ let storage = GM_getValue('github') let username = storage.username; let outContent = ''; let gists = await AutoSync.http(`https://api.github.com/users/${username}/gists`); for (let i = 0; i < gists.length; i++) { let theGist = gists[i]; let files = theGist.files; for (const key in files) { if(key.indexOf(AutoSync.gistFileNamePrefix) == 0){ if(newContent){ AutoSync.updateGist(theGist.id, newContent); } outContent = await AutoSync.getGist(theGist.url); break; } } } if(outContent == ''){ AutoSync.updateGist(null, ''); } return outContent; }, async getGist(url){ let gist = await AutoSync.http(url); return gist.files; }, updateGist(id, content){ let data = { "description":AutoSync.gistName, "files": {}, }; if(id && content){ data.files[content.key] = {}; data.files[content.key].content = content.value; AutoSync.http(`https://api.github.com/gists/${id}`, data, 'post') } else { data.public = false; data.files[`${AutoSync.gistFileNamePrefix}backup`] = { content: 'hello' }; AutoSync.http('https://api.github.com/gists', data, 'post') } }, http(url, data, method){ let storage = GM_getValue('github') let token = storage.token; return new Promise((resolve, reject) => { GM_xmlhttpRequest({ method: method=='post' ? 'POST' : 'GET', headers: { Accept: 'application/vnd.github+json', Authorization: `Bearer ${token}` }, url: url, responseType: 'json', data: data ? JSON.stringify(data) : '', onload(res){ if(res.response){ resolve(res.response) } else { resolve(res) } }, onerror(error){ reject(error) } }) }) }, // 初始化 init(){ console.log('已加载自动云端存档...'); this.checkGithub() && (()=>{ this.addLoadGistBtn(); this.bindAutoSaveToSaveGist(); })(); }, } AutoSync.init(); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址