DNF90 服务端与启动器完整源码(含 GM 工具功能增强)

服务端(Go):
- GM 塞背包/带属性装备发放:在线角色推送 op14 增量物品行,背包实时刷新,无需回角色选择界面
- GM 改金币/改等级:去掉在线拒绝,落库后推送 op14 钱包/op37 等级状态,在线实时刷新
- 等级端点统一切换到新版 GMSetCharacterLevel(自带在线刷新)
- 无限/锁死疲劳模式 + 燃烧疲劳:每房间消耗 2 点、打怪与通关经验双倍
- 燃烧疲劳开关时给所有在线角色推送系统提示(op12 mode 0)
- 深渊史诗掉率:GM 全局倍率 + 城镇增益药剂窗口倍率,真实接入掉落结算

启动器(Python/JS):
- 标题栏自绘、窗口 1204x717、禁止拖拽改大小、仅最小化/关闭
- GM 工具:疲劳与燃烧、深渊史诗掉率、拍卖行上架(单一定价对齐)
- 拍卖行上架前端对齐服务端单一价格语义,修复 400 报错
This commit is contained in:
hanfuit committed 2026-11-04 14:31:55 +08:00
commit 645b64fe21
4388 files changed
+1405457

No files matched your search

+37
View File
@@ -0,0 +1,37 @@
# 强化与增幅批量编辑
在文件 GUI 或工具菜单打开强化/增幅概率,点击“批量设置”。用双端滑块或起止等级输入框选择范围,勾选要更改的项目:成功率、失败操作及降级等级、消耗道具、消耗数量。可同时修改多项,点击“应用到 N 个等级”统一更新草稿,再保存到工作区。
成功率和失败处理仅作用于当前选中的武器或防具;材料 ID 和消耗数量由两类共用。选择“不处理”或“损坏”时,当前装备类型的降级参数自动清零。
## 按等级计算
在 JavaScript 脚本工作区使用 `PVFFile.editUpgrade(options)`。强化文件自动选择 `normal` 表,增幅文件自动选择 `amplify` 表。`equipment` 为 `weapon`(默认)或 `armor`;旧版 17 项表不提供独立防具数据。
```js
const file = pvf.find("etc/upgrade.etc");
if (!file) throw new Error("未找到强化文件");
const count = file.editUpgrade({
equipment: "weapon",
fromLevel: 1,
toLevel: 20,
// level 为目标强化等级;current 为当前成功率(0~100)。
successRate: (level, current) => Math.max(10, 100 - level * 4),
// current 为当前消耗数量,计算结果必须是非负 32 位整数。
costCount: (level, current) => level * 10
});
pvf.log("已计算", count, "个等级");
```
`successRate` 和 `costCount` 也可以直接传数值;省略其中一项时保持该项不变。`fromLevel` 默认 1,`toLevel` 默认表内最后一个可编辑等级。新格式支持全部等级,旧版保留 +1~+31 的编辑范围。
成功率保留到 0.001%,按 `失败值 = round((100 - 成功率) × 1000)` 存储。所有回调完成且返回值校验通过后才写入一次事务;无效结果会拒绝该次编辑。回调应只做计算,勿在回调中修改文件。脚本运行后通过现有预览/应用流程写入工作区,再保存 PVF。
## 安全强化 / 安全增幅编辑
含 `[safe upgrade]` 的强化文件会增加“安全强化”页签,增幅文件则显示“安全增幅”。当前按每条 8 个整数解析,可逐条或按等级范围批量编辑,保留原始值与位置。该 section 的格式异常单独显示,不阻断普通强化编辑。
样例含 12 条记录,首列原始值为 0~11,界面加 1 显示为等级 +1~+12;编辑时保留原始等级值。字段 2 为失败率,分母为 100000,界面按 `失败率 / 1000` 显示百分比,例如 94000 显示为 94%(基础成功率为 6%)。字段 3 为失败补正,暂保留原始值;字段 5/6/7 分别为材料 ID、数量与金币消耗。字段 1、4 的含义及补正单位仍待确认:这两列不显示且保持原值,失败补正按原始整数编辑。
安全强化的批量设置聚合失败率、失败补正、材料 ID、消耗数量和金币消耗,使用双端滑块或起止输入框选择显示等级范围,支持从 +1 开始。只更新勾选的字段和范围内的记录。失败率输入 0~100%,保存时乘以 1000 并取整。应用后更新草稿,点击“保存安全强化”或“保存安全增幅”写入工作区,再保存 PVF。