refactor(blazing): 重构任务系统并优化相关功能

- 重构了任务系统的数据结构和执行逻辑
- 优化了地图加载和怪物刷新机制
- 改进了宠物系统的基础架构
- 调整了玩家信息和背包的处理方式
- 统一了数据访问层的接口和实现
This commit is contained in:
2025-08-30 21:59:52 +08:00
parent 2ed5c2db27
commit 75e428f62e
23 changed files with 326 additions and 230 deletions

View File

@@ -83,27 +83,25 @@ func RandomStringFromSlice(s []string) string {
func (t *InInfo) genMonster(mapid uint32) *OgreInfo {
// 设置怪物信息
t1 := OgreInfo{}
for _, tc := range xmlres.Monster.Maps {
if tc.ID == gconv.Int(mapid) && tc.Monsters != nil {
for i, m := range tc.Monsters.Monsters { //这里是9个
id := strings.Split(m.ID, " ")
lv := strings.Split(m.Lv, " ")
ttt := OgrePetInfo{
Id: gconv.Uint32(RandomStringFromSlice(id)),
}
if ttt.Id != 0 {
ttt.Shiny = 0 //待确认是否刷新异色
ttt.Lv = gconv.Uint32(RandomStringFromSlice(lv))
}
t1.Data[i] = ttt
mapss, ok := xmlres.MonsterMap[gconv.Int(mapid)]
if ok && mapss.Monsters != nil {
for i, m := range mapss.Monsters.Monsters { //这里是9个
id := strings.Split(m.ID, " ")
lv := strings.Split(m.Lv, " ")
ttt := OgrePetInfo{
Id: gconv.Uint32(RandomStringFromSlice(id)),
}
break
if ttt.Id != 0 {
ttt.Shiny = 0 //待确认是否刷新异色
ttt.Lv = gconv.Uint32(RandomStringFromSlice(lv))
}
t1.Data[i] = ttt
}
}
t2 := OgreInfo{}
for i := 0; i < 3; i++ {
@@ -292,3 +290,14 @@ func NewOutInfo() *OutInfo {
return l
}
func LeaveMap(c *socket.Player) {
t := handler.NewTomeeHeader(2002, c.Info.UserID)
space.GetSpace(c.Info.MapID).Range(func(playerID uint32, player *socket.Player) bool {
player.SendPack(t.Pack(&LeaveMapOutboundInfo{UserID: c.Info.UserID}))
return true
})
space.GetSpace(c.Info.MapID).Delete(c.Info.UserID)
}