Compare commits

...

107 Commits

Author SHA1 Message Date
f941751304 feat(login): 添加奶昔论坛第三方登录支持
- 在登录页面增加奶昔论坛登录选项
- 实现奶昔论坛OAuth2.0认证流程
- 添加用户绑定和直接登录功能
- 优化登录界面布局和样式
2025-04-17 16:07:34 +08:00
eb74743826 chore(config): 更新物品掉落组 ID
将物品 ID 为 48394 的掉落组 ID 从 100881 修改为 100882
2025-04-17 15:50:46 +08:00
8171485c95 refactor(config): 更新物品合成配置
- 将物品 ID 3206 更改为 72
- 更新相应的 Eid 和 table 中的 ID
2025-04-17 15:20:28 +08:00
8e4d5fd69d feat(config): 增加兑换功能并调整道具数量
- 在 ItemMergeConfig.json 中添加了新的兑换配置项
- 在 StdItems.json 中将多个道具的最大堆叠数量从 9999 调整为 99999
2025-04-17 15:11:25 +08:00
d700be4fe7 feat(config): 调整道具合成数量
- 将多个道具的合成数量从 5 个调整为 3 个
- 涉及的道具 ID 包括 365、366、367、368、369、370、371、863 和 864
2025-04-17 14:56:39 +08:00
1c414a5f8c feat(configs): 更新 StdItems.json 道具配置
- 将道具 id 为 36303 的可叠加数量从 0 修改为 9999
- 新增道具 id 为 1395 的"天赐机缘盒"配置项
2025-04-17 14:41:20 +08:00
96ea0c4a4c build: 更新物品配置并调整数据处理顺序
- 新增 StdItems.xlsx 文件,用于物品配置
- 修改 json2excel.js 中的处理顺序:
  - 注释掉 SpecialRingConfig 的处理
  - 解除 StdItems 处理的注释
2025-04-17 14:17:03 +08:00
dbcd06b2b2 fix: 修改文件名大小写 2025-02-23 18:38:31 +08:00
ee500c51be feat(config): 设置四大内功装备的可叠加数量为 999
- 将银针[四方]、心决[四方]、金印[四方]和檀珠[四方]的可叠加数量从 0 修改为 999
- 此修改提高了玩家携带这些重要装备的数量,便于内功宝石的激活和使用
2025-02-23 18:11:03 +08:00
66d96187b2 feat(config): 更新月卡配置并增加新卡种
- 更新现有月卡的每日奖励、购买奖励等信息
- 新增"橙星"和"橙月"两种新卡种
- 调整部分卡种的开放条件,如"橙星"和"橙月"需要满足特定等级条件
2025-02-18 23:14:29 +08:00
aixianling
4758f7e90f feat(config): 将五福内功装备的可叠加数量设置为 999
- 修改了银针[五福]、心决[五福]、金印[五福]和檀珠[五福]的可叠加数量
- 从不可叠加(dup: 0)改为可叠加 999 个(dup: 999)
- 此修改可能旨在提高玩家携带这些装备的便利性
2025-02-18 17:43:12 +08:00
0923c0d0a7 feat(ShopConfig): 更新商城配置
- 修改商品 ID 从 1394 到 1242
- 调整限制次数从 15 次到 0 次
- 变更限制类型从 2 到 3
- 更新商品价格配置:
  - ID 从 4 改为 3
  - 类型从 4 改为 3
  - 价格从 1000000 降至 188
2025-02-13 22:08:36 +08:00
56bea22ff3 refactor(configs): 调整道具合并配置和商店配置
- 修改 ItemMergeConfig.json 中的 mergelimit 字段,将 circle 改为 zs
- 更新 ShopConfig.json 中的商品 ID、价格和限制条件
2025-02-12 23:42:37 +08:00
e3fdac04bc refactor(config): 简化 ItemMergeConfig.json 中的兑换限制提示文本
- 将 "转生等级15且官职为5珠亲王以上方可兑换" 修改为 "转生15且5珠亲王以上方可兑换"
- 优化了提示文本的简洁性,保留了原有的语义
2025-02-12 23:05:50 +08:00
4b022cde37 feat(config): 新增合成配置项
- 在 ItemMergeConfig.json 中添加了新的合成配置项,ID 为 3301
- 新增配置项包括合成条件、产出物品及限制条件等信息
- 此次更新增加了合成产出的多样性和游戏内兑换的限制条件
2025-02-12 23:00:57 +08:00
e6b4ffd952 feat(configs): 添加三阶魔器宝箱物品配置
- 在 StdItems.json 文件中添加了新的物品配置,ID 为 1394
- 该物品为三阶魔器宝箱,具有以下特点:
  - 打开后可随机获得三阶魔器中的任意一件
  - 获得随机奖励
  - 限制交易、销毁和出售
  - 设有专属图标和描述
  - 属于高级物品,具有较高的品质和稀有度
2025-02-12 22:49:57 +08:00
d7bfd860dc fix(configs): 调整物品使用次数限制
- 修改 StdItems.json 文件中物品类型 13 的使用次数限制
- 将物品类型 13 的使用次数从 1200 次降低到 120 次
- 此修改旨在平衡游戏内物品的使用频率和效果
2025-02-12 22:35:15 +08:00
3de79cc1fa refactor(ShopConfig): 移除 ShopConfig 中的冗余配置项
- 删除了 ShopConfig 中的多个冗余 shopid 配置项
- 优化了 ShopConfig 的结构,提高了配置的可读性和维护性
- 同时更新了 lua2json 工具的配置,以适应新的 ShopConfig 结构
2025-02-11 17:11:24 +08:00
c24eb74bcf fix: 修改文件名大小写 2025-02-11 14:38:04 +08:00
3c8e92a7d1 feat(config): 移除物品合成配置中的合成10次按钮
- 在 ItemMergeConfig.json 文件中,移除了两个物品配置中的 "buttontxt10" 和 "mergebutton10" 字段
- 受影响的物品 ID 为 3402 和 3404
2025-02-11 13:53:02 +08:00
3c926a4f46 refactor(configs): 调整飞鞋道具属性
- 移除 307 和 308 道具的 isShowUseBtn 属性
- 将 308 道具的 dup 属性从 9999 修改为 99
2025-01-27 23:09:04 +08:00
e4fc710ca2 fix(configs): 修正飞鞋点数道具数量
- 将道具"dup"属性值从 9999 修改为 99
- 确保双击使用时正确增加 99 点飞鞋点数
2025-01-27 23:07:56 +08:00
1a3db7fb28 fix(configs): 修改 Monster 配置中的 dropid
将 Monster 配置中 entityid 为 433 的怪物的 dropid 从 200120 修改为 200119。
2025-01-27 22:45:00 +08:00
b0591ef625 refactor(config): 调整合成系统材料消耗
- 修改了多个物品的合成条件,将材料消耗量增加了10倍
- 更新了批量设置模板,相应调整了材料消耗参数
2025-01-27 22:39:20 +08:00
55c8ae5fb6 feat(config): 新增物品合成配置
- 添加了四个新的物品合成配置项(Eid 3405 至 3408)
- 新增合成消耗金币和产出物品的数量配置
- 配置了合成按钮文本和合成次数选项
2025-01-27 20:44:33 +08:00
a79ce8d06f refactor(config): 调整物品合成配置
- 修改了多个物品的合成数量和结果物品 ID
- 优化了合成次数的设置,提高了部分物品的合成效率
- 统一了合成结果物品的类型和数量
2025-01-27 20:14:56 +08:00
608e016890 fix: 修改文件名大小写 2025-01-26 22:56:26 +08:00
b534c950b5 refactor(configs): 移除 ItemMergeConfig.json 中的冗余配置项
- 删除了 ItemMergeConfig.json 中的冗余配置项 72
- 优化配置文件结构,提高可维护性
2025-01-26 22:37:24 +08:00
c21e705ccb refactor(configs): 优化代金券使用界面配置
- 修改了多个代金券物品的 openUi 配置,统一为使用 app.RecycleWin 界面
- 调整了部分代金券的 param1 参数顺序
- 删除了两个高额代金券物品的 openUi 配置
2025-01-26 19:59:57 +08:00
e86eec51b7 feat(config): 更新道具合成配置和界面参数
- 调整多倍经验瓶和代金券的合成数量和条件
- 统一开放界面参数格式
- 新增部分道具的回收功能
2025-01-26 19:34:26 +08:00
66ab00b3a4 refactor(configs): 修改物品使用界面配置
- 将多倍经验瓶、精力水晶和各种代金券的使用界面从 BagBatchUseWin 改为 RecycleWin
- 调整 openUi 参数,增加 param1 数组以指定具体配置
- 统一代金券类物品的 RecycleWin 参数配置
2025-01-24 19:30:01 +08:00
200dc23305 feat(config): 更新公会捐赠配置并增加转换次数
- 修改 GuildDonateConfig.json 中的 limittimes 字段,从 5 调整为 50
- 在 json2lua.js 中添加 GuildDonateConfig 到处理列表,以便进行 JSON 到 Lua 的转换
2025-01-24 19:02:39 +08:00
de74aaf33a feat(config): 调整道具合并配置和新增传说级腰带
- 修改 ItemMergeConfig.json 中多个配置项的 count 值,降低合并所需的金币数量
- 在 StdItems.json 中添加新的传说级腰带"应龙破天束"的配置信息
2025-01-24 17:47:54 +08:00
9609ad494d refactor(config): 调整道具合成数量
- 修改了多个道具的合成数量,包括:
  - 道具ID 843 的合成数量从 500 调整为 200
  - 道具ID 846 的合成数量从 500 调整为 300
  - 道具ID 847 的合成数量从 500 调整为 200
  - 道具ID 844 的合成数量从 1000 调整为 200
  - 道具ID 845 的合成数量从 500 调整为 100
