fix: 修复boss奖励发放逻辑
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
This commit is contained in:
@@ -18,6 +18,10 @@ import (
|
|||||||
"github.com/gogf/gf/v2/util/grand"
|
"github.com/gogf/gf/v2/util/grand"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
rewardItemExpPool = 3
|
||||||
|
)
|
||||||
|
|
||||||
// PlayerFightBoss 挑战地图boss
|
// PlayerFightBoss 挑战地图boss
|
||||||
func (Controller) PlayerFightBoss(req *ChallengeBossInboundInfo, p *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) {
|
func (Controller) PlayerFightBoss(req *ChallengeBossInboundInfo, p *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) {
|
||||||
if err = p.CanFight(); err != 0 {
|
if err = p.CanFight(); err != 0 {
|
||||||
@@ -250,7 +254,7 @@ func handleNpcFightRewards(p *player.Player, foi model.FightOverInfo, monster *m
|
|||||||
rewards := &fightinfo.S2C_GET_BOSS_MONSTER{}
|
rewards := &fightinfo.S2C_GET_BOSS_MONSTER{}
|
||||||
|
|
||||||
p.ItemAdd(3, int64(poolexp+addexp))
|
p.ItemAdd(3, int64(poolexp+addexp))
|
||||||
rewards.ADDitem(3, uint32(poolexp))
|
rewards.AddItem(rewardItemExpPool, uint32(poolexp))
|
||||||
p.AddPetExp(foi.Winpet, int64(addexp))
|
p.AddPetExp(foi.Winpet, int64(addexp))
|
||||||
|
|
||||||
if p.CanGetItem() {
|
if p.CanGetItem() {
|
||||||
@@ -258,7 +262,7 @@ func handleNpcFightRewards(p *player.Player, foi model.FightOverInfo, monster *m
|
|||||||
if itemID != 0 {
|
if itemID != 0 {
|
||||||
count := uint32(grand.N(1, 2))
|
count := uint32(grand.N(1, 2))
|
||||||
if p.ItemAdd(itemID, int64(count)) {
|
if p.ItemAdd(itemID, int64(count)) {
|
||||||
rewards.ADDitem(uint32(itemID), count)
|
rewards.AddItem(uint32(itemID), count)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -268,10 +272,12 @@ func handleNpcFightRewards(p *player.Player, foi model.FightOverInfo, monster *m
|
|||||||
xuanID := uint32(400686 + petType)
|
xuanID := uint32(400686 + petType)
|
||||||
count := uint32(grand.N(1, 2))
|
count := uint32(grand.N(1, 2))
|
||||||
if p.ItemAdd(int64(xuanID), int64(count)) {
|
if p.ItemAdd(int64(xuanID), int64(count)) {
|
||||||
rewards.ADDitem(xuanID, count)
|
rewards.AddItem(xuanID, count)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
p.SendPackCmd(8004, rewards)
|
if rewards.HasReward() {
|
||||||
|
p.SendPackCmd(8004, rewards)
|
||||||
|
}
|
||||||
foi.Winpet.AddEV(gconv.Int64s(strings.Fields(petCfg.YieldingEV)))
|
foi.Winpet.AddEV(gconv.Int64s(strings.Fields(petCfg.YieldingEV)))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package controller
|
package controller
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"blazing/common/data"
|
|
||||||
"blazing/common/socket/errorcode"
|
"blazing/common/socket/errorcode"
|
||||||
"blazing/modules/player/model"
|
"blazing/modules/player/model"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
@@ -35,9 +34,11 @@ func (h Controller) ArenaSetOwner(data *ARENA_SET_OWENR, c *player.Player) (resu
|
|||||||
|
|
||||||
return nil, errorcode.ErrorCodes.ErrChampionExists
|
return nil, errorcode.ErrorCodes.ErrChampionExists
|
||||||
}
|
}
|
||||||
|
|
||||||
type ARENA_FIGHT_OWENR struct {
|
type ARENA_FIGHT_OWENR struct {
|
||||||
Head common.TomeeHeader `cmd:"2418" struc:"skip"`
|
Head common.TomeeHeader `cmd:"2418" struc:"skip"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ArenaFightOwner 挑战擂台的包
|
// ArenaFightOwner 挑战擂台的包
|
||||||
// 还是后端主动发送2503的包给双方前端后 等待前端加载完毕 主动发送2404包通知后端开始战斗
|
// 还是后端主动发送2503的包给双方前端后 等待前端加载完毕 主动发送2404包通知后端开始战斗
|
||||||
// ArenaFightOwner 并不会通知对方是否接受挑战。只要有人挑战就直接进入对战
|
// ArenaFightOwner 并不会通知对方是否接受挑战。只要有人挑战就直接进入对战
|
||||||
@@ -87,12 +88,9 @@ func (h Controller) ArenaFightOwner(data1 *ARENA_FIGHT_OWENR, c *player.Player)
|
|||||||
if addev != 0 {
|
if addev != 0 {
|
||||||
c.Info.EVPool += addev
|
c.Info.EVPool += addev
|
||||||
|
|
||||||
c.SendPackCmd(8004, &info.S2C_GET_BOSS_MONSTER{ //发送EV
|
rewards := &info.S2C_GET_BOSS_MONSTER{}
|
||||||
ItemList: []data.ItemInfo{{
|
rewards.AddItem(9, uint32(addev))
|
||||||
ItemId: 9,
|
c.SendPackCmd(8004, rewards) //发送EV
|
||||||
ItemCnt: int64(addev),
|
|
||||||
}},
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@@ -103,12 +101,9 @@ func (h Controller) ArenaFightOwner(data1 *ARENA_FIGHT_OWENR, c *player.Player)
|
|||||||
if addev != 0 {
|
if addev != 0 {
|
||||||
c.GetSpace().Owner.ARENA_Player.GetInfo().EVPool += addev
|
c.GetSpace().Owner.ARENA_Player.GetInfo().EVPool += addev
|
||||||
|
|
||||||
c.GetSpace().Owner.ARENA_Player.SendPackCmd(8004, &info.S2C_GET_BOSS_MONSTER{ //发送EV
|
rewards := &info.S2C_GET_BOSS_MONSTER{}
|
||||||
ItemList: []data.ItemInfo{{
|
rewards.AddItem(9, uint32(addev))
|
||||||
ItemId: 9,
|
c.GetSpace().Owner.ARENA_Player.SendPackCmd(8004, rewards) //发送EV
|
||||||
ItemCnt: int64(addev),
|
|
||||||
}},
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,9 +16,27 @@ type S2C_GET_BOSS_MONSTER struct {
|
|||||||
// 3. 该List结构参考PetInfo的特性List(长度为Uint型,非int)
|
// 3. 该List结构参考PetInfo的特性List(长度为Uint型,非int)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *S2C_GET_BOSS_MONSTER) ADDitem(id, count uint32) {
|
func (s *S2C_GET_BOSS_MONSTER) AddItem(id, count uint32) bool {
|
||||||
|
if id == 0 || count == 0 {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
s.ItemList = append(s.ItemList, data.ItemInfo{
|
s.ItemList = append(s.ItemList, data.ItemInfo{
|
||||||
ItemId: int64(id),
|
ItemId: int64(id),
|
||||||
ItemCnt: int64(count),
|
ItemCnt: int64(count),
|
||||||
})
|
})
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *S2C_GET_BOSS_MONSTER) AddItemInfo(item data.ItemInfo) bool {
|
||||||
|
if item.ItemId == 0 || item.ItemCnt <= 0 {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
s.ItemList = append(s.ItemList, item)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *S2C_GET_BOSS_MONSTER) HasReward() bool {
|
||||||
|
return s.BonusID != 0 || s.PetID != 0 || s.CaptureTm != 0 || len(s.ItemList) > 0
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ func (p *Player) bossgive(taskID int, ot int) {
|
|||||||
// 发放道具奖励(仅成功添加的道具才返回给前端)
|
// 发放道具奖励(仅成功添加的道具才返回给前端)
|
||||||
for _, item := range gift.ItemList {
|
for _, item := range gift.ItemList {
|
||||||
if success := p.ItemAdd(item.ItemId, item.ItemCnt); success {
|
if success := p.ItemAdd(item.ItemId, item.ItemCnt); success {
|
||||||
res.ItemList = append(res.ItemList, item)
|
res.AddItemInfo(item)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,5 +112,7 @@ func (p *Player) bossgive(taskID int, ot int) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 发送奖励通知给前端
|
// 发送奖励通知给前端
|
||||||
p.SendPackCmd(8004, res)
|
if res.HasReward() {
|
||||||
|
p.SendPackCmd(8004, res)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user