This commit is contained in:
by 2024-09-19 18:31:23 +08:00
commit 24dd497af4
10 changed files with 823 additions and 429 deletions

View File

@ -314,9 +314,10 @@ const (
GainWayRoomCost = 106 //房费消耗 GainWayRoomCost = 106 //房费消耗
GainWayRoomGain = 107 //房卡场获得 GainWayRoomGain = 107 //房卡场获得
GainWayItemShop = 108 // 交易市场道具交易 GainWayItemShop = 108 // 交易市场道具交易
GainWayClawdoorCostItem = 109 // 娃娃机上分扣道具 GainWayClawdollCostItem = 109 // 娃娃机上分扣道具
GainWayItemShopChangeDoll = 110 // 商城兑换娃娃 GainWayItemShopChangeDoll = 110 // 商城兑换娃娃
GainWayItemBagChangeDoll = 111 // 背包内兑换娃娃 GainWayItemBagChangeDoll = 111 // 背包内兑换娃娃
GainWayClawdollCatch = 112 // 娃娃机抓取到娃娃获取卡
) )
// 后台选择 金币变化类型 的充值 类型id号起始 // 后台选择 金币变化类型 的充值 类型id号起始
@ -567,7 +568,6 @@ const (
ItemIDVCard = 30001 // v卡 ItemIDVCard = 30001 // v卡
ItemIDJCard = 30002 // 金券 ItemIDJCard = 30002 // 金券
ItemDiamondScore = 100012 //钻石积分 ItemDiamondScore = 100012 //钻石积分
ItemDollCard = 40004 // 娃娃卡积分
) )
func ToItemId(id int32) int32 { func ToItemId(id int32) int32 {
@ -598,7 +598,6 @@ const (
ItemTypeObjective = 16 // 目标类道具 ItemTypeObjective = 16 // 目标类道具
ItemTypeChange = 17 // 兑换话费 ItemTypeChange = 17 // 兑换话费
ItemTypeSkinChip = 22 // 皮肤碎片 ItemTypeSkinChip = 22 // 皮肤碎片
ItemTypeDoll = 26 //娃娃兑换
) )
func GetKeyNoviceGameId(gameId int) string { func GetKeyNoviceGameId(gameId int) string {
@ -852,9 +851,3 @@ type NotifyType int // 通知类型
const ( const (
NotifyPrivateRoomList NotifyType = 1 // 私人房间列表 NotifyPrivateRoomList NotifyType = 1 // 私人房间列表
) )
// SCPlayerCoinChange 中数值类型
const (
PlayerChangeTypeCoin = 0 // 金币
PlayerChangeTypeNum = 1 // 积分
)

View File

@ -113,6 +113,17 @@ func (svc *ItemLogSvc) UpdateState(req *model.UpdateParam, res *model.UpdateRes)
return err return err
} }
func (svc *ItemLogSvc) GetClawdollItemLog(args *model.ClawdollItemLogReq, ret *[]model.CoinWAL) (err error) {
cond := bson.M{"snid": args.Snid, "typeid": common.GainWayClawdollCostItem}
c := ItemLogsCollection(args.Platform)
if c == nil {
return
}
err = c.Find(cond).All(&ret)
return
}
func init() { func init() {
rpc.Register(new(ItemLogSvc)) rpc.Register(new(ItemLogSvc))
} }

View File

@ -75,5 +75,7 @@ const (
) )
const ( const (
ClawDoorItemID = 40003 ClawDollItemID = 40003
ClawDollGiveItemID = 74004
ClawDollCostItemCount = 2
) )

View File

