146 lines
4.8 KiB
HTML
146 lines
4.8 KiB
HTML
<!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个觉醒,三维%s,110级增长%d%%,%s当二技,1级吃经验%d,1级卖¥%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>
|