diff --git a/gamesrv/fishing/action_fish.go b/gamesrv/fishing/action_fish.go index c59f6b1..ba6210a 100644 --- a/gamesrv/fishing/action_fish.go +++ b/gamesrv/fishing/action_fish.go @@ -149,7 +149,7 @@ func (this *CSFishTargetPacketFactory) CreatePacket() interface{} { if player == nil { logger.Logger.Warn("CSFishViewHandler robot == nil") return nil - //player = base.PlayerMgrSington.GetPlayer(sid) + //player = base.PlayerMgrSington.GetOnlinePlayer(sid) } if player == nil { logger.Logger.Warn("CSFishViewHandler p == nil") @@ -260,7 +260,7 @@ func (this *CSFishFirePranaPacketFactory) CreatePacket() interface{} { /*func (this *CSFishFirePranaHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSFishFirePranaHandler Process recv ", data) if msg, ok := data.(*fishing_proto.CSFirePrana); ok { - player := base.PlayerMgrSington.GetPlayer(sid) + player := base.PlayerMgrSington.GetOnlinePlayer(sid) if player == nil { logger.Logger.Warn("CSFishFirePranaHandler p == nil") return nil diff --git a/util/balancequeue/queue.go b/util/balancequeue/queue.go new file mode 100644 index 0000000..b31465a --- /dev/null +++ b/util/balancequeue/queue.go @@ -0,0 +1,136 @@ +package balancequeue + +import ( + "fmt" + "strings" +) + +// 平衡队列 + +type Element interface { + BalanceQueueHandler() +} + +type elementWrapper struct { + F func() +} + +func (e *elementWrapper) BalanceQueueHandler() { + e.F() +} + +func ElementWrapper(f func()) Element { + return &elementWrapper{F: f} +} + +type group struct { + Array []Element + queuePos int +} + +type groupArray struct { + queue []*group +} + +type BalanceQueue struct { + index int // 循环索引 + groups []*group // 固定的分组,长度不变,每次Update触发一个分组 + tables []*groupArray + pool map[Element]*group +} + +// New 创建一个平衡队列 +// groupNumber 分组数量 +func New(groupNumber int) *BalanceQueue { + ret := &BalanceQueue{ + groups: make([]*group, groupNumber), + tables: make([]*groupArray, 10), // 本身会自动扩容,初始值不是很重要 + pool: make(map[Element]*group), + } + + for i := 0; i < len(ret.tables); i++ { + ret.tables[i] = &groupArray{} + } + // 初始化平衡数组,所有平衡队列容量为0 + for i := 0; i < len(ret.groups); i++ { + ret.groups[i] = &group{queuePos: i} + ret.tables[0].queue = append(ret.tables[0].queue, ret.groups[i]) + } + return ret +} + +func (q *BalanceQueue) String() string { + buf := strings.Builder{} + buf.WriteString("BalanceQueue:\n") + buf.WriteString(fmt.Sprintf("分组数量: %v\n", len(q.groups))) + for k, v := range q.tables { + buf.WriteString(fmt.Sprintf("元素数量%v: 组数量%v ==>", k, len(v.queue))) + for _, vv := range v.queue { + buf.WriteString(fmt.Sprintf("%v ", len(vv.Array))) + } + buf.WriteString("\n") + } + return buf.String() +} + +func (q *BalanceQueue) Update() { + if q.index == len(q.groups) { + q.index = 0 + } + for _, v := range q.groups[q.index].Array { + v.BalanceQueueHandler() + } + q.index++ +} + +func (q *BalanceQueue) Push(e Element) { + if e == nil { + return + } + + if _, ok := q.pool[e]; ok { + return + } + + for k, v := range q.tables { + size := len(v.queue) + if size == 0 { + continue + } + + arr := v.queue[size-1] + if k+1 >= len(q.tables) { + q.tables = append(q.tables, &groupArray{}) + } + q.tables[k+1].queue = append(q.tables[k+1].queue, arr) + q.tables[k].queue = v.queue[:size-1] + arr.queuePos = len(q.tables[k+1].queue) - 1 + arr.Array = append(arr.Array, e) + q.pool[e] = arr + return + } + return +} + +func (q *BalanceQueue) Pop(e Element) { + group, ok := q.pool[e] + if !ok { + return + } + delete(q.pool, e) + count := len(group.Array) + for i := 0; i < count; i++ { + if group.Array[i] == e { + group.Array[i] = group.Array[count-1] + group.Array = group.Array[:count-1] + bqPos := group.queuePos + queCount := len(q.tables[count].queue) + q.tables[count].queue[bqPos] = q.tables[count].queue[queCount-1] + q.tables[count].queue[bqPos].queuePos = bqPos + q.tables[count].queue = q.tables[count].queue[:queCount-1] + q.tables[count-1].queue = append(q.tables[count-1].queue, group) + group.queuePos = len(q.tables[count-1].queue) - 1 + return + } + } +} diff --git a/util/balancequeue/queue_test.go b/util/balancequeue/queue_test.go new file mode 100644 index 0000000..927fa16 --- /dev/null +++ b/util/balancequeue/queue_test.go @@ -0,0 +1,40 @@ +package balancequeue + +import ( + "fmt" + "math/rand" + "testing" + "time" +) + +type A struct { + Name string +} + +func (a *A) BalanceQueueHandler() { + +} + +func TestOne(t *testing.T) { + q := New(5) + + var es []Element + go func() { + for { + q.Update() + fmt.Println(q) + time.Sleep(time.Second) + e := &A{Name: fmt.Sprint(time.Now().Unix())} + es = append(es, e) + q.Push(e) + if rand.Intn(10) > 5 && len(es) >= 2 { + for _, v := range es[:2] { + q.Pop(v) + } + es = es[2:] + } + } + }() + + time.Sleep(time.Minute) +} diff --git a/worldsrv/action_bag.go b/worldsrv/action_bag.go index 61b4d8f..d88eaa8 100644 --- a/worldsrv/action_bag.go +++ b/worldsrv/action_bag.go @@ -24,7 +24,7 @@ import ( func CSBagInfo(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSBagInfoHandler Process recv ", data) if msg, ok := data.(*bag.CSBagInfo); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSBagInfoHandler p == nil") return nil @@ -62,7 +62,7 @@ func CSUpBagInfo(s *netlib.Session, packetid int, data interface{}, sid int64) e return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSUpBagInfoHandler p == nil") return nil @@ -463,7 +463,7 @@ func CSExchangeList(s *netlib.Session, packetid int, data interface{}, sid int64 return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -508,7 +508,7 @@ func CSPropExchange(s *netlib.Session, packetid int, data interface{}, sid int64 return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -605,7 +605,7 @@ func CSDollChange(s *netlib.Session, packetid int, data interface{}, sid int64) if !ok { return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -654,7 +654,7 @@ func CSDollChange(s *netlib.Session, packetid int, data interface{}, sid int64) // 兑换娃娃记录 func CSDollChangeLog(s *netlib.Session, packetid int, data interface{}, sid int64) error { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } diff --git a/worldsrv/action_chat.go b/worldsrv/action_chat.go index 4c5f111..9f41305 100644 --- a/worldsrv/action_chat.go +++ b/worldsrv/action_chat.go @@ -18,7 +18,7 @@ import ( func CSChatMsgHandler(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSChatMsgHandler Process recv ", data) if msg, ok := data.(*chat.CSChatMsg); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSChatMsgHandler p == nil") return nil @@ -107,7 +107,7 @@ func CSChatMsgHandler(s *netlib.Session, packetid int, data interface{}, sid int func CSGetChatLogHandler(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSGetChatLogHandler Process recv ", data) if msg, ok := data.(*chat.CSGetChatLog); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSGetChatLogHandler p == nil") return nil @@ -265,7 +265,7 @@ func CSGetChatLogHandler(s *netlib.Session, packetid int, data interface{}, sid func CSReadChatMsgHandler(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSReadChatMsgHandler Process recv ", data) if msg, ok := data.(*chat.CSReadChatMsg); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSReadChatMsgHandler p == nil") return nil @@ -288,7 +288,7 @@ func CSReadChatMsgHandler(s *netlib.Session, packetid int, data interface{}, sid func CSShieldMsgHandler(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSShieldMsgHandler Process recv ", data) if msg, ok := data.(*chat.CSShieldMsg); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSShieldMsgHandler p == nil") return nil diff --git a/worldsrv/action_coinscene.go b/worldsrv/action_coinscene.go index 02f866b..2402570 100644 --- a/worldsrv/action_coinscene.go +++ b/worldsrv/action_coinscene.go @@ -22,7 +22,7 @@ func (this *CSCoinSceneGetPlayerNumPacketFactory) CreatePacket() interface{} { func (this *CSCoinSceneGetPlayerNumHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSCoinSceneGetPlayerNumHandler Process recv ", data) if msg, ok := data.(*gamehall.CSCoinSceneGetPlayerNum); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p != nil { nums := CoinSceneMgrSingleton.GetPlayerNums(p, msg.GetGameId(), msg.GetGameModel()) pack := &gamehall.SCCoinSceneGetPlayerNum{ @@ -48,7 +48,7 @@ func (this *CSCoinSceneGetPlayerNumHandler) Process(s *netlib.Session, packetid //func (this *CSCoinSceneOpHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { // logger.Logger.Trace("CSCoinSceneOpHandler Process recv ", data) // if msg, ok := data.(*gamehall.CSCoinSceneOp); ok { -// p := PlayerMgrSington.GetPlayer(sid) +// p := PlayerMgrSington.GetOnlinePlayer(sid) // if p != nil { // var ret gamehall.OpResultCode // pack := &gamehall.SCCoinSceneOp{ @@ -271,7 +271,7 @@ func (this *CSCoinSceneGetPlayerNumHandler) Process(s *netlib.Session, packetid //func (this *CSCoinSceneListRoomHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { // logger.Logger.Trace("CSCoinSceneListRoomHandler Process recv ", data) // if msg, ok := data.(*gamehall.CSCoinSceneListRoom); ok { -// p := PlayerMgrSington.GetPlayer(sid) +// p := PlayerMgrSington.GetOnlinePlayer(sid) // if p != nil { // if !CoinSceneMgrSingleton.ListRooms(p, msg.GetId()) { // 场次id // pack := &gamehall.SCCoinSceneListRoom{ diff --git a/worldsrv/action_friend.go b/worldsrv/action_friend.go index 79b9367..bc550d5 100644 --- a/worldsrv/action_friend.go +++ b/worldsrv/action_friend.go @@ -32,7 +32,7 @@ func (this *CSFriendListPacketFactory) CreatePacket() interface{} { func (this *CSFriendListHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSFriendListHandler Process recv ", data) if msg, ok := data.(*friend.CSFriendList); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSFriendListHandler p == nil") return nil @@ -150,7 +150,7 @@ func (this *CSFriendOpPacketFactory) CreatePacket() interface{} { func (this *CSFriendOpHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSFriendOpHandler Process recv ", data) if msg, ok := data.(*friend.CSFriendOp); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSFriendOpHandler p == nil") return nil @@ -225,7 +225,7 @@ func (this *CSQueryPlayerGameLogPacketFactory) CreatePacket() interface{} { func (this *CSQueryPlayerGameLogHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSQueryPlayerGameLogHandler Process recv ", data) if msg, ok := data.(*friend.CSQueryPlayerGameLog); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSQueryPlayerGameLogHandler p == nil") return nil @@ -278,7 +278,7 @@ func (this *CSInviteFriendPacketFactory) CreatePacket() interface{} { func (this *CSInviteFriendHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSInviteFriendHandler Process recv ", data) if msg, ok := data.(*friend.CSInviteFriend); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSInviteFriendHandler p == nil") return nil @@ -396,7 +396,7 @@ func (this *CSInviteFriendOpPacketFactory) CreatePacket() interface{} { func (this *CSInviteFriendOpHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSInviteFriendOpHandler Process recv ", data) if msg, ok := data.(*friend.CSInviteFriendOp); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSInviteFriendOpHandler p == nil") return nil @@ -596,7 +596,7 @@ func (this *CSFuzzyQueryPlayerPacketFactory) CreatePacket() interface{} { func (this *CSFuzzyQueryPlayerHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSFuzzyQueryPlayerHandler Process recv ", data) if msg, ok := data.(*friend.CSFuzzyQueryPlayer); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSFuzzyQueryPlayerHandler p == nil") return nil diff --git a/worldsrv/action_game.go b/worldsrv/action_game.go index 5903580..cee2e80 100644 --- a/worldsrv/action_game.go +++ b/worldsrv/action_game.go @@ -37,7 +37,7 @@ func (this *CSEnterRoomHandler) Process(s *netlib.Session, packetid int, data in return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -212,7 +212,7 @@ func (this *CSReturnRoomPacketFactory) CreatePacket() interface{} { func (this *CSReturnRoomHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSReturnRoomHandler Process recv ", data) if msg, ok := data.(*gamehall.CSReturnRoom); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -297,7 +297,7 @@ func (this *CSQueryRoomInfoHandler) Process(s *netlib.Session, packetid int, dat func (this *CSQueryRoomInfoHandler) ProcessLocalGame(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSQueryRoomInfoHandler Process recv ProcessLocalGame", data) if msg, ok := data.(*gamehall.CSQueryRoomInfo); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSQueryRoomInfoHandler p == nil") return nil @@ -370,7 +370,7 @@ func (this *CSGetGameConfigPacketFactory) CreatePacket() interface{} { func (this *CSGetGameConfigHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSGetGameConfigHandler Process recv ", data) if msg, ok := data.(*gamehall.CSGetGameConfig); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSGetGameConfigHandler p == nil") return nil @@ -433,7 +433,7 @@ func (this *CSEnterGameHandler) ProcessLocal(s *netlib.Session, packetid int, da if !ok { return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -546,7 +546,7 @@ func (this *CSEnterGameHandler) ProcessNormal(s *netlib.Session, packetid int, d if !ok { return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -685,7 +685,7 @@ func (this *CSQuitGamePacketFactory) CreatePacket() interface{} { func (this *CSQuitGameHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSQuitGameHandler Process recv ", data) if msg, ok := data.(*gamehall.CSQuitGame); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p != nil { var ret gamehall.OpResultCode_Game pack := &gamehall.SCQuitGame{ @@ -746,7 +746,7 @@ func (this *CSCreateRoomHandler) ProcessLocalGame(s *netlib.Session, packetid in if !ok { return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -939,7 +939,7 @@ func (this *CSAudienceSitPacketFactory) CreatePacket() interface{} { func (this *CSAudienceSitHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSAudienceSitHandler Process recv ", data) if msg, ok := data.(*gamehall.CSAudienceSit); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSAudienceSitHandler p == nil") return nil @@ -998,7 +998,7 @@ func (this *CSRecordAndNoticeHandler) Process(s *netlib.Session, packetid int, d return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSRecordAndNoticeHandler p == nil") return nil @@ -1085,7 +1085,7 @@ func CSAudienceEnterRoomHandler(s *netlib.Session, packetId int, data interface{ return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -1171,7 +1171,7 @@ func CSRoomConfigHandler(s *netlib.Session, packetId int, data interface{}, sid return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -1189,7 +1189,7 @@ func CSCreatePrivateRoomHandler(s *netlib.Session, packetId int, data interface{ return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -1375,7 +1375,7 @@ func CSGetPrivateRoomListHandler(s *netlib.Session, packetId int, data interface return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -1458,7 +1458,7 @@ func CSTouchTypeHandler(s *netlib.Session, packetId int, data interface{}, sid i return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -1475,7 +1475,7 @@ func CSRoomRecruitHandler(s *netlib.Session, packetId int, data interface{}, sid return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -1505,7 +1505,7 @@ func CSInviteJoinRoomHandler(s *netlib.Session, packetId int, data interface{}, return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } diff --git a/worldsrv/action_hundredscene.go b/worldsrv/action_hundredscene.go index 611c5fb..01e8349 100644 --- a/worldsrv/action_hundredscene.go +++ b/worldsrv/action_hundredscene.go @@ -24,7 +24,7 @@ func (this *CSHundredSceneGetPlayerNumPacketFactory) CreatePacket() interface{} func (this *CSHundredSceneGetPlayerNumHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSHundredSceneGetPlayerNumHandler Process recv ", data) if msg, ok := data.(*gamehall.CSHundredSceneGetPlayerNum); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p != nil { nums := HundredSceneMgrSingleton.GetPlayerNums(p, msg.GetGameId(), msg.GetGameModel()) pack := &gamehall.SCHundredSceneGetPlayerNum{ @@ -52,7 +52,7 @@ func (this *CSHundredSceneOpPacketFactory) CreatePacket() interface{} { func (this *CSHundredSceneOpHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSHundredSceneOpHandler Process recv ", data) if msg, ok := data.(*gamehall.CSHundredSceneOp); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p != nil { var ret gamehall.OpResultCode_Hundred pack := &gamehall.SCHundredSceneOp{ diff --git a/worldsrv/action_login.go b/worldsrv/action_login.go index 9469a81..ac3a013 100644 --- a/worldsrv/action_login.go +++ b/worldsrv/action_login.go @@ -379,7 +379,7 @@ func (this *CSPlatFormPacketFactory) CreatePacket() interface{} { func (this *CSPlatFormHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSPlatFormHandler Process recv ", data) if _, ok := data.(*login_proto.CSPlatFormConfig); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSPlatFormHandler p == nil") return nil @@ -453,7 +453,7 @@ func (this *CSPlatFormHandler) Process(s *netlib.Session, packetid int, data int //func (this *CSBulletionInfoHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { // logger.Logger.Trace("CSBulletionInfoHandler Process recv ", data) // if msg, ok := data.(*login_proto.CSBulletionInfo); ok { -// p := PlayerMgrSington.GetPlayer(sid) +// p := PlayerMgrSington.GetOnlinePlayer(sid) // if p == nil { // logger.Logger.Trace("CSBulletionInfoHandler p == nil ") // return nil @@ -500,7 +500,7 @@ func (this *CSPlatFormHandler) Process(s *netlib.Session, packetid int, data int //func (this *CSCustomerInfoListHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { // logger.Logger.Trace("CSCustomerInfoListHandler Process recv ", data) // if _, ok := data.(*login_proto.CSCustomerInfoList); ok { -// p := PlayerMgrSington.GetPlayer(sid) +// p := PlayerMgrSington.GetOnlinePlayer(sid) // if p == nil { // logger.Logger.Trace("CSBulletionInfoHandler p == nil ") // return nil @@ -608,7 +608,7 @@ func (this *CSGetThrGameCfgPacketFactory) CreatePacket() interface{} { func (this *CSGetThrGameCfgHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSGetThrGameCfgHandler Process recv ", data) if msg, ok := data.(*login_proto.CSGetThrGameCfg); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSGetThrGameCfgHandler p == nil") return nil diff --git a/worldsrv/action_logout.go b/worldsrv/action_logout.go index 82b3851..a41d9ef 100644 --- a/worldsrv/action_logout.go +++ b/worldsrv/action_logout.go @@ -3,6 +3,7 @@ package main import ( "mongo.games.com/game/common" login_proto "mongo.games.com/game/protocol/login" + "mongo.games.com/game/worldsrv/internal" "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/netlib" ) @@ -15,13 +16,15 @@ func SessionLogout(sid int64, drop bool) bool { } ls.state = LoginStateLogout - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p != nil { p.ThirdGameLogout() if drop { p.DropLine() + internal.FirePlayerDropLine(p) } else { p.Logout() + internal.FirePlayerLogouted(p) } } else { logger.Logger.Trace("SessionLogout p == nil") diff --git a/worldsrv/action_lottery.go b/worldsrv/action_lottery.go index d278c13..d93237f 100644 --- a/worldsrv/action_lottery.go +++ b/worldsrv/action_lottery.go @@ -22,7 +22,7 @@ func CSLotteryInfoHandler(s *netlib.Session, packetid int, data interface{}, sid return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } diff --git a/worldsrv/action_message.go b/worldsrv/action_message.go index 8cccbad..8e48702 100644 --- a/worldsrv/action_message.go +++ b/worldsrv/action_message.go @@ -22,7 +22,7 @@ func (this *CSReadMessagePacketFactory) CreatePacket() interface{} { func (this *CSReadMessageHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSReadMessageHandler Process recv ", data) if csMessageRead, ok := data.(*message.CSMessageRead); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSReadMessageHandler p == nil") return nil @@ -47,7 +47,7 @@ func (this *CSDelMessagePacketFactory) CreatePacket() interface{} { func (this *CSDelMessageHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSDelMessageHandler Process recv ", data) if csMessageDel, ok := data.(*message.CSMessageDel); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSDelMessageHandler p == nil") return nil @@ -72,7 +72,7 @@ func (this *CSGetMessageAttachPacketFactory) CreatePacket() interface{} { func (this *CSGetMessageAttachHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSGetMessageAttachHandler Process recv ", data) if csGetMessageAttach, ok := data.(*message.CSGetMessageAttach); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSGetMessageAttachHandler p == nil") return nil @@ -98,7 +98,7 @@ func (this *SCMessageListPacketFactory) CreatePacket() interface{} { func (this *SCMessageListHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Tracef("(this *SCMessageListHandler) Process [%v].", s.GetSessionConfig().Id) if msg, ok := data.(*message.CSMessageList); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) p.SendMessage(msg.GetShowId()) } return nil diff --git a/worldsrv/action_minigame.go b/worldsrv/action_minigame.go index 43dc094..4c4a66a 100644 --- a/worldsrv/action_minigame.go +++ b/worldsrv/action_minigame.go @@ -23,7 +23,7 @@ package main //func (this *CSMNGameEnterHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { // logger.Logger.Trace("CSMNGameEnterHandler Process recv ", data) // if msg, ok := data.(*mngame.CSMNGameEnter); ok { -// p := PlayerMgrSington.GetPlayer(sid) +// p := PlayerMgrSington.GetOnlinePlayer(sid) // if p != nil { // code := MiniGameMgrSington.PlayerEnter(p, msg.GetId()) // pack := &mngame.SCMNGameEnter{ @@ -52,7 +52,7 @@ package main //func (this *CSMNGameLeaveHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { // logger.Logger.Trace("CSMNGameLeaveHandler Process recv ", data) // if msg, ok := data.(*mngame.CSMNGameLeave); ok { -// p := PlayerMgrSington.GetPlayer(sid) +// p := PlayerMgrSington.GetOnlinePlayer(sid) // if p != nil { // code := MiniGameMgrSington.PlayerLeave(p, msg.GetId()) // pack := &mngame.SCMNGameLeave{ @@ -81,7 +81,7 @@ package main //func (this *CSMNGameDispatcherHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { // logger.Logger.Trace("CSMNGameDispatcherHandler Process recv ", data) // if msg, ok := data.(*mngame.CSMNGameDispatcher); ok { -// p := PlayerMgrSington.GetPlayer(sid) +// p := PlayerMgrSington.GetOnlinePlayer(sid) // if p != nil { // MiniGameMgrSington.PlayerMsgDispatcher(p, msg) // } diff --git a/worldsrv/action_pets.go b/worldsrv/action_pets.go index 09ee758..22302c8 100644 --- a/worldsrv/action_pets.go +++ b/worldsrv/action_pets.go @@ -27,7 +27,7 @@ func (this *CSRoleInfoPacketFactory) CreatePacket() interface{} { func (this *CSRoleInfoHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSRoleInfoHandler Process recv ", data) if _, ok := data.(*pets.CSRoleInfo); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSRoleInfoHandler p == nil") return nil @@ -61,7 +61,7 @@ func (this *CSPetInfoPacketFactory) CreatePacket() interface{} { func (this *CSPetInfoHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSPetInfoHandler Process recv ", data) if _, ok := data.(*pets.CSPetInfo); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSPetInfoHandler p == nil") return nil @@ -95,7 +95,7 @@ func (this *CSRisingStarPacketFactory) CreatePacket() interface{} { func (this *CSRisingStarHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSRisingStarHandler Process recv ", data) if msg, ok := data.(*pets.CSRisingStar); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSRisingStarHandler p == nil") return nil @@ -237,7 +237,7 @@ func (this *CSRolePetUseOpPacketFactory) CreatePacket() interface{} { func (this *CSRolePetUseOpHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSRolePetUseOpHandler Process recv ", data) if msg, ok := data.(*pets.CSRolePetUseOp); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSRolePetUseOpHandler p == nil") return nil @@ -294,7 +294,7 @@ func (this *CSRolePetUnlockPacketFactory) CreatePacket() interface{} { func (this *CSRolePetUnlockHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSRolePetUnlockHandler Process recv ", data) if msg, ok := data.(*pets.CSRolePetUnlock); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSRolePetUnlockHandler p == nil") return nil @@ -409,7 +409,7 @@ func (this *CSPetSkillLevelUpPacketFactory) CreatePacket() interface{} { func (this *CSPetSkillLevelUpHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { if msg, ok := data.(*pets.CSPetSkillLevelUp); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSPetSkillLevelUp p == nil") return nil @@ -487,7 +487,7 @@ func CSSkinInfo(s *netlib.Session, packetid int, data interface{}, sid int64) er if !ok { return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSSkinInfo p == nil") return nil @@ -506,7 +506,7 @@ func CSSkinUse(s *netlib.Session, packetid int, data interface{}, sid int64) err if !ok { return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSSkinUse p == nil") return nil @@ -550,7 +550,7 @@ func CSSkinUpgrade(s *netlib.Session, packetid int, data interface{}, sid int64) if !ok { return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSSkinUpgrade p == nil") return nil @@ -696,7 +696,7 @@ func CSSKinUnLock(s *netlib.Session, packetid int, data interface{}, sid int64) if !ok { return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Errorf("CSSKinUnLock p == nil") return nil diff --git a/worldsrv/action_phonelottery.go b/worldsrv/action_phonelottery.go index c78d426..c3f240c 100644 --- a/worldsrv/action_phonelottery.go +++ b/worldsrv/action_phonelottery.go @@ -29,7 +29,7 @@ func (this *CSPhoneLotteryInfoPacketFactory) CreatePacket() interface{} { // 获取抽奖信息 func (this *CSPhoneLotteryInfoHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { if _, ok := data.(*player_proto.CSPhoneLotteryInfo); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) logger.Logger.Trace("客户端请求抽奖信息!snid = ", p.SnId) if p == nil { logger.Logger.Warn("CSPhoneLotteryInfo p == nil") @@ -78,7 +78,7 @@ func (this *CSPhoneLotteryPacketFactory) CreatePacket() interface{} { } func (this *CSPhoneLotteryHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { if msg, ok := data.(*player_proto.CSPhoneLottery); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSPhoneLottery p == nil") return nil @@ -229,7 +229,7 @@ func (this *CSDiamondLotteryInfoPacketFactory) CreatePacket() interface{} { // 获取钻石抽奖信息 func (this *CSDiamondLotteryInfoHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { if _, ok := data.(*player_proto.CSDiamondLotteryInfo); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) logger.Logger.Trace("客户端请求钻石抽奖信息!snid = ", p.SnId) if p == nil { logger.Logger.Warn("CSDiamondLotteryInfo p == nil") @@ -280,7 +280,7 @@ func (this *CSDiamondLotteryPacketFactory) CreatePacket() interface{} { // 玩家钻石抽奖 func (this *CSDiamondLotteryHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { if msg, ok := data.(*player_proto.CSDiamondLottery); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSDiamondLottery p == nil") return nil @@ -440,7 +440,7 @@ func (this *CSDiamondLotteryLuckyAwardPacketFactory) CreatePacket() interface{} // 玩家钻石抽奖保底奖励 func (this *CSDiamondLotteryLuckyAwardHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { if _, ok := data.(*player_proto.CSDiamondLotteryLuckyAward); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSDiamondLotteryLuckyAward p == nil") return nil diff --git a/worldsrv/action_player.go b/worldsrv/action_player.go index 13a91b3..6a3debe 100644 --- a/worldsrv/action_player.go +++ b/worldsrv/action_player.go @@ -47,7 +47,7 @@ func (this *CSInviteCodePlayerPacketFactory) CreatePacket() interface{} { func (this *CSInviteCodePlayerHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSInviteCodePlayerHandler Process recv ", data) if msg, ok := data.(*player_proto.CSPlayerInviteCode); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSInviteCodePlayerHandler p == nil") return nil @@ -151,7 +151,7 @@ func (this *CSPlayerChangeNickHandler) Process(s *netlib.Session, packetid int, //logger.Logger.Trace("CSPlayerChangeNickHandler Process recv ", data) //if msg, ok := data.(*player_proto.CSChangeNick); ok { // //logger.Logger.Trace("修改昵称,获得IP",s.RemoteAddr()) - // p := PlayerMgrSington.GetPlayer(sid) + // p := PlayerMgrSington.GetOnlinePlayer(sid) // if p == nil { // logger.Logger.Warn("CSPlayerChangeNickHandler p == nil") // return nil @@ -272,7 +272,7 @@ func (this *CSPlayerChangeIconPacketFactory) CreatePacket() interface{} { func (this *CSPlayerChangeIconHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSPlayerChangeIconHandler Process recv ", data) if msg, ok := data.(*player_proto.CSPlayerChangeIcon); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSPlayerChangeIconHandler p == nil") return nil @@ -311,7 +311,7 @@ func (this *CSPlayerChangeHeadOutLinePacketFactory) CreatePacket() interface{} { func (this *CSPlayerChangeHeadOutLineHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSPlayerChangeHeadOutLineHandler Process recv ", data) if msg, ok := data.(*player_proto.CSPlayerChangeHeadOutLine); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSPlayerChangeHeadOutLineHandler p == nil") return nil @@ -365,7 +365,7 @@ func (this *CSPlayerChangeSexPacketFactory) CreatePacket() interface{} { func (this *CSPlayerChangeSexHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSPlayerChangeSexHandler Process recv ", data) if msg, ok := data.(*player_proto.CSPlayerChangeSex); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSPlayerChangeSexHandler p == nil") return nil @@ -405,7 +405,7 @@ func (this *CSPlayerChangeSexHandler) Process(s *netlib.Session, packetid int, d //func (this *CSUpgradeAccountHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { // logger.Logger.Trace("CSUpgradeAccountHandler Process recv ", data) // if msg, ok := data.(*player_proto.CSUpgradeAccount); ok { -// p := PlayerMgrSington.GetPlayer(sid) +// p := PlayerMgrSington.GetOnlinePlayer(sid) // // sendPack := func(code player_proto.OpResultCode) { // pack := &player_proto.SCUpgradeAccount{ @@ -582,7 +582,7 @@ func (this *CSBindAlipayPacketFactory) CreatePacket() interface{} { func (this *CSBindAlipayHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSBindAlipayHandler Process recv ", data) if msg, ok := data.(*player_proto.CSBindAlipay); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSBindAlipayHandler p == nil") return nil @@ -712,7 +712,7 @@ func (this *CSBindBankPacketFactory) CreatePacket() interface{} { func (this *CSBindBankHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSBindBankHandler Process recv ", data) if msg, ok := data.(*player_proto.CSBindBank); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSBindBankHandler p == nil") return nil @@ -855,7 +855,7 @@ func (this *CSChangePasswordPacketFactory) CreatePacket() interface{} { func (this *CSChangePasswordHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSChangePasswordHandler Process recv ", data) if msg, ok := data.(*player_proto.CSChangePassword); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSChangePasswordHandler p == nil") return nil @@ -985,7 +985,7 @@ func (this *CSPlayerSafeBoxPacketFactory) CreatePacket() interface{} { func (this *CSPlayerSafeBoxHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSPlayerSafeBoxHandler Process recv ", data) if msg, ok := data.(*player_proto.CSPlayerOpCoin); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSPlayerSafeBoxHandler p == nil") return nil @@ -1128,7 +1128,7 @@ func (this *CSPlayerSafeBoxCoinLogPacketFactory) CreatePacket() interface{} { func (this *CSPlayerSafeBoxCoinLogHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("GetSafeBoxCoinLog Process recv ", data) if _, ok := data.(*player_proto.CSGetSafeBoxCoinLog); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("GetSafeBoxCoinLog p == nil") return nil @@ -1185,7 +1185,7 @@ func (this *CSPlayerSafeBoxCoinLogHandler) Process(s *netlib.Session, packetid i //func (this *CSPlayerGameCoinLogHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { // logger.Logger.Trace("CSPlayerGameCoinLogHandler Process recv ", data) // if _, ok := data.(*player_proto.CSGetGameCoinLog); ok { -// p := PlayerMgrSington.GetPlayer(sid) +// p := PlayerMgrSington.GetOnlinePlayer(sid) // if p == nil { // logger.Logger.Warn("CSPlayerGameCoinLogHandler p == nil") // return nil @@ -1408,7 +1408,7 @@ func (this *CSPlayerRegisterHandler) Process(s *netlib.Session, packetid int, da Plt: acc.Platform, AccId: acc.AccountId.Hex(), NickName: "", - HeadUrl: niceIdMgr.GetRobHeadUrlIdx(), + HeadUrl: GetRobHeadUrlIdx(), }) if pi == nil || tf == false { return player_proto.OpResultCode_OPRC_Error @@ -1480,7 +1480,7 @@ func (this *CSCustomerNewMsgAckPacketFactory) CreatePacket() interface{} { func (this *CSCustomerNewMsgAckHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSCustomerNewMsgAckHandler Process recv ", data) //if msg, ok := data.(*player_proto.CSCustomerNewMsgAck); ok { - // p := PlayerMgrSington.GetPlayer(sid) + // p := PlayerMgrSington.GetOnlinePlayer(sid) // if p == nil { // logger.Logger.Warn("CSCustomerNewMsgAckHandler p == nil") // return nil @@ -1505,7 +1505,7 @@ func (this *CSIosInstallStablePacketFactory) CreatePacket() interface{} { func (this *CSIosInstallStableHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSIosInstallStableHandler Process recv ", data) //if _, ok := data.(*player_proto.CSIosInstallStable); ok { - // p := PlayerMgrSington.GetPlayer(sid) + // p := PlayerMgrSington.GetOnlinePlayer(sid) // if p == nil { // logger.Logger.Warn("CSIosInstallStableHandler p == nil") // return nil @@ -1540,7 +1540,7 @@ func (this *CSFishJackpotPacketFactory) CreatePacket() interface{} { func (this *CSFishJackpotHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSFishJackpotHandler Process recv ", data) if _, ok := data.(*player_proto.CSJackpotList); ok { - player := PlayerMgrSington.GetPlayer(sid) + player := PlayerMgrSington.GetOnlinePlayer(sid) if player == nil { logger.Logger.Warn("CSFishJackpotHandler p == nil") return nil @@ -1579,7 +1579,7 @@ func (this *CSFishJackpotCoinPacketFactory) CreatePacket() interface{} { func (this *CSFishJackpotCoinHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSFishJackpotCoinHandler Process recv ", data) if _, ok := data.(*player_proto.CSFishJackpotCoin); ok { - player := PlayerMgrSington.GetPlayer(sid) + player := PlayerMgrSington.GetOnlinePlayer(sid) if player == nil { logger.Logger.Warn("CSFishJackpotCoinHandler p == nil") return nil @@ -1615,7 +1615,7 @@ func (this *CSGetSpreadIsOpenPacketFactory) CreatePacket() interface{} { func (this *CSGetSpreadIsOpenHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSGetSpreadIsOpenHandler Process recv ", data) if _, ok := data.(*player_proto.CSGetSpreadLWIsOpen); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSGetSpreadIsOpenHandler p == nil") return nil @@ -1654,7 +1654,7 @@ func (this *CSPlayerSettingPacketFactory) CreatePacket() interface{} { func (this *CSPlayerSettingHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSPlayerSettingHandler Process recv ", data) if msg, ok := data.(*player_proto.CSPlayerSetting); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSPlayerSettingHandler p == nil") return nil @@ -1712,7 +1712,7 @@ func (this *CSPlayerVIPBuyPacketFactory) CreatePacket() interface{} { func (this *CSPlayerVIPBuyHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSVIPBuy Process recv ", data) //if msg, ok := data.(*player_proto.CSVIPBuy); ok { - // p := PlayerMgrSington.GetPlayer(sid) + // p := PlayerMgrSington.GetOnlinePlayer(sid) // if p == nil { // logger.Logger.Warn("CSPlayerVIPBuyHandler p == nil") // return nil @@ -1737,7 +1737,7 @@ func (this *CSPlayerVIPInfoPacketFactory) CreatePacket() interface{} { func (this *CSPlayerVIPInfoHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSVIPInfo Process recv ", data) if _, ok := data.(*player_proto.CSVIPInfo); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSPlayerVIPInfoHandler p == nil") return nil @@ -1761,7 +1761,7 @@ func (this *CSPlayerVIPDrawPacketFactory) CreatePacket() interface{} { func (this *CSPlayerVIPDrawHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSVIPDraw Process recv ", data) if msg, ok := data.(*player_proto.CSVIPDraw); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSPlayerVIPDrawHandler p == nil") return nil @@ -1786,7 +1786,7 @@ func (this *CSVIPPrivilegeInfoPacketFactory) CreatePacket() interface{} { func (this *CSVIPPrivilegeInfoHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSVIPPrivilegeInfoHandler Process recv ", data) if msg, ok := data.(*player_proto.CSVIPPrivilegeInfo); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSVIPPrivilegeInfoHandler p == nil") return nil @@ -1880,7 +1880,7 @@ func CSExchangeChannel(s *netlib.Session, packetid int, data interface{}, sid in return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSExchangeChannel p == nil") return nil @@ -2141,87 +2141,59 @@ func CSPlayerData(s *netlib.Session, packetid int, data interface{}, sid int64) return } - var promoterID string - var promoterCfg *PromoterConfig - f := func() { - PlayerMgrSington.AddPlayer(sid, pd.PlayerData, s) - player := PlayerMgrSington.GetPlayer(sid) - if player == nil { - return - } - - if !player.IsRob { - if _, ok := BlackListMgrSington.CheckLogin(pd.PlayerData); !ok { - //黑名单用户也需要调用一下onlogin,否则会导致数据无法刷新 - player.OnLogined() - player.Kickout(common.KickReason_Freeze) - return - } - } - - if promoterID != "" { - key, err := GetPromoterKey(0, promoterID, "") - if err == nil { - promoterCfg = PromoterMgrSington.GetConfig(key) - if promoterCfg != nil && promoterCfg.IsInviteRoot > 0 { - player.BeUnderAgentCode = promoterID - } - } - } - - var temp []byte - var ee error - di := cspl.GetDeviceInfo() - if di != "" { - var e common.Encryptor - e.Init(common.GetAppId(), player.PackageID, int32(cspl.GetTimeStamp())) - temp, ee = base64.StdEncoding.DecodeString(di) - if ee == nil { - e.Encrypt(temp, len(temp)) - } - } - - if isnew { //新用户赠送金币 - //首次创建账号事件 - //isBind := 0 - //if pd.Tel != "" { - // isBind = 1 - //} - //LogChannelSingleton.WriteMQData(model.GeneratePlayerEvent(model.WEBEVENT_LOGIN, pd.Platform, pd.PackageID, pd.SnId, pd.Channel, pd.BeUnderAgentCode, pd.PromoterTree, 1, 1, isBind, common.GetAppId())) - - //newbieCoin := player.GetRegisterPrize() - //if newbieCoin > 0 { - // player.AddCoin(int64(newbieCoin), common.GainWay_NewPlayer, "system", "") - // //增加泥码 - // player.AddDirtyCoin(0, int64(newbieCoin)) - // player.ReportSystemGiveEvent(newbieCoin, common.GainWay_NewPlayer, true) - // player.AddPayCoinLog(int64(newbieCoin), model.PayCoinLogType_Coin, "NewPlayer") - // LogChannelSingleton.WriteMQData(model.GenerateSystemFreeGive(pd.SnId, pd.Name, pd.Platform, model.SystemFreeGive_GiveType_NewPlayer, model.SystemFreeGive_CoinType_Coin, int64(newbieCoin))) - //} - //if player.InviterId > 0 { - // //actRandCoinMgr.OnPlayerInvite(player.Platform, player.InviterId) - //} - } - //测试代码 - - playerFunc(player, cspl) - player.OnLogined() - player.SendPlayerInfo() + PlayerMgrSington.AddPlayer(sid, pd.PlayerData, s) + player := PlayerMgrSington.GetOnlinePlayer(sid) + if player == nil { return } - if pd.InviterId != 0 { - // 获取推广人 - PlayerCacheMgrSingleton.UnCacheInvalidPlayerId(pd.InviterId) - PlayerCacheMgrSingleton.Get(pd.Platform, pd.InviterId, func(inviter *PlayerCacheItem, async, isnew bool) { - if inviter != nil { - promoterID = inviter.BeUnderAgentCode - } - f() - }, false) - } else { - f() + if !player.IsRob { + if _, ok := BlackListMgrSington.CheckLogin(pd.PlayerData); !ok { + //黑名单用户也需要调用一下onlogin,否则会导致数据无法刷新 + player.OnLogined() + player.Kickout(common.KickReason_Freeze) + return + } } + + var temp []byte + var ee error + di := cspl.GetDeviceInfo() + if di != "" { + var e common.Encryptor + e.Init(common.GetAppId(), player.PackageID, int32(cspl.GetTimeStamp())) + temp, ee = base64.StdEncoding.DecodeString(di) + if ee == nil { + e.Encrypt(temp, len(temp)) + } + } + + if isnew { //新用户赠送金币 + //首次创建账号事件 + //isBind := 0 + //if pd.Tel != "" { + // isBind = 1 + //} + //LogChannelSingleton.WriteMQData(model.GeneratePlayerEvent(model.WEBEVENT_LOGIN, pd.Platform, pd.PackageID, pd.SnId, pd.Channel, pd.BeUnderAgentCode, pd.PromoterTree, 1, 1, isBind, common.GetAppId())) + + //newbieCoin := player.GetRegisterPrize() + //if newbieCoin > 0 { + // player.AddCoin(int64(newbieCoin), common.GainWay_NewPlayer, "system", "") + // //增加泥码 + // player.AddDirtyCoin(0, int64(newbieCoin)) + // player.ReportSystemGiveEvent(newbieCoin, common.GainWay_NewPlayer, true) + // player.AddPayCoinLog(int64(newbieCoin), model.PayCoinLogType_Coin, "NewPlayer") + // LogChannelSingleton.WriteMQData(model.GenerateSystemFreeGive(pd.SnId, pd.Name, pd.Platform, model.SystemFreeGive_GiveType_NewPlayer, model.SystemFreeGive_CoinType_Coin, int64(newbieCoin))) + //} + //if player.InviterId > 0 { + // //actRandCoinMgr.OnPlayerInvite(player.Platform, player.InviterId) + //} + } + //测试代码 + + playerFunc(player, cspl) + player.OnLogined() + player.SendPlayerInfo() }, true) return nil @@ -2230,7 +2202,7 @@ func CSPlayerData(s *netlib.Session, packetid int, data interface{}, sid int64) func CSQueryPlayer(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSQueryPlayerHandler Process recv ", data) if msg, ok := data.(*player_proto.CSQueryPlayer); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSQueryPlayerHandler p == nil") return nil @@ -2333,7 +2305,7 @@ func CSSavePlayerInfo(s *netlib.Session, packetid int, data interface{}, sid int if !ok { return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -2391,7 +2363,7 @@ func CSHeadUrl(s *netlib.Session, packetId int, data interface{}, sid int64) err if !ok { return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSHeadUrl p == nil") return nil @@ -2420,7 +2392,7 @@ func CSBindTelInfo(s *netlib.Session, packetId int, data interface{}, sid int64) return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Error("CSBindTelInfo p == nil", sid) return nil @@ -2451,7 +2423,7 @@ func CSPlayerSMSCode(s *netlib.Session, packetId int, data interface{}, sid int6 return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) sendPack := func(code player_proto.OpResultCode) { pack := &player_proto.SCPlayerSMSCode{ @@ -2576,7 +2548,7 @@ func CSBindTel(s *netlib.Session, packetId int, data interface{}, sid int64) err return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Error("CSBindTel p == nil", sid) return nil @@ -2822,7 +2794,7 @@ func CSBillList(s *netlib.Session, packetId int, data interface{}, sid int64) er if !ok { return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -2887,7 +2859,7 @@ func CSADV(s *netlib.Session, packetId int, data interface{}, sid int64) error { if !ok { return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -2908,7 +2880,7 @@ func CSADV(s *netlib.Session, packetId int, data interface{}, sid int64) error { // 获取运营商配置 func CSSMSConfig(s *netlib.Session, packetId int, data interface{}, sid int64) error { logger.Logger.Tracef("CSSMSConfig Process %v", data) - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -2947,7 +2919,7 @@ func CSSMSConfig(s *netlib.Session, packetId int, data interface{}, sid int64) e // 获取获奖记录 func CSAwardLog(s *netlib.Session, packetId int, data interface{}, sid int64) error { logger.Logger.Tracef("CSAwardLog Process %v", data) - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -3044,7 +3016,7 @@ func CSAwardLog(s *netlib.Session, packetId int, data interface{}, sid int64) er return nil } func CSPopUpWindowsConfig(s *netlib.Session, packetId int, data interface{}, sid int64) error { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -3085,7 +3057,7 @@ func CSPopUpWindowsConfig(s *netlib.Session, packetId int, data interface{}, sid func CSUpdateAttribute(s *netlib.Session, packetId int, data interface{}, sid int64) error { logger.Logger.Tracef("CSUpdateAttribute %v", data) - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -3285,7 +3257,7 @@ func CSUpdateAttribute(s *netlib.Session, packetId int, data interface{}, sid in // 获取获奖记录 func CSClawdollItemLog(s *netlib.Session, packetId int, data interface{}, sid int64) error { logger.Logger.Tracef("CSClawdollItemLog Process %v", data) - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -3328,7 +3300,7 @@ func CSClawdollItemLog(s *netlib.Session, packetId int, data interface{}, sid in func CSCLAWDOLLConfig(s *netlib.Session, packetId int, data interface{}, sid int64) error { logger.Logger.Tracef("CSDollConfigHandler") if _, ok := data.(*player_proto.CSCLAWDOLLConfig); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSDollConfigHandler p == nil") return nil @@ -3357,7 +3329,7 @@ func CSCLAWDOLLConfig(s *netlib.Session, packetId int, data interface{}, sid int // 客户端请求弹窗配置 func CSPopUpWindowConfig(s *netlib.Session, packetId int, data interface{}, sid int64) error { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } diff --git a/worldsrv/action_rankmatch.go b/worldsrv/action_rankmatch.go index 1105486..ea87b67 100644 --- a/worldsrv/action_rankmatch.go +++ b/worldsrv/action_rankmatch.go @@ -27,7 +27,7 @@ func init() { // CSRMSeasonInfo 赛季信息 func CSRMSeasonInfo(s *netlib.Session, packetId int, data interface{}, sid int64) error { logger.Logger.Trace("CSRMSeasonInfo") - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warnf("CSRMSeasonInfo p == nil.") return nil @@ -80,7 +80,7 @@ func CSRMRankConfig(s *netlib.Session, packetId int, data interface{}, sid int64 return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warnf("CSRMRankConfig p == nil.") return nil @@ -116,7 +116,7 @@ func CSRMAwardConfig(s *netlib.Session, packetId int, data interface{}, sid int6 return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warnf("CSRMAwardConfig p == nil.") return nil @@ -174,7 +174,7 @@ func CSRMAward(s *netlib.Session, packetId int, data interface{}, sid int64) err return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warnf("CSRMAward p == nil.") return nil diff --git a/worldsrv/action_server.go b/worldsrv/action_server.go index b169f39..dc24fd3 100644 --- a/worldsrv/action_server.go +++ b/worldsrv/action_server.go @@ -245,7 +245,7 @@ func init() { if scene.starting { if scene.currRound == 1 { scene.startTime = time.Now() - //p := PlayerMgrSington.GetPlayer(s.Sid) + //p := PlayerMgrSington.GetOnlinePlayer(s.Sid) } } if scene.starting { @@ -613,7 +613,7 @@ func (this *CSPMCmdPacketFactory) CreatePacket() interface{} { func (this *CSPMCmdHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSPMCmdHandler Process recv ", data) if msg, ok := data.(*playerproto.CSPMCmd); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Trace("CSPMCmdHandler p == nil") return nil @@ -652,33 +652,6 @@ func (this *CSPMCmdHandler) Process(s *netlib.Session, packetid int, data interf return nil } -type CSRobotChgDataPacketFactory struct { -} -type CSRobotChgDataHandler struct { -} - -func (this *CSRobotChgDataPacketFactory) CreatePacket() interface{} { - pack := &playerproto.CSRobotChgData{} - return pack -} - -func (this *CSRobotChgDataHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { - logger.Logger.Trace("CSRobotChgDataHandler Process recv ", data) - if _, ok := data.(*playerproto.CSRobotChgData); ok { - p := PlayerMgrSington.GetPlayer(sid) - if p == nil { - logger.Logger.Trace("CSRobotChgDataHandler p == nil") - return nil - } - - if !p.IsRob { - logger.Logger.Trace("CSRobotChgDataHandler !p.IsRob") - return nil - } - } - return nil -} - type CSAccountInvalidPacketFactory struct { } type CSAccountInvalidHandler struct { @@ -692,7 +665,7 @@ func (this *CSAccountInvalidPacketFactory) CreatePacket() interface{} { func (this *CSAccountInvalidHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSAccountInvalidHandler Process recv ", data) if _, ok := data.(*loginproto.CSAccountInvalid); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p != nil && p.IsRobot() { snid := p.SnId acc := p.AccountId @@ -718,12 +691,11 @@ func (this *CSAccountInvalidHandler) Process(s *netlib.Session, packetid int, da } func init() { + // 机器人命令 common.RegisterHandler(int(playerproto.PlayerPacketID_PACKET_CS_PMCMD), &CSPMCmdHandler{}) netlib.RegisterFactory(int(playerproto.PlayerPacketID_PACKET_CS_PMCMD), &CSPMCmdPacketFactory{}) - common.RegisterHandler(int(playerproto.PlayerPacketID_PACKET_CS_ROBOTCHGDATA), &CSRobotChgDataHandler{}) - netlib.RegisterFactory(int(playerproto.PlayerPacketID_PACKET_CS_ROBOTCHGDATA), &CSRobotChgDataPacketFactory{}) - + // 删除机器人账号 common.RegisterHandler(int(loginproto.LoginPacketID_PACKET_CS_ACCOUNTINVALID), &CSAccountInvalidHandler{}) netlib.RegisterFactory(int(loginproto.LoginPacketID_PACKET_CS_ACCOUNTINVALID), &CSAccountInvalidPacketFactory{}) } diff --git a/worldsrv/action_shop.go b/worldsrv/action_shop.go index b11171c..4784920 100644 --- a/worldsrv/action_shop.go +++ b/worldsrv/action_shop.go @@ -29,7 +29,7 @@ func (this *CSShopInfoPacketFactory) CreatePacket() interface{} { func (this *CSShopInfoHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSShopInfoHandler Process recv ", data) if msg, ok := data.(*shop.CSShopInfo); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSShopInfoHandler p == nil") return nil @@ -62,7 +62,7 @@ func (this *CSAdLookedPacketFactory) CreatePacket() interface{} { func (this *CSAdLookedHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSAdLookedHandler Process recv ", data) if msg, ok := data.(*shop.CSAdLooked); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSAdLookedHandler p == nil") return nil @@ -134,7 +134,7 @@ func (this *CSVCPayShopPacketFactory) CreatePacket() interface{} { func (this *CSVCPayShopHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSVCPayShopHandler Process recv ", data) if msg, ok := data.(*shop.CSVCPayShop); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSVCPayShopHandler p == nil") return nil @@ -246,7 +246,7 @@ func (this *CSShopExchangeRecordPacketFactory) CreatePacket() interface{} { func (this *CSShopExchangeRecordHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSShopExchangeRecordHandler Process recv ", data) if msg, ok := data.(*shop.CSShopExchangeRecord); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSShopExchangeRecordHandler p == nil") return nil @@ -279,7 +279,7 @@ func (this *CSShopExchangeHandler) Process(s *netlib.Session, packetid int, data return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSShopExchangeHandler p == nil") return nil @@ -362,7 +362,7 @@ func (this *CSShopExchangeListPacketFactory) CreatePacket() interface{} { func (this *CSShopExchangeListHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSShopExchangeListHandler Process recv ", data) if _, ok := data.(*shop.CSShopExchangeList); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSShopExchangeListHandler p == nil") return nil @@ -388,7 +388,7 @@ func (this *CSPayInfoPacketFactory) CreatePacket() interface{} { func (this *CSPayInfoHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSPayInfoHandler Process recv ", data) if msg, ok := data.(*shop.CSPayInfo); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSPayInfoHandler p == nil") return nil @@ -520,7 +520,7 @@ func (this *CSGetPayInfoListPacketFactory) CreatePacket() interface{} { func (this *CSGetPayInfoListHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSGetPayInfoListHandler Process recv ", data) if msg, ok := data.(*shop.CSGetPayInfoList); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSGetPayInfoListHandler p == nil") return nil @@ -637,7 +637,7 @@ func (this *CSPlayerAddrPacketFactory) CreatePacket() interface{} { func (this *CSPlayerAddrHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSPlayerAddr Process recv ", data) if msg, ok := data.(*shop.CSPlayerAddr); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSPlayerAddr p == nil") return nil @@ -671,7 +671,7 @@ func (this *CSUpdateVipShopPacketFactory) CreatePacket() interface{} { } func (this *CSUpdateVipShopHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSPayInfoHandler p == nil") return nil diff --git a/worldsrv/action_task.go b/worldsrv/action_task.go index b399dd6..a88863d 100644 --- a/worldsrv/action_task.go +++ b/worldsrv/action_task.go @@ -152,7 +152,7 @@ func CSTaskList(s *netlib.Session, packetId int, data interface{}, sid int64) er if !ok { return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -199,7 +199,7 @@ func CSTaskReward(s *netlib.Session, packetId int, data interface{}, sid int64) if !ok { return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -278,7 +278,7 @@ func CSTaskDebugInc(s *netlib.Session, packetId int, data interface{}, sid int64 if !ok { return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } diff --git a/worldsrv/action_tournament.go b/worldsrv/action_tournament.go index eb5286f..93a5de2 100644 --- a/worldsrv/action_tournament.go +++ b/worldsrv/action_tournament.go @@ -15,7 +15,7 @@ func CSTMInfo(s *netlib.Session, packetid int, data interface{}, sid int64) erro return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warnf("CSTMInfo p == nil.") return nil @@ -33,7 +33,7 @@ func CSSignRace(s *netlib.Session, packetid int, data interface{}, sid int64) er if !ok { return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warnf("CSSignRace p == nil.") return nil @@ -100,7 +100,7 @@ func CSMatchList(s *netlib.Session, packetId int, data interface{}, sid int64) e if !ok { return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warnf("CSMatchList p == nil.") return nil @@ -171,7 +171,7 @@ func CSRoomList(s *netlib.Session, packetId int, data interface{}, sid int64) er if !ok { return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warnf("CSRoomList p == nil.") return nil diff --git a/worldsrv/action_welfare.go b/worldsrv/action_welfare.go index 5a7e2a5..57353e1 100644 --- a/worldsrv/action_welfare.go +++ b/worldsrv/action_welfare.go @@ -36,7 +36,7 @@ func (this *CSGetReliefFundPacketFactory) CreatePacket() interface{} { func (this *CSGetReliefFundHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSGetReliefFund Process recv ", data) if msg, ok := data.(*welfare.CSGetReliefFund); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warnf("CSGetReliefFundHandler p == nil") return nil @@ -61,7 +61,7 @@ func (this *CSGetTurnplatePacketFactory) CreatePacket() interface{} { func (this *CSGetTurnplateHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSGetTurnplate Process recv ", data) if msg, ok := data.(*welfare.CSGetTurnplate); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warnf("CSGetTurnplateHandler p == nil") return nil @@ -91,7 +91,7 @@ func (this *CSGetAddupSignPacketFactory) CreatePacket() interface{} { func (this *CSGetAddupSignHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSGetAddupSign Process recv ", data) if msg, ok := data.(*welfare.CSGetAddupSign); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warnf("CSGetAddupSignHandler p == nil") return nil @@ -118,7 +118,7 @@ func (this *CSWelfaredInfoPacketFactory) CreatePacket() interface{} { func (this *CSWelfaredInfoHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSWelfaredInfo Process recv ", data) if _, ok := data.(*welfare.CSWelfaredInfo); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warnf("CSWelfaredInfoHandler p == nil") return nil @@ -143,7 +143,7 @@ func (this *CSBlindBoxInfoPacketFactory) CreatePacket() interface{} { func (this *CSBlindBoxInfoHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSBlindBoxInfo Process recv ", data) if msg, ok := data.(*welfare.CSBlindBoxInfo); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warnf("CSBlindBoxInfoHandler p == nil") return nil @@ -168,7 +168,7 @@ func (this *CSBuyBlindBoxPacketFactory) CreatePacket() interface{} { func (this *CSBuyBlindBoxHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSGetBlindBox Process recv ", data) if _, ok := data.(*welfare.CSGetBlindBox); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warnf("CSBuyBlindBoxHandler p == nil") return nil @@ -193,7 +193,7 @@ func (this *CSFirstPayInfoPacketFactory) CreatePacket() interface{} { func (this *CSFirstPayInfoHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSWelfareFirstPayData Process recv ", data) if _, ok := data.(*welfare.CSWelfareFirstPayData); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warnf("CSFirstPayInfoHandler p == nil") return nil @@ -218,7 +218,7 @@ func (this *CSBuyFirstPayPacketFactory) CreatePacket() interface{} { func (this *CSBuyFirstPayHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSWelfareFirstPay Process recv ", data) if _, ok := data.(*welfare.CSWelfareFirstPay); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warnf("CSBuyFirstPayHandler p == nil") return nil @@ -243,7 +243,7 @@ func (this *CSContinuousPayInfoPacketFactory) CreatePacket() interface{} { func (this *CSContinuousPayInfoHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSWelfareContinuousPayData Process recv ", data) if _, ok := data.(*welfare.CSWelfareContinuousPayData); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warnf("CSContinuousPayInfoHandler p == nil") return nil @@ -268,7 +268,7 @@ func (this *CSBuyContinuousPayPacketFactory) CreatePacket() interface{} { func (this *CSBuyContinuousPayHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSWelfareContinuousPay Process recv ", data) if _, ok := data.(*welfare.CSWelfareContinuousPay); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warnf("CSBuyContinuousPayHandler p == nil") return nil @@ -285,7 +285,7 @@ func CSWelfRelief(s *netlib.Session, packetid int, data interface{}, sid int64) return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -305,7 +305,7 @@ func CSWelfRelief(s *netlib.Session, packetid int, data interface{}, sid int64) func CSInviteInfo(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Tracef("CSInviteInfo Process recv %v", data) - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -383,7 +383,7 @@ func CSBindInvite(s *netlib.Session, packetid int, data interface{}, sid int64) if !ok { return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -591,7 +591,7 @@ func CSPermitInfo(s *netlib.Session, packetid int, data interface{}, sid int64) if !ok { return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -710,7 +710,7 @@ func CSPermitAward(s *netlib.Session, packetid int, data interface{}, sid int64) if !ok { return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -935,7 +935,7 @@ func CSPermitExchangeList(s *netlib.Session, packetid int, data interface{}, sid if !ok { return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -1004,7 +1004,7 @@ func CSPermitExchange(s *netlib.Session, packetid int, data interface{}, sid int if !ok { return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -1146,7 +1146,7 @@ func CSPermitShop(s *netlib.Session, packetid int, data interface{}, sid int64) if !ok { return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } @@ -1202,7 +1202,7 @@ func (this *CSPigBankGetInfoPacketFactory) CreatePacket() interface{} { func (this *CSPigBankGetInfoHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSPigbankGetInfo Process recv ", data) if _, ok := data.(*welfare.CSPigbankGetInfo); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warnf("CSPigBankGetInfoHandler p == nil") return nil @@ -1227,7 +1227,7 @@ func (this *CSPigBankTakeCoinPacketFactory) CreatePacket() interface{} { func (this *CSPigBankTakeCoinHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSPigbankTakeCoin Process recv ", data) if _, ok := data.(*welfare.CSPigbankTakeCoin); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warnf("CSPigBankTakeCoinHandler p == nil") return nil @@ -1252,7 +1252,7 @@ func (this *CSSignDayAddup2AwardPacketFactory) CreatePacket() interface{} { func (this *CSSignDayAddup2AwardHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSSignDayAddup2Award Process recv ", data) if msg, ok := data.(*welfare.CSSignDayAddup2Award); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warnf("CSPigBankTakeCoinHandler p == nil") return nil @@ -1276,7 +1276,7 @@ func (this *CSDiamondBankGetInfoPacketFactory) CreatePacket() interface{} { func (this *CSDiamondBankGetInfoHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSDiamondBankGetInfo Process recv ", data) if _, ok := data.(*welfare.CSDiamondBankGetInfo); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warnf("CSPigBankTakeCoinHandler p == nil") return nil @@ -1301,7 +1301,7 @@ func (this *CSDiamondBankTakeDiamondPacketFactory) CreatePacket() interface{} { func (this *CSDiamondBankTakeDiamondHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSDiamondBankGetInfo Process recv ", data) if _, ok := data.(*welfare.CSDiamondBankTakeDiamond); ok { - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warnf("CSPigBankTakeCoinHandler p == nil") return nil @@ -1318,7 +1318,7 @@ func CSClientUpgrades(s *netlib.Session, packetid int, data interface{}, sid int return nil } - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { return nil } diff --git a/worldsrv/dbsaver.go b/worldsrv/dbsaver.go index 2bf2ff7..39db2ea 100644 --- a/worldsrv/dbsaver.go +++ b/worldsrv/dbsaver.go @@ -1,151 +1,52 @@ package main import ( - "fmt" - "strings" "time" - "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/module" + + "mongo.games.com/game/util/balancequeue" ) -type SaveTaskHandler interface { - Time2Save() -} - -var SaverSliceNumber = 600 - var DbSaveInst = &DbSaver{ - Tick: int32(SaverSliceNumber), - index: 0, - init: false, - list: make([]*SaverArray, SaverSliceNumber), - queue: make([]*BalanceQueue, 10), - pool: make(map[SaveTaskHandler]*SaverArray), + GroupNumber: 5, } type DbSaver struct { - Tick int32 // 最大索引 - index int32 // 循环索引 - list []*SaverArray - queue []*BalanceQueue - init bool - pool map[SaveTaskHandler]*SaverArray -} - -func (this *DbSaver) String() string { - buf := strings.Builder{} - buf.WriteString("DbSaver:\n") - buf.WriteString(fmt.Sprintf("Tick: %v\n", this.Tick)) - buf.WriteString(fmt.Sprintf("List: %v\n", len(this.list))) - buf.WriteString(fmt.Sprintf("Queue: %v\n", len(this.queue))) - for k, v := range this.queue { - buf.WriteString(fmt.Sprintf("q%v: %v\n", k, len(v.queue))) - } - return buf.String() -} - -// pushBalanceSaverArray 向队列中添加SaveTaskHandler -func (this *DbSaver) pushBalanceSaverArray(sth SaveTaskHandler) { - if sth == nil { - return - } - if _, exist := this.pool[sth]; exist { - return - } - for pos, bq := range this.queue { - size := len(bq.queue) - if size > 0 { - arr := bq.queue[size-1] - if pos+1 >= len(this.queue) { - this.queue = append(this.queue, &BalanceQueue{}) - } - this.queue[pos+1].queue = append(this.queue[pos+1].queue, arr) - this.queue[pos].queue = bq.queue[:size-1] - arr.bqPos = len(this.queue[pos+1].queue) - 1 - arr.Array = append(arr.Array, sth) - this.pool[sth] = arr - return - } - } - return + GroupNumber int + *balancequeue.BalanceQueue + m map[int32]balancequeue.Element } // RegisterDbSaverTask 向队列中添加SaveTaskHandler -func (this *DbSaver) RegisterDbSaverTask(i interface{}) { - if st, ok := i.(SaveTaskHandler); ok { - this.pushBalanceSaverArray(st) +func (this *DbSaver) RegisterDbSaverTask(i *Player) { + if i == nil { + return } + e := balancequeue.ElementWrapper(i.Time2Save) + this.m[i.GetSnId()] = e + this.Push(e) } // UnregisterDbSaveTask 从队列中移除SaveTaskHandler -func (this *DbSaver) UnregisterDbSaveTask(i interface{}) { - if sth, ok := i.(SaveTaskHandler); ok { - if arr, exist := this.pool[sth]; exist { - delete(this.pool, sth) - count := len(arr.Array) - for i := 0; i < count; i++ { - if arr.Array[i] == sth { - arr.Array[i] = arr.Array[count-1] - arr.Array = arr.Array[:count-1] - - bqPos := arr.bqPos - queCount := len(this.queue[count].queue) - this.queue[count].queue[bqPos] = this.queue[count].queue[queCount-1] - this.queue[count].queue[bqPos].bqPos = bqPos - this.queue[count].queue = this.queue[count].queue[:queCount-1] - this.queue[count-1].queue = append(this.queue[count-1].queue, arr) - arr.bqPos = len(this.queue[count-1].queue) - 1 - return - } - } - } else { - logger.Logger.Info("Player not in dbsaver") - } +func (this *DbSaver) UnregisterDbSaveTask(i *Player) { + if i == nil { + return } + e, ok := this.m[i.GetSnId()] + if !ok { + return + } + this.Pop(e) } -// SaverArray 保存SaveTaskHandler的数组 -type SaverArray struct { - Array []SaveTaskHandler - bqPos int -} - -// BalanceQueue 保存SaveTaskHandler的队列 -type BalanceQueue struct { - queue []*SaverArray -} - -// ////////////////////////////////////////////////////////////////// -// / Module Implement [beg] -// ////////////////////////////////////////////////////////////////// func (this *DbSaver) ModuleName() string { return "dbsaver" } func (this *DbSaver) Init() { - if this.init == false { - for i := 0; i < len(this.queue); i++ { - this.queue[i] = &BalanceQueue{} - } - //初始化平衡数组,所有平衡队列容量为0 - for i := 0; i < int(this.Tick); i++ { - this.list[i] = &SaverArray{bqPos: i} - this.queue[0].queue = append(this.queue[0].queue, this.list[i]) - } - this.init = true - } -} - -func (this *DbSaver) Update() { - if this.index == this.Tick { - this.index = 0 - } - sa := this.list[this.index] - for _, sth := range sa.Array { - sth.Time2Save() - } - this.index = this.index + 1 + this.BalanceQueue = balancequeue.New(this.GroupNumber) + this.m = make(map[int32]balancequeue.Element) } func (this *DbSaver) Shutdown() { diff --git a/worldsrv/headurl.go b/worldsrv/headurl.go new file mode 100644 index 0000000..a6530a8 --- /dev/null +++ b/worldsrv/headurl.go @@ -0,0 +1,18 @@ +package main + +import ( + "fmt" +) + +var robotHeadUrlIdx int + +func GetRobHeadUrlIdx() string { + robotHeadUrlIdx++ + if robotHeadUrlIdx > 1448 { + robotHeadUrlIdx = 1 + } + return fmt.Sprintf("https://avatar-icon.oss-cn-guangzhou.aliyuncs.com/user_head/head_%v.jpg", robotHeadUrlIdx) +} +func GetRobHeadUrl(idx int32) string { + return fmt.Sprintf("https://avatar-icon.oss-cn-guangzhou.aliyuncs.com/user_head/head_%v.jpg", idx) +} diff --git a/worldsrv/loginstatemgr.go b/worldsrv/loginstatemgr.go index 4fb7610..4c52f6e 100644 --- a/worldsrv/loginstatemgr.go +++ b/worldsrv/loginstatemgr.go @@ -233,7 +233,7 @@ func (this *LoginStateMgr) LogoutAllBySession(session *netlib.Session) { for sid, s := range this.statesBySid { if s.gateSess == session { this.Logout(s) - p := PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p != nil { p.DropLine() } diff --git a/worldsrv/niceid.go b/worldsrv/niceid.go deleted file mode 100644 index 93689b9..0000000 --- a/worldsrv/niceid.go +++ /dev/null @@ -1,113 +0,0 @@ -package main - -import ( - "fmt" - "math/rand" - - "mongo.games.com/game/proto" - player_proto "mongo.games.com/game/protocol/player" - server_proto "mongo.games.com/game/protocol/server" - "mongo.games.com/goserver/core" - "mongo.games.com/goserver/core/logger" -) - -var niceIdMgr = &NiceIdManager{ - SnIds: []int32{}, - UsedIds: make(map[int32]int32), -} - -type NiceIdManager struct { - SnIds []int32 - UsedIds map[int32]int32 - RobHeadUrlIdx int32 -} - -func (this *NiceIdManager) init() { - //this.SnIds = model.GetInvalidSnid() - //this.SnIds = make([]int32, 0, len(srvdata.PBDB_PlayerInfoMgr.Datas.Arr)) - //for _, value := range srvdata.PBDB_PlayerInfoMgr.Datas.Arr { - // this.SnIds = append(this.SnIds, value.GetId()) - //} - snidLen := len(this.SnIds) - logger.Logger.Info("NiceIdManager snid lens:", snidLen) - for i := 0; i < snidLen; i++ { - index := rand.Intn(snidLen) - this.SnIds[i], this.SnIds[index] = this.SnIds[index], this.SnIds[i] - } - for _, value := range niceIdMgr.SnIds { - this.UsedIds[value] = 0 - } -} -func (this *NiceIdManager) PopNiceId(user int32) int32 { - if len(this.SnIds) <= 0 { - return 0 - } - selId := this.SnIds[len(this.SnIds)-1] - this.SnIds = this.SnIds[:len(this.SnIds)-1] - this.UsedIds[selId] = user - logger.Logger.Infof("NiceIdManager pop niceid %v to %v", selId, user) - return selId -} -func (this *NiceIdManager) PushNiceId(snid int32) { - if _, ok := this.UsedIds[snid]; ok { - this.SnIds = append(this.SnIds, snid) - snidLen := len(this.SnIds) - index := rand.Intn(snidLen) - this.SnIds[snidLen-1], this.SnIds[index] = this.SnIds[index], this.SnIds[snidLen-1] - this.UsedIds[snid] = 0 - logger.Logger.Infof("NiceIdManager push niceid %v to cache", snid) - } -} -func (this *NiceIdManager) NiceIdCheck(playerid int32) { - logger.Logger.Infof("%v be used in NiceIdManager.", playerid) - if userid, ok := this.UsedIds[playerid]; ok { - delete(this.UsedIds, playerid) - if userid != 0 { - user := PlayerMgrSington.GetPlayerBySnId(userid) - if user != nil { - user.NiceId = this.PopNiceId(userid) - if user.scene != nil { - pack := &server_proto.WGNiceIdRebind{ - User: proto.Int32(userid), - NewId: proto.Int32(user.NiceId), - } - user.SendToGame(int(server_proto.SSPacketID_PACKET_GW_NICEIDREBIND), pack) - packNr := &player_proto.SCNiceIdRebind{ - SnidId: proto.Int32(userid), - NiceId: proto.Int32(user.NiceId), - } - user.scene.Broadcast(int(player_proto.PlayerPacketID_PACKET_SC_NICEIDREBIND), packNr, 0) - } - } - } else { - niceIndex := -1 - for key, value := range this.SnIds { - if value == playerid { - niceIndex = key - break - } - } - if niceIndex != -1 { - curCount := len(this.SnIds) - this.SnIds[niceIndex], this.SnIds[curCount-1] = this.SnIds[curCount-1], this.SnIds[niceIndex] - this.SnIds = this.SnIds[:curCount-1] - } - } - } -} -func (this *NiceIdManager) GetRobHeadUrlIdx() string { - this.RobHeadUrlIdx++ - if this.RobHeadUrlIdx > 1448 { - this.RobHeadUrlIdx = 1 - } - return fmt.Sprintf("https://avatar-icon.oss-cn-guangzhou.aliyuncs.com/user_head/head_%v.jpg", this.RobHeadUrlIdx) -} -func (this *NiceIdManager) GetRobHeadUrl(idx int32) string { - return fmt.Sprintf("https://avatar-icon.oss-cn-guangzhou.aliyuncs.com/user_head/head_%v.jpg", idx) -} -func init() { - core.RegisteHook(core.HOOK_BEFORE_START, func() error { - niceIdMgr.init() - return nil - }) -} diff --git a/worldsrv/platform.go b/worldsrv/platform.go index 358e01a..a6d9c1b 100644 --- a/worldsrv/platform.go +++ b/worldsrv/platform.go @@ -221,7 +221,7 @@ func (p *Platform) ChangeDisabled(disable bool) bool { } p.Disable = disable if disable { //关闭平台,踢掉平台上所有的人 - PlayerMgrSington.KickoutByPlatform(p.IdStr) + PlayerMgrSington.KickByPlatform(p.IdStr) } return true } diff --git a/worldsrv/player.go b/worldsrv/player.go index d930f16..40f5be8 100644 --- a/worldsrv/player.go +++ b/worldsrv/player.go @@ -370,7 +370,6 @@ func (this *Player) OnLogined() { this.OnlineLogLogin() - this.SendToRepSrv(this.PlayerData) //红点检测 this.CheckShowRed() @@ -1267,7 +1266,7 @@ func (this *Player) DropLine() { proto.SetDefaults(pack) this.SendToGame(int(serverproto.SSPacketID_PACKET_WG_PLAYERDROPLINE), pack) } - PlayerMgrSington.DroplinePlayer(this) + PlayerMgrSington.DropPlayer(this) this.sid = 0 this.gateSess = nil //统计在线时长日志 @@ -1291,7 +1290,7 @@ func (this *Player) Logout() { this.LastLogoutTime = time.Now().Local() FriendMgrSington.UpdateLogoutTime(this.Platform, this.SnId) //clubManager.DropLinePlayer(this.SnId) - PlayerMgrSington.DroplinePlayer(this) + PlayerMgrSington.DropPlayer(this) if !this.IsRobot() { PlayerOnlineSington.Check = true } @@ -1345,6 +1344,7 @@ func (this *Player) SetOffline() { } // OnLogouted 玩家登出 +// 只能玩家管理器调用 func (this *Player) OnLogouted() { logger.Logger.Tracef("(this *Player) OnLogouted() %v", this.SnId) @@ -1354,11 +1354,6 @@ func (this *Player) OnLogouted() { if !this.IsRob { FriendUnreadMgrSington.SaveFriendUnreadData(this.Platform, this.SnId) } - //平台数据 - //PlayerSingleAdjustMgr.DelPlayerData(this.Platform, this.SnId) - - //离线玩家清空俱乐部信息 - //delete(clubManager.theInClubId, this.SnId) //登录日志 logState := LoginStateMgrSington.GetLoginStateBySid(this.sid) @@ -1376,11 +1371,6 @@ func (this *Player) OnLogouted() { //退出通知 //ActMonitorMgrSington.SendActMonitorEvent(ActState_Login, this.SnId, this.Name, this.Platform, 0, 0, "", 1) - - // 更新数据库 - logger.Logger.Tracef("###%v unmount from DBSaver[DelPlayer]", this.Name) - DbSaveInst.UnregisterDbSaveTask(this) - this.Save(true) } func (this *Player) MarshalData() (d []byte, e error) { @@ -1509,42 +1499,17 @@ func (this *Player) MarshalCParam() []*serverproto.PlayerCParam { return params } -func (this *Player) SendToRepSrv(pd *model.PlayerData) { - //replaySess := srvlib.ServerSessionMgrSington.GetSession(common.GetSelfAreaId(), ReplayServerType, ReplayServerId) - //if replaySess != nil { - // var buf bytes.Buffer - // enc := gob.NewEncoder(&buf) - // err := enc.Encode(pd) - // if err != nil { - // logger.Logger.Info("(this *Player) SendToRepSrv json.Marshal error", err) - // } else { - // pack := &server_proto.WRPlayerData{ - // PlayerData: buf.Bytes(), - // } - // proto.SetDefaults(pack) - // replaySess.Send(int(server_proto.SSPacketID_PACKET_WR_PlayerData), pack) - // } - //} -} - -func (this *Player) CanDelete() bool { - if this.isDelete { - return true - } - return !this.IsOnLine() && - !this.dirty && - time.Now().Sub(this.lastSaved) > time.Minute*5 && - this.scene == nil -} - func (this *Player) Time2Save() { - logger.Logger.Tracef("player save %v", this.SnId) + if this == nil { + return + } + + logger.Logger.Tracef("Time2Save Player %v", this.SnId) if common.Config.IsDevMode { this.Save(true) - } else { - this.Save(false) } - if this != nil && this.CanDelete() { + + if this.isDelete || (!this.IsOnLine() && !this.dirty && time.Now().Sub(this.lastSaved) > time.Minute*5 && this.scene == nil) { PlayerMgrSington.DelPlayer(this.SnId) } } diff --git a/worldsrv/playercache.go b/worldsrv/playercache.go index 030e927..ee0b645 100644 --- a/worldsrv/playercache.go +++ b/worldsrv/playercache.go @@ -6,19 +6,26 @@ import ( "mongo.games.com/goserver/core" "mongo.games.com/goserver/core/basic" + "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/module" "mongo.games.com/goserver/core/task" "mongo.games.com/game/model" + "mongo.games.com/game/util/balancequeue" "mongo.games.com/game/worldsrv/internal" ) -const ( - // InvalidPlayerCacheSec 数据不存在,60秒内不再查询 - InvalidPlayerCacheSec int64 = 60 +/* + 查询不在线的玩家数据,缓存一段时间 +*/ - InvalidPlayerCacheMax int = 100000 - ListNumber int32 = 300 +const ( + // InvalidPlayerCacheSec 数据不存在,60秒内不再查询数据库 + InvalidPlayerCacheSec int64 = 60 + // InvalidPlayerCacheMax 缓存的无效玩家最大数量 + InvalidPlayerCacheMax int = 100000 + // ListNumber 平衡队列分组数量 + ListNumber = 300 ) func init() { @@ -30,41 +37,31 @@ var PlayerCacheMgrSingleton = &PlayerCacheMgr{ playerCbs: make(map[int32][]func(*PlayerCacheItem, bool, bool)), playerInvalidIds: make(map[int32]int64), playerWaitClr: make([]*PlayerCacheItem, 0, 128), - DbSaver: &DbSaver{ - Tick: ListNumber, - index: 0, - init: false, - list: make([]*SaverArray, ListNumber), - queue: make([]*BalanceQueue, 10), - pool: make(map[SaveTaskHandler]*SaverArray), - }, } type PlayerCacheItem struct { *model.PlayerData } -func (p *PlayerCacheItem) CanDel() bool { - //return !p.isOnline && time.Now().Unix()-p.lastTs > int64(ListNumber) - return true -} - -func (p *PlayerCacheItem) Time2Save() { +func (p *PlayerCacheItem) BalanceQueueHandler() { // 并没有对缓存数据做什么操作,只是释放缓存 - if p.CanDel() { - PlayerCacheMgrSingleton.playerWaitClr = append(PlayerCacheMgrSingleton.playerWaitClr, p) - } + PlayerCacheMgrSingleton.playerWaitClr = append(PlayerCacheMgrSingleton.playerWaitClr, p) } type PlayerCacheMgr struct { - *DbSaver + *balancequeue.BalanceQueue playerMap map[int32]*PlayerCacheItem // snid; 玩家信息缓存 playerCbs map[int32][]func(*PlayerCacheItem, bool, bool) // snid; 等待执行的回掉方法 playerInvalidIds map[int32]int64 // snid; 防止频繁访问数据库 playerWaitClr []*PlayerCacheItem // 根据DbSaver缓冲失效策略释放玩家数据 } -func (c *PlayerCacheMgr) Get(plt string, snid int32, cb func(*PlayerCacheItem, bool, bool), createIfNotExist bool) { +// Get 获取玩家数据 +// plt 平台 +// snid 玩家id +// cb 回掉方法; playerInfo 玩家数据; isFindDB 是否查了数据库; isNew 是否新创建的玩家 +// createIfNotExist 玩家不存在是否创建 +func (c *PlayerCacheMgr) Get(plt string, snid int32, cb func(playerInfo *PlayerCacheItem, isFindDB bool, isNew bool), createIfNotExist bool) { // 1.玩家缓冲数据存在 if p, exist := c.playerMap[snid]; exist { cb(p, false, false) @@ -91,11 +88,12 @@ func (c *PlayerCacheMgr) Get(plt string, snid int32, cb func(*PlayerCacheItem, b } c.playerCbs[snid] = []func(*PlayerCacheItem, bool, bool){cb} - var isnew bool + var isNew bool var replays []*internal.PlayerLoadReplay task.New(core.CoreObject(), task.CallableWrapper(func(o *basic.Object) interface{} { pi, flag := model.GetPlayerDataBySnId(plt, snid, true, createIfNotExist) - isnew = flag + isNew = flag + // 查询其它玩家数据 for _, v := range internal.GetPlayerLoads() { replays = append(replays, v.Load(plt, snid, pi)) } @@ -119,22 +117,26 @@ func (c *PlayerCacheMgr) Get(plt string, snid int32, cb func(*PlayerCacheItem, b } } + if su { + if len(replays) != len(internal.GetPlayerLoads()) { + su = false + } + } + if !su { c.cacheInvalidPlayerId(snid) - delete(c.playerCbs, snid) - for _, cb := range c.playerCbs[snid] { - cb(nil, true, false) + for _, v := range c.playerCbs[snid] { + v(nil, true, false) } + delete(c.playerCbs, snid) return } - if len(replays) == len(internal.GetPlayerLoads()) { - for k, v := range internal.GetPlayerLoads() { - if v == nil || replays[k] == nil { - continue - } - v.Callback(pi, replays[k]) + for k, v := range internal.GetPlayerLoads() { + if v == nil || replays[k] == nil { + continue } + v.Callback(pi, replays[k]) } // 查询成功,缓存数据,执行cb方法 @@ -142,38 +144,35 @@ func (c *PlayerCacheMgr) Get(plt string, snid int32, cb func(*PlayerCacheItem, b if !ok { item = &PlayerCacheItem{PlayerData: pi} c.playerMap[snid] = item - c.RegisterDbSaverTask(item) + c.Push(item) } - if cbs, exist := c.playerCbs[snid]; exist { - delete(c.playerCbs, snid) - for _, cb := range cbs { - cb(item, true, isnew) - } + for _, v := range c.playerCbs[snid] { + v(item, true, isNew) } - + delete(c.playerCbs, snid) })).StartByExecutor(fmt.Sprintf("Player%v", snid)) } -func (c *PlayerCacheMgr) GetMore(plt string, snid []int32, cb func([]*PlayerCacheItem, bool)) { - isAsyn := false - count := len(snid) - result := make([]*PlayerCacheItem, 0, count) - innerCb := func(item *PlayerCacheItem, asyn, isnew bool) { - if item != nil { - result = append(result, item) - } - if asyn { - isAsyn = true - } - count-- - if count == 0 { - cb(result, isAsyn) - } - } - for _, id := range snid { - c.Get(plt, id, innerCb, false) - } -} +//func (c *PlayerCacheMgr) GetMore(plt string, snid []int32, cb func([]*PlayerCacheItem, bool)) { +// isDB := false +// count := len(snid) +// result := make([]*PlayerCacheItem, 0, count) +// innerCb := func(item *PlayerCacheItem, isFindDB, isNew bool) { +// if item != nil { +// result = append(result, item) +// } +// if isFindDB { +// isDB = true +// } +// count-- +// if count == 0 { +// cb(result, isDB) +// } +// } +// for _, id := range snid { +// c.Get(plt, id, innerCb, false) +// } +//} func (c *PlayerCacheMgr) cacheInvalidPlayerId(snid int32) { if len(c.playerInvalidIds) >= InvalidPlayerCacheMax { @@ -194,38 +193,72 @@ func (c *PlayerCacheMgr) UnCacheInvalidPlayerId(snid int32) { delete(c.playerInvalidIds, snid) } +// 保存没有登录缓存的玩家数据 +func (c *PlayerCacheMgr) saveCache(p *PlayerCacheItem, isSync bool) { + if p == nil { + return + } + + saveFunc := func(v internal.PlayerLoader) { + if v == nil { + return + } + v.Save(p.Platform, p.SnId, true, true) + logger.Logger.Infof("PlayerCacheMgr SaveCache snid:%v", p.SnId) + } + releaseFunc := func(v internal.PlayerLoader) { + if v == nil { + return + } + if PlayerMgrSington.GetPlayerBySnId(p.SnId) == nil { + v.Release(p.Platform, p.SnId) + logger.Logger.Infof("PlayerCacheMgr SaveCache Release snid:%v", p.SnId) + } + } + + if PlayerMgrSington.GetPlayerBySnId(p.SnId) == nil { + if isSync { + for _, v := range internal.GetPlayerLoads() { + saveFunc(v) + releaseFunc(v) + } + } else { + for i := 0; i < len(internal.GetPlayerLoads()); i++ { + v := internal.GetPlayerLoads()[i] + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + saveFunc(v) + return nil + }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { + releaseFunc(v) + })).StartByExecutor(fmt.Sprintf("Player%v", p.SnId)) + } + } + } +} + func (c *PlayerCacheMgr) ModuleName() string { return "PlayerCacheMgr" } func (c *PlayerCacheMgr) Init() { - c.DbSaver.Init() + c.BalanceQueue = balancequeue.New(ListNumber) } func (c *PlayerCacheMgr) Update() { - // 执行Time2Save之后清除缓存 - c.DbSaver.Update() + c.BalanceQueue.Update() for _, p := range c.playerWaitClr { delete(c.playerMap, p.SnId) - c.UnregisterDbSaveTask(p) + c.Pop(p) - // 释放玩家数据 - if PlayerMgrSington.GetPlayerBySnId(p.SnId) == nil { - for _, v := range internal.GetPlayerLoads() { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - v.Save(p.Platform, p.SnId, true, true) - return nil - }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { - if PlayerMgrSington.GetPlayerBySnId(p.SnId) == nil { - v.Release(p.Platform, p.SnId) - } - })).StartByExecutor(fmt.Sprintf("Player%v", p.SnId)) - } - } + // 更新玩家数据 + c.saveCache(p, false) } c.playerWaitClr = c.playerWaitClr[0:0] } func (c *PlayerCacheMgr) Shutdown() { + for _, v := range c.playerMap { + c.saveCache(v, true) + } module.UnregisteModule(c) } diff --git a/worldsrv/playermgr.go b/worldsrv/playermgr.go index 13defda..ab6d2d5 100644 --- a/worldsrv/playermgr.go +++ b/worldsrv/playermgr.go @@ -25,7 +25,6 @@ var PlayerMgrSington = &PlayerMgr{ sidMap: make(map[int64]*Player), snidMap: make(map[int32]*Player), accountMap: make(map[string]*Player), - tokenMap: make(map[string]*Player), players: make([]*Player, 0, 1024), playerOfPlatform: make(map[string]map[int32]*Player), loading: make(map[string]*PlayerPendingData), @@ -38,12 +37,16 @@ type PlayerPendingData struct { type PlayerMgr struct { common.BaseClockSinker - sidMap map[int64]*Player // sid - snidMap map[int32]*Player // snid - accountMap map[string]*Player // accountid - tokenMap map[string]*Player // 客服token - players []*Player // 只有真实玩家 - playerOfPlatform map[string]map[int32]*Player // platform:snid;只有真实玩家 + // 以连接标识为索引 + sidMap map[int64]*Player + // 以snid为索引 + snidMap map[int32]*Player + // 以账号为索引 + accountMap map[string]*Player + // 只有真实玩家,不包括机器人 + players []*Player + // 平台id:snid:真实玩家 + playerOfPlatform map[string]map[int32]*Player loading map[string]*PlayerPendingData // accountid,控制访问频率 } @@ -100,22 +103,15 @@ func (this *PlayerMgr) AddPlayer(sid int64, playerInfo *model.PlayerData, s *net return false } - if sid == 0 { - logger.Logger.Warnf("(this *PlayerMgr) AddPlayer player sid == 0:") - return false - } - logger.Logger.Trace("(this *PlayerMgr) AddPlayer Set player ip:", player.Ip) this.sidMap[sid] = player - var oldp *Player + var old *Player if p, exist := this.snidMap[player.SnId]; exist { - oldp = p + old = p } this.snidMap[player.SnId] = player this.accountMap[player.AccountId] = player - if player.customerToken != "" { - this.tokenMap[player.customerToken] = player - } + if !player.IsRob { var found bool for i, p := range this.players { @@ -129,9 +125,6 @@ func (this *PlayerMgr) AddPlayer(sid int64, playerInfo *model.PlayerData, s *net if !found { this.players = append(this.players, player) } - if player.HeadUrl == "" { - player.HeadUrl = niceIdMgr.GetRobHeadUrl(player.Head) - } //平台玩家管理器 if pp, exist := this.playerOfPlatform[player.Platform]; exist { @@ -143,15 +136,14 @@ func (this *PlayerMgr) AddPlayer(sid int64, playerInfo *model.PlayerData, s *net } logger.Logger.Tracef("###%v mount to DBSaver[AddPlayer]", player.Name) - if oldp != nil { //删除旧的玩家 - DbSaveInst.UnregisterDbSaveTask(oldp) + if old != nil { //删除旧的玩家 + DbSaveInst.UnregisterDbSaveTask(old) } DbSaveInst.RegisterDbSaverTask(player) - niceIdMgr.NiceIdCheck(player.SnId) - } else { - player.NiceId = niceIdMgr.PopNiceId(player.SnId) - player.HeadUrl = niceIdMgr.GetRobHeadUrlIdx() } + + internal.FirePlayerLogined(player) + return true } @@ -168,9 +160,6 @@ func (this *PlayerMgr) DelPlayer(snid int32) bool { } delete(this.snidMap, player.SnId) delete(this.accountMap, player.AccountId) - if player.customerToken != "" { - delete(this.tokenMap, player.customerToken) - } if !player.IsRob { index := -1 for i, p := range this.players { @@ -187,8 +176,6 @@ func (this *PlayerMgr) DelPlayer(snid int32) bool { if pp, exist := this.playerOfPlatform[player.Platform]; exist { delete(pp, player.SnId) } - - niceIdMgr.PushNiceId(player.NiceId) } for _, v := range internal.GetPlayerLoads() { @@ -197,14 +184,16 @@ func (this *PlayerMgr) DelPlayer(snid int32) bool { player.OnLogouted() + DbSaveInst.UnregisterDbSaveTask(player) + player.Save(true) return true } -// DroplinePlayer 玩家掉线或登出 +// DropPlayer 玩家掉线或登出 // 1.玩家登出 // 2.玩家网络断开 // 3.被踢掉线 -func (this *PlayerMgr) DroplinePlayer(p *Player) { +func (this *PlayerMgr) DropPlayer(p *Player) { delete(this.sidMap, p.sid) } @@ -225,8 +214,8 @@ func (this *PlayerMgr) ReholdPlayer(p *Player, newSid int64, newSess *netlib.Ses this.sidMap[newSid] = p } -// GetPlayer 获取玩家数据(玩家在线) -func (this *PlayerMgr) GetPlayer(id int64) *Player { +// GetOnlinePlayer 获取玩家数据(玩家在线) +func (this *PlayerMgr) GetOnlinePlayer(id int64) *Player { if pi, ok := this.sidMap[id]; ok { return pi } @@ -267,28 +256,6 @@ func (this *PlayerMgr) GetPlayerByAccount(acc string) *Player { return nil } -func (this *PlayerMgr) GetPlayerByToken(token string) *Player { - if p, ok := this.tokenMap[token]; ok { - return p - } - return nil -} - -func (this *PlayerMgr) UpdatePlayerToken(p *Player, newToken string) { - oldToken := p.customerToken - if oldToken != newToken { - if oldToken != "" { - if _, ok := this.tokenMap[oldToken]; ok { - delete(this.tokenMap, oldToken) - } - } - if newToken != "" { - this.tokenMap[newToken] = p - p.customerToken = newToken - } - } -} - // BroadcastMessage 给所有玩家发消息 func (this *PlayerMgr) BroadcastMessage(packetid int, rawpack interface{}) bool { sc := &srvproto.BCSessionUnion{} @@ -320,6 +287,7 @@ func (this *PlayerMgr) BroadcastMessageToPlatform(platform string, packetid int, } } +// BroadcastDataConfigToPlatform 广播配置数据更新 func (this *PlayerMgr) BroadcastDataConfigToPlatform(platform string, tp int) { packetId := int(playerproto.PlayerPacketID_PACKET_SCDataConfig) pack := &playerproto.SCDataConfig{} @@ -358,7 +326,8 @@ func (this *PlayerMgr) BroadcastMessageToPlatformByFunc(platform string, packeti } } -// BroadcastMessageToPlatformWithHall 给某个平台所有在大厅中的玩家发消息 +// BroadcastMessageToPlatformWithHall 发送大厅消息,不包括在游戏中的玩家 +// 如果是好友,支持消息屏蔽 func (this *PlayerMgr) BroadcastMessageToPlatformWithHall(platform string, snid int32, packetid int, rawpack interface{}) { if platform == "" { this.BroadcastMessage(packetid, rawpack) @@ -409,9 +378,9 @@ func (this *PlayerMgr) BroadcastMessageToGroup(packetid int, rawpack interface{} } // BroadcastMessageToTarget 给某些玩家发消息 -func (this *PlayerMgr) BroadcastMessageToTarget(target []int32, packetid int, rawpack interface{}) { +func (this *PlayerMgr) BroadcastMessageToTarget(snIds []int32, packetid int, rawpack interface{}) { mgs := make(map[*netlib.Session][]*srvproto.MCSessionUnion) - for _, v := range target { + for _, v := range snIds { d := this.snidMap[v] if d != nil && d.gateSess != nil && d.IsOnLine() { mgs[d.gateSess] = append(mgs[d.gateSess], &srvproto.MCSessionUnion{ @@ -515,55 +484,7 @@ func (this *PlayerMgr) SaveAll() { logger.Logger.Infof("===@PlayerMgr.SaveAll END@===, total:%v saveCnt:%v failCnt:%v nochangeCnt:%v take:%v", count, saveCnt, failCnt, nochangeCnt, time.Now().Sub(start)) } -// 黑名单事件 -//func (this *PlayerMgr) OnAddBlackInfo(blackinfo *BlackInfo) { -// if blackinfo.Snid > 0 { -// if p := this.GetPlayerBySnId(blackinfo.Snid); p != nil { -// p.PlayerData.BlacklistType = int32(blackinfo.BlackType) -// p.dirty = true -// p.Time2Save() -// } else { -// task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { -// model.UpdatePlayerBlacklistType(blackinfo.Platform, blackinfo.Snid, int32(blackinfo.BlackType)) -// return nil -// }), nil, "PlayerMgrOnAddBlackInfo").Start() -// } -// } -//} - -//func (this *PlayerMgr) OnEditBlackInfo(blackinfo *BlackInfo) { -// //nothing -// //if blackinfo.Snid > 0 { -// // if p := this.GetPlayerBySnId(blackinfo.Snid); p != nil { -// // p.PlayerData.BlacklistType = int32(blackinfo.BlackType) -// // p.dirty = true -// // p.Time2Save() -// // } else { -// // task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { -// // model.UpdatePlayerBlacklistType(blackinfo.Platform, blackinfo.Snid, int32(blackinfo.BlackType)) -// // return nil -// // }), nil, "PlayerMgrOnEditBlackInfo").Start() -// // } -// //} -//} - -//func (this *PlayerMgr) OnRemoveBlackInfo(blackinfo *BlackInfo) { -// //nothing -// //if blackinfo.Snid > 0 { -// // if p := this.GetPlayerBySnId(blackinfo.Snid); p != nil { -// // p.PlayerData.BlacklistType = 0 -// // p.dirty = true -// // p.Time2Save() -// // } else { -// // task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { -// // model.UpdatePlayerBlacklistType(blackinfo.Platform, blackinfo.Snid, int32(0)) -// // return nil -// // }), nil, "PlayerMgrOnRemoveBlackInfo").Start() -// // } -// //} -//} - -func (this *PlayerMgr) KickoutByPlatform(name string) { +func (this *PlayerMgr) KickByPlatform(name string) { for _, p := range this.players { if name == "" || p.Platform == name { p.Kickout(common.KickReason_Disconnection) @@ -589,9 +510,6 @@ func (this *PlayerMgr) LoadRobots() { if player != nil { this.snidMap[player.SnId] = player this.accountMap[player.AccountId] = player - if player.customerToken != "" { - this.tokenMap[player.customerToken] = player - } } } } @@ -716,18 +634,6 @@ func (p *PlayerMgr) UpdateHeadUrl(snId int32, url string) { } } -//func (p *PlayerMgr) ModifyActSwitchToPlayer(platform string, modify bool) { -// if modify { //活动开关修改了才去更新活动开关 -// if players, ok := p.playerOfPlatform[platform]; ok { -// for _, p := range players { -// if p != nil && !p.IsRob { -// p.ModifyActSwitch() -// } -// } -// } -// } -//} - /* 推荐好友规则 1.优先判断在线玩家人数N diff --git a/worldsrv/task_login.go b/worldsrv/task_login.go index 0c52e59..2840aa3 100644 --- a/worldsrv/task_login.go +++ b/worldsrv/task_login.go @@ -89,7 +89,7 @@ func (t *TaskLogin) Call(o *basic.Object) interface{} { Plt: acc.Platform, AccId: acc.AccountId.Hex(), NickName: "", - HeadUrl: niceIdMgr.GetRobHeadUrlIdx(), + HeadUrl: GetRobHeadUrlIdx(), }) if playerData == nil || !tf { return nil