增加玩家全服数据
This commit is contained in:
parent
c50e176e6c
commit
38d6f14b95
@ -4,6 +4,7 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"crypto/aes"
|
"crypto/aes"
|
||||||
"crypto/cipher"
|
"crypto/cipher"
|
||||||
|
"crypto/md5"
|
||||||
crand "crypto/rand"
|
crand "crypto/rand"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"encoding/gob"
|
"encoding/gob"
|
||||||
@ -283,3 +284,14 @@ func Compare(x int, condition string, y int) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func UniKey(seed string) string {
|
||||||
|
hash := md5.New()
|
||||||
|
timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
|
||||||
|
io.WriteString(hash, seed+timestamp)
|
||||||
|
return fmt.Sprintf("%x", hash.Sum(nil))
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetUserKey(Uid int64) string {
|
||||||
|
return fmt.Sprintf("user_data_%d", Uid)
|
||||||
|
}
|
||||||
|
|||||||
@ -94,10 +94,12 @@ const G_Champion_settlement_Duration = 3600 * 23
|
|||||||
const G_Champion_Unlock_Score = 2
|
const G_Champion_Unlock_Score = 2
|
||||||
const G_Champion_Max_Score = 44650
|
const G_Champion_Max_Score = 44650
|
||||||
const G_Champion_People_Cnt = 50
|
const G_Champion_People_Cnt = 50
|
||||||
|
const SUCCESS = 1
|
||||||
const (
|
const (
|
||||||
ORDER_STATUS_IDLE = 0 // 订单未完成
|
ORDER_STATUS_IDLE = 0 // 订单未完成
|
||||||
ORDER_STATUS_PAY = 1 // 订单已支付
|
ORDER_STATUS_PAY = 1 // 订单已支付
|
||||||
ORDER_STATUS_CANCEL = 2 // 订单取消
|
ORDER_STATUS_CANCEL = 2 // 订单取消
|
||||||
ORDER_STATUS_SHIP = 3 // 订单已发货
|
ORDER_STATUS_SHIP = 3 // 订单已发货
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const GLOBAL_SERVER_ID = 0 // 全局服ID
|
||||||
|
|||||||
@ -16,7 +16,7 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var FuncMap = map[int]func(*Agent, *msg.Msg) error{} // 消息处理函数
|
var FuncMap = map[int]func(*Agent, *msg.Msg) error{} // 消息处理函数
|
||||||
|
var CallbackChan = make(map[string]chan *msg.Msg) // 回调消息队列
|
||||||
var (
|
var (
|
||||||
server *network.TCPServer // 服务器
|
server *network.TCPServer // 服务器
|
||||||
Center *network.TCPClient // 集群中心
|
Center *network.TCPClient // 集群中心
|
||||||
|
|||||||
@ -125,6 +125,32 @@ func SendServerMsg(m *msg.Msg, serverId int) error {
|
|||||||
return fmt.Errorf("server %d not online", serverId)
|
return fmt.Errorf("server %d not online", serverId)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CallServerMsg(m *msg.Msg, serverId int) (*msg.Msg, error) {
|
||||||
|
if v, ok := serverAgent.Load(serverId); ok {
|
||||||
|
data, err := GoUtil.GobMarshal(m)
|
||||||
|
if err != nil {
|
||||||
|
log.Debug("CallServerMsg GobMarshal err %v", err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
v.(network.Agent).WriteMsg(data)
|
||||||
|
}
|
||||||
|
m.UniKey = GoUtil.UniKey("clusterGlobal")
|
||||||
|
newChan := make(chan *msg.Msg, 1)
|
||||||
|
registerChanel(m.UniKey, newChan)
|
||||||
|
timeout := time.After(15 * time.Second)
|
||||||
|
select {
|
||||||
|
case <-newChan:
|
||||||
|
backm := <-newChan
|
||||||
|
unregisterChanel(m.UniKey)
|
||||||
|
if backm == nil {
|
||||||
|
return nil, fmt.Errorf("server %d not response", serverId)
|
||||||
|
}
|
||||||
|
return backm, nil
|
||||||
|
case <-timeout:
|
||||||
|
return nil, fmt.Errorf("timeout waiting for server %d response", serverId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func SendMsgAll(m *msg.Msg) {
|
func SendMsgAll(m *msg.Msg) {
|
||||||
data, err := GoUtil.GobMarshal(m)
|
data, err := GoUtil.GobMarshal(m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -139,6 +165,13 @@ func SendMsgAll(m *msg.Msg) {
|
|||||||
|
|
||||||
func processMsg(a *Agent, m *msg.Msg) error {
|
func processMsg(a *Agent, m *msg.Msg) error {
|
||||||
var err error
|
var err error
|
||||||
|
// 先处理同步回调
|
||||||
|
if m.UniKey != "" {
|
||||||
|
if chanel, ok := CallbackChan[m.UniKey]; ok {
|
||||||
|
chanel <- m
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
if fun, ok := FuncMap[m.Type]; ok {
|
if fun, ok := FuncMap[m.Type]; ok {
|
||||||
err = fun(a, m)
|
err = fun(a, m)
|
||||||
} else {
|
} else {
|
||||||
@ -151,6 +184,14 @@ func registerFunc(key int, fun func(*Agent, *msg.Msg) error) {
|
|||||||
FuncMap[key] = fun
|
FuncMap[key] = fun
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func registerChanel(key string, chanel chan *msg.Msg) {
|
||||||
|
CallbackChan[key] = chanel
|
||||||
|
}
|
||||||
|
|
||||||
|
func unregisterChanel(key string) {
|
||||||
|
delete(CallbackChan, key)
|
||||||
|
}
|
||||||
|
|
||||||
func sendGameMsg(m *msg.Msg) {
|
func sendGameMsg(m *msg.Msg) {
|
||||||
MsgChan <- m
|
MsgChan <- m
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,7 +15,8 @@
|
|||||||
"TELOGDIR" : "./teLog/",
|
"TELOGDIR" : "./teLog/",
|
||||||
|
|
||||||
"GameName": "pet_home_local",
|
"GameName": "pet_home_local",
|
||||||
"GameID": 1,
|
"ListenAddr": ":3001",
|
||||||
|
"CenterAddr": ":3000",
|
||||||
"ServerType":"node",
|
"ServerType":"node",
|
||||||
|
|
||||||
"ServerID": 1,
|
"ServerID": 1,
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import (
|
|||||||
"encoding/gob"
|
"encoding/gob"
|
||||||
"fmt"
|
"fmt"
|
||||||
"server/GoUtil"
|
"server/GoUtil"
|
||||||
|
"server/MergeConst"
|
||||||
mergeCluster "server/cluster"
|
mergeCluster "server/cluster"
|
||||||
"server/conf"
|
"server/conf"
|
||||||
"server/game/mod/card"
|
"server/game/mod/card"
|
||||||
@ -73,6 +74,9 @@ func (f *FriendMgr) Init() {
|
|||||||
f.RegisterHandler(msg.HANDLE_TYPE_CHAMPSHIP_RESULT, f.sendToPlayer)
|
f.RegisterHandler(msg.HANDLE_TYPE_CHAMPSHIP_RESULT, f.sendToPlayer)
|
||||||
f.RegisterHandler(msg.HANDLE_TYPE_TREASURE_RESULT, f.sendToPlayer)
|
f.RegisterHandler(msg.HANDLE_TYPE_TREASURE_RESULT, f.sendToPlayer)
|
||||||
f.RegisterHandler(msg.HANDLE_TYPE_FACEBOOK_UNBIND, f.sendToPlayer)
|
f.RegisterHandler(msg.HANDLE_TYPE_FACEBOOK_UNBIND, f.sendToPlayer)
|
||||||
|
|
||||||
|
f.RegisterHandler(msg.HANDLE_TYPE_VAR_USER_GET, f.GetVarUserData)
|
||||||
|
f.RegisterHandler(msg.HANDLE_TYPE_VAR_USER_SET, f.SetVarUserData)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *FriendMgr) getData() *FirendData {
|
func (f *FriendMgr) getData() *FirendData {
|
||||||
@ -115,6 +119,31 @@ func (f *FriendMgr) sync(m *msg.Msg) (interface{}, error) {
|
|||||||
return data, nil
|
return data, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *FriendMgr) GetVarUserData(m *msg.Msg) (interface{}, error) {
|
||||||
|
Key := GoUtil.GetUserKey(int64(m.To))
|
||||||
|
data := G_GameLogicPtr.VarMgr.GetUserVar(Key)
|
||||||
|
if data == nil {
|
||||||
|
data = &VarUserData{
|
||||||
|
Upvote: 0,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return data, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *FriendMgr) SetVarUserData(m *msg.Msg) (interface{}, error) {
|
||||||
|
VarOp := m.Extra.(VarOpration)
|
||||||
|
Key := GoUtil.GetUserKey(int64(m.To))
|
||||||
|
data := G_GameLogicPtr.VarMgr.GetUserVar(Key)
|
||||||
|
switch VarOp.Type {
|
||||||
|
case VAR_OP_UPVOTE:
|
||||||
|
data.Upvote++
|
||||||
|
}
|
||||||
|
return &VarOpration{
|
||||||
|
Data: data,
|
||||||
|
Code: MergeConst.SUCCESS,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
// 发送消息给玩家
|
// 发送消息给玩家
|
||||||
func sendToPlayer(m *msg.Msg) error {
|
func sendToPlayer(m *msg.Msg) error {
|
||||||
p := G_GameLogicPtr.GetPlayer(int64(m.To))
|
p := G_GameLogicPtr.GetPlayer(int64(m.To))
|
||||||
@ -132,19 +161,16 @@ func FriendMgrSend(m1 *msg.Msg) error {
|
|||||||
err := mergeCluster.SendServerMsg(m, ToServer)
|
err := mergeCluster.SendServerMsg(m, ToServer)
|
||||||
if err != nil { // 区服不在线
|
if err != nil { // 区服不在线
|
||||||
G_GameLogicPtr.FriendMgrSend(m)
|
G_GameLogicPtr.FriendMgrSend(m)
|
||||||
//log.Debug("send to server %d error : %s\n", ToServer, err)
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
//log.Debug("send to server %d success, %d", ToServer, conf.Server.ServerID)
|
|
||||||
G_GameLogicPtr.FriendMgrSend(m)
|
G_GameLogicPtr.FriendMgrSend(m)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// 集群好友消息同步
|
// 集群好友消息同步
|
||||||
func ClusterFriendSync(m *msg.Msg) error {
|
func ClusterFriendSync(m *msg.Msg) error {
|
||||||
log.Debug("ClusterFriendSync")
|
|
||||||
if v, ok := G_GameLogicPtr.FriendMgr.getData().ClusterMsg[m.To]; ok {
|
if v, ok := G_GameLogicPtr.FriendMgr.getData().ClusterMsg[m.To]; ok {
|
||||||
for _, msg := range v {
|
for _, msg := range v {
|
||||||
if msg.H == 1 {
|
if msg.H == 1 {
|
||||||
@ -160,5 +186,14 @@ func ClusterFriendSync(m *msg.Msg) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func FriendMgrCall(m *msg.Msg) interface{} {
|
func FriendMgrCall(m *msg.Msg) interface{} {
|
||||||
|
ToServer := GoUtil.GetServerIdByUid(m.To)
|
||||||
|
if ToServer != conf.Server.ServerID {
|
||||||
|
r, err := mergeCluster.CallServerMsg(m, ToServer)
|
||||||
|
if err != nil { // 区服不在线
|
||||||
|
log.Debug("FriendMgrCall err %v", err)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return r
|
||||||
|
}
|
||||||
return G_GameLogicPtr.FriendMgrCall(m.Clone())
|
return G_GameLogicPtr.FriendMgrCall(m.Clone())
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package game
|
|||||||
import (
|
import (
|
||||||
"server/GoUtil"
|
"server/GoUtil"
|
||||||
"server/game/mod/item"
|
"server/game/mod/item"
|
||||||
|
"server/game/mod/msg"
|
||||||
proto "server/msg"
|
proto "server/msg"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -133,6 +134,16 @@ func PlayroomVisit(p *Player, Uid int) {
|
|||||||
r.Upvote = GoUtil.InArray(Uid, PlayroomMod.UpvoteList)
|
r.Upvote = GoUtil.InArray(Uid, PlayroomMod.UpvoteList)
|
||||||
r.Items = Items
|
r.Items = Items
|
||||||
r.Status = int32(PlayroomMod.GameStatus)
|
r.Status = int32(PlayroomMod.GameStatus)
|
||||||
r.UpvoteCount = int32(PlayerData.Upvote)
|
data := FriendMgrCall(&msg.Msg{
|
||||||
|
From: int(p.M_DwUin),
|
||||||
|
To: Uid,
|
||||||
|
Type: msg.HANDLE_TYPE_VAR_USER_GET,
|
||||||
|
})
|
||||||
|
if data == nil {
|
||||||
|
data = &VarUserData{
|
||||||
|
Upvote: 0,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
r.UpvoteCount = int32(data.(*VarUserData).Upvote)
|
||||||
p.PushClientRes(r)
|
p.PushClientRes(r)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2549,6 +2549,7 @@ func ReqFriendTLUpvote(player *Player, buf []byte) error {
|
|||||||
})
|
})
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
// 添加时间线
|
||||||
m := &MsqMod.Msg{
|
m := &MsqMod.Msg{
|
||||||
Type: MsqMod.HANDLE_TYPE_HANDBOOK_UPVOTE,
|
Type: MsqMod.HANDLE_TYPE_HANDBOOK_UPVOTE,
|
||||||
From: int(player.M_DwUin),
|
From: int(player.M_DwUin),
|
||||||
@ -2556,6 +2557,15 @@ func ReqFriendTLUpvote(player *Player, buf []byte) error {
|
|||||||
SendT: GoUtil.Now(),
|
SendT: GoUtil.Now(),
|
||||||
}
|
}
|
||||||
FriendMgrSend(m)
|
FriendMgrSend(m)
|
||||||
|
// 添加记录
|
||||||
|
m1 := &MsqMod.Msg{
|
||||||
|
Type: MsqMod.HANDLE_TYPE_VAR_USER_SET,
|
||||||
|
From: int(player.M_DwUin),
|
||||||
|
To: int(FUid),
|
||||||
|
SendT: GoUtil.Now(),
|
||||||
|
Extra: VarOpration{Type: VAR_OP_UPVOTE},
|
||||||
|
}
|
||||||
|
FriendMgrSend(m1)
|
||||||
player.PlayMod.save()
|
player.PlayMod.save()
|
||||||
player.PushClientRes(&msg.ResFriendTLUpvote{
|
player.PushClientRes(&msg.ResFriendTLUpvote{
|
||||||
Code: msg.RES_CODE_SUCCESS,
|
Code: msg.RES_CODE_SUCCESS,
|
||||||
@ -3059,7 +3069,7 @@ func ReqRaceReward(player *Player, buf []byte) error {
|
|||||||
|
|
||||||
// 请求playroom基础数据
|
// 请求playroom基础数据
|
||||||
func ReqPlayroom(player *Player, buf []byte) error {
|
func ReqPlayroom(player *Player, buf []byte) error {
|
||||||
PlayroomBackData(player)
|
// PlayroomBackData(player)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -33,6 +33,17 @@ type VarGoldCard struct {
|
|||||||
Five int
|
Five int
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type VarOpration struct {
|
||||||
|
Type int
|
||||||
|
Key string
|
||||||
|
Data interface{}
|
||||||
|
Code int
|
||||||
|
}
|
||||||
|
|
||||||
|
type VarUserData struct {
|
||||||
|
Upvote int
|
||||||
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
ACT_STATUS_NOT_START = 0
|
ACT_STATUS_NOT_START = 0
|
||||||
ACT_STATUS_START = 1
|
ACT_STATUS_START = 1
|
||||||
@ -67,4 +78,5 @@ func init() {
|
|||||||
gob.Register(&limitedTimeEvent.LuckyCat{})
|
gob.Register(&limitedTimeEvent.LuckyCat{})
|
||||||
gob.Register(&msg.HandbookMsg{})
|
gob.Register(&msg.HandbookMsg{})
|
||||||
gob.Register(&limitedTimeEvent.CatTrick{})
|
gob.Register(&limitedTimeEvent.CatTrick{})
|
||||||
|
gob.Register(&VarOpration{})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import (
|
|||||||
"server/GoUtil"
|
"server/GoUtil"
|
||||||
"server/game/mod/card"
|
"server/game/mod/card"
|
||||||
"server/game/mod/msg"
|
"server/game/mod/msg"
|
||||||
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -14,28 +15,36 @@ type VarMgr struct {
|
|||||||
|
|
||||||
type VarData struct {
|
type VarData struct {
|
||||||
Var map[string]interface{}
|
Var map[string]interface{}
|
||||||
|
UserVar sync.Map
|
||||||
ZeroTime int64
|
ZeroTime int64
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
VAR_GOLD_CARD = "gold_card"
|
VAR_GOLD_CARD = "gold_card"
|
||||||
|
VAR_PLAYROOM_UPVOTE = "playroom_upvote"
|
||||||
|
VAR_USER_DATA = "user_data"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
VAR_OP_UPVOTE = 1
|
||||||
)
|
)
|
||||||
|
|
||||||
func (f *VarMgr) Init() {
|
func (f *VarMgr) Init() {
|
||||||
gob.Register(&VarGoldCard{})
|
gob.Register(&VarGoldCard{})
|
||||||
f.key = VAR_MGR_KEY
|
f.key = VAR_MGR_KEY
|
||||||
f.data = &VarData{
|
f.data = &VarData{
|
||||||
Var: make(map[string]interface{}),
|
Var: map[string]interface{}{},
|
||||||
}
|
}
|
||||||
// 注册处理函数
|
// 注册处理函数
|
||||||
f.init()
|
f.init()
|
||||||
if f.getData().Var == nil {
|
if f.data.(*VarData).Var == nil {
|
||||||
f.getData().Var = make(map[string]interface{})
|
f.data.(*VarData).Var = make(map[string]interface{})
|
||||||
}
|
}
|
||||||
if f.getData().ZeroTime == GoUtil.ZeroTimestamp() {
|
if f.getData().ZeroTime == GoUtil.ZeroTimestamp() {
|
||||||
f.ZeroUpdate(&msg.Msg{})
|
f.ZeroUpdate(&msg.Msg{})
|
||||||
}
|
}
|
||||||
f.RegisterHandler(msg.SERVER_ZERO_UPDATE, f.ZeroUpdate)
|
f.RegisterHandler(msg.SERVER_ZERO_UPDATE, f.ZeroUpdate)
|
||||||
|
|
||||||
f.mDispatr.AfterFunc(time.Duration(GoUtil.NextZeroTimestampDuration())*time.Second, func() {
|
f.mDispatr.AfterFunc(time.Duration(GoUtil.NextZeroTimestampDuration())*time.Second, func() {
|
||||||
f.Send(&msg.Msg{
|
f.Send(&msg.Msg{
|
||||||
Type: msg.SERVER_ZERO_UPDATE,
|
Type: msg.SERVER_ZERO_UPDATE,
|
||||||
@ -43,6 +52,10 @@ func (f *VarMgr) Init() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *VarMgr) SetGlobalData(m *msg.Msg) (interface{}, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (f *VarMgr) ZeroUpdate(m *msg.Msg) (interface{}, error) {
|
func (f *VarMgr) ZeroUpdate(m *msg.Msg) (interface{}, error) {
|
||||||
f.getData().ZeroTime = GoUtil.ZeroTimestamp()
|
f.getData().ZeroTime = GoUtil.ZeroTimestamp()
|
||||||
// 随机生成两个金卡
|
// 随机生成两个金卡
|
||||||
@ -55,15 +68,29 @@ func (f *VarMgr) ZeroUpdate(m *msg.Msg) (interface{}, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (f *VarMgr) SetVar(key string, value interface{}) {
|
func (f *VarMgr) SetVar(key string, value interface{}) {
|
||||||
f.getData().Var[key] = value
|
f.getData().UserVar.Store(key, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *VarMgr) GetVar(key string) interface{} {
|
func (f *VarMgr) GetVar(key string) interface{} {
|
||||||
return f.getData().Var[key]
|
value, _ := f.getData().UserVar.Load(key)
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *VarMgr) SetUserVar(key string, value *VarUserData) {
|
||||||
|
f.getData().UserVar.Store(key, value)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *VarMgr) GetUserVar(key string) *VarUserData {
|
||||||
|
value, _ := f.getData().UserVar.Load(key)
|
||||||
|
if value == nil {
|
||||||
|
value = &VarUserData{}
|
||||||
|
f.getData().UserVar.Store(key, value)
|
||||||
|
}
|
||||||
|
return value.(*VarUserData)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *VarMgr) DelVar(key string) {
|
func (f *VarMgr) DelVar(key string) {
|
||||||
delete(f.getData().Var, key)
|
f.getData().UserVar.Delete(key)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *VarMgr) getData() *VarData {
|
func (f *VarMgr) getData() *VarData {
|
||||||
|
|||||||
@ -11,6 +11,7 @@ type Msg struct {
|
|||||||
End int64 // 过期时间
|
End int64 // 过期时间
|
||||||
Extra interface{} //额外信息
|
Extra interface{} //额外信息
|
||||||
Id int64
|
Id int64
|
||||||
|
UniKey string // 回调监听唯一键值
|
||||||
H int //处理类型
|
H int //处理类型
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,6 +87,9 @@ const (
|
|||||||
HANDLE_TYPE_TREASURE_RESULT //宝藏结果
|
HANDLE_TYPE_TREASURE_RESULT //宝藏结果
|
||||||
|
|
||||||
HANDLE_TYPE_FACEBOOK_UNBIND //facebook解绑
|
HANDLE_TYPE_FACEBOOK_UNBIND //facebook解绑
|
||||||
|
|
||||||
|
HANDLE_TYPE_VAR_USER_SET // 设置玩家数据
|
||||||
|
HANDLE_TYPE_VAR_USER_GET // 获取玩家数据
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user