增加场景奖励

This commit is contained in:
hahwu 2025-06-17 16:36:41 +08:00
parent f6838d7bb9
commit 9ffd430ae3
5 changed files with 1706 additions and 1530 deletions

View File

@ -94,6 +94,20 @@ func GetProgressReward(Scene, Lv int) []*item.Item {
return nil return nil
} }
func GetDecoarteReward(Scene int) []*item.Item {
value, err := gamedata.GetData(INDOOR_PROGRESS)
if err != nil {
log.Debug("IndoorProgress GetDecoarteReward not found")
return nil
}
for _, v := range value {
if gamedata.GetIntValue(v, "Scene") == Scene && gamedata.GetIntValue(v, "Lv") == 1 {
return gamedata.GetItemList(v, "AreaReward")
}
}
return nil
}
// 获取一键装饰的解锁等级 // 获取一键装饰的解锁等级
func GetOneKeyDecorateUnlockLv() int { func GetOneKeyDecorateUnlockLv() int {
data, err := gamedata.GetDataByKey(DECORATE_CONST, "OneKey") data, err := gamedata.GetDataByKey(DECORATE_CONST, "OneKey")

View File

@ -662,8 +662,9 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
RegisterMsgProcessFunc("ReqDelOrder", ReqDelOrder) // 删除订单 RegisterMsgProcessFunc("ReqDelOrder", ReqDelOrder) // 删除订单
//装饰 //装饰
RegisterMsgProcessFunc("ReqDecorate", ReqDecorate) // 装饰 RegisterMsgProcessFunc("ReqDecorate", ReqDecorate) // 装饰
RegisterMsgProcessFunc("ReqDecorateAll", ReqDecorateAll) // 装饰全部 RegisterMsgProcessFunc("ReqDecorateAll", ReqDecorateAll) // 装饰全部
RegisterMsgProcessFunc("ReqDecorateReward", ReqDecorateReward) // 装饰全部
//Gm命令 //Gm命令
RegisterMsgProcessFunc("ReqGmCommand", ReqGmCommand) // Gm命令 RegisterMsgProcessFunc("ReqGmCommand", ReqGmCommand) // Gm命令

View File

@ -530,6 +530,38 @@ func ReqDecorateAll(player *Player, buf []byte) error {
return nil return nil
} }
func ReqDecorateReward(player *Player, buf []byte) error {
req := &msg.ReqDecorateReward{}
proto.Unmarshal(buf, req)
DecorateMod := player.PlayMod.getDecorateMod()
Item, err := DecorateMod.GetDecorateReward(int(req.AreaId))
if err != nil {
player.SendErrClienRes(&msg.ResDecorateReward{
Code: msg.RES_CODE_FAIL,
Msg: err.Error(),
})
return err
}
err = player.HandleItem(Item, msg.ITEM_POP_LABEL_DecorateReward.String())
if err != nil {
player.SendErrClienRes(&msg.ResDecorateReward{
Code: msg.RES_CODE_FAIL,
Msg: err.Error(),
})
return err
}
player.TeLog("scene_reward", map[string]interface{}{
"deco_step_id": fmt.Sprintf("%d_%d", DecorateMod.AreaId, DecorateMod.Progress),
"item_list": Item,
})
player.PushClientRes(&msg.ResDecorateReward{
Code: msg.RES_CODE_SUCCESS,
})
player.PushClientRes(DecorateMod.BackData())
player.PlayMod.save()
return nil
}
// -----------------------ChessApi---------------------- // -----------------------ChessApi----------------------
// 更新棋盘信息 // 更新棋盘信息
func UpdatePlayerChessDataFunc(player *Player, buf []byte) error { func UpdatePlayerChessDataFunc(player *Player, buf []byte) error {

View File

@ -14,6 +14,7 @@ type Decorate struct {
FinishList map[int]struct{} FinishList map[int]struct{}
Progress int Progress int
DecorateNum int DecorateNum int
AreaReward []int
} }
func (d *Decorate) InitData() { func (d *Decorate) InitData() {
@ -109,9 +110,18 @@ func (d *Decorate) BackData() *msg.ResDecorateInfo {
return &msg.ResDecorateInfo{ return &msg.ResDecorateInfo{
AreaId: int32(d.AreaId), AreaId: int32(d.AreaId),
MFinishList: GoUtil.MapIntToSlice(d.FinishList), MFinishList: GoUtil.MapIntToSlice(d.FinishList),
RewardArea: GoUtil.IntToInt32(d.AreaReward),
} }
} }
func (d *Decorate) GetDecorateReward(areaId int) ([]*item.Item, error) {
if GoUtil.InArray(areaId, d.AreaReward) {
return nil, fmt.Errorf("areaId already rewarded")
}
d.AreaReward = append(d.AreaReward, areaId)
return decorateCfg.GetDecoarteReward(areaId), nil
}
func (d *Decorate) GetAreaId() int { func (d *Decorate) GetAreaId() int {
return d.AreaId return d.AreaId
} }

File diff suppressed because it is too large Load Diff