feat(xmlres): 添加任务数据加载与初始化逻辑

在 xmlres 包中新增 TaskMap 用于存储任务数据,并在 initfile 函数中
加载 task.xml 文件内容。同时调整 login 控制器中的任务重置逻辑,根据
任务类型每日重置任务状态。修复 pet 控制器释放宠物时的数据更新问题。
战斗系统中增加 Effect 的 OnMiss 回调处理,并修正状态效果映射关系。
修复 PVP 邀
This commit is contained in:
2025-10-20 23:59:49 +08:00
parent f53028d1fc
commit b90bceafd9
10 changed files with 83 additions and 25 deletions

View File

@@ -48,6 +48,7 @@ var (
EffectMAP map[int]NewSeIdx
PlayerEffectMAP map[int]NewSeIdx
ItemsMAP map[int]Item
TaskMap map[int]Task
)
func initfile() {
@@ -67,6 +68,7 @@ func initfile() {
})
TalkConfig = getXml[TalkCount](path + "talk.xml")
Monster := getXml[MonsterRoot](path + "地图配置野怪.xml")
MonsterMap = utils.ToMap(Monster.Maps, func(m TMapConfig) int {
@@ -82,7 +84,11 @@ func initfile() {
v.SideEffectArgS = ParseSideEffectArgs(v.SideEffectArg)
SkillMap[v.ID] = v
}
task := getXml[Tasks](path + "task.xml")
TaskMap = utils.ToMap[Task, int](task.Tasks, func(m Task) int {
return m.ID
})
pet := getXml[Monsters](path + "226.xml")
PetMAP = utils.ToMap[PetInfo, int](pet.Monsters, func(m PetInfo) int {
return m.ID

View File

@@ -0,0 +1,41 @@
package xmlres
import "github.com/ECUST-XX/xml"
// Tasks 根节点:包含所有任务
type Tasks struct {
XMLName xml.Name `xml:"tasks"`
Tasks []Task `xml:"task"` // 任务列表
}
// Task 任务节点:对应 <task>
type Task struct {
// 任务属性XML属性
ID int `xml:"ID,attr"` // 任务标识
Name string `xml:"name,attr"` // 任务名
Parent string `xml:"parent,attr"` // 父级任务格式ID|ID
IsMat int `xml:"isMat,attr"` // 父级匹配类型0单配/1全配
Type int `xml:"type,attr"` // 任务类型0常规/1日常
IsDir int `xml:"isDir,attr"` // 是否直接完成0否/1是
Doc string `xml:"doc,attr"` // 文档说明
Alert string `xml:"alert,attr"` // 提示说明
IsEnd int `xml:"isEnd,attr"` // 是否结束任务0否/1是
Especial *int `xml:"especial,attr"` // 可选是否需要特殊提示框1是nil表示无
Condition *string `xml:"condition,attr"` // 可选:接任务限制条件
// 任务子节点
Des *string `xml:"des"` // 可选:<des>节点CDATA
TaskDes *string `xml:"taskDes"` // 可选:<taskDes>节点多段CDATA用$$分隔)
ProDes *string `xml:"proDes"` // 可选:<proDes>节点CDATA
Pros []Pro `xml:"pro"` // 步骤列表:<pro>节点集合
}
// Pro 步骤节点:对应 <pro>
type Pro struct {
Name string `xml:"name,attr"` // 步骤名
Parent string `xml:"parent,attr"` // 父级步骤(格式:步骤|步骤)
IsMat string `xml:"isMat,attr"` // 父级步骤匹配类型0单配/1全配可能为空
Doc string `xml:"doc,attr"` // 文档说明
Alert string `xml:"alert,attr"` // 提示说明
IsEnd int `xml:"isEnd,attr"` // 是否最后一步0否/1是可选
}