PADDashFormation/monsters-info/official-API/test-mon.html

146 lines
4.8 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>怪物代码测试</title>
<script type="text/javascript" src="parseCard.js" ></script>
<script type="text/javascript">
var cards;
var pcards;
var skills;
var pskills;
var GM_xmlhttpRequest = function(GM_param) {
var xhr = new XMLHttpRequest(); //创建XMLHttpRequest对象
xhr.open(GM_param.method, GM_param.url, true);
if (GM_param.responseType) xhr.responseType = GM_param.responseType;
if (GM_param.overrideMimeType) xhr.overrideMimeType(GM_param.overrideMimeType);
xhr.onreadystatechange = function() //设置回调函数
{
if (xhr.readyState === xhr.DONE) {
if (xhr.status === 200 && GM_param.onload)
GM_param.onload(xhr);
if (xhr.status !== 200 && GM_param.onerror)
GM_param.onerror(xhr);
}
}
for (var header in GM_param.headers) {
xhr.setRequestHeader(header, GM_param.headers[header]);
}
xhr.send(GM_param.data ? GM_param.data : null);
}
function g(id)
{
let idx = cards.findIndex(c=>c[0] === id);
let m = cards[idx];
console.log("原始数组",m);
console.log("已解析对象",pcards[idx]); //输出人家大佬的格式
var pn = ["火","水","木","光","暗"];
var p = [pn[m[2]]||"无", pn[m[3]]||"无"];
var tn = ["0进化","1平衡","2体力","3回复","4龙","5神","6攻击","7恶魔","8机械","9","10","11","12觉醒","13","14强化","15卖钱"];
//因为觉醒数量的不一样,所以需要制定序号
var awokenCIdx = 58+m[57]*3; //awoken Count Index觉醒数量的序号
var superAwokenIdx = awokenCIdx+1+m[awokenCIdx]; //super awoken Index超觉醒的序号
//类型
var type = [];
type.push(tn[m[5]]);
if (m[6]!=-1) //第二个type
type.push(tn[m[6]]);
if (m[superAwokenIdx+3]!=-1) //第三个type要倒着来
type.push(tn[m[superAwokenIdx+3]]);
console.log("No.%d %s [%s/%s]Lv%d类型%s%d星COST%d%s个觉醒三维%s110级增长%d%%%s当二技1级吃经验%d1级卖¥%d%dMP成长类型%d升2级经验%d技能编号%d队长%d进化链根%d%s究极退化为%d进化素材ID[%d,%d,%d,%d,%d]",
m[0], //ID
m[1], //名字
p[0],p[1], //属性
m[10], //最大等级
type.join("|"), //类型
m[7], //星级
m[8], //cost
m[58+m[57]*3], //觉醒数
m[14]+"-"+m[15]+"/"+m[17]+"-"+m[18]+"/"+m[20]+"-"+m[21], //三维
m[superAwokenIdx+9], //110级增长
m[superAwokenIdx+7] & 1?"能":"不能", //二技
Math.round(m[11]/4), //1级经验每级直接乘
Math.round(m[13]/10), //1级卖钱
m[superAwokenIdx+4], //MP
m[23], //成长类型
Math.round(m[23] * Math.pow((2 - 1) / 98,m[24])), //1级升2级经验
m[25], //技能编号
m[26], //队长技能编号
m[superAwokenIdx+1], //进化根编号
m[4]?"可":"不可", //可退化?
m[40], //可退化?
m[41],m[42],m[43],m[44],m[45], //进化素材ID 1-5
);
}
//将二进制flag转为数组
function flags(num) {
const arr = [];
for (let i = 0; i < 32; i++) {
if (num & (1 << i)) {
arr.push(i);
}
}
return arr;
}
fetch("ja-card.json").then(async response=>{
const originalJSON = await response.json();
cards = originalJSON.card;
pcards = cards.map(c=>{
let card = new Card(c);
//将可能的flag显示为二进制
for (let i = 1; card[`unk${i.toString().padStart(2,0)}`] !== undefined; i++) {
let value = card[`unk${i.toString().padStart(2,0)}`];
if (value > 0)
card[`unk${i.toString().padStart(2,0)}Flags`] = flags(value);
}
card.flagsFlags = flags(card.flags);
// card.unk01bin = card.unk01.toString(2);
// card.unk02bin = card.unk02.toString(2);
// card.unk03bin = card.unk03.toString(2);
// card.unk04bin = card.unk04.toString(2);
// card.unk05bin = card.unk05.toString(2);
// card.unk06bin = card.unk06.toString(2);
// card.unk07bin = card.unk07.toString(2);
// card.unk08bin = card.unk08.toString(2);
// card.flagsbin = card.flags.toString(2); //已知一些flag
return card;
});
});
/*fetch("ja-skill.json").then(async response=>{
const originalJSON = await response.json();
skills = originalJSON.skill;
pskills = skills.map((s, idx)=>{
let skill = new Skill(idx, s);
return skill;
});
});
let enemySkills;
fetch("ja-enemy_skill.json").then(async response=>{
const originalJSON = await response.json();
enemySkills = originalJSON.enemy_skills;
});*/
</script>
</head>
<body>
<script type="text/javascript">
window.onload = function()
{
const iptID = document.querySelector("#mid");
const btn = document.querySelector("#get");
get.onclick = function(){
let mid = parseInt(iptID.value,10);
if (mid>=9900 && mid < 1e5)mid+=100
g(mid);
}
}
</script>
<input type="number" id="mid"><input id="get" type="button" value="获取怪物">
</body>
</html>