Compare commits

...

2 Commits

Author SHA1 Message Date
sk 67a85f6535 竞技房间没人解散 2024-09-06 17:28:10 +08:00
sk 5bdf3d78df 商店购买 2024-09-06 16:23:57 +08:00
3 changed files with 29 additions and 46 deletions

View File

@ -13,43 +13,6 @@ import (
"mongo.games.com/game/srvdata" "mongo.games.com/game/srvdata"
) )
type CSDestroyRoomPacketFactory struct {
}
type CSDestroyRoomHandler struct {
}
func (this *CSDestroyRoomPacketFactory) CreatePacket() interface{} {
pack := &gamehall.CSDestroyRoom{}
return pack
}
func (this *CSDestroyRoomHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
logger.Logger.Trace("CSDestroyRoomHandler Process recv ", data)
p := base.PlayerMgrSington.GetPlayer(sid)
if p == nil {
logger.Logger.Warn("CSDestroyRoomHandler p == nil")
return nil
}
scene := p.GetScene()
if scene == nil {
logger.Logger.Warn("CSDestroyRoomHandler p.GetScene() == nil")
return nil
}
if !scene.HasPlayer(p) {
return nil
}
if scene.Creator != p.SnId {
logger.Logger.Warn("CSDestroyRoomHandler s.creator != p.AccountId")
return nil
}
// 房卡场开始后不能解散
if scene.IsCustom() && scene.NumOfGames > 0 {
return nil
}
scene.Destroy(true)
return nil
}
type CSLeaveRoomPacketFactory struct { type CSLeaveRoomPacketFactory struct {
} }
type CSLeaveRoomHandler struct { type CSLeaveRoomHandler struct {

View File

@ -148,6 +148,9 @@ func (this *ScenePolicyTienLen) OnPlayerLeave(s *base.Scene, p *base.Player, rea
} }
sceneEx.OnPlayerLeave(p, reason) sceneEx.OnPlayerLeave(p, reason)
s.FirePlayerEvent(p, base.PlayerEventLeave, []int64{int64(reason)}) s.FirePlayerEvent(p, base.PlayerEventLeave, []int64{int64(reason)})
if s.IsCustom() && len(s.Players) == 0 {
s.Destroy(true)
}
} }
// 玩家掉线 // 玩家掉线
@ -603,9 +606,6 @@ func (this *SceneBaseStateTienLen) OnTick(s *base.Scene) {
s.RandRobotCnt() s.RandRobotCnt()
s.SetTimerRandomRobot(s.GetRobotTime()) s.SetTimerRandomRobot(s.GetRobotTime())
} }
if s.IsCustom() && len(s.Players) == 0 {
s.Destroy(true)
}
} }
// 发送玩家操作情况 // 发送玩家操作情况

View File

@ -63,6 +63,7 @@ const (
const ( const (
ShopTypeCoin = iota + 1 // 金币 ShopTypeCoin = iota + 1 // 金币
ShopTypeDiamond // 钻石 ShopTypeDiamond // 钻石
SHopTypeItem // 道具
) )
// 商品参数类型 // 商品参数类型
@ -1267,26 +1268,45 @@ func (this *ShopMgr) SendAPICreateOrder(p *Player, ConfigPayId int32, data any,
//钻石 //钻石
amount[ShopParamDiamond] = bbd.Grade amount[ShopParamDiamond] = bbd.Grade
} }
dbShop = this.NewDbShop(p, 0, amount[:], ShopConsumeMoney, int32(bbd.Price2), common.GainWay_ActBlindBox, nil, 0, "", 0, remark, []int32{bbd.Id})
var itemInfo []model.ItemInfo
var webItemInfo []*webapi_proto.ItemInfo
for _, info := range shopInfo.GetItems() {
itemInfo = append(itemInfo, model.ItemInfo{
ItemId: info.ItemId,
ItemNum: info.ItemNum,
})
webItemInfo = append(webItemInfo, &webapi_proto.ItemInfo{
ItemId: info.ItemId,
ItemNum: info.ItemNum,
})
}
dbShop = this.NewDbShop(p, 0, amount[:], ShopConsumeMoney, int32(bbd.Price2), common.GainWay_ActBlindBox, itemInfo, 0, "", 0, remark, []int32{bbd.Id})
err := model.InsertDbShopLog(dbShop) err := model.InsertDbShopLog(dbShop)
if err != nil { if err != nil {
logger.Logger.Errorf("model.InsertDbShopLog err:", err) logger.Logger.Errorf("model.InsertDbShopLog err:", err)
return nil return nil
} }
return webapi.API_CreateOrder(common.GetAppId(), dbShop.LogId.Hex(), ConfigPayId, p.SnId, 0, p.Platform, p.PackageID, p.DeviceOS, return webapi.API_CreateOrder(common.GetAppId(), dbShop.LogId.Hex(), ConfigPayId, p.SnId, 0, p.Platform, p.PackageID, p.DeviceOS,
p.DeviceId, bbd.Name, amount, int32(bbd.Price2), nil, "", p.Channel, p.ChannelId) p.DeviceId, bbd.Name, amount, int32(bbd.Price2), webItemInfo, "", p.Channel, p.ChannelId)
} else if wfs, ok := data.(*webapi_proto.WelfareSpree); ok { } else if wfs, ok := data.(*webapi_proto.WelfareSpree); ok {
var items []model.ItemInfo var items []model.ItemInfo
var webItemInfo []*webapi_proto.ItemInfo
for _, it := range wfs.Item { for _, it := range wfs.Item {
if it.Type == 1 { if it.Type == ShopTypeCoin {
amount[ShopParamCoin] = it.Grade amount[ShopParamCoin] = it.Grade
} else if it.Type == 2 { } else if it.Type == ShopTypeDiamond {
amount[ShopParamDiamond] = it.Grade amount[ShopParamDiamond] = it.Grade
} else if it.Type == 3 { } else if it.Type == SHopTypeItem {
items = append(items, model.ItemInfo{ items = append(items, model.ItemInfo{
ItemId: it.Item_Id, ItemId: it.Item_Id,
ItemNum: int64(it.Grade), ItemNum: int64(it.Grade),
}) })
webItemInfo = append(webItemInfo, &webapi_proto.ItemInfo{
ItemId: it.GetItem_Id(),
ItemNum: int64(it.GetGrade()),
})
} }
} }
var gainWay int32 = common.GainWay_ActFirstPay var gainWay int32 = common.GainWay_ActFirstPay
@ -1300,7 +1320,7 @@ func (this *ShopMgr) SendAPICreateOrder(p *Player, ConfigPayId int32, data any,
return nil return nil
} }
return webapi.API_CreateOrder(common.GetAppId(), dbShop.LogId.Hex(), ConfigPayId, p.SnId, 0, p.Platform, p.PackageID, p.DeviceOS, return webapi.API_CreateOrder(common.GetAppId(), dbShop.LogId.Hex(), ConfigPayId, p.SnId, 0, p.Platform, p.PackageID, p.DeviceOS,
p.DeviceId, "FirstRecharge", amount, int32(wfs.Price2), nil, "", p.Channel, p.ChannelId) p.DeviceId, "FirstRecharge", amount, int32(wfs.Price2), webItemInfo, "", p.Channel, p.ChannelId)
} }
return nil return nil
}), task.CompleteNotifyWrapper(func(retdata interface{}, t task.Task) { }), task.CompleteNotifyWrapper(func(retdata interface{}, t task.Task) {