找回密码
 register

QQ登录

只需一步,快速开始

查看: 82|回复: 0

[游戏教程] JavaScript代码版本:怪物掉落爆率信息提取器

[复制链接]

[游戏教程] JavaScript代码版本:怪物掉落爆率信息提取器

[复制链接]
  • 打卡等级:热心大叔
  • 打卡总天数:94
  • 打卡月天数:17
  • 打卡总奖励:94
  • 最近打卡:2025-01-18 01:28:20
Waylee

主题

0

回帖

1万

积分

仙帝

积分
12364
Waylee 2023-6-13 19:09 | 显示全部楼层 |阅读模式

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×
文章编辑人员:雪舞
内容测试时间:2023-6-13 19:07:10
测试环境:node 18.16.0 LTS
测试版本:Windows 10 64bit

在Node.js中使用 iconv-lite 模块处理GBK编码,你需要首先安装这个模块,可以通过运行npm install iconv-lite来安装。

const fs = require('fs');
const iconv = require('iconv-lite');

function loadFile(filename) {
    const buffer = fs.readFileSync(filename);
    const data = iconv.decode(buffer, 'GBK');
    const lines = data.split('\n').filter(line => line.trim() !== '' && !line.trim().startsWith('#') && line.includes('\t'));
    return lines.map(line => line.split('\t'));
}

function createDict(data, keyCol, valCol) {
    const dict = {};
    data.forEach(row => {
        dict[row[keyCol]] = row[valCol];
    });
    return dict;
}

const monsterDrops = loadFile('MonsterDropBoxs.txt');
const dropBoxContents = loadFile('DropBoxContent.txt');
const monsterAttrs = loadFile('MonsterAttrExTable.txt');
const commonItems = loadFile('CommonItem.txt');
const equipBases = loadFile('EquipBase.txt');
const gemInfos = loadFile('GemInfo.txt');

const monsterDict = createDict(monsterAttrs, 0, 1);
const commonItemDict = createDict(commonItems, 0, 6);
const equipBaseDict = createDict(equipBases, 0, 10);
const gemInfoDict = createDict(gemInfos, 0, 7);

const monsterDropsDict = {};

monsterDrops.forEach(drop => {
    const monsterId = drop[0];
    const monsterName = monsterDict[monsterId] || 'Unknown';
    const dropBoxes = drop.slice(3);

    dropBoxes.forEach(boxId => {
        if (boxId === '-1') return;
        const boxContents = dropBoxContents.find(content => content[0] === boxId);
        if (!boxContents) return;
        const items = boxContents.slice(4);

        items.forEach(itemId => {
            if (itemId === '-1') return;
            const itemName = commonItemDict[itemId] || equipBaseDict[itemId] || gemInfoDict[itemId];
            if (itemName) {
                if (!monsterDropsDict[monsterName]) {
                    monsterDropsDict[monsterName] = new Set();
                }
                monsterDropsDict[monsterName].add(itemName);
            }
        });
    });
});

for (let monster in monsterDropsDict) {
    console.log(`Monster: ${monster}, Drops: ${Array.from(monsterDropsDict[monster]).join(', ')}`);
}


QQ截图20230613190929.jpg



您需要登录后才可以回帖 登录 | register

本版积分规则

雪舞知识库 | 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 |天天打卡

GMT+8, 2025-1-20 03:44 , Processed in 0.126231 second(s), 10 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表