修改playroom bug

This commit is contained in:
hahwu 2024-12-12 10:36:12 +08:00
parent f4268d781a
commit a020d44b5c
9 changed files with 116 additions and 15 deletions

View File

@ -377,6 +377,7 @@ func (ad *GameLogic) GetSimplePlayerByUid(Id int) *PlayerSimpleData {
Idstr := strconv.Itoa(Id) Idstr := strconv.Itoa(Id)
Value, _ := db.RedisGetKey(Idstr) Value, _ := db.RedisGetKey(Idstr)
player := &PlayerSimpleData{} player := &PlayerSimpleData{}
player.Playroom = make(map[int]int)
player.Uid = Id player.Uid = Id
if Value == "" { if Value == "" {
p := new(Player) p := new(Player)

View File

@ -150,5 +150,24 @@ func LimitedTimePlayroomTrigger(p *Player, Id int) {
p.SendClientRes() p.SendClientRes()
}, "Playroom") }, "Playroom")
} }
}
func LimitedTimePlayroomWorkTrigger(p *Player) {
PlayroomMod := p.PlayMod.getPlayroomMod()
EndTime := PlayroomMod.Endtime
Now := GoUtil.Now()
if EndTime > 0 && EndTime <= Now {
PlayroomMod.ResetWork()
p.PlayMod.save()
PlayroomBackData(p)
p.SendClientRes()
return
}
if EndTime > 0 {
NextSecond := EndTime - GoUtil.Now()
p.CallEvent(time.Duration(NextSecond)*time.Second, func() {
LimitedTimePlayroomWorkTrigger(p)
p.SendClientRes()
}, "PlayroomWork")
}
} }

View File

@ -344,6 +344,7 @@ func (p *Player) Login() {
LimitedTimePlayroomTrigger(p, playroom.MOOD_TYPE_ENTER) LimitedTimePlayroomTrigger(p, playroom.MOOD_TYPE_ENTER)
LimitedTimePlayroomTrigger(p, playroom.MOOD_TYPE_FOOD) LimitedTimePlayroomTrigger(p, playroom.MOOD_TYPE_FOOD)
LimitedTimePlayroomTrigger(p, playroom.MOOD_TYPE_CLEAN) LimitedTimePlayroomTrigger(p, playroom.MOOD_TYPE_CLEAN)
LimitedTimePlayroomWorkTrigger(p)
ActivityLogin(p) ActivityLogin(p)
p.PlayMod.getCardMod().Login(G_GameLogicPtr.SeverInfo.OpenTime) p.PlayMod.getCardMod().Login(G_GameLogicPtr.SeverInfo.OpenTime)
} }
@ -714,6 +715,10 @@ func (p *Player) GetSimpleData(Uid int, simple *PlayerSimpleData) error {
simple.Login = int64(Base.Data.LoginTime) simple.Login = int64(Base.Data.LoginTime)
simple.Loginout = int64(Base.Data.LogoutTime) simple.Loginout = int64(Base.Data.LogoutTime)
simple.FaceBook = Base.Data.FaceBookId simple.FaceBook = Base.Data.FaceBookId
simple.FaceBookPic = p.PlayMod.getBaseMod().FacebookUrl
simple.Playroom = p.PlayMod.getPlayroomMod().Room
simple.Chess = p.PlayMod.getChessMod().GetChessList()
simple.WorkStart = p.PlayMod.getPlayroomMod().Starttime
return nil return nil
} }
@ -732,6 +737,7 @@ func (p *Player) UpdateUserInfo() {
simple.FaceBookPic = p.PlayMod.getBaseMod().FacebookUrl simple.FaceBookPic = p.PlayMod.getBaseMod().FacebookUrl
simple.Playroom = p.PlayMod.getPlayroomMod().Room simple.Playroom = p.PlayMod.getPlayroomMod().Room
simple.Chess = p.PlayMod.getChessMod().GetChessList() simple.Chess = p.PlayMod.getChessMod().GetChessList()
simple.WorkStart = p.PlayMod.getPlayroomMod().Starttime
value, _ := json.Marshal(simple) value, _ := json.Marshal(simple)
IdStr := strconv.Itoa(int(p.M_DwUin)) IdStr := strconv.Itoa(int(p.M_DwUin))
db.RedisSetKey(IdStr, string(value), 0) db.RedisSetKey(IdStr, string(value), 0)

View File

@ -221,6 +221,7 @@ func handle(p *Player, m *msg.Msg) error {
p.HandleLoseItem(Items, "") p.HandleLoseItem(Items, "")
} else { } else {
PlayroomMod.Lose(Items) PlayroomMod.Lose(Items)
p.PushClientRes(PlayroomMod.NotifyLose())
} }
} }
return nil return nil
@ -476,6 +477,7 @@ func PlayroomOrderTrigger(p *Player) error {
} }
PlayroomMod := p.PlayMod.getPlayroomMod() PlayroomMod := p.PlayMod.getPlayroomMod()
PlayroomMod.CreateOrderReward(Star, p.PlayMod.getItemMod()) PlayroomMod.CreateOrderReward(Star, p.PlayMod.getItemMod())
PlayroomBackData(p)
p.PlayMod.save() p.PlayMod.save()
return nil return nil
} }
@ -493,15 +495,7 @@ func PlayroomBackData(p *Player) {
if ps == nil { if ps == nil {
continue continue
} }
if FriendMod.CheckFriend(k) { if !FriendMod.CheckFriend(k) {
FriendList = append(FriendList, &proto.FriendRoom{
Uid: int32(k),
Name: ps.Name,
Face: int32(ps.Face),
Avatar: int32(ps.Avatar),
Times: int32(v.Times),
})
} else {
Opponent = append(Opponent, &proto.RoomOpponent{ Opponent = append(Opponent, &proto.RoomOpponent{
Uid: int32(k), Uid: int32(k),
Name: ps.Name, Name: ps.Name,
@ -511,6 +505,21 @@ func PlayroomBackData(p *Player) {
}) })
} }
} }
Friend := FriendMod.GetFriendList()
for _, v := range Friend {
ps := G_GameLogicPtr.GetSimplePlayerByUid(v)
if ps == nil {
continue
}
Times, _ := PlayroomMod.GetVisitorInfo(v)
FriendList = append(FriendList, &proto.FriendRoom{
Uid: int32(v),
Name: ps.Name,
Face: int32(ps.Face),
Avatar: int32(ps.Avatar),
Times: int32(Times),
})
}
r.Opponent = Opponent r.Opponent = Opponent
r.Friend = FriendList r.Friend = FriendList
Collect := make([]int32, 0) Collect := make([]int32, 0)
@ -534,12 +543,18 @@ func PlayroomVisit(p *Player, Uid int) {
PlayroomMod := p.PlayMod.getPlayroomMod() PlayroomMod := p.PlayMod.getPlayroomMod()
r := &proto.ResPlayroomInfo{} r := &proto.ResPlayroomInfo{}
PlayerData := G_GameLogicPtr.GetSimplePlayerByUid(Uid) PlayerData := G_GameLogicPtr.GetSimplePlayerByUid(Uid)
Now := GoUtil.Now()
Work := false
if PlayerData.WorkStart > 0 && PlayerData.WorkStart+86400 > Now {
Work = true
}
r.Uid = int32(Uid) r.Uid = int32(Uid)
r.Name = PlayerData.Name r.Name = PlayerData.Name
r.Face = int32(PlayerData.Face) r.Face = int32(PlayerData.Face)
r.Avatar = int32(PlayerData.Avatar) r.Avatar = int32(PlayerData.Avatar)
r.Playroom = GoUtil.MapIntToInt32(PlayerData.Playroom) r.Playroom = GoUtil.MapIntToInt32(PlayerData.Playroom)
r.GameId = int32(PlayroomMod.GameId) r.GameId = int32(PlayroomMod.GameId)
r.Defense = Work
Items := make(map[int32]*proto.ItemInfo, 0) Items := make(map[int32]*proto.ItemInfo, 0)
for k, v := range PlayroomMod.GameReward { for k, v := range PlayroomMod.GameReward {
Items[int32(k)] = &proto.ItemInfo{ Items[int32(k)] = &proto.ItemInfo{
@ -628,6 +643,9 @@ func EmitRetireTrigger1(p *Player) {
EmitId := make(map[string]struct{}, 0) EmitId := make(map[string]struct{}, 0)
for _, v := range EmitList { for _, v := range EmitList {
Emit_Id := mergeDataCfg.GetEmitId(v) Emit_Id := mergeDataCfg.GetEmitId(v)
if Emit_Id == "" {
continue
}
EmitId[Emit_Id] = struct{}{} EmitId[Emit_Id] = struct{}{}
} }
EmitId1 := make([]string, 0) EmitId1 := make([]string, 0)

View File

@ -2738,6 +2738,12 @@ func ReqPlayroomInfo(args []interface{}) error {
if req.Uid == 0 { if req.Uid == 0 {
Targer = PlayroomMod.GetTarget() Targer = PlayroomMod.GetTarget()
} }
if req.Uid == -1 {
Targer = GetVisitorPlayer(player)
}
if Targer == 0 {
return fmt.Errorf("ReqPlayroomInfo no target")
}
PlayerData := G_GameLogicPtr.GetSimplePlayerByUid(Targer) PlayerData := G_GameLogicPtr.GetSimplePlayerByUid(Targer)
PlayroomMod.SetTarget(Targer) PlayroomMod.SetTarget(Targer)
if PlayerData.Loginout < GoUtil.Now()-300 { if PlayerData.Loginout < GoUtil.Now()-300 {
@ -2905,7 +2911,8 @@ func ReqPlayroomSelectReward(args []interface{}) error {
func ReqPlayroomLose(args []interface{}) error { func ReqPlayroomLose(args []interface{}) error {
_, player, _ := ParseArgs(args) _, player, _ := ParseArgs(args)
PlayroomMod := player.PlayMod.getPlayroomMod() PlayroomMod := player.PlayMod.getPlayroomMod()
PlayroomMod.ResetGame() PlayroomMod.ResetLose()
player.PushClientRes(PlayroomMod.NotifyLose())
return nil return nil
} }
@ -2923,6 +2930,11 @@ func ReqPlayroomWork(args []interface{}) error {
}) })
return err return err
} }
// 开始工作 设置定时器
if Items != nil {
LimitedTimePlayroomWorkTrigger(player)
player.UpdateUserInfo()
}
err = player.HandleItem(Items, "playroomWork") err = player.HandleItem(Items, "playroomWork")
if err != nil { if err != nil {
player.SendErrClienRes(&msg.ResPlayroomWork{ player.SendErrClienRes(&msg.ResPlayroomWork{
@ -3016,7 +3028,12 @@ func ReqPlayroomFlip(args []interface{}) error {
}) })
return err return err
} }
err = player.HandleItem(Items, "playroomFlip") Items1 := Items
LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod()
if LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_PET_THIEF) {
Items1 = item.Merge(Items1, Items1)
}
err = player.HandleItem(Items1, "playroomFlip")
if err != nil { if err != nil {
player.SendErrClienRes(&msg.ResPlayroomFlip{ player.SendErrClienRes(&msg.ResPlayroomFlip{
Code: msg.RES_CODE_FAIL, Code: msg.RES_CODE_FAIL,

View File

@ -14,6 +14,7 @@ type PlayerSimpleData struct {
FaceBookPic string FaceBookPic string
Playroom map[int]int Playroom map[int]int
Chess []int Chess []int
WorkStart int64
} }
type VarGoldCard struct { type VarGoldCard struct {

View File

@ -57,9 +57,6 @@ func (cb *ChessBorad) InitData() {
cb.ChessBag.List[i] = ChessBagGrid{} cb.ChessBag.List[i] = ChessBagGrid{}
} }
} }
if cb.RetireChessMap == nil {
cb.RetireChessMap = make(map[string][]int)
}
} }
func (cb *ChessBorad) ver() { func (cb *ChessBorad) ver() {
@ -76,6 +73,15 @@ func (cb *ChessBorad) ver() {
if cb.ChessMap == nil { if cb.ChessMap == nil {
cb.ChessMap = make(map[string]int32) cb.ChessMap = make(map[string]int32)
} }
if cb.RetireChessMap == nil {
cb.RetireChessMap = make(map[string][]int)
}
if cb.Retire == nil {
cb.Retire = make(map[string]int)
}
if cb.Honor == nil {
cb.Honor = make(map[int]int)
}
} }
// 棋子合成 // 棋子合成
@ -228,6 +234,9 @@ func (cb *ChessBorad) GetEmitList() []int {
result := make([]int, 0, len(cb.EmitList)) result := make([]int, 0, len(cb.EmitList))
for k, v := range cb.EmitList { for k, v := range cb.EmitList {
EmitID := mergeDataCfg.GetEmitId(k) EmitID := mergeDataCfg.GetEmitId(k)
if EmitID == "" {
continue
}
if cb.Retire[EmitID] == 2 { if cb.Retire[EmitID] == 2 {
continue continue
} }

View File

@ -98,6 +98,13 @@ func (f *FriendMod) CheckApply(id int) bool {
func (f *FriendMod) GetFriendNum() int { func (f *FriendMod) GetFriendNum() int {
return len(f.FriendList) return len(f.FriendList)
} }
func (f *FriendMod) GetFriendList() []int {
var list []int
for k, _ := range f.FriendList {
list = append(list, k)
}
return list
}
func (f *FriendMod) AddFriendApply(Uid int) { func (f *FriendMod) AddFriendApply(Uid int) {
f.ApplyList[Uid] = GoUtil.Now() f.ApplyList[Uid] = GoUtil.Now()

View File

@ -256,6 +256,10 @@ func (p *PlayroomMod) ResetGame() {
p.GameReward = make(map[int]*item.Item) p.GameReward = make(map[int]*item.Item)
} }
func (p *PlayroomMod) ResetLose() {
p.LoseItem = make([]*item.Item, 0)
}
func (p *PlayroomMod) SetGameReward(Chess1, Chess2, Star int) { func (p *PlayroomMod) SetGameReward(Chess1, Chess2, Star int) {
p.GameReward[1] = &item.Item{Id: Chess1, Num: 1} p.GameReward[1] = &item.Item{Id: Chess1, Num: 1}
p.GameReward[2] = &item.Item{Id: Chess2, Num: 1} p.GameReward[2] = &item.Item{Id: Chess2, Num: 1}
@ -290,6 +294,19 @@ func (p *PlayroomMod) Rest() {
p.WorkStatus = 2 p.WorkStatus = 2
} }
func (p *PlayroomMod) ResetWork() {
p.WorkStatus = 0
p.Starttime = 0
p.Endtime = 0
}
func (p *PlayroomMod) GetVisitorInfo(Id int) (int, int64) {
v, ok := p.Visitor[Id]
if !ok {
return 0, 0
}
return v.Times, v.Time
}
func (p *PlayroomMod) Draw() (int, []*item.Item, error) { func (p *PlayroomMod) Draw() (int, []*item.Item, error) {
if p.AllMood < 100 { if p.AllMood < 100 {
return 0, nil, fmt.Errorf("Draw AllMood < 100") return 0, nil, fmt.Errorf("Draw AllMood < 100")
@ -307,6 +324,12 @@ func (p *PlayroomMod) NotifyWork() *msg.NotifyPlayroomWork {
} }
} }
func (p *PlayroomMod) NotifyLose() *msg.NotifyPlayroomLose {
return &msg.NotifyPlayroomLose{
LoseItem: item.ItemToMsg(p.LoseItem),
}
}
func (p *PlayroomMod) NotifyMood() *msg.NotifyPlayroomMood { func (p *PlayroomMod) NotifyMood() *msg.NotifyPlayroomMood {
Mood := make(map[int32]int32, 0) Mood := make(map[int32]int32, 0)
for k, v := range p.MoodInfo { for k, v := range p.MoodInfo {