Merge branch 'sdk' into online

This commit is contained in:
hahwu 2025-08-13 10:24:30 +08:00
commit 1b5342ca12
15 changed files with 325 additions and 84 deletions

View File

@ -80,3 +80,18 @@ func GetMapKey(v any) []int {
} }
return []int{} return []int{}
} }
func DiffMap(a, b map[int]int) map[int]int {
diff := make(map[int]int)
for k, v := range a {
if v2, ok := b[k]; !ok || v != v2 {
diff[k] = v
}
}
for k, v := range b {
if _, ok := a[k]; !ok {
diff[k] = v
}
}
return diff
}

View File

@ -39,3 +39,11 @@ func GetAllList() []int {
} }
return ret return ret
} }
func GetEmojiName(Id int) string {
data, err := gamedata.GetDataByIntKey(CFG_EMOJI, Id)
if err != nil {
return ""
}
return gamedata.GetStringValue(data, "Name")
}

View File

@ -47,6 +47,15 @@ func GetLimitedTimeEventCfg() []*gamedata.LimitedTimeEventData {
return nil return nil
} }
func GetEventName(Id int) string {
data, err := gamedata.GetDataByIntKey(CFG_LIMITED_TIME_EVENT, Id)
if err != nil {
log.Debug("GetEventName err:%v", err)
return ""
}
return gamedata.GetStringValue(data, "Name")
}
// 获取流星雨加成 // 获取流星雨加成
func GetMeteorAdd(ChessLv int) int { func GetMeteorAdd(ChessLv int) int {
data, err := gamedata.GetDataByIntKey(CFG_LIMITED_TIME_EVENT_METEOR, ChessLv) data, err := gamedata.GetDataByIntKey(CFG_LIMITED_TIME_EVENT_METEOR, ChessLv)

View File

@ -431,6 +431,14 @@ func GetDressPart(Id int) int {
return gamedata.GetIntValue(data, "IPart") return gamedata.GetIntValue(data, "IPart")
} }
func GetDressName(Id int) int {
data, err := gamedata.GetDataByIntKey(CFG_PLAYROOM_DRESS, Id)
if err != nil {
return 0
}
return gamedata.GetIntValue(data, "Name")
}
func GetUnlockNeed(Type int) int { func GetUnlockNeed(Type int) int {
data, err := gamedata.GetDataByIntKey(CFG_PLAYROOM_LOCK, Type) data, err := gamedata.GetDataByIntKey(CFG_PLAYROOM_LOCK, Type)
if err != nil { if err != nil {
@ -439,6 +447,14 @@ func GetUnlockNeed(Type int) int {
return gamedata.GetIntValue(data, "Need") return gamedata.GetIntValue(data, "Need")
} }
func GetUnlockName(Type int) string {
data, err := gamedata.GetDataByIntKey(CFG_PLAYROOM_LOCK, Type)
if err != nil {
return ""
}
return gamedata.GetStringValue(data, "Name")
}
func GetDailyTask(Type int) map[int]string { func GetDailyTask(Type int) map[int]string {
data, err := gamedata.GetData(CFG_PLAYROOM_DAILYTASK) data, err := gamedata.GetData(CFG_PLAYROOM_DAILYTASK)
if err != nil { if err != nil {
@ -597,3 +613,30 @@ func GetShopItemAdNum(Id int) int {
} }
return 0 return 0
} }
func GetDecoInfo(Id int) (int, string) {
data, err := gamedata.GetDataByIntKey(CFG_PLAYROOM_DECORATE, Id)
if err != nil {
log.Debug("GetDecoInfo err:%v", err)
return 0, ""
}
Type := gamedata.GetIntValue(data, "TypeEnum")
Name := gamedata.GetStringValue(data, "Chinese")
return Type, Name
}
func GetDailyTaskListById(Id int) []int {
data, err := gamedata.GetData(CFG_PLAYROOM_DAILYTASK)
if err != nil {
log.Debug("GetDailyTaskListById err:%v", err)
return nil
}
Type := GetDailyTaskType(Id)
r := make([]int, 0)
for k, v := range data {
if gamedata.GetIntValue(v, "Type") == Type {
r = append(r, GoUtil.Int(k))
}
}
return r
}

View File

@ -41,6 +41,9 @@ func ActivityFire(p *Player, ChargeId int) {
log.Debug("ActivityFire err : %s", err) log.Debug("ActivityFire err : %s", err)
return return
} }
if Item == nil {
return
}
err = p.HandleItem(Item, msg.ITEM_POP_LABEL_ActivityGift.String()) err = p.HandleItem(Item, msg.ITEM_POP_LABEL_ActivityGift.String())
if err != nil { if err != nil {
log.Debug("ChargeFire err : %s", err) log.Debug("ChargeFire err : %s", err)
@ -54,33 +57,46 @@ func ActivityFire(p *Player, ChargeId int) {
func PlayroomFire(p *Player, ChargeId int) { func PlayroomFire(p *Player, ChargeId int) {
PlayroomMod := p.PlayMod.getPlayroomMod() PlayroomMod := p.PlayMod.getPlayroomMod()
Item := PlayroomMod.Fire(ChargeId) Item := PlayroomMod.Fire(ChargeId)
if Item == nil {
return
}
err := p.HandleItem(Item, msg.ITEM_POP_LABEL_Playroom.String()) err := p.HandleItem(Item, msg.ITEM_POP_LABEL_Playroom.String())
if err != nil { if err != nil {
log.Debug("ChargeFire err : %s", err) log.Debug("ChargeFire err : %s", err)
} }
p.TeLog("get_assist_battery", map[string]interface{}{
"assist_battery _type": "charge",
})
p.PlayMod.save() p.PlayMod.save()
} }
func PiggyBankFire(p *Player, ChargeId int) { func PiggyBankFire(p *Player, ChargeId int) {
PiggyBankMod := p.PlayMod.getPiggyBankMod() PiggyBankMod := p.PlayMod.getPiggyBankMod()
Item := PiggyBankMod.Fire(ChargeId) Item := PiggyBankMod.Fire(ChargeId)
if Item == nil {
return
}
err := p.HandleItem(Item, msg.ITEM_POP_LABEL_PiggyBank.String()) err := p.HandleItem(Item, msg.ITEM_POP_LABEL_PiggyBank.String())
if err != nil { if err != nil {
log.Debug("ChargeFire err : %s", err) log.Debug("ChargeFire err : %s", err)
} }
LimitedTimePiggyBankTrigger(p) LimitedTimePiggyBankTrigger(p)
p.PlayMod.save()
p.TeLog("piggy_bank_open", map[string]interface{}{ p.TeLog("piggy_bank_open", map[string]interface{}{
"piggy_bank_type": piggyBank.PIGGY_BANK_TYPE_CHARGE, "piggy_bank_type": piggyBank.PIGGY_BANK_TYPE_CHARGE,
"item_list": Item, "item_list": Item,
"open_cost": ChargeId, "open_cost": ChargeId,
}) })
p.PlayMod.save()
} }
// 处理玩家充值 // 处理玩家充值
func ChargeFire(p *Player, ChargeId int) { func ChargeFire(p *Player, ChargeId int) {
ChargeMod := p.PlayMod.getChargeMod() ChargeMod := p.PlayMod.getChargeMod()
Item := ChargeMod.Fire(ChargeId) Item := ChargeMod.Fire(ChargeId)
if Item == nil {
return
}
err := p.HandleItem(Item, msg.ITEM_POP_LABEL_Charge.String()) err := p.HandleItem(Item, msg.ITEM_POP_LABEL_Charge.String())
if err != nil { if err != nil {
log.Debug("ChargeFire err : %s", err) log.Debug("ChargeFire err : %s", err)

View File

@ -14,6 +14,7 @@ import (
cardCfg "server/conf/card" cardCfg "server/conf/card"
guesscolorCfg "server/conf/guessColor" guesscolorCfg "server/conf/guessColor"
itemCfg "server/conf/item" itemCfg "server/conf/item"
limitedTimeEventCfg "server/conf/limitedTimeEvent"
mergeDataCfg "server/conf/mergeData" mergeDataCfg "server/conf/mergeData"
miningCfg "server/conf/mining" miningCfg "server/conf/mining"
playroomCfg "server/conf/playroom" playroomCfg "server/conf/playroom"
@ -634,7 +635,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
// 触发订单事件 生成超级订单 卡牌节 // 触发订单事件 生成超级订单 卡牌节
LimitedTimeEventTrigger(p, EffectList[0]) LimitedTimeEventTrigger(p, EffectList[0])
p.TeLog("time_limited_event_enable", map[string]interface{}{ p.TeLog("time_limited_event_enable", map[string]interface{}{
"event_type": EffectList[0], "event_type": limitedTimeEventCfg.GetEventName(EffectList[0]),
"enable_type": Label, "enable_type": Label,
}) })
case item.ITEM_TYPE_PIGGY_BANK: // 猪猪银行 case item.ITEM_TYPE_PIGGY_BANK: // 猪猪银行
@ -644,8 +645,8 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
LimitedTimePiggyBankTrigger(p) LimitedTimePiggyBankTrigger(p)
p.PushClientRes(PiggyBankMod.BackData()) p.PushClientRes(PiggyBankMod.BackData())
p.TeLog("piggy_bank_income", map[string]interface{}{ p.TeLog("piggy_bank_income", map[string]interface{}{
"piggy_bank_id": Effect, "piggy_bank_type": Effect,
"income_from": Label, "income_from": Label,
}) })
case item.ITEM_TYPE_AVATAR: // 头像框 case item.ITEM_TYPE_AVATAR: // 头像框
Effect := itemCfg.GetItemEffectList(v.Id) Effect := itemCfg.GetItemEffectList(v.Id)
@ -654,6 +655,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
"avatar_id": Effect[0], "avatar_id": Effect[0],
"income_from": Label, "income_from": Label,
}) })
p.PlayerDecoLog("avatar", Effect[0], Label)
BackDataType[item.ITEM_TYPE_AVATAR] = struct{}{} BackDataType[item.ITEM_TYPE_AVATAR] = struct{}{}
case item.ITEM_TYPE_EMOJI: // 表情 case item.ITEM_TYPE_EMOJI: // 表情
Effect := itemCfg.GetItemEffectList(v.Id) Effect := itemCfg.GetItemEffectList(v.Id)
@ -662,6 +664,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
"emoji_id": Effect[0], "emoji_id": Effect[0],
"income_from": Label, "income_from": Label,
}) })
p.PlayerDecoLog("emoji", Effect[0], Label)
BackDataType[item.ITEM_TYPE_EMOJI] = struct{}{} BackDataType[item.ITEM_TYPE_EMOJI] = struct{}{}
case item.ITEM_TYPE_FACE: // 头像 case item.ITEM_TYPE_FACE: // 头像
Effect := itemCfg.GetItemEffectList(v.Id) Effect := itemCfg.GetItemEffectList(v.Id)
@ -670,6 +673,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
"face_id": Effect[0], "face_id": Effect[0],
"income_from": Label, "income_from": Label,
}) })
p.PlayerDecoLog("face", Effect[0], Label)
BackDataType[item.ITEM_TYPE_FACE] = struct{}{} BackDataType[item.ITEM_TYPE_FACE] = struct{}{}
case item.ITEM_TYPE_ACTIVITY_RACE: // 活动竞速 case item.ITEM_TYPE_ACTIVITY_RACE: // 活动竞速
ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_RACE) ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_RACE)
@ -691,11 +695,24 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
PlayroomMod := p.PlayMod.getPlayroomMod() PlayroomMod := p.PlayMod.getPlayroomMod()
PlayroomMod.AddCollect(Effect) PlayroomMod.AddCollect(Effect)
BackDataType[item.ITEM_TYPE_PLAYROOM_DECORATION] = struct{}{} BackDataType[item.ITEM_TYPE_PLAYROOM_DECORATION] = struct{}{}
Type, Name := playroomCfg.GetDecoInfo(Effect)
p.TeLog("room_deco_get", map[string]interface{}{
"room_deco_type": Type,
"room_deco_name": Name,
"room_deco_get_type": Label,
})
case item.ITEM_TYPE_PLAYROOM_DRESS: // playroom服饰 case item.ITEM_TYPE_PLAYROOM_DRESS: // playroom服饰
Effect := itemCfg.GetItemEffect(v.Id) Effect := itemCfg.GetItemEffect(v.Id)
PlayroomMod := p.PlayMod.getPlayroomMod() PlayroomMod := p.PlayMod.getPlayroomMod()
PlayroomMod.AddDress(Effect) PlayroomMod.AddDress(Effect)
BackDataType[item.ITEM_TYPE_PLAYROOM_DRESS] = struct{}{} BackDataType[item.ITEM_TYPE_PLAYROOM_DRESS] = struct{}{}
Type := playroomCfg.GetDressPart(Effect)
Name := playroomCfg.GetDressName(Effect)
p.TeLog("pet_deco_get", map[string]interface{}{
"pet_deco_type": Type,
"pet_deco_name": Name,
"pet_deco_get_type": Label,
})
case item.ITEM_TYPE_PLAYROOM_DECORATION_SET: // playroom装饰套装 case item.ITEM_TYPE_PLAYROOM_DECORATION_SET: // playroom装饰套装
Effect := itemCfg.GetItemEffectList(v.Id) Effect := itemCfg.GetItemEffectList(v.Id)
PlayroomMod := p.PlayMod.getPlayroomMod() PlayroomMod := p.PlayMod.getPlayroomMod()
@ -704,12 +721,15 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
continue continue
} }
PlayroomMod.AddCollect(v) PlayroomMod.AddCollect(v)
Type, Name := playroomCfg.GetDecoInfo(v)
p.TeLog("room_deco_get", map[string]interface{}{
"room_deco_type": Type,
"room_deco_name": Name,
"room_deco_get_type": Label,
})
} }
BackDataType[item.ITEM_TYPE_PLAYROOM_DECORATION_SET] = struct{}{} BackDataType[item.ITEM_TYPE_PLAYROOM_DECORATION_SET] = struct{}{}
p.TeLog("playroom_decoration_set", map[string]interface{}{
"decoration_set_id": Effect,
"income_from": Label,
})
default: default:
err := ItemMod.AddItem(v.Id, v.Num) err := ItemMod.AddItem(v.Id, v.Num)
p.TeLog("asset_change", map[string]interface{}{ p.TeLog("asset_change", map[string]interface{}{

View File

@ -236,7 +236,7 @@ func (p *PlayerBaseData) ReqBindFacebookAccount(player *Player, buf []byte) {
p.Data.FaceBookId = req.BindAccountId p.Data.FaceBookId = req.BindAccountId
res.BindAccountId = req.BindAccountId res.BindAccountId = req.BindAccountId
player.TeLog("platform_connect", map[string]interface{}{ player.TeLog("platform_connect", map[string]interface{}{
"platform_type": "facebook", "platform_type": "Facebook",
"platform_id": req.BindAccountId, "platform_id": req.BindAccountId,
"is_reward": false, "is_reward": false,
}) })
@ -313,7 +313,7 @@ func (p *PlayerBaseData) ReqOnlyBindFacebook(player *Player, buf []byte) {
p.Data.FaceBookId = req.BindAccountId p.Data.FaceBookId = req.BindAccountId
res.BindAccountId = req.BindAccountId res.BindAccountId = req.BindAccountId
player.TeLog("platform_connect", map[string]interface{}{ player.TeLog("platform_connect", map[string]interface{}{
"platform_type": "facebook", "platform_type": "Facebook",
"platform_id": req.BindAccountId, "platform_id": req.BindAccountId,
"is_reward": false, "is_reward": false,
}) })

View File

@ -71,7 +71,7 @@ func (p *PlayerChessData) UpdatePlayerChessData(player *Player, buf []byte) erro
for _, v := range update.MChessHandle { for _, v := range update.MChessHandle {
HandleStr += fmt.Sprintf("%v-%v-%v,", v.Id, v.ChessId, v.Type) HandleStr += fmt.Sprintf("%v-%v-%v,", v.Id, v.ChessId, v.Type)
} }
log.Debug("棋子操作队列错误, %v===%v===%v===%v", HandleStr, LastMap, p.Data.MChessData, player.PlayMod.getChessMod().GetChessList()) log.Debug("棋子操作队列错误, %v===%v===%v===%v", HandleStr, LastMap, update.MChessData, player.PlayMod.getChessMod().GetChessList())
player.SendErrClienRes(res) player.SendErrClienRes(res)
return err return err
} }

View File

@ -0,0 +1,94 @@
package game
import (
itemCfg "server/conf/item"
playroomCfg "server/conf/playroom"
"server/game/mod/item"
)
func (p *Player) PlayerDecoLog(Type string, Id int, Label string) {
p.TeLog("playerdeco_income", map[string]interface{}{
"playerdeco_type": Type,
"playerdeco_id": Id,
"income_from": Label,
})
}
func (p *Player) PlayerDecoSetLog(Type string, Id int, Set string) {
p.TeLog("playerdeco_set", map[string]interface{}{
"playerdeco_type": Type,
"playerdeco_id": Id,
"set_function": Set,
})
}
func (p *Player) PetItemGetLog(Item []*item.Item, Cost []*item.Item, Label string) {
CostType := ""
CostNum := 0
if len(Cost) > 0 {
switch Cost[0].Id {
case item.ITEM_TYPE_DIAMOND:
CostType = "diamond"
case item.ITEM_STAR_ID:
CostType = "star"
case 0:
CostType = "ad"
default:
CostType = "unknown"
}
CostNum = Cost[0].Num
}
for _, v := range Item {
Type := itemCfg.GetItemType(v.Id)
if Type == item.ITEM_TYPE_PLAYROOM_PET {
Name, _ := itemCfg.GetItemName(v.Id)
Effect := itemCfg.GetItemEffect(v.Id)
p.PetItemGetLog_(Effect, Name, Label, CostType, CostNum)
}
}
}
func (p *Player) PetItemGetLog_(Type int, Name string, Label string, CostType string, CostNum int) {
p.TeLog("pet_item_get", map[string]interface{}{
"pet_item_type": Type,
"pet_item_name": Name,
"pet_item_get_type": Label,
"pet_item_cost_type": CostType,
"pet_item_cost": CostNum,
})
}
func (p *Player) PetItemUseLog(Item []*item.Item) {
for _, v := range Item {
Type := itemCfg.GetItemType(v.Id)
if Type == item.ITEM_TYPE_PLAYROOM_PET {
Name, _ := itemCfg.GetItemName(v.Id)
Effect := itemCfg.GetItemEffect(v.Id)
p.TeLog("pet_item_use", map[string]interface{}{
"pet_item_type": Effect,
"pet_item_name": Name,
})
}
}
}
func (p *Player) RoomDecoSetLog(Diff map[int]int) {
for _, v := range Diff {
Type, Name := playroomCfg.GetDecoInfo(v)
p.TeLog("room_deco_set", map[string]interface{}{
"room_deco_type": Type,
"room_deco_name": Name,
})
}
}
func (p *Player) PetDecoSetLog(Diff map[int]int) {
for _, v := range Diff {
Type := playroomCfg.GetDressPart(v)
Name := playroomCfg.GetDressName(v)
p.TeLog("pet_deco_set", map[string]interface{}{
"pet_deco_type": Type,
"pet_deco_name": Name,
})
}
}

View File

@ -9,7 +9,9 @@ import (
cardCfg "server/conf/card" cardCfg "server/conf/card"
collectCfg "server/conf/collect" collectCfg "server/conf/collect"
decorateCfg "server/conf/decorate" decorateCfg "server/conf/decorate"
emojiCfg "server/conf/emoji"
handbookCfg "server/conf/handbook" handbookCfg "server/conf/handbook"
limitedTimeEventCfg "server/conf/limitedTimeEvent"
mergeDataCfg "server/conf/mergeData" mergeDataCfg "server/conf/mergeData"
miningCfg "server/conf/mining" miningCfg "server/conf/mining"
playroomCfg "server/conf/playroom" playroomCfg "server/conf/playroom"
@ -213,9 +215,9 @@ func RegHandbookAllReward(player *Player, buf []byte) error {
Type: req.Type, Type: req.Type,
}, },
}) })
player.TeLog("collection_all_reward", map[string]interface{}{ player.TeLog("collection_like", map[string]interface{}{
"type": req.Type, "collection_type": req.Type,
"item_list": Items, "collection_reward": Items,
}) })
player.PushClientRes(player.PlayMod.getHandbookMod().BackData()) player.PushClientRes(player.PlayMod.getHandbookMod().BackData())
player.PlayMod.save() player.PlayMod.save()
@ -260,7 +262,7 @@ func ReqRewardOrder(player *Player, buf []byte) error {
AddItem := LimitedTimeEventMod.GetMeteorReward(mergeList) AddItem := LimitedTimeEventMod.GetMeteorReward(mergeList)
if len(AddItem) > 0 { if len(AddItem) > 0 {
player.TeLog("time_limited_event_action", map[string]interface{}{ player.TeLog("time_limited_event_action", map[string]interface{}{
"event_type": "meteor_show", "event_type": limitedTimeEventCfg.GetEventName(limitedTimeEvent.EVENT_TYPE_METEOR_SHOW),
"item_list": AddItem, "item_list": AddItem,
}) })
} }
@ -271,7 +273,7 @@ func ReqRewardOrder(player *Player, buf []byte) error {
AddItem := LimitedTimeEventMod.GetMoneyCatReward(mergeList) AddItem := LimitedTimeEventMod.GetMoneyCatReward(mergeList)
if len(AddItem) > 0 { if len(AddItem) > 0 {
player.TeLog("time_limited_event_action", map[string]interface{}{ player.TeLog("time_limited_event_action", map[string]interface{}{
"event_type": "money_cat", "event_type": limitedTimeEventCfg.GetEventName(limitedTimeEvent.EVENT_TYPE_MONEY_CAT),
"item_list": AddItem, "item_list": AddItem,
}) })
} }
@ -322,7 +324,7 @@ func ReqRewardOrder(player *Player, buf []byte) error {
Id: 0, Id: 0,
}) })
player.TeLog("time_limited_event_action", map[string]interface{}{ player.TeLog("time_limited_event_action", map[string]interface{}{
"event_type": "chest_rain", "event_type": limitedTimeEventCfg.GetEventName(limitedTimeEvent.EVENT_TYPE_CHEST_RAIN),
"item_list": ChestRainItems, "item_list": ChestRainItems,
}) })
} }
@ -345,6 +347,7 @@ func ReqRewardOrder(player *Player, buf []byte) error {
"order_type": OrderType, "order_type": OrderType,
"order_star_reward": Star, "order_star_reward": Star,
}) })
player.PetItemGetLog(Item, nil, "Order")
EmitRetireTrigger2(player) EmitRetireTrigger2(player)
Lv := player.GetPlayerBaseMod().GetLevel() Lv := player.GetPlayerBaseMod().GetLevel()
EnergyMul := player.PlayMod.getBaseMod().GetEnergyMul() EnergyMul := player.PlayMod.getBaseMod().GetEnergyMul()
@ -463,7 +466,7 @@ func ReqDecorate(player *Player, buf []byte) error {
}) })
} }
player.TeLog("finish_deco", map[string]interface{}{ player.TeLog("finish_deco", map[string]interface{}{
"deco_step_id": DecorateId, "deco_step_id": fmt.Sprintf("%d_%d", AreaId, DecorateId),
}) })
player.PlayMod.save() player.PlayMod.save()
@ -482,6 +485,7 @@ func ReqDecorateAll(player *Player, buf []byte) error {
req := &msg.ReqDecorateAll{} req := &msg.ReqDecorateAll{}
proto.Unmarshal(buf, req) proto.Unmarshal(buf, req)
DecorateMod := player.PlayMod.getDecorateMod() DecorateMod := player.PlayMod.getDecorateMod()
AreaId := DecorateMod.GetAreaId()
UnLockLv := decorateCfg.GetOneKeyDecorateUnlockLv() UnLockLv := decorateCfg.GetOneKeyDecorateUnlockLv()
if player.GetPlayerBaseMod().GetLevel() < UnLockLv { if player.GetPlayerBaseMod().GetLevel() < UnLockLv {
player.SendErrClienRes(&msg.ResDecorateAll{ player.SendErrClienRes(&msg.ResDecorateAll{
@ -519,16 +523,18 @@ func ReqDecorateAll(player *Player, buf []byte) error {
}) })
return err return err
} }
deco_step_id := []string{}
for _, v := range DecorateList {
deco_step_id = append(deco_step_id, fmt.Sprintf("%d_%d", AreaId, v))
}
player.TeLog("one_click_decoration", map[string]interface{}{ player.TeLog("one_click_decoration", map[string]interface{}{
"deco_step_id": DecorateList, "deco_step_id": fmt.Sprintf("%v", deco_step_id),
}) })
if len(Log) > 0 { if len(Log) > 0 {
for _, v := range Log { for _, v := range Log {
player.TeLog("scene_reward", v.(map[string]interface{})) player.TeLog("scene_reward", v.(map[string]interface{}))
} }
} }
player.PlayMod.save() player.PlayMod.save()
@ -1034,7 +1040,7 @@ func ReqExStarReward(player *Player, buf []byte) error {
req := &msg.ReqExStarReward{} req := &msg.ReqExStarReward{}
proto.Unmarshal(buf, req) proto.Unmarshal(buf, req)
CardMod := player.PlayMod.getCardMod() CardMod := player.PlayMod.getCardMod()
itemList, err := CardMod.ExStarReward(int(req.Id)) itemList, CostStar, err := CardMod.ExStarReward(int(req.Id))
if err != nil { if err != nil {
player.SendErrClienRes(&msg.ResExStarReward{ player.SendErrClienRes(&msg.ResExStarReward{
Code: msg.RES_CODE_FAIL, Code: msg.RES_CODE_FAIL,
@ -1051,9 +1057,10 @@ func ReqExStarReward(player *Player, buf []byte) error {
}) })
return err return err
} }
player.TeLog("ReqExStarReward", map[string]interface{}{ player.TeLog("sticker_exchange", map[string]interface{}{
"ex_star_id": int(req.Id), // "pack_id": int(req.Id),
"item_list": itemList, "sticker_cost": CostStar,
"item_list": itemList,
}) })
player.PlayMod.save() player.PlayMod.save()
player.PushClientRes(&msg.ResExStarReward{ player.PushClientRes(&msg.ResExStarReward{
@ -1248,6 +1255,7 @@ func ReqSetAvatar(player *Player, buf []byte) error {
"avatar_id": req.Avatar, "avatar_id": req.Avatar,
"is_platform": b, "is_platform": b,
}) })
player.PlayerDecoSetLog("avatar", int(req.Avatar), "")
return nil return nil
} }
@ -1271,6 +1279,7 @@ func ReqSetFace(player *Player, buf []byte) error {
player.TeLog("face_set", map[string]interface{}{ player.TeLog("face_set", map[string]interface{}{
"face_id": int(req.Face), "face_id": int(req.Face),
}) })
player.PlayerDecoSetLog("face", int(req.Face), "")
BackUserInfo(player) BackUserInfo(player)
player.UpdateUserInfo() player.UpdateUserInfo()
return nil return nil
@ -1881,6 +1890,7 @@ func ReqCardSend(player *Player, buf []byte) error {
"card_id": CardId, "card_id": CardId,
"player_id_target": int(req.Uid), "player_id_target": int(req.Uid),
}) })
player.PlayerDecoSetLog("emoji", int(req.Emoji), "card_send")
player.PushClientRes(CardMod.NotifyCard()) player.PushClientRes(CardMod.NotifyCard())
player.PlayMod.save() player.PlayMod.save()
player.PushClientRes(CardMod.NotifyTimes()) player.PushClientRes(CardMod.NotifyTimes())
@ -2353,7 +2363,7 @@ func ReqBuyChessShop(player *Player, buf []byte) error {
"item_id": int(req.Id), "item_id": int(req.Id),
"change_num": 1, "change_num": 1,
"cost_type": "diamond", "cost_type": "diamond",
"cost_num": Item[0].Num, "cost_num": LostItem[0].Num,
}) })
player.PlayMod.save() player.PlayMod.save()
player.PushClientRes(ChargeMod.BackData()) player.PushClientRes(ChargeMod.BackData())
@ -2361,7 +2371,7 @@ func ReqBuyChessShop(player *Player, buf []byte) error {
Code: msg.RES_CODE_SUCCESS, Code: msg.RES_CODE_SUCCESS,
}) })
player.TeLog("buy_product_diamond", map[string]interface{}{ player.TeLog("buy_product_diamond", map[string]interface{}{
"diamond_cost": Item[0].Num, "diamond_cost": LostItem[0].Num,
"product_id": int(req.Id), "product_id": int(req.Id),
"product_name": mergeDataCfg.GetNameById(int(req.Id)), "product_name": mergeDataCfg.GetNameById(int(req.Id)),
}) })
@ -2952,7 +2962,7 @@ func ReqSelectLimitEvent(player *Player, buf []byte) error {
proto.Unmarshal(buf, req) proto.Unmarshal(buf, req)
LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod()
BaseMod := player.PlayMod.getBaseMod() BaseMod := player.PlayMod.getBaseMod()
Items, slot_reward, slot_order_number, err := LimitedTimeEventMod.SelectProgressReward(int(req.Id), BaseMod.GetLevel(), BaseMod.GetEnergy()) Items, EventName, slot_order_number, err := LimitedTimeEventMod.SelectProgressReward(int(req.Id), BaseMod.GetLevel(), BaseMod.GetEnergy())
if err != nil { if err != nil {
player.SendErrClienRes(&msg.ResSelectLimitEvent{ player.SendErrClienRes(&msg.ResSelectLimitEvent{
Code: msg.RES_CODE_FAIL, Code: msg.RES_CODE_FAIL,
@ -2970,8 +2980,8 @@ func ReqSelectLimitEvent(player *Player, buf []byte) error {
} }
player.TeLog("time_limited_slot", map[string]interface{}{ player.TeLog("time_limited_slot", map[string]interface{}{
"slot_order_number": slot_order_number, "slot_order_number": slot_order_number,
"slot_reward_list": slot_reward, "slot_reward_list": EventName,
"slot_reward": slot_reward[int(req.Id)], "slot_reward": EventName,
}) })
player.PlayMod.save() player.PlayMod.save()
player.PushClientRes(LimitedTimeEventMod.BackData()) player.PushClientRes(LimitedTimeEventMod.BackData())
@ -3329,7 +3339,7 @@ func ReqPlayroomSetRoom(player *Player, buf []byte) error {
req := &msg.ReqPlayroomSetRoom{} req := &msg.ReqPlayroomSetRoom{}
proto.Unmarshal(buf, req) proto.Unmarshal(buf, req)
PlayroomMod := player.PlayMod.getPlayroomMod() PlayroomMod := player.PlayMod.getPlayroomMod()
err := PlayroomMod.SetRoom(GoUtil.MapInt32ToInt(req.Playroom)) Diff, err := PlayroomMod.SetRoom(GoUtil.MapInt32ToInt(req.Playroom))
if err != nil { if err != nil {
player.SendErrClienRes(&msg.ResPlayroomSetRoom{ player.SendErrClienRes(&msg.ResPlayroomSetRoom{
Code: msg.RES_CODE_FAIL, Code: msg.RES_CODE_FAIL,
@ -3339,6 +3349,7 @@ func ReqPlayroomSetRoom(player *Player, buf []byte) error {
} }
player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_ROOMDEC}) player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_ROOMDEC})
player.PlayMod.save() player.PlayMod.save()
player.RoomDecoSetLog(Diff)
player.PushClientRes(&msg.ResPlayroomSetRoom{ player.PushClientRes(&msg.ResPlayroomSetRoom{
Code: msg.RES_CODE_SUCCESS, Code: msg.RES_CODE_SUCCESS,
}) })
@ -3386,12 +3397,12 @@ func ReqPlayroomGame(player *Player, buf []byte) error {
Num: int32(v.Num), Num: int32(v.Num),
} }
} }
player.TeLog("playroom_game", map[string]interface{}{ player.TeLog("finish_mini_game", map[string]interface{}{
"game_id": PlayroomMod.GetGameId(), "mini_game_type": PlayroomMod.GetGameId(),
"emoji_id": req.EmojiId, "is_chip": false,
"game_type": req.Type, "item_list": Items,
"reward": Items,
}) })
player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_game")
player.PushClientRes(&msg.ResPlayroomGame{ player.PushClientRes(&msg.ResPlayroomGame{
Code: msg.RES_CODE_SUCCESS, Code: msg.RES_CODE_SUCCESS,
Type: req.Type, Type: req.Type,
@ -3437,13 +3448,12 @@ func ReqPlayroomSelectReward(player *Player, buf []byte) error {
G_GameLogicPtr.SetUserData(Target, VAR_OP_CHIP, 1) G_GameLogicPtr.SetUserData(Target, VAR_OP_CHIP, 1)
PlayroomMod.ResetGame() PlayroomMod.ResetGame()
player.PlayMod.save() player.PlayMod.save()
player.TeLog("playroom_select_reward", map[string]interface{}{ player.TeLog("finish_mini_game", map[string]interface{}{
"reward_id": req.Id, "mini_game_type": PlayroomMod.GetGameId(),
"emoji_id": req.EmojiId, "is_chip": true,
"game_id": PlayroomMod.GetGameId(), "item_list": Items,
"reward": Items,
"target_id": Target,
}) })
player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_select_reward")
PlayroomBackData(player) PlayroomBackData(player)
PlayroomVisit(player, PlayroomMod.GetTarget()) PlayroomVisit(player, PlayroomMod.GetTarget())
player.PushClientRes(&msg.ResPlayroomSelectReward{ player.PushClientRes(&msg.ResPlayroomSelectReward{
@ -3487,8 +3497,8 @@ func ReqPlayroomWork(player *Player, buf []byte) error {
return err return err
} }
player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PETWORK}) player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PETWORK})
player.TeLog("playroom_work", map[string]interface{}{ player.TeLog("pet_assist_active", map[string]interface{}{
"work_item": Items, "assist_time_left": PlayroomMod.Endtime - GoUtil.Now(),
}) })
player.PlayMod.save() player.PlayMod.save()
player.PushClientRes(PlayroomMod.NotifyWork()) player.PushClientRes(PlayroomMod.NotifyWork())
@ -3506,6 +3516,7 @@ func ReqPlayroomRest(player *Player, buf []byte) error {
player.PlayMod.save() player.PlayMod.save()
player.TeLog("playroom_rest", map[string]interface{}{}) player.TeLog("playroom_rest", map[string]interface{}{})
player.PushClientRes(PlayroomMod.NotifyWork()) player.PushClientRes(PlayroomMod.NotifyWork())
player.TeLog("pet_assist_callback", map[string]interface{}{})
return nil return nil
} }
@ -3564,9 +3575,8 @@ func ReqPlayroomChip(player *Player, buf []byte) error {
}) })
return err return err
} }
player.TeLog("playroom_chip", map[string]interface{}{ player.TeLog("remove_chip", map[string]interface{}{
"chip_num": ChipNum, "remove_chip_number": ChipNum,
"uid": req.Uid,
}) })
G_GameLogicPtr.SetUserData(int(player.M_DwUin), VAR_OP_CHIP_SET, len(PlayroomMod.ChipList)) G_GameLogicPtr.SetUserData(int(player.M_DwUin), VAR_OP_CHIP_SET, len(PlayroomMod.ChipList))
@ -3643,12 +3653,12 @@ func ReqPlayroomFlipReward(player *Player, buf []byte) error {
Emoji: int(req.EmojiId), Emoji: int(req.EmojiId),
}, },
}) })
player.TeLog("playroom_flip_reward", map[string]interface{}{ player.TeLog("finish_mini_game", map[string]interface{}{
"reward": Items, "mini_game_type": PlayroomMod.GetGameId(),
"target_id": Target, "is_chip": false,
"emoji_id": req.EmojiId, "item_list": Items,
"game_id": playroom.GAME_TYPE_FILP,
}) })
player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_flip_reward")
player.PlayMod.save() player.PlayMod.save()
PlayroomBackData(player) PlayroomBackData(player)
player.PushClientRes(&msg.ResPlayroomFlipReward{ player.PushClientRes(&msg.ResPlayroomFlipReward{
@ -3730,8 +3740,8 @@ func ReqPlayroomUpvote(player *Player, buf []byte) error {
}) })
G_GameLogicPtr.SetUserData(int(req.Id), VAR_OP_UPVOTE, 1) G_GameLogicPtr.SetUserData(int(req.Id), VAR_OP_UPVOTE, 1)
G_GameLogicPtr.SetUserData(int(req.Id), VAR_OP_KISS, 1) G_GameLogicPtr.SetUserData(int(req.Id), VAR_OP_KISS, 1)
player.TeLog("playroom_upvote", map[string]interface{}{ player.TeLog("visit_like", map[string]interface{}{
"player_id": req.Id, "user_id": req.Id,
}) })
player.PlayMod.save() player.PlayMod.save()
player.PushClientRes(&msg.ResPlayroomUpvote{ player.PushClientRes(&msg.ResPlayroomUpvote{
@ -3752,8 +3762,8 @@ func ReqPlayroomUnlock(player *Player, buf []byte) error {
}) })
return err return err
} }
player.TeLog("playroom_unlock", map[string]interface{}{ player.TeLog("room_unlcok", map[string]interface{}{
"unlock_id": req.Id, "room_type": playroomCfg.GetUnlockName(int(req.Id)),
}) })
player.PlayMod.save() player.PlayMod.save()
player.PushClientRes(&msg.ResPlayroomUnlock{ player.PushClientRes(&msg.ResPlayroomUnlock{
@ -3784,9 +3794,9 @@ func ReqPlayroomTask(player *Player, buf []byte) error {
}) })
return err return err
} }
player.TeLog("playroom_task", map[string]interface{}{ player.TeLog("room_daily_task", map[string]interface{}{
"task_id": req.Id, "task_id": req.Id,
"reward": Items, "is_reward": PlayroomMod.DailyTaskCanReward(int(req.Id)),
}) })
player.PlayMod.save() player.PlayMod.save()
player.PushClientRes(&msg.ResPlayroomTask{ player.PushClientRes(&msg.ResPlayroomTask{
@ -3957,6 +3967,7 @@ func ReqPlayroomShop(player *Player, buf []byte) error {
"num": req.Num, "num": req.Num,
"reward": AddItems, "reward": AddItems,
}) })
player.PetItemGetLog(AddItems, LoseItem, "Shop")
player.PlayMod.save() player.PlayMod.save()
player.PushClientRes(PlayroomMod.NotifyMood()) player.PushClientRes(PlayroomMod.NotifyMood())
player.PushClientRes(&msg.ResPlayroomShop{ player.PushClientRes(&msg.ResPlayroomShop{
@ -4146,9 +4157,10 @@ func ReqSetEmoji(player *Player, buf []byte) error {
}) })
return err return err
} }
player.TeLog("set_emoji", map[string]interface{}{ player.TeLog("playerdeco_emoji_set", map[string]interface{}{
"Id": int(req.Id), "emoji_name": emojiCfg.GetEmojiName(int(req.Id)),
"Type": int(req.Type), "emoji_id": int(req.Id),
"emoji_setplace": int(req.Type),
}) })
player.PlayMod.save() player.PlayMod.save()
player.PushClientRes(&msg.ResSetEmoji{ player.PushClientRes(&msg.ResSetEmoji{
@ -4172,12 +4184,16 @@ func ReqCollect(player *Player, buf []byte) error {
CollectMod := player.PlayMod.getCollectMod() CollectMod := player.PlayMod.getCollectMod()
Type := collectCfg.GetRewardType(int(req.Id)) Type := collectCfg.GetRewardType(int(req.Id))
Num := 0 Num := 0
AreaType := ""
switch Type { switch Type {
case collect.COLLECT_TYPE_EMOJI: case collect.COLLECT_TYPE_EMOJI:
AreaType = "emoji"
Num = player.PlayMod.getEmojiMod().GetEmojiNum() Num = player.PlayMod.getEmojiMod().GetEmojiNum()
case collect.COLLECT_TYPE_FACE: case collect.COLLECT_TYPE_FACE:
AreaType = "face"
Num = player.PlayMod.getFaceMod().GetFaceNum() Num = player.PlayMod.getFaceMod().GetFaceNum()
case collect.COLLECT_TYPE_AVATAR: case collect.COLLECT_TYPE_AVATAR:
AreaType = "avatar"
Num = player.PlayMod.getAvatarMod().GetAvatarNum() Num = player.PlayMod.getAvatarMod().GetAvatarNum()
} }
Items, err := CollectMod.GetReward(int(req.Id), Num) Items, err := CollectMod.GetReward(int(req.Id), Num)
@ -4201,9 +4217,10 @@ func ReqCollect(player *Player, buf []byte) error {
player.PushClientRes(&msg.ResCollect{ player.PushClientRes(&msg.ResCollect{
Code: msg.RES_CODE_SUCCESS, Code: msg.RES_CODE_SUCCESS,
}) })
player.TeLog("collect", map[string]interface{}{ player.TeLog("playerdeco_warehouse_unlock", map[string]interface{}{
"Id": int(req.Id), "area_type": AreaType,
"Items": Items, "Id": int(req.Id),
"Items": Items,
}) })
return nil return nil
} }
@ -4230,7 +4247,7 @@ func ReqPlayroomDressSet(player *Player, buf []byte) error {
req := &msg.ReqPlayroomDressSet{} req := &msg.ReqPlayroomDressSet{}
proto.Unmarshal(buf, req) proto.Unmarshal(buf, req)
PlayroomMod := player.PlayMod.getPlayroomMod() PlayroomMod := player.PlayMod.getPlayroomMod()
Parts, error := PlayroomMod.PlayroomDressSet(GoUtil.MapInt32ToInt(req.DressSet)) Parts, Diff, error := PlayroomMod.PlayroomDressSet(GoUtil.MapInt32ToInt(req.DressSet))
if error != nil { if error != nil {
player.SendErrClienRes(&msg.ResPlayroomDressSet{ player.SendErrClienRes(&msg.ResPlayroomDressSet{
Code: msg.RES_CODE_FAIL, Code: msg.RES_CODE_FAIL,
@ -4240,6 +4257,7 @@ func ReqPlayroomDressSet(player *Player, buf []byte) error {
} }
player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PETDRESS, A: []interface{}{Parts}}) player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PETDRESS, A: []interface{}{Parts}})
player.PlayMod.save() player.PlayMod.save()
player.PetDecoSetLog(Diff)
PlayroomBackData(player) PlayroomBackData(player)
player.PushClientRes(&msg.ResPlayroomDressSet{ player.PushClientRes(&msg.ResPlayroomDressSet{
Code: msg.RES_CODE_SUCCESS, Code: msg.RES_CODE_SUCCESS,

View File

@ -119,8 +119,8 @@ func UnitLimitedTimeEvent(p *Player) error {
func UnitCard(p *Player) error { func UnitCard(p *Player) error {
CardMod := p.PlayMod.getCardMod() CardMod := p.PlayMod.getCardMod()
for i := 0; i < 1000; i++ { for i := 0; i < 10000; i++ {
CardMod.OpenCardPack(4) CardMod.OpenCardPack(5)
} }
return nil return nil
} }

View File

@ -196,9 +196,11 @@ func (c *CardMod) OpenCardPack(Star int) ([]int, error) {
for i := 0; i < cnt; i++ { for i := 0; i < cnt; i++ {
CardStar := GoUtil.RandMap(randList) CardStar := GoUtil.RandMap(randList)
switch CardStar { switch CardStar {
case 5: case 5: // 四星金
cardId = randCard(c.Round, 4, 1, newCard) cardId = randCard(c.Round, 4, 1, newCard)
case 6: case 6: // 五星
cardId = randCard(c.Round, 5, 0, newCard)
case 7: // 五星金
cardId = randCard(c.Round, 5, 1, newCard) cardId = randCard(c.Round, 5, 1, newCard)
default: default:
cardId = randCard(c.Round, CardStar, 0, newCard) cardId = randCard(c.Round, CardStar, 0, newCard)
@ -278,17 +280,17 @@ func (c *CardMod) GetCollectReward(Id int) ([]*item.Item, int, error) {
} }
// 兑换星星奖励 // 兑换星星奖励
func (c *CardMod) ExStarReward(Id int) ([]*item.Item, error) { func (c *CardMod) ExStarReward(Id int) ([]*item.Item, int, error) {
if c.ExchangeStar < Id { if c.ExchangeStar < Id {
return nil, fmt.Errorf("ExStarReward star not enough") return nil, 0, fmt.Errorf("ExStarReward star not enough")
} }
CostStar, itemList := cardCfg.GetExchangeCfg(Id) CostStar, itemList := cardCfg.GetExchangeCfg(Id)
if c.ExchangeStar < CostStar { if c.ExchangeStar < CostStar {
return nil, fmt.Errorf("ExStarReward star not enough") return nil, 0, fmt.Errorf("ExStarReward star not enough")
} }
c.ExchangeStar -= CostStar c.ExchangeStar -= CostStar
c.Cache.ExStar -= CostStar c.Cache.ExStar -= CostStar
return itemList, nil return itemList, CostStar, nil
} }
// 领取全收集奖励 // 领取全收集奖励

View File

@ -30,6 +30,7 @@ const (
ITEM_TYPE_DIAMOND = 3 ITEM_TYPE_DIAMOND = 3
// 物品类型 // 物品类型
ITEM_TYPE_PLAYROOM_PET = 97 // 宠物道具
ITEM_TYPE_CARD = 98 // 卡牌 ITEM_TYPE_CARD = 98 // 卡牌
ITEM_TYPE_BAG = 99 // 背包 ITEM_TYPE_BAG = 99 // 背包
ITEM_TYPE_CHESS = 100 // 棋子 ITEM_TYPE_CHESS = 100 // 棋子

View File

@ -350,12 +350,11 @@ func (l *LimitedTimeEventMod) AddProgress(Lv int) {
} }
// 选择进度奖励 // 选择进度奖励
func (l *LimitedTimeEventMod) SelectProgressReward(Id, Lv, Energy int) ([]*item.Item, map[int]int, int, error) { func (l *LimitedTimeEventMod) SelectProgressReward(Id, Lv, Energy int) ([]*item.Item, int, int, error) {
RewardId, ok := l.ProgressReward[Id] RewardId, ok := l.ProgressReward[Id]
if !ok { if !ok {
return nil, nil, 0, fmt.Errorf("RewardId not exist") return nil, 0, 0, fmt.Errorf("RewardId not exist")
} }
r1 := l.ProgressReward
r2 := l.ProgressMax r2 := l.ProgressMax
Item := limitedTimeEventCfg.GetProgressReward(RewardId) Item := limitedTimeEventCfg.GetProgressReward(RewardId)
l.LastSelect = RewardId l.LastSelect = RewardId
@ -390,7 +389,7 @@ func (l *LimitedTimeEventMod) SelectProgressReward(Id, Lv, Energy int) ([]*item.
} }
l.LastOption = r l.LastOption = r
l.FirstReward = true l.FirstReward = true
return Item, r1, r2, nil return Item, limitedTimeEventCfg.GetProgressRewardType(RewardId), r2, nil
} }
func (l *LimitedTimeEventMod) RemoveSuperOrder() bool { func (l *LimitedTimeEventMod) RemoveSuperOrder() bool {

View File

@ -269,6 +269,20 @@ func (p *PlayroomMod) QuestTrigger(Tr *quest.Trigger) bool {
return update return update
} }
func (p *PlayroomMod) DailyTaskCanReward(Id int) bool {
IdList := playroomCfg.GetDailyTaskListById(Id)
for _, v := range IdList {
v, ok := p.DailyTask[v]
if !ok {
return false
}
if v.Status != quest.QUEST_STATUS_FINISH {
return false
}
}
return true
}
func (p *PlayroomMod) GetDailyTaskReward(Id int) ([]*item.Item, error) { func (p *PlayroomMod) GetDailyTaskReward(Id int) ([]*item.Item, error) {
v, ok := p.DailyTask[Id] v, ok := p.DailyTask[Id]
if !ok { if !ok {
@ -459,9 +473,10 @@ func (p *PlayroomMod) AddVisitor(Id int, Time int64) {
v.Time = Time v.Time = Time
} }
func (p *PlayroomMod) SetRoom(Room map[int]int) error { func (p *PlayroomMod) SetRoom(Room map[int]int) (map[int]int, error) {
diff := GoUtil.DiffMap(p.Room, Room)
p.Room = Room p.Room = Room
return nil return diff, nil
} }
func (p *PlayroomMod) AddCollect(Id int) { func (p *PlayroomMod) AddCollect(Id int) {
@ -812,26 +827,27 @@ func (p *PlayroomMod) UnlockPetAir(Id int) {
p.PetAir = append(p.PetAir, Id) p.PetAir = append(p.PetAir, Id)
} }
func (p *PlayroomMod) PlayroomDressSet(DressSet map[int]int) ([]int, error) { func (p *PlayroomMod) PlayroomDressSet(DressSet map[int]int) ([]int, map[int]int, error) {
// 判断服装是否存在 // 判断服装是否存在
Part := make([]int, 0) Part := make([]int, 0)
Diff := GoUtil.DiffMap(DressSet, p.DressSet)
for Type, Id := range DressSet { for Type, Id := range DressSet {
dresses, ok := p.Dress[Type] dresses, ok := p.Dress[Type]
if Id == 0 { if Id == 0 {
continue continue
} }
if !ok { if !ok {
return nil, fmt.Errorf("dress type not found") return nil, nil, fmt.Errorf("dress type not found")
} }
if !GoUtil.InArray(Id, dresses) { if !GoUtil.InArray(Id, dresses) {
return nil, fmt.Errorf("dress not found") return nil, nil, fmt.Errorf("dress not found")
} }
if p.DressSet[Type] == 0 && Id != 0 { if p.DressSet[Type] == 0 && Id != 0 {
Part = append(Part, Type) Part = append(Part, Type)
} }
} }
p.DressSet = DressSet p.DressSet = DressSet
return Part, nil return Part, Diff, nil
} }
func (p *PlayroomMod) GiveUpvote(Uid int) ([]*item.Item, error) { func (p *PlayroomMod) GiveUpvote(Uid int) ([]*item.Item, error) {