Files
chuanqi-client-config/json2lua.js
Kubbo 054843ae1e feat(OfficeConfig): 更新官职配置并添加新官职
- 更新了现有的官职配置,调整了部分官职的属性和消耗
- 添加了新的官职等级,包括太师、安乐公、辅国公、奉国公、镇国公等
- 优化了官职名称的显示格式,增加了◆符号框住部分官职名称
- 更新了 json2lua 脚本,将 OfficeConfig.json 添加到处理列表中
2025-01-14 21:22:10 +08:00

53 lines
2.0 KiB
JavaScript

const { log } = require('console');
const fs = require('fs')
const path = require('path');
const folderPath = "./configs"
function jsonToLua(jsonObj, indent = '', linefeed = '\n') {
let luaStr = '';
const strKey = key => isNaN(key) ? `${key}` : `[${key}]`;
for (let key in jsonObj) {
let value = jsonObj[key];
key = strKey(key)
if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
// 对象
luaStr += `${indent}${key} = {`;
luaStr += jsonToLua(value, indent + ' ');
luaStr += `${indent}},\n`;
} else if (Array.isArray(value)) {
// 数组
luaStr += `${indent}${key} = {`;
value.forEach(item => {
if (typeof item === 'string') {
luaStr += `${indent} '${item}',`;
} else if (typeof item == 'object') {
luaStr += `{${jsonToLua(item, '', '')}},`;
} else {
luaStr += `${indent} ${item},`;
}
});
luaStr += `${indent}},\n`;
} else {
// 基础类型
if (typeof value === 'string') {
luaStr += `${indent}${key}="${value}",${linefeed}`;
} else {
luaStr += `${indent}${key} = ${value},${linefeed}`;
}
}
}
return luaStr;
}
const start = () => {
const files = fs.readdirSync(folderPath);
// 过滤出所有的 JSON 文件
const jsonFiles = files.filter(file => path.extname(file) === '.json').filter(file => ["StdItems","ItemMergeConfig","MergeConfig","MergeTotal","RecyclingSettingConfig","OfficeConfig"].map(e => `${e}.json`).includes(file));
jsonFiles.forEach(file => {
const json = JSON.parse(fs.readFileSync(path.join(folderPath, file), 'utf8'))
const filename = path.basename(file, path.extname(file));
const luaConfig = `${filename}={\n${jsonToLua(json)}\n}`
fs.writeFileSync(`./luaConfigs/${filename}.config`, luaConfig);
});
}
start()