- 这些修改可能会影响游戏中的道具合成和平衡
2025-01-24 16:34:52 +08:00
aixianling
c808fa1764 feat(configs): 添加山海经系列装备
- 新增传说级靴子、头盔、手镯和戒指
- 每件装备都有独特的名称、图标和属性
- 所有新装备均为传说级,具有较高的战斗力和特殊效果
2025-01-24 14:32:19 +08:00
aixianling
0c1a372c03 feat(config): 调整 UpstarConfig 中类型 75 属性的值
- 将类型 75 属性的值从 1-20 调整为 100-2000
- 涉及多个 JSON 对象,包括 id 为 83828、84145、1386 等
- 此修改可能影响游戏中的某些属性或效果,需谨慎测试
2025-01-24 13:06:03 +08:00
aixianling
337a8a665b fix: 修改文件名大小写 2025-01-24 12:54:25 +08:00
aixianling
403a2f66a3 fix(configs): 修正霜华物品恢复视图的ID
- 将霜华物品恢复视图中的物品ID从 846 修改为 845
- 这个修改可能会影响到游戏中的物品恢复机制,需要确保相关功能正常运作
2025-01-24 12:30:40 +08:00
aixianling
7db9bad826 fix: 修改文件名大小写 2025-01-24 11:59:34 +08:00
aixianling
35098f622e fix(config): 调整上游价格配置
- 将商品ID为845的上游价格从2000元调整为1000元
2025-01-24 11:40:48 +08:00
aixianling
a08db6e4a1 feat(config): 添加 UpstarPriceConfig 到 JSON 转换工具范围
- 在 json2lua.js 工具中添加 UpstarPriceConfig 配置项
- 更新 UpstarPriceConfig.json,增加新商品配置
2025-01-24 11:30:56 +08:00
aixianling
53d3e0b443 feat(config): 添加烛龙日月佩合成配置及物品属性
- 在 ItemMergeConfig.json 中添加烛龙日月佩的合成配置
- 在 StdItems.json 中添加烛龙日月佩的物品属性
- 优化配置文件格式,调整部分缩进和换行
2025-01-24 10:59:52 +08:00
aixianling
1754817df3 feat(configs): 为代金券添加专门的批量使用界面
- 在 StdItems.json 文件中,为 15元、30元、50元和 80元代金券添加了 "openUi" 字段
- 指定使用 "app.BagBatchUseWin" 界面进行批量使用操作
- 此修改提高了代金券使用的便捷性,提升了用户体验
2025-01-24 09:31:14 +08:00
aixianling
5f2f15e35c refactor(configs): 更新 NPC 图像资源
- 将 NPC 图像资源从 "ch_NPC_018" 更改为 "ch_NPC_019"
- 此修改涉及 NPC 金蛇的外观,可能与春节活动相关
2025-01-24 09:19:36 +08:00
aixianling
b68afd74bf feat(Npc): 新增新春使者 NPC 标题
为新春使者 NPC 添加了新的标题配置,包括标题的位置和样式。这个改动将使 NPC 在游戏中的显示效果更加完善。

- 在 NPC 配置中添加了 Npctitle 属性
- 设置了标题的坐标位置和样式来源
2025-01-23 18:00:35 +08:00
aixianling
812bece708 refactor(configs): 更新拜年礼包活动时间和新春使者对话内容
- 将拜年礼包活动的开始时间从 2025.1.22 调整为 2025.1.28
- 更新新春使者的对话内容,增加活动时间提示
2025-01-23 17:49:11 +08:00
aixianling
ffce1d7753 refactor(configs): 修改活动类型
- 将 ActivityType 为 9 的活动修改为 ActivityType 5
- 此修改影响"拜年礼包"活动
2025-01-23 17:38:40 +08:00
aixianling
17f3c9c9a3 refactor(configs): 重新格式化 NpcFunctions.json 文件
- 使用缩进和换行重新格式化 JSON 结构,提高可读性
- 添加新的 NPC 功能配置项:
  - id 144: { "id": 144, "funcType": 5, "param1": 7, "param2": 5 }
