增加开启资源宝箱接口

This commit is contained in:
hahwu 2025-01-10 11:05:47 +08:00
parent 35b0bf57a7
commit a520e17de1
6 changed files with 3242 additions and 2993 deletions

View File

@ -23,6 +23,15 @@ func Int32ToInt(d []int32) []int {
return r
}
func StringToInt(d []string) []int {
r := make([]int, 0, len(d))
for _, d := range d {
n, _ := strconv.Atoi(d)
r = append(r, n)
}
return r
}
func RandPopSlice(slice []int) ([]int, int) {
slen := len(slice)
if slen == 0 {

View File

@ -2,6 +2,8 @@ package mergeDataCfg
import (
"errors"
"server/GoUtil"
"server/game/mod/item"
"server/gamedata"
"server/pkg/github.com/name5566/leaf/log"
"strconv"
@ -267,3 +269,51 @@ func GetChessBagBugNum() int {
func GetChessBagInitNum() int {
return GetConstInt("chess_bag_init")
}
func GetSourceChestItem() []*item.Item {
data, err := gamedata.GetDataByKey(CONST_NAME, "source_chest_reward")
if err != nil {
log.Debug("GetSourceChestItem GetOne not found")
return nil
}
Str := gamedata.ParseString(data["Value"])
A1 := strings.Split(Str, "|")
var r []*item.Item
if len(A1) < 2 {
return r
}
A2 := strings.Split(A1[0], "/")
A3 := GoUtil.StringToInt(A2)
A4 := GoUtil.RandSlice(A3)
r = append(r, item.NewItem(item.ITEM_DIAMOND_ID, A4))
B2 := strings.Split(A1[1], "/")
B3 := GoUtil.StringToInt(B2)
B4 := GoUtil.RandSlice(B3)
r = append(r, item.NewItem(item.ITEM_ENERGY_ID, B4))
return r
}
func GetHighSourceChestItem() []*item.Item {
data, err := gamedata.GetDataByKey(CONST_NAME, "high_source_chest_reward")
if err != nil {
log.Debug("GetHighSourceChestItem GetOne not found")
return nil
}
Str := gamedata.ParseString(data["Value"])
A1 := strings.Split(Str, "|")
var r []*item.Item
if len(A1) < 2 {
return r
}
A2 := strings.Split(A1[0], "/")
A3 := GoUtil.StringToInt(A2)
A4 := GoUtil.RandSlice(A3)
r = append(r, item.NewItem(item.ITEM_DIAMOND_ID, A4))
B2 := strings.Split(A1[1], "/")
B3 := GoUtil.StringToInt(B2)
B4 := GoUtil.RandSlice(B3)
r = append(r, item.NewItem(item.ITEM_ENERGY_ID, B4))
return r
}

View File

@ -630,6 +630,7 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
RegisterMsgProcessFunc("ReqPutChessInBag", ReqPutChessInBag) // 把棋子放入背包
RegisterMsgProcessFunc("ReqTakeChessOutBag", ReqTakeChessOutBag) // 从背包中取出棋子
RegisterMsgProcessFunc("ReqBuyChessBagGrid", ReqBuyChessBagGrid) // 解锁背包格子
RegisterMsgProcessFunc("ReqSourceChest", ReqSourceChest) // 开宝箱
RegisterMsgProcessFunc("ReqBuyEnergy", ReqBuyEnergy) //购买能量

View File

@ -655,6 +655,46 @@ func ReqChessEx(args []interface{}) error {
return nil
}
func ReqSourceChest(args []interface{}) error {
_, player, buf := ParseArgs(args)
req := &msg.ReqSourceChest{}
proto.Unmarshal(buf, req)
ChessMod := player.PlayMod.getChessMod()
ChestId := int(req.ChestId)
Items, err := ChessMod.SourceChest(ChestId)
if err != nil {
player.SendErrClienRes(&msg.ResSourceChest{
Code: msg.RES_CODE_FAIL,
Msg: err.Error(),
})
return err
}
err = player.HandleItem(Items, msg.ITEM_POP_LABEL_SourceChest.String())
if err != nil {
player.SendErrClienRes(&msg.ResSourceChest{
Code: msg.RES_CODE_FAIL,
Msg: err.Error(),
})
return err
}
data := &PlayerChessData{}
err = data.UpdateChessData(player, req.MChessData)
if err != nil {
player.SendErrClienRes(&msg.ResSourceChest{
Code: msg.RES_CODE_FAIL,
Msg: err.Error(),
})
return err
}
player.PlayMod.save()
player.PushClientRes(ChessMod.BackData())
player.PushClientRes(&msg.ResSourceChest{
Code: msg.RES_CODE_SUCCESS,
})
player.UpdateUserInfo()
return nil
}
// ---------------------CardApi----------------------
func ReqCardInfo(args []interface{}) error {

View File

@ -14,8 +14,10 @@ import (
)
const (
ModuleName = "chess"
ChessBoradMaxNum = 63
ModuleName = "chess"
ChessBoradMaxNum = 63
CHESS_SOURCE_CHEST = 705
CHESS_HIGH_SOURCE_CHEST = 706
)
type ChessBorad struct {
@ -492,3 +494,18 @@ func (cb *ChessBorad) FinishRetire(EmitType string) error {
cb.Retire[EmitType] = 3
return nil
}
func (cb *ChessBorad) SourceChest(ChessId int) ([]*item.Item, error) {
err := cb.RemoveChess(ChessId)
if err != nil {
return nil, err
}
if ChessId == CHESS_SOURCE_CHEST {
return mergeDataCfg.GetSourceChestItem(), nil
}
if ChessId == CHESS_HIGH_SOURCE_CHEST {
return mergeDataCfg.GetHighSourceChestItem(), nil
}
return nil, nil
}

File diff suppressed because it is too large Load Diff