@ -73,12 +73,19 @@ func MSDollMachineoCoinResultHandler(session *netlib.Session, packetId int, data
return nil return nil
} }
playerEx, ok := p.ExtraData.(*PlayerEx)
if !ok {
return nil
}
switch msg.TypeId { switch msg.TypeId {
case 1: case 1:
logger.Logger.Tracef("ClawDoll OnPlayerOp payCoin response, SnId= %v", p.SnId) logger.Logger.Tracef("ClawDoll OnPlayerOp payCoin response, SnId= %v", p.SnId)
if msg.Result == 1 { if msg.Result == 1 {
logger.Logger.Tracef("上分成功snid = %v", msg.Snid) logger.Logger.Tracef("上分成功snid = %v", msg.Snid)
playerEx.CostPlayCoin(2)
sceneEx.playingSnid = p.SnId sceneEx.playingSnid = p.SnId
//发送向前移动指令 //发送向前移动指令
@ -99,6 +106,9 @@ func MSDollMachineoCoinResultHandler(session *netlib.Session, packetId int, data
case 2: case 2:
if msg.Result == 1 { if msg.Result == 1 {
// 获得娃娃卡 // 获得娃娃卡
playerEx.CatchCardClawdoll(1)
logger.Logger.Tracef("下抓成功snid = %v", msg.Snid) logger.Logger.Tracef("下抓成功snid = %v", msg.Snid)
} else { } else {
logger.Logger.Tracef("下抓失败snid = %v", msg.Snid) logger.Logger.Tracef("下抓失败snid = %v", msg.Snid)

View File

@ -42,10 +42,10 @@ func (this *PlayerEx) CanOp(sceneEx *SceneEx) bool {
// 能否投币 // 能否投币
func (this *PlayerEx) CanPayCoin() bool { func (this *PlayerEx) CanPayCoin() bool {
itemID := int32(rule.ClawDoorItemID) itemID := int32(rule.ClawDollItemID)
itemCount := this.GetItemCount(itemID) itemCount := this.GetItemCount(itemID)
if itemCount < 1 { if itemCount < rule.ClawDollCostItemCount {
return true return false
} }
itemData := srvdata.GameItemMgr.Get(this.Platform, itemID) itemData := srvdata.GameItemMgr.Get(this.Platform, itemID)
@ -70,11 +70,11 @@ func (this *PlayerEx) CostPlayCoin(count int32) bool {
var items []*model.Item var items []*model.Item
itemData := srvdata.GameItemMgr.Get(this.Platform, rule.ClawDoorItemID) itemData := srvdata.GameItemMgr.Get(this.Platform, rule.ClawDollItemID)
if itemData != nil { if itemData != nil {
items = append(items, &model.Item{ items = append(items, &model.Item{
ItemId: rule.ClawDoorItemID, ItemId: rule.ClawDollItemID,
ItemNum: -1, ItemNum: int64(count),
}) })
} }
@ -92,7 +92,7 @@ func (this *PlayerEx) CostPlayCoin(count int32) bool {
this.AddItems(&model.AddItemParam{ this.AddItems(&model.AddItemParam{
P: this.PlayerData, P: this.PlayerData,
Change: items, Change: items,
GainWay: common.GainWayClawdoorCostItem, GainWay: common.GainWayClawdollCostItem,
Operator: "system", Operator: "system",
Remark: "娃娃机上分扣除道具", Remark: "娃娃机上分扣除道具",
GameId: int64(sceneEx.GameId), GameId: int64(sceneEx.GameId),
@ -102,6 +102,42 @@ func (this *PlayerEx) CostPlayCoin(count int32) bool {
return true return true
} }
// 抓取到娃娃获得娃娃
func (this *PlayerEx) CatchCardClawdoll(count int32) bool {
var items []*model.Item
itemData := srvdata.GameItemMgr.Get(this.Platform, rule.ClawDollGiveItemID)
if itemData != nil {
items = append(items, &model.Item{
ItemId: rule.ClawDollGiveItemID,
ItemNum: int64(count),
})
}
s := this.GetScene()
if s == nil {
logger.Logger.Warn("CatchCardClawdoll p.scene == nil")
return false
}
sceneEx, ok := s.ExtraData.(*SceneEx)
if !ok {
return false
}
this.AddItems(&model.AddItemParam{
P: this.PlayerData,
Change: items,
GainWay: common.GainWayClawdollCatch,
Operator: "system",
Remark: "娃娃机抓取到娃娃获得娃娃卡",
GameId: int64(sceneEx.GameId),
GameFreeId: int64(sceneEx.GetGameFreeId()),
})
return true
}
// 能否移动 // 能否移动
func (this *PlayerEx) CanMove() bool { func (this *PlayerEx) CanMove() bool {

View File

@ -11,6 +11,7 @@ import (
var ( var (
ItemLogDBName = "log" ItemLogDBName = "log"
ItemLogCollName = "log_itemlog" ItemLogCollName = "log_itemlog"
ClawDollItemIds = []int32{40003, 40004, 80001, 80002}
) )
type ItemLog struct { type ItemLog struct {
@ -118,3 +119,37 @@ func UpdateItemState(param *UpdateParam) error {
return err return err
} }
type ClawdollItemLogReq struct {
Platform string
Snid int32 // 玩家id
ItemIds []int32 // 道具id
}
func GetClawdollItemLog(plt string, snid int32) (logs []ItemLog, err error) {
if rpcCli == nil {
logger.Logger.Error("model.GetClawdollItemLog rpcCli == nil")
return
}
args := &ClawdollItemLogReq{
Platform: plt,
Snid: snid,
}
args.ItemIds = append(args.ItemIds, ClawDollItemIds...)
var ret []ItemLog
//var ret ClawdollItemLogRet
err = rpcCli.CallWithTimeout("ItemLogSvc.GetClawdollItemLog", args, &ret, time.Second*30)
if err != nil {
logger.Logger.Warnf("GetClawdollItemLog err:%v", err)
return
}
logs = ret
return
}

File diff suppressed because it is too large Load Diff

View File

@ -232,6 +232,8 @@ enum PlayerPacketID {
PACKET_SCUpdateAttribute = 2841;// PACKET_SCUpdateAttribute = 2841;//
PACKET_SCGuideConfig = 2842;// PACKET_SCGuideConfig = 2842;//
PACKET_SCDataConfig = 2843;// PACKET_SCDataConfig = 2843;//
PACKET_CSClawdollItemLog = 2844;//
PACKET_SCClawdollItemLog = 2845;//
} }
// //
@ -1369,3 +1371,22 @@ message Config{
message SCDataConfig{ message SCDataConfig{
repeated Config Cfg = 1; repeated Config Cfg = 1;
} }
//
//PACKET_CSClawdollItemLog
message CSClawdollItemLog{
int32 typeId = 1; //1- 2-
}
//PACKET_SCClawdollItemLog
message SCClawdollItemLog{
int32 typeId = 1; //1- 2-
repeated ClawdollItemLogData ItemLogs = 2;
}
message ClawdollItemLogData{
int32 ItemLogType = 1; //
int32 ItemId = 2; //ID
int64 Num = 3; //
int64 Time = 4; //
}

View File

@ -3162,6 +3162,47 @@ func CSUpdateAttribute(s *netlib.Session, packetId int, data interface{}, sid in
return nil return nil
} }
// 获取获奖记录
func CSClawdollItemLog(s *netlib.Session, packetId int, data interface{}, sid int64) error {
logger.Logger.Tracef("CSClawdollItemLog Process %v", data)
p := PlayerMgrSington.GetPlayer(sid)
if p == nil {
return nil
}
msg, ok := data.(*player_proto.CSClawdollItemLog)
if !ok {
return nil
}
ret := &player_proto.SCClawdollItemLog{}
ret.TypeId = msg.TypeId
var err error
var ItemUseLogs []model.ItemLog
//娃娃机道具使用日志
task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
ItemUseLogs, err = model.GetClawdollItemLog(p.Platform, p.SnId)
return err
}), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) {
for _, logInfo := range ItemUseLogs {
infoData := &player_proto.ClawdollItemLogData{}
infoData.ItemId = logInfo.ItemId
infoData.Time = logInfo.CreateTs
infoData.Num = logInfo.Count
infoData.ItemLogType = logInfo.LogType
ret.ItemLogs = append(ret.ItemLogs, infoData)
}
p.SendToClient(int(player_proto.PlayerPacketID_PACKET_SCClawdollItemLog), ret)
logger.Logger.Tracef("SCClawdollItemLog:%v", ret)
}), "GetClawdollItemLog").Start()
return nil
}
func init() { func init() {
// 用户信息 // 用户信息
common.Register(int(player_proto.PlayerPacketID_PACKET_CS_PLAYERDATA), player_proto.CSPlayerData{}, CSPlayerData) common.Register(int(player_proto.PlayerPacketID_PACKET_CS_PLAYERDATA), player_proto.CSPlayerData{}, CSPlayerData)
@ -3195,4 +3236,6 @@ func init() {
common.Register(int(player_proto.PlayerPacketID_PACKET_CSPopUpWindowsConfig), player_proto.CSPopUpWindowsConfig{}, CSPopUpWindowsConfig) common.Register(int(player_proto.PlayerPacketID_PACKET_CSPopUpWindowsConfig), player_proto.CSPopUpWindowsConfig{}, CSPopUpWindowsConfig)
// 更新属性;新手引导阶段 // 更新属性;新手引导阶段
common.Register(int(player_proto.PlayerPacketID_PACKET_CSUpdateAttribute), player_proto.CSUpdateAttribute{}, CSUpdateAttribute) common.Register(int(player_proto.PlayerPacketID_PACKET_CSUpdateAttribute), player_proto.CSUpdateAttribute{}, CSUpdateAttribute)
//娃娃卡道具记录
common.Register(int(player_proto.PlayerPacketID_PACKET_CSClawdollItemLog), player_proto.CSClawdollItemLog{}, CSClawdollItemLog)
} }

View File

@ -3006,6 +3006,7 @@ func (this *Player) SendPlayerInfo() {
if item := BagMgrSingleton.GetItem(this.SnId, common.ItemIDVCard); item != nil { if item := BagMgrSingleton.GetItem(this.SnId, common.ItemIDVCard); item != nil {
scPlayerData.Data.VCoin = item.ItemNum //V卡 scPlayerData.Data.VCoin = item.ItemNum //V卡
} }
// 排位积分 // 排位积分
scPlayerData.Data.RankScore = RankMgrSingleton.GetPlayerRankScore(this.SnId) scPlayerData.Data.RankScore = RankMgrSingleton.GetPlayerRankScore(this.SnId)