- 优化现有配置项的格式,统一参数风格
2025-01-23 17:34:43 +08:00
aixianling
3f69a84c26 refactor(configs): 调整拜年礼包活动时间
- 将拜年礼包活动的开始时间从 2025.1.28 修改为 2025.1.22
- 保持结束时间不变,仍为 2025.2.13
2025-01-23 17:31:08 +08:00
aixianling
30d8e8b90b fix: 修改文件名大小写 2025-01-23 17:24:18 +08:00
aixianling
dd5dde1ac5 feat(configs): 添加神话年兽配置
- 在 Monster.json 文件中添加了新的年兽配置
- 新增年兽的属性包括名称、等级、经验、模型ID等
- 配置了年兽的技能和音乐效果
2025-01-23 16:02:44 +08:00
aixianling
af106594d1 feat(config): 添加疗伤药和四象丹的回收配置并调整属性值
- 在 RecyclingSettingConfig.json 中添加疗伤药和四象丹的回收配置
- 更新 StdItems.json 中疗伤药和四象丹的属性值
- 在 json2lua.js 中添加 RecyclingSettingConfig 的引用
2025-01-23 14:58:27 +08:00
aixianling
bc24c9f2b4 fix(configs): 修正 Monster 配置中多个实体的经验值
- 将多个实体的 exp 值除以 10,修正了过高的经验值
- 涉及的实体 id 包括 352、353、384、401、408、410、414、416、421 和 423
2025-01-23 13:27:09 +08:00
aixianling
c4912fd3af fix(config): 修复怪物经验配置错误
- 将多个怪物的经验值从错误的高值修正为正确的低值
- 涉及多个怪物实体,包括但不限于实体 ID 为 247、249、250 等
- 修正后的经验值通常为原值的十分之一
2025-01-23 13:24:14 +08:00
aixianling
857ba6ce45 fix: 修改文件名大小写 2025-01-23 13:13:08 +08:00
aixianling
73aad793dd build(deploy): 更新游戏配置文件
- 在打包脚本中添加 gameEui.json 文件
- 确保 gameEui.json 被正确打包到输出的 zip 文件中
2025-01-23 11:59:42 +08:00
aixianling
b6ad89a12c feat(configs): 提升神罚武器的攻击速度
- 将神罚武器的攻击速度从 10000 提高到 20000
- 此修改将显著提升神罚武器的输出能力
2025-01-23 11:50:10 +08:00
a230d62bfc fix: 修改文件名大小写 2025-01-22 22:53:07 +08:00
aixianling
6ff25a47b9 refactor(batchSetting): 重构批量设置脚本
- 将单个配置文件改为模块化设计,便于维护和扩展
- 新增 UpstarConfig.js 文件,作为独立的配置模块
- 重构 batchSetting.js 文件,使其支持多配置文件的批量处理
- 优化代码结构,提高可读性和可维护性
2025-01-22 18:03:12 +08:00
aixianling
2f55a178b5 feat(tools): 添加 JSON 转 Excel 功能
- 新增 json2excel.js 工具脚本,用于将 JSON 数据转换为 Excel 文件
- 在 package.json 中添加 xlsx 依赖
- 使用 SpecialRingConfig.json 作为示例进行转换并生成 SpecialRingConfig.xlsx 文件
2025-01-22 17:43:03 +08:00
aixianling
cbfbda0fed fix: 修改文件名大小写 2025-01-22 16:45:09 +08:00
aixianling
724291ec51 feat(ItemMergeConfig): 优化合成配置并添加新功能
- 为多个物品合并配置添加了"合成10次"按钮文本
- 在多个配置中添加了 mergebutton10 字段,支持合成10次功能
- 调整了部分配置的结构,优化了可读性和可维护性
2025-01-22 15:39:57 +08:00
aixianling
88bde2df69 refactor(tools): 更新 JSON to Lua 转换工具
- 移除了未使用的 NpcTransConf 配置项
- 优化了 scope 数组,使用 filter(Boolean) 过滤掉注释掉的项
- 调整了代码格式,提高可读性
2025-01-22 15:33:57 +08:00
aixianling
89d5a0eeda feat(config): 新增坐骑合成配置
- 在 ItemMergeConfig.json 中添加了多个新的坐骑合成配置项
- 新增的配置项包括 1801、1802、1803、1804、1805 和 1806
- 每个配置项都定义了坐骑的合成条件、所需材料和官职限制
- 部分配置项的合成条件随官职等级提升而变化
2025-01-22 15:32:02 +08:00
6bdbf1060f feat(configs): 调整 100 元返利卡的持有数量上限
- 将 100 元返利卡的 dup 值从 99 修改为 9999
- 此修改大幅提高了玩家可以持有的返利卡数量,增加了游戏内的奖励累积潜力
2025-01-21 23:19:37 +08:00
4259057c89 feat(NpcTransConf): 更新牛魔寺庙传送配置
- 将绑定金币消耗改为元宝消耗
- 调整消耗数量:20、40、60、80、100、150
- 更新传送点名称,显示新的元宝消耗
2025-01-21 23:08:15 +08:00
b1e7343d12 fix(configs): 修改 Monster 配置中 aiConfigId
将 Monster 配置中 ID 为 477 的怪物的 aiConfigId 从 2 修改为 29。
2025-01-21 22:52:40 +08:00
6b1980a672 fix(configs): 修改[神话]青龙的道具ID
- 将[神话]青龙的propid从439修改为449
- 这个修改可能会影响到游戏中的道具生成和平衡性
2025-01-21 22:47:25 +08:00
bf7ecccb73 feat(configs): 添加新怪物 [牛魔]祭司
- 新增怪物配置,包括属性、技能和音乐设置
- 怪物名称:[牛魔]祭司
- 等级:300
- 经验:90000
- 模型ID:30168
- 技能ID:64、69
2025-01-21 22:18:07 +08:00
cd6ce2b56e fix(configs): 修改 Monster 配置中的 entityid
将 Monster 配置中 entityid 从 476 修改为 467,以修正可能的配置错误。
2025-01-21 21:45:40 +08:00
1f6a2235f7 refactor(configs): 更新 ActivityWelfareConf.json 配置文件
- 移除了 ID 为 2 的配置项 "在线豪礼"
- 保留了其他配置项的结构和内容
- 对配置文件进行了格式化,增加了缩进和换行,提高可读性
2025-01-21 20:58:47 +08:00
3b2d5a9d3c refactor(config): 移除 PlayFunConfig 中的捐赠排名相关配置
- 删除了 id 为 51 的捐赠排名窗口配置
- 保留了其他配置项不变
2025-01-21 20:51:24 +08:00
05039ac8c1 refactor(config): 移除 PlayFunConfig 中的冗余配置项
- 删除了 configs/PlayFunConfig.json 文件中的一个冗余配置项
- 优化配置文件结构,提高可读性和维护性
2025-01-21 20:44:55 +08:00
a05cf425cf refactor(config): 删除过期的 iqiyi QQ 群活动配置
- 移除了 PlayFunConfig.json 文件中已过期的 iqiyi QQ 群活动配置项
- 优化了配置文件结构,提高了可读性和维护性
2025-01-21 20:39:19 +08:00
f90a2e3512 refactor(config): 更新 PlayFunConfig.json 中的 openDay 参数
- 将 openDay 参数从 1 修改为 202501212023,以满足特定的开启需求
- 此修改影响两个位置:isOpenNeed 和 isShowNeed 对象中的 openDay 字段
2025-01-21 20:24:10 +08:00
aixianling
c8e4140f72 refactor(gameEui): 隐藏 QQ 平台相关元素
- 在 gameEui.json 文件中,将 qqGrp 组内的三个子元素(qqOpenID、qqTxt 和 addGrpBtn)的 visible 属性设置为 false
- 此修改旨在根据需求隐藏 QQ 平台相关的 UI 元素,不影响其他功能
2025-01-21 17:42:56 +08:00
aixianling
27deab27c8 fix: 修改文件名大小写 2025-01-21 17:34:53 +08:00
aixianling
8e23aec5d1 refactor: 重命名 gameEui.json 文件
- 将 resource/gameEui.json 重命名为 gameEui.json
- 此更改简化了文件路径,提高了项目结构的清晰度
2025-01-21 17:34:15 +08:00
aixianling
5ceff34ceb fix: 修改文件名大小写 2025-01-21 17:29:04 +08:00
aixianling
3a41e99c48 feat(item): 优化代金券使用体验
- 为金砖、100元代金券、200元代金券和500元代金券添加批量使用功能
- 将100元代金券的最大持有数量从99增加到9999
2025-01-21 17:26:21 +08:00
aixianling
ae4eab6ad4 feat(config): 添加新物品合成配置并调整现有物品合成数量
- 新增 3201、3202、3203、3204、3205 五个物品的合成配置
- 调整物品 4025 的合成数量,从 1000000 降至 100000
- 新增物品合成配置包括合成材料、合成结果、开放服务器天数等信息
2025-01-21 17:11:29 +08:00
aixianling
e15efa8f24 feat(config): 添加物品合成十次功能并调整合并配置
- 在 ItemMergeConfig.json 中添加合成十次相关配置
- 修改 MergeConfig.json 中的 Uitype 属性值
- 更新 json2lua.js 中的配置处理列表
2025-01-21 16:59:14 +08:00
aixianling
b323431d2e feat(Monster): 更新牛魔系列怪物属性并添加归属权开放标识
- 为多个牛魔系列怪物添加 ascriptionopen 字段,设置为 1
- 更新部分怪物的 dropid 和 propid 属性
- 修改怪物名称和属性,如守卫骑士、骷髅卫士等
2025-01-21 16:26:28 +08:00
aixianling
8c99b09760 feat(configs): 提升物品展示品质
- 将多个物品的 showQuality 属性从 4 调整为 5
- 涉及物品 ID:33821、33862、34131
2025-01-21 15:54:58 +08:00
aixianling
e5fe7be76d feat(Monster): 更新巨剑精英怪属性
- 修改掉落物品 ID 从 200130 到 200138
- 更新实体 ID 从 467 到 476
- 旗标 ID 从 5 改为 13
- 添加阴影属性
- 更新技能列表,增加两个新技能
2025-01-21 15:46:21 +08:00
aixianling
6e9904c8b5 feat(configs): 更新 Monster.json 配置
- 调整了多个怪物的属性,包括攻击间隔、经验、模型ID等
- 新增了多个神话级别的怪物配置
- 修改了部分怪物的技能组合
2025-01-21 15:37:17 +08:00
aixianling
b1a35463ee feat(config): 允许时装套装交易和出售
- 修改了多个时装套装的配置,将 denyDeal 和 denySell 属性从 1 改为 0
- 此更改适用于以下时装套装:
  - 夏日踏浪
  - 极地贵族
  - 西装狂徒
  - 大闹天宫
  - 加勒比船长
  - 黄金战衣
  - 黑夜侠客
  - 天命之子
2025-01-21 14:18:29 +08:00
aixianling
36a95e8399 feat(configs): 为返利卡添加打开 UI 设置
- 在 StdItems.json 文件中,为 30元、50元、100元、200元、300元 和 500元 返利卡添加了 openUi 字段
- 设置 openUi 类型为 1,视图为 app.BagBatchUseWin,以指定使用批量使用窗口
2025-01-21 14:08:30 +08:00
517d4278a4 refactor(configs): 修改 Monster.json 中三个怪物的 flagid
- 将 entityid 为 456、471 和 472 的怪物 flagid 从 5 修改为 13
- 此修改可能会影响这些怪物的属性或行为
2025-01-20 23:38:21 +08:00
396ed6514b refactor(configs): 调整幸运女神怪物模型大小
- 将 [神话]幸运女神 怪物的 scale 属性从 100 修改为 50
- 此修改旨在优化游戏平衡或视觉效果
2025-01-20 23:28:23 +08:00
8b681c190e refactor(configs): 更新幸运宝箱配置
- 将模型 ID 从 30117 修改为 30179
- 将名称从 "[神话]幸运宝箱" 修改为 "[神话]幸运女神"
2025-01-20 23:26:57 +08:00
9ca146644c feat(configs): 添加神话幸运宝箱怪物配置
- 在 Monster.json 文件中添加了新的怪物配置
- 新增的怪物名为 "[神话]幸运宝箱"
- 配置了怪物的属性,包括等级、经验、模型ID等
- 添加了怪物的技能和音乐相关设置
2025-01-20 23:21:43 +08:00
c82602661b refactor: 优化批处理逻辑
- 修改了批处理逻辑中的条件判断,提高了代码的准确性和效率
- 将原有的 num > batchMax 改为 num > 0,以确保所有数据都能被处理
2025-01-20 23:11:05 +08:00
b04d49e9a3 refactor: 调整批处理使用函数的调用间隔
- 将批处理使用函数的调用间隔从 500 毫秒修改为 200 毫秒
- 此修改旨在提高批处理的响应速度,减少等待时间
2025-01-20 23:08:06 +08:00
9ee5ee51bf refactor(batchUse): 调整批量使用功能的参数
- 将 batchMax 值从 50 修改为 10
- 将批次间隔时间从 3000 毫秒修改为 500 毫秒
2025-01-20 23:05:51 +08:00
96d41b0948 refactor(main): 调整批量使用的最大值和时间间隔
- 将批量使用的最大值从 99 调整为 50
- 将批量使用的时间间隔从 5000 毫秒调整为 3000 毫秒
2025-01-20 23:02:38 +08:00
e7d2ae2eef feat(item): 添加多倍经验瓶批量使用功能
- 在 StdItems.json 中添加 openUi 字段,用于指定批量使用界面
- 修改批量使用逻辑,限制每次最多使用 99 个
- 优化批量使用体验,增加间隔时间避免频繁操作
2025-01-20 22:59:40 +08:00
08e5907ef6 refactor(main): 调整批量使用道具的发送间隔
- 将批量使用道具的发送间隔从 100 毫秒调整为 5000 毫秒
- 优化了批量使用道具的逻辑,减少频繁发送请求的次数
2025-01-20 22:42:18 +08:00
bd23c5d63a refactor(main): 优化物品使用逻辑
- 修复了物品使用时的变量引用问题
- 引入了 const 关键字来定义不变的变量
- 优化了代码格式,提高了可读性
2025-01-20 22:37:52 +08:00
181fb323c3 refactor: 优化物品批量使用逻辑
- 修改了 batchUse 函数的定义方式,使用箭头函数替代普通函数
- 优化了代码结构,提高了可读性和性能
2025-01-20 22:31:57 +08:00
004a3ea668 style(main): 修复添加按钮逻辑
- 在添加按钮点击后增加 break 语句,避免执行后续的 sure 按钮逻辑
2025-01-20 22:12:08 +08:00
d3540e0806 fix: 修改文件名大小写 2025-01-20 22:11:30 +08:00
b1125e6d8a fix: 修改文件名大小写 2025-01-18 17:38:18 +08:00
95abdbcee6 refactor(configs): 修改 Monster 配置中的实体 ID 和属性 ID
- 将 Monster.json 中的 entityid 从 456 修改为 471
- 将 propid 从 471 修改为 439
2025-01-18 14:28:18 +08:00
c37dba8a2f feat(configs): 更新 Monster 配置
- 调整 [牛魔] 守卫骑士 的 scale 值从 35 增加到 50
- 新增 [神话] 穷奇 怪物配置,包括各项属性和技能设定
2025-01-18 14:20:10 +08:00
86eee9ecb5 refactor(configs): 移除代金券的特定使用界面配置
移除了 100、200、500 元代金券以及 1 万元宝代金券的 openUi 字段,该字段指定了使用物品时打开的界面。
这个改动可能是为了统一代金券的使用流程或简化配置结构。
2025-01-18 13:36:16 +08:00
bd6d11cf9d refactor(configs): 调整疗伤药的品质等级
- 将疗伤药的 itemlevel 从 32 降低到 29
- 此修改可能影响游戏中的物品平衡和玩家体验
2025-01-18 13:24:31 +08:00
33 changed files with 180097 additions and 313485 deletions

