充值优化

This commit is contained in:
hahwu 2025-10-21 15:26:50 +08:00
parent 4bfc5266b6
commit bf5cbc9d5d
5 changed files with 125 additions and 10 deletions

View File

@ -90,3 +90,18 @@ func GetRankReward(Rank int) []*item.Item {
}
return nil
}
func GetMaxRewardId() int {
data, err := gamedata.GetData(CFG_CHAMPSHIP_JACKPOT)
if err != nil {
return 0
}
MaxId := 0
for k := range data {
Id := GoUtil.Int(k)
if Id > MaxId {
MaxId = Id
}
}
return MaxId
}

View File

@ -20,6 +20,7 @@ func Charge(p *Player, ChargeId int) {
PlayroomFire(p, ChargeId) // 游乐场
ActivityFire(p, ChargeId) // 活动礼包
ADPetWorkFire(p, ChargeId) // 广告宠物工作
PassFire(p, ChargeId)
OrderMod := p.PlayMod.getOrderMod()
OrderMod.SetIsCharge() // 设置订单模块为充值状态
p.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PURCHASE, A: []interface{}{}})
@ -38,13 +39,12 @@ func SendCharge(p *Player, d *ChargeExtra) {
func ADPetWorkFire(p *Player, ChargeId int) {
ChargeMod := p.PlayMod.getChargeMod()
Item := ChargeMod.FireAdReward(ChargeId)
if Item == nil {
return
}
err := p.HandleItem(Item, msg.ITEM_POP_LABEL_ActivityGift.String())
if err != nil {
log.Debug("ChargeFire err : %s", err)
return
if Item != nil {
err := p.HandleItem(Item, msg.ITEM_POP_LABEL_ActivityGift.String())
if err != nil {
log.Debug("ChargeFire err : %s", err)
return
}
}
p.PlayMod.save()
p.PushClientRes(ChargeMod.BackData())

View File

@ -20,6 +20,7 @@ import (
playroomCfg "server/conf/playroom"
"server/db"
"server/game/mod/activity"
"server/game/mod/friend"
"server/game/mod/item"
"server/game/mod/limitedTimeEvent"
MsgMod "server/game/mod/msg"
@ -678,6 +679,8 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
"avatar_id": Effect[0],
"income_from": Label,
})
FriendMod := p.PlayMod.getFriendMod()
FriendMod.AddActLog(friend.ACT_LOG_TYPE_GET_NEW_AVATAR_FRAME, "")
p.PlayerDecoLog("avatar", Effect[0], Label)
BackDataType[item.ITEM_TYPE_AVATAR] = struct{}{}
case item.ITEM_TYPE_EMOJI: // 表情
@ -687,6 +690,8 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
"emoji_id": Effect[0],
"income_from": Label,
})
FriendMod := p.PlayMod.getFriendMod()
FriendMod.AddActLog(friend.ACT_LOG_TYPE_GET_NEW_EMOTION, "")
p.PlayerDecoLog("emoji", Effect[0], Label)
BackDataType[item.ITEM_TYPE_EMOJI] = struct{}{}
case item.ITEM_TYPE_FACE: // 头像
@ -696,6 +701,8 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
"face_id": Effect[0],
"income_from": Label,
})
FriendMod := p.PlayMod.getFriendMod()
FriendMod.AddActLog(friend.ACT_LOG_TYPE_GET_NEW_AVATAR, "")
p.PlayerDecoLog("face", Effect[0], Label)
BackDataType[item.ITEM_TYPE_FACE] = struct{}{}
case item.ITEM_TYPE_ACTIVITY_RACE: // 活动竞速
@ -719,6 +726,8 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
PlayroomMod.AddCollect(Effect, Label)
BackDataType[item.ITEM_TYPE_PLAYROOM_DECORATION] = struct{}{}
Type, Name := playroomCfg.GetDecoInfo(Effect)
FriendMod := p.PlayMod.getFriendMod()
FriendMod.AddActLog(friend.ACT_LOG_TYPE_GET_NEW_DECORATION, "")
p.TeLog("room_deco_get", map[string]interface{}{
"room_deco_type": Type,
"room_deco_name": Name,
@ -731,6 +740,8 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
BackDataType[item.ITEM_TYPE_PLAYROOM_DRESS] = struct{}{}
Type := playroomCfg.GetDressPart(Effect)
Name := playroomCfg.GetDressName(Effect)
FriendMod := p.PlayMod.getFriendMod()
FriendMod.AddActLog(friend.ACT_LOG_TYPE_GET_NEW_COSTUME, "")
p.TeLog("pet_deco_get", map[string]interface{}{
"pet_deco_type": Type,
"pet_deco_name": Name,

View File

@ -7,6 +7,7 @@ import (
"server/GoUtil"
"server/conf"
cardCfg "server/conf/card"
champshipCfg "server/conf/champship"
collectCfg "server/conf/collect"
decorateCfg "server/conf/decorate"
emojiCfg "server/conf/emoji"
@ -491,6 +492,19 @@ func ReqDecorate(player *Player, buf []byte) error {
"deco_step_id": fmt.Sprintf("%d_%d", AreaId, DecorateId),
"material_cost": PartItem,
})
FriendMod := player.PlayMod.getFriendMod()
if AreaId == 1 && DecorateId == 20 {
FriendMod.AddActLog(friend.ACT_LOG_TYPE_COMPLETE_RESTROOM, "")
}
if AreaId == 1 && DecorateId == 29 {
FriendMod.AddActLog(friend.ACT_LOG_TYPE_COMPLETE_RESTAURANT, "")
}
if AreaId == 1 && DecorateId == 36 {
FriendMod.AddActLog(friend.ACT_LOG_TYPE_COMPLETE_BATHROOM, "")
}
if AreaId == 1 && DecorateId == 44 {
FriendMod.AddActLog(friend.ACT_LOG_TYPE_COMPLETE_CLOAKROOM, "")
}
player.PlayMod.save()
player.PushClientRes(DecorateMod.BackData())
@ -1077,7 +1091,8 @@ func ReqCardCollectReward(player *Player, buf []byte) error {
})
return err
}
FriendMod := player.PlayMod.getFriendMod()
FriendMod.AddActLog(friend.ACT_LOG_TYPE_COMPLETE_CARD_ALBUM, fmt.Sprintf("%d", int(req.Color)))
if chess != 0 {
player.PlayMod.getChessMod().AddChessBuff(chess)
player.PushClientRes(player.PlayMod.getOrderMod().BackData())
@ -1158,6 +1173,8 @@ func ReqAllCollectReward(player *Player, buf []byte) error {
})
return err
}
FriendMod := player.PlayMod.getFriendMod()
FriendMod.AddActLog(friend.ACT_LOG_TYPE_COMPLETE_ALL_CARDS, "all")
player.PlayMod.save()
player.TeLog("ReqAllCollectReward", map[string]interface{}{
"item_list": itemList,
@ -2708,6 +2725,11 @@ func ReqChampshipReward(player *Player, buf []byte) error {
player.PushClientRes(&msg.ResChampshipReward{
Code: msg.RES_CODE_SUCCESS,
})
MaxId := champshipCfg.GetMaxRewardId()
if MaxId == ChampshipMod.Reward {
FriendMod := player.PlayMod.getFriendMod()
FriendMod.AddActLog(friend.ACT_LOG_TYPE_GET_CHAMPIONSHIP_PRIZE, "")
}
player.TeLog("championship_reward", map[string]interface{}{
"season_id": GoUtil.ZeroTimestamp(),
"champship_step_id": ChampshipMod.Reward,
@ -2871,6 +2893,10 @@ func ReqChampshipRankReward(player *Player, buf []byte) error {
})
return err
}
if MyLastRank >= 5 {
FriendMod := player.PlayMod.getFriendMod()
FriendMod.AddActLog(friend.ACT_LOG_TYPE_GET_CHAMPIONSHIP_RANK, GoUtil.String(MyLastRank))
}
player.PlayMod.save()
BackChampship(player)
player.PushClientRes(&msg.ResChampshipRankReward{
@ -3596,8 +3622,9 @@ func ReqPlayroomSelectReward(player *Player, buf []byte) error {
"is_chip": true,
"item_list": Items,
})
FriendMod := player.PlayMod.getFriendMod()
FriendMod.AddActLog(friend.ACT_LOG_TYPE_GET_VISIT_GAME_PRIZE_1, "")
PlayroomMod.ResetGame()
player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_select_reward")
PlayroomBackData(player)
player.PlayMod.save()
@ -3778,6 +3805,10 @@ func ReqPlayroomFlipReward(player *Player, buf []byte) error {
if LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_PET_THIEF) && Result == playroom.FLIP_TYPE_GOLD {
player.GetPetThiefReward(Target)
}
if Result == playroom.FLIP_TYPE_GOLD {
FriendMod := player.PlayMod.getFriendMod()
FriendMod.AddActLog(friend.ACT_LOG_TYPE_GET_VISIT_GAME_PRIZE, "")
}
err = player.HandleItem(Items1, msg.ITEM_POP_LABEL_PlayroomFlip.String())
if err != nil {
player.SendErrClienRes(&msg.ResPlayroomFlip{
@ -4238,6 +4269,8 @@ func ReqFriendTreasureEnd(player *Player, buf []byte) error {
)
return err
}
FriendMod := player.PlayMod.getFriendMod()
FriendMod.AddActLog(friend.ACT_LOG_TYPE_OPEN_PET_TREASURE, "")
player.TeLog("pet_treasure_open", map[string]interface{}{
"pet_treasure_step": FriendTreasureMod.Shift,
"pet_treasure_box": FriendTreasureMod.BoxItems,

View File

@ -10,7 +10,7 @@ import (
)
type FriendMod struct {
FriendList map[int]struct{} // 好友列表
FriendList map[int]struct{} // TODO 废弃 好友列表
NewFriendList map[int]*FriendInfo // 好友列表
ApplyList map[int]int64 // 好友请求列表
SendApply map[int]int64 // 发送的申请
@ -21,6 +21,13 @@ type FriendMod struct {
Id int64 // 已同步msg ID
Npc []int // npc id
Bubble map[int]*BubbleInfo // 气泡
ActivityLog []*ActLogInfo // 活动日志
}
type ActLogInfo struct {
Type int
Time int64
Param string
}
type BubbleInfo struct {
@ -97,6 +104,43 @@ const (
APPLY_TYPE_WISH = 1 // 心愿单请求
)
const (
ACT_LOG_TYPE_FIRST_LOGIN = 1 // 首次登入游戏
ACT_LOG_TYPE_COMPLETE_RESTROOM = 2 // 完成休息室
ACT_LOG_TYPE_COMPLETE_RESTAURANT = 3 // 完成餐厅
ACT_LOG_TYPE_COMPLETE_BATHROOM = 4 // 完成浴室
ACT_LOG_TYPE_COMPLETE_CLOAKROOM = 5 // 完成衣帽间
ACT_LOG_TYPE_GET_NEW_AVATAR = 6 // 获得新头像
ACT_LOG_TYPE_GET_NEW_AVATAR_FRAME = 7 // 获得新头像框
ACT_LOG_TYPE_GET_NEW_EMOTION = 8 // 获得新表情
ACT_LOG_TYPE_GET_NEW_DECORATION = 9 // 获得新装饰品
ACT_LOG_TYPE_GET_NEW_COSTUME = 10 // 获得新服装
ACT_LOG_TYPE_COMPLETE_CARD_ALBUM = 11 // 完成卡册收集
ACT_LOG_TYPE_COMPLETE_ALL_CARDS = 12 // 完成全卡牌收集
ACT_LOG_TYPE_GET_CHAMPIONSHIP_RANK = 13 // 获得锦标赛名次
ACT_LOG_TYPE_GET_CHAMPIONSHIP_PRIZE = 14 // 获得锦标赛大奖
ACT_LOG_TYPE_GET_LIMITED_ACTIVITY_PRIZE = 15 // 获得限时活动大奖
ACT_LOG_TYPE_JOIN_FRIEND_COOP_ACTIVITY = 16 // 参加好友合作类活动
ACT_LOG_TYPE_GET_VISIT_GAME_PRIZE = 17 // 获得拜访小游戏大奖 翻牌
ACT_LOG_TYPE_GET_VISIT_GAME_PRIZE_1 = 18 // 获得拜访小游戏大奖 除了翻牌
ACT_LOG_TYPE_OPEN_PET_TREASURE = 19 // 打开宠物宝藏
ACT_LOG_TYPE_VISIT_UPVOTE = 20 // 拜访时点赞
ACT_LOG_TYPE_COMPLETE_HANDBOOK_ACHIEVEMENT = 21 // 完成图鉴收集成就
ACT_LOG_TYPE_COMPLETE_CHAPTER_SCENES = 22 // 完成第X章所有场景
ACT_LOG_TYPE_LOST_USER_RETURN = 23 // 流失用户回归
ACT_LOG_TYPE_ACCEPT_MY_INVITE_REGISTER = 24 // 接受"我"的邀请注册
ACT_LOG_TYPE_BECOME_MY_FRIEND = 25 // 成为"我"的好友
ACT_LOG_TYPE_SEND_CARD_TO_ME = 26 // 向"我"赠送卡牌
ACT_LOG_TYPE_CARD_EXCHANGE_WITH_ME = 27 // 与"我"达成卡牌交换
ACT_LOG_TYPE_APPEAR_IN_MY_PET_TREASURE = 28 // 出现在"我"的宠物宝藏中并被选中
ACT_LOG_TYPE_VISIT_MY_CAT_PRIVATE_TREASURE = 29 // 拜访"我"并玩了猫猫私房宝
ACT_LOG_TYPE_VISIT_MY_OTHER_GAME_WIN = 30 // 拜访"我"并玩了猫猫私房宝以外的小游戏,成功装箱
ACT_LOG_TYPE_VISIT_MY_OTHER_GAME_LOSE = 31 // 拜访"我"并玩了猫猫私房宝以外的小游戏,未成功装箱
ACT_LOG_TYPE_UPVOTE_MY_COLLECTION_INFO = 32 // 为"我"的全收集信息点赞
ACT_LOG_TYPE_UPVOTE_MY_ROOM = 33 // 为"我"的房间点赞
ACT_LOG_TYPE_JOIN_COOP_ACTIVITY_WITH_ME = 34 // 与"我"一起参加好友合作类活动
)
type LogInfo struct {
Id int
Uid int
@ -109,6 +153,7 @@ type LogInfo struct {
func (f *FriendMod) InitData() {
if f.FriendList == nil {
f.AddActLog(ACT_LOG_TYPE_FIRST_LOGIN, "")
f.FriendList = make(map[int]struct{})
}
if f.ApplyList == nil {
@ -328,6 +373,17 @@ func (f *FriendMod) ResetGoldCardEx() {
}
}
func (f *FriendMod) AddActLog(Type int, Param string) {
f.ActivityLog = append(f.ActivityLog, &ActLogInfo{
Type: Type,
Time: GoUtil.Now(),
Param: Param,
})
if len(f.ActivityLog) > 20 {
f.ActivityLog = f.ActivityLog[len(f.ActivityLog)-20:]
}
}
func (f *FriendMod) Upvote(Id int) ([]*item.Item, int, error) {
info := &LogInfo{}
for _, v := range f.Log {