猫国建设者修改器
注意:此版本支持科学技术法,例如:1e9、3.7e18.
// ==UserScript==
// ==UserScript==
// @name 猫国建设者修改器
// @namespace http://tampermonkey.net/
// @version 1.1
// @description 猫国建设者全资源修改器 - 支持科学计数法
// @author GGC大帝
// @match https://lolitalibrary.com/maomao/*
// @grant GM_addStyle
// @grant GM_getValue
// @grant GM_setValue
// ==/UserScript==
GM_addStyle(`
.resource-editor {
position: fixed;
left: ${GM_getValue('editorPosX', '10px')};
top: ${GM_getValue('editorPosY', '10px')};
user-select: none;
z-index: 9999;
background: #f8f9fa;
padding: 8px;
border-radius: 6px;
box-shadow: 0 2px 8px rgba(0,0,0,0.15);
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
width: 300px;
transition: all 0.2s ease;
}
.editor-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 8px;
padding-bottom: 6px;
border-bottom: 1px solid #e0e0e0;
}
.editor-title {
font-weight: bold;
color: #2c3e50;
font-size: 14px;
}
.editor-close {
cursor: pointer;
color: #7f8c8d;
font-size: 16px;
background: none;
border: none;
padding: 0;
}
.resource-selector {
width: 100%;
padding: 6px;
border: 1px solid #bdc3c7;
border-radius: 3px;
margin-bottom: 8px;
font-size: 13px;
}
.resource-controls {
display: flex;
gap: 6px;
}
.resource-amount {
flex: 1;
padding: 6px;
border: 1px solid #bdc3c7;
border-radius: 3px;
font-size: 13px;
}
.add-button {
padding: 6px 12px;
background: #2ecc71;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 13px;
transition: background 0.2s;
}
.add-button:hover {
background: #27ae60;
}
.format-hint {
font-size: 11px;
color: #7f8c8d;
margin-top: 4px;
text-align: right;
}
`);
(function() {
'use strict';
// 所有资源数据
const resourceData = [
{
group: '基础资源',
items: [
{ name: '猫薄荷', value: 'catnip' },
{ name: '木材', value: 'wood' },
{ name: '矿物', value: 'minerals' },
{ name: '煤炭', value: 'coal' },
{ name: '铁锭', value: 'iron' },
{ name: '钛锭', value: 'titanium' },
{ name: '黄金', value: 'gold' },
{ name: '石油', value: 'oil' },
{ name: '铀', value: 'uranium' },
{ name: '难得素', value: 'unobtainium' }
]
},
{
group: '科技资源',
items: [
{ name: '喵力', value: 'manpower' },
{ name: '科研点', value: 'science' },
{ name: '文化点', value: 'culture' },
{ name: '信仰', value: 'faith' },
{ name: '喵星人', value: 'kittens' },
{ name: '斑马', value: 'zebras' },
{ name: '星图', value: 'starchart' },
{ name: '火箭', value: 'rocket' },
{ name: '时间通量', value: 'temporalFlux' },
{ name: '浮点运算', value: 'gflops' },
{ name: '哈希', value: 'hashrates' }
]
},
{
group: '稀有资源',
items: [
{ name: '皮革', value: 'furs' },
{ name: '象牙', value: 'ivory' },
{ name: '香料', value: 'spice' },
{ name: '独角兽', value: 'unicorns' },
{ name: '空角兽', value: 'alicorn' },
{ name: '眼泪', value: 'tears' }
]
},
{
group: '高级资源',
items: [
{ name: '领导力', value: 'paragon' },
{ name: '燃烧领导力', value: 'burnedParagon' },
{ name: '时光水晶', value: 'timeCrystal' },
{ name: '悲伤', value: 'sorrow' },
{ name: '礼盒', value: 'elderBox' },
{ name: '包装纸', value: 'wrappingPaper' },
{ name: '黑币', value: 'blackcoin' }
]
},
{
group: '工业资源',
items: [
{ name: '横梁', value: 'beam' },
{ name: '石板', value: 'slab' },
{ name: '混凝土', value: 'concrete' },
{ name: '金属板', value: 'plate' },
{ name: '钢铁', value: 'steel' },
{ name: '合金', value: 'alloy' },
{ name: '齿轮', value: 'gear' },
{ name: '脚手架', value: 'scaffold' },
{ name: '船', value: 'ship' },
{ name: '油轮', value: 'tanker' },
{ name: '煤油', value: 'kerosene' }
]
},
{
group: '知识资源',
items: [
{ name: '手稿', value: 'manuscript' },
{ name: '羊皮纸', value: 'parchment' },
{ name: '摘要', value: 'compendium' },
{ name: '蓝图', value: 'blueprint' },
{ name: '钍', value: 'thorium' },
{ name: '巨石', value: 'megalith' }
]
},
{
group: '神秘资源',
items: [
{ name: '死灵兽', value: 'necrocorn' },
{ name: 'E合金', value: 'eludium' },
{ name: '虚空', value: 'void' },
{ name: '圣遗物', value: 'relic' },
{ name: '反物质', value: 'antimatter' }
]
}
];
// 创建编辑器容器
const editor = document.createElement('div');
editor.className = 'resource-editor';
editor.innerHTML = `
<div class="editor-header">
<div class="editor-title">🐱 资源编辑器</div>
<button class="editor-close">×</button>
</div>
<select id="resource_selector" class="resource-selector">
${resourceData.map(group => `
<optgroup label="${group.group}">
${group.items.map(item => `
<option value="${item.value}">${item.name} (${item.value})</option>
`).join('')}
</optgroup>
`).join('')}
</select>
<div class="resource-controls">
<input type="text" class="resource-amount" id="resource_amount" value="10000" placeholder="例如: 1.5e9" />
<button id="add_resource" class="add-button">添加</button>
</div>
<div class="format-hint">支持科学计数法 (如1e6=1百万)</div>
`;
document.body.appendChild(editor);
// 关闭按钮功能
editor.querySelector('.editor-close').addEventListener('click', () => {
editor.style.display = 'none';
});
// 解析数值输入(支持科学计数法)
function parseNumberInput(value) {
if (value === '') return 10000;
// 尝试解析科学计数法
const num = Number(value);
if (!isNaN(num) && isFinite(num)) {
return num;
}
// 尝试解析常规数字
const simpleNum = parseFloat(value);
return isNaN(simpleNum) ? 10000 : simpleNum;
}
// 添加资源按钮点击事件
document.getElementById('add_resource').addEventListener('click', function() {
const resourceType = document.getElementById('resource_selector').value;
const inputValue = document.getElementById('resource_amount').value;
const amount = parseNumberInput(inputValue);
if (gamePage?.resPool?.resourceMap?.[resourceType]) {
gamePage.resPool.resourceMap[resourceType].value += amount;
this.textContent = '✓ 成功';
setTimeout(() => this.textContent = '添加', 1000);
// 显示实际添加的数值(格式化显示)
const formattedAmount = amount >= 1e6
? amount.toExponential(2).replace('.00', '')
: amount.toLocaleString();
console.log(`成功添加 ${formattedAmount} ${resourceType}`);
} else {
alert("资源类型不存在或游戏未加载完成!");
}
});
// 拖拽功能(保持不变)
let isDragging = false;
let offsetX, offsetY;
editor.querySelector('.editor-header').addEventListener('mousedown', (e) => {
if (e.target.classList.contains('editor-close')) return;
isDragging = true;
offsetX = e.clientX - editor.getBoundingClientRect().left;
offsetY = e.clientY - editor.getBoundingClientRect().top;
editor.style.cursor = 'grabbing';
});
document.addEventListener('mousemove', (e) => {
if (!isDragging) return;
const x = e.clientX - offsetX;
const y = e.clientY - offsetY;
editor.style.left = `${x}px`;
editor.style.top = `${y}px`;
GM_setValue('editorPosX', `${x}px`);
GM_setValue('editorPosY', `${y}px`);
});
document.addEventListener('mouseup', () => {
isDragging = false;
editor.style.cursor = '';
});
})();

浙公网安备 33010602011771号