View File

@@ -1,10 +1,10 @@
const fs = require('fs')
const key = "UpstarConfig"
const values = [0, 1387, 10, 500, 10000, 5, 0] // 等级,物品ID,属性调整,元宝花费,升级概率
const interval = [1, 0, 15, 50, -450, 10, 1]
const num = 21
const start = () => {
const template = `"S1": {
module.exports = {
key: "UpstarConfig",
desc: "等级,物品ID,属性调整,元宝花费,升级概率",
values: [0, 1387, 10, 500, 10000, 5, 0],
interval: [1, 0, 15, 50, -450, 10, 1],
num: 21,
template: `"S1": {
"consume": [
{
"id": 4,
@@ -51,16 +51,5 @@ const start = () => {
}
],
"rate": S5
}`
const getStr = (index) => {
let str = template
values.forEach((v, i) => {
const reg = new RegExp(`S${i + 1}`, 'g')
str = str.replace(reg, v + index * interval[i])
})
return str
}
const content = Array(num).fill(1).map((e, i) => `${getStr(i)}`).join(',')
fs.writeFileSync(`./dist/${key}.txt`, content)
}
start()
}`,
};

File diff suppressed because it is too large Load Diff

View File

@@ -1 +1,6 @@
{"1":{"Id":1,"actId":10005,"name":"每日签到"},"2":{"Id":2,"actId":10408,"name":"在线豪礼","view":"app.OnlineRewardsView"},"3":{"Id":3,"actId":10149,"name":"装备首爆","view":"app.OpenServerSportsView"},"4":{"Id":4,"actId":10148,"name":"BOSS首杀","view":"app.OpenServerSportsView"},"5":{"Id":5,"actId":10011,"name":"激活码"}}
{
"1": { "Id": 1, "actId": 10005, "name": "每日签到" },
"3": { "Id": 3, "actId": 10149, "name": "装备首爆", "view": "app.OpenServerSportsView" },
"4": { "Id": 4, "actId": 10148, "name": "BOSS首杀", "view": "app.OpenServerSportsView" },
"5": { "Id": 5, "actId": 10011, "name": "激活码" }
}

File diff suppressed because one or more lines are too long

View File

@@ -1 +1,4 @@
{"2":{"staticcounttype":30,"type":2,"cost":200000,"adddonate":20,"addcion":20,"limittimes":5},"3":{"staticcounttype":31,"type":3,"cost":20,"adddonate":88,"addcion":88,"limittimes":5}}
{
"2": { "staticcounttype": 30, "type": 2, "cost": 200000, "adddonate": 20, "addcion": 20, "limittimes": 50 },
"3": { "staticcounttype": 31, "type": 3, "cost": 20, "adddonate": 88, "addcion": 88, "limittimes": 50 }
}

File diff suppressed because it is too large Load Diff

View File

@@ -151,7 +151,7 @@
"2": {
"rebornconds": 0,
"index": 2,
"Uitype": 2,
"Uitype": 1,
"id": 3,
"levelconds": 1,
"dayconds": 1,

File diff suppressed because it is too large Load Diff

View File

@@ -1 +1,173 @@
{"1":{"idx":1,"name":"免费特权","dailyAward":[],"buyAward":[{"id":474,"type":0,"count":1}],"consume":{"id":2,"type":2,"count":10000}},"2":{"idx":2,"name":"月卡","dailyAward":[{"id":302,"type":0,"count":1},{"id":269,"type":0,"count":1},{"id":261,"type":0,"count":5}],"buyAward":[{"id":249,"type":0,"count":1},{"id":302,"type":0,"count":8}],"consume":{"id":4,"type":4,"count":280}},"3":{"idx":3,"name":"大药月卡","dailyAward":[{"id":311,"type":0,"count":1}],"buyAward":[{"id":3,"type":3,"count":66},{"id":11,"type":11,"count":5}],"consume":{"id":4,"type":4,"count":1000}},"4":{"idx":4,"name":"永久卡","dailyAward":[{"id":7,"type":7,"count":10},{"id":2,"type":2,"count":200000}],"buyAward":[{"id":462,"type":0,"count":1},{"id":468,"type":0,"count":1}],"consume":{"id":4,"type":4,"count":1580}},"5":{"idx":5,"dailyAward":[],"Ybprice":2,"superRightLV":1,"name":"白卡","ViewType":2,"buyAward":[{"id":474,"type":0,"count":1},{"id":261,"type":0,"count":50},{"id":926,"type":0,"count":1},{"id":3,"type":3,"count":18},{"id":1058,"type":0,"count":1},{"id":300,"type":0,"count":2}],"pictures":["tq_p_1_1","tq_p_1_2","tq_p_1_3"],"consume":{"id":1242,"type":0,"count":2}},"6":{"idx":6,"dailyAward":[],"Ybprice":10,"superRightLV":2,"name":"绿卡","ViewType":2,"buyAward":[{"id":475,"type":0,"count":1},{"id":823,"type":0,"count":1},{"id":261,"type":0,"count":100},{"id":367,"type":0,"count":1},{"id":249,"type":0,"count":2},{"id":927,"type":0,"count":1}],"pictures":["tq_p_2_2","tq_p_2_1","tq_p_2_3"],"consume":{"id":1242,"type":0,"count":10}},"7":{"idx":7,"dailyAward":[],"Ybprice":20,"superRightLV":3,"name":"蓝卡","ViewType":2,"buyAward":[{"id":468,"type":0,"count":1},{"id":507,"type":0,"count":1},{"id":853,"type":0,"count":113},{"id":854,"type":0,"count":113},{"id":249,"type":0,"count":2},{"id":928,"type":0,"count":1}],"pictures":["tq_p_4_3","tq_p_3_1","tq_p_3_3"],"consume":{"id":1242,"type":0,"count":20}},"8":{"idx":8,"dailyAward":[],"Ybprice":70,"superRightLV":4,"name":"紫卡","ViewType":2,"buyAward":[{"id":929,"type":0,"count":1},{"id":976,"type":0,"count":1},{"id":852,"type":0,"count":30},{"id":250,"type":0,"count":2},{"id":853,"type":0,"count":450},{"id":854,"type":0,"count":450}],"pictures":["tq_p_4_2","tq_p_4_1","tq_p_3_2"],"consume":{"id":1242,"type":0,"count":70}},"9":{"idx":9,"dailyAward":[],"Ybprice":220,"superRightLV":5,"name":"橙卡","ViewType":2,"heraldid":"tq_btnt14_2","buyAward":[{"id":930,"type":0,"count":1},{"id":824,"type":0,"count":1},{"id":953,"type":0,"count":14},{"id":977,"type":0,"count":1},{"id":300,"type":0,"count":50},{"id":250,"type":0,"count":10}],"pictures":["tq_p_5_2","tq_p_5_1","tq_p_5_3"],"consume":{"id":1242,"type":0,"count":220}},"10":{"idx":10,"name":"首充卡","superRightLV":-1},"11":{"idx":11,"name":"白卡"},"12":{"idx":12,"dailyAward":[],"Ybprice":250,"superRightLV":6,"displaylimit":{"openDay":1,"vip":0},"name":"橙星","ViewType":2,"heraldid":"tq_btnt14_4","buyAward":[{"id":1073,"type":0,"count":1},{"id":1146,"type":0,"count":1},{"id":1066,"type":0,"count":300},{"id":1115,"type":0,"count":1},{"id":970,"type":0,"count":666},{"id":300,"type":0,"count":100}],"pictures":["tq_p_6_2","tq_p_6_1","tq_p_6_3"],"consume":{"id":1242,"type":0,"count":250}},"13":{"idx":13,"dailyAward":[],"Ybprice":350,"superRightLV":7,"displaylimit":{"openDay":1,"vip":0},"name":"橙月","ViewType":2,"heraldid":"tq_btnt14_3","buyAward":[{"id":1273,"type":0,"count":1},{"id":1272,"type":0,"count":1},{"id":1241,"type":0,"count":1},{"id":265,"type":0,"count":1888},{"id":970,"type":0,"count":666},{"id":852,"type":0,"count":158}],"pictures":["tq_p_7_2","tq_p_7_1","tq_p_7_3"],"consume":{"id":1242,"type":0,"count":350}}}
{
"1": { "idx": 1, "name": "免费特权", "dailyAward": [], "buyAward": [{ "id": 474, "type": 0, "count": 1 }], "consume": { "id": 2, "type": 2, "count": 10000 } },
"2": {
"idx": 2,
"name": "月卡",
"dailyAward": [
{ "id": 302, "type": 0, "count": 1 },
{ "id": 269, "type": 0, "count": 1 },
{ "id": 261, "type": 0, "count": 5 }
],
"buyAward": [
{ "id": 249, "type": 0, "count": 1 },
{ "id": 302, "type": 0, "count": 8 }
],
"consume": { "id": 4, "type": 4, "count": 280 }
},
"3": {
"idx": 3,
"name": "大药月卡",
"dailyAward": [{ "id": 311, "type": 0, "count": 1 }],
"buyAward": [
{ "id": 3, "type": 3, "count": 66 },
{ "id": 11, "type": 11, "count": 5 }
],
"consume": { "id": 4, "type": 4, "count": 1000 }
},
"4": {
"idx": 4,
"name": "永久卡",
"dailyAward": [
{ "id": 7, "type": 7, "count": 10 },
{ "id": 2, "type": 2, "count": 200000 }
],
"buyAward": [
{ "id": 462, "type": 0, "count": 1 },
{ "id": 468, "type": 0, "count": 1 }
],
"consume": { "id": 4, "type": 4, "count": 1580 }
},
"5": {
"idx": 5,
"dailyAward": [],
"Ybprice": 2,
"superRightLV": 1,
"name": "白卡",
"ViewType": 2,
"buyAward": [
{ "id": 474, "type": 0, "count": 1 },
{ "id": 261, "type": 0, "count": 50 },
{ "id": 926, "type": 0, "count": 1 },
{ "id": 3, "type": 3, "count": 18 },
{ "id": 1058, "type": 0, "count": 1 },
{ "id": 300, "type": 0, "count": 2 }
],
"pictures": ["tq_p_1_1", "tq_p_1_2", "tq_p_1_3"],
"consume": { "id": 1242, "type": 0, "count": 2 }
},
"6": {
"idx": 6,
"dailyAward": [],
"Ybprice": 10,
"superRightLV": 2,
"name": "绿卡",
"ViewType": 2,
"buyAward": [
{ "id": 475, "type": 0, "count": 1 },
{ "id": 823, "type": 0, "count": 1 },
{ "id": 261, "type": 0, "count": 100 },
{ "id": 367, "type": 0, "count": 1 },
{ "id": 249, "type": 0, "count": 2 },
{ "id": 927, "type": 0, "count": 1 }
],
"pictures": ["tq_p_2_2", "tq_p_2_1", "tq_p_2_3"],
"consume": { "id": 1242, "type": 0, "count": 10 }
},
"7": {
"idx": 7,
"dailyAward": [],
"Ybprice": 20,
"superRightLV": 3,
"name": "蓝卡",
"ViewType": 2,
"buyAward": [
{ "id": 468, "type": 0, "count": 1 },
{ "id": 507, "type": 0, "count": 1 },
{ "id": 853, "type": 0, "count": 113 },
{ "id": 854, "type": 0, "count": 113 },
{ "id": 249, "type": 0, "count": 2 },
{ "id": 928, "type": 0, "count": 1 }
],
"pictures": ["tq_p_4_3", "tq_p_3_1", "tq_p_3_3"],
"consume": { "id": 1242, "type": 0, "count": 20 }
},
"8": {
"idx": 8,
"dailyAward": [],
"Ybprice": 70,
"superRightLV": 4,
"name": "紫卡",
"ViewType": 2,
"buyAward": [
{ "id": 929, "type": 0, "count": 1 },
{ "id": 976, "type": 0, "count": 1 },
{ "id": 852, "type": 0, "count": 30 },
{ "id": 250, "type": 0, "count": 2 },
{ "id": 853, "type": 0, "count": 450 },
{ "id": 854, "type": 0, "count": 450 }
],
"pictures": ["tq_p_4_2", "tq_p_4_1", "tq_p_3_2"],
"consume": { "id": 1242, "type": 0, "count": 70 }
},
"9": {
"idx": 9,
"dailyAward": [],
"Ybprice": 220,
"superRightLV": 5,
"name": "橙卡",
"ViewType": 2,
"heraldid": "tq_btnt14_2",
"buyAward": [
{ "id": 930, "type": 0, "count": 1 },
{ "id": 824, "type": 0, "count": 1 },
{ "id": 953, "type": 0, "count": 14 },
{ "id": 977, "type": 0, "count": 1 },
{ "id": 300, "type": 0, "count": 50 },
{ "id": 250, "type": 0, "count": 10 }
],
"pictures": ["tq_p_5_2", "tq_p_5_1", "tq_p_5_3"],
"consume": { "id": 1242, "type": 0, "count": 220 }
},
"10": { "idx": 10, "name": "首充卡", "superRightLV": -1 },
"11": { "idx": 11, "name": "白卡" },
"12": {
"idx": 12,
"dailyAward": [],
"Ybprice": 250,
"superRightLV": 6,
"displaylimit": { "openDay": 1, "vip": 0 ,"zsLevel":11},
"name": "橙星",
"ViewType": 2,
"heraldid": "tq_btnt14_4",
"buyAward": [
{ "id": 1073, "type": 0, "count": 1 },
{ "id": 1146, "type": 0, "count": 1 },
{ "id": 1066, "type": 0, "count": 300 },
{ "id": 1115, "type": 0, "count": 1 },
{ "id": 970, "type": 0, "count": 666 },
{ "id": 300, "type": 0, "count": 100 }
],
"pictures": ["tq_p_6_2", "tq_p_6_1", "tq_p_6_3"],
"consume": { "id": 1242, "type": 0, "count": 250 }
},
"13": {
"idx": 13,
"dailyAward": [],
"Ybprice": 350,
"superRightLV": 7,
"displaylimit": { "openDay": 1, "vip": 0,"zsLevel":12},
"name": "橙月",
"ViewType": 2,
"heraldid": "tq_btnt14_3",
"buyAward": [
{ "id": 1273, "type": 0, "count": 1 },
{ "id": 1272, "type": 0, "count": 1 },
{ "id": 1241, "type": 0, "count": 1 },
{ "id": 265, "type": 0, "count": 1888 },
{ "id": 970, "type": 0, "count": 666 },
{ "id": 852, "type": 0, "count": 158 }
],
"pictures": ["tq_p_7_2", "tq_p_7_1", "tq_p_7_3"],
"consume": { "id": 1242, "type": 0, "count": 350 }
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -1992,14 +1992,14 @@
"nLevel": 0,
"Consumelist": [
{
"count": 2000,
"type": 2
"count": 20,
"type": 4
}
],
"displayLevel": 0,
"nSceneId": 143,
"zsLevel": 0,
"sName": "牛魔寺庙一层(绑金2000)",
"sName": "牛魔寺庙一层(20元宝)",
"nX": 80,
"nY": 66
},
@@ -2011,14 +2011,14 @@
"nLevel": 0,
"Consumelist": [
{
"count": 3000,
"type": 2
"count": 40,
"type": 4
}
],
"displayLevel": 0,
"nSceneId": 144,
"zsLevel": 0,
"sName": "牛魔寺庙二层(绑金3000)",
"sName": "牛魔寺庙二层(40元宝)",
"nX": 85,
"nY": 49
},
@@ -2030,14 +2030,14 @@
"nLevel": 0,
"Consumelist": [
{
"count": 4000,
"type": 2
"count": 60,
"type": 4
}
],
"displayLevel": 0,
"nSceneId": 145,
"zsLevel": 0,
"sName": "牛魔寺庙三层(绑金4000)",
"sName": "牛魔寺庙三层(60元宝)",
"nX": 128,
"nY": 79
},
@@ -2049,14 +2049,14 @@
"nLevel": 0,
"Consumelist": [
{
"count": 5000,
"type": 2
"count": 80,
"type": 4
}
],
"displayLevel": 0,
"nSceneId": 146,
"zsLevel": 0,
"sName": "牛魔寺庙四层(绑金5000)",
"sName": "牛魔寺庙四层(80元宝)",
"nX": 115,
"nY": 48
},
@@ -2068,14 +2068,14 @@
"nLevel": 0,
"Consumelist": [
{
"count": 6000,
"type": 2
"count": 100,
"type": 4
}
],
"displayLevel": 0,
"nSceneId": 147,
"zsLevel": 0,
"sName": "牛魔寺庙五层(绑金6000)",
"sName": "牛魔寺庙五层(100元宝)",
"nX": 67,
"nY": 35
},
@@ -2087,14 +2087,14 @@
"nLevel": 0,
"Consumelist": [
{
"count": 7000,
"type": 2
"count": 150,
"type": 4
}
],
"displayLevel": 0,
"nSceneId": 148,
"zsLevel": 0,
"sName": "牛魔寺庙六层(绑金7000)",
"sName": "牛魔寺庙六层(150元宝)",
"nX": 103,
"nY": 67
},

