Merge branch 'develop' into release
This commit is contained in:
commit
2f3fa1d739
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -18,16 +18,19 @@ func DataToCli(response any) interface{} {
|
|||
}
|
||||
sort.Slice(Response.BetChangeList, func(i, j int) bool { return Response.BetChangeList[i] < Response.BetChangeList[j] })
|
||||
sort.Slice(Response.BetLevels, func(i, j int) bool { return Response.BetLevels[i] < Response.BetLevels[j] })
|
||||
sort.Slice(Response.BaseBets, func(i, j int) bool { return Response.BaseBets[i] < Response.BaseBets[j] })
|
||||
sort.Slice(BetSizes, func(i, j int) bool { return BetSizes[i] < BetSizes[j] })
|
||||
tableInfo.BetConfig = BetConfig{
|
||||
BetChangeList: Response.BetChangeList,
|
||||
BetSize: BetSizes,
|
||||
BaseBet: Response.BaseBets,
|
||||
BetLevel: Response.BetLevels,
|
||||
BetLines: Response.BetLines,
|
||||
BetType: 1,
|
||||
BetSizeIndex: Response.BetSizeIndex,
|
||||
BetLevelIndex: Response.BetLevelIndex,
|
||||
BetLineIndex: Response.BetLineIndex,
|
||||
BaseBetIndex: Response.BaseBetIndex,
|
||||
}
|
||||
tableInfo.Coin = float64(Response.Coin) / CoinRate
|
||||
//////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -47,10 +47,12 @@ type BetConfig struct {
|
|||
BetSize []float64 `json:"bet_size"` //单注
|
||||
BetLevel []int64 `json:"bet_level"` //下注线数
|
||||
BetLines []int64 `json:"bet_lines"` //可选线数
|
||||
BaseBet []int64 `json:"base_bet"` //下注基数
|
||||
BetType int `json:"bet_type"` //total计算方式 1.显示成Lines betSize*betLevel*lines (lines)
|
||||
BetSizeIndex int64 `json:"bet_size_index"` //选中的单注下标
|
||||
BetLevelIndex int64 `json:"bet_level_index"` //选中的等级下标
|
||||
BetLineIndex int64 `json:"bet_line_index"` //选中的线数下标
|
||||
BaseBetIndex int64 `json:"base_bet_index"` //选中的下注基数下标
|
||||
}
|
||||
type TableInfo struct {
|
||||
SpinResult GameEnd `json:"spin_result"`
|
||||
|
|
Binary file not shown.
BIN
gamesrv/slotspkg/external/excel/Base/Slots/CashMania/Feature/S_ItemInfo.xlsx
vendored
Normal file
BIN
gamesrv/slotspkg/external/excel/Base/Slots/CashMania/Feature/S_ItemInfo.xlsx
vendored
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -134,7 +134,8 @@ func init() {
|
|||
CashManiaBetBetLine = map[int64]*structs.CashManiaBetBetLine{
|
||||
0: {
|
||||
Index: 0,
|
||||
BetLine: 10,
|
||||
BetLine: 1,
|
||||
BaseBet: 10,
|
||||
},
|
||||
}
|
||||
|
||||
|
@ -194,6 +195,129 @@ func init() {
|
|||
},
|
||||
}
|
||||
|
||||
CashManiaItemInfo = map[int64]*structs.CashManiaItemInfo{
|
||||
1: {
|
||||
Index: 1,
|
||||
ItemID: 1,
|
||||
Value: 10,
|
||||
IsMid: false,
|
||||
},
|
||||
2: {
|
||||
Index: 2,
|
||||
ItemID: 2,
|
||||
Value: 5,
|
||||
IsMid: false,
|
||||
},
|
||||
3: {
|
||||
Index: 3,
|
||||
ItemID: 3,
|
||||
Value: 1,
|
||||
IsMid: false,
|
||||
},
|
||||
4: {
|
||||
Index: 4,
|
||||
ItemID: 4,
|
||||
Value: 0.5,
|
||||
IsMid: false,
|
||||
},
|
||||
5: {
|
||||
Index: 5,
|
||||
ItemID: 5,
|
||||
Value: 0.1,
|
||||
IsMid: false,
|
||||
},
|
||||
6: {
|
||||
Index: 6,
|
||||
ItemID: 6,
|
||||
Value: 1,
|
||||
IsMid: true,
|
||||
},
|
||||
7: {
|
||||
Index: 7,
|
||||
ItemID: 7,
|
||||
Value: 1,
|
||||
IsMid: true,
|
||||
},
|
||||
8: {
|
||||
Index: 8,
|
||||
ItemID: 8,
|
||||
Value: 1,
|
||||
IsMid: true,
|
||||
},
|
||||
9: {
|
||||
Index: 9,
|
||||
ItemID: 9,
|
||||
Value: 1,
|
||||
IsMid: true,
|
||||
},
|
||||
10: {
|
||||
Index: 10,
|
||||
ItemID: 10,
|
||||
Value: 2,
|
||||
IsMid: true,
|
||||
},
|
||||
11: {
|
||||
Index: 11,
|
||||
ItemID: 11,
|
||||
Value: 3,
|
||||
IsMid: true,
|
||||
},
|
||||
12: {
|
||||
Index: 12,
|
||||
ItemID: 12,
|
||||
Value: 5,
|
||||
IsMid: true,
|
||||
},
|
||||
13: {
|
||||
Index: 13,
|
||||
ItemID: 13,
|
||||
Value: 10,
|
||||
IsMid: true,
|
||||
},
|
||||
14: {
|
||||
Index: 14,
|
||||
ItemID: 14,
|
||||
Value: 15,
|
||||
IsMid: true,
|
||||
},
|
||||
15: {
|
||||
Index: 15,
|
||||
ItemID: 15,
|
||||
Value: 20,
|
||||
IsMid: true,
|
||||
},
|
||||
16: {
|
||||
Index: 16,
|
||||
ItemID: 16,
|
||||
Value: 30,
|
||||
IsMid: true,
|
||||
},
|
||||
17: {
|
||||
Index: 17,
|
||||
ItemID: 17,
|
||||
Value: 40,
|
||||
IsMid: true,
|
||||
},
|
||||
18: {
|
||||
Index: 18,
|
||||
ItemID: 18,
|
||||
Value: 50,
|
||||
IsMid: true,
|
||||
},
|
||||
19: {
|
||||
Index: 19,
|
||||
ItemID: 19,
|
||||
Value: 100,
|
||||
IsMid: true,
|
||||
},
|
||||
200: {
|
||||
Index: 200,
|
||||
ItemID: 200,
|
||||
Value: 0,
|
||||
IsMid: true,
|
||||
},
|
||||
}
|
||||
|
||||
CashManiaMapRTPMode = map[int64]*structs.CashManiaMapRTPMode{
|
||||
1: {
|
||||
ID: 1,
|
||||
|
@ -468,7 +592,7 @@ func init() {
|
|||
CashManiaSymbol = map[int64]*structs.CashManiaSymbol{
|
||||
1: {
|
||||
ID: 1,
|
||||
Name: "100倍",
|
||||
Name: "10倍",
|
||||
IsWild: false,
|
||||
Group: []int64{1},
|
||||
PayRate: []int64{0, 0, 100},
|
||||
|
|
|
@ -174,6 +174,7 @@ func init() {
|
|||
0: {
|
||||
Index: 0,
|
||||
BetLine: 5,
|
||||
BaseBet: 1,
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
@ -135,6 +135,7 @@ func init() {
|
|||
0: {
|
||||
Index: 0,
|
||||
BetLine: 5,
|
||||
BaseBet: 1,
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
@ -10,79 +10,79 @@ func init() {
|
|||
FortuneOxBetBetChangeList = map[int64]*structs.FortuneOxBetBetChangeList{
|
||||
0: {
|
||||
Index: 0,
|
||||
BetChangeList: 0.3,
|
||||
BetChangeList: 300000,
|
||||
BetSizeIndex: 0,
|
||||
BetLevelIndex: 0,
|
||||
},
|
||||
1: {
|
||||
Index: 1,
|
||||
BetChangeList: 0.6,
|
||||
BetChangeList: 600000,
|
||||
BetSizeIndex: 0,
|
||||
BetLevelIndex: 1,
|
||||
},
|
||||
2: {
|
||||
Index: 2,
|
||||
BetChangeList: 0.9,
|
||||
BetChangeList: 900000,
|
||||
BetSizeIndex: 0,
|
||||
BetLevelIndex: 2,
|
||||
},
|
||||
3: {
|
||||
Index: 3,
|
||||
BetChangeList: 1,
|
||||
BetChangeList: 1000000,
|
||||
BetSizeIndex: 1,
|
||||
BetLevelIndex: 0,
|
||||
},
|
||||
4: {
|
||||
Index: 4,
|
||||
BetChangeList: 1.5,
|
||||
BetChangeList: 1500000,
|
||||
BetSizeIndex: 0,
|
||||
BetLevelIndex: 4,
|
||||
},
|
||||
5: {
|
||||
Index: 5,
|
||||
BetChangeList: 3,
|
||||
BetChangeList: 3000000,
|
||||
BetSizeIndex: 0,
|
||||
BetLevelIndex: 9,
|
||||
},
|
||||
6: {
|
||||
Index: 6,
|
||||
BetChangeList: 5,
|
||||
BetChangeList: 5000000,
|
||||
BetSizeIndex: 1,
|
||||
BetLevelIndex: 4,
|
||||
},
|
||||
7: {
|
||||
Index: 7,
|
||||
BetChangeList: 9,
|
||||
BetChangeList: 9000000,
|
||||
BetSizeIndex: 3,
|
||||
BetLevelIndex: 0,
|
||||
},
|
||||
8: {
|
||||
Index: 8,
|
||||
BetChangeList: 10,
|
||||
BetChangeList: 10000000,
|
||||
BetSizeIndex: 1,
|
||||
BetLevelIndex: 9,
|
||||
},
|
||||
9: {
|
||||
Index: 9,
|
||||
BetChangeList: 15,
|
||||
BetChangeList: 15000000,
|
||||
BetSizeIndex: 2,
|
||||
BetLevelIndex: 4,
|
||||
},
|
||||
10: {
|
||||
Index: 10,
|
||||
BetChangeList: 30,
|
||||
BetChangeList: 30000000,
|
||||
BetSizeIndex: 2,
|
||||
BetLevelIndex: 9,
|
||||
},
|
||||
11: {
|
||||
Index: 11,
|
||||
BetChangeList: 45,
|
||||
BetChangeList: 45000000,
|
||||
BetSizeIndex: 3,
|
||||
BetLevelIndex: 4,
|
||||
},
|
||||
12: {
|
||||
Index: 12,
|
||||
BetChangeList: 90,
|
||||
BetChangeList: 90000000,
|
||||
BetSizeIndex: 3,
|
||||
BetLevelIndex: 9,
|
||||
},
|
||||
|
@ -135,25 +135,26 @@ func init() {
|
|||
0: {
|
||||
Index: 0,
|
||||
BetLine: 10,
|
||||
BaseBet: 1,
|
||||
},
|
||||
}
|
||||
|
||||
FortuneOxBetBetSize = map[int64]*structs.FortuneOxBetBetSize{
|
||||
0: {
|
||||
Index: 0,
|
||||
BetSize: 300,
|
||||
BetSize: 300000000,
|
||||
},
|
||||
1: {
|
||||
Index: 1,
|
||||
BetSize: 1000,
|
||||
BetSize: 1000000000,
|
||||
},
|
||||
2: {
|
||||
Index: 2,
|
||||
BetSize: 3000,
|
||||
BetSize: 3000000000,
|
||||
},
|
||||
3: {
|
||||
Index: 3,
|
||||
BetSize: 9000,
|
||||
BetSize: 9000000000,
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
@ -135,6 +135,7 @@ func init() {
|
|||
0: {
|
||||
Index: 0,
|
||||
BetLine: 10,
|
||||
BaseBet: 1,
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
@ -135,6 +135,7 @@ func init() {
|
|||
0: {
|
||||
Index: 0,
|
||||
BetLine: 5,
|
||||
BaseBet: 1,
|
||||
},
|
||||
}
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -10,6 +10,7 @@ var (
|
|||
CashManiaBetBetSize = map[int64]*structs.CashManiaBetBetSize{}
|
||||
CashManiaBetFirstBet = map[int64]*structs.CashManiaBetFirstBet{}
|
||||
CashManiaFormation = []*structs.CashManiaFormation{}
|
||||
CashManiaItemInfo = map[int64]*structs.CashManiaItemInfo{}
|
||||
CashManiaMapRTPMode = map[int64]*structs.CashManiaMapRTPMode{}
|
||||
CashManiaMidItemInfo = map[int64]*structs.CashManiaMidItemInfo{}
|
||||
CashManiaOthers = []*structs.CashManiaOthers{}
|
||||
|
@ -119,46 +120,6 @@ var (
|
|||
FortuneTigerSuperStackWeight = []*structs.FortuneTigerSuperStackWeight{}
|
||||
FortuneTigerSymbolBetRatio = []*structs.FortuneTigerSymbolBetRatio{}
|
||||
FortuneTigerSymbol = map[int64]*structs.FortuneTigerSymbol{}
|
||||
GateofOlympusBetBetChangeList = map[int64]*structs.GateofOlympusBetBetChangeList{}
|
||||
GateofOlympusBetBetLevel = map[int64]*structs.GateofOlympusBetBetLevel{}
|
||||
GateofOlympusBetBetLine = map[int64]*structs.GateofOlympusBetBetLine{}
|
||||
GateofOlympusBetBetSize = map[int64]*structs.GateofOlympusBetBetSize{}
|
||||
GateofOlympusBetFirstBet = map[int64]*structs.GateofOlympusBetFirstBet{}
|
||||
GateofOlympusFormation = []*structs.GateofOlympusFormation{}
|
||||
GateofOlympusMapRTPMode = map[int64]*structs.GateofOlympusMapRTPMode{}
|
||||
GateofOlympusMultiplier = []*structs.GateofOlympusMultiplier{}
|
||||
GateofOlympusMultiplierKeyID = map[int64]*structs.GateofOlympusMultiplierKeyID{}
|
||||
GateofOlympusReelBaseSpin1Range = [][]int64{}
|
||||
GateofOlympusReelBaseSpin1Reel = [][]int64{}
|
||||
GateofOlympusReelBaseSpin1Weight = [][]float64{}
|
||||
GateofOlympusReelBaseSpin2Range = [][]int64{}
|
||||
GateofOlympusReelBaseSpin2Reel = [][]int64{}
|
||||
GateofOlympusReelBaseSpin2Weight = [][]float64{}
|
||||
GateofOlympusReelBaseSpin3Range = [][]int64{}
|
||||
GateofOlympusReelBaseSpin3Reel = [][]int64{}
|
||||
GateofOlympusReelBaseSpin3Weight = [][]float64{}
|
||||
GateofOlympusReelBaseSpin7Range = [][]int64{}
|
||||
GateofOlympusReelBaseSpin7Reel = [][]int64{}
|
||||
GateofOlympusReelBaseSpin7Weight = [][]float64{}
|
||||
GateofOlympusReelBaseSpin8Range = [][]int64{}
|
||||
GateofOlympusReelBaseSpin8Reel = [][]int64{}
|
||||
GateofOlympusReelBaseSpin8Weight = [][]float64{}
|
||||
GateofOlympusReelBaseSpinRange = [][]int64{}
|
||||
GateofOlympusReelBaseSpinReel = [][]int64{}
|
||||
GateofOlympusReelBaseSpinWeight = [][]float64{}
|
||||
GateofOlympusReelChoose = []*structs.GateofOlympusReelChoose{}
|
||||
GateofOlympusReelFreeSpin4Range = [][]int64{}
|
||||
GateofOlympusReelFreeSpin4Reel = [][]int64{}
|
||||
GateofOlympusReelFreeSpin4Weight = [][]float64{}
|
||||
GateofOlympusReelFreeSpin5Range = [][]int64{}
|
||||
GateofOlympusReelFreeSpin5Reel = [][]int64{}
|
||||
GateofOlympusReelFreeSpin5Weight = [][]float64{}
|
||||
GateofOlympusReelFreeSpinRange = [][]int64{}
|
||||
GateofOlympusReelFreeSpinReel = [][]int64{}
|
||||
GateofOlympusReelFreeSpinWeight = [][]float64{}
|
||||
GateofOlympusScatter = map[int64]*structs.GateofOlympusScatter{}
|
||||
GateofOlympusSymbolBetRatio = []*structs.GateofOlympusSymbolBetRatio{}
|
||||
GateofOlympusSymbol = map[int64]*structs.GateofOlympusSymbol{}
|
||||
MatrixFeaturesForm15X1TypeA = []*structs.MatrixFeaturesForm15X1TypeA{}
|
||||
MatrixFeaturesForm19X1TypeA = []*structs.MatrixFeaturesForm19X1TypeA{}
|
||||
MatrixFeaturesForm20X1TypeA = []*structs.MatrixFeaturesForm20X1TypeA{}
|
||||
|
|
|
@ -69,6 +69,7 @@ func StoragesLoading(data map[string]string) {
|
|||
Load(data, "Base.CashMania/Bet.BetSize", &base.CashManiaBetBetSize)
|
||||
Load(data, "Base.CashMania/Bet.FirstBet", &base.CashManiaBetFirstBet)
|
||||
Load(data, "Base.CashMania/Formation.Default", &base.CashManiaFormation)
|
||||
Load(data, "Base.CashMania/ItemInfo.Default", &base.CashManiaItemInfo)
|
||||
Load(data, "Base.CashMania/Map.RTPMode", &base.CashManiaMapRTPMode)
|
||||
Load(data, "Base.CashMania/MidItemInfo.Default", &base.CashManiaMidItemInfo)
|
||||
Load(data, "Base.CashMania/Others.Default", &base.CashManiaOthers)
|
||||
|
@ -178,46 +179,6 @@ func StoragesLoading(data map[string]string) {
|
|||
Load(data, "Base.FortuneTiger/SuperStack.Weight", &base.FortuneTigerSuperStackWeight)
|
||||
Load(data, "Base.FortuneTiger/Symbol.BetRatio", &base.FortuneTigerSymbolBetRatio)
|
||||
Load(data, "Base.FortuneTiger/Symbol.Default", &base.FortuneTigerSymbol)
|
||||
Load(data, "Base.GateofOlympus/Bet.BetChangeList", &base.GateofOlympusBetBetChangeList)
|
||||
Load(data, "Base.GateofOlympus/Bet.BetLevel", &base.GateofOlympusBetBetLevel)
|
||||
Load(data, "Base.GateofOlympus/Bet.BetLine", &base.GateofOlympusBetBetLine)
|
||||
Load(data, "Base.GateofOlympus/Bet.BetSize", &base.GateofOlympusBetBetSize)
|
||||
Load(data, "Base.GateofOlympus/Bet.FirstBet", &base.GateofOlympusBetFirstBet)
|
||||
Load(data, "Base.GateofOlympus/Formation.Default", &base.GateofOlympusFormation)
|
||||
Load(data, "Base.GateofOlympus/Map.RTPMode", &base.GateofOlympusMapRTPMode)
|
||||
Load(data, "Base.GateofOlympus/Multiplier.Default", &base.GateofOlympusMultiplier)
|
||||
Load(data, "Base.GateofOlympus/Multiplier.Default/ID", &base.GateofOlympusMultiplierKeyID)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin1.Range", &base.GateofOlympusReelBaseSpin1Range)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin1.Reel", &base.GateofOlympusReelBaseSpin1Reel)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin1.Weight", &base.GateofOlympusReelBaseSpin1Weight)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin2.Range", &base.GateofOlympusReelBaseSpin2Range)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin2.Reel", &base.GateofOlympusReelBaseSpin2Reel)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin2.Weight", &base.GateofOlympusReelBaseSpin2Weight)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin3.Range", &base.GateofOlympusReelBaseSpin3Range)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin3.Reel", &base.GateofOlympusReelBaseSpin3Reel)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin3.Weight", &base.GateofOlympusReelBaseSpin3Weight)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin7.Range", &base.GateofOlympusReelBaseSpin7Range)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin7.Reel", &base.GateofOlympusReelBaseSpin7Reel)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin7.Weight", &base.GateofOlympusReelBaseSpin7Weight)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin8.Range", &base.GateofOlympusReelBaseSpin8Range)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin8.Reel", &base.GateofOlympusReelBaseSpin8Reel)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin8.Weight", &base.GateofOlympusReelBaseSpin8Weight)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin.Range", &base.GateofOlympusReelBaseSpinRange)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin.Reel", &base.GateofOlympusReelBaseSpinReel)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin.Weight", &base.GateofOlympusReelBaseSpinWeight)
|
||||
Load(data, "Base.GateofOlympus/ReelChoose.Default", &base.GateofOlympusReelChoose)
|
||||
Load(data, "Base.GateofOlympus/ReelFreeSpin4.Range", &base.GateofOlympusReelFreeSpin4Range)
|
||||
Load(data, "Base.GateofOlympus/ReelFreeSpin4.Reel", &base.GateofOlympusReelFreeSpin4Reel)
|
||||
Load(data, "Base.GateofOlympus/ReelFreeSpin4.Weight", &base.GateofOlympusReelFreeSpin4Weight)
|
||||
Load(data, "Base.GateofOlympus/ReelFreeSpin5.Range", &base.GateofOlympusReelFreeSpin5Range)
|
||||
Load(data, "Base.GateofOlympus/ReelFreeSpin5.Reel", &base.GateofOlympusReelFreeSpin5Reel)
|
||||
Load(data, "Base.GateofOlympus/ReelFreeSpin5.Weight", &base.GateofOlympusReelFreeSpin5Weight)
|
||||
Load(data, "Base.GateofOlympus/ReelFreeSpin.Range", &base.GateofOlympusReelFreeSpinRange)
|
||||
Load(data, "Base.GateofOlympus/ReelFreeSpin.Reel", &base.GateofOlympusReelFreeSpinReel)
|
||||
Load(data, "Base.GateofOlympus/ReelFreeSpin.Weight", &base.GateofOlympusReelFreeSpinWeight)
|
||||
Load(data, "Base.GateofOlympus/Scatter.Default", &base.GateofOlympusScatter)
|
||||
Load(data, "Base.GateofOlympus/Symbol.BetRatio", &base.GateofOlympusSymbolBetRatio)
|
||||
Load(data, "Base.GateofOlympus/Symbol.Default", &base.GateofOlympusSymbol)
|
||||
Load(data, "Base.Matrix/FeaturesForm15X1TypeA.Default", &base.MatrixFeaturesForm15X1TypeA)
|
||||
Load(data, "Base.Matrix/FeaturesForm19X1TypeA.Default", &base.MatrixFeaturesForm19X1TypeA)
|
||||
Load(data, "Base.Matrix/FeaturesForm20X1TypeA.Default", &base.MatrixFeaturesForm20X1TypeA)
|
||||
|
@ -330,6 +291,7 @@ func StoragesMapping() {
|
|||
Set("Base", "CashMania/Bet", "BetSize", base.CashManiaBetBetSize)
|
||||
Set("Base", "CashMania/Bet", "FirstBet", base.CashManiaBetFirstBet)
|
||||
Set("Base", "CashMania/Formation", "Default", base.CashManiaFormation)
|
||||
Set("Base", "CashMania/ItemInfo", "Default", base.CashManiaItemInfo)
|
||||
Set("Base", "CashMania/Map", "RTPMode", base.CashManiaMapRTPMode)
|
||||
Set("Base", "CashMania/MidItemInfo", "Default", base.CashManiaMidItemInfo)
|
||||
Set("Base", "CashMania/Others", "Default", base.CashManiaOthers)
|
||||
|
@ -439,46 +401,6 @@ func StoragesMapping() {
|
|||
Set("Base", "FortuneTiger/SuperStack", "Weight", base.FortuneTigerSuperStackWeight)
|
||||
Set("Base", "FortuneTiger/Symbol", "BetRatio", base.FortuneTigerSymbolBetRatio)
|
||||
Set("Base", "FortuneTiger/Symbol", "Default", base.FortuneTigerSymbol)
|
||||
Set("Base", "GateofOlympus/Bet", "BetChangeList", base.GateofOlympusBetBetChangeList)
|
||||
Set("Base", "GateofOlympus/Bet", "BetLevel", base.GateofOlympusBetBetLevel)
|
||||
Set("Base", "GateofOlympus/Bet", "BetLine", base.GateofOlympusBetBetLine)
|
||||
Set("Base", "GateofOlympus/Bet", "BetSize", base.GateofOlympusBetBetSize)
|
||||
Set("Base", "GateofOlympus/Bet", "FirstBet", base.GateofOlympusBetFirstBet)
|
||||
Set("Base", "GateofOlympus/Formation", "Default", base.GateofOlympusFormation)
|
||||
Set("Base", "GateofOlympus/Map", "RTPMode", base.GateofOlympusMapRTPMode)
|
||||
Set("Base", "GateofOlympus/Multiplier", "Default", base.GateofOlympusMultiplier)
|
||||
Set("Base", "GateofOlympus/Multiplier", "Default/ID", base.GateofOlympusMultiplierKeyID)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin1", "Range", base.GateofOlympusReelBaseSpin1Range)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin1", "Reel", base.GateofOlympusReelBaseSpin1Reel)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin1", "Weight", base.GateofOlympusReelBaseSpin1Weight)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin2", "Range", base.GateofOlympusReelBaseSpin2Range)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin2", "Reel", base.GateofOlympusReelBaseSpin2Reel)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin2", "Weight", base.GateofOlympusReelBaseSpin2Weight)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin3", "Range", base.GateofOlympusReelBaseSpin3Range)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin3", "Reel", base.GateofOlympusReelBaseSpin3Reel)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin3", "Weight", base.GateofOlympusReelBaseSpin3Weight)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin7", "Range", base.GateofOlympusReelBaseSpin7Range)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin7", "Reel", base.GateofOlympusReelBaseSpin7Reel)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin7", "Weight", base.GateofOlympusReelBaseSpin7Weight)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin8", "Range", base.GateofOlympusReelBaseSpin8Range)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin8", "Reel", base.GateofOlympusReelBaseSpin8Reel)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin8", "Weight", base.GateofOlympusReelBaseSpin8Weight)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin", "Range", base.GateofOlympusReelBaseSpinRange)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin", "Reel", base.GateofOlympusReelBaseSpinReel)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin", "Weight", base.GateofOlympusReelBaseSpinWeight)
|
||||
Set("Base", "GateofOlympus/ReelChoose", "Default", base.GateofOlympusReelChoose)
|
||||
Set("Base", "GateofOlympus/ReelFreeSpin4", "Range", base.GateofOlympusReelFreeSpin4Range)
|
||||
Set("Base", "GateofOlympus/ReelFreeSpin4", "Reel", base.GateofOlympusReelFreeSpin4Reel)
|
||||
Set("Base", "GateofOlympus/ReelFreeSpin4", "Weight", base.GateofOlympusReelFreeSpin4Weight)
|
||||
Set("Base", "GateofOlympus/ReelFreeSpin5", "Range", base.GateofOlympusReelFreeSpin5Range)
|
||||
Set("Base", "GateofOlympus/ReelFreeSpin5", "Reel", base.GateofOlympusReelFreeSpin5Reel)
|
||||
Set("Base", "GateofOlympus/ReelFreeSpin5", "Weight", base.GateofOlympusReelFreeSpin5Weight)
|
||||
Set("Base", "GateofOlympus/ReelFreeSpin", "Range", base.GateofOlympusReelFreeSpinRange)
|
||||
Set("Base", "GateofOlympus/ReelFreeSpin", "Reel", base.GateofOlympusReelFreeSpinReel)
|
||||
Set("Base", "GateofOlympus/ReelFreeSpin", "Weight", base.GateofOlympusReelFreeSpinWeight)
|
||||
Set("Base", "GateofOlympus/Scatter", "Default", base.GateofOlympusScatter)
|
||||
Set("Base", "GateofOlympus/Symbol", "BetRatio", base.GateofOlympusSymbolBetRatio)
|
||||
Set("Base", "GateofOlympus/Symbol", "Default", base.GateofOlympusSymbol)
|
||||
Set("Base", "Matrix/FeaturesForm15X1TypeA", "Default", base.MatrixFeaturesForm15X1TypeA)
|
||||
Set("Base", "Matrix/FeaturesForm19X1TypeA", "Default", base.MatrixFeaturesForm19X1TypeA)
|
||||
Set("Base", "Matrix/FeaturesForm20X1TypeA", "Default", base.MatrixFeaturesForm20X1TypeA)
|
||||
|
@ -618,12 +540,6 @@ func LinksMapping() {
|
|||
Link("FortuneTiger/ReelBaseSpin", "Weight/1", "FortuneTiger/ReelBaseSpin", "Weight")
|
||||
Link("FortuneTiger/ReelBaseSpin", "Weight/2", "FortuneTiger/ReelBaseSpin", "Weight")
|
||||
Link("FortuneTiger/ReelBaseSpin", "Weight/3", "FortuneTiger/ReelBaseSpin", "Weight")
|
||||
Link("GatesOfOlympus/MatrixSameForm5X6TypeA", "Default", "Matrix/SameForm5X6TypeA", "Default")
|
||||
Link("GatesOfOlympus/MatrixSameForm5X6TypeB", "Default", "Matrix/SameForm5X6TypeB", "Default")
|
||||
Link("GatesOfOlympus/PrizeModel", "Default", "PrizeModel/PrizeModelTypeB", "Default")
|
||||
Link("GatesOfOlympus/ReelBaseSpin1", "Weight/1", "GatesOfOlympus/ReelBaseSpin1", "Weight")
|
||||
Link("GatesOfOlympus/ReelBaseSpin1", "Weight/2", "GatesOfOlympus/ReelBaseSpin1", "Weight")
|
||||
Link("GatesOfOlympus/ReelBaseSpin1", "Weight/3", "GatesOfOlympus/ReelBaseSpin1", "Weight")
|
||||
Link("Test/MatrixLine1Form3X3TypeA", "Default", "Matrix/Line1Form3X3TypeA", "Default")
|
||||
Link("Test/PrizeModel", "Default", "PrizeModel/PrizeModelTypeB", "Default")
|
||||
Link("Test/ReelBaseSpin", "Weight/1", "Test/ReelBaseSpin", "Weight")
|
||||
|
|
|
@ -44,75 +44,83 @@ func NewBigRat(s string) *big.Rat {
|
|||
type (
|
||||
// BetChangeList comment
|
||||
BetChangeList struct {
|
||||
Index int64
|
||||
Index int64
|
||||
BetChangeList float64
|
||||
BetSizeIndex int64
|
||||
BetSizeIndex int64
|
||||
BetLevelIndex int64
|
||||
}
|
||||
// BetLevel comment
|
||||
BetLevel struct {
|
||||
Index int64
|
||||
Index int64
|
||||
BetLevel int64
|
||||
}
|
||||
// BetLine comment
|
||||
BetLine struct {
|
||||
Index int64
|
||||
Index int64
|
||||
BetLine int64
|
||||
BaseBet int64
|
||||
}
|
||||
// BetSize comment
|
||||
BetSize struct {
|
||||
Index int64
|
||||
Index int64
|
||||
BetSize int64
|
||||
}
|
||||
// CashManiaItemInfo comment
|
||||
CashManiaItemInfo struct {
|
||||
Index int64
|
||||
ItemID int64
|
||||
Value float64
|
||||
IsMid bool
|
||||
}
|
||||
// CashManiaMidItemInfo comment
|
||||
CashManiaMidItemInfo struct {
|
||||
Index int64
|
||||
ItemID int64
|
||||
Multi int64
|
||||
Index int64
|
||||
ItemID int64
|
||||
Multi int64
|
||||
FreeSpinCount int64
|
||||
}
|
||||
// CashManiaOthers comment
|
||||
CashManiaOthers struct {
|
||||
BaseWinPro float64
|
||||
FreeWinPro float64
|
||||
MaxWin int64
|
||||
WinNudgePro float64
|
||||
WinRespinPro float64
|
||||
NoWinNudgePro float64
|
||||
BaseWinPro float64
|
||||
FreeWinPro float64
|
||||
MaxWin int64
|
||||
WinNudgePro float64
|
||||
WinRespinPro float64
|
||||
NoWinNudgePro float64
|
||||
NoWinRespinPro float64
|
||||
}
|
||||
// CashManiaRandomItemWeight comment
|
||||
CashManiaRandomItemWeight struct {
|
||||
ID int64
|
||||
ItemID int64
|
||||
ID int64
|
||||
ItemID int64
|
||||
BaseWeight float64
|
||||
FreeWeight float64
|
||||
}
|
||||
// FirstBet comment
|
||||
FirstBet struct {
|
||||
Index int64
|
||||
BetSizeIndex int64
|
||||
Index int64
|
||||
BetSizeIndex int64
|
||||
BetLevelIndex int64
|
||||
}
|
||||
// Formation comment
|
||||
Formation struct {
|
||||
SpinType int64
|
||||
NodeType string
|
||||
ID int64
|
||||
SeqID int64
|
||||
Reel string
|
||||
Matrix string
|
||||
Symbol string
|
||||
FirstInitMethod int64
|
||||
OtherInitMethod int64
|
||||
SpinType int64
|
||||
NodeType string
|
||||
ID int64
|
||||
SeqID int64
|
||||
Reel string
|
||||
Matrix string
|
||||
Symbol string
|
||||
FirstInitMethod int64
|
||||
OtherInitMethod int64
|
||||
FirstInitSymbols []int64
|
||||
OtherInitSymbols []int64
|
||||
}
|
||||
// FortuneDragonBaseMultiplier comment
|
||||
FortuneDragonBaseMultiplier struct {
|
||||
WinRateMin float64
|
||||
WinRateMax float64
|
||||
ItemIds []int64
|
||||
WinRateMin float64
|
||||
WinRateMax float64
|
||||
ItemIds []int64
|
||||
MultiplierWeights []int64
|
||||
}
|
||||
// FortuneDragonFreeMultiplier comment
|
||||
|
@ -123,126 +131,113 @@ type (
|
|||
// FortuneDragonFreeMultiplierCount comment
|
||||
FortuneDragonFreeMultiplierCount struct {
|
||||
MultiplierCount int64
|
||||
Weight int64
|
||||
Weight int64
|
||||
}
|
||||
// FortuneDragonOthers comment
|
||||
FortuneDragonOthers struct {
|
||||
FreespinTriggerPro float64
|
||||
FreeSpinCount int64
|
||||
MaxWin int64
|
||||
FreespinTriggerPro float64
|
||||
FreeSpinCount int64
|
||||
MaxWin int64
|
||||
SureWinFreespinTriggerPro float64
|
||||
SureWinBetMultiplier int64
|
||||
SureWinBetMultiplier int64
|
||||
}
|
||||
// FortuneMouseOthers comment
|
||||
FortuneMouseOthers struct {
|
||||
RespinTriggerPro float64
|
||||
MaxWin int64
|
||||
ExtraWin int64
|
||||
MaxWin int64
|
||||
ExtraWin int64
|
||||
}
|
||||
// FortuneOxOthers comment
|
||||
FortuneOxOthers struct {
|
||||
RespinTriggerPro float64
|
||||
Multiplier int64
|
||||
MaxWin int64
|
||||
Multiplier int64
|
||||
MaxWin int64
|
||||
}
|
||||
// FortuneRabbitCashPrizeWeight comment
|
||||
FortuneRabbitCashPrizeWeight struct {
|
||||
ID int64
|
||||
PrizeValue float64
|
||||
Weight float64
|
||||
ID int64
|
||||
PrizeValue float64
|
||||
Weight float64
|
||||
NoWinWeight float64
|
||||
}
|
||||
// FortuneRabbitForceCashCountWeight comment
|
||||
FortuneRabbitForceCashCountWeight struct {
|
||||
ID int64
|
||||
Count int64
|
||||
ID int64
|
||||
Count int64
|
||||
Weight float64
|
||||
}
|
||||
// FortuneRabbitOthers comment
|
||||
FortuneRabbitOthers struct {
|
||||
FreespinTriggerPro float64
|
||||
FreeSpinCount int64
|
||||
MaxWin int64
|
||||
}
|
||||
// GateofOlympusMultiplier comment
|
||||
GateofOlympusMultiplier struct {
|
||||
Multiple int64
|
||||
ID int64
|
||||
Weights []int64
|
||||
}
|
||||
// GateofOlympusReelChoose comment
|
||||
GateofOlympusReelChoose struct {
|
||||
ID int64
|
||||
IsFreeSpin bool
|
||||
NodeType string
|
||||
Weights []int64
|
||||
FreeSpinCount int64
|
||||
MaxWin int64
|
||||
}
|
||||
// JackpotPrize comment
|
||||
JackpotPrize struct {
|
||||
PrizeType int64
|
||||
PipeIn int64
|
||||
StartPoint int64
|
||||
IsRolling bool
|
||||
RollingTime int64
|
||||
ReducePercent int64
|
||||
PrizeType int64
|
||||
PipeIn int64
|
||||
StartPoint int64
|
||||
IsRolling bool
|
||||
RollingTime int64
|
||||
ReducePercent int64
|
||||
JackpotLimitByTotalBet int64
|
||||
}
|
||||
// MapRTPMode comment
|
||||
MapRTPMode struct {
|
||||
ID int64
|
||||
ID int64
|
||||
TypeWeight map[int64]*MapRTPModeTypeWeight
|
||||
Desc string
|
||||
Rtp float64
|
||||
Desc string
|
||||
Rtp float64
|
||||
}
|
||||
// MapRTPModeTypeWeight comment
|
||||
MapRTPModeTypeWeight struct {
|
||||
ID int64
|
||||
ID int64
|
||||
Weight int64
|
||||
}
|
||||
// Matrix comment
|
||||
Matrix struct {
|
||||
Type string
|
||||
LinkType int64
|
||||
Type string
|
||||
LinkType int64
|
||||
Direction int64
|
||||
LineCount int64
|
||||
Lines [][]int64
|
||||
Form []int64
|
||||
Lines [][]int64
|
||||
Form []int64
|
||||
}
|
||||
// OptAuthenticate comment
|
||||
OptAuthenticate struct {
|
||||
Flag string
|
||||
Order int64
|
||||
ValidValues []string
|
||||
Flag string
|
||||
Order int64
|
||||
ValidValues []string
|
||||
InvalidValues []string
|
||||
}
|
||||
// OptGroup comment
|
||||
OptGroup struct {
|
||||
ID int64
|
||||
Batch int64
|
||||
ID int64
|
||||
Batch int64
|
||||
IsNewPlayer bool
|
||||
StartTime string
|
||||
EndTime string
|
||||
Affect []int64
|
||||
Weight []int64
|
||||
StartTime string
|
||||
EndTime string
|
||||
Affect []int64
|
||||
Weight []int64
|
||||
}
|
||||
// PrizeModel comment
|
||||
PrizeModel struct {
|
||||
ID int64
|
||||
AniType string
|
||||
ID int64
|
||||
AniType string
|
||||
MinMultiple int64
|
||||
MaxMultiple int64
|
||||
}
|
||||
// Scatter comment
|
||||
Scatter struct {
|
||||
ScatterCount int64
|
||||
FreeSpinBouts int64
|
||||
ScatterCount int64
|
||||
FreeSpinBouts int64
|
||||
FreeSpinExtraBouts int64
|
||||
BasePayrate int64
|
||||
FreePayrate int64
|
||||
BasePayrate int64
|
||||
FreePayrate int64
|
||||
}
|
||||
// ScatterFreeChoose comment
|
||||
ScatterFreeChoose struct {
|
||||
ID int64
|
||||
ID int64
|
||||
FreeSpinTimes int64
|
||||
TouchTimesMin int64
|
||||
TouchTimesMax int64
|
||||
|
@ -250,38 +245,43 @@ type (
|
|||
// SimulatorFSMultiLevel comment
|
||||
SimulatorFSMultiLevel struct {
|
||||
Level int64
|
||||
Min int64
|
||||
Max int64
|
||||
Min int64
|
||||
Max int64
|
||||
}
|
||||
// SuperStackWeight comment
|
||||
SuperStackWeight struct {
|
||||
ID int64
|
||||
ID int64
|
||||
ItemID int64
|
||||
Weight float64
|
||||
}
|
||||
// Symbol comment
|
||||
Symbol struct {
|
||||
ID int64
|
||||
Name string
|
||||
IsWild bool
|
||||
Group []int64
|
||||
PayRate []int64
|
||||
ID int64
|
||||
Name string
|
||||
IsWild bool
|
||||
Group []int64
|
||||
PayRate []int64
|
||||
ClientOrder int64
|
||||
ClientDsc string
|
||||
ClientDsc string
|
||||
}
|
||||
// SymbolBetRatio comment
|
||||
SymbolBetRatio struct {
|
||||
BetRatio float64
|
||||
}
|
||||
// TestBetBetLine comment
|
||||
TestBetBetLine struct {
|
||||
Index int64
|
||||
BetLine int64
|
||||
}
|
||||
// TestRandomWeight comment
|
||||
TestRandomWeight struct {
|
||||
ID int64
|
||||
Time float64
|
||||
ID int64
|
||||
Time float64
|
||||
Weight float64
|
||||
}
|
||||
// Text comment
|
||||
Text struct {
|
||||
Type string
|
||||
Type string
|
||||
Texts []*TextTexts
|
||||
}
|
||||
// TextTexts comment
|
||||
|
@ -291,25 +291,25 @@ type (
|
|||
}
|
||||
// Vector comment
|
||||
Vector struct {
|
||||
Choice int64
|
||||
Ratio float64
|
||||
Vector []int64
|
||||
Choice int64
|
||||
Ratio float64
|
||||
Vector []int64
|
||||
Procedure string
|
||||
}
|
||||
// VectorDemand comment
|
||||
VectorDemand struct {
|
||||
Choice int64
|
||||
MinRatio float64
|
||||
MaxRatio float64
|
||||
Choice int64
|
||||
MinRatio float64
|
||||
MaxRatio float64
|
||||
Procedure string
|
||||
Count int64
|
||||
Count int64
|
||||
}
|
||||
// VectorForceWin comment
|
||||
VectorForceWin struct {
|
||||
Choice int64
|
||||
Choice int64
|
||||
MinRatio float64
|
||||
MaxRatio float64
|
||||
Weight float64
|
||||
Weight float64
|
||||
}
|
||||
// CashManiaBetBetChangeList comment
|
||||
CashManiaBetBetChangeList = BetChangeList
|
||||
|
@ -521,42 +521,6 @@ type (
|
|||
// FortuneTigerSymbolBetRatio comment
|
||||
FortuneTigerSymbolBetRatio = SymbolBetRatio
|
||||
|
||||
// GateofOlympusBetBetChangeList comment
|
||||
GateofOlympusBetBetChangeList = BetChangeList
|
||||
|
||||
// GateofOlympusBetBetLevel comment
|
||||
GateofOlympusBetBetLevel = BetLevel
|
||||
|
||||
// GateofOlympusBetBetLine comment
|
||||
GateofOlympusBetBetLine = BetLine
|
||||
|
||||
// GateofOlympusBetBetSize comment
|
||||
GateofOlympusBetBetSize = BetSize
|
||||
|
||||
// GateofOlympusBetFirstBet comment
|
||||
GateofOlympusBetFirstBet = FirstBet
|
||||
|
||||
// GateofOlympusFormation comment
|
||||
GateofOlympusFormation = Formation
|
||||
|
||||
// GateofOlympusMapRTPMode comment
|
||||
GateofOlympusMapRTPMode = MapRTPMode
|
||||
|
||||
// GateofOlympusMapRTPModeTypeWeight comment
|
||||
GateofOlympusMapRTPModeTypeWeight = MapRTPModeTypeWeight
|
||||
|
||||
// GateofOlympusMultiplierKeyID comment
|
||||
GateofOlympusMultiplierKeyID = GateofOlympusMultiplier
|
||||
|
||||
// GateofOlympusScatter comment
|
||||
GateofOlympusScatter = Scatter
|
||||
|
||||
// GateofOlympusSymbol comment
|
||||
GateofOlympusSymbol = Symbol
|
||||
|
||||
// GateofOlympusSymbolBetRatio comment
|
||||
GateofOlympusSymbolBetRatio = SymbolBetRatio
|
||||
|
||||
// MatrixFeaturesForm15X1TypeA comment
|
||||
MatrixFeaturesForm15X1TypeA = Matrix
|
||||
|
||||
|
@ -827,9 +791,6 @@ type (
|
|||
// TestBetBetLevel comment
|
||||
TestBetBetLevel = BetLevel
|
||||
|
||||
// TestBetBetLine comment
|
||||
TestBetBetLine = BetLine
|
||||
|
||||
// TestBetBetSize comment
|
||||
TestBetBetSize = BetSize
|
||||
|
||||
|
@ -850,4 +811,5 @@ type (
|
|||
|
||||
// TestSymbolBetRatio comment
|
||||
TestSymbolBetRatio = SymbolBetRatio
|
||||
)
|
||||
|
||||
)
|
|
@ -73,4 +73,12 @@ type SpinLock struct {
|
|||
Prize [][]float64 `json:"pe,omitempty"`
|
||||
//OXSpecial
|
||||
NewSuperStack []int64 `json:"nss,omitempty"`
|
||||
|
||||
//CashMania
|
||||
FeatureType int `json:"feature_type,omitempty"` //0.无特性 1.nudge 2.respin
|
||||
NudgeDirection int `json:"nudge_direction,omitempty"` //1.上 2.下
|
||||
FreeSpinItemId int64 `json:"free_item_id,omitempty"`
|
||||
Multiple int64 `json:"multiple,omitempty"` //倍乘倍数
|
||||
Irv [][]float64 `json:"irv,omitempty"`
|
||||
Frv [][]float64 `json:"frv,omitempty"`
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ func (n *MachineDesc) Sheet(excel string, sheet string) interface{} {
|
|||
return n.DataSet.GetMachineSheet(n.Theme, excel, sheet, 0)
|
||||
}
|
||||
|
||||
func (n *MachineDesc) GetLineBet(betSizeIndex int64, betLevelIndex int64) int64 {
|
||||
func (n *MachineDesc) GetLineBet(betSizeIndex, betLevelIndex, betLineIndex int64) int64 {
|
||||
betSizeRows, ok := n.Sheet("Bet", "BetSize").(map[int64]*structs.BetSize)
|
||||
if !ok {
|
||||
panic(errors.ConfigTypeError.ErrorWith(n.Theme, "BetSize"))
|
||||
|
@ -55,7 +55,17 @@ func (n *MachineDesc) GetLineBet(betSizeIndex int64, betLevelIndex int64) int64
|
|||
panic(errors.ConfigRowNoMatch.ErrorWith(n.Theme, "BetLevel", betLevelIndex))
|
||||
}
|
||||
|
||||
return betSizeRow.BetSize * betLevelRow.BetLevel
|
||||
betLineRows, ok := n.Sheet("Bet", "BetLine").(map[int64]*structs.BetLine)
|
||||
if !ok {
|
||||
panic(errors.ConfigTypeError.ErrorWith(n.Theme, "BetLine"))
|
||||
}
|
||||
|
||||
betLineRow, ok := betLineRows[betLineIndex]
|
||||
if !ok {
|
||||
panic(errors.ConfigRowNoMatch.ErrorWith(n.Theme, "BetLine", betLineIndex))
|
||||
}
|
||||
|
||||
return betSizeRow.BetSize * betLevelRow.BetLevel * betLineRow.BaseBet
|
||||
}
|
||||
func (n *MachineDesc) BetSizes() []int64 {
|
||||
betSizeRows, ok := n.Sheet("Bet", "BetSize").(map[int64]*structs.BetSize)
|
||||
|
@ -90,6 +100,17 @@ func (n *MachineDesc) BetLines() []int64 {
|
|||
}
|
||||
return lists
|
||||
}
|
||||
func (n *MachineDesc) BaseBets() []int64 {
|
||||
baseBetRows, ok := n.Sheet("Bet", "BetLine").(map[int64]*structs.BetLine)
|
||||
if !ok {
|
||||
panic(errors.ConfigTypeError.ErrorWith(n.Theme, "BaseBet"))
|
||||
}
|
||||
var lists []int64
|
||||
for _, list := range baseBetRows {
|
||||
lists = append(lists, list.BaseBet)
|
||||
}
|
||||
return lists
|
||||
}
|
||||
func (n *MachineDesc) BetChangeList() []float64 {
|
||||
betChangeListRows, ok := n.Sheet("Bet", "BetChangeList").(map[int64]*structs.BetChangeList)
|
||||
if !ok {
|
||||
|
|
|
@ -281,11 +281,11 @@ func (e *Entity) CalcWinType(multi float64) int64 {
|
|||
}
|
||||
|
||||
func (e *Entity) GetLineBetByType(nodeType string) int64 {
|
||||
return e.MachineDesc.GetLineBet(e.NodeTree.Act.BetSizeIndex, e.NodeTree.Act.BetLevelIndex)
|
||||
return e.MachineDesc.GetLineBet(e.NodeTree.Act.BetSizeIndex, e.NodeTree.Act.BetLevelIndex, e.NodeTree.Act.BetLineIndex)
|
||||
}
|
||||
|
||||
func (e *Entity) GetMinLineBet(nodeType string) int64 {
|
||||
return e.MachineDesc.GetLineBet(1, 1)
|
||||
return e.MachineDesc.GetLineBet(1, 1, 1)
|
||||
}
|
||||
|
||||
func (e *Entity) SetBetCoin(betCoin player.DecCoin) {
|
||||
|
|
|
@ -46,6 +46,7 @@ func (sm *SlotsMgr) Enter(s *base.SlotsSession, gameId int64) (*cli.SlotsEnterRe
|
|||
BetSizes: m.BetSizes(),
|
||||
BetLevels: m.BetLevels(),
|
||||
BetLines: m.BetLines(),
|
||||
BaseBets: m.BaseBets(),
|
||||
BetChangeList: m.BetChangeList(),
|
||||
}
|
||||
|
||||
|
|
|
@ -42,6 +42,7 @@ type Spinner interface {
|
|||
BetSizes() []int64
|
||||
BetLevels() []int64
|
||||
BetLines() []int64
|
||||
BaseBets() []int64
|
||||
BetChangeList() []float64
|
||||
|
||||
Choice() int64
|
||||
|
|
|
@ -39,6 +39,9 @@ func (m *Machine) BetLevels() []int64 {
|
|||
func (m *Machine) BetLines() []int64 {
|
||||
return m.MachineDesc.BetLines()
|
||||
}
|
||||
func (m *Machine) BaseBets() []int64 {
|
||||
return m.MachineDesc.BaseBets()
|
||||
}
|
||||
func (m *Machine) BetChangeList() []float64 {
|
||||
return m.MachineDesc.BetChangeList()
|
||||
}
|
||||
|
|
|
@ -29,8 +29,21 @@ type CustomRespin struct {
|
|||
// 本次的symbol
|
||||
ItemId int64
|
||||
}
|
||||
|
||||
type CustomFortune struct {
|
||||
ForceRound int64 `json:"fr"` //第n次
|
||||
|
||||
FeatureType int `json:"feature_type"` //0.无特性 1.nudge 2.respin
|
||||
NudgeDirection int `json:"nudge_direction"` //1.上 2.下
|
||||
|
||||
FreeSpinItemId int64 `json:"free_item_id"`
|
||||
|
||||
Multiple int64 `json:"multiple"` //倍乘倍数
|
||||
|
||||
FreeStatus int `json:"fs"`
|
||||
FreeSpinNum int64 `json:"fsn"` //剩余freespin
|
||||
FreeNumMax int64 `json:"fnm"` //总次数
|
||||
FreeNumTrigger int64 `json:"fnt"` //新增freespin
|
||||
}
|
||||
|
||||
// Theme is called to get feature theme
|
||||
|
@ -44,8 +57,8 @@ func (p *PluginBase) Customs() []interface{} {
|
|||
&CustomMidInfo{},
|
||||
&CustomNudge{},
|
||||
&CustomRespin{},
|
||||
&Special{},
|
||||
&CustomFortune{})
|
||||
&CustomFortune{},
|
||||
&Special{})
|
||||
}
|
||||
|
||||
// OnStepBegin is called on initializing a step
|
||||
|
@ -58,6 +71,9 @@ func (p *PluginBase) BeforeDisplay(m intf.Master) {
|
|||
case key.BaseSpin:
|
||||
p.changeItem(m, false)
|
||||
case key.FreeSpin:
|
||||
Fortune := getCustomFortune(m)
|
||||
Fortune.FreeStatus = 0
|
||||
Fortune.FreeNumTrigger = 0
|
||||
p.changeItem(m, true)
|
||||
}
|
||||
|
||||
|
@ -67,9 +83,15 @@ func (p *PluginBase) AfterDisplay(m intf.Master) {
|
|||
isFreeSpin := m.Cursor().GetType() == key.FreeSpin
|
||||
cursorFormation := m.CursorFormation()
|
||||
symbols := cursorFormation.GetSymbols()
|
||||
|
||||
Fortune := getCustomFortune(m)
|
||||
|
||||
Fortune.FeatureType = WU
|
||||
if m.Bool("Nudge") {
|
||||
Fortune.FeatureType = Nudge
|
||||
//todo 如果当前是nudge
|
||||
if m.Bool("NudgeDown") {
|
||||
Fortune.NudgeDirection = Nudge_Down
|
||||
symbols[9] = symbols[8]
|
||||
symbols[8] = symbols[7]
|
||||
symbols[7] = symbols[6]
|
||||
|
@ -77,6 +99,7 @@ func (p *PluginBase) AfterDisplay(m intf.Master) {
|
|||
symbols[5] = Descx(m).RandomMidItems(isFreeSpin, 1)[0]
|
||||
m.Remove("NudgeDown")
|
||||
} else if m.Bool("NudgeUp") {
|
||||
Fortune.NudgeDirection = Nudge_Up
|
||||
symbols[5] = symbols[6]
|
||||
symbols[6] = symbols[7]
|
||||
symbols[7] = symbols[8]
|
||||
|
@ -86,6 +109,7 @@ func (p *PluginBase) AfterDisplay(m intf.Master) {
|
|||
}
|
||||
m.Remove("Nudge")
|
||||
} else if m.Bool("Respin") {
|
||||
Fortune.FeatureType = Respin
|
||||
//todo 如果当前是respin
|
||||
if m.Int64("respinsymbols") > 0 {
|
||||
symbols[2] = m.Int64("respinsymbols")
|
||||
|
@ -109,6 +133,14 @@ func (p *PluginBase) AfterSpin(m intf.Master) {
|
|||
p.checkMid(m, false)
|
||||
case key.FreeSpin:
|
||||
p.checkMid(m, true)
|
||||
Fortune := getCustomFortune(m)
|
||||
if Fortune.FreeSpinNum > 0 {
|
||||
if Fortune.FreeSpinNum == 1 {
|
||||
Fortune.FreeStatus = 3
|
||||
}
|
||||
Fortune.FreeSpinNum--
|
||||
//logx.Errorf("这里是哇哇哇 Trigger[%v] FreeNumMax[%v] FreeSpinNum[%v]", Fortune.FreeNumTrigger, Fortune.FreeNumMax, Fortune.FreeSpinNum)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -133,26 +165,24 @@ func (p *PluginBase) Nudge(m intf.Master, symbols []int64) {
|
|||
}
|
||||
}
|
||||
|
||||
// 获取特性数据
|
||||
func (p *PluginBase) getCustomFortune(m intf.Master) *CustomFortune {
|
||||
customFortune := new(CustomFortune)
|
||||
if len(m.CursorCustoms(customFortune)) == 0 {
|
||||
m.AddCursorFeature(customFortune)
|
||||
}
|
||||
return m.CursorCustom(customFortune).(*CustomFortune)
|
||||
}
|
||||
func (p *PluginBase) changeItem(m intf.Master, isFreeSpin bool) {
|
||||
curFormation := m.CursorFormation()
|
||||
symbols := curFormation.GetSymbols()
|
||||
isWin := Descx(m).CheckWin(isFreeSpin)
|
||||
//todo ceshi
|
||||
//isWin = true
|
||||
|
||||
if isFreeSpin {
|
||||
Fortune := p.getCustomFortune(m)
|
||||
Fortune := getCustomFortune(m)
|
||||
if Fortune.ForceRound == m.GetProgressValue() {
|
||||
isWin = true
|
||||
}
|
||||
}
|
||||
isNudge, isReSpin := Descx(m).GetNudgeAndReSpin(isWin)
|
||||
|
||||
//todo ceshi
|
||||
//isNudge = true
|
||||
//isReSpin = true
|
||||
if isWin {
|
||||
itemId := Descx(m).GetWinItem(isFreeSpin)
|
||||
symbols[2] = itemId
|
||||
|
@ -267,13 +297,35 @@ func (p *PluginBase) checkMid(m intf.Master, isFreeSpin bool) {
|
|||
FreeSpinCount: freeSpinCount,
|
||||
}).SetWin(win * (multi - 1))
|
||||
|
||||
Fortune := getCustomFortune(m)
|
||||
|
||||
Fortune.Multiple = multi
|
||||
//Fortune.MultipleWin = win * (multi - 1)
|
||||
Fortune.FreeSpinItemId = symbols[7]
|
||||
if freeSpinCount > 0 {
|
||||
customFortune := getCustomFortune(m)
|
||||
if isFreeSpin {
|
||||
//logx.Errorf("----ReTrigger[%v] FreeNumMax[%v] FreeSpinNum[%v]", customFortune.FreeNumTrigger, customFortune.FreeNumMax, customFortune.FreeSpinNum)
|
||||
customFortune.FreeStatus = 2
|
||||
customFortune.FreeNumTrigger = freeSpinCount
|
||||
customFortune.FreeNumMax += freeSpinCount
|
||||
customFortune.FreeSpinNum += freeSpinCount
|
||||
|
||||
//logx.Errorf("----2ReTrigger[%v] FreeNumMax[%v] FreeSpinNum[%v]", customFortune.FreeNumTrigger, customFortune.FreeNumMax, customFortune.FreeSpinNum)
|
||||
|
||||
m.AddProgress(freeSpinCount)
|
||||
m.AddCursorFeature(&generic.CustomExtraFreeSpin{ExtraTimes: freeSpinCount}).SetLifetime(1)
|
||||
//m.AddCursorFeature(customFortune).SetLifetime(customFortune.FreeSpinNum)
|
||||
m.CursorFeature(customFortune).SetLifetime(customFortune.FreeSpinNum)
|
||||
} else {
|
||||
//logx.Errorf("11Trigger[%v] FreeNumMax[%v] FreeSpinNum[%v]", customFortune.FreeNumTrigger, customFortune.FreeNumMax, customFortune.FreeSpinNum)
|
||||
customFortune.FreeStatus = 1
|
||||
customFortune.FreeNumTrigger = freeSpinCount
|
||||
customFortune.FreeNumMax += freeSpinCount
|
||||
customFortune.FreeSpinNum = freeSpinCount
|
||||
ForceRound := m.Randx().Int63n(freeSpinCount)
|
||||
m.AddNodeFeature(m.AddNodeOnCursor(key.FreeSpin, freeSpinCount).GetID(), &CustomFortune{ForceRound: ForceRound})
|
||||
customFortune.ForceRound = ForceRound
|
||||
//logx.Errorf("1111111Trigger[%v] FreeNumMax[%v] FreeSpinNum[%v]", customFortune.FreeNumTrigger, customFortune.FreeNumMax, customFortune.FreeSpinNum)
|
||||
m.AddNodeFeature(m.AddNodeOnCursor(key.FreeSpin, freeSpinCount).GetID(), customFortune).SetLifetime(freeSpinCount)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,25 @@ package cashmania
|
|||
|
||||
import "mongo.games.com/game/gamesrv/slotspkg/slots/intf"
|
||||
|
||||
const (
|
||||
WU int = iota
|
||||
Nudge
|
||||
Respin
|
||||
)
|
||||
const (
|
||||
Nudge_WU int = iota
|
||||
Nudge_Up
|
||||
Nudge_Down
|
||||
)
|
||||
|
||||
// 获取特性数据
|
||||
func getCustomFortune(m intf.Master) *CustomFortune {
|
||||
customFortune := new(CustomFortune)
|
||||
if len(m.CursorCustoms(customFortune)) == 0 {
|
||||
m.AddCursorFeature(customFortune)
|
||||
}
|
||||
return m.CursorCustom(customFortune).(*CustomFortune)
|
||||
}
|
||||
func (p *PluginBase) RandomItemsByMid(m intf.Master, isFreeSpin bool, symbols []int64, poss ...int) {
|
||||
items := Descx(m).RandomMidItems(isFreeSpin, len(poss))
|
||||
for i, pos := range poss {
|
||||
|
|
|
@ -19,6 +19,14 @@ func Descx(m intf.Master) *descx {
|
|||
NodeDesc: m.Desc(),
|
||||
}
|
||||
}
|
||||
func (n descx) GetItemInfo() map[int64]*structs.CashManiaItemInfo {
|
||||
sheet := n.DefaultSheet("ItemInfo")
|
||||
rows, ok := sheet.(map[int64]*structs.CashManiaItemInfo)
|
||||
if !ok {
|
||||
panic(errors.ConfigTypeError.ErrorWith(n.Theme, "CashMania", "S_ItemInfo"))
|
||||
}
|
||||
return rows
|
||||
}
|
||||
|
||||
// 判断是否触发respin
|
||||
func (n descx) CheckWin(isFreeSpin bool) bool {
|
||||
|
|
|
@ -2,6 +2,7 @@ package cashmania
|
|||
|
||||
var Plugins = []interface{}{
|
||||
&PluginBase{},
|
||||
&PluginSpecial{},
|
||||
}
|
||||
|
||||
var SimulatorPlugins = []interface{}{
|
||||
|
|
|
@ -17,6 +17,17 @@ func (p *PluginSpecial) Theme() string {
|
|||
|
||||
// Special
|
||||
type Special struct {
|
||||
FreeStatus int `json:"fs"`
|
||||
FreeSpinNum int64 `json:"fsn"` //剩余freespin
|
||||
FreeNumMax int64 `json:"fnm"` //总次数
|
||||
FreeNumTrigger int64 `json:"fnt"` //新增freespin
|
||||
|
||||
FeatureType int `json:"feature_type"` //0.无特性 1.nudge 2.respin
|
||||
NudgeDirection int `json:"nudge_direction"` //1.上 2.下
|
||||
FreeSpinItemId int64 `json:"free_item_id"`
|
||||
Multiple int64 `json:"multiple"` //倍乘倍数
|
||||
Irv [][]float64 `json:"irv"`
|
||||
Frv [][]float64 `json:"frv"`
|
||||
}
|
||||
|
||||
// 获取特性数据
|
||||
|
@ -28,5 +39,56 @@ func (p *PluginSpecial) getCustomSpecial(m intf.Master) *Special {
|
|||
return m.CursorCustom(customSpecial).(*Special)
|
||||
}
|
||||
func (p *PluginSpecial) AfterSpin(m intf.Master) {
|
||||
Fortune := getCustomFortune(m)
|
||||
sp := p.getCustomSpecial(m)
|
||||
sp.FeatureType = Fortune.FeatureType
|
||||
sp.NudgeDirection = Fortune.NudgeDirection
|
||||
sp.FreeStatus = Fortune.FreeStatus
|
||||
sp.FreeSpinNum = Fortune.FreeSpinNum
|
||||
sp.FreeNumMax = Fortune.FreeNumMax
|
||||
sp.FreeNumTrigger = Fortune.FreeNumTrigger
|
||||
sp.FreeSpinItemId = Fortune.FreeSpinItemId
|
||||
sp.Multiple = Fortune.Multiple
|
||||
|
||||
itemInfo := Descx(m).GetItemInfo()
|
||||
displaySymbols := m.CursorFormation().GetReelFormattedDisplaySymbols()
|
||||
var irv = copyMatrix(displaySymbols)
|
||||
for i, symbol := range displaySymbols {
|
||||
for i2, i3 := range symbol {
|
||||
if itemInfo[i3].IsMid {
|
||||
irv[i][i2] = itemInfo[i3].Value
|
||||
} else {
|
||||
irv[i][i2] = itemInfo[i3].Value * float64(m.Bet()) / 10000
|
||||
}
|
||||
}
|
||||
}
|
||||
sp.Irv = irv
|
||||
|
||||
finalSymbols := m.CursorFormation().GetMatrixFormattedFinalSymbols()
|
||||
var frv = copyMatrix(finalSymbols)
|
||||
for i, symbol := range finalSymbols {
|
||||
for i2, i3 := range symbol {
|
||||
if itemInfo[i3].IsMid {
|
||||
frv[i][i2] = itemInfo[i3].Value
|
||||
} else {
|
||||
frv[i][i2] = itemInfo[i3].Value * float64(m.Bet()) / 10000
|
||||
}
|
||||
}
|
||||
}
|
||||
sp.Frv = frv
|
||||
|
||||
}
|
||||
func copyMatrix(mat [][]int64) [][]float64 {
|
||||
if mat == nil {
|
||||
return nil
|
||||
}
|
||||
var newMat [][]float64
|
||||
for _, row := range mat {
|
||||
var r []float64
|
||||
for _, val := range row {
|
||||
r = append(r, 0*float64(val))
|
||||
}
|
||||
newMat = append(newMat, r)
|
||||
}
|
||||
return newMat
|
||||
}
|
||||
|
|
|
@ -12,10 +12,12 @@ type SlotsEnterResponse struct {
|
|||
BetSizeIndex int64
|
||||
BetLevelIndex int64
|
||||
BetLineIndex int64
|
||||
BaseBetIndex int64
|
||||
BetChangeList []float64
|
||||
BetSizes []int64
|
||||
BetLevels []int64
|
||||
BetLines []int64
|
||||
BaseBets []int64
|
||||
}
|
||||
type SlotsPlayRequest struct {
|
||||
Theme string
|
||||
|
|
|
@ -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
|
@ -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;
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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)
|
||||
}
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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{
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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{
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
// }
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
@ -3251,7 +3172,7 @@ func CSUpdateAttribute(s *netlib.Session, packetId int, data interface{}, sid in
|
|||
send()
|
||||
return nil
|
||||
}
|
||||
if msg.GuideId == 1 {
|
||||
if msg.GuideId == common.GuideIdNewPlayer {
|
||||
if p.GuideStep >= 0 && p.GuideStep < model.GameParamData.GuideStepMaxNum {
|
||||
p.GuideStep = -1 // 跳过引导为 -1
|
||||
pack.OpRetCode = player_proto.OpResultCode_OPRC_Sucess
|
||||
|
@ -3269,6 +3190,7 @@ func CSUpdateAttribute(s *netlib.Session, packetId int, data interface{}, sid in
|
|||
return nil
|
||||
}
|
||||
p.GuideStep = int32(msg.GetParam()[0])
|
||||
p.GuideData[msg.GetGuideId()] = int32(msg.GetParam()[0])
|
||||
pack.OpRetCode = player_proto.OpResultCode_OPRC_Sucess
|
||||
send()
|
||||
return nil
|
||||
|
@ -3284,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
|
||||
}
|
||||
|
@ -3327,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
|
||||
|
@ -3356,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
|
||||
}
|
||||
|
@ -3379,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)
|
||||
|
@ -3418,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)
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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{})
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
})
|
||||
}
|
|
@ -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
|
@ -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]
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
},
|
||||
})
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue