Compare commits

...

7 Commits

Author SHA1 Message Date
sk 1acfab2ac7 修复jwt超时设置 2024-11-12 16:47:37 +08:00
sk 3eb997c7c3 隐藏关闭的竞技馆配置房间 2024-11-12 16:13:13 +08:00
sk 310156dd35 兑换商城地址 2024-11-12 15:56:27 +08:00
sk 90e11a0dad 兑换商城地址 2024-11-12 15:08:16 +08:00
sk 4da947cd56 Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop 2024-11-12 13:11:40 +08:00
sk d1afed32c2 缓存优化 2024-11-12 10:51:04 +08:00
sk 8aaf1b40f3 rename 2024-11-11 11:44:20 +08:00
44 changed files with 1495 additions and 2140 deletions

View File

@ -56,22 +56,22 @@ func (this *SSTransmitHandler) Process(s *netlib.Session, packetid int, data int
if transmitPack, ok := data.(*server.SSTransmit); ok {
pd := transmitPack.GetPacketData()
sid := transmitPack.GetSessionId()
packetid, packet, err := netlib.UnmarshalPacket(pd)
packetId, packet, err := netlib.UnmarshalPacket(pd)
if err == nil {
h := GetHandler(packetid)
h := GetHandler(packetId)
if h != nil {
utils.DumpStackIfPanic(fmt.Sprintf("SSTransmitHandler.Process error, packetid:%v", packetid))
watch := profile.TimeStatisticMgr.WatchStart(fmt.Sprintf("/action/packet:%v", packetid), profile.TIME_ELEMENT_ACTION)
err := h.Process(s, packetid, packet, sid)
utils.DumpStackIfPanic(fmt.Sprintf("SSTransmitHandler.Process error, packetId:%v", packetId))
watch := profile.TimeStatisticMgr.WatchStart(fmt.Sprintf("/action/packet:%v", packetId), profile.TIME_ELEMENT_ACTION)
err := h.Process(s, packetId, packet, sid)
if watch != nil {
watch.Stop()
}
if err != nil {
logger.Logger.Tracef("Packet [%d] error:", packetid, err)
logger.Logger.Tracef("Packet [%d] error: %v", packetId, err)
}
return err
} else {
logger.Logger.Tracef("Packet %v not find handler.", packetid)
logger.Logger.Tracef("Packet %v not find handler.", packetId)
}
} else {
logger.Logger.Trace("SSTransmitHandler process err:", err)

View File

@ -6,7 +6,7 @@ import (
"time"
)
//牌序- 2, A, K, Q, J, 10, 9, 8, 7, 6, 5, 4, 3
//牌序- 2, A, K, Q, J,10, 9, 8, 7, 6, 5, 4, 3
//红桃- 51,50,49,48,47,46,45,44,43,42,41,40,39
//方片- 38,37,36,35,34,33,32,31,30,29,28,27,26
//梅花- 25,24,23,22,21,20,19,18,17,16,15,14,13

View File

@ -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

View File

@ -92,6 +92,7 @@ type GameParam struct {
CloseCustomRoomCreate bool // 关闭自定义房间创建
ClientVersion int32 // 客户端版本号
ClientVersionChannel []string // 客户端版本号包渠道
SwapShopUrl string // 交换商城地址
}
var GameParamPath = "../data/gameparam.json"
@ -237,4 +238,7 @@ func InitGameParam() {
if GameParamData.AdminPassword == "" {
GameParamData.AdminPassword = "fjslowopcserg"
}
if GameParamData.SwapShopUrl == "" {
GameParamData.SwapShopUrl = "https://user.hinasakimiu.com/login"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -240,6 +240,8 @@ enum PlayerPacketID {
PACKET_SCPopUpWindowConfig = 2849; //
PACKET_CSUpdateGuide = 2850; //
PACKET_SCUpdateGuide = 2851; //
PACKET_CSGetSwapShopInfo = 2852; //
PACKET_SCGetSwapShopInfo = 2853; //
}
//
@ -1439,4 +1441,13 @@ message PopUpWindowInfo{
string Key = 3;
int32 OpenStatus = 4;//1- 0-
int32 Weight = 5;//
}
//
// PACKET_CSGetSwapShopInfo
message CSGetSwapShopInfo{
}
// PACKET_SCGetSwapShopInfo
message SCGetSwapShopInfo{
string Url = 1;
}

136
util/balancequeue/queue.go Normal file
View File

@ -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
}
}
}

View File

@ -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)
}

View File

@ -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
}

View File

@ -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

View File