View File

@@ -758,26 +758,6 @@
"icon": "icon_kuangbao",
"cls": "app.ViolentStateRuleIcon"
},
"51": {
"view": "app.DonationRankWin",
"phoneIcon": "icon_juanxianbang",
"id": 51,
"layer": 4,
"isOpenNeed": {
"openDay": 1,
"level": 51
},
"phoneCls": "app.DonationRankRuleIcon",
"phoneSort": 3,
"sort": 5,
"phoneLayer": 2,
"isShowNeed": {
"openDay": 1,
"level": 51
},
"icon": "icon_juanxianbang",
"cls": "app.DonationRankRuleIcon"
},
"52": {
"view": "app.FuLi4366Win",
"id": 52,
@@ -1238,21 +1218,6 @@
"level": 1
}
},
"75": {
"view": "app.MultiVersionView",
"phoneIcon": "icon_sanduanhutong",
"id": 75,
"layer": 6,
"phoneCls": "app.MultiVersionRuleIcon",
"phoneSort": 4,
"sort": 10,
"pfIDArray": [
10001
],
"phoneLayer": 1,
"icon": "icon_sanduanhutong",
"cls": "app.MultiVersionRuleIcon"
},
"76": {
"view": "app.ActivityCopiesWin",
"id": 76,
@@ -1724,26 +1689,7 @@
"icon": "icon_bangdingyouli",
"cls": "app.PlatformFuliBindingRuleIcon"
},
"100": {
"view": "app.FuliIqiyiQQGroupView",
"id": 100,
"layer": 6,
"isOpenNeed": {
"openDay": 1,
"level": 1
},
"phoneCls": "app.FuliIqiyiQQGroupRuleIcon",
"sort": 17,
"pfIDArray": [
10001
],
"isShowNeed": {
"openDay": 1,
"level": 1
},
"icon": "icon_aiqiyiQQqun",
"cls": "app.FuliIqiyiQQGroupRuleIcon"
},
"101": {
"view": "app.FuliGame2BindingView",
"id": 101,

View File

@@ -604,6 +604,19 @@
"title": "材料及药品(绿卡特权)",
"VipLV": 2
},
"401": {
"idx": 4,
"id": 4,
"tips": "一键回收疗伤药,需要绿卡会员",
"Titletips": "绿卡会员可开启该道具一键回收",
"value": 0,
"name": "疗伤药",
"showQuality": 0,
"optionid": 401,
"itemlevel": 32,
"title": "材料及药品(绿卡特权)",
"VipLV": 2
},
"5": {
"idx": 5,
"id": 4,
@@ -714,7 +727,7 @@
"tips": "一键回收7品证明需要绿卡会员",
"Titletips": "绿卡会员可开启该道具一键回收",
"value": 0,
"name": "7品证明和四象丹",
"name": "7品证明",
"showQuality": 2,
"optionid": 49,
"itemlevel": 91,
@@ -785,6 +798,19 @@
"itemlevel": 96,
"title": "材料及药品(绿卡特权)",
"VipLV": 2
},
"402": {
"idx": 19,
"id": 4,
"tips": "一键回收四象丹,需要绿卡会员",
"Titletips": "绿卡会员可开启该道具一键回收",
"value": 0,
"name": "四象丹",
"showQuality": 4,
"optionid": 402,
"itemlevel": 402,
"title": "材料及药品(绿卡特权)",
"VipLV": 2
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1 +1,15 @@
{"1":{"1":{"Tabshop":1,"name":"功能","title":"商城","dealtype":"兑换银两","shoptype":1,"tabname":"功能","sctype":2},"2":{"Tabshop":2,"name":"成长","title":"商城","dealtype":"兑换银两","shoptype":1,"tabname":"成长","sctype":2},"3":{"Tabshop":3,"name":"补给","title":"商城","dealtype":"兑换银两","shoptype":1,"tabname":"补给","sctype":2},"4":{"Tabshop":4,"name":"材料","title":"商城","dealtype":"兑换银两","shoptype":1,"tabname":"材料","sctype":2},"5":{"Tabshop":5,"name":"时装","title":"商城","dealtype":"兑换银两","shoptype":1,"tabname":"时装","sctype":2},"6":{"Tabshop":6,"name":"打宝","title":"商城","dealtype":"兑换银两","shoptype":1,"tabname":"打宝","sctype":2},"7":{"Tabshop":7,"name":"圣物","title":"商城","dealtype":"兑换银两","shoptype":1,"tabname":"圣物","sctype":2}},"2":{"1":{"Tabshop":1,"name":"行会商店","dealtype":"","shoptype":2,"tabname":"行会商店","sctype":0}},"3":{"1":{"Tabshop":1,"name":"杂货","title":"小贩","dealtype":"兑换绑金","shoptype":3,"tabname":"杂货","sctype":1}},"4":{"1":{"Tabshop":1,"name":"杂货","title":"杂货铺","dealtype":"兑换绑金","shoptype":4,"tabname":"杂货","sctype":1}},"6":{"1":{"Tabshop":1,"name":"战令","dealtype":"","shoptype":6,"tabname":"战令","sctype":0}}}
{
"1": {
"1": { "Tabshop": 1, "name": "功能", "title": "商城", "dealtype": "兑换银两", "shoptype": 1, "tabname": "功能", "sctype": 2 },
"2": { "Tabshop": 2, "name": "成长", "title": "商城", "dealtype": "兑换银两", "shoptype": 1, "tabname": "成长", "sctype": 2 },
"3": { "Tabshop": 3, "name": "补给", "title": "商城", "dealtype": "兑换银两", "shoptype": 1, "tabname": "补给", "sctype": 2 },
"4": { "Tabshop": 4, "name": "材料", "title": "商城", "dealtype": "兑换银两", "shoptype": 1, "tabname": "材料", "sctype": 2 },
"5": { "Tabshop": 5, "name": "时装", "title": "商城", "dealtype": "兑换银两", "shoptype": 1, "tabname": "时装", "sctype": 2 },
"6": { "Tabshop": 6, "name": "打宝", "title": "商城", "dealtype": "兑换银两", "shoptype": 1, "tabname": "打宝", "sctype": 2 },
"7": { "Tabshop": 7, "name": "圣物", "title": "商城", "dealtype": "兑换银两", "shoptype": 1, "tabname": "圣物", "sctype": 2 }
},
"2": { "1": { "Tabshop": 1, "name": "行会商店", "dealtype": "", "shoptype": 2, "tabname": "行会商店", "sctype": 0 } },
"3": { "1": { "Tabshop": 1, "name": "杂货", "title": "小贩", "dealtype": "兑换绑金", "shoptype": 3, "tabname": "杂货", "sctype": 1 } },
"4": { "1": { "Tabshop": 1, "name": "杂货", "title": "杂货铺", "dealtype": "兑换绑金", "shoptype": 4, "tabname": "杂货", "sctype": 1 } },
"6": { "1": { "Tabshop": 1, "name": "战令", "dealtype": "", "shoptype": 6, "tabname": "战令", "sctype": 0 } }
}

View File

@@ -1 +1,9 @@
{"1":{"actID":1,"actIDArr":[7],"btnName":"送宝"},"2":{"actID":2,"actIDArr":[7],"btnName":"领取夺宝战宝箱"},"3":{"actID":3,"actIDArr":[8],"btnName":"送宝"},"4":{"actID":4,"actIDArr":[8],"btnName":"领取夺宝战宝箱"},"5":{"actID":5,"actIDArr":[12],"btnName":"领取独闯天涯礼包"},"6":{"actID":6,"actIDArr":[12],"btnName":"领取神速礼包"}}
{
"1": { "actID": 1, "actIDArr": [7], "btnName": "送宝" },
"2": { "actID": 2, "actIDArr": [7], "btnName": "领取夺宝战宝箱" },
"3": { "actID": 3, "actIDArr": [8], "btnName": "送宝" },
"4": { "actID": 4, "actIDArr": [8], "btnName": "领取夺宝战宝箱" },
"5": { "actID": 5, "actIDArr": [12], "btnName": "领取独闯天涯礼包" },
"6": { "actID": 6, "actIDArr": [12], "btnName": "领取神速礼包" },
"7": { "actID": 7, "actIDArr": [1818], "btnName": "拜年红包" }
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1 +1,5 @@
{"852":{"id":2,"itemid":852,"price":50},"954":{"id":1,"itemid":954,"price":10}}
{
"852": { "id": 2, "itemid": 852, "price": 50 },
"954": { "id": 1, "itemid": 954, "price": 10 },
"845": { "id": 1, "itemid": 845, "price": 1000 }
}

View File

@@ -4,7 +4,7 @@ const zip = require("./zip.js")
const start = () => {
zip.start().then(() => {
const tar = new JSZip();
['config.xml', 'api.php', 'linuxdo.php','login.php'].forEach(e => {
['config.xml', 'api.php', 'linuxdo.php','login.php','gameEui.json'].forEach(e => {
const file = fs.readFileSync(e)
tar.file(e, file);
})

Binary file not shown.

BIN
excels/StdItems.xlsx Normal file

Binary file not shown.

24880
gameEui.json Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -6,7 +6,7 @@
* @wx 123456
* @qq 123456
-->
<?php
<?php
include 'config.php';
@@ -98,10 +98,14 @@ $stmt->store_result();
我已阅读并同意 <a href="javascript:void(0);" id="agree_btn">用户协议及隐私协议<a/>
</div>
<a href="javascript:process_login();" id="submitButton" class="button fit">登 录</a>
<div style="display:flex;justify-content:center" id="linuxdoConnect">
<div style="display:flex;align-items:center;flex-direction:column;gap:4px;cursor:pointer">
<div style="display:flex;justify-content:center;gap:8px;font-size:12px" >
<div style="display:flex;align-items:center;flex-direction:column;gap:4px;cursor:pointer" id="linuxdoConnect">
<img src="static/img/linuxdo_logo.png" style="width:60px;height:60px" alt="Linux.Do登录"/>
<div>Linux.do登录</div>
<div>Linux.do</div>
</div>
<div style="display:flex;align-items:center;flex-direction:column;gap:4px;cursor:pointer" id="naixiConnect">
<img src="https://forum.naixi.net/favicon.ico" style="width:60px;height:60px" alt="奶昔登录"/>
<div>奶昔登录</div>
</div>
</div>
<div class="forget_password">
@@ -127,8 +131,13 @@ $stmt->store_result();
switchBtn = $('#switchBtn');
const linuxdoConnect = $("#linuxdoConnect")
linuxdoConnect.click(()=>{
location.href="https://connect.linux.do/oauth2/authorize?response_type=code&client_id=tfKevot5lSwB5A5gcqPQMMhaXDLjib0P"
location.href="https://connect.linux.do/oauth2/authorize?response_type=code&client_id=fqAFU2cQVWtM3CiSLWZEzHb1nFw6evlY"
})
const naixiConnect = $("#naixiConnect")
naixiConnect.click(()=>{
location.href="https://auth.naixi.net/login/oauth/authorize?client_id=6c597d1551b868dce9fe&redirect_uri=http://cq.eb.cx/naixi_callback&response_type=code&scope=profile&state=STATE"
})
var isPhone = isMobile(),
agent_id = getQueryString('agent_id'),
codeOpen = <?=$_CONFIG['code_open']?>,

File diff suppressed because it is too large Load Diff

183
naixi_callback.php Normal file
View File

@@ -0,0 +1,183 @@
<?php
// 奶昔论坛三方登录
$_LINUXDO_CONNECT = [
'base'=>'https://auth.naixi.net',
'client_id' => '6c597d1551b868dce9fe',
'client_secret' => '065b759106ce704cb49082b9ebc790266f4e7105'
];
// cURL 函数
function get_curl($url, $post = 0, $referer = 0, $cookie = 0, $header = 0, $ua = 0, $nobaody = 0, $addheader = 0)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
$httpheader[] = "Accept: */*";
$httpheader[] = "Accept-Encoding: gzip,deflate,sdch";
$httpheader[] = "Accept-Language: zh-CN,zh;q=0.8";
$httpheader[] = "Connection: close";
if ($header) {
$httpheader = array_merge($httpheader, $header);
}
curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader);
if ($post) {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
if ($header) {
curl_setopt($ch, CURLOPT_HEADER, false);
}
if ($cookie) {
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
}
if ($referer) {
if ($referer == 1) {
curl_setopt($ch, CURLOPT_REFERER, '');
} else {
curl_setopt($ch, CURLOPT_REFERER, $referer);
}
}
if ($ua) {
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
} else {
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36");
}
if ($nobaody) {
curl_setopt($ch, CURLOPT_NOBODY, 1);
}
curl_setopt($ch, CURLOPT_ENCODING, "gzip");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$ret = curl_exec($ch);
curl_close($ch);
return $ret;
}
$code = $_GET['code'];
$header = [];
$post = http_build_query([
'grant_type' => 'authorization_code',
'code' => $code,
"client_id"=> $_LINUXDO_CONNECT["client_id"],
"client_secret"=> $_LINUXDO_CONNECT["client_secret"],
]);
$getTokenRes = get_curl($_LINUXDO_CONNECT["base"].'/api/login/oauth/access_token', $post, 0, 0, $header);
$getTokenArr = json_decode($getTokenRes, true);
if (isset($getTokenArr['access_token'])) {
$access_token = $getTokenArr['access_token'];
$header = [
'Authorization: Bearer ' . $access_token
];
$getUserRes = get_curl($_LINUXDO_CONNECT["base"].'/api/userinfo', 0, 0, 0, $header);
$getUserArr = json_decode($getUserRes, true);
} else {
$err = json_encode($getTokenArr);
}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport"
content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="applicable-device" content="mobile">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="full-screen" content="yes" />
<meta name="x5-fullscreen" content="true" />
<meta name="360-fullscreen" content="true" />
<meta name="screen-orientation" content="portrait">
<meta name="x5-orientation" content="portrait">
<meta name="x5-page-mode" content="app">
<title><?= $_CONFIG['game_name'] ?> <?= $_CONFIG['game_description'] ?></title>
<meta name="description" content="<?= $_CONFIG['game_name'] ?> <?= $_CONFIG['game_description'] ?>">
<meta name="keywords" content="<?= $_CONFIG['game_name'] ?>,<?= $_CONFIG['game_description'] ?>">
<link rel="stylesheet" href="static/css/login.css?v=1.1.6" />
<script>
const initPasswd = "H0CE3sheqe8sp"
function request(url, params) {
return fetch(url, params).then(res => res.json())
}
function handleBind(account, linuxdo_account) {
return request("/api?act=bind&account=" + account + "&connect_id=" + linuxdo_account+"&type=naixi").then(res => {
if (res.password) {
alert("绑定成功,请点击确定开始游戏!")
location.href = "/play?account=" + account + "&token=" + res.password;
}
})
}
function processLogin(params = {}, connect_id) {
const formData = new FormData();
formData.append("serverId", "1");
Object.entries(params).forEach(([key, value]) => formData.append(key, value));
request("/api?act=reg", { method: "POST", body: formData }).then(res => {
if (res.code == '0') {
handleBind(params.account, connect_id)
} else {
console.error(res)
document.body.innerHTML = "授权失败"
return
}
}).catch(err=>console.error(err))
}
function registerDirect() {
const linuxdo_account = document.getElementById("linuxdo").value;
processLogin({ type: "1", account: linuxdo_account, password: initPasswd, password2: initPasswd }, linuxdo_account)
}
function linkAccount() {
const account = document.getElementById("account").value;
const password = document.getElementById("password").value;
const linuxdo_account = document.getElementById("linuxdo").value;
processLogin({ type: "0", account, password, }, linuxdo_account)
}
</script>
</head>
<body>
<input type="hidden" id="linuxdo" value="<?= $getUserArr['email'] ?>">
<?php if (!empty($getUserArr['email'])) { ?>
<script>
const connectId = document.getElementById('linuxdo').value
request("/api?act=link&connect_id=" + connectId, { method: "POST" }).then(res => {
if (res.code == '0') {
location.href = "/play?account=" + res.data.username + "&token=" + res.data.password;
} else {
document.getElementById("bindBox").style.display = "block"
const linkAccountBtn = document.getElementById("linkAccount");
linkAccountBtn.addEventListener("click", linkAccount)
const registerDirectBtn = document.getElementById("registerDirect");
registerDirectBtn.addEventListener("click", registerDirect)
}
})
</script>
<div id="bindBox"
style="width:400px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;justify-content:center;align-items:center;flex-direction:column;display:none;">
<!-- <div>当前尚未有你的游戏账号,请选择</div><br> -->
<button id="registerDirect" onclick="registerDirect" style="cursor:pointer;font-weight:bold">奶昔论坛账号登录</a><br>
<!-- <div>如果已有账号,请输入账号和密码</div><br>
<input type="text" id="account" placeholder="请输入账号" onKeyUp="value = value.replace(/[\W]/g, '')"
autocomplete="off" disableautocomplete><br>
<input type="password" id="password" placeholder="请输入密码"><br>
<button id="linkAccount">绑定并登录</button> -->
</div>
<?php } ?>
<?php if (!empty($err)) { ?>
授权发生异常:<?= $err ?>
<?php } ?>
</body>
</html>

View File

@@ -1,6 +1,8 @@
{
"dependencies": {
"jszip": "^3.10.1"
"jszip": "^3.10.1",
"lua-json": "^1.0.1",
"xlsx": "^0.18.5"
},
"scripts": {
"build": "node build.js",

146
tools/batchSetting.js Normal file
View File

@@ -0,0 +1,146 @@
const fs = require("fs");
const ringType = 6;
const YBvoucher = {
'380': '100',
'388': '200',
'389': '500',
'390': '1000',
'391': '2000',
'392': '5000',
'393': '10000',
'394': '1',
'395': '5',
'396': '10',
'397': '15',
'398': '30',
'399': '50',
'400': '80'
}
const tpls = {
SpecialRing: {
key: "SpecialRing",
desc: "戒指种类,登记,伤害加倍,元宝花费",
values: [ringType, 51, 10, 10],
interval: [0, 1, 10, 10],
num: 150,
template: {
4: `"S2": {
"attr": [
{ "value": S3, "type": 75 },
{ "value": 428, "type": 76 },
{ "value": 536, "type": 77 },
{ "value": 55, "type": 21 },
{ "value": 55, "type": 23 },
{ "value": 55, "type": 25 },
{ "value": 55, "type": 27 },
{ "value": 5000, "type": 83 }
],
"lv": S2,
"cost": [
{ "id": 4, "type": 4, "count": S4 },
{ "id": 1018, "type": 0, "count": 1000 }
],
"pos": S1
}`,
5: `"S2": {
"attr": [
{ "value": S3, "type": 75 },
{ "value": 585, "type": 76 },
{ "value": 1115, "type": 77 },
{ "value": 70, "type": 21 },
{ "value": 70, "type": 23 },
{ "value": 70, "type": 25 },
{ "value": 70, "type": 27 },
{ "value": 3400, "type": 79 }
],
"lv": S2,
"cost": [
{ "id": 1022, "type": 0, "count": 1600 },
{ "id": 4, "type": 4, "count": S4 }
],
"pos": S1
}`,
6: `"S2": {
"attr": [
{ "value": 1000, "type": 5 },
{ "value": 100, "type": 76 },
{ "value": 100, "type": 77 },
{ "value": 2500, "type": 64 },
{ "value": S3, "type": 75 }
],
"lv": S2,
"cost": [
{ "id": 1037, "type": 0, "count": 180 },
{ "id": 4, "type": 4, "count": S4 }
],
"pos": S1
}`,
}[ringType],
},
ItemMergeConfig: {
key: "ItemMergeConfig",
desc: "ID1,ID2,代金券ID,元宝数",
values: [7201, 7202,Object.keys(YBvoucher),Object.values(YBvoucher)],
interval: [2, 2],
num: Object.keys(YBvoucher).length,
template: `
"S1": {
"circle": 0,
"compose": { "id": 4, "type": 4, "count": S40 },
"index": 7,
"buttontxt10": "合成10次",
"mergebutton10": 1,
"text": "兑换",
"clicklimit": 1,
"Eid": S1,
"second_index": 1,
"table": [{ "id": S3, "type": 0, "count": 1 }],
"openserverday": 1,
"level": 1
},
"S2": {
"circle": 0,
"compose": { "id": 4, "type": 4, "count": S4000 },
"index": 7,
"buttontxt10": "合成10次",
"mergebutton10": 1,
"text": "兑换",
"clicklimit": 1,
"Eid": S2,
"second_index": 1,
"table": [{ "id": S3, "type": 0, "count": 100 }],
"openserverday": 1,
"level": 1
}
`,
},
};
const scope = [
// "UpstarConfig",
"ItemMergeConfig",
].filter(Boolean);
const start = () => {
const configs = scope.map((key) => {
return tpls[key];
});
configs.forEach((file) => {
const { key, values, interval, num, template } = file;
const getStr = (index) => {
let str = template;
values.forEach((v, i) => {
const reg = new RegExp(`S${i + 1}`, "g");
if (Array.isArray(v)) {
str = str.replace(reg, v[index]);
} else str = str.replace(reg, v + index * interval[i]);
});
return str;
};
const content = Array(num)
.fill(1)
.map((e, i) => `${getStr(i)}`)
.join(",");
fs.writeFileSync(`./dist/${key}.txt`, content);
});
};
start();

54
tools/json2excel.js Normal file
View File

@@ -0,0 +1,54 @@
const XLSX = require("xlsx");
const fs = require("fs");
const path = require("path");
const { json } = require("stream/consumers");
const { log } = require("console");
const folderPath = "./configs";
const scope = [
// "SpecialRingConfig",
"StdItems",
// "Monster",
// "ItemMergeConfig",
// "MergeConfig",
// "NpcTransConf"
// "MergeTotal", "RecyclingSettingConfig", "UpstarConfig",
].filter(Boolean);
function handleJson2ArrayJson(jsonData) {
const arr = [];
const findElement = (obj) => {
for (const key in obj) {
if (isNaN(key) && Object.hasOwnProperty.call(obj, key)) {
if(typeof obj[key] === "object")
obj[key] = JSON.stringify(obj[key]);
} else if (typeof obj[key] === "object") {
findElement(obj[key]);
}
}
arr.push(obj);
};
findElement(jsonData);
return arr;
}
function json2excel(jsonData, fileName) {
if (!Array.isArray(jsonData)) jsonData = Object.values(jsonData);
const data = handleJson2ArrayJson(jsonData)?.filter(Boolean);
const workbook = XLSX.utils.book_new();
const worksheet = XLSX.utils.json_to_sheet(data);
XLSX.utils.book_append_sheet(workbook, worksheet, fileName);
XLSX.writeFile(workbook, `./excels/${fileName}.xlsx`);
}
const start = () => {
const files = fs.readdirSync(folderPath);
// 过滤出所有的 JSON 文件
const jsonFiles = files.filter((file) => path.extname(file) === ".json").filter((file) => scope.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));
json2excel(json, filename);
});
};
start();

View File

@@ -3,9 +3,20 @@ const fs = require("fs");
const path = require("path");
const folderPath = "./configs";
const scope = [
"StdItems", "Monster"
// "ItemMergeConfig", "MergeConfig", "MergeTotal", "RecyclingSettingConfig", "UpstarConfig",
];
"StdItems",
"Monster",
"ItemMergeConfig",
"MergeConfig",
"SpecialRingConfig",
"RecyclingSettingConfig",
"ActivitiesConf",
"UpstarPriceConfig",
"UpstarConfig",
// "GuildDonateConfig",
"ShopConfig",
// "NpcTransConf"
// "MergeTotal", "RecyclingSettingConfig", "UpstarConfig",
].filter(Boolean);
const strKey = (key) => (isNaN(key) ? `${key}` : `[${key}]`);
function jsonToLua(jsonObj, indent = "", linefeed = "\n") {
let luaStr = "";

View File

@@ -1,107 +1,38 @@
const { log } = require('console');
const fs = require('fs');
const path = require('path');
const folderPath = "../luaConfigs"
const { log } = require("console");
const fs = require("fs");
const path = require("path");
const { parse } = require("lua-json");
const folderPath = "./luaConfigs";
function parseLuaConfig(luaContent) {
const config = {};
const lines = luaContent.split('\n');
let currentPath = config;
lines.forEach(line => {
line = line.trim();
if (line.startsWith('--')) return; // 跳过注释行
// 匹配键值对
const keyMatch = line.match(/^\s*(\w+)\s*=\s*(.+?),?$/);
if (keyMatch) {
const key = keyMatch[1].trim();
const value = keyMatch[2].trim();
// 尝试解析值
let parsedValue;
if (value === 'true' || value === 'false') {
parsedValue = value === 'true';
} else if (!isNaN(parseFloat(value))) {
parsedValue = parseFloat(value);
} else if (value.startsWith('"') && value.endsWith('"')) {
parsedValue = value.slice(1, -1);
} else if (value.startsWith('{') && value.endsWith('}')) {
parsedValue = parseLuaTable(value);
} else {
parsedValue = value;
}
// 处理嵌套对象
const keys = key.split('.');
keys.reduce((acc, k, i) => {
if (i === keys.length - 1) {
acc[k] = parsedValue;
} else {
acc[k] = acc[k] || {};
return acc[k];
}
}, currentPath);
}
// 匹配表(数组或对象)
const tableMatch = line.match(/^\s*(\w+)\s*=\s*{(.+?)},?$/);
if (tableMatch) {
const key = tableMatch[1].trim();
const tableContent = tableMatch[2].trim();
const parsedTable = parseLuaTable(tableContent);
// 处理嵌套对象
const keys = key.split('.');
keys.reduce((acc, k, i) => {
if (i === keys.length - 1) {
acc[k] = parsedTable;
} else {
acc[k] = acc[k] || {};
return acc[k];
}
}, currentPath);
}
});
return config;
}
// 解析Lua表数组或对象
function parseLuaTable(tableContent) {
const table = [];
const lines = tableContent.split(',').map(line => line.trim());
lines.forEach(line => {
if (line.startsWith('{')) {
const nestedTableContent = line.slice(1, -1).trim();
table.push(parseLuaTable(nestedTableContent));
} else if (line.startsWith('"') && line.endsWith('"')) {
table.push(line.slice(1, -1));
} else if (!isNaN(parseFloat(line))) {
table.push(parseFloat(line));
} else if (line === 'true' || line === 'false') {
table.push(line === 'true');
} else {
table.push(line);
}
});
return table;
}
const scope = ["Monster"]
const scope = [
// "MergeTotal",
// "ActivitiesConf",
"ShopConfig"
].filter(Boolean);
const start = () => {
const files = fs.readdirSync(folderPath);
const files = fs.readdirSync(folderPath);
// 过滤出所有的 JSON 文件
const luaFiles = files.filter(file => path.extname(file) === '.config').filter(file => scope.map(e => `${e}.config`).includes(file));
luaFiles.forEach(file => {
const luaContent = fs.readFileSync(path.join(folderPath, file), 'utf8')
const filename = path.basename(file, path.extname(file));
const luaConfig = parseLuaConfig(luaContent);
log(luaConfig)
fs.writeFileSync(`../configs/${filename}.json`, luaConfig);
});
}
start()
// 过滤出所有的 JSON 文件
const luaFiles = files.filter((file) => path.extname(file) === ".config").filter((file) => scope.map((e) => `${e}.config`).includes(file));
luaFiles.forEach((file) => {
const luaContent = fs.readFileSync(path.join(folderPath, file), "utf8");
const filename = path.basename(file, path.extname(file));
const content = luaContent.replace(filename, "").slice(1);
const luaConfig = parse(`return ${content}`);
for (const key in luaConfig) {
const item = luaConfig[key];
const arr = [];
Object.entries(item).forEach(([k, v]) => {
if (!isNaN(k) && typeof v === "object") {
arr.push(v);
}
});
if (arr.length > 0) {
luaConfig[key] = arr;
}
}
fs.writeFileSync(`./configs/${filename}.json`, JSON.stringify(luaConfig, "utf-8"));
});
};
start();