Merge branch 'develop' into sdk

This commit is contained in:
hahwu 2025-07-08 18:38:33 +08:00
commit 6ba72333d2
6 changed files with 149 additions and 72 deletions

View File

@ -693,6 +693,19 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
Effect := itemCfg.GetItemEffect(v.Id) Effect := itemCfg.GetItemEffect(v.Id)
PlayroomMod := p.PlayMod.getPlayroomMod() PlayroomMod := p.PlayMod.getPlayroomMod()
PlayroomMod.AddDress(Effect) PlayroomMod.AddDress(Effect)
case item.ITEM_TYPE_PLAYROOM_DECORATION_SET: // playroom装饰套装
Effect := itemCfg.GetItemEffectList(v.Id)
PlayroomMod := p.PlayMod.getPlayroomMod()
for _, v := range Effect {
if v == 0 {
continue
}
PlayroomMod.AddCollect(v)
}
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("item_change", map[string]interface{}{ p.TeLog("item_change", map[string]interface{}{
@ -709,7 +722,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
} }
ResItemPopId := 0 ResItemPopId := 0
if v, ok := p.args["ResItemPopId"]; ok { if v, ok := p.args["ResItemPopId"]; ok {
ResItemPopId = v.(int) ResItemPopId = GoUtil.Int(v)
} }
if len(ResItem) != 0 || len(ResCard) != 0 { if len(ResItem) != 0 || len(ResCard) != 0 {
p.PushClientRes(&msg.ResItemPop{ p.PushClientRes(&msg.ResItemPop{
@ -722,9 +735,17 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
for k := range BackDataType { for k := range BackDataType {
switch k { switch k {
case item.ITEM_TYPE_AVATAR: case item.ITEM_TYPE_AVATAR:
BackUserInfo(p)
case item.ITEM_TYPE_EMOJI: case item.ITEM_TYPE_EMOJI:
BackUserInfo(p)
case item.ITEM_TYPE_FACE: case item.ITEM_TYPE_FACE:
BackUserInfo(p) BackUserInfo(p)
case item.ITEM_TYPE_PLAYROOM_DECORATION:
PlayroomBackData(p)
case item.ITEM_TYPE_PLAYROOM_DRESS:
PlayroomBackData(p)
case item.ITEM_TYPE_PLAYROOM_DECORATION_SET:
PlayroomBackData(p)
} }
} }
CardMod := p.PlayMod.getCardMod() CardMod := p.PlayMod.getCardMod()

View File

@ -656,21 +656,30 @@ func GetVisitorPlayer(p *Player) int {
PlayroomMod := p.PlayMod.getPlayroomMod() PlayroomMod := p.PlayMod.getPlayroomMod()
VisitorList := PlayroomMod.GetVisitor() VisitorList := PlayroomMod.GetVisitor()
HasVisit := PlayroomMod.GetHasVisit() HasVisit := PlayroomMod.GetHasVisit()
TodayVisitedUsers := PlayroomMod.GetTodayVisitedUsers()
FriendMod := p.PlayMod.getFriendMod()
type sortData struct { type sortData struct {
Uid int Uid int
Time int64 Time int64
} }
PlayerList := make([]sortData, 0) PlayerList := make([]sortData, 0)
PlayerList2 := make([]sortData, 0)
Now := GoUtil.Now() Now := GoUtil.Now()
for k, v := range VisitorList { for k, v := range VisitorList {
if _, ok := HasVisit[k]; ok { if _, ok := HasVisit[k]; ok {
continue continue
} }
if GoUtil.InArray(k, TodayVisitedUsers) {
continue
}
if v.Time < Now-86400 { if v.Time < Now-86400 {
continue continue
} }
PlayerList = append(PlayerList, sortData{k, v.Time}) if FriendMod.CheckFriend(k) {
PlayerList = append(PlayerList, sortData{k, v.Time})
} else {
PlayerList2 = append(PlayerList, sortData{k, v.Time})
}
} }
if len(PlayerList) != 0 { if len(PlayerList) != 0 {
sort.Slice(PlayerList, func(i, j int) bool { sort.Slice(PlayerList, func(i, j int) bool {
@ -678,20 +687,58 @@ func GetVisitorPlayer(p *Player) int {
}) })
return PlayerList[0].Uid return PlayerList[0].Uid
} }
FriendMod := p.PlayMod.getFriendMod()
PlayerList2 := make([]sortData, 0)
for _, v := range PlayerList {
if FriendMod.CheckFriend(v.Uid) {
continue
}
}
if len(PlayerList2) != 0 { if len(PlayerList2) != 0 {
sort.Slice(PlayerList2, func(i, j int) bool { sort.Slice(PlayerList2, func(i, j int) bool {
return PlayerList2[i].Time < PlayerList2[j].Time return PlayerList2[i].Time < PlayerList2[j].Time
}) })
return PlayerList2[0].Uid return PlayerList2[0].Uid
} }
L := GetRecommendPlayer(p, 1) // 若不存在符合条件的用户则选择24小时内登入过游戏且上次登入时间与当前时间最近的好友
var recentFriendUid int
var recentLoginTime int64 = 0
for uid := range FriendMod.GetFriendList() {
if uid == int(p.M_DwUin) {
continue
}
if GoUtil.InArray(uid, TodayVisitedUsers) {
continue
}
ps := G_GameLogicPtr.GetSimplePlayerByUid(uid)
if ps == nil {
continue
}
if GoUtil.Now()-ps.Loginout <= 86400 { // 24小时内登录过
if ps.Loginout > recentLoginTime {
recentLoginTime = ps.Loginout
recentFriendUid = uid
}
}
}
if recentFriendUid != 0 {
return recentFriendUid
}
PlayerList3 := G_GameLogicPtr.RankMgr.getAllRank(RANK_TYPE_USER)
PlayerList4 := make([]int, 0)
for _, v := range PlayerList3 {
if v.Score < 15 {
continue
}
if v.Uid == int(p.M_DwUin) {
continue
}
PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(v.Uid)
if GoUtil.Now()-PlayerSimpleData.Loginout > 86400 {
continue
}
if PlayerSimpleData.Level < 6 {
continue
}
PlayerList4 = append(PlayerList4, v.Uid)
}
L := GoUtil.RandSliceNum(PlayerList4, 1)
if len(L) == 0 {
return 0
}
return L[0] return L[0]
} }

View File

@ -298,7 +298,7 @@ func ReqRewardOrder(player *Player, buf []byte) error {
if LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_CHEST_RAIN) { //宝箱雨活动 if LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_CHEST_RAIN) { //宝箱雨活动
ChestRainItems := LimitedTimeEventMod.GetChestReward(mergeList) ChestRainItems := LimitedTimeEventMod.GetChestReward(mergeList)
player.args["ResItemPopId"] = 0 player.args["ResItemPopId"] = req.OrderId
err = player.HandleItem(ChestRainItems, msg.ITEM_POP_LABEL_LimitEventChestRain.String()) err = player.HandleItem(ChestRainItems, msg.ITEM_POP_LABEL_LimitEventChestRain.String())
if err != nil { if err != nil {
player.SendErrClienRes(&msg.ResRewardOrder{ player.SendErrClienRes(&msg.ResRewardOrder{
@ -3220,7 +3220,7 @@ func ReqPlayroomSetRoom(player *Player, buf []byte) error {
return nil return nil
} }
// 玩游戏 Desprecated // 玩游戏
func ReqPlayroomGame(player *Player, buf []byte) error { func ReqPlayroomGame(player *Player, buf []byte) error {
req := &msg.ReqPlayroomGame{} req := &msg.ReqPlayroomGame{}
proto.Unmarshal(buf, req) proto.Unmarshal(buf, req)

View File

@ -30,21 +30,22 @@ const (
ITEM_TYPE_DIAMOND = 3 ITEM_TYPE_DIAMOND = 3
// 物品类型 // 物品类型
ITEM_TYPE_CARD = 98 // 卡牌 ITEM_TYPE_CARD = 98 // 卡牌
ITEM_TYPE_BAG = 99 // 背包 ITEM_TYPE_BAG = 99 // 背包
ITEM_TYPE_CHESS = 100 // 棋子 ITEM_TYPE_CHESS = 100 // 棋子
ITEM_TYPE_CARD_PACK = 101 // 卡包 ITEM_TYPE_CARD_PACK = 101 // 卡包
ITEM_TYPE_LIMIED_TIME_EVENT = 102 //限时事件 ITEM_TYPE_LIMIED_TIME_EVENT = 102 //限时事件
ITEM_TYPE_PIGGY_BANK = 103 // 猪猪银行 ITEM_TYPE_PIGGY_BANK = 103 // 猪猪银行
ITEM_TYPE_MASTER_CARD = 104 // 万能卡 ITEM_TYPE_MASTER_CARD = 104 // 万能卡
ITEM_TYPE_AVATAR = 105 // 头像框 ITEM_TYPE_AVATAR = 105 // 头像框
ITEM_TYPE_ACTIVITY = 106 // 活动道具 ITEM_TYPE_ACTIVITY = 106 // 活动道具
ITEM_TYPE_ACTIVITY_RACE = 107 // 竞赛活动道具 ITEM_TYPE_ACTIVITY_RACE = 107 // 竞赛活动道具
ITEM_TYPE_PLAYROOM_VISIT = 108 // playroom拜访道具 ITEM_TYPE_PLAYROOM_VISIT = 108 // playroom拜访道具
ITEM_TYPE_EMOJI = 109 // 表情 ITEM_TYPE_EMOJI = 109 // 表情
ITEM_TYPE_FACE = 110 // 头像 ITEM_TYPE_FACE = 110 // 头像
ITEM_TYPE_PLAYROOM_DECORATION = 111 // playroom装饰 ITEM_TYPE_PLAYROOM_DECORATION = 111 // playroom装饰
ITEM_TYPE_PLAYROOM_DRESS = 112 // playroom服饰 ITEM_TYPE_PLAYROOM_DRESS = 112 // playroom服饰
ITEM_TYPE_PLAYROOM_DECORATION_SET = 113 // playroom装饰套装
) )
func (i *ItemMod) InitData() { func (i *ItemMod) InitData() {

View File

@ -37,7 +37,7 @@ type Order struct {
const ( const (
Common_type = 1 // 普通订单 Common_type = 1 // 普通订单
Extra_type = 2 // 额外订单 Extra_type = 2 // 额外订单 弃用
Super_type = 3 // 超级订单 Super_type = 3 // 超级订单
Preheat_type = 4 // 预热订单 Preheat_type = 4 // 预热订单
Trigger_type = 5 // 触发订单 Trigger_type = 5 // 触发订单
@ -389,7 +389,7 @@ func (o *OrderMod) addOrder(ChessList []int, Diff int, Type int) int {
o.Auto_id++ o.Auto_id++
Star := GetOrderStar(ChessList) Star := GetOrderStar(ChessList)
Items := make([]*item.Item, 0) Items := make([]*item.Item, 0)
if Type != Common_type { if Type != Common_type && Type != Super_type {
Items = []*item.Item{item.NewItem(item.ITEM_STAR_ID, Star)} Items = []*item.Item{item.NewItem(item.ITEM_STAR_ID, Star)}
} }
Order := Order{ Order := Order{

View File

@ -12,48 +12,50 @@ import (
) )
type PlayroomMod struct { type PlayroomMod struct {
Collect map[int]int // 装饰 Collect map[int]int // 装饰
Room map[int]int // 房间 Room map[int]int // 房间
Dress map[int][]int // 服装仓库 Dress map[int][]int // 服装仓库
DressSet map[int]int // 服装穿戴 DressSet map[int]int // 服装穿戴
PetAir []int // 宠物空气背包 PetAir []int // 宠物空气背包
PetAirSet int // 宠物空气背包穿戴 PetAirSet int // 宠物空气背包穿戴
Status int // 0: 未拜访 1: 拜访 Status int // 0: 未拜访 1: 拜访
Endtime int64 // 结束时间 Endtime int64 // 结束时间
Starttime int64 // 开始时间 Starttime int64 // 开始时间
WorkStatus int // 0: 未开始 1: 进行中 2: 结束 WorkStatus int // 0: 未开始 1: 进行中 2: 结束
Visitor map[int]*Info // 访客 Visitor map[int]*Info // 访客
MoodInfo map[int]*Mood // 心情 MoodInfo map[int]*Mood // 心情
AllMood int // 总心情 AllMood int // 总心情
Reward []*item.Item // 奖励 Reward []*item.Item // 奖励
DayFirstT int // 每日未首次触发次数 DayFirstT int // 每日未首次触发次数
Trigger int // 未触发次数 Trigger int // 未触发次数
TriggerTime int64 // 触发时间 TriggerTime int64 // 触发时间
HasVisit map[int]int64 // 今日已拜访的玩家 HasVisit map[int]int64 // 今日已拜访的玩家
Target int // 拜访的目标 Target int // 拜访的目标
GameId int // 游戏ID GameId int // 游戏ID
GameReward map[int]*item.Item // 游戏奖励 GameReward map[int]*item.Item // 游戏奖励
GameStatus int // 游戏状态 GameStatus int // 游戏状态
GameInfo map[int]interface{} // 游戏信息 GameInfo map[int]interface{} // 游戏信息
Exclude bool // 是否排除 Exclude bool // 是否排除
LoseItem []*item.Item // 失去的物品 LoseItem []*item.Item // 失去的物品
ChipList []*ChipInfo // 碎片列表 ChipList []*ChipInfo // 碎片列表
Flip map[int]int // 翻牌 Flip map[int]int // 翻牌
FlipReward []*item.Item // 翻牌奖励 FlipReward []*item.Item // 翻牌奖励
WorkOutline int // 是否离线 WorkOutline int // 是否离线
LastFlip int // 上次翻牌奖励档次 LastFlip int // 上次翻牌奖励档次
NoFlip int // 连续未获取最高翻牌奖励次数 NoFlip int // 连续未获取最高翻牌奖励次数
TodayFlip bool // 今日是否已获得最高档奖励 TodayFlip bool // 今日是否已获得最高档奖励
JackpotNum int // 每日转盘数量 JackpotNum int // 每日转盘数量
Upvote int // 收到点赞次数 Upvote int // 收到点赞次数
UpvoteList []int // 点赞列表 UpvoteList []int // 点赞列表
RoomPoint int // 房间点数 RoomPoint int // 房间点数
UnlockList map[int]int64 // 解锁 UnlockList map[int]int64 // 解锁
DailyTask map[int]*DailyTask // 每日任务 DailyTask map[int]*DailyTask // 每日任务
DailyTaskReward []int // 每日任务奖励 DailyTaskReward []int // 每日任务奖励
Physiology map[int]*Physiology Physiology map[int]*Physiology
InteractNum int // 互动次数 InteractNum int // 互动次数
RevengeUid int64 // 复仇Uid RevengeUid int64 // 复仇Uid
FilterVisitor bool // 是否过滤访客
TodayVisitedUsers []int // 今日已拜访过的用户
} }
type DailyTask struct { type DailyTask struct {
@ -189,6 +191,7 @@ func (p *PlayroomMod) ZeroUpdate() {
p.JackpotNum = playroomCfg.GetJackpotNum() p.JackpotNum = playroomCfg.GetJackpotNum()
p.UpvoteList = make([]int, 0) p.UpvoteList = make([]int, 0)
p.DailyTaskReward = make([]int, 0) p.DailyTaskReward = make([]int, 0)
p.TodayVisitedUsers = make([]int, 0)
p.InitDailyTask() p.InitDailyTask()
} }
@ -280,6 +283,10 @@ func (p *PlayroomMod) GetHasVisit() map[int]int64 {
return p.HasVisit return p.HasVisit
} }
func (p *PlayroomMod) GetTodayVisitedUsers() []int {
return p.TodayVisitedUsers
}
func (p *PlayroomMod) GetMood() map[int]int { func (p *PlayroomMod) GetMood() map[int]int {
Mood := make(map[int]int) Mood := make(map[int]int)
for k, v := range p.MoodInfo { for k, v := range p.MoodInfo {
@ -459,6 +466,7 @@ func (p *PlayroomMod) AddDress(Id int) {
} }
func (p *PlayroomMod) ResetGame() { func (p *PlayroomMod) ResetGame() {
p.TodayVisitedUsers = append(p.TodayVisitedUsers, p.Target)
p.Target = 0 p.Target = 0
p.Status = STATUS_IDLE p.Status = STATUS_IDLE
p.GameId = 0 p.GameId = 0