refactor(fight): 修正战斗回调函数参数类型

- 修正所有战斗相关控制器中的回调函数参数类型
- 将 func(*info.FightOverInfo) 改为 func(info.FightOverInfo)
- 保持代码逻辑不变,仅修复类型声明

feat(pet): 实现精灵图鉴功能

- 添加精灵捕捉和击杀数量统计功能
- 实现 GetPetBargeList 接口返回图鉴列表
- 在战斗胜利后自动更新图鉴状态

refactor(fight): 优化战斗循环逻辑

- 重构
This commit is contained in:
2026-01-03 02:18:31 +08:00
parent a62b94446a
commit e341623fc0
13 changed files with 146 additions and 61 deletions

View File

@@ -134,7 +134,7 @@ func (h Controller) PlayerFightBoss(data *fight.ChallengeBossInboundInfo, p *pla
ai := player.NewAI_player(monsterInfo)
ai.CanCapture = canCapture
ai.Prop[0] = 2
fight.NewFight(p, ai, func(foi *info.FightOverInfo) {
fight.NewFight(p, ai, func(foi info.FightOverInfo) {
if taskID != 0 {
if foi.Reason == 0 && foi.WinnerId == p.Info.UserID {
p.CompletedTask(taskID, 100)
@@ -188,7 +188,7 @@ func (h Controller) OnPlayerFightNpcMonster(data1 *fight.FightNpcMonsterInboundI
p.Fightinfo.Status = info.BattleMode.FIGHT_WITH_NPC //打野怪
p.Fightinfo.Mode = info.BattleMode.MULTI_MODE //多人模式
fight.NewFight(p, ai, func(foi *info.FightOverInfo) {
fight.NewFight(p, ai, func(foi info.FightOverInfo) {
p.Done.Exec(model.MilestoneMode.Moster, []uint32{p.Info.MapID, monsterInfo.PetList[0].ID, uint32(foi.Reason)}, nil)
if foi.Reason == 0 && foi.WinnerId == p.Info.UserID {

View File

@@ -64,7 +64,7 @@ func (h Controller) ArenaFightOwner(data *fight.ARENA_FIGHT_OWENR, c *player.Pla
c.Fightinfo.Mode = info.BattleMode.SINGLE_MODE
c.Fightinfo.Status = info.BattleMode.FIGHT_ARENA
_, err = fight.NewFight(c, c.GetSpace().Owner.ARENA_Player, func(foi *info.FightOverInfo) { //我方邀请擂主挑战,我方先手
_, err = fight.NewFight(c, c.GetSpace().Owner.ARENA_Player, func(foi info.FightOverInfo) { //我方邀请擂主挑战,我方先手
if foi.Reason != 0 && foi.WinnerId == c.GetInfo().UserID { //异常退出

View File

@@ -17,7 +17,7 @@ func (h Controller) PetMelee(data *fight.StartPetWarInboundInfo, c *player.Playe
c.Fightinfo.Status = info.BattleMode.PET_MELEE
err = c.JoinFight(func(p common.PlayerI) bool {
_, err = fight.NewFight(p, c, func(foi *info.FightOverInfo) {
_, err = fight.NewFight(p, c, func(foi info.FightOverInfo) {
if foi.Reason == 0 { //我放获胜
if foi.WinnerId == c.GetInfo().UserID {
@@ -45,7 +45,7 @@ func (h Controller) PetKing(data *fight.PetKingJoinInboundInfo, c *player.Player
c.Fightinfo.Mode = info.BattleMode.MULTI_MODE
}
err = c.JoinFight(func(p common.PlayerI) bool {
_, err = fight.NewFight(p, c, func(foi *info.FightOverInfo) {
_, err = fight.NewFight(p, c, func(foi info.FightOverInfo) {
if foi.Reason == 0 { //我放获胜
if foi.WinnerId == c.GetInfo().UserID {
c.Info.MonKingWin += 1

View File

@@ -53,7 +53,7 @@ func (h Controller) OnPlayerHandleFightInvite(data *fight.HandleFightInviteInbou
return
}
_, err = fight.NewFight(v, c, func(foi *info.FightOverInfo) {
_, err = fight.NewFight(v, c, func(foi info.FightOverInfo) {
})

View File

@@ -184,7 +184,7 @@ func (h Controller) PetTawor(data *fight.StartTwarInboundInfo, c *player.Player)
}
ai := player.NewAI_player(monsterInfo)
_, err = fight.NewFight(c, ai, func(foi *fightinfo.FightOverInfo) {
_, err = fight.NewFight(c, ai, func(foi fightinfo.FightOverInfo) {
if foi.Reason == 0 && foi.WinnerId == c.Info.UserID { //我放获胜
switch data.Head.CMD {
case 2429: //试炼之塔

View File

@@ -12,6 +12,12 @@ func (h Controller) IsCollect(
ID: data.Type,
IsCom: 0,
}
// r := c.Service.Barge.Get()
// for _, v := range r {
// }
return result, 0
}

View File

@@ -223,6 +223,19 @@ func (h Controller) SetPetExp(data *pet.PetSetExpInboundInfo, player *player.Pla
// GetPetBargeList 精灵图鉴
func (h Controller) GetPetBargeList(data *pet.PetBargeListInboundInfo, player *player.Player) (result *pet.PetBargeListOutboundInfo, err errorcode.ErrorCode) {
ret := &pet.PetBargeListOutboundInfo{
PetBargeList: make([]pet.PetBargeListInfo, 0),
}
r := player.Service.Barge.Get(data.StartPetId, data.EndPetId)
for _, v := range r {
ret.PetBargeList = append(ret.PetBargeList, pet.PetBargeListInfo{
PetId: v.PetId,
IsCatched: v.CatchedCount,
IsKilled: v.KilledCount,
})
}
return &pet.PetBargeListOutboundInfo{
PetBargeList: make([]pet.PetBargeListInfo, 0),
}, 0