添加 nodejs 的 runner
This commit is contained in:
parent
357a55f4c9
commit
337e862948
4
node_run/.gitignore
vendored
Normal file
4
node_run/.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
node_modules
|
||||
|
||||
data.json
|
||||
queue.json
|
64
node_run/child.js
Normal file
64
node_run/child.js
Normal file
@ -0,0 +1,64 @@
|
||||
const { JSDOM } = require('jsdom');
|
||||
const chalk = require('chalk');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
const config = JSON.parse(fs.readFileSync('./config.json'));
|
||||
const testString = {
|
||||
QP: '!test!\n!\n\n$name',
|
||||
QD: '!test!\n!\n\n$name\n$name',
|
||||
PP: '!test!\n\n$name',
|
||||
PD: '!test!\n\n$name\n$name',
|
||||
}
|
||||
const id = process.argv[2];
|
||||
|
||||
console.log(chalk`{gray child {bold ${id}} started.}`);
|
||||
process.on('message', ([mode, name]) => {
|
||||
try {
|
||||
console.log(chalk`{magentaBright [${id}] ${name} ${mode} started.}`)
|
||||
|
||||
// 创建一个简单的localStorage模拟
|
||||
const localStorageMock = {
|
||||
setItem: function (key, value) {
|
||||
this[key] = value;
|
||||
},
|
||||
getItem: function (key) {
|
||||
return this[key] || null;
|
||||
},
|
||||
removeItem: function (key) {
|
||||
delete this[key];
|
||||
},
|
||||
clear: function () {
|
||||
for (const key in this) {
|
||||
if (this.hasOwnProperty(key) && key !== 'setItem' && key !== 'getItem' && key !== 'removeItem' && key !== 'clear') {
|
||||
delete this[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
new JSDOM(fs.readFileSync(path.join(__dirname, 'static/md5.html'), 'utf-8'), {
|
||||
url: 'file://' + path.join(__dirname, 'static/'),
|
||||
runScripts: 'dangerously',
|
||||
resources: 'usable',
|
||||
beforeParse(window) {
|
||||
window.FakelocalStorage = localStorageMock;
|
||||
window.config = config[mode].thresholds;
|
||||
window.name_input = testString[mode].replace(/\$name/g, name);
|
||||
window.stage = 0;
|
||||
window.skillData = [];
|
||||
window.resolve = (...args) => {
|
||||
process.send(args);
|
||||
window.close();
|
||||
}
|
||||
}
|
||||
});
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
});
|
||||
// dom.window.onload = () => {
|
||||
// console.log(dom.window.document.body.outerHTML)
|
||||
// }
|
||||
|
||||
// const window = await new Promise(resolve => dom.window.document.addEventListener('DOMContentLoaded', () => console.log(dom.window.document.body.outerHTML)));
|
50
node_run/config.json
Normal file
50
node_run/config.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"备注": "//mode只有preliminary是测,其它任何字段都是不测 //count应该是测多少次的意思//score是个分数限制,低于这个就认为失败,不记录",
|
||||
"threads": 2,
|
||||
"QP": {
|
||||
"mode": "preliminary",
|
||||
"thresholds": [
|
||||
{
|
||||
"score": 5500,
|
||||
"count": 1000
|
||||
},
|
||||
{
|
||||
"count": 10000,
|
||||
"skillLabel": "QP 100%"
|
||||
}
|
||||
]
|
||||
},
|
||||
"QD": {
|
||||
"mode": "preliminary",
|
||||
"thresholds": [
|
||||
{
|
||||
"score": 5500,
|
||||
"count": 1000
|
||||
},
|
||||
{
|
||||
"count": 10000
|
||||
}
|
||||
]
|
||||
},
|
||||
"PP": {
|
||||
"mode": "disabled",
|
||||
"thresholds": [
|
||||
{
|
||||
"count": 10,
|
||||
"score": 6050
|
||||
},
|
||||
{
|
||||
"count": 100,
|
||||
"score": 6850
|
||||
}
|
||||
]
|
||||
},
|
||||
"PD": {
|
||||
"mode": "disabled",
|
||||
"thresholds": [
|
||||
{
|
||||
"count": 10000
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
33
node_run/dump.py
Normal file
33
node_run/dump.py
Normal file
@ -0,0 +1,33 @@
|
||||
import json
|
||||
import csv# 打开json文件并加载数据
|
||||
with open('data.json', 'r',encoding='utf-8') as f:
|
||||
data = json.load(f)
|
||||
with open('output.csv', 'w', newline='', encoding='utf-8') as f:
|
||||
writer = csv.writer(f)
|
||||
writer.writerow(['标签', 'QP', 'QD', 'skills'])
|
||||
left_labels=[]
|
||||
# 写入每行数据
|
||||
rows = []
|
||||
for index, (label, values) in enumerate(data['data'].items()):
|
||||
qp = values['QP']
|
||||
qd = values['QD']
|
||||
if (qp==-1 or qd==-1):
|
||||
left_labels.append(label)
|
||||
continue
|
||||
|
||||
if (qp==0 or qd ==0): continue
|
||||
if 'skills' in values.keys():
|
||||
skills = ','.join([f"{k},{v}" for k, v in values['skills']['QP 100%'].items()])
|
||||
else:
|
||||
skills = ''
|
||||
|
||||
rows.append([label, qp, qd, skills])
|
||||
|
||||
# 按照QP字段降序排序
|
||||
sorted_rows = sorted(rows, key=lambda x: int(x[1]), reverse=True)
|
||||
with open('left_names.txt','w',newline='\n',encoding='utf-8') as f2:
|
||||
for name in left_labels:
|
||||
f2.write(name+'\n')
|
||||
# 写入排序后的数据
|
||||
for row in sorted_rows:
|
||||
writer.writerow(row)
|
142
node_run/index.js
Normal file
142
node_run/index.js
Normal file
@ -0,0 +1,142 @@
|
||||
const child_process = require('child_process');
|
||||
const chalk = require('chalk');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
const low = require('lowdb');
|
||||
const FileSync = require('lowdb/adapters/FileSync');
|
||||
|
||||
function replacer(_key, value) {
|
||||
if (value instanceof Set)
|
||||
return { dataType: 'Set', value: [...value] };
|
||||
return value;
|
||||
}
|
||||
function reviver(_key, value) {
|
||||
if (typeof value === 'object' && value !== null)
|
||||
if (value.dataType === 'Set') return new Set(value.value);
|
||||
return value;
|
||||
}
|
||||
|
||||
const queueAdapter = new FileSync(path.resolve(__dirname, 'queue.json'), {
|
||||
serialize: obj => JSON.stringify(obj, replacer),
|
||||
deserialize: str => JSON.parse(str, reviver)
|
||||
});
|
||||
const queueDB = low(queueAdapter);
|
||||
queueDB.defaults({ queue: new Set() }).write();
|
||||
|
||||
const dataAdapter = new FileSync(path.resolve(__dirname, 'data.json'));
|
||||
const dataDB = low(dataAdapter);
|
||||
dataDB.defaults({ data: {} }).write();
|
||||
|
||||
const fullQueue = queueDB.get('queue').value(); // remove after finished
|
||||
const queue = new Set([...fullQueue]); // remove when processing
|
||||
|
||||
const config = JSON.parse(fs.readFileSync(path.resolve(__dirname, 'config.json')));
|
||||
const idleThreads = new Set();
|
||||
const threads = [];
|
||||
|
||||
var count = 0;
|
||||
function addItem(name, mode) {
|
||||
if (dataDB.has(['data', name, mode]).value()) return;
|
||||
|
||||
const item = [mode, name];
|
||||
dataDB.setWith(['data', name, mode], -1, Object).write();
|
||||
fullQueue.add(item);
|
||||
|
||||
if (idleThreads.size) {
|
||||
var thread = idleThreads.values().next().value;
|
||||
|
||||
item.processing = true;
|
||||
thread.item = item;
|
||||
thread.send(item);
|
||||
idleThreads.delete(thread);
|
||||
} else {
|
||||
queue.add(item);
|
||||
|
||||
console.log(chalk`{cyanBright ${name} ${mode} pending.}`);
|
||||
}
|
||||
queueDB.write();
|
||||
}
|
||||
|
||||
fs.readFileSync(path.resolve(__dirname, 'input.txt'), 'utf8').split('\n').forEach(name => {
|
||||
name = name.trim();
|
||||
if (name.length)
|
||||
for (var mode in config)
|
||||
if (config[mode].mode === 'preliminary') {
|
||||
if (dataDB.has(['data', name, mode]).value()) continue;
|
||||
|
||||
dataDB.setWith(['data', name, mode], -1, Object).value();
|
||||
const item = [mode, name];
|
||||
fullQueue.add(item);
|
||||
queue.add(item);
|
||||
}
|
||||
});
|
||||
dataDB.write();
|
||||
queueDB.write();
|
||||
|
||||
console.log(`queue size: ${fullQueue.size}`);
|
||||
|
||||
var it = queue.values();
|
||||
for (var i = 0; i < config.threads; i++) {
|
||||
threads[i] = child_process.fork(path.resolve(__dirname, 'child.js'), [i]);
|
||||
threads[i].id = i;
|
||||
threads[i].on('message', function ([success, skills, score, last]) {
|
||||
const [mode, name] = this.item;
|
||||
fullQueue.delete(this.item);
|
||||
queueDB.write();
|
||||
|
||||
count++;
|
||||
|
||||
if (!success) {
|
||||
console.log(chalk`{redBright [${this.id}] ${name} ${mode} failed with score {bold ${score}} at {bold ${(last / 100).toFixed(2).replace(/\.?0+$/, '')}%}}`);
|
||||
|
||||
dataDB.setWith(['data', name, mode], 0, Object).value();
|
||||
for (var [label, data] of skills)
|
||||
dataDB.setWith(['data', name, 'skills', label], data, Object).value();
|
||||
const obj = dataDB.get(['data', name]).value();
|
||||
|
||||
var needDelete = true;
|
||||
for (var i in obj)
|
||||
if (i !== 'skills' && obj[i] !== 0) needDelete = false;
|
||||
if (needDelete)
|
||||
dataDB.unset(['data', name]).value();
|
||||
} else {
|
||||
console.log(chalk`{greenBright [${this.id}] ${name} ${mode} finished with score {bold ${score}}}.`);
|
||||
|
||||
dataDB.setWith(['data', name, mode], score, Object).value();
|
||||
for (var [label, data] of skills)
|
||||
dataDB.setWith(['data', name, 'skills', label], data, Object).value();
|
||||
|
||||
if (config[mode].mode === 'preliminary')
|
||||
for (var filteredMode in config)
|
||||
if (config[filteredMode].mode === 'filtered') addItem(name, filteredMode);
|
||||
}
|
||||
dataDB.write();
|
||||
|
||||
if (queue.size) {
|
||||
var item = queue.values().next().value;
|
||||
item.processing = true;
|
||||
queue.delete(item);
|
||||
|
||||
this.item = item;
|
||||
this.send(item);
|
||||
} else
|
||||
idleThreads.delete(this);
|
||||
|
||||
console.log(chalk`{yellowBright {bold progress: ${count} / ${fullQueue.size + count}}}`);
|
||||
if (!fullQueue.size)
|
||||
console.log(chalk`{yellowBright {bold queue is empty.}}`);
|
||||
});
|
||||
|
||||
idleThreads.add(threads[i]);
|
||||
|
||||
var item = it.next().value;
|
||||
if (item) {
|
||||
item.processing = true;
|
||||
queue.delete(item);
|
||||
|
||||
threads[i].item = item;
|
||||
threads[i].send(item);
|
||||
idleThreads.delete(threads[i]);
|
||||
}
|
||||
}
|
476
node_run/input.txt
Normal file
476
node_run/input.txt
Normal file
@ -0,0 +1,476 @@
|
||||
一一帼捨芀㴁@shenjack
|
||||
一一幂掏僀㴁@shenjack
|
||||
一一幆纍汀㴁@shenjack
|
||||
一一幊喿桀㴁@shenjack
|
||||
一一幍怺榀㴁@shenjack
|
||||
一一嶏悋榀㴁@shenjack
|
||||
一一嶢繚简㴁@shenjack
|
||||
一一嶨夘崀㴁@shenjack
|
||||
一一嶮扪嘀㴁@shenjack
|
||||
一一嶽媃恀㴁@shenjack
|
||||
一一巂又渀㴁@shenjack
|
||||
一一巜攝甀㴁@shenjack
|
||||
一一州洹蘀㴁@shenjack
|
||||
一一巡摊畀㴁@shenjack
|
||||
一一巤固嬀㴁@shenjack
|
||||
一一差梢焀㴁@shenjack
|
||||
一一师唒贀㴁@shenjack
|
||||
一一師丄欀㴁@shenjack
|
||||
一一常桙瘀㴁@shenjack
|
||||
一一帹犼籀㴁@shenjack
|
||||
一一寔缣荀㴁@shenjack
|
||||
一一寵褐撀㴁@shenjack
|
||||
一一将誟崀㴁@shenjack
|
||||
一一尗蟛唀㴁@shenjack
|
||||
一一尛梃狀㴁@shenjack
|
||||
一一尡蕺櫀㴁@shenjack
|
||||
一一尫吢礀㴁@shenjack
|
||||
一一尭聟砀㴁@shenjack
|
||||
一一尳跲往㴁@shenjack
|
||||
一一尴獼简㴁@shenjack
|
||||
一一尺哧掀㴁@shenjack
|
||||
一一屇伂瞀㴁@shenjack
|
||||
一一屌赪婀㴁@shenjack
|
||||
一一屬帽碀㴁@shenjack
|
||||
一一山婊灀㴁@shenjack
|
||||
一一屶待綀㴁@shenjack
|
||||
一一屷硥哀㴁@shenjack
|
||||
一一岔简腀㴁@shenjack
|
||||
一一岘繰焀㴁@shenjack
|
||||
一一岡諭蠀㴁@shenjack
|
||||
一一岢滂噀㴁@shenjack
|
||||
一一岰焇椀㴁@shenjack
|
||||
一一峈皝諀㴁@shenjack
|
||||
一一峋曯甀㴁@shenjack
|
||||
一一峫肿殀㴁@shenjack
|
||||
一一峳胯矀㴁@shenjack
|
||||
一一崀蘈最㴁@shenjack
|
||||
一一崄壁噀㴁@shenjack
|
||||
一一崋怍摀㴁@shenjack
|
||||
一一崍坭傀㴁@shenjack
|
||||
一一崓燲擀㴁@shenjack
|
||||
一一崙咈枀㴁@shenjack
|
||||
一一崥緂嵀㴁@shenjack
|
||||
一一崨亰开㴁@shenjack
|
||||
一一崸哩汀㴁@shenjack
|
||||
一一嵀蠆蓀㴁@shenjack
|
||||
一一嵇濗絀㴁@shenjack
|
||||
一一嵊蘖蟀㴁@shenjack
|
||||
一一嵓矶穀㴁@shenjack
|
||||
一一嵥艝蕀㴁@shenjack
|
||||
一一嵿疷翀㴁@shenjack
|
||||
一一冠熑薀㴁@shenjack
|
||||
一一冩囥笀㴁@shenjack
|
||||
一一冹料姀㴁@shenjack
|
||||
一一冾尲孀㴁@shenjack
|
||||
一一凉枴瘀㴁@shenjack
|
||||
一一凐圧叀㴁@shenjack
|
||||
一一凔篎涀㴁@shenjack
|
||||
一一凛噖薀㴁@shenjack
|
||||
一一凝伋翀㴁@shenjack
|
||||
一一凟杠儀㴁@shenjack
|
||||
一一几撄喀㴁@shenjack
|
||||
一一凣纭眀㴁@shenjack
|
||||
一一凭摩枀㴁@shenjack
|
||||
一一凬深袀㴁@shenjack
|
||||
一一凷翊荀㴁@shenjack
|
||||
一一刊晧蟀㴁@shenjack
|
||||
一一刌衩榀㴁@shenjack
|
||||
一一刓猾劀㴁@shenjack
|
||||
一一划彃拀㴁@shenjack
|
||||
一一刘糟澀㴁@shenjack
|
||||
一一刜絡漀㴁@shenjack
|
||||
一一判泭址㴁@shenjack
|
||||
一一刣湁憀㴁@shenjack
|
||||
一一刲媯噀㴁@shenjack
|
||||
一一刷縧噀㴁@shenjack
|
||||
一一剅泺绀㴁@shenjack
|
||||
一一剕荦縀㴁@shenjack
|
||||
一一剠腲庀㴁@shenjack
|
||||
一一剥袸節㴁@shenjack
|
||||
一一剫沇蔀㴁@shenjack
|
||||
一一剭猩血㴁@shenjack
|
||||
一一剸叾开㴁@shenjack
|
||||
一一剸唈秀㴁@shenjack
|
||||
一一劇焓址㴁@shenjack
|
||||
一一劍暶殀㴁@shenjack
|
||||
一一劌敻璀㴁@shenjack
|
||||
一一办贰灀㴁@shenjack
|
||||
一一劦武椀㴁@shenjack
|
||||
一一劧季栀㴁@shenjack
|
||||
一一励襦耀㴁@shenjack
|
||||
一一勋眜泀㴁@shenjack
|
||||
一一勜觼淀㴁@shenjack
|
||||
一一勢娏蟀㴁@shenjack
|
||||
一一勤苑艀㴁@shenjack
|
||||
一一勫苞區㴁@shenjack
|
||||
一一勨嵾貀㴁@shenjack
|
||||
一一勰賙姀㴁@shenjack
|
||||
一一勹瀛什㴁@shenjack
|
||||
一一勴妟岀㴁@shenjack
|
||||
一一勵螐帀㴁@shenjack
|
||||
一一匊艽甀㴁@shenjack
|
||||
一一匔瞩侀㴁@shenjack
|
||||
一一匠幬囀㴁@shenjack
|
||||
一一匩尠歀㴁@shenjack
|
||||
一一卋櫻襀㴁@shenjack
|
||||
一一単唶廀㴁@shenjack
|
||||
一一卡苺猀㴁@shenjack
|
||||
一一卩剱血㴁@shenjack
|
||||
一一卮犿猀㴁@shenjack
|
||||
一一即牀儀㴁@shenjack
|
||||
一一卸茱慀㴁@shenjack
|
||||
一一压杊氀㴁@shenjack
|
||||
一一厞淦最㴁@shenjack
|
||||
一一厜舯局㴁@shenjack
|
||||
一一厜屩炀㴁@shenjack
|
||||
一一厨脽慀㴁@shenjack
|
||||
一一厷樟怀㴁@shenjack
|
||||
一一叏卖摀㴁@shenjack
|
||||
一一叉瘾曀㴁@shenjack
|
||||
一一友竮蠀㴁@shenjack
|
||||
一一变櫒瞀㴁@shenjack
|
||||
一一叠祊晀㴁@shenjack
|
||||
一一古并匀㴁@shenjack
|
||||
一一叫愬梀㴁@shenjack
|
||||
一一另噬曀㴁@shenjack
|
||||
一一叮祓晀㴁@shenjack
|
||||
一一叻萚址㴁@shenjack
|
||||
一一吃尶貀㴁@shenjack
|
||||
一一吇偠椀㴁@shenjack
|
||||
一一吃炳塀㴁@shenjack
|
||||
一一吓枆碀㴁@shenjack
|
||||
一一吞膿岀㴁@shenjack
|
||||
一一吡伸艀㴁@shenjack
|
||||
一一吜堂嗀㴁@shenjack
|
||||
一一吢泟冀㴁@shenjack
|
||||
一一吷冡埀㴁@shenjack
|
||||
一一吼读樀㴁@shenjack
|
||||
一一吰綮檀㴁@shenjack
|
||||
一一吱湟蘀㴁@shenjack
|
||||
一一吼襰晀㴁@shenjack
|
||||
一一告炐呀㴁@shenjack
|
||||
一一呠毞埀㴁@shenjack
|
||||
一一员蕘垀㴁@shenjack
|
||||
一一呚蜶誀㴁@shenjack
|
||||
一一呫姑烀㴁@shenjack
|
||||
一一呫弿狀㴁@shenjack
|
||||
一一呱侓忀㴁@shenjack
|
||||
一一味帓樀㴁@shenjack
|
||||
一一和藢繀㴁@shenjack
|
||||
一一咛聮畀㴁@shenjack
|
||||
一一咡氁磀㴁@shenjack
|
||||
一一咱侚薀㴁@shenjack
|
||||
一一咨游蒀㴁@shenjack
|
||||
一一咬換曀㴁@shenjack
|
||||
一一咭竳拀㴁@shenjack
|
||||
一一咸刐谀㴁@shenjack
|
||||
一一哀贆圀㴁@shenjack
|
||||
一一咺甜曀㴁@shenjack
|
||||
一一哔畿笀㴁@shenjack
|
||||
一一哕秔儀㴁@shenjack
|
||||
一一哑坃偀㴁@shenjack
|
||||
一一哶毒磀㴁@shenjack
|
||||
一一哨瑄搀㴁@shenjack
|
||||
一一唂丣娀㴁@shenjack
|
||||
一一唑汷狀㴁@shenjack
|
||||
一一唒薬峀㴁@shenjack
|
||||
一一唡橪侀㴁@shenjack
|
||||
一一唪觜净㴁@shenjack
|
||||
一一唹咤嵀㴁@shenjack
|
||||
一一售祜娀㴁@shenjack
|
||||
一一啤咷牀㴁@shenjack
|
||||
一一啠烶劀㴁@shenjack
|
||||
一一啫堁暀㴁@shenjack
|
||||
一一喌戎區㴁@shenjack
|
||||
一一啽圈懀㴁@shenjack
|
||||
一一喐懻樀㴁@shenjack
|
||||
一一喛稳蓀㴁@shenjack
|
||||
一一喥岱劀㴁@shenjack
|
||||
一一喧豫沀㴁@shenjack
|
||||
一一喴懅一㴁@shenjack
|
||||
一一喸膵开㴁@shenjack
|
||||
一一喲猍刀㴁@shenjack
|
||||
一一喵诀竀㴁@shenjack
|
||||
一一喺呏瑀㴁@shenjack
|
||||
一一嗌贆渀㴁@shenjack
|
||||
一一嗓詐础㴁@shenjack
|
||||
一一嗖壒覀㴁@shenjack
|
||||
一一嗡磓檀㴁@shenjack
|
||||
一一嗽槸囀㴁@shenjack
|
||||
一一嗾庢蛀㴁@shenjack
|
||||
一一嘎聋埀㴁@shenjack
|
||||
一一嘤寢節㴁@shenjack
|
||||
一一嘕婄蝀㴁@shenjack
|
||||
一一嘭帘槀㴁@shenjack
|
||||
一一嘦哛掀㴁@shenjack
|
||||
一一噕嫽礀㴁@shenjack
|
||||
一一噟緲检㴁@shenjack
|
||||
一一噅犝柀㴁@shenjack
|
||||
一一噳槅沀㴁@shenjack
|
||||
一一噧纅技㴁@shenjack
|
||||
一一噹贐謀㴁@shenjack
|
||||
一一噼眒缀㴁@shenjack
|
||||
一一噬崾悀㴁@shenjack
|
||||
一一嚇蓅榀㴁@shenjack
|
||||
一一噳厅豀㴁@shenjack
|
||||
一一嚂穀竀㴁@shenjack
|
||||
一一嚚圞着㴁@shenjack
|
||||
一一嚠經瞀㴁@shenjack
|
||||
一一嚓煌恀㴁@shenjack
|
||||
一一嚞笡纀㴁@shenjack
|
||||
一一嚟厑葀㴁@shenjack
|
||||
一一嚢框峀㴁@shenjack
|
||||
一一嚰稃皀㴁@shenjack
|
||||
一一囋幙曀㴁@shenjack
|
||||
一一囚讹诀㴁@shenjack
|
||||
一一囌砽吀㴁@shenjack
|
||||
一一囖覽往㴁@shenjack
|
||||
一一図峩厀㴁@shenjack
|
||||
一一圫茆绀㴁@shenjack
|
||||
一一圜昻豀㴁@shenjack
|
||||
一一圤呟崀㴁@shenjack
|
||||
一一址荋潀㴁@shenjack
|
||||
一一圮衹侀㴁@shenjack
|
||||
一一场碓毀㴁@shenjack
|
||||
一一坣慀趀㴁@shenjack
|
||||
一一坜樁淀㴁@shenjack
|
||||
一一坥壶囀㴁@shenjack
|
||||
一一坺罪彀㴁@shenjack
|
||||
一一坰葓嚀㴁@shenjack
|
||||
一一垎蝛咀㴁@shenjack
|
||||
一一垑栉熀㴁@shenjack
|
||||
一一垚蛒昀㴁@shenjack
|
||||
一一垉碝狀㴁@shenjack
|
||||
一一垑漝珀㴁@shenjack
|
||||
一一垕昙言㴁@shenjack
|
||||
一一垣謸戀㴁@shenjack
|
||||
一一埒稏夀㴁@shenjack
|
||||
一一埉懀菀㴁@shenjack
|
||||
一一埕昹娀㴁@shenjack
|
||||
一一埥紋噀㴁@shenjack
|
||||
一一埡盨彀㴁@shenjack
|
||||
一一埫复暀㴁@shenjack
|
||||
一一埓捰誀㴁@shenjack
|
||||
一一埞底检㴁@shenjack
|
||||
一一埛謊唀㴁@shenjack
|
||||
一一堀蓣俀㴁@shenjack
|
||||
一一堀浹尀㴁@shenjack
|
||||
一一埫讋簀㴁@shenjack
|
||||
一一埯蒆喀㴁@shenjack
|
||||
一一埵疈秀㴁@shenjack
|
||||
一一埲秏嬀㴁@shenjack
|
||||
一一執嬁叀㴁@shenjack
|
||||
一一堎螧猀㴁@shenjack
|
||||
一一堆崥曀㴁@shenjack
|
||||
一一堌棧杀㴁@shenjack
|
||||
一一堳厩耀㴁@shenjack
|
||||
一一堧傓捀㴁@shenjack
|
||||
一一塄望烀㴁@shenjack
|
||||
一一堷殇蒀㴁@shenjack
|
||||
一一塒乛埀㴁@shenjack
|
||||
一一塓櫋櫀㴁@shenjack
|
||||
一一塖球夀㴁@shenjack
|
||||
一一塞甲吀㴁@shenjack
|
||||
一一塗俍嫀㴁@shenjack
|
||||
一一塝砨嬀㴁@shenjack
|
||||
一一塨渻綀㴁@shenjack
|
||||
一一塭讬廀㴁@shenjack
|
||||
一一塩衅罀㴁@shenjack
|
||||
一一墥愕砀㴁@shenjack
|
||||
一一墏涝嗀㴁@shenjack
|
||||
一一墔檵櫀㴁@shenjack
|
||||
一一墔珕艀㴁@shenjack
|
||||
一一墠媒柀㴁@shenjack
|
||||
一一墦豦恀㴁@shenjack
|
||||
一一墭跀烀㴁@shenjack
|
||||
一一墭蛤璀㴁@shenjack
|
||||
一一壘潆蟀㴁@shenjack
|
||||
一一壽盁璀㴁@shenjack
|
||||
一一壻绩盀㴁@shenjack
|
||||
一一壥晣检㴁@shenjack
|
||||
一一处蒔寀㴁@shenjack
|
||||
一一备緡塀㴁@shenjack
|
||||
一一备庤搀㴁@shenjack
|
||||
一一夎襡豀㴁@shenjack
|
||||
一一夥疓栀㴁@shenjack
|
||||
一一奁敺禀㴁@shenjack
|
||||
一一夺玱歀㴁@shenjack
|
||||
一一奃窒裀㴁@shenjack
|
||||
一一夷窞兀㴁@shenjack
|
||||
一一奔璓蜀㴁@shenjack
|
||||
一一奌枷蕀㴁@shenjack
|
||||
一一奦梉址㴁@shenjack
|
||||
一一奝津妀㴁@shenjack
|
||||
一一奺徨庀㴁@shenjack
|
||||
一一妀翄倀㴁@shenjack
|
||||
一一妆濿蛀㴁@shenjack
|
||||
一一妆床庀㴁@shenjack
|
||||
一一妢柑晀㴁@shenjack
|
||||
一一妉暫蓀㴁@shenjack
|
||||
一一妨窌窀㴁@shenjack
|
||||
一一妕勏栀㴁@shenjack
|
||||
一一妗谻囀㴁@shenjack
|
||||
一一姄紼簀㴁@shenjack
|
||||
一一妱塼榀㴁@shenjack
|
||||
一一妺硤墀㴁@shenjack
|
||||
一一妴葅璀㴁@shenjack
|
||||
一一妾嵝貀㴁@shenjack
|
||||
一一委袳埀㴁@shenjack
|
||||
一一姇嫌貀㴁@shenjack
|
||||
一一姐偬宀㴁@shenjack
|
||||
一一姓烹袀㴁@shenjack
|
||||
一一姱溏蜀㴁@shenjack
|
||||
一一姮虛橀㴁@shenjack
|
||||
一一娘哫叀㴁@shenjack
|
||||
一一娢谳瀀㴁@shenjack
|
||||
一一娍籟纀㴁@shenjack
|
||||
一一娌茮杀㴁@shenjack
|
||||
一一娵嬋一㴁@shenjack
|
||||
一一娪殰珀㴁@shenjack
|
||||
一一娡秞旀㴁@shenjack
|
||||
一一娾盰薀㴁@shenjack
|
||||
一一娫劍絀㴁@shenjack
|
||||
一一婈枻蘀㴁@shenjack
|
||||
一一婝蝞漀㴁@shenjack
|
||||
一一婥杓吀㴁@shenjack
|
||||
一一婼扣偀㴁@shenjack
|
||||
一一媈槦樀㴁@shenjack
|
||||
一一媕襹擀㴁@shenjack
|
||||
一一媛怅胀㴁@shenjack
|
||||
一一嫓慺褀㴁@shenjack
|
||||
一一媹舨満㴁@shenjack
|
||||
一一嫋赖諀㴁@shenjack
|
||||
一一嫃衄漀㴁@shenjack
|
||||
一一嫘围奀㴁@shenjack
|
||||
一一嫝焖苀㴁@shenjack
|
||||
一一嫶甌楀㴁@shenjack
|
||||
一一嬎劄肀㴁@shenjack
|
||||
一一嬋畘筀㴁@shenjack
|
||||
一一嬡墲媀㴁@shenjack
|
||||
一一嬩垄旀㴁@shenjack
|
||||
一一嬴盉區㴁@shenjack
|
||||
一一嬻嵕皀㴁@shenjack
|
||||
一一嬷禺血㴁@shenjack
|
||||
一一嬿历祀㴁@shenjack
|
||||
一一孞扌區㴁@shenjack
|
||||
一一孽教猀㴁@shenjack
|
||||
一一守倠犀㴁@shenjack
|
||||
一一宔羁臀㴁@shenjack
|
||||
一一宷缶技㴁@shenjack
|
||||
一一宦櫰开㴁@shenjack
|
||||
一一宮琘葀㴁@shenjack
|
||||
一一宝千痀㴁@shenjack
|
||||
一一宭同泀㴁@shenjack
|
||||
一一宻碤忀㴁@shenjack
|
||||
一一宩员翀㴁@shenjack
|
||||
一一家庚刀㴁@shenjack
|
||||
一一宴眾堀㴁@shenjack
|
||||
一一寔缣荀㴁@shenjack
|
||||
一一作固嶀㴁@shenjack
|
||||
一一佧掺蛀㴁@shenjack
|
||||
一一佷瑞艀㴁@shenjack
|
||||
一一佺盀裀㴁@shenjack
|
||||
一一侄廳帀㴁@shenjack
|
||||
一一侏兜璀㴁@shenjack
|
||||
一一侜嫰痀㴁@shenjack
|
||||
一一侮佀絀㴁@shenjack
|
||||
一一促幹啀㴁@shenjack
|
||||
一一促悮熀㴁@shenjack
|
||||
一一俍哚佀㴁@shenjack
|
||||
一一俍篱竀㴁@shenjack
|
||||
一一俕甒绀㴁@shenjack
|
||||
一一俤琄琀㴁@shenjack
|
||||
一一俻僝甀㴁@shenjack
|
||||
一一俻貒最㴁@shenjack
|
||||
一一俽訑澀㴁@shenjack
|
||||
一一倅毫宀㴁@shenjack
|
||||
一一倇巼晀㴁@shenjack
|
||||
一一倆潒埀㴁@shenjack
|
||||
一一倐缥蔀㴁@shenjack
|
||||
一一倚蒏圀㴁@shenjack
|
||||
一一借睬曀㴁@shenjack
|
||||
一一倞緻塀㴁@shenjack
|
||||
一一倦衭詀㴁@shenjack
|
||||
一一倴媩桀㴁@shenjack
|
||||
一一偉槏穀㴁@shenjack
|
||||
一一偐禢曀㴁@shenjack
|
||||
一一偖榿毀㴁@shenjack
|
||||
一一偞秾啀㴁@shenjack
|
||||
一一偷變袀㴁@shenjack
|
||||
一一偻瘴咀㴁@shenjack
|
||||
一一傌賙粀㴁@shenjack
|
||||
一一傒疁挀㴁@shenjack
|
||||
一一傖仡腀㴁@shenjack
|
||||
一一傟筶厀㴁@shenjack
|
||||
一一傞僩讀㴁@shenjack
|
||||
一一傠簍昀㴁@shenjack
|
||||
一一傟悰觀㴁@shenjack
|
||||
一一傤箚晀㴁@shenjack
|
||||
一一傲寢誀㴁@shenjack
|
||||
一一傳房菀㴁@shenjack
|
||||
一一傻耚嚀㴁@shenjack
|
||||
一一僄河妀㴁@shenjack
|
||||
一一僅杈蘀㴁@shenjack
|
||||
一一僈悂猀㴁@shenjack
|
||||
一一僚大簀㴁@shenjack
|
||||
一一僦蟸燀㴁@shenjack
|
||||
一一僿紦譀㴁@shenjack
|
||||
一一儅虎唀㴁@shenjack
|
||||
一一儔哑聀㴁@shenjack
|
||||
一一償审穀㴁@shenjack
|
||||
一一儡环氀㴁@shenjack
|
||||
一一儨耫诀㴁@shenjack
|
||||
一一儽箈厀㴁@shenjack
|
||||
一一允杳媀㴁@shenjack
|
||||
一一儾弖敀㴁@shenjack
|
||||
一一兤界晀㴁@shenjack
|
||||
一一兢甫詀㴁@shenjack
|
||||
一一公婕痀㴁@shenjack
|
||||
一一六嵚庀㴁@shenjack
|
||||
一一兴昛叀㴁@shenjack
|
||||
一一丁皋儀㴁@shenjack
|
||||
一一三欮怀㴁@shenjack
|
||||
一一丕忍眀㴁@shenjack
|
||||
一一丞摊侀㴁@shenjack
|
||||
一一丟巷圀㴁@shenjack
|
||||
一一串翂翀㴁@shenjack
|
||||
一一丸煵慀㴁@shenjack
|
||||
一一主儈諀㴁@shenjack
|
||||
一一丼澜砀㴁@shenjack
|
||||
一一丽窖蠀㴁@shenjack
|
||||
一一乂耎蕀㴁@shenjack
|
||||
一一乃抮薀㴁@shenjack
|
||||
一一乏狗槀㴁@shenjack
|
||||
一一乛犷羀㴁@shenjack
|
||||
一一习晙裀㴁@shenjack
|
||||
一一乥亐藀㴁@shenjack
|
||||
一一乹覕瀀㴁@shenjack
|
||||
一一亘愠矀㴁@shenjack
|
||||
一一亥筻瀀㴁@shenjack
|
||||
一一亦耫搀㴁@shenjack
|
||||
一一产幽汀㴁@shenjack
|
||||
一一亭虜冀㴁@shenjack
|
||||
一一亼瑗曀㴁@shenjack
|
||||
一一仂莳所㴁@shenjack
|
||||
一一仇栟幀㴁@shenjack
|
||||
一一仐晇蟀㴁@shenjack
|
||||
一一仙埙満㴁@shenjack
|
||||
一一仚择址㴁@shenjack
|
||||
一一仟椐煀㴁@shenjack
|
||||
一一仠橻縀㴁@shenjack
|
||||
一一仵烁楀㴁@shenjack
|
||||
一一仹咤哀㴁@shenjack
|
||||
一一伄煃稀㴁@shenjack
|
||||
一一伊匃净㴁@shenjack
|
||||
一一伎濊蜀㴁@shenjack
|
||||
一一休慛橀㴁@shenjack
|
||||
一一伛娸庀㴁@shenjack
|
||||
一一伛詀區㴁@shenjack
|
||||
一一伣乷恀㴁@shenjack
|
||||
一一伮圑湀㴁@shenjack
|
||||
一一估渔痀㴁@shenjack
|
||||
一一伲沈傀㴁@shenjack
|
||||
一一伺磪莀㴁@shenjack
|
||||
一一伾爱覀㴁@shenjack
|
||||
一一伾窻玀㴁@shenjack
|
3279
node_run/package-lock.json
generated
Normal file
3279
node_run/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
11
node_run/package.json
Normal file
11
node_run/package.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"canvas": "^2.11.2",
|
||||
"chalk": "^4.1.2",
|
||||
"express": "^4.18.3",
|
||||
"jsdom": "^16.7.0",
|
||||
"lowdb": "^1.0.0",
|
||||
"uuid": "^8.3.2",
|
||||
"ws": "^7.5.9"
|
||||
}
|
||||
}
|
1299
node_run/pnpm-lock.yaml
generated
Normal file
1299
node_run/pnpm-lock.yaml
generated
Normal file
File diff suppressed because it is too large
Load Diff
14
node_run/readme.md
Normal file
14
node_run/readme.md
Normal file
@ -0,0 +1,14 @@
|
||||
# 基于 Node js 的模拟器
|
||||
|
||||
## 使用
|
||||
|
||||
`pnpm i`
|
||||
|
||||
修改 `input.txt`
|
||||
|
||||
`node index.js`
|
||||
|
||||
## 注意事项
|
||||
|
||||
记得清理 `data.json`
|
||||
|
311
node_run/static/md5.css
Normal file
311
node_run/static/md5.css
Normal file
File diff suppressed because one or more lines are too long
196
node_run/static/md5.html
Normal file
196
node_run/static/md5.html
Normal file
@ -0,0 +1,196 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<style></style>
|
||||
<link rel="stylesheet" href="md5.css">
|
||||
<script>
|
||||
var r = `{
|
||||
"recover": "[1]回复体力[2]点",
|
||||
"sklAbsorb": "[0]#吸血攻击",
|
||||
"sklAccumulate": "[0]#聚气",
|
||||
"sklAccumulated": "[1]攻击力上升",
|
||||
"sklAccumulateCancel": "[1]的[聚气]被打消了",
|
||||
"sklAssassinate1": "[0]#潜行",
|
||||
"sklAssassinate2": "[0]#背刺",
|
||||
"dodge": "[0]#回避",
|
||||
"sklAssassinateFailed": "[0]的[潜行]被识破",
|
||||
"sklBerserkEnd": "[1]从[狂暴]中解除",
|
||||
"sklBerserkAttack": "[0]#狂暴攻击",
|
||||
"sklBerserkHit": "[1]#狂暴",
|
||||
"sklBerserk": "[0]#狂暴术",
|
||||
"sklCharge": "[0]#蓄力",
|
||||
"sklChargeCancel": "[1]的[蓄力]被中止了",
|
||||
"sklCharmEnd": "[1]从[魅惑]中解除",
|
||||
"sklCharm": "[0]#魅惑",
|
||||
"sklCharmHit": "[1]被[魅惑]了",
|
||||
"sklClone": "[0]#分身",
|
||||
"sklCloned": "出现一个新的[1]",
|
||||
"sklCritical": "[0]#会心一击",
|
||||
"sklCurseDamage": "[诅咒]使伤害加倍",
|
||||
"sklCurseEnd": "[1]从[诅咒]中解除",
|
||||
"sklCurseHit": "[1]被[诅咒]了",
|
||||
"sklCurse": "[0]#诅咒",
|
||||
"sklDisperse": "[0]#净化",
|
||||
"sklExchange": "[0]#生命之轮",
|
||||
"sklExchanged": "[1]的体力值与[0]互换",
|
||||
"sklFire": "[0]#火球术",
|
||||
"sklHalf": "[0]#瘟疫",
|
||||
"sklHalfDamage": "[1]体力减少[2]%",
|
||||
"sklHasteEnd": "[1]从[疾走]中解除",
|
||||
"sklHaste": "[0]#加速术",
|
||||
"sklHasteHit": "[1]#疾走",
|
||||
"sklHeal": "[0]#治愈魔法",
|
||||
"sklIceEnd": "[1]从[冰冻]中解除",
|
||||
"sklIceHit": "[1]被[冰冻]了",
|
||||
"sklIce": "[0]#冰冻术",
|
||||
"sklIron": "[0]#铁壁",
|
||||
"sklIrond": "[0]防御力大幅上升",
|
||||
"sklIronCancel": "[1]的[铁壁]被打消了",
|
||||
"sklIronEnd": "[0]从[铁壁]中解除",
|
||||
"sklPoisonDamage": "[1][毒性发作]",
|
||||
"sklPoisonEnd": "[1]从[中毒]中解除",
|
||||
"sklPoisonHit": "[1][中毒]",
|
||||
"sklPoison": "[0]#投毒",
|
||||
"sklQuake": "[0]#地裂术",
|
||||
"SklRapid": "[0]发起攻击",
|
||||
"SklRapidNext": "[0]#连击",
|
||||
"sklRevive": "[0]#苏生术",
|
||||
"sklRevived": "[1][复活]了",
|
||||
"sklPossess": "[0]#附体",
|
||||
"sklShadow": "[0]#幻术",
|
||||
"sklShadowName": "幻影",
|
||||
"sklShadowed": "召唤出[1]",
|
||||
"sklSlowEnd": "[1]从[迟缓]中解除",
|
||||
"sklSlow": "[0]#减速术",
|
||||
"sklSlowHit": "[1]#迟缓",
|
||||
"sklExplode": "[0]#自爆",
|
||||
"sklSummon": "[0]#血祭",
|
||||
"sklSummonName": "使魔",
|
||||
"sklSummoned": "召唤出[1]",
|
||||
"sklThunder": "[0]#雷击术",
|
||||
"sklThunderEnd": "[0][回避]了攻击",
|
||||
"benchmarking": "实力评估中...[2]%",
|
||||
"benchmarkRatio": "》 胜率: [2]%",
|
||||
"benchmarkScore": "》 实力评分: [2]",
|
||||
"benchmarkSkill": "频率: [2]%",
|
||||
"searchInvalid": "错误,目前最多支持8000人搜索",
|
||||
"searchStart": "搜索开始...",
|
||||
"searchEnd": "搜索结束",
|
||||
"searchFailed": "但是一无所获",
|
||||
"bossName_aokiji": "青雉",
|
||||
"sklAokijiDefend": "[0][吸收]所有冰冻伤害",
|
||||
"sklAokijiIceAge": "[0]#冰河时代",
|
||||
"bossName_conan": "柯南",
|
||||
"sklConanKillUnknown": "[0]在一间密室中发现了一具无名尸体",
|
||||
"sklConanThinking": "[0]正在进行推理",
|
||||
"sklConanThinkingFinish": "[0]推理完毕",
|
||||
"sklConanThinkingFinish2": "真相只有一个",
|
||||
"sklConanThinkingFinish3": "凶手就是你",
|
||||
"sklConanKillLast": "[1]",
|
||||
"sklConanKill": "[0]在一间密室中发现了[1]的尸体",
|
||||
"bossName_covid": "新冠病毒",
|
||||
"sklCovidDamage": "[1][肺炎]发作",
|
||||
"sklCovidICU": "[1]在重症监护室无法行动",
|
||||
"sklCovidStayHome": "[1]在家中自我隔离",
|
||||
"sklCovidInfect": "[0]和[1]近距离接触",
|
||||
"sklCovidPrevent": "但[1]没被感染",
|
||||
"sklAttack": "[0]发起攻击",
|
||||
"sklCovidMutate": "[1]所感染的病毒发生变异",
|
||||
"sklCovidHit": "[1]感染了[新冠病毒]",
|
||||
"bossName_ikaruga": "斑鸠",
|
||||
"sklIkarugaDefend": "[0][吸收]所有奇数伤害",
|
||||
"sklIkarugaAttack": "[0]#能量释放",
|
||||
"bossName_lazy": "懒癌",
|
||||
"sklLazyDamage": "[1][懒癌]发作",
|
||||
"sklLazySkipTurn1": "[0]打开了[Steam]",
|
||||
"sklLazySkipTurn2": "[0]打开了[守望先锋]",
|
||||
"sklLazySkipTurn3": "[0]打开了[文明6]",
|
||||
"sklLazySkipTurn4": "[0]打开了[英雄联盟]",
|
||||
"sklLazySkipTurn5": "[0]打开了[微博]",
|
||||
"sklLazySkipTurn6": "[0]打开了[朋友圈]",
|
||||
"sklLazySkipTurn0": "这回合什么也没做",
|
||||
"sklLazyHit": "[1]感染了[懒癌]",
|
||||
"bossName_mario": "马里奥",
|
||||
"bossMarioGrow10": "[0]得到[蘑菇]",
|
||||
"bossMarioGrow11": "[0]攻击力上升",
|
||||
"bossMarioGrow20": "[0]得到[火焰花]",
|
||||
"bossMarioGrow21": "[0]学会[火球术]",
|
||||
"bossMarioGrow30": "[0]得到[奖命蘑菇]",
|
||||
"bossMarioLife": "[0]还剩[2]条命",
|
||||
"bossMarioRevive": "[0]满血复活",
|
||||
"bossName_mosquito": "蚊",
|
||||
"bossName_saitama": "一拳超人",
|
||||
"saitamaHungry": "[0]觉得有点饿",
|
||||
"saitamaLeave": "[0]离开了战场",
|
||||
"bossName_slime": "史莱姆",
|
||||
"sklSlimeSpawn": "[0][分裂]",
|
||||
"sklSlimeSpawned": "分成了[0] 和 [1]",
|
||||
"bossName_sonic": "索尼克",
|
||||
"bossName_yuri": "尤里",
|
||||
"sklYuriControl": "[0]#心灵控制",
|
||||
"endMessage": "你已经玩了[0]局了",
|
||||
"continueGame": "继续游戏",
|
||||
"navigationLink": "navigation.html",
|
||||
"errorMaxPlayer": "错误,目前最多支持1000人PK",
|
||||
"errorMinPlayer": "错误,请至少输入两行名字",
|
||||
"welcome": "名字竞技场",
|
||||
"welcome2": "(MD5大作战10周年纪念)",
|
||||
"winnerName": "胜者",
|
||||
"score": "得分",
|
||||
"killedCount": "击杀",
|
||||
"killerName": "致命一击",
|
||||
"loserName": "败者",
|
||||
"returnTitle": "返回",
|
||||
"shareTitle": "分享",
|
||||
"helpTitle": "帮助",
|
||||
"HP": "HP",
|
||||
"detail": " 攻 [] 防 [] 速 [] 敏 [] 魔 [] 抗 [] 智 []",
|
||||
"inputTitle": "名字竞技场",
|
||||
"inputPlaceholder": "每行输入一个名字 \\n \\n组队对战时用空行隔开组队",
|
||||
"startFight": "开 始",
|
||||
"closeTitle": "关闭",
|
||||
"fastTitle": "快进",
|
||||
"challengeLabel": "挑战Boss",
|
||||
"selectBossHint": "选择Boss",
|
||||
"win": "[2]获得胜利",
|
||||
"minionDie": "[1]消失了",
|
||||
"damage": "[1]受到[2]点伤害",
|
||||
"die": "[1]被击倒了",
|
||||
"sklMagicAttack": "[0]发起攻击",
|
||||
"sklCounter": "[0]#反击",
|
||||
"defend": "[0]#防御",
|
||||
"sklHide": "[0]#隐匿",
|
||||
"sklMerge": "[0]#吞噬",
|
||||
"sklMerged": "[0]属性上升",
|
||||
"sklProtect": "[0]#守护",
|
||||
"sklReflect": "[0]#伤害反弹",
|
||||
"sklReraise": "[0]#护身符",
|
||||
"sklUpgrade": "[0]#垂死",
|
||||
"sklUpgraded": "[0]所有属性上升",
|
||||
"sklUpgradeCancel": "[1]的[垂死]属性被打消",
|
||||
"sklZombieName": "丧尸",
|
||||
"sklZombie": "[0]#召唤亡灵",
|
||||
"sklZombied": "[2]变成了[1]",
|
||||
"weaponDeathNoteAtk": "[0]在[死亡笔记]写下[1]的名字",
|
||||
"weaponRModifierUse": "[0]#属性修改器",
|
||||
"weaponS11_0": "[0]在促销日[购买]了武器",
|
||||
"weaponS11_1": "但是并没有什么用",
|
||||
"weaponS11_2": "增加了[2]点",
|
||||
"weaponS11Done1": "[0]信用卡刷爆",
|
||||
"weaponS11Done3": "[0]砍下了自己的左手",
|
||||
"weaponS11Done2": "[0]砍下了自己的右手"
|
||||
}`;
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="main" id="md5">
|
||||
<div class="plist"></div>
|
||||
<div class="pbody"></div>
|
||||
</div>
|
||||
<script src="md5.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
20592
node_run/static/md5.js
Normal file
20592
node_run/static/md5.js
Normal file
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user