日志优化

This commit is contained in:
hahwu 2025-08-11 15:52:43 +08:00
parent 8c002f7092
commit f8d4ee070c
13 changed files with 318 additions and 79 deletions

View File

@ -80,3 +80,18 @@ func GetMapKey(v any) []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
}
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
}
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 {
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")
}
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 {
data, err := gamedata.GetDataByIntKey(CFG_PLAYROOM_LOCK, Type)
if err != nil {
@ -439,6 +447,14 @@ func GetUnlockNeed(Type int) int {
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 {
data, err := gamedata.GetData(CFG_PLAYROOM_DAILYTASK)
if err != nil {
@ -597,3 +613,30 @@ func GetShopItemAdNum(Id int) int {
}
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)
return
}
if Item == nil {
return
}
err = p.HandleItem(Item, msg.ITEM_POP_LABEL_ActivityGift.String())
if err != nil {
log.Debug("ChargeFire err : %s", err)
@ -54,33 +57,46 @@ func ActivityFire(p *Player, ChargeId int) {
func PlayroomFire(p *Player, ChargeId int) {
PlayroomMod := p.PlayMod.getPlayroomMod()
Item := PlayroomMod.Fire(ChargeId)
if Item == nil {
return
}
err := p.HandleItem(Item, msg.ITEM_POP_LABEL_Playroom.String())
if err != nil {
log.Debug("ChargeFire err : %s", err)
}
p.TeLog("get_assist_battery", map[string]interface{}{
"assist_battery _type": "charge",
})
p.PlayMod.save()
}
func PiggyBankFire(p *Player, ChargeId int) {
PiggyBankMod := p.PlayMod.getPiggyBankMod()
Item := PiggyBankMod.Fire(ChargeId)
if Item == nil {
return
}
err := p.HandleItem(Item, msg.ITEM_POP_LABEL_PiggyBank.String())
if err != nil {
log.Debug("ChargeFire err : %s", err)
}
LimitedTimePiggyBankTrigger(p)
p.PlayMod.save()
p.TeLog("piggy_bank_open", map[string]interface{}{
"piggy_bank_type": piggyBank.PIGGY_BANK_TYPE_CHARGE,
"item_list": Item,
"open_cost": ChargeId,
})
p.PlayMod.save()
}
// 处理玩家充值
func ChargeFire(p *Player, ChargeId int) {
ChargeMod := p.PlayMod.getChargeMod()
Item := ChargeMod.Fire(ChargeId)
if Item == nil {
return
}
err := p.HandleItem(Item, msg.ITEM_POP_LABEL_Charge.String())
if err != nil {
log.Debug("ChargeFire err : %s", err)

View File

@ -14,6 +14,7 @@ import (
cardCfg "server/conf/card"
guesscolorCfg "server/conf/guessColor"
itemCfg "server/conf/item"
limitedTimeEventCfg "server/conf/limitedTimeEvent"
mergeDataCfg "server/conf/mergeData"
miningCfg "server/conf/mining"
"server/db"
@ -612,7 +613,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
// 触发订单事件 生成超级订单 卡牌节
LimitedTimeEventTrigger(p, EffectList[0])
p.TeLog("time_limited_event_enable", map[string]interface{}{
"event_type": EffectList[0],
"event_type": limitedTimeEventCfg.GetEventName(EffectList[0]),
"enable_type": Label,
})
case item.ITEM_TYPE_PIGGY_BANK: // 猪猪银行
@ -622,8 +623,8 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
LimitedTimePiggyBankTrigger(p)
p.PushClientRes(PiggyBankMod.BackData())
p.TeLog("piggy_bank_income", map[string]interface{}{
"piggy_bank_id": Effect,
"income_from": Label,
"piggy_bank_type": Effect,
"income_from": Label,
})
case item.ITEM_TYPE_AVATAR: // 头像框
Effect := itemCfg.GetItemEffectList(v.Id)
@ -632,6 +633,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
"avatar_id": Effect[0],
"income_from": Label,
})
p.PlayerDecoLog("avatar", Effect[0], Label)
BackDataType[item.ITEM_TYPE_AVATAR] = struct{}{}
case item.ITEM_TYPE_EMOJI: // 表情
Effect := itemCfg.GetItemEffectList(v.Id)
@ -640,6 +642,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
"emoji_id": Effect[0],
"income_from": Label,
})
p.PlayerDecoLog("emoji", Effect[0], Label)
BackDataType[item.ITEM_TYPE_EMOJI] = struct{}{}
case item.ITEM_TYPE_FACE: // 头像
Effect := itemCfg.GetItemEffectList(v.Id)
@ -648,6 +651,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
"face_id": Effect[0],
"income_from": Label,
})
p.PlayerDecoLog("face", Effect[0], Label)
BackDataType[item.ITEM_TYPE_FACE] = struct{}{}
case item.ITEM_TYPE_ACTIVITY_RACE: // 活动竞速
ActivityInfo := GetActivityInfo(p, activity.ACT_TYPE_RACE)
@ -669,11 +673,24 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
PlayroomMod := p.PlayMod.getPlayroomMod()
PlayroomMod.AddCollect(Effect)
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服饰
Effect := itemCfg.GetItemEffect(v.Id)
PlayroomMod := p.PlayMod.getPlayroomMod()
PlayroomMod.AddDress(Effect)
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装饰套装
Effect := itemCfg.GetItemEffectList(v.Id)
PlayroomMod := p.PlayMod.getPlayroomMod()
@ -682,12 +699,15 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
continue
}
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{}{}
p.TeLog("playroom_decoration_set", map[string]interface{}{
"decoration_set_id": Effect,
"income_from": Label,
})
default:
err := ItemMod.AddItem(v.Id, v.Num)
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
res.BindAccountId = req.BindAccountId
player.TeLog("platform_connect", map[string]interface{}{
"platform_type": "facebook",
"platform_type": "Facebook",
"platform_id": req.BindAccountId,
"is_reward": false,
})
@ -313,7 +313,7 @@ func (p *PlayerBaseData) ReqOnlyBindFacebook(player *Player, buf []byte) {
p.Data.FaceBookId = req.BindAccountId
res.BindAccountId = req.BindAccountId
player.TeLog("platform_connect", map[string]interface{}{
"platform_type": "facebook",
"platform_type": "Facebook",
"platform_id": req.BindAccountId,
"is_reward": false,
})

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"
collectCfg "server/conf/collect"
decorateCfg "server/conf/decorate"
emojiCfg "server/conf/emoji"
handbookCfg "server/conf/handbook"
limitedTimeEventCfg "server/conf/limitedTimeEvent"
mergeDataCfg "server/conf/mergeData"
miningCfg "server/conf/mining"
playroomCfg "server/conf/playroom"
@ -213,9 +215,9 @@ func RegHandbookAllReward(player *Player, buf []byte) error {
Type: req.Type,
},
})
player.TeLog("collection_all_reward", map[string]interface{}{
"type": req.Type,
"item_list": Items,
player.TeLog("collection_like", map[string]interface{}{
"collection_type": req.Type,
"collection_reward": Items,
})
player.PushClientRes(player.PlayMod.getHandbookMod().BackData())
player.PlayMod.save()
@ -260,7 +262,7 @@ func ReqRewardOrder(player *Player, buf []byte) error {
AddItem := LimitedTimeEventMod.GetMeteorReward(mergeList)
if len(AddItem) > 0 {
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,
})
}
@ -271,7 +273,7 @@ func ReqRewardOrder(player *Player, buf []byte) error {
AddItem := LimitedTimeEventMod.GetMoneyCatReward(mergeList)
if len(AddItem) > 0 {
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,
})
}
@ -322,7 +324,7 @@ func ReqRewardOrder(player *Player, buf []byte) error {
Id: 0,
})
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,
})
}
@ -345,6 +347,7 @@ func ReqRewardOrder(player *Player, buf []byte) error {
"order_type": OrderType,
"order_star_reward": Star,
})
player.PetItemGetLog(Item, nil, "Order")
EmitRetireTrigger2(player)
Lv := player.GetPlayerBaseMod().GetLevel()
EnergyMul := player.PlayMod.getBaseMod().GetEnergyMul()
@ -463,7 +466,7 @@ func ReqDecorate(player *Player, buf []byte) error {
})
}
player.TeLog("finish_deco", map[string]interface{}{
"deco_step_id": DecorateId,
"deco_step_id": fmt.Sprintf("%d_%d", AreaId, DecorateId),
})
player.PlayMod.save()
@ -482,6 +485,7 @@ func ReqDecorateAll(player *Player, buf []byte) error {
req := &msg.ReqDecorateAll{}
proto.Unmarshal(buf, req)
DecorateMod := player.PlayMod.getDecorateMod()
AreaId := DecorateMod.GetAreaId()
UnLockLv := decorateCfg.GetOneKeyDecorateUnlockLv()
if player.GetPlayerBaseMod().GetLevel() < UnLockLv {
player.SendErrClienRes(&msg.ResDecorateAll{
@ -519,16 +523,18 @@ func ReqDecorateAll(player *Player, buf []byte) error {
})
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{}{
"deco_step_id": DecorateList,
"deco_step_id": fmt.Sprintf("%v", deco_step_id),
})
if len(Log) > 0 {
for _, v := range Log {
player.TeLog("scene_reward", v.(map[string]interface{}))
}
}
player.PlayMod.save()
@ -1033,7 +1039,7 @@ func ReqExStarReward(player *Player, buf []byte) error {
req := &msg.ReqExStarReward{}
proto.Unmarshal(buf, req)
CardMod := player.PlayMod.getCardMod()
itemList, err := CardMod.ExStarReward(int(req.Id))
itemList, CostStar, err := CardMod.ExStarReward(int(req.Id))
if err != nil {
player.SendErrClienRes(&msg.ResExStarReward{
Code: msg.RES_CODE_FAIL,
@ -1050,9 +1056,10 @@ func ReqExStarReward(player *Player, buf []byte) error {
})
return err
}
player.TeLog("ReqExStarReward", map[string]interface{}{
"ex_star_id": int(req.Id),
"item_list": itemList,
player.TeLog("sticker_exchange", map[string]interface{}{
// "pack_id": int(req.Id),
"sticker_cost": CostStar,
"item_list": itemList,
})
player.PlayMod.save()
player.PushClientRes(&msg.ResExStarReward{
@ -1247,6 +1254,7 @@ func ReqSetAvatar(player *Player, buf []byte) error {
"avatar_id": req.Avatar,
"is_platform": b,
})
player.PlayerDecoSetLog("avatar", int(req.Avatar), "")
return nil
}
@ -1270,6 +1278,7 @@ func ReqSetFace(player *Player, buf []byte) error {
player.TeLog("face_set", map[string]interface{}{
"face_id": int(req.Face),
})
player.PlayerDecoSetLog("face", int(req.Face), "")
BackUserInfo(player)
player.UpdateUserInfo()
return nil
@ -1880,6 +1889,7 @@ func ReqCardSend(player *Player, buf []byte) error {
"card_id": CardId,
"player_id_target": int(req.Uid),
})
player.PlayerDecoSetLog("emoji", int(req.Emoji), "card_send")
player.PushClientRes(CardMod.NotifyCard())
player.PlayMod.save()
player.PushClientRes(CardMod.NotifyTimes())
@ -2352,7 +2362,7 @@ func ReqBuyChessShop(player *Player, buf []byte) error {
"item_id": int(req.Id),
"change_num": 1,
"cost_type": "diamond",
"cost_num": Item[0].Num,
"cost_num": LostItem[0].Num,
})
player.PlayMod.save()
player.PushClientRes(ChargeMod.BackData())
@ -2360,7 +2370,7 @@ func ReqBuyChessShop(player *Player, buf []byte) error {
Code: msg.RES_CODE_SUCCESS,
})
player.TeLog("buy_product_diamond", map[string]interface{}{
"diamond_cost": Item[0].Num,
"diamond_cost": LostItem[0].Num,
"product_id": int(req.Id),
"product_name": mergeDataCfg.GetNameById(int(req.Id)),
})
@ -2951,7 +2961,7 @@ func ReqSelectLimitEvent(player *Player, buf []byte) error {
proto.Unmarshal(buf, req)
LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod()
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 {
player.SendErrClienRes(&msg.ResSelectLimitEvent{
Code: msg.RES_CODE_FAIL,
@ -2969,8 +2979,8 @@ func ReqSelectLimitEvent(player *Player, buf []byte) error {
}
player.TeLog("time_limited_slot", map[string]interface{}{
"slot_order_number": slot_order_number,
"slot_reward_list": slot_reward,
"slot_reward": slot_reward[int(req.Id)],
"slot_reward_list": EventName,
"slot_reward": EventName,
})
player.PlayMod.save()
player.PushClientRes(LimitedTimeEventMod.BackData())
@ -3328,7 +3338,7 @@ func ReqPlayroomSetRoom(player *Player, buf []byte) error {
req := &msg.ReqPlayroomSetRoom{}
proto.Unmarshal(buf, req)
PlayroomMod := player.PlayMod.getPlayroomMod()
err := PlayroomMod.SetRoom(GoUtil.MapInt32ToInt(req.Playroom))
Diff, err := PlayroomMod.SetRoom(GoUtil.MapInt32ToInt(req.Playroom))
if err != nil {
player.SendErrClienRes(&msg.ResPlayroomSetRoom{
Code: msg.RES_CODE_FAIL,
@ -3338,6 +3348,7 @@ func ReqPlayroomSetRoom(player *Player, buf []byte) error {
}
player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_ROOMDEC})
player.PlayMod.save()
player.RoomDecoSetLog(Diff)
player.PushClientRes(&msg.ResPlayroomSetRoom{
Code: msg.RES_CODE_SUCCESS,
})
@ -3385,12 +3396,12 @@ func ReqPlayroomGame(player *Player, buf []byte) error {
Num: int32(v.Num),
}
}
player.TeLog("playroom_game", map[string]interface{}{
"game_id": PlayroomMod.GetGameId(),
"emoji_id": req.EmojiId,
"game_type": req.Type,
"reward": Items,
player.TeLog("finish_mini_game", map[string]interface{}{
"mini_game_type": PlayroomMod.GetGameId(),
"is_chip": false,
"item_list": Items,
})
player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_game")
player.PushClientRes(&msg.ResPlayroomGame{
Code: msg.RES_CODE_SUCCESS,
Type: req.Type,
@ -3436,13 +3447,12 @@ func ReqPlayroomSelectReward(player *Player, buf []byte) error {
G_GameLogicPtr.SetUserData(Target, VAR_OP_CHIP, 1)
PlayroomMod.ResetGame()
player.PlayMod.save()
player.TeLog("playroom_select_reward", map[string]interface{}{
"reward_id": req.Id,
"emoji_id": req.EmojiId,
"game_id": PlayroomMod.GetGameId(),
"reward": Items,
"target_id": Target,
player.TeLog("finish_mini_game", map[string]interface{}{
"mini_game_type": PlayroomMod.GetGameId(),
"is_chip": true,
"item_list": Items,
})
player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_select_reward")
PlayroomBackData(player)
PlayroomVisit(player, PlayroomMod.GetTarget())
player.PushClientRes(&msg.ResPlayroomSelectReward{
@ -3486,8 +3496,8 @@ func ReqPlayroomWork(player *Player, buf []byte) error {
return err
}
player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PETWORK})
player.TeLog("playroom_work", map[string]interface{}{
"work_item": Items,
player.TeLog("pet_assist_active", map[string]interface{}{
"assist_time_left": PlayroomMod.Endtime - GoUtil.Now(),
})
player.PlayMod.save()
player.PushClientRes(PlayroomMod.NotifyWork())
@ -3505,6 +3515,7 @@ func ReqPlayroomRest(player *Player, buf []byte) error {
player.PlayMod.save()
player.TeLog("playroom_rest", map[string]interface{}{})
player.PushClientRes(PlayroomMod.NotifyWork())
player.TeLog("pet_assist_callback", map[string]interface{}{})
return nil
}
@ -3563,9 +3574,8 @@ func ReqPlayroomChip(player *Player, buf []byte) error {
})
return err
}
player.TeLog("playroom_chip", map[string]interface{}{
"chip_num": ChipNum,
"uid": req.Uid,
player.TeLog("remove_chip", map[string]interface{}{
"remove_chip_number": ChipNum,
})
G_GameLogicPtr.SetUserData(int(player.M_DwUin), VAR_OP_CHIP_SET, len(PlayroomMod.ChipList))
@ -3642,12 +3652,12 @@ func ReqPlayroomFlipReward(player *Player, buf []byte) error {
Emoji: int(req.EmojiId),
},
})
player.TeLog("playroom_flip_reward", map[string]interface{}{
"reward": Items,
"target_id": Target,
"emoji_id": req.EmojiId,
"game_id": playroom.GAME_TYPE_FILP,
player.TeLog("finish_mini_game", map[string]interface{}{
"mini_game_type": PlayroomMod.GetGameId(),
"is_chip": false,
"item_list": Items,
})
player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_flip_reward")
player.PlayMod.save()
PlayroomBackData(player)
player.PushClientRes(&msg.ResPlayroomFlipReward{
@ -3729,8 +3739,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_KISS, 1)
player.TeLog("playroom_upvote", map[string]interface{}{
"player_id": req.Id,
player.TeLog("visit_like", map[string]interface{}{
"user_id": req.Id,
})
player.PlayMod.save()
player.PushClientRes(&msg.ResPlayroomUpvote{
@ -3751,8 +3761,8 @@ func ReqPlayroomUnlock(player *Player, buf []byte) error {
})
return err
}
player.TeLog("playroom_unlock", map[string]interface{}{
"unlock_id": req.Id,
player.TeLog("room_unlcok", map[string]interface{}{
"room_type": playroomCfg.GetUnlockName(int(req.Id)),
})
player.PlayMod.save()
player.PushClientRes(&msg.ResPlayroomUnlock{
@ -3783,9 +3793,9 @@ func ReqPlayroomTask(player *Player, buf []byte) error {
})
return err
}
player.TeLog("playroom_task", map[string]interface{}{
"task_id": req.Id,
"reward": Items,
player.TeLog("room_daily_task", map[string]interface{}{
"task_id": req.Id,
"is_reward": PlayroomMod.DailyTaskCanReward(int(req.Id)),
})
player.PlayMod.save()
player.PushClientRes(&msg.ResPlayroomTask{
@ -3956,6 +3966,7 @@ func ReqPlayroomShop(player *Player, buf []byte) error {
"num": req.Num,
"reward": AddItems,
})
player.PetItemGetLog(AddItems, LoseItem, "Shop")
player.PlayMod.save()
player.PushClientRes(PlayroomMod.NotifyMood())
player.PushClientRes(&msg.ResPlayroomShop{
@ -4145,9 +4156,10 @@ func ReqSetEmoji(player *Player, buf []byte) error {
})
return err
}
player.TeLog("set_emoji", map[string]interface{}{
"Id": int(req.Id),
"Type": int(req.Type),
player.TeLog("playerdeco_emoji_set", map[string]interface{}{
"emoji_name": emojiCfg.GetEmojiName(int(req.Id)),
"emoji_id": int(req.Id),
"emoji_setplace": int(req.Type),
})
player.PlayMod.save()
player.PushClientRes(&msg.ResSetEmoji{
@ -4171,12 +4183,16 @@ func ReqCollect(player *Player, buf []byte) error {
CollectMod := player.PlayMod.getCollectMod()
Type := collectCfg.GetRewardType(int(req.Id))
Num := 0
AreaType := ""
switch Type {
case collect.COLLECT_TYPE_EMOJI:
AreaType = "emoji"
Num = player.PlayMod.getEmojiMod().GetEmojiNum()
case collect.COLLECT_TYPE_FACE:
AreaType = "face"
Num = player.PlayMod.getFaceMod().GetFaceNum()
case collect.COLLECT_TYPE_AVATAR:
AreaType = "avatar"
Num = player.PlayMod.getAvatarMod().GetAvatarNum()
}
Items, err := CollectMod.GetReward(int(req.Id), Num)
@ -4200,9 +4216,10 @@ func ReqCollect(player *Player, buf []byte) error {
player.PushClientRes(&msg.ResCollect{
Code: msg.RES_CODE_SUCCESS,
})
player.TeLog("collect", map[string]interface{}{
"Id": int(req.Id),
"Items": Items,
player.TeLog("playerdeco_warehouse_unlock", map[string]interface{}{
"area_type": AreaType,
"Id": int(req.Id),
"Items": Items,
})
return nil
}
@ -4229,7 +4246,7 @@ func ReqPlayroomDressSet(player *Player, buf []byte) error {
req := &msg.ReqPlayroomDressSet{}
proto.Unmarshal(buf, req)
PlayroomMod := player.PlayMod.getPlayroomMod()
Parts, error := PlayroomMod.PlayroomDressSet(GoUtil.MapInt32ToInt(req.DressSet))
Parts, Diff, error := PlayroomMod.PlayroomDressSet(GoUtil.MapInt32ToInt(req.DressSet))
if error != nil {
player.SendErrClienRes(&msg.ResPlayroomDressSet{
Code: msg.RES_CODE_FAIL,
@ -4239,6 +4256,7 @@ func ReqPlayroomDressSet(player *Player, buf []byte) error {
}
player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PETDRESS, A: []interface{}{Parts}})
player.PlayMod.save()
player.PetDecoSetLog(Diff)
PlayroomBackData(player)
player.PushClientRes(&msg.ResPlayroomDressSet{
Code: msg.RES_CODE_SUCCESS,

View File

@ -280,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 {
return nil, fmt.Errorf("ExStarReward star not enough")
return nil, 0, fmt.Errorf("ExStarReward star not enough")
}
CostStar, itemList := cardCfg.GetExchangeCfg(Id)
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.Cache.ExStar -= CostStar
return itemList, nil
return itemList, CostStar, nil
}
// 领取全收集奖励

View File

@ -30,6 +30,7 @@ const (
ITEM_TYPE_DIAMOND = 3
// 物品类型
ITEM_TYPE_PLAYROOM_PET = 97 // 宠物道具
ITEM_TYPE_CARD = 98 // 卡牌
ITEM_TYPE_BAG = 99 // 背包
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]
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
Item := limitedTimeEventCfg.GetProgressReward(RewardId)
l.LastSelect = RewardId
@ -390,7 +389,7 @@ func (l *LimitedTimeEventMod) SelectProgressReward(Id, Lv, Energy int) ([]*item.
}
l.LastOption = r
l.FirstReward = true
return Item, r1, r2, nil
return Item, limitedTimeEventCfg.GetProgressRewardType(RewardId), r2, nil
}
func (l *LimitedTimeEventMod) RemoveSuperOrder() bool {

View File

@ -269,6 +269,20 @@ func (p *PlayroomMod) QuestTrigger(Tr *quest.Trigger) bool {
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) {
v, ok := p.DailyTask[Id]
if !ok {
@ -459,9 +473,10 @@ func (p *PlayroomMod) AddVisitor(Id int, Time int64) {
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
return nil
return diff, nil
}
func (p *PlayroomMod) AddCollect(Id int) {
@ -812,26 +827,27 @@ func (p *PlayroomMod) UnlockPetAir(Id int) {
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)
Diff := GoUtil.DiffMap(DressSet, p.DressSet)
for Type, Id := range DressSet {
dresses, ok := p.Dress[Type]
if Id == 0 {
continue
}
if !ok {
return nil, fmt.Errorf("dress type not found")
return nil, nil, fmt.Errorf("dress type not found")
}
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 {
Part = append(Part, Type)
}
}
p.DressSet = DressSet
return Part, nil
return Part, Diff, nil
}
func (p *PlayroomMod) GiveUpvote(Uid int) ([]*item.Item, error) {