Merge branch 'sdk' into online
This commit is contained in:
commit
08241b09a9
104
src/server/GoUtil/feishu.go
Normal file
104
src/server/GoUtil/feishu.go
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
package GoUtil
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"net/http"
|
||||||
|
"server/conf"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
FEISHU_WEBHOOK = "https://open.feishu.cn/open-apis/bot/v2/hook/70e24a79-b019-434a-b4d1-4592bbf7c311"
|
||||||
|
)
|
||||||
|
|
||||||
|
// AAqFpbuPhFSEx
|
||||||
|
func SendFeishuFatal(PlayerId int, FuncName string, msg string) error {
|
||||||
|
// 创建请求体
|
||||||
|
payload := map[string]interface{}{
|
||||||
|
"msg_type": "interactive",
|
||||||
|
"card": map[string]interface{}{
|
||||||
|
"type": "template",
|
||||||
|
"data": map[string]interface{}{
|
||||||
|
"template_id": "AAqFpbuPhFSEx",
|
||||||
|
"template_version_name": "1.0.0",
|
||||||
|
"template_variable": map[string]interface{}{
|
||||||
|
"appName": conf.Server.GameName,
|
||||||
|
"playerId": PlayerId,
|
||||||
|
"funcName": FuncName,
|
||||||
|
"fatal_msg": msg,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
payloadBytes, err := json.Marshal(payload)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建HTTP请求
|
||||||
|
req, err := http.NewRequest("POST", FEISHU_WEBHOOK, bytes.NewBuffer(payloadBytes))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
req.Header.Set("Content-Type", "application/json")
|
||||||
|
|
||||||
|
// 发送请求
|
||||||
|
client := &http.Client{}
|
||||||
|
resp, err := client.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
// 检查响应状态码
|
||||||
|
if resp.StatusCode != http.StatusOK {
|
||||||
|
return fmt.Errorf("failed to send message, status code: %d", resp.StatusCode)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func SendFeishuMsg2(msg string) error {
|
||||||
|
// 创建请求体
|
||||||
|
payload := map[string]interface{}{
|
||||||
|
"msg_type": "interactive",
|
||||||
|
"card": map[string]interface{}{
|
||||||
|
"type": "template",
|
||||||
|
"data": map[string]interface{}{
|
||||||
|
"template_id": "AAqFpLD2XfySR",
|
||||||
|
"template_version_name": "1.0.1",
|
||||||
|
"template_variable": map[string]interface{}{
|
||||||
|
"appName": conf.Server.GameName,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
payloadBytes, err := json.Marshal(payload)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建HTTP请求
|
||||||
|
req, err := http.NewRequest("POST", FEISHU_WEBHOOK, bytes.NewBuffer(payloadBytes))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
req.Header.Set("Content-Type", "application/json")
|
||||||
|
|
||||||
|
// 发送请求
|
||||||
|
client := &http.Client{}
|
||||||
|
resp, err := client.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
// 检查响应状态码
|
||||||
|
if resp.StatusCode != http.StatusOK {
|
||||||
|
return fmt.Errorf("failed to send message, status code: %d", resp.StatusCode)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
@ -214,7 +214,7 @@ func GetEmitProduceType(Id int) []string {
|
|||||||
func GetEmitProduceChessType(Id int) []string {
|
func GetEmitProduceChessType(Id int) []string {
|
||||||
data, err := gamedata.GetDataByIntKey(CFG_NAME, Id)
|
data, err := gamedata.GetDataByIntKey(CFG_NAME, Id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Debug("GetEmitProduceChessType GetOne Id:%v not found", Id)
|
//log.Debug("GetEmitProduceChessType GetOne Id:%v not found", Id)
|
||||||
return []string{}
|
return []string{}
|
||||||
}
|
}
|
||||||
value := gamedata.ParseString(data["Product_Type"])
|
value := gamedata.ParseString(data["Product_Type"])
|
||||||
|
|||||||
@ -12,6 +12,7 @@ const (
|
|||||||
CFG_PLAYROOM_MOOD = "PlayroomMood"
|
CFG_PLAYROOM_MOOD = "PlayroomMood"
|
||||||
CFG_PLAYROOM_PHYSIOLOGY = "PlayroomPhysiology"
|
CFG_PLAYROOM_PHYSIOLOGY = "PlayroomPhysiology"
|
||||||
CFG_PLAYROOM_PHYSIOLOGY_TYPE = "PlayroomPhysiologyType"
|
CFG_PLAYROOM_PHYSIOLOGY_TYPE = "PlayroomPhysiologyType"
|
||||||
|
CFG_PLAYROOM_SHOP = "PlayroomShop"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@ -20,6 +21,15 @@ func init() {
|
|||||||
gamedata.InitCfg(CFG_PLAYROOM_MOOD)
|
gamedata.InitCfg(CFG_PLAYROOM_MOOD)
|
||||||
gamedata.InitCfg(CFG_PLAYROOM_PHYSIOLOGY)
|
gamedata.InitCfg(CFG_PLAYROOM_PHYSIOLOGY)
|
||||||
gamedata.InitCfg(CFG_PLAYROOM_PHYSIOLOGY_TYPE)
|
gamedata.InitCfg(CFG_PLAYROOM_PHYSIOLOGY_TYPE)
|
||||||
|
gamedata.InitCfg(CFG_PLAYROOM_SHOP)
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetShopItem(Id int) (int, []*item.Item) {
|
||||||
|
data, err := gamedata.GetDataByIntKey(CFG_PLAYROOM_SHOP, Id)
|
||||||
|
if err != nil {
|
||||||
|
return 0, nil
|
||||||
|
}
|
||||||
|
return gamedata.GetIntValue(data, "ItemId"), gamedata.GetItemList(data, "Cost")
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetUnLockLv() int {
|
func GetUnLockLv() int {
|
||||||
@ -197,6 +207,18 @@ func GetPhysiologyDuration(Id int, Num int) int {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetPhysiologyTypeList() []int {
|
||||||
|
r := make([]int, 0)
|
||||||
|
data, err := gamedata.GetData(CFG_PLAYROOM_PHYSIOLOGY_TYPE)
|
||||||
|
if err != nil {
|
||||||
|
return []int{}
|
||||||
|
}
|
||||||
|
for k := range data {
|
||||||
|
r = append(r, GoUtil.Int(k))
|
||||||
|
}
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|
||||||
func GetMoodEffect(Id int) (int, int) {
|
func GetMoodEffect(Id int) (int, int) {
|
||||||
data, err := gamedata.GetDataByIntKey(CFG_PLAYROOM_PHYSIOLOGY_TYPE, Id)
|
data, err := gamedata.GetDataByIntKey(CFG_PLAYROOM_PHYSIOLOGY_TYPE, Id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@ -17,6 +17,7 @@ type FriendMgr struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type FirendData struct {
|
type FirendData struct {
|
||||||
|
Id int64
|
||||||
List map[int][]*msg.Msg // 本服信箱
|
List map[int][]*msg.Msg // 本服信箱
|
||||||
ClusterMsg map[int][]*msg.Msg // 集群信箱
|
ClusterMsg map[int][]*msg.Msg // 集群信箱
|
||||||
}
|
}
|
||||||
@ -69,19 +70,31 @@ func (f *FriendMgr) getData() *FirendData {
|
|||||||
return f.data.(*FirendData)
|
return f.data.(*FirendData)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *FriendMgr) ZeroUpdate(m *msg.Msg) (interface{}, error) {
|
||||||
|
Now := GoUtil.Now()
|
||||||
|
for k, v := range f.getData().List {
|
||||||
|
for j, msg := range v {
|
||||||
|
if msg.End < Now-7*24*3600 {
|
||||||
|
f.getData().List[k] = append(f.getData().List[k][:j], f.getData().List[k][j+1:]...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
// 通知玩家
|
// 通知玩家
|
||||||
func (f *FriendMgr) sendToPlayer(m *msg.Msg) (interface{}, error) {
|
func (f *FriendMgr) sendToPlayer(m *msg.Msg) (interface{}, error) {
|
||||||
|
f.getData().Id++
|
||||||
|
m.Id = f.getData().Id
|
||||||
err := sendToPlayer(m)
|
err := sendToPlayer(m)
|
||||||
if err != nil {
|
if err == nil {
|
||||||
log.Debug("send to player error : %s\n", err)
|
m.H = 1
|
||||||
ToServerId := GoUtil.GetServerIdByUid(m.To)
|
}
|
||||||
if ToServerId != conf.Server.ServerID {
|
ToServerId := GoUtil.GetServerIdByUid(m.To)
|
||||||
f.getData().ClusterMsg[m.To] = append(f.getData().ClusterMsg[m.To], m) // 保存到集群消息
|
if ToServerId != conf.Server.ServerID {
|
||||||
} else {
|
f.getData().ClusterMsg[m.To] = append(f.getData().ClusterMsg[m.To], m) // 保存到集群消息
|
||||||
f.getData().List[m.To] = append(f.getData().List[m.To], m) // 保存到本地消息
|
} else {
|
||||||
}
|
f.getData().List[m.To] = append(f.getData().List[m.To], m) // 保存到本地消息
|
||||||
f.update = true
|
|
||||||
return nil, err
|
|
||||||
}
|
}
|
||||||
log.Debug("send to player success")
|
log.Debug("send to player success")
|
||||||
return nil, nil
|
return nil, nil
|
||||||
@ -90,7 +103,9 @@ func (f *FriendMgr) sendToPlayer(m *msg.Msg) (interface{}, error) {
|
|||||||
// 同步信息
|
// 同步信息
|
||||||
func (f *FriendMgr) sync(m *msg.Msg) (interface{}, error) {
|
func (f *FriendMgr) sync(m *msg.Msg) (interface{}, error) {
|
||||||
data := f.getData().List[m.From]
|
data := f.getData().List[m.From]
|
||||||
f.getData().List[m.From] = make([]*msg.Msg, 0)
|
for _, v := range data {
|
||||||
|
v.H = 1
|
||||||
|
}
|
||||||
log.Debug("sync friendMgr msg to player %d success mailbox %v", m.From, data)
|
log.Debug("sync friendMgr msg to player %d success mailbox %v", m.From, data)
|
||||||
return data, nil
|
return data, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@ -49,7 +49,8 @@ func RegisterMsgProcessFunc(key string, value1 interface{}) {
|
|||||||
func RunNetProcessByKey(key string, param []interface{}) error {
|
func RunNetProcessByKey(key string, param []interface{}) error {
|
||||||
fun, ok := RegisterNetWorkFunc[key]
|
fun, ok := RegisterNetWorkFunc[key]
|
||||||
if ok {
|
if ok {
|
||||||
err := fun.(func([]interface{}) error)(param)
|
_, player, buf := ParseArgs(param)
|
||||||
|
err := fun.(func(*Player, []byte) error)(player, buf)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cant find network func %s", key)
|
return fmt.Errorf("cant find network func %s", key)
|
||||||
@ -810,17 +811,19 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
|
|||||||
RegisterMsgProcessFunc("ReqPlayroomChip", ReqPlayroomChip) // 消除碎片
|
RegisterMsgProcessFunc("ReqPlayroomChip", ReqPlayroomChip) // 消除碎片
|
||||||
RegisterMsgProcessFunc("ReqPlayroomOutline", ReqPlayroomOutline) // 打工离线
|
RegisterMsgProcessFunc("ReqPlayroomOutline", ReqPlayroomOutline) // 打工离线
|
||||||
RegisterMsgProcessFunc("ReqPlayroomWrokOutline", ReqPlayroomWrokOutline) // 打工离线完成
|
RegisterMsgProcessFunc("ReqPlayroomWrokOutline", ReqPlayroomWrokOutline) // 打工离线完成
|
||||||
|
RegisterMsgProcessFunc("ReqPlayroomShop", ReqPlayroomShop) // playroom 商店
|
||||||
|
RegisterMsgProcessFunc("ReqPlayroomBuyItem", ReqPlayroomBuyItem) // 购买playroom物品
|
||||||
|
|
||||||
// 宠物宝藏
|
// 宠物宝藏
|
||||||
RegisterMsgProcessFunc("ReqFriendTreasure", ReqFriendTreasure) // 请求好友宝藏数据
|
RegisterMsgProcessFunc("ReqFriendTreasure", ReqFriendTreasure) // 请求好友宝藏数据
|
||||||
RegisterMsgProcessFunc("ReqFriendTreasureStart", ReqFriendTreasureStart) // 开始游戏
|
RegisterMsgProcessFunc("ReqFriendTreasureStart", ReqFriendTreasureStart) // 开始游戏
|
||||||
RegisterMsgProcessFunc("ReqFriendTreasureFilp", ReqFriendTreasureFilp) // 翻牌
|
RegisterMsgProcessFunc("ReqFriendTreasureFilp", ReqFriendTreasureFilp) // 翻牌
|
||||||
RegisterMsgProcessFunc("ReqFriendTreasureEnd", ReqFriendTreasureEnd) // 结束游戏
|
RegisterMsgProcessFunc("ReqFriendTreasureEnd", ReqFriendTreasureEnd) // 结束游戏
|
||||||
RegisterMsgProcessFunc("ReqPlayroomBuyItem", ReqPlayroomBuyItem) // 购买playroom物品
|
|
||||||
|
|
||||||
RegisterMsgProcessFunc("ReqKafkaLog", ReqKafkaLog) // 客户端日志
|
RegisterMsgProcessFunc("ReqKafkaLog", ReqKafkaLog) // 客户端日志
|
||||||
RegisterMsgProcessFunc("ReqCreateOrderSn", ReqCreateOrderSn) // 创建订单号
|
RegisterMsgProcessFunc("ReqCreateOrderSn", ReqCreateOrderSn) // 创建订单号
|
||||||
RegisterMsgProcessFunc("ReqShippingOrder", ReqShippingOrder) // 获取订单号
|
RegisterMsgProcessFunc("ReqShippingOrder", ReqShippingOrder) // 获取订单号
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ad *GameLogic) CreateHttpManager() {
|
func (ad *GameLogic) CreateHttpManager() {
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import (
|
|||||||
playroomCfg "server/conf/playroom"
|
playroomCfg "server/conf/playroom"
|
||||||
"server/db"
|
"server/db"
|
||||||
"server/game/mod/card"
|
"server/game/mod/card"
|
||||||
|
"server/game/mod/friend"
|
||||||
"server/game/mod/item"
|
"server/game/mod/item"
|
||||||
MsgMod "server/game/mod/msg"
|
MsgMod "server/game/mod/msg"
|
||||||
"server/game/mod/playroom"
|
"server/game/mod/playroom"
|
||||||
@ -22,12 +23,13 @@ import (
|
|||||||
"google.golang.org/protobuf/proto"
|
"google.golang.org/protobuf/proto"
|
||||||
)
|
)
|
||||||
|
|
||||||
func ReqGmCommand(args []interface{}) error {
|
func ReqGmCommand(player *Player, buf []byte) error {
|
||||||
_, player, buf := ParseArgs(args)
|
|
||||||
detail := &msg.ReqGmCommand{}
|
detail := &msg.ReqGmCommand{}
|
||||||
proto.Unmarshal(buf, detail)
|
proto.Unmarshal(buf, detail)
|
||||||
arg := strings.Split(detail.Command, " ")
|
return ReqGmCommand_(player, detail.Command)
|
||||||
log.Debug("Player %d ReqGmCommand:%v", player.M_DwUin, arg)
|
}
|
||||||
|
func ReqGmCommand_(player *Player, Command string) error {
|
||||||
|
arg := strings.Split(Command, " ")
|
||||||
switch arg[0] {
|
switch arg[0] {
|
||||||
case "additem":
|
case "additem":
|
||||||
id, _ := strconv.Atoi(arg[1])
|
id, _ := strconv.Atoi(arg[1])
|
||||||
@ -158,14 +160,6 @@ func ReqGmCommand(args []interface{}) error {
|
|||||||
G_GameLogicPtr.ChampshipMgrSend(&MsgMod.Msg{
|
G_GameLogicPtr.ChampshipMgrSend(&MsgMod.Msg{
|
||||||
Type: MsgMod.SERVER_ZERO_UPDATE,
|
Type: MsgMod.SERVER_ZERO_UPDATE,
|
||||||
})
|
})
|
||||||
case "addMail":
|
|
||||||
MailMod := player.PlayMod.getMailMod()
|
|
||||||
Id := MailMod.Send("test", "test", []*item.Item{item.NewItem(100001, 1)})
|
|
||||||
player.PushClientRes(MailMod.NotifyMail(Id))
|
|
||||||
case "addMail2":
|
|
||||||
MailMod := player.PlayMod.getMailMod()
|
|
||||||
Id := MailMod.Send("test", "test", []*item.Item{})
|
|
||||||
player.PushClientRes(MailMod.NotifyMail(Id))
|
|
||||||
case "resetEmitOrder":
|
case "resetEmitOrder":
|
||||||
OrderMod := player.PlayMod.getOrderMod()
|
OrderMod := player.PlayMod.getOrderMod()
|
||||||
OrderMod.EimtOrder = make(map[string]struct{})
|
OrderMod.EimtOrder = make(map[string]struct{})
|
||||||
@ -202,6 +196,7 @@ func ReqGmCommand(args []interface{}) error {
|
|||||||
case "playroomCollect":
|
case "playroomCollect":
|
||||||
CollectList := playroomCfg.GetDecorateList()
|
CollectList := playroomCfg.GetDecorateList()
|
||||||
PlayroomMod := player.PlayMod.getPlayroomMod()
|
PlayroomMod := player.PlayMod.getPlayroomMod()
|
||||||
|
PlayroomMod.Collect = make(map[int]int)
|
||||||
for _, v := range CollectList {
|
for _, v := range CollectList {
|
||||||
PlayroomMod.AddCollect(v)
|
PlayroomMod.AddCollect(v)
|
||||||
}
|
}
|
||||||
@ -262,6 +257,9 @@ func ReqGmCommand(args []interface{}) error {
|
|||||||
case "resetTriggerTime":
|
case "resetTriggerTime":
|
||||||
PlayroomMod := player.PlayMod.getPlayroomMod()
|
PlayroomMod := player.PlayMod.getPlayroomMod()
|
||||||
PlayroomMod.TriggerTime = 0
|
PlayroomMod.TriggerTime = 0
|
||||||
|
case "resetTimeline":
|
||||||
|
FriendMod := player.PlayMod.getFriendMod()
|
||||||
|
FriendMod.Log = make([]*friend.LogInfo, 0)
|
||||||
case "recoverUser":
|
case "recoverUser":
|
||||||
file, err := os.OpenFile(conf.Server.GameConfPath+"user.info", os.O_RDWR|os.O_CREATE, 0666)
|
file, err := os.OpenFile(conf.Server.GameConfPath+"user.info", os.O_RDWR|os.O_CREATE, 0666)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -282,7 +280,20 @@ func ReqGmCommand(args []interface{}) error {
|
|||||||
}
|
}
|
||||||
BaseMod := player.PlayMod.getBaseMod()
|
BaseMod := player.PlayMod.getBaseMod()
|
||||||
BaseMod.Uid = Uid
|
BaseMod.Uid = Uid
|
||||||
|
case "copyUser":
|
||||||
|
p1 := new(Player)
|
||||||
|
p1.InitPlayer(arg[1])
|
||||||
|
BaseMod := p1.PlayMod.getBaseMod()
|
||||||
|
BaseMod.Uid = player.M_DwUin
|
||||||
|
BaseMod.NickName = player.PlayMod.getBaseMod().NickName
|
||||||
|
BaseMod.LoginTime = GoUtil.Now()
|
||||||
|
player.PlayMod.mod_list = p1.PlayMod.mod_list
|
||||||
|
|
||||||
|
default:
|
||||||
|
return fmt.Errorf("Player %d ReqGmCommand:%v not found", player.M_DwUin, arg)
|
||||||
}
|
}
|
||||||
|
log.Debug("Player %d ReqGmCommand:%v", player.M_DwUin, arg)
|
||||||
|
|
||||||
player.PlayMod.save()
|
player.PlayMod.save()
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@ -351,23 +351,8 @@ func (p *Player) Login() {
|
|||||||
LoignBack(p) // 登录返回数据
|
LoignBack(p) // 登录返回数据
|
||||||
SyncMailMsg(p) // 同步邮件
|
SyncMailMsg(p) // 同步邮件
|
||||||
BaseMod.Login()
|
BaseMod.Login()
|
||||||
p.PlayMod.getCardMod().Login(G_GameLogicPtr.SeverInfo.OpenTime)
|
HandbookItem := p.PlayMod.getCardMod().Login(G_GameLogicPtr.SeverInfo.OpenTime)
|
||||||
if p.PlayerBaseMod.Data.UserName == "388faebe29ffe56666a04ea22b902b0f" {
|
p.HandleItem(HandbookItem, msg.ITEM_POP_LABEL_AllCollectRewardHB.String())
|
||||||
VarMod := p.PlayMod.getVarMod()
|
|
||||||
Mail1, _ := VarMod.GetVar(2)
|
|
||||||
if Mail1 != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
VarMod.SetVar(2, 1)
|
|
||||||
Items := make([]*item.Item, 0)
|
|
||||||
Items = append(Items, &item.Item{Id: item.ITEM_ENERGY_ID, Num: 500})
|
|
||||||
MailMod := p.PlayMod.getMailMod()
|
|
||||||
MailMod.Send("Game Bug Report Handling & Compensation",
|
|
||||||
`We sincerely apologize for this issue that has affected your experience.
|
|
||||||
One of our collleague will contact you soon, and we kindly ask for your cooperation with the QA process.
|
|
||||||
As a token of our appreciation, here is 500 Energy for your trouble.
|
|
||||||
Once again, we deeply regret any trouble this may have caused and thank you for your understanding and support.`, Items)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Player) Outline() {
|
func (p *Player) Outline() {
|
||||||
@ -380,6 +365,7 @@ func (p *Player) Outline() {
|
|||||||
BaseMod := p.PlayMod.getBaseMod()
|
BaseMod := p.PlayMod.getBaseMod()
|
||||||
BaseMod.Outline(int(Cacumulative))
|
BaseMod.Outline(int(Cacumulative))
|
||||||
p.PlayMod.save()
|
p.PlayMod.save()
|
||||||
|
p.UpdateUserInfo()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 离线 保存数据
|
// 离线 保存数据
|
||||||
@ -739,6 +725,7 @@ func (p *Player) GetSimpleData(Uid int, simple *PlayerSimpleData) error {
|
|||||||
func (p *Player) UpdateUserInfo() {
|
func (p *Player) UpdateUserInfo() {
|
||||||
simple := &PlayerSimpleData{}
|
simple := &PlayerSimpleData{}
|
||||||
Base := p.GetPlayerBaseMod()
|
Base := p.GetPlayerBaseMod()
|
||||||
|
BaseMod := p.PlayMod.getBaseMod()
|
||||||
simple.Name = p.PlayMod.getBaseMod().NickName
|
simple.Name = p.PlayMod.getBaseMod().NickName
|
||||||
simple.Avatar = p.PlayMod.getAvatarMod().SetId
|
simple.Avatar = p.PlayMod.getAvatarMod().SetId
|
||||||
simple.Uid = int(p.M_DwUin)
|
simple.Uid = int(p.M_DwUin)
|
||||||
@ -746,8 +733,8 @@ func (p *Player) UpdateUserInfo() {
|
|||||||
simple.Face = p.PlayMod.getFaceMod().SetId
|
simple.Face = p.PlayMod.getFaceMod().SetId
|
||||||
simple.Level = p.GetPlayerBaseMod().GetLevel()
|
simple.Level = p.GetPlayerBaseMod().GetLevel()
|
||||||
simple.Decorate = p.PlayMod.getDecorateMod().DecorateNum
|
simple.Decorate = p.PlayMod.getDecorateMod().DecorateNum
|
||||||
simple.Login = int64(Base.Data.LoginTime)
|
simple.Login = int64(BaseMod.LoginTime)
|
||||||
simple.Loginout = int64(Base.Data.LogoutTime)
|
simple.Loginout = int64(BaseMod.LogoutTime)
|
||||||
simple.FaceBook = Base.Data.FaceBookId
|
simple.FaceBook = Base.Data.FaceBookId
|
||||||
simple.FaceBookPic = p.PlayMod.getBaseMod().FacebookUrl
|
simple.FaceBookPic = p.PlayMod.getBaseMod().FacebookUrl
|
||||||
simple.Playroom = p.PlayMod.getPlayroomMod().Room
|
simple.Playroom = p.PlayMod.getPlayroomMod().Room
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"math"
|
"math"
|
||||||
"server/GoUtil"
|
"server/GoUtil"
|
||||||
|
"server/conf"
|
||||||
mergeDataCfg "server/conf/mergeData"
|
mergeDataCfg "server/conf/mergeData"
|
||||||
orderCfg "server/conf/order"
|
orderCfg "server/conf/order"
|
||||||
"server/game/mod/item"
|
"server/game/mod/item"
|
||||||
@ -113,9 +114,9 @@ func (p *PlayerChessData) UpdateChessData(player *Player, MChessData map[string]
|
|||||||
|
|
||||||
// 检查棋子数据是否一致
|
// 检查棋子数据是否一致
|
||||||
func (p *PlayerChessData) checkChessEqual(player *Player) bool {
|
func (p *PlayerChessData) checkChessEqual(player *Player) bool {
|
||||||
// if len(p.Data.MChessData) == 0 {
|
if len(p.Data.MChessData) == 0 && conf.Server.GameName == "Merge_Pet_Local" {
|
||||||
// return true
|
return true
|
||||||
// }
|
}
|
||||||
ChessList := player.PlayMod.getChessMod().GetChessList()
|
ChessList := player.PlayMod.getChessMod().GetChessList()
|
||||||
if len(ChessList) != len(p.Data.MChessData) {
|
if len(ChessList) != len(p.Data.MChessData) {
|
||||||
return false
|
return false
|
||||||
|
|||||||
@ -59,6 +59,9 @@ func handle(p *Player, m *msg.Msg) error {
|
|||||||
p.NoonUpdate(nil)
|
p.NoonUpdate(nil)
|
||||||
case msg.HANDLE_TYPE_INVITE_ADD_FRIEND: // 邀请添加好友
|
case msg.HANDLE_TYPE_INVITE_ADD_FRIEND: // 邀请添加好友
|
||||||
FriendMod := p.PlayMod.getFriendMod()
|
FriendMod := p.PlayMod.getFriendMod()
|
||||||
|
if m.From == 0 && m.From == int(p.M_DwUin) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
FriendMod.AddFriend(m.From)
|
FriendMod.AddFriend(m.From)
|
||||||
p.TeLog("friend_add", map[string]interface{}{
|
p.TeLog("friend_add", map[string]interface{}{
|
||||||
"player_id": m.From,
|
"player_id": m.From,
|
||||||
@ -204,8 +207,8 @@ func handle(p *Player, m *msg.Msg) error {
|
|||||||
PlayroomMod.AddVisitor(m.From, m.SendT)
|
PlayroomMod.AddVisitor(m.From, m.SendT)
|
||||||
p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_VISIT, fmt.Sprintf("%d,%d", Items[0].Id, Items[0].Num))
|
p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_VISIT, fmt.Sprintf("%d,%d", Items[0].Id, Items[0].Num))
|
||||||
if len(Items) > 0 && Items[0].Id == item.ITEM_STAR_ID {
|
if len(Items) > 0 && Items[0].Id == item.ITEM_STAR_ID {
|
||||||
ItemMod := p.PlayMod.getItemMod()
|
BaseMod := p.PlayMod.getBaseMod()
|
||||||
StarNum := ItemMod.GetItem(item.ITEM_STAR_ID)
|
StarNum := BaseMod.GetStar()
|
||||||
Items[0].Num = min(Items[0].Num, StarNum)
|
Items[0].Num = min(Items[0].Num, StarNum)
|
||||||
p.HandleLoseItem(Items, "")
|
p.HandleLoseItem(Items, "")
|
||||||
} else {
|
} else {
|
||||||
@ -285,6 +288,8 @@ func HandleFriendMsg(p *Player, m *msg.Msg) error {
|
|||||||
// 同步好友请求
|
// 同步好友请求
|
||||||
func SyncFriendMsg(p *Player) {
|
func SyncFriendMsg(p *Player) {
|
||||||
MsgList := G_GameLogicPtr.FriendMgrCall(&msg.Msg{Type: msg.HANDLE_TYPE_SYNC, From: int(p.M_DwUin)})
|
MsgList := G_GameLogicPtr.FriendMgrCall(&msg.Msg{Type: msg.HANDLE_TYPE_SYNC, From: int(p.M_DwUin)})
|
||||||
|
FriendMod := p.PlayMod.getFriendMod()
|
||||||
|
MsgId := FriendMod.GetSyncId()
|
||||||
if MsgList == nil {
|
if MsgList == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -295,9 +300,18 @@ func SyncFriendMsg(p *Player) {
|
|||||||
sort.Slice(ml, func(i, j int) bool {
|
sort.Slice(ml, func(i, j int) bool {
|
||||||
return ml[i].SendT < ml[j].SendT
|
return ml[i].SendT < ml[j].SendT
|
||||||
})
|
})
|
||||||
|
maxId := int64(0)
|
||||||
for _, v := range ml {
|
for _, v := range ml {
|
||||||
|
maxId = max(maxId, v.Id)
|
||||||
|
if v.H == 1 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if v.Id > 0 && v.Id <= MsgId {
|
||||||
|
continue
|
||||||
|
}
|
||||||
handle(p, v)
|
handle(p, v)
|
||||||
}
|
}
|
||||||
|
FriendMod.SetSyncId(maxId)
|
||||||
p.PlayMod.save()
|
p.PlayMod.save()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -318,6 +332,9 @@ func FriendListBackData(p *Player) {
|
|||||||
FriendMod := p.PlayMod.getFriendMod()
|
FriendMod := p.PlayMod.getFriendMod()
|
||||||
var fl []*proto.ResPlayerSimple
|
var fl []*proto.ResPlayerSimple
|
||||||
for k := range FriendMod.FriendList {
|
for k := range FriendMod.FriendList {
|
||||||
|
if k == int(p.M_DwUin) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
ps := G_GameLogicPtr.GetResSimplePlayerByUid(k)
|
ps := G_GameLogicPtr.GetResSimplePlayerByUid(k)
|
||||||
if ps != nil {
|
if ps != nil {
|
||||||
fl = append(fl, ps)
|
fl = append(fl, ps)
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -42,7 +42,7 @@ func (s *ServerMod) init() {
|
|||||||
s.update = false
|
s.update = false
|
||||||
s.LoadData()
|
s.LoadData()
|
||||||
s.mDispatr.AfterFunc(time.Duration(PER_SAVE_TIME)*time.Second, func() {
|
s.mDispatr.AfterFunc(time.Duration(PER_SAVE_TIME)*time.Second, func() {
|
||||||
s.SaveData()
|
go s.SaveData()
|
||||||
})
|
})
|
||||||
go func() {
|
go func() {
|
||||||
defer func() {
|
defer func() {
|
||||||
@ -128,7 +128,7 @@ func (s *ServerMod) Call(m *msg.Msg) (interface{}, error) {
|
|||||||
// mysql 保存消息
|
// mysql 保存消息
|
||||||
func (s *ServerMod) SaveData() {
|
func (s *ServerMod) SaveData() {
|
||||||
s.mDispatr.AfterFunc(time.Duration(PER_SAVE_TIME+GoUtil.RandNum(5, 10))*time.Second, func() {
|
s.mDispatr.AfterFunc(time.Duration(PER_SAVE_TIME+GoUtil.RandNum(5, 10))*time.Second, func() {
|
||||||
s.SaveData()
|
go s.SaveData()
|
||||||
})
|
})
|
||||||
DbData := db.SqlServerModStruct{}
|
DbData := db.SqlServerModStruct{}
|
||||||
DbData.Key = s.key
|
DbData.Key = s.key
|
||||||
@ -139,16 +139,19 @@ func (s *ServerMod) SaveData() {
|
|||||||
log.Debug("SaveData Marshal failed,Mod Key: %s err:%v", s.key, err)
|
log.Debug("SaveData Marshal failed,Mod Key: %s err:%v", s.key, err)
|
||||||
}
|
}
|
||||||
// log.Debug("SaveData Marshal success,Mod Key: %s", s.key)
|
// log.Debug("SaveData Marshal success,Mod Key: %s", s.key)
|
||||||
ctx := context.Background()
|
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
||||||
|
defer cancel()
|
||||||
txOptions := &sql.TxOptions{}
|
txOptions := &sql.TxOptions{}
|
||||||
tx, err := db.SqlDb.BeginTx(ctx, txOptions)
|
tx, err := db.SqlDb.BeginTx(ctx, txOptions)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Debug("SaveData sql begin tx failed,Mod Key: %s err:%v", s.key, err)
|
log.Debug("SaveData sql begin tx failed,Mod Key: %s err:%v", s.key, err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
err = db.SaveServerData(&DbData)
|
err = db.SaveServerData(&DbData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
tx.Rollback()
|
tx.Rollback()
|
||||||
log.Debug("SaveData sql exec ,Mod Key: %s err:%v", s.key, err)
|
log.Debug("SaveData sql exec ,Mod Key: %s err:%v", s.key, err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
tx.Commit()
|
tx.Commit()
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,6 +32,7 @@ func TriggerShippingOrder(player *Player, req *msg.ReqShippingOrder) {
|
|||||||
}
|
}
|
||||||
OrderData, err = GoogleVerify(player, OrderSn, req.ProduceId, req.Token)
|
OrderData, err = GoogleVerify(player, OrderSn, req.ProduceId, req.Token)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
log.Debug("GoogleVerify parmas OrderSn:%s; ProduceId:%s; Token:%s", OrderSn, req.ProduceId, req.Token)
|
||||||
log.Debug("GoogleVerify err:%v", err)
|
log.Debug("GoogleVerify err:%v", err)
|
||||||
time.Sleep(1 * time.Second)
|
time.Sleep(1 * time.Second)
|
||||||
continue
|
continue
|
||||||
|
|||||||
@ -17,6 +17,7 @@ var AdminFuncMap = map[string]func([]interface{}) error{
|
|||||||
"ReqServerInfo": ReqServerInfo,
|
"ReqServerInfo": ReqServerInfo,
|
||||||
"ReqReloadServerMail": ReqReloadServerMail,
|
"ReqReloadServerMail": ReqReloadServerMail,
|
||||||
"ReqReload": ReqReload,
|
"ReqReload": ReqReload,
|
||||||
|
"ReqAdminGm": ReqAdminGm,
|
||||||
}
|
}
|
||||||
|
|
||||||
func AdminProcess(Func string, args []interface{}) {
|
func AdminProcess(Func string, args []interface{}) {
|
||||||
@ -69,18 +70,15 @@ func AdminPlayerInfo(args []interface{}) error {
|
|||||||
Index++
|
Index++
|
||||||
}
|
}
|
||||||
res["Order"] = OrderMap
|
res["Order"] = OrderMap
|
||||||
JsonBuff, err := json.Marshal(res)
|
AdminPlayerBack(a, res)
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
AdminPlayerBack(a, JsonBuff)
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func AdminPlayerBack(a gate.Agent, buf []byte) {
|
func AdminPlayerBack(a gate.Agent, res map[string]interface{}) {
|
||||||
|
JsonBuff, _ := json.Marshal(res)
|
||||||
response := &msg.AdminRes{}
|
response := &msg.AdminRes{}
|
||||||
response.Func = "admin"
|
response.Func = "admin"
|
||||||
response.Info = buf
|
response.Info = JsonBuff
|
||||||
a.WriteMsg(response)
|
a.WriteMsg(response)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,11 +87,7 @@ func ReqServerInfo(args []interface{}) error {
|
|||||||
res := make(map[string]interface{})
|
res := make(map[string]interface{})
|
||||||
res["PlayerNum"] = G_GameLogicPtr.GetPlayerNum()
|
res["PlayerNum"] = G_GameLogicPtr.GetPlayerNum()
|
||||||
res["StartTime"] = G_GameLogicPtr.GetStartTime()
|
res["StartTime"] = G_GameLogicPtr.GetStartTime()
|
||||||
JsonBuff, err := json.Marshal(res)
|
AdminPlayerBack(a, res)
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
AdminPlayerBack(a, JsonBuff)
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,10 +102,38 @@ func ReqReload(args []interface{}) error {
|
|||||||
gamedata.Reload()
|
gamedata.Reload()
|
||||||
res := make(map[string]interface{})
|
res := make(map[string]interface{})
|
||||||
res["Code"] = 0
|
res["Code"] = 0
|
||||||
JsonBuff, err := json.Marshal(res)
|
AdminPlayerBack(a, res)
|
||||||
if err != nil {
|
return nil
|
||||||
return err
|
}
|
||||||
}
|
|
||||||
AdminPlayerBack(a, JsonBuff)
|
func ReqAdminGm(args []interface{}) error {
|
||||||
|
a, buf := ParseAdminArgs(args)
|
||||||
|
req := &msg.ReqAdminGm{}
|
||||||
|
proto.Unmarshal(buf, req)
|
||||||
|
res := make(map[string]interface{})
|
||||||
|
res["Code"] = 0
|
||||||
|
res["Msg"] = "ok"
|
||||||
|
player := G_GameLogicPtr.GetPlayer(req.Uid)
|
||||||
|
if player == nil {
|
||||||
|
res["Code"] = 1
|
||||||
|
res["Msg"] = "player not found"
|
||||||
|
AdminPlayerBack(a, res)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
player.lock.Lock()
|
||||||
|
defer player.lock.Unlock()
|
||||||
|
err := ReqGmCommand_(player, req.Command)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
res["Code"] = 1
|
||||||
|
res["Msg"] = err.Error()
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
res["Code"] = 1
|
||||||
|
res["Msg"] = err.Error()
|
||||||
|
AdminPlayerBack(a, res)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
AdminPlayerBack(a, res)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package game
|
package game
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
"server/GoUtil"
|
"server/GoUtil"
|
||||||
"server/MergeConst"
|
"server/MergeConst"
|
||||||
@ -68,6 +69,12 @@ func HandleClientReq(args []interface{}) {
|
|||||||
detail := &msg.ReqRegisterAccount{}
|
detail := &msg.ReqRegisterAccount{}
|
||||||
proto.Unmarshal(buf, detail)
|
proto.Unmarshal(buf, detail)
|
||||||
gl := G_getGameLogic()
|
gl := G_getGameLogic()
|
||||||
|
defer func() {
|
||||||
|
if r := recover(); r != nil {
|
||||||
|
GoUtil.SendFeishuFatal(0, m.GetFunc(), fmt.Sprintf("username: %s, fatal: %s", detail.UserName, r))
|
||||||
|
log.Debug("uid : %d, func : %s, fatal : %s", 0, m.GetFunc(), r)
|
||||||
|
}
|
||||||
|
}()
|
||||||
if gl.IsExsitAccount(detail.UserName) {
|
if gl.IsExsitAccount(detail.UserName) {
|
||||||
ResRegisterAccount := &msg.ResRegisterAccount{}
|
ResRegisterAccount := &msg.ResRegisterAccount{}
|
||||||
ResRegisterAccount.ResultCode = MergeConst.Protocol_Error_Account_Exist
|
ResRegisterAccount.ResultCode = MergeConst.Protocol_Error_Account_Exist
|
||||||
@ -96,14 +103,16 @@ func HandleClientReq(args []interface{}) {
|
|||||||
data, _ := proto.Marshal(ResRegisterAccount)
|
data, _ := proto.Marshal(ResRegisterAccount)
|
||||||
gl.PackResInfo(a, "ResRegisterAccount", data)
|
gl.PackResInfo(a, "ResRegisterAccount", data)
|
||||||
case "ReqLogin":
|
case "ReqLogin":
|
||||||
defer func() {
|
|
||||||
if r := recover(); r != nil {
|
|
||||||
log.Debug("uid : %d, func : %s, fatal : %s", 0, m.GetFunc(), r)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
detail := &msg.ReqLogin{}
|
detail := &msg.ReqLogin{}
|
||||||
proto.Unmarshal(buf, detail)
|
proto.Unmarshal(buf, detail)
|
||||||
accountInfo := db.GetAccountInfoFromDb(detail.UserName)
|
accountInfo := db.GetAccountInfoFromDb(detail.UserName)
|
||||||
|
defer func() {
|
||||||
|
if r := recover(); r != nil {
|
||||||
|
GoUtil.SendFeishuFatal(0, m.GetFunc(), fmt.Sprintf("username: %s, fatal: %s", detail.UserName, r))
|
||||||
|
log.Debug("uid : %d, func : %s, fatal : %s", 0, m.GetFunc(), r)
|
||||||
|
}
|
||||||
|
}()
|
||||||
ResLogin := &msg.ResLogin{}
|
ResLogin := &msg.ResLogin{}
|
||||||
if accountInfo != nil {
|
if accountInfo != nil {
|
||||||
if accountInfo.UserPassword == detail.UserPwd {
|
if accountInfo.UserPassword == detail.UserPwd {
|
||||||
@ -159,13 +168,15 @@ func HandleClientReq(args []interface{}) {
|
|||||||
backup := p.(*Player).BackUp() // 备份当前的 Player 值
|
backup := p.(*Player).BackUp() // 备份当前的 Player 值
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
log.Debug("uid : %d, func : %s, fatal : %s", p.(*Player).M_DwUin, m.GetFunc(), r)
|
log.Error("uid : %d, func : %s, fatal : %s", p.(*Player).M_DwUin, m.GetFunc(), r)
|
||||||
|
GoUtil.SendFeishuFatal(int(p.(*Player).M_DwUin), m.GetFunc(), r.(string))
|
||||||
p.(*Player).Recover(backup) //还原Player的数据
|
p.(*Player).Recover(backup) //还原Player的数据
|
||||||
}
|
}
|
||||||
p.(*Player).lock.Unlock() //解锁
|
p.(*Player).lock.Unlock() //解锁
|
||||||
}()
|
}()
|
||||||
p.(*Player).args = make(map[string]interface{})
|
p.(*Player).args = make(map[string]interface{})
|
||||||
p.(*Player).args["func"] = m
|
p.(*Player).args["func"] = m
|
||||||
|
p.(*Player).args["agent"] = a
|
||||||
err := RunNetProcessByKey(m.GetFunc(), []interface{}{a, buf})
|
err := RunNetProcessByKey(m.GetFunc(), []interface{}{a, buf})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Debug("uid : %d, func : %s, err : %s", p.(*Player).M_DwUin, m.GetFunc(), err)
|
log.Debug("uid : %d, func : %s, err : %s", p.(*Player).M_DwUin, m.GetFunc(), err)
|
||||||
|
|||||||
@ -47,7 +47,7 @@ func (b *Base) InitData(Uid int) {
|
|||||||
|
|
||||||
func (b *Base) Login() {
|
func (b *Base) Login() {
|
||||||
b.LoginTime = GoUtil.Now()
|
b.LoginTime = GoUtil.Now()
|
||||||
// b.LogoutTime = 0
|
b.LogoutTime = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *Base) GetNickName() string {
|
func (b *Base) GetNickName() string {
|
||||||
|
|||||||
@ -13,6 +13,7 @@ type FriendMod struct {
|
|||||||
Card map[string]*card.CardInfo // 收到的申请交换
|
Card map[string]*card.CardInfo // 收到的申请交换
|
||||||
Log []*LogInfo // 日志
|
Log []*LogInfo // 日志
|
||||||
AutoId int
|
AutoId int
|
||||||
|
Id int64 // 已同步msg ID
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -61,6 +62,14 @@ func (f *FriendMod) InitData() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *FriendMod) GetSyncId() int64 {
|
||||||
|
return f.Id
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *FriendMod) SetSyncId(Id int64) {
|
||||||
|
f.Id = Id
|
||||||
|
}
|
||||||
|
|
||||||
func (f *FriendMod) AddFriend(id int) {
|
func (f *FriendMod) AddFriend(id int) {
|
||||||
f.FriendList[id] = struct{}{}
|
f.FriendList[id] = struct{}{}
|
||||||
delete(f.ApplyList, id)
|
delete(f.ApplyList, id)
|
||||||
|
|||||||
@ -158,3 +158,17 @@ func Merge(Item1, Item2 []*Item) []*Item {
|
|||||||
}
|
}
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func MutilItem(i []*Item, num int) []*Item {
|
||||||
|
if i == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
res := make([]*Item, 0)
|
||||||
|
for _, v := range i {
|
||||||
|
res = append(res, &Item{
|
||||||
|
Id: v.Id,
|
||||||
|
Num: v.Num * num,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|||||||
@ -10,6 +10,8 @@ type Msg struct {
|
|||||||
SendT int64 // 发送时间
|
SendT int64 // 发送时间
|
||||||
End int64 // 过期时间
|
End int64 // 过期时间
|
||||||
Extra interface{} //额外信息
|
Extra interface{} //额外信息
|
||||||
|
Id int64
|
||||||
|
H int //处理类型
|
||||||
}
|
}
|
||||||
|
|
||||||
var MSG_ZERO_UPDATE = &Msg{Type: SERVER_ZERO_UPDATE}
|
var MSG_ZERO_UPDATE = &Msg{Type: SERVER_ZERO_UPDATE}
|
||||||
|
|||||||
@ -343,7 +343,7 @@ func getEmitSeries(o *OrderMod, Emit []int) string {
|
|||||||
o.EmitShuffle = append(o.EmitShuffle, EmitSerie)
|
o.EmitShuffle = append(o.EmitShuffle, EmitSerie)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
GoUtil.ShuffleStringArray(o.EmitShuffle)
|
o.EmitShuffle = GoUtil.ShuffleStringArray(o.EmitShuffle)
|
||||||
}
|
}
|
||||||
PopEmitId, NewSlice := GoUtil.PopStringArray(o.EmitShuffle)
|
PopEmitId, NewSlice := GoUtil.PopStringArray(o.EmitShuffle)
|
||||||
o.EmitShuffle = NewSlice
|
o.EmitShuffle = NewSlice
|
||||||
@ -364,7 +364,7 @@ func getEmitSeries(o *OrderMod, Emit []int) string {
|
|||||||
}
|
}
|
||||||
Num := 1
|
Num := 1
|
||||||
for {
|
for {
|
||||||
GoUtil.ShuffleStringArray(o.EmitShuffle)
|
o.EmitShuffle = GoUtil.ShuffleStringArray(o.EmitShuffle)
|
||||||
if o.EmitShuffle[0] != PopEmitId {
|
if o.EmitShuffle[0] != PopEmitId {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|||||||
@ -85,10 +85,10 @@ type Info struct {
|
|||||||
func (p *PlayroomMod) InitData() {
|
func (p *PlayroomMod) InitData() {
|
||||||
if p.Collect == nil {
|
if p.Collect == nil {
|
||||||
p.Collect = make(map[int]int)
|
p.Collect = make(map[int]int)
|
||||||
InitCollect := playroomCfg.GetInitDecorate()
|
}
|
||||||
for _, v := range InitCollect {
|
InitCollect := playroomCfg.GetInitDecorate()
|
||||||
p.Collect[v] = 1
|
for _, v := range InitCollect {
|
||||||
}
|
p.Collect[v] = 1
|
||||||
}
|
}
|
||||||
if p.Room == nil {
|
if p.Room == nil {
|
||||||
p.Room = make(map[int]int)
|
p.Room = make(map[int]int)
|
||||||
@ -189,9 +189,6 @@ func (p *PlayroomMod) SetTarget(Target int) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *PlayroomMod) SetGameId(GameId int) {
|
func (p *PlayroomMod) SetGameId(GameId int) {
|
||||||
if p.GameId != 0 {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
p.GameId = GameId
|
p.GameId = GameId
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -468,9 +465,10 @@ func (p *PlayroomMod) FlipCard(Pos int) (int, error) {
|
|||||||
return Prob, nil
|
return Prob, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PlayroomMod) GetFlipReward() ([]*item.Item, error) {
|
func (p *PlayroomMod) GetFlipReward() ([]*item.Item, int, error) {
|
||||||
check := make(map[int]int)
|
check := make(map[int]int)
|
||||||
Items := make([]*item.Item, 0)
|
Items := make([]*item.Item, 0)
|
||||||
|
T := p.Target
|
||||||
for _, v := range p.Flip {
|
for _, v := range p.Flip {
|
||||||
check[v]++
|
check[v]++
|
||||||
if check[v] == 3 {
|
if check[v] == 3 {
|
||||||
@ -491,10 +489,10 @@ func (p *PlayroomMod) GetFlipReward() ([]*item.Item, error) {
|
|||||||
p.GameId = 0
|
p.GameId = 0
|
||||||
p.Flip = make(map[int]int)
|
p.Flip = make(map[int]int)
|
||||||
p.Target = 0
|
p.Target = 0
|
||||||
return Items, nil
|
return Items, T, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Items, fmt.Errorf("GetFlipReward check is not 3")
|
return Items, T, fmt.Errorf("GetFlipReward check is not 3")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PlayroomMod) BuyItem(Id int) ([]*item.Item, []*item.Item) {
|
func (p *PlayroomMod) BuyItem(Id int) ([]*item.Item, []*item.Item) {
|
||||||
@ -509,9 +507,10 @@ func (p *PlayroomMod) UnLock(Lv int) {
|
|||||||
if len(p.Physiology) == 0 {
|
if len(p.Physiology) == 0 {
|
||||||
Now := GoUtil.Now()
|
Now := GoUtil.Now()
|
||||||
p.Physiology = make(map[int]*Physiology)
|
p.Physiology = make(map[int]*Physiology)
|
||||||
for k := 1; k <= 5; k++ {
|
TypeList := playroomCfg.GetPhysiologyTypeList()
|
||||||
Max := playroomCfg.GetPhysiologyMax(k)
|
for _, v := range TypeList {
|
||||||
p.Physiology[k] = &Physiology{Id: k, Num: Max, Time: Now}
|
Max := playroomCfg.GetPhysiologyMax(v)
|
||||||
|
p.Physiology[v] = &Physiology{Id: v, Num: Max, Time: Now}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if len(p.MoodInfo) == 0 {
|
if len(p.MoodInfo) == 0 {
|
||||||
@ -521,3 +520,13 @@ func (p *PlayroomMod) UnLock(Lv int) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// shop
|
||||||
|
func (p *PlayroomMod) ShopBuy(Id, Num int) ([]*item.Item, []*item.Item, error) {
|
||||||
|
AddItemId, CostItem := playroomCfg.GetShopItem(Id)
|
||||||
|
if AddItemId == 0 {
|
||||||
|
return nil, nil, fmt.Errorf("ShopBuy AddItemId is 0")
|
||||||
|
}
|
||||||
|
NewCostItem := item.MutilItem(CostItem, Num)
|
||||||
|
return []*item.Item{item.NewItem(AddItemId, Num)}, NewCostItem, nil
|
||||||
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -2,12 +2,13 @@ package network
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"github.com/gorilla/websocket"
|
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"server/pkg/github.com/name5566/leaf/log"
|
"server/pkg/github.com/name5566/leaf/log"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/gorilla/websocket"
|
||||||
)
|
)
|
||||||
|
|
||||||
type WSServer struct {
|
type WSServer struct {
|
||||||
@ -41,7 +42,7 @@ func (handler *WSHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
conn, err := handler.upgrader.Upgrade(w, r, nil)
|
conn, err := handler.upgrader.Upgrade(w, r, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Debug("upgrade error: %v", err)
|
// log.Debug("upgrade error: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
conn.SetReadLimit(int64(handler.maxMsgLen))
|
conn.SetReadLimit(int64(handler.maxMsgLen))
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user