服务端(Go): - GM 塞背包/带属性装备发放:在线角色推送 op14 增量物品行,背包实时刷新,无需回角色选择界面 - GM 改金币/改等级:去掉在线拒绝,落库后推送 op14 钱包/op37 等级状态,在线实时刷新 - 等级端点统一切换到新版 GMSetCharacterLevel(自带在线刷新) - 无限/锁死疲劳模式 + 燃烧疲劳:每房间消耗 2 点、打怪与通关经验双倍 - 燃烧疲劳开关时给所有在线角色推送系统提示(op12 mode 0) - 深渊史诗掉率:GM 全局倍率 + 城镇增益药剂窗口倍率,真实接入掉落结算 启动器(Python/JS): - 标题栏自绘、窗口 1204x717、禁止拖拽改大小、仅最小化/关闭 - GM 工具:疲劳与燃烧、深渊史诗掉率、拍卖行上架(单一定价对齐) - 拍卖行上架前端对齐服务端单一价格语义,修复 400 报错
48 lines
1.4 KiB
Go
48 lines
1.4 KiB
Go
package config
|
|
|
|
import "strings"
|
|
|
|
const (
|
|
defaultPVFMaxBytes int64 = 1024 * 1024 * 1024
|
|
defaultPVFChunkCacheBytes int64 = 96 * 1024 * 1024
|
|
defaultPVFTextCacheBytes int64 = 64 * 1024 * 1024
|
|
)
|
|
|
|
// PVFSection is the DNF project extension that keeps Script.pvf loading in
|
|
// the generic platform bootstrap without coupling the framework to DNF logic.
|
|
type PVFSection struct {
|
|
Enabled bool `toml:"enabled"`
|
|
Path string `toml:"path"`
|
|
MaxBytes int64 `toml:"max_bytes"`
|
|
PreloadChunks bool `toml:"preload_chunks"`
|
|
ChunkCacheBytes int64 `toml:"chunk_cache_bytes"`
|
|
TextCacheBytes int64 `toml:"text_cache_bytes"`
|
|
}
|
|
|
|
func (c *ServiceConfig) normalizePVF() {
|
|
if c.PVF.MaxBytes == 0 {
|
|
c.PVF.MaxBytes = defaultPVFMaxBytes
|
|
}
|
|
if c.PVF.ChunkCacheBytes == 0 {
|
|
c.PVF.ChunkCacheBytes = defaultPVFChunkCacheBytes
|
|
}
|
|
if c.PVF.TextCacheBytes == 0 {
|
|
c.PVF.TextCacheBytes = defaultPVFTextCacheBytes
|
|
}
|
|
}
|
|
|
|
func (c *ServiceConfig) trimPVF() {
|
|
c.PVF.Path = strings.TrimSpace(c.PVF.Path)
|
|
}
|
|
|
|
func (c ServiceConfig) validatePVF(errs *[]error) {
|
|
if c.PVF.Enabled {
|
|
requireString(errs, "pvf.path", c.PVF.Path)
|
|
}
|
|
if c.PVF.MaxBytes != -1 {
|
|
requirePositiveInt64(errs, "pvf.max_bytes", c.PVF.MaxBytes)
|
|
}
|
|
requirePositiveInt64(errs, "pvf.chunk_cache_bytes", c.PVF.ChunkCacheBytes)
|
|
requirePositiveInt64(errs, "pvf.text_cache_bytes", c.PVF.TextCacheBytes)
|
|
}
|