Merge remote-tracking branch 'origin/develop' into dev_slots

This commit is contained in:
tomas 2024-09-18 09:06:28 +08:00
commit 984a501087
9 changed files with 42 additions and 350 deletions

View File

@ -2130,6 +2130,7 @@ func (this *TienLenSceneData) SaveCustomLog() {
StartTs: this.GameStartTime.Unix(),
EndTs: time.Now().Unix(),
State: state,
Creator: this.GetCreator(),
}
for snid := range this.BilledList {
var items []*model.Item

View File

@ -67,7 +67,7 @@ func processConnMessageQueue(queue *ConnMessageQueue) {
}
}
// 移动
// 移动 1-前 2-后 3-左 4-右 5-投币
func SMDollMachinePerateHandler(session *netlib.Session, packetId int, data interface{}) error {
fmt.Println("SMDollMachinePerateHandler %v", data)
msg, ok := data.(*machine.SMDollMachineoPerate)
@ -86,15 +86,6 @@ func SMDollMachinePerateHandler(session *netlib.Session, packetId int, data inte
switch msg.Perate {
case 1:
//向前移动
f1 := []func(){
func() { machinedoll.Backward(conn) },
}
f2 := []func(){
func() { machinedoll.BackwardStop(conn) },
}
Process(conn, f1, f2)
case 2:
//向后移动
f1 := []func(){
func() { machinedoll.Forward(conn) },
@ -103,16 +94,16 @@ func SMDollMachinePerateHandler(session *netlib.Session, packetId int, data inte
func() { machinedoll.ForwardStop(conn) },
}
Process(conn, f1, f2)
case 3:
//向移动
case 2:
//向移动
f1 := []func(){
func() { machinedoll.Left(conn) },
func() { machinedoll.Backward(conn) },
}
f2 := []func(){
func() { machinedoll.LeftStop(conn) },
func() { machinedoll.BackwardStop(conn) },
}
Process(conn, f1, f2)
case 4:
case 3:
//向右移动
f1 := []func(){
func() { machinedoll.Right(conn) },
@ -121,6 +112,16 @@ func SMDollMachinePerateHandler(session *netlib.Session, packetId int, data inte
func() { machinedoll.RightStop(conn) },
}
Process(conn, f1, f2)
case 4:
//向左移动
f1 := []func(){
func() { machinedoll.Left(conn) },
}
f2 := []func(){
func() { machinedoll.LeftStop(conn) },
}
Process(conn, f1, f2)
case 5:
//投币
conn := machinedoll.MachineMgr.CreateConn(int(msg.GetId()))

View File

@ -133,48 +133,6 @@ func (this *MachineManager) Update() {
pack := &machine.MSDollMachineHeartBeat{}
pack.TimeStamp = time.Now().UnixMilli()
SendToGameServer(int(machine.DollMachinePacketID_Packet_MSDollMachineHeartBeat), pack)
/* var delConn []*Conn
task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
for _, v := range this.ConnMap {
_, err := v.Write([]byte("heartbeat"))
if err != nil {
delConn = append(delConn, v)
v.Close()
fmt.Println("断开连接:%v", v.Addr)
this.UpdateToGameServer(v, 0)
}
}
return nil
}), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) {
for _, v := range delConn {
delete(this.ConnMap, v.Id)
this.DelConnMap[v.Id] = v.Addr
}
// 重连
var delIds []*Conn
task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
for id, addr := range this.DelConnMap {
conn, err := net.DialTimeout("tcp", addr, 5*time.Second)
if err != nil {
continue
}
fmt.Println("娃娃机重连成功addr = %v", addr)
delIds = append(delIds, &Conn{
Id: id,
Conn: conn,
Addr: addr,
})
}
return nil
}), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) {
for _, v := range delIds {
this.ConnMap[v.Id] = v
delete(this.DelConnMap, v.Id)
this.UpdateToGameServer(v, 1)
}
})).StartByFixExecutor(this.ModuleName())
})).StartByFixExecutor(this.ModuleName())*/
}
func (this *MachineManager) Shutdown() {

View File

@ -28,6 +28,7 @@ type CustomLog struct {
CostType int32 // 付费方式 1AA 2房主
Voice int32 // 是否开启语音 1开启
RoomId int32 // 房间id
Creator int32 // 创建者id
SnId []PlayerInfo // 所有玩家
List []RoundInfo // 对局记录
StartTs, EndTs int64 // 开始,结束时间

View File

@ -212,7 +212,8 @@ func (this *CSLoginHandler) Process(s *netlib.Session, packetid int, data interf
// lss 其它连接
lss := LoginStateMgrSington.LoginFinish(csl.GetUsername(), csl.GetPlatform(), sid, ls.acc, tagkey)
player := PlayerMgrSington.GetPlayerBySnId(ls.acc.SnId)
if len(lss) > 0 && (player != nil && (player.scene != nil || player.thrscene != 0)) {
waitMatch, _ := TournamentMgr.IsMatchWaiting(player.Platform, player.SnId)
if len(lss) > 0 && (player != nil && (player.scene != nil || player.thrscene != 0 || waitMatch || TournamentMgr.IsMatching(player.SnId))) {
sendSCLogin(login_proto.OpResultCode_OPRC_LoginOtherPlace)
sendSCDisconnect(common.KickReason_Logining)
return nil

View File

@ -307,13 +307,20 @@ func (this *LoginStateMgr) Init() {
func (this *LoginStateMgr) Update() {
// 定时清理已经登出的账号数据
curTs := time.Now().Unix()
for name, s := range this.statesByPlayer {
var delAcc []*AccLoginState
for _, s := range this.statesByPlayer {
if s == nil {
continue
}
if len(s.lss) == 0 && curTs-s.lastLogoutTs > int64(model.GameParamData.LoginStateCacheSec) {
if s != nil && s.acc != nil {
this.DeleteAccount(name, s)
if s.acc != nil {
delAcc = append(delAcc, s)
}
}
}
for _, s := range delAcc {
this.DeleteAccount(s.acc.AccountId.Hex(), s)
}
}
func (this *LoginStateMgr) Shutdown() {

View File

@ -437,6 +437,7 @@ func (this *Player) OnRehold() {
FriendUnreadMgrSington.CheckSendFriendUnreadData(this.Platform, this.SnId)
if !this.IsRob {
TournamentMgr.Quit(this.Platform, this.SnId) // 比赛没有开始,退赛
this.SendJackPotInit()
PlayerOnlineSington.Check = true

View File

@ -644,293 +644,6 @@ func (this *PlayerMgr) EndPlayerLoading(accid string) int64 {
return 0
}
//func PlayerRankGe(p1, p2 *Player, n int) bool {
// switch n {
// case 0:
// if p1.TotalCoin == p2.TotalCoin {
// return p1.SnId < p2.SnId
// } else {
// return p1.TotalCoin > p2.TotalCoin
// }
// case 1:
// if p1.CoinPayTotal == p2.CoinPayTotal {
// return p1.SnId < p2.SnId
// } else {
// return p1.CoinPayTotal > p2.CoinPayTotal
// }
// case 2:
// if p1.CoinExchangeTotal == p2.CoinExchangeTotal {
// return p1.SnId < p2.SnId
// } else {
// return p1.CoinExchangeTotal > p2.CoinExchangeTotal
// }
// case 3:
// a := p1.Coin + p1.SafeBoxCoin - p1.CoinPayTotal
// b := p2.Coin + p2.SafeBoxCoin - p2.CoinPayTotal
// if a == b {
// return p1.SnId < p2.SnId
// } else {
// return a > b
// }
//
// }
// return false
//}
// func (this *PlayerMgr) GetRank() map[string][]*model.Rank {
// ret := make(map[string][]*model.Rank)
// ls := make(map[string]*list.List)
//
// platforms := PlatformMgrSingleton.Platforms
// for p := range platforms {
// ret[p] = make([]*model.Rank, 0)
// ls[p] = list.New()
// }
//
// for _, player := range this.players {
// if player.IsRob {
// continue
// }
//
// p := player.PlayerData.Platform
// if _, ok := platforms[p]; !ok {
// continue
// }
//
// l := ls[p]
// for n := l.Front(); n != nil; n = n.Next() {
// if np, ok := n.Value.(*Player); ok {
// if PlayerRankGe(player, np) {
// l.InsertBefore(player, n)
// goto CHECK
// }
// }
// //else {
// // logger.Logger.Warnf("PlayerMgr.GetRank n.Value.(*Player) fail")
// // continue
// //}
// }
//
// l.PushBack(player)
// CHECK:
// if l.Len() > model.MAX_RANK_COUNT {
// l.Remove(l.Back())
// }
// }
//
// for p := range platforms {
// l := ls[p]
// for n := l.Front(); n != nil; n = n.Next() {
// if np, ok := n.Value.(*Player); ok {
// ret[p] = append(ret[p], &model.Rank{
// SnId: np.PlayerData.SnId,
// Name: np.PlayerData.Name,
// Head: np.PlayerData.Head,
// VIP: np.PlayerData.VIP,
// TotalCoin: np.PlayerData.TotalCoin,
// })
// }
// }
// }
//
// return ret
// }
//func (this *PlayerMgr) GetAssetRank(platform string) []*model.Rank {
// ret := make([]*model.Rank, 0, model.MAX_RANK_COUNT)
// l := list.New()
//
// for _, player := range this.players {
// if player.IsRob {
// continue
// }
//
// if player.PlayerData.Platform != platform {
// continue
// }
//
// for n := l.Front(); n != nil; n = n.Next() {
// if np, ok := n.Value.(*Player); ok {
// if PlayerRankGe(player, np, 0) {
// l.InsertBefore(player, n)
// goto CHECK
// }
// }
// }
//
// l.PushBack(player)
// CHECK:
// if l.Len() > model.MAX_RANK_COUNT {
// l.Remove(l.Back())
// }
// }
//
// for n := l.Front(); n != nil; n = n.Next() {
// if np, ok := n.Value.(*Player); ok {
// ret = append(ret, &model.Rank{
// SnId: np.PlayerData.SnId,
// Name: np.PlayerData.Name,
// Head: np.PlayerData.Head,
// VIP: np.PlayerData.VIP,
// TotalCoin: np.PlayerData.TotalCoin,
// })
// }
// }
//
// return ret
//}
//func (this *PlayerMgr) GetRechargeLists(platform string) []*model.Rank {
// ret := make([]*model.Rank, 0, model.MAX_RANK_COUNT)
// l := list.New()
//
// for _, player := range this.players {
// if player.IsRob {
// continue
// }
//
// if player.PlayerData.Platform != platform {
// continue
// }
//
// for n := l.Front(); n != nil; n = n.Next() {
// if np, ok := n.Value.(*Player); ok {
// if PlayerRankGe(player, np, 1) {
// l.InsertBefore(player, n)
// goto CHECK
// }
// }
// }
//
// l.PushBack(player)
// CHECK:
// if l.Len() > model.MAX_RANK_COUNT {
// l.Remove(l.Back())
// }
// }
//
// for n := l.Front(); n != nil; n = n.Next() {
// if np, ok := n.Value.(*Player); ok {
// ret = append(ret, &model.Rank{
// SnId: np.PlayerData.SnId,
// Name: np.PlayerData.Name,
// Head: np.PlayerData.Head,
// VIP: np.PlayerData.VIP,
// TotalCoin: np.PlayerData.CoinPayTotal,
// })
// }
// }
//
// return ret
//}
//func (this *PlayerMgr) GetExchangeLists(platform string) []*model.Rank {
// ret := make([]*model.Rank, 0, model.MAX_RANK_COUNT)
// l := list.New()
//
// for _, player := range this.players {
// if player.IsRob {
// continue
// }
//
// if player.PlayerData.Platform != platform {
// continue
// }
//
// for n := l.Front(); n != nil; n = n.Next() {
// if np, ok := n.Value.(*Player); ok {
// if PlayerRankGe(player, np, 2) {
// l.InsertBefore(player, n)
// goto CHECK
// }
// }
// }
//
// l.PushBack(player)
// CHECK:
// if l.Len() > model.MAX_RANK_COUNT {
// l.Remove(l.Back())
// }
// }
//
// for n := l.Front(); n != nil; n = n.Next() {
// if np, ok := n.Value.(*Player); ok {
// ret = append(ret, &model.Rank{
// SnId: np.PlayerData.SnId,
// Name: np.PlayerData.Name,
// Head: np.PlayerData.Head,
// VIP: np.PlayerData.VIP,
// TotalCoin: np.PlayerData.CoinExchangeTotal,
// })
// }
// }
//
// return ret
//}
//func (this *PlayerMgr) GetProfitLists(platform string) []*model.Rank {
// ret := make([]*model.Rank, 0, model.MAX_RANK_COUNT)
// l := list.New()
//
// for _, player := range this.players {
// if player.IsRob {
// continue
// }
//
// if player.PlayerData.Platform != platform {
// continue
// }
//
// for n := l.Front(); n != nil; n = n.Next() {
// if np, ok := n.Value.(*Player); ok {
// if PlayerRankGe(player, np, 3) {
// l.InsertBefore(player, n)
// goto CHECK
// }
// }
// }
//
// l.PushBack(player)
// CHECK:
// if l.Len() > model.MAX_RANK_COUNT {
// l.Remove(l.Back())
// }
// }
//
// for n := l.Front(); n != nil; n = n.Next() {
// if np, ok := n.Value.(*Player); ok {
// ret = append(ret, &model.Rank{
// SnId: np.PlayerData.SnId,
// Name: np.PlayerData.Name,
// Head: np.PlayerData.Head,
// VIP: np.PlayerData.VIP,
// //TotalCoin: np.PlayerData.ProfitCoin,
// })
// }
// }
//
// return ret
//}
//func (this *PlayerMgr) DeletePlayerByPlatform(platform string) {
// var dels []*Player
// for _, p := range this.players {
// if p != nil && p.Platform == platform {
// p.Kickout(common.KickReason_Disconnection)
// dels = append(dels, p)
// }
// }
//
// for _, p := range dels {
// if p != nil {
// p.isDelete = true
// if p.scene == nil {
// this.DelPlayer(p.SnId)
// }
// }
// }
//}
func (this *PlayerMgr) StatsOnline() model.PlayerOLStats {
stats := model.PlayerOLStats{
PlatformStats: make(map[string]*model.PlayerStats),

View File

@ -507,10 +507,19 @@ func (this *Tournament) IsMatchWaiting(platform string, snId int32) (bool, int32
// 未使用机器人
for k, v := range this.signupPlayers[platform] {
if v.signup != nil {
_, ok := v.signup[snId]
if _, ok := v.signup[snId]; ok {
return ok, k
}
}
}
for k, v := range this.matches {
for _, vv := range v {
if _, ok := vv.TmPlayer[snId]; ok {
return true, k
}
}
}
// 使用机器人了
if v, ok := this.singleSignupPlayers[snId]; ok {