Compare commits

..

2 Commits

Author SHA1 Message Date
sk 7c00ec5067 道具修改失败返回错误码 2024-09-03 18:42:49 +08:00
sk 92bf5fe16e review 2024-09-03 18:09:09 +08:00
4 changed files with 68 additions and 51 deletions

View File

@ -101,7 +101,8 @@ func (svc *BagSvc) AddBagItem(args *model.BagInfo, ret *bool) error {
for id, v := range args.BagItem { for id, v := range args.BagItem {
if item, exist := bag.BagItem[id]; !exist { if item, exist := bag.BagItem[id]; !exist {
if v.ItemNum <= 0 { if v.ItemNum <= 0 {
continue err = errors.New("item num not enough")
break
} }
bag.BagItem[id] = &model.Item{ bag.BagItem[id] = &model.Item{
ItemId: v.ItemId, ItemId: v.ItemId,
@ -110,7 +111,8 @@ func (svc *BagSvc) AddBagItem(args *model.BagInfo, ret *bool) error {
} }
} else { } else {
if v.ItemNum < 0 && -v.ItemNum > item.ItemNum { if v.ItemNum < 0 && -v.ItemNum > item.ItemNum {
v.ItemNum = -item.ItemNum err = errors.New("item num not enough")
break
} }
item.ItemNum += v.ItemNum item.ItemNum += v.ItemNum
} }
@ -119,10 +121,18 @@ func (svc *BagSvc) AddBagItem(args *model.BagInfo, ret *bool) error {
vCard = v.ItemNum vCard = v.ItemNum
} }
} }
if err != nil {
*ret = false
logger.Logger.Errorf("AddBagItem error: %v", err)
return err
}
_, err = cbag.Upsert(bson.M{"_id": bag.BagId}, bag) _, err = cbag.Upsert(bson.M{"_id": bag.BagId}, bag)
if err != nil { if err != nil {
*ret = false *ret = false
logger.Logger.Info("AddBagItem error ", err) logger.Logger.Info("AddBagItem error ", err)
return err
} }
// v卡返还 // v卡返还

View File

@ -73,7 +73,7 @@ func HandleWGBuyRecTimeItem(session *netlib.Session, packetId int, data interfac
// return nil // return nil
//} //}
func CreateSceneHandler(session *netlib.Session, packetId int, data interface{}) error { func CreateScene(session *netlib.Session, packetId int, data interface{}) error {
logger.Logger.Tracef("receive CreateScene %v", data) logger.Logger.Tracef("receive CreateScene %v", data)
msg, ok := data.(*server.WGCreateScene) msg, ok := data.(*server.WGCreateScene)
if !ok { if !ok {
@ -86,52 +86,53 @@ func CreateSceneHandler(session *netlib.Session, packetId int, data interface{})
return nil return nil
} }
func DestroyScene(session *netlib.Session, packetId int, data interface{}) error {
logger.Logger.Trace("receive WGDestroyScene:", data)
msg, ok := data.(*server.WGDestroyScene)
if !ok {
return nil
}
if !msg.IsGrace {
// 立刻删除,不管游戏是否结束
for _, v := range msg.Ids {
s := base.SceneMgrSington.GetScene(int(v))
if s == nil {
continue
}
if gameScene, ok := s.ExtraData.(base.GameScene); ok {
gameScene.SceneDestroy(true)
}
}
return nil
}
// 游戏结束后删除房间
for _, v := range msg.Ids {
s := base.SceneMgrSington.GetScene(int(v))
if s == nil {
continue
}
if s.IsHundredScene() || s.Gaming {
s.SetGraceDestroy()
} else {
if s.IsMatchScene() {
s.SetGraceDestroy()
}
if gameScene, ok := s.ExtraData.(base.GameScene); ok {
gameScene.SceneDestroy(true)
}
}
}
return nil
}
func init() { func init() {
// 创建房间 // 创建房间
netlib.Register(int(server.SSPacketID_PACKET_WG_CREATESCENE), &server.WGCreateScene{}, CreateSceneHandler) netlib.Register(int(server.SSPacketID_PACKET_WG_CREATESCENE), &server.WGCreateScene{}, CreateScene)
// 删除房间
//删除场景 netlib.Register(int(server.SSPacketID_PACKET_WG_DESTROYSCENE), &server.WGDestroyScene{}, DestroyScene)
// 立刻删除,不管游戏是否结束
netlib.RegisterFactory(int(server.SSPacketID_PACKET_WG_DESTROYSCENE), netlib.PacketFactoryWrapper(func() interface{} {
return &server.WGDestroyScene{}
}))
netlib.RegisterHandler(int(server.SSPacketID_PACKET_WG_DESTROYSCENE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error {
logger.Logger.Trace("receive WGDestroyScene:", pack)
msg, ok := pack.(*server.WGDestroyScene)
if !ok {
return nil
}
if !msg.IsGrace {
// 立刻删除,不管游戏是否结束
for _, v := range msg.Ids {
s := base.SceneMgrSington.GetScene(int(v))
if s != nil {
if gameScene, ok := s.ExtraData.(base.GameScene); ok {
gameScene.SceneDestroy(true)
}
}
}
} else {
// 游戏结束后删除房间
for _, v := range msg.Ids {
s := base.SceneMgrSington.GetScene(int(v))
if s != nil {
if s.IsHundredScene() || s.Gaming {
s.SetGraceDestroy(true)
} else {
if s.IsMatchScene() {
s.SetGraceDestroy(true)
}
if gameScene, ok := s.ExtraData.(base.GameScene); ok {
gameScene.SceneDestroy(true)
}
}
}
}
}
return nil
}))
//玩家进入 //玩家进入
netlib.RegisterFactory(int(server.SSPacketID_PACKET_WG_PLAYERENTER), netlib.PacketFactoryWrapper(func() interface{} { netlib.RegisterFactory(int(server.SSPacketID_PACKET_WG_PLAYERENTER), netlib.PacketFactoryWrapper(func() interface{} {

View File

@ -297,8 +297,8 @@ func (this *Scene) SetScenePolicy(sp ScenePolicy) {
func (this *Scene) GetGraceDestroy() bool { func (this *Scene) GetGraceDestroy() bool {
return this.graceDestroy return this.graceDestroy
} }
func (this *Scene) SetGraceDestroy(graceDestroy bool) { func (this *Scene) SetGraceDestroy() {
this.graceDestroy = graceDestroy this.graceDestroy = true
} }
func (this *Scene) GetCpControlled() bool { func (this *Scene) GetCpControlled() bool {

View File

@ -3761,15 +3761,21 @@ func init() {
p := PlayerMgrSington.GetPlayerBySnId(msg.GetSnid()) p := PlayerMgrSington.GetPlayerBySnId(msg.GetSnid())
if p != nil { if p != nil {
//获取道具Id //获取道具Id
BagMgrSingleton.AddItemsV2(&model.AddItemParam{ _, _, ok := BagMgrSingleton.AddItemsV2(&model.AddItemParam{
P: p.PlayerData, P: p.PlayerData,
Change: items, Change: items,
GainWay: msg.GetTypeId(), GainWay: msg.GetTypeId(),
Operator: "system", Operator: "system",
Remark: msg.GetRemark(), Remark: msg.GetRemark(),
}) })
if !ok {
logger.Logger.Errorf("player delete %v err: %v", msg, err)
pack.Tag = webapiproto.TagCode_FAILED
pack.Msg = "修改道具失败"
return common.ResponseTag_Ok, pack
}
pack.Tag = webapiproto.TagCode_SUCCESS pack.Tag = webapiproto.TagCode_SUCCESS
pack.Msg = "AddItem success" pack.Msg = "修改道具成功"
return common.ResponseTag_Ok, pack return common.ResponseTag_Ok, pack
} else { } else {
BagMgrSingleton.AddItemsOffline(msg.Platform, msg.Snid, items, msg.GetTypeId(), BagMgrSingleton.AddItemsOffline(msg.Platform, msg.Snid, items, msg.GetTypeId(),