@ -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{

View File

@ -15,6 +15,7 @@ import (
"mongo.games.com/game/model"
"mongo.games.com/game/proto"
"mongo.games.com/game/protocol/friend"
"mongo.games.com/game/protocol/welfare"
"mongo.games.com/game/srvdata"
)
@ -32,7 +33,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 +151,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 +226,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 +279,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 +397,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,11 +597,35 @@ 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
}
pack2 := &welfare.NotifyLotteryAward{
Info: &welfare.LotteryInfo{
Id: 45,
StartTs: time.Now().Unix(),
Index: int32(5),
Award: []*welfare.PropInfo{
{
ItemId: 100001,
ItemNum: 100,
},
},
SnId: p.SnId,
Name: p.Name,
RoleId: p.Roles.ModId,
Price: 1000,
WinCode: "123456",
},
}
// 广播中奖结果
PlayerMgrSington.BroadcastMessageToPlatform(p.Platform, int(welfare.SPacketID_PACKET_NotifyLotteryAward), pack2)
logger.Logger.Tracef("广播中奖信息: %v", pack2)
queryContent := msg.GetQueryContent()
if utf8.RuneCountInString(queryContent) < 3 {
return nil

View File

@ -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
}
@ -1398,6 +1398,12 @@ func CSGetPrivateRoomListHandler(s *netlib.Session, packetId int, data interface
Channel: []string{p.LastChannel},
})
for _, v := range scenes {
// 隐藏关闭的房间
cfg := PlatformMgrSingleton.GetConfig(p.Platform).RoomConfig[v.CustomParam.GetRoomConfigId()]
if cfg == nil || cfg.GetOn() != common.On {
continue
}
needPassword := 0
if v.GetPassword() != "" {
needPassword = 1
@ -1458,7 +1464,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 +1481,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 +1511,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
}

View File

@ -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{

View File

@ -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

View File

@ -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,11 +16,11 @@ 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[*Player, *Scene](p)
} else {
p.Logout()
}

View File

@ -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
}

View File

@ -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

View File

@ -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)
// }

View File

@ -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

View File

@ -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

View File

@ -16,6 +16,7 @@ import (
"time"
"unicode/utf8"
"github.com/golang-jwt/jwt/v4"
"mongo.games.com/goserver/core/basic"
"mongo.games.com/goserver/core/i18n"
"mongo.games.com/goserver/core/logger"
@ -29,6 +30,7 @@ import (
player_proto "mongo.games.com/game/protocol/player"
webapi_proto "mongo.games.com/game/protocol/webapi"
"mongo.games.com/game/webapi"
"mongo.games.com/game/worldsrv/internal"
)
var reTelRule, _ = regexp.Compile(`^(1[3|4|5|6|7|8|9][0-9]\d{4,8})$`)
@ -47,7 +49,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 +153,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 +274,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 +313,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 +367,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 +407,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 +584,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 +714,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 +857,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 +987,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 +1130,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 +1187,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 +1410,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 +1482,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 +1507,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 +1542,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 +1581,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 +1617,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 +1656,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 +1714,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 +1739,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 +1763,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 +1788,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 +1882,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
@ -2004,7 +2006,7 @@ func CSPlayerData(s *netlib.Session, packetid int, data interface{}, sid int64)
if player.IsOnLine() {
if player.sid != 0 && player.sid != sid {
//Kick the exist player disconnect
player.Kickout(common.KickReason_OtherLogin)
player.Kick(common.KickReason_OtherLogin)
}
}
@ -2022,7 +2024,7 @@ func CSPlayerData(s *netlib.Session, packetid int, data interface{}, sid int64)
proto.SetDefaults(scPlayerData)
player.SendRawToClientIncOffLine(sid, s, int(player_proto.PlayerPacketID_PACKET_SC_PLAYERDATA), scPlayerData)
//Kick the exist player disconnect
player.Kickout(common.KickReason_Freeze)
player.Kick(common.KickReason_Freeze)
return nil
}
@ -2036,7 +2038,7 @@ func CSPlayerData(s *netlib.Session, packetid int, data interface{}, sid int64)
proto.SetDefaults(scPlayerData)
player.SendRawToClientIncOffLine(sid, s, int(player_proto.PlayerPacketID_PACKET_SC_PLAYERDATA), scPlayerData)
//Kick the exist player disconnect
player.Kickout(common.KickReason_Freeze)
player.Kick(common.KickReason_Freeze)
return nil
}
@ -2056,7 +2058,7 @@ func CSPlayerData(s *netlib.Session, packetid int, data interface{}, sid int64)
proto.SetDefaults(scPlayerData)
player.SendRawToClientIncOffLine(sid, s, int(player_proto.PlayerPacketID_PACKET_SC_PLAYERDATA), scPlayerData)
//Kick the exist player disconnect
player.Kickout(common.KickReason_Freeze)
player.Kick(common.KickReason_Freeze)
return nil
}
@ -2068,40 +2070,18 @@ func CSPlayerData(s *netlib.Session, packetid int, data interface{}, sid int64)
proto.SetDefaults(scPlayerData)
player.SendRawToClientIncOffLine(sid, s, int(player_proto.PlayerPacketID_PACKET_SC_PLAYERDATA), scPlayerData)
//Kick the exist player disconnect
player.Kickout(common.KickReason_Freeze)
player.Kick(common.KickReason_Freeze)
return nil
}
}
if !player.IsRob {
if _, ok := BlackListMgrSington.CheckLogin(player.PlayerData); !ok {
//var msg string
//if bi != nil {
// msg = i18n.Tr("languages", "BlackListLimit2Args", player.SnId, bi.Id, player.SnId, bi.Id, player.SnId, bi.Id, player.SnId, bi.Id)
//} else {
// msg = i18n.Tr("languages", "BlackListLimit1Args", player.SnId, player.SnId, player.SnId, player.SnId)
//}
//common.SendSrvMsg(player, common.SRVMSG_CODE_DEFAULT, msg)
//scPlayerData := &player_proto.SCPlayerData{
// OpRetCode: player_proto.OpResultCode_OPRC_InBlackList,
//}
//proto.SetDefaults(scPlayerData)
//player.SendToClient(int(player_proto.PlayerPacketID_PACKET_SC_PLAYERDATA), scPlayerData)
//Kick the exist player disconnect
player.Kickout(common.KickReason_Freeze)
player.Kick(common.KickReason_Freeze)
return nil
}
}
// 给玩家发送三方余额状态
//statePack := &gamehall_proto.SCThridGameBalanceUpdateState{}
//if player.thridBalanceReqIsSucces {
// statePack.OpRetCode = gamehall_proto.OpResultCode_Game_OPRC_Sucess_Game
//} else {
// statePack.OpRetCode = gamehall_proto.OpResultCode_Game_OPRC_Error_Game
//}
//player.SendRawToClientIncOffLine(sid, s, int(gamehall_proto.GameHallPacketID_PACKET_SC_THRIDGAMEBALANCEUPDATESTATE), statePack)
//抽奖次数兼容老玩家
if !player.IsRob && !player.InitLotteryStatus && WelfareMgrSington.GetPhoneLotteryStatus(player.Platform) == model.WelfareOpen {
player.addLotteryCount(20)
@ -2114,6 +2094,7 @@ func CSPlayerData(s *netlib.Session, packetid int, data interface{}, sid int64)
playerFunc(player, cspl)
PlayerMgrSington.ReholdPlayer(player, sid, s)
player.OnRehold()
internal.FirePlayerRehold[*Player, *Scene](player)
player.SendPlayerInfo()
return nil
}
@ -2141,87 +2122,27 @@ 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()
internal.FirePlayerLogined[*Player, *Scene](player)
player.Kick(common.KickReason_Freeze)
return
}
}
playerFunc(player, cspl)
player.OnLogined()
internal.FirePlayerLogined[*Player, *Scene](player)
player.SendPlayerInfo()
}, true)
return nil
@ -2230,7 +2151,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 +2254,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 +2312,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 +2341,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 +2372,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 +2497,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 +2743,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 +2808,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 +2829,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 +2868,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 +2965,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 +3006,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 +3206,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 +3249,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 +3278,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
}
@ -3380,6 +3301,38 @@ func CSPopUpWindowConfig(s *netlib.Session, packetId int, data interface{}, sid
return nil
}
func CSGetSwapShopInfo(s *netlib.Session, packetId int, data interface{}, sid int64) error {
logger.Logger.Tracef("CSGetSwapShopInfo %v", data)
p := PlayerMgrSington.GetOnlinePlayer(sid)
if p == nil {
return nil
}
_, ok := data.(*player_proto.CSGetSwapShopInfo)
if !ok {
return nil
}
token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
"snid": p.SnId,
"platform": p.Platform,
"exp": time.Now().Add(time.Hour * 24).Unix(),
})
str, err := token.SignedString([]byte(common.Config.AppId))
if err != nil {
logger.Logger.Errorf("CSGetSwapShopInfo err:%v", err)
return nil
}
pack := &player_proto.SCGetSwapShopInfo{
Url: fmt.Sprintf("%s?access_token=%s", model.GameParamData.SwapShopUrl, str),
}
p.SendToClient(int(player_proto.PlayerPacketID_PACKET_SCGetSwapShopInfo), pack)
logger.Logger.Tracef("SCGetSwapShopInfo %v", pack)
return nil
}
func init() {
// 用户信息
common.Register(int(player_proto.PlayerPacketID_PACKET_CS_PLAYERDATA), player_proto.CSPlayerData{}, CSPlayerData)
@ -3419,4 +3372,6 @@ func init() {
common.Register(int(player_proto.PlayerPacketID_PACKET_CSDollConfig), player_proto.CSCLAWDOLLConfig{}, CSCLAWDOLLConfig)
//客户端请求弹窗配置信息
common.Register(int(player_proto.PlayerPacketID_PACKET_CSPopUpWindowConfig), player_proto.CSPopUpWindowConfig{}, CSPopUpWindowConfig)
// 获取兑换商城网页地址
common.Register(int(player_proto.PlayerPacketID_PACKET_CSGetSwapShopInfo), player_proto.CSGetSwapShopInfo{}, CSGetSwapShopInfo)
}

View File

@ -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

View File

@ -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{})
}

View File

@ -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

View File

@ -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
}

View File

@ -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

View File

@ -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
}

View File

@ -125,9 +125,14 @@ func (c *CustomRoomMgr) GetRoomList(plt string) []*gamehall.PrivateRoomInfo {
}
var ret []*gamehall.PrivateRoomInfo
for _, v := range d.List {
if v != nil && v.PrivateRoomInfo != nil {
ret = append(ret, v.PrivateRoomInfo)
if v == nil || v.PrivateRoomInfo == nil {
continue
}
cfg := PlatformMgrSingleton.GetConfig(plt).RoomConfig[v.RoomConfigId]
if cfg == nil || cfg.GetOn() != common.On {
continue
}
ret = append(ret, v.PrivateRoomInfo)
}
return ret
}

View File

@ -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: 600,
}
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() {

View File

@ -420,7 +420,7 @@ func handlerEvent(ctx context.Context, completeKey string, isInit bool, event *c
}
for _, p := range targetPlayer {
if p.sid != 0 {
p.Kickout(int32(loginproto.SSDisconnectTypeCode_SSDTC_BlackList))
p.Kick(int32(loginproto.SSDisconnectTypeCode_SSDTC_BlackList))
} else {
LoginStateMgrSington.LogoutByAccount(p.AccountId)
}

18
worldsrv/headurl.go Normal file
View File

@ -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)
}

View File

@ -1,12 +1,10 @@
package internal
type Player any
import "mongo.games.com/game/common"
type Scene any
var _playerListeners []interface{}
var _playerListeners []PlayerListener
func RegisterPlayerListener(l PlayerListener) {
func RegisterPlayerListener[Player, Scene any](l PlayerListener[Player, Scene]) {
for _, ll := range _playerListeners {
if ll == l {
return
@ -15,144 +13,192 @@ func RegisterPlayerListener(l PlayerListener) {
_playerListeners = append(_playerListeners, l)
}
type PlayerListener interface {
type PlayerListener[Player, Scene any] interface {
common.ClockSinker
// 登出相关
OnPlayerLogined(p Player) // 玩家登录时触发
OnPlayerLogouted(p Player) // 玩家登出时触发
OnPlayerDropLine(p Player) // 玩家掉线时触发
OnPlayerRehold(p Player) // 玩家重新连接时触发
// 时间相关
OnPlayerSecTimer(p Player) // 每秒触发
OnPlayerMiniTimer(p Player) // 每分钟触发
OnPlayerHourTimer(p Player) // 每小时触发
OnPlayerDayTimer(p Player, login, continuous bool) // 每天触发login表示是否登录continuous表示是否连续登录
OnPlayerWeekTimer(p Player) // 每周触发
OnPlayerMonthTimer(p Player) // 每月触发
// 业务相关
OnPlayerEnterScene(p Player, s Scene) // 玩家进入场景时触发
OnPlayerLeaveScene(p Player, s Scene) // 玩家离开场景时触发
OnPlayerReturnScene(p Player, s Scene) // 玩家返回房间时触发
OnPlayerEnterSceneBefore(p Player, s Scene) // 玩家进入场景前触发
OnPlayerEnterSceneAfter(p Player, s Scene) // 玩家进入场景后触发
OnPlayerLeaveSceneBefore(p Player, s Scene) // 玩家离开场景前触发
OnPlayerLeaveSceneAfter(p Player, s Scene) // 玩家离开场景后触发
OnPlayerReturnSceneBefore(p Player, s Scene) // 玩家返回房间前触发
OnPlayerReturnSceneAfter(p Player, s Scene) // 玩家返回房间后触发
}
func FirePlayerLogined(p Player) {
func FirePlayerLogined[Player, Scene any](p Player) {
for _, l := range _playerListeners {
if l != nil {
l.OnPlayerLogined(p)
l.(PlayerListener[Player, Scene]).OnPlayerLogined(p)
}
}
}
func FirePlayerLogouted(p Player) {
func FirePlayerLogouted[Player, Scene any](p Player) {
for _, l := range _playerListeners {
if l != nil {
l.OnPlayerLogouted(p)
l.(PlayerListener[Player, Scene]).OnPlayerLogouted(p)
}
}
}
func FirePlayerDropLine(p Player) {
func FirePlayerDropLine[Player, Scene any](p Player) {
for _, l := range _playerListeners {
if l != nil {
l.OnPlayerDropLine(p)
l.(PlayerListener[Player, Scene]).OnPlayerDropLine(p)
}
}
}
func FirePlayerRehold(p Player) {
func FirePlayerRehold[Player, Scene any](p Player) {
for _, l := range _playerListeners {
if l != nil {
l.OnPlayerRehold(p)
l.(PlayerListener[Player, Scene]).OnPlayerRehold(p)
}
}
}
func FirePlayerSecTimer(p Player) {
func FirePlayerEnterSceneBefore[Player, Scene any](p Player, s Scene) {
for _, l := range _playerListeners {
if l != nil {
l.OnPlayerSecTimer(p)
l.(PlayerListener[Player, Scene]).OnPlayerEnterSceneBefore(p, s)
}
}
}
func FirePlayerMiniTimer(p Player) {
func FirePlayerEnterSceneAfter[Player, Scene any](p Player, s Scene) {
for _, l := range _playerListeners {
if l != nil {
l.OnPlayerMiniTimer(p)
l.(PlayerListener[Player, Scene]).OnPlayerEnterSceneAfter(p, s)
}
}
}
func FirePlayerHourTimer(p Player) {
func FirePlayerLeaveSceneBefore[Player, Scene any](p Player, s Scene) {
for _, l := range _playerListeners {
if l != nil {
l.OnPlayerHourTimer(p)
l.(PlayerListener[Player, Scene]).OnPlayerLeaveSceneBefore(p, s)
}
}
}
func FirePlayerDayTimer(p Player, login, continuous bool) {
func FirePlayerLeaveSceneAfter[Player, Scene any](p Player, s Scene) {
for _, l := range _playerListeners {
if l != nil {
l.OnPlayerDayTimer(p, login, continuous)
l.(PlayerListener[Player, Scene]).OnPlayerLeaveSceneAfter(p, s)
}
}
}
func FirePlayerWeekTimer(p Player) {
func FirePlayerReturnSceneBefore[Player, Scene any](p Player, s Scene) {
for _, l := range _playerListeners {
if l != nil {
l.OnPlayerWeekTimer(p)
l.(PlayerListener[Player, Scene]).OnPlayerReturnSceneBefore(p, s)
}
}
}
func FirePlayerMonthTimer(p Player) {
func FirePlayerReturnSceneAfter[Player, Scene any](p Player, s Scene) {
for _, l := range _playerListeners {
if l != nil {
l.OnPlayerMonthTimer(p)
l.(PlayerListener[Player, Scene]).OnPlayerReturnSceneAfter(p, s)
}
}
}
func FirePlayerEnterScene(p Player, s Scene) {
for _, l := range _playerListeners {
if l != nil {
l.OnPlayerEnterScene(p, s)
}
type BasePlayerListener[Player, Scene any] struct {
common.ClockFunc
}
func (l *BasePlayerListener[Player, Scene]) OnPlayerLogined(p Player) {}
func (l *BasePlayerListener[Player, Scene]) OnPlayerLogouted(p Player) {}
func (l *BasePlayerListener[Player, Scene]) OnPlayerDropLine(p Player) {}
func (l *BasePlayerListener[Player, Scene]) OnPlayerRehold(p Player) {}
func (l *BasePlayerListener[Player, Scene]) OnPlayerEnterSceneBefore(p Player, s Scene) {}
func (l *BasePlayerListener[Player, Scene]) OnPlayerEnterSceneAfter(p Player, s Scene) {}
func (l *BasePlayerListener[Player, Scene]) OnPlayerLeaveSceneBefore(p Player, s Scene) {}
func (l *BasePlayerListener[Player, Scene]) OnPlayerLeaveSceneAfter(p Player, s Scene) {}
func (l *BasePlayerListener[Player, Scene]) OnPlayerReturnSceneBefore(p Player, s Scene) {}
func (l *BasePlayerListener[Player, Scene]) OnPlayerReturnSceneAfter(p Player, s Scene) {}
type PlayerListenerFunc[Player, Scene any] struct {
common.ClockFunc
OnPlayerLoginedFunc func(p Player)
OnPlayerLogoutedFunc func(p Player)
OnPlayerDropLineFunc func(p Player)
OnPlayerReholdFunc func(p Player)
OnPlayerEnterSceneBeforeFunc func(p Player, s Scene)
OnPlayerEnterSceneAfterFunc func(p Player, s Scene)
OnPlayerLeaveSceneBeforeFunc func(p Player, s Scene)
OnPlayerLeaveSceneAfterFunc func(p Player, s Scene)
OnPlayerReturnSceneBeforeFunc func(p Player, s Scene)
OnPlayerReturnSceneAfterFunc func(p Player, s Scene)
}
func (l *PlayerListenerFunc[Player, Scene]) OnPlayerLogined(p Player) {
if l.OnPlayerLoginedFunc != nil {
l.OnPlayerLoginedFunc(p)
}
}
func FirePlayerLeaveScene(p Player, s Scene) {
for _, l := range _playerListeners {
if l != nil {
l.OnPlayerLeaveScene(p, s)
}
func (l *PlayerListenerFunc[Player, Scene]) OnPlayerLogouted(p Player) {
if l.OnPlayerLogoutedFunc != nil {
l.OnPlayerLogoutedFunc(p)
}
}
func FirePlayerReturnScene(p Player, s Scene) {
for _, l := range _playerListeners {
if l != nil {
l.OnPlayerReturnScene(p, s)
}
func (l *PlayerListenerFunc[Player, Scene]) OnPlayerDropLine(p Player) {
if l.OnPlayerDropLineFunc != nil {
l.OnPlayerDropLineFunc(p)
}
}
type BasePlayerListener struct {
func (l *PlayerListenerFunc[Player, Scene]) OnPlayerRehold(p Player) {
if l.OnPlayerReholdFunc != nil {
l.OnPlayerReholdFunc(p)
}
}
func (l *BasePlayerListener) OnPlayerLogined(p Player) {}
func (l *BasePlayerListener) OnPlayerLogouted(p Player) {}
func (l *BasePlayerListener) OnPlayerDropLine(p Player) {}
func (l *BasePlayerListener) OnPlayerRehold(p Player) {}
func (l *BasePlayerListener) OnPlayerSecTimer(p Player) {}
func (l *BasePlayerListener) OnPlayerMiniTimer(p Player) {}
func (l *BasePlayerListener) OnPlayerHourTimer(p Player) {}
func (l *BasePlayerListener) OnPlayerDayTimer(p Player, login, continuous bool) {}
func (l *BasePlayerListener) OnPlayerWeekTimer(p Player) {}
func (l *BasePlayerListener) OnPlayerMonthTimer(p Player) {}
func (l *BasePlayerListener) OnPlayerEnterScene(p Player, s Scene) {}
func (l *BasePlayerListener) OnPlayerLeaveScene(p Player, s Scene) {}
func (l *BasePlayerListener) OnPlayerReturnScene(p Player, s Scene) {}
func (l *PlayerListenerFunc[Player, Scene]) OnPlayerEnterSceneBefore(p Player, s Scene) {
if l.OnPlayerEnterSceneBeforeFunc != nil {
l.OnPlayerEnterSceneBeforeFunc(p, s)
}
}
func (l *PlayerListenerFunc[Player, Scene]) OnPlayerEnterSceneAfter(p Player, s Scene) {
if l.OnPlayerEnterSceneAfterFunc != nil {
l.OnPlayerEnterSceneAfterFunc(p, s)
}
}
func (l *PlayerListenerFunc[Player, Scene]) OnPlayerLeaveSceneBefore(p Player, s Scene) {
if l.OnPlayerLeaveSceneBeforeFunc != nil {
l.OnPlayerLeaveSceneBeforeFunc(p, s)
}
}
func (l *PlayerListenerFunc[Player, Scene]) OnPlayerLeaveSceneAfter(p Player, s Scene) {
if l.OnPlayerLeaveSceneAfterFunc != nil {
l.OnPlayerLeaveSceneAfterFunc(p, s)
}
}
func (l *PlayerListenerFunc[Player, Scene]) OnPlayerReturnSceneBefore(p Player, s Scene) {
if l.OnPlayerReturnSceneBeforeFunc != nil {
l.OnPlayerReturnSceneBeforeFunc(p, s)
}
}
func (l *PlayerListenerFunc[Player, Scene]) OnPlayerReturnSceneAfter(p Player, s Scene) {
if l.OnPlayerReturnSceneAfterFunc != nil {
l.OnPlayerReturnSceneAfterFunc(p, s)
}
}
func RegisterPlayerListenerFunc[P, S any](l *PlayerListenerFunc[P, S]) {
common.RegisterClockFunc(&l.ClockFunc)
RegisterPlayerListener(l)
}

View File

@ -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()
}

View File

@ -759,6 +759,7 @@ func (l *LotteryMgr) AddCostRoomCard(plt string, snid int32, n int64) {
logger.Logger.Errorf("AddCostRoomCard snid:%v not found", snid)
return
}
PlayerMgrSington.AddPlayer(0, item.PlayerData, nil)
f()
}, false)
return

View File

@ -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
})
}

View File

@ -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
}

File diff suppressed because it is too large Load Diff

View File

@ -10,15 +10,21 @@ import (
"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 +36,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 +87,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 +116,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 +143,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 {
@ -199,29 +197,14 @@ func (c *PlayerCacheMgr) ModuleName() string {
}
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)
// 释放玩家数据
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.Pop(p)
}
c.playerWaitClr = c.playerWaitClr[0:0]
}

View File

@ -1,7 +1,9 @@
package main
import (
"fmt"
"math/rand"
"os"
"time"
"mongo.games.com/goserver/core/basic"
@ -25,7 +27,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,14 +39,18 @@ 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,控制访问频率
loading map[string]*PlayerPendingData // accountid,控制访问频率;登录状态标记
}
// PlayerStatics 在线统计
@ -100,22 +105,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 +127,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 {
@ -142,21 +137,76 @@ func (this *PlayerMgr) AddPlayer(sid int64, playerInfo *model.PlayerData, s *net
this.playerOfPlatform[player.Platform] = pp
}
logger.Logger.Tracef("###%v mount to DBSaver[AddPlayer]", player.Name)
if oldp != nil { //删除旧的玩家
DbSaveInst.UnregisterDbSaveTask(oldp)
logger.Logger.Tracef("###%v mount to DBSaver[AddPlayer]", player.SnId)
if old != nil { //删除旧的玩家
DbSaveInst.UnregisterDbSaveTask(old)
}
DbSaveInst.RegisterDbSaverTask(player)
niceIdMgr.NiceIdCheck(player.SnId)
} else {
player.NiceId = niceIdMgr.PopNiceId(player.SnId)
player.HeadUrl = niceIdMgr.GetRobHeadUrlIdx()
}
return true
}
func (this *PlayerMgr) SavePlayer(p *Player, isCopy, force bool) {
if p == nil || p.isDelete {
return
}
if p.IsRob {
return
}
if !p.dirty && !force {
return
}
var pd *model.PlayerData
if isCopy {
pd = model.ClonePlayerData(p.PlayerData)
} else {
pd = p.PlayerData
}
if pd == nil {
logger.Logger.Errorf("Player Time2Save() %v pd is nil", p.SnId)
return
}
t1 := time.Now()
p.dirty = true
// 跨天任务依赖LastLogoutTime的准确性跨天任务是定时器common.ClockMgrSington触发的所以这里要用定时器的触发时间
p.LastLogoutTime = common.ClockMgrSingleton.LastTickTime
pd.LastLogoutTime = common.ClockMgrSingleton.LastTickTime
ok := true
t := task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
if !model.SavePlayerData(pd) {
// save 失败先写到json里面
model.BackupPlayerData(pd)
ok = false
}
for _, v := range internal.GetPlayerLoads() {
v.Save(pd.Platform, pd.SnId, true, force)
}
return ok
}), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) {
if saved, ok := i.(bool); ok && saved {
p.dirty = false
bak := fmt.Sprintf("%v.json", pd.AccountId)
if exist, _ := common.PathExists(bak); exist {
os.Remove(bak)
}
}
logger.Logger.Infof("Player Time2Save() %v take:%v isSuccess:%v", p.SnId, time.Now().Sub(t1), p.dirty == false)
}), "SavePlayerTask")
if b := t.StartByExecutor(fmt.Sprintf("Player%v", p.SnId)); b {
p.lastSaved = time.Now()
}
}
// DelPlayer 清除玩家缓存数据
// 一般真人是数据持久化后删除或数据没有修改,机器人不用持久化(机器人数据没有主动删除)
// 真人数据持久化后删除,机器人不用持久化(机器人数据没有主动删除)
// needSave 是否需要保存数据; 自动删除玩家机制已经保存过数据,不需要再保存;手动删除玩家需要保存数据
func (this *PlayerMgr) DelPlayer(snid int32) bool {
player, ok := this.snidMap[snid]
if !ok || player == nil {
@ -168,9 +218,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,24 +234,31 @@ func (this *PlayerMgr) DelPlayer(snid int32) bool {
if pp, exist := this.playerOfPlatform[player.Platform]; exist {
delete(pp, player.SnId)
}
niceIdMgr.PushNiceId(player.NiceId)
}
if !player.IsCacheState() {
player.OnLogoutFinish()
internal.FirePlayerLogouted[*Player, *Scene](player)
}
DbSaveInst.UnregisterDbSaveTask(player)
// 再保存一次,防止数据丢失,可能脏标记没有设置
this.SavePlayer(player, true, true)
for _, v := range internal.GetPlayerLoads() {
v.Release(player.Platform, player.SnId)
}
player.OnLogouted()
return true
}
// DroplinePlayer 玩家掉线或登出
// DropPlayer 玩家掉线或登出
// 1.玩家登出
// 2.玩家网络断开
// 3.被踢掉线
func (this *PlayerMgr) DroplinePlayer(p *Player) {
func (this *PlayerMgr) DropPlayer(p *Player) {
p.SetOffline()
p.sid = 0
p.gateSess = nil
delete(this.sidMap, p.sid)
}
@ -219,14 +273,22 @@ func (this *PlayerMgr) ReholdPlayer(p *Player, newSid int64, newSess *netlib.Ses
logger.Logger.Errorf("(this *PlayerMgr) ReholdPlayer(snid=%v, new=%v)", p.SnId, newSid)
}
p.SetOnline()
p.sid = newSid
p.gateSess = newSess
p.SetOnline()
this.sidMap[newSid] = p
}
// GetPlayer 获取玩家数据(玩家在线)
func (this *PlayerMgr) GetPlayer(id int64) *Player {
func (this *PlayerMgr) KickByPlatform(name string) {
for _, p := range this.players {
if name == "" || p.Platform == name {
p.Kick(common.KickReason_Disconnection)
}
}
}
// GetOnlinePlayer 获取玩家数据(玩家在线)
func (this *PlayerMgr) GetOnlinePlayer(id int64) *Player {
if pi, ok := this.sidMap[id]; ok {
return pi
}
@ -267,28 +329,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 +360,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 +399,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 +451,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{
@ -429,146 +471,29 @@ func (this *PlayerMgr) BroadcastMessageToTarget(target []int32, packetid int, ra
}
}
// 感兴趣所有clock event
func (this *PlayerMgr) InterestClockEvent() int {
return (1 << common.ClockEventMax) - 1
}
func (this *PlayerMgr) OnSecTimer() {
for _, player := range this.players {
utils.CatchPanic(func() {
player.OnSecTimer()
})
}
}
func (this *PlayerMgr) OnMiniTimer() {
for _, player := range this.players {
utils.CatchPanic(func() {
player.OnMiniTimer()
})
}
}
func (this *PlayerMgr) OnHourTimer() {
for _, player := range this.players {
utils.CatchPanic(func() {
player.OnHourTimer()
})
}
}
func (this *PlayerMgr) OnDayTimer() {
for _, player := range this.players {
utils.CatchPanic(func() {
player.OnDayTimer(false, true, 1)
})
}
}
func (this *PlayerMgr) OnMonthTimer() {
for _, player := range this.players {
utils.CatchPanic(func() {
player.OnMonthTimer()
})
}
}
func (this *PlayerMgr) OnWeekTimer() {
for _, player := range this.players {
utils.CatchPanic(func() {
player.OnWeekTimer()
})
}
}
func (this *PlayerMgr) OnShutdown() {
this.SaveAll()
}
// SaveAll 保存所有数据dirty=true
func (this *PlayerMgr) SaveAll() {
count := len(this.players)
start := time.Now()
saveCnt := 0
failCnt := 0
nochangeCnt := 0
logger.Logger.Info("===@PlayerMgr.SaveAll BEG@=== TotalCount:", count)
logger.Logger.Info("===@SaveAllPlayerBEGIN@=== TotalCount:", count)
for i, p := range this.players {
idx := i + 1
if p.dirty {
if model.SavePlayerData(p.PlayerData) {
logger.Logger.Infof("===@SavePlayerData %v/%v snid:%v coin:%v safebox:%v coinpayts:%v safeboxts:%v gamets:%v save [ok] @=", idx, count, p.SnId, p.Coin, p.SafeBoxCoin, p.CoinPayTs, p.SafeBoxCoinTs, p.GameCoinTs)
saveCnt++
} else {
logger.Logger.Warnf("===@SavePlayerData %v/%v snid:%v coin:%v safebox:%v coinpayts:%v safeboxts:%v gamets:%v save [error]@=", idx, count, p.SnId, p.Coin, p.SafeBoxCoin, p.CoinPayTs, p.SafeBoxCoinTs, p.GameCoinTs)
failCnt++
if model.SavePlayerData(p.PlayerData) {
logger.Logger.Infof("===@SavePlayerData %v/%v snid:%v coin:%v safebox:%v coinpayts:%v safeboxts:%v gamets:%v save [ok] @=",
idx, count, p.SnId, p.Coin, p.SafeBoxCoin, p.CoinPayTs, p.SafeBoxCoinTs, p.GameCoinTs)
for _, v := range internal.GetPlayerLoads() {
v.Save(p.Platform, p.SnId, true, true)
}
saveCnt++
} else {
logger.Logger.Infof("nochange===@SavePlayerData %v/%v snid:%v coin:%v safebox:%v coinpayts:%v safeboxts:%v gamets:%v nochange [ok]@=", idx, count, p.SnId, p.Coin, p.SafeBoxCoin, p.CoinPayTs, p.SafeBoxCoinTs, p.GameCoinTs)
nochangeCnt++
}
for _, v := range internal.GetPlayerLoads() {
v.Save(p.Platform, p.SnId, true, true)
}
}
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) {
for _, p := range this.players {
if name == "" || p.Platform == name {
p.Kickout(common.KickReason_Disconnection)
logger.Logger.Warnf("===@SavePlayerData %v/%v snid:%v coin:%v safebox:%v coinpayts:%v safeboxts:%v gamets:%v save [error]@=",
idx, count, p.SnId, p.Coin, p.SafeBoxCoin, p.CoinPayTs, p.SafeBoxCoinTs, p.GameCoinTs)
failCnt++
}
}
logger.Logger.Infof("===@SaveAllPlayerEND@===, total:%v saveCnt:%v failCnt:%v take:%v", count, saveCnt, failCnt, time.Now().Sub(start))
}
// LoadRobots 预加载机器人数据
@ -589,9 +514,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 +638,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
@ -820,7 +730,6 @@ func (this *PlayerMgr) RecommendFriendRule(platform string, snid int32) []Recomm
}
func init() {
//BlackListMgrSington.RegisterObserver(PlayerMgrSington)
PlayerSubjectSign.AttachName(PlayerMgrSington)
PlayerSubjectSign.AttachHead(PlayerMgrSington)
PlayerSubjectSign.AttachHeadOutline(PlayerMgrSington)
@ -830,5 +739,51 @@ func init() {
PlayerSubjectSign.AttachHead(FriendMgrSington)
// 定时器
common.ClockMgrSingleton.RegisterSinker(PlayerMgrSington)
common.RegisterClockFunc(&common.ClockFunc{
OnSecTimerFunc: func() {
for _, player := range PlayerMgrSington.players {
utils.CatchPanic(func() {
player.OnSecTimer()
})
}
},
OnMiniTimerFunc: func() {
for _, player := range PlayerMgrSington.players {
utils.CatchPanic(func() {
player.OnMiniTimer()
})
}
},
OnHourTimerFunc: func() {
for _, player := range PlayerMgrSington.players {
utils.CatchPanic(func() {
player.OnHourTimer()
})
}
},
OnDayTimerFunc: func() {
for _, player := range PlayerMgrSington.players {
utils.CatchPanic(func() {
player.OnDayTimer(false, true, 1)
})
}
},
OnWeekTimerFunc: func() {
for _, player := range PlayerMgrSington.players {
utils.CatchPanic(func() {
player.OnWeekTimer()
})
}
},
OnMonthTimerFunc: func() {
for _, player := range PlayerMgrSington.players {
utils.CatchPanic(func() {
player.OnMonthTimer()
})
}
},
OnShutdownFunc: func() {
PlayerMgrSington.SaveAll()
},
})
}

View File

@ -90,7 +90,7 @@ func (p *PlayerNotify) SendToClient(tp common.NotifyType, platform string, packe
//}
roomConfigId := d.GetDatas()[0].GetRoomConfigId()
cfg := PlatformMgrSingleton.GetConfig(platform).RoomConfig[roomConfigId]
if cfg == nil {
if cfg == nil || cfg.GetOn() != common.On {
return
}

View File

@ -14,6 +14,14 @@ const (
PROMOTER_TYPE_PROMOTE = 3 //推广员
)
type ErrorString struct {
code string
}
func (e *ErrorString) Error() string {
return e.code
}
var PromoterMgrSington = &PromoterMgr{
PromoterConfigMap: make(map[string]*PromoterConfig),
LastTicket: 0,

View File

@ -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

View File

@ -6,7 +6,6 @@ import (
"errors"
"fmt"
"io"
"mongo.games.com/game/protocol/shop"
"reflect"
"slices"
"sort"
@ -30,6 +29,7 @@ import (
loginproto "mongo.games.com/game/protocol/login"
playerproto "mongo.games.com/game/protocol/player"
"mongo.games.com/game/protocol/server"
"mongo.games.com/game/protocol/shop"
webapiproto "mongo.games.com/game/protocol/webapi"
"mongo.games.com/game/srvdata"
"mongo.games.com/game/webapi"
@ -1036,7 +1036,7 @@ func init() {
task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
return model.FreezeAccount(msg.Platform, player.AccountId, int(msg.Minute))
}), nil, "FreezeAccount").Start()
player.Kickout(common.KickReason_Freeze)
player.Kick(common.KickReason_Freeze)
pack.Tag = webapiproto.TagCode_SUCCESS
pack.Msg = "success"
} else {
@ -1714,7 +1714,7 @@ func init() {
//在线需要踢掉玩家
if uint(msg.BlacklistType)&BlackState_Login != 0 {
logger.Logger.Infof("found platform:%v player:%d snid in blacklist", msg.Platform, player.SnId)
player.Kickout(int32(loginproto.SSDisconnectTypeCode_SSDTC_BlackList))
player.Kick(int32(loginproto.SSDisconnectTypeCode_SSDTC_BlackList))
}
return common.ResponseTag_Ok, pack
} else {
@ -2427,7 +2427,7 @@ func init() {
}
}
p.Kickout(common.KickReason_Freeze)
p.Kick(common.KickReason_Freeze)
PlayerMgrSington.DelPlayer(p.SnId)
LoginStateMgrSington.DelAccountByAccid(p.AccountId)
}