零件协议

This commit is contained in:
hahwu 2025-08-22 16:47:13 +08:00
parent 9d44143c90
commit d8e361ccc2
6 changed files with 2277 additions and 1963 deletions

View File

@ -690,6 +690,7 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
RegisterMsgProcessFunc("ReqSetEnergyMul", RegSetEneryFunc) //设置能量倍数
RegisterMsgProcessFunc("ReqChessEx", ReqChessEx) // 转换棋子
RegisterMsgProcessFunc("ReqGetChessFromBuff", ReqGetChessFromBuff) // 从buff中获取棋子
RegisterMsgProcessFunc("ReqPutPartInBag", ReqPutPartInBag) // 把零件放入背包
RegisterMsgProcessFunc("ReqPutChessInBag", ReqPutChessInBag) // 把棋子放入背包
RegisterMsgProcessFunc("ReqTakeChessOutBag", ReqTakeChessOutBag) // 从背包中取出棋子
RegisterMsgProcessFunc("ReqBuyChessBagGrid", ReqBuyChessBagGrid) // 解锁背包格子

View File

@ -640,6 +640,40 @@ func ReqGetChessFromBuff(player *Player, buf []byte) error {
return nil
}
// 放置棋子进背包
func ReqPutPartInBag(player *Player, buf []byte) error {
req := &msg.ReqPutPartInBag{}
proto.Unmarshal(buf, req)
ChessMod := player.PlayMod.getChessMod()
err := ChessMod.PutPartInBag(int(req.ChessId))
if err != nil {
player.SendErrClienRes(&msg.ResPutPartInBag{
Code: msg.RES_CODE_FAIL,
Msg: err.Error(),
})
return err
}
data := &PlayerChessData{}
err = data.UpdateChessData(player, req.MChessData)
if err != nil {
player.SendErrClienRes(&msg.ResPutPartInBag{
Code: msg.RES_CODE_FAIL,
Msg: err.Error(),
})
return err
}
player.TeLog("ReqPutPartInBag", map[string]interface{}{
"chess_id": req.ChessId,
})
player.PlayMod.save()
player.PushClientRes(ChessMod.BackData())
player.PushClientRes(&msg.ResPutPartInBag{
Code: msg.RES_CODE_SUCCESS,
})
player.UpdateUserInfo()
return nil
}
// 放置棋子进背包
func ReqPutChessInBag(player *Player, buf []byte) error {
req := &msg.ReqPutChessInBag{}

View File

@ -40,12 +40,16 @@ type ChessBorad struct {
EmitList map[int]int
ChessBuff []int
ChessBag ChessBag
PartBag PartBag
ChessMap map[string]int32
Honor map[int]int // 荣誉室
Retire map[string]int // 退役发射器系列
RetireChessMap map[string][]int
}
type PartBag struct {
List map[int]PartBagGrid // 零件背包
}
type ChessBag struct {
List map[int]ChessBagGrid
Buy int
@ -57,6 +61,11 @@ type ChessBagGrid struct {
EmitId int // 发射器id
}
type PartBagGrid struct {
PartId int // 零件id
Num int // 零件数量
}
func (cb *ChessBorad) IsEmpty() bool {
cb.ver()
return len(cb.ChessList) == 0
@ -351,6 +360,13 @@ func (cb *ChessBorad) BackData() *msg.ResPlayerChessInfo {
EmitId: int32(v.EmitId),
})
}
var PartBagGrids []*msg.PartBagGrid
for k, v := range cb.PartBag.List {
PartBagGrids = append(PartBagGrids, &msg.PartBagGrid{
PartId: int32(k),
Count: int32(v.Num),
})
}
Re := make([]string, 0)
for k, v := range cb.Retire {
if v == 3 {
@ -371,6 +387,9 @@ func (cb *ChessBorad) BackData() *msg.ResPlayerChessInfo {
ChessBuyCnt: int32(cb.ChessBag.Buy),
ChessFreeCnt: int32(cb.ChessBag.Free),
},
PartBag: &msg.PartBag{
PartBagGrids: PartBagGrids,
},
}
}
@ -435,6 +454,29 @@ func (cb *ChessBorad) PutChessInBag(Grid, ChessId, EmitId int) error {
return nil
}
func (cb *ChessBorad) PutPartInBag(ChessId int) error {
err := cb.RemoveChess(ChessId)
if err != nil {
return err
}
ChessLv := mergeDataCfg.GetLvById(ChessId)
ChessMaxLv := mergeDataCfg.GetMaxLvById(ChessId)
if ChessLv != ChessMaxLv { // 零件只能放入满级棋子
return errors.New("part Lv is not max")
}
Num := 0
v, ok := cb.PartBag.List[ChessId]
if ok {
Num = v.Num
}
cb.PartBag.List[ChessId] = PartBagGrid{
PartId: ChessId,
Num: Num + 1,
}
return nil
}
func (cb *ChessBorad) TakeChessOutBag(Grid int) (int, error) {
if Grid < 0 {
cb.RemoveHonor(-Grid)

View File

@ -125,7 +125,7 @@ func (m *MailMod) Del(id int) error {
return fmt.Errorf("mail id %d not exist", id)
}
if v.Status == MAIL_STATUS_DEL {
return fmt.Errorf("mail have readed")
return fmt.Errorf("mail have deleted")
}
v.Status = MAIL_STATUS_DEL
v.Del = GoUtil.Now()

View File

@ -397,6 +397,9 @@ func getEmitSeries(o *OrderMod, Emit []int) string {
}
Num := 1
for {
if len(o.EmitShuffle) == 1 {
break
}
o.EmitShuffle = GoUtil.ShuffleStringArray(o.EmitShuffle)
if o.EmitShuffle[0] != PopEmitId {
break

File diff suppressed because it is too large Load Diff