Merge branch 'thrift' into develop

This commit is contained in:
hahwu 2026-04-16 10:29:01 +08:00
commit 00a30d9f13
58 changed files with 757 additions and 672 deletions

1
.gitignore vendored
View File

@ -25,3 +25,4 @@ src/server/test/GeoLite2-Country
src/server/msg/Gameapi_grpc.pb.go
src/server/unit_test/*.exe*
src/server/unit_test/log*
src/server/msg/meowmentnet

View File

@ -3,7 +3,7 @@ package itemCfg
import (
languageCfg "server/conf/language"
"server/gamedata"
"server/msg"
"server/msg/meowmentnet"
"strconv"
"strings"
@ -61,5 +61,5 @@ func GetItemName(Id int) (string, string) {
return "", ""
}
name := gamedata.GetStringValue(data, "Name")
return languageCfg.GetLanguage(msg.LANG_TYPE_LANG_CN, name), languageCfg.GetLanguage(msg.LANG_TYPE_LANG_EN, name)
return languageCfg.GetLanguage(meowmentnet.LANG_TYPE_LangCn, name), languageCfg.GetLanguage(meowmentnet.LANG_TYPE_LangEn, name)
}

View File

@ -2,7 +2,7 @@ package languageCfg
import (
"server/gamedata"
"server/msg"
msg "server/msg/meowmentnet"
)
const (
@ -31,13 +31,13 @@ func _GetClientLanguage(lang msg.LANG_TYPE, key string) string {
return key
}
switch lang {
case msg.LANG_TYPE_LANG_EN:
case msg.LANG_TYPE_LangEn:
return gamedata.GetStringValue(data, "en_US")
case msg.LANG_TYPE_LANG_PTBR:
case msg.LANG_TYPE_LangPtbr:
return gamedata.GetStringValue(data, "pt_BR")
case msg.LANG_TYPE_LANG_CN:
case msg.LANG_TYPE_LangCn:
return gamedata.GetStringValue(data, "zh_CN")
case msg.LANG_TYPE_LANG_ES_LATAM:
case msg.LANG_TYPE_LangEsLatam:
return gamedata.GetStringValue(data, "es_LATAM")
default:
return key
@ -50,13 +50,13 @@ func _GetBackendLanguage(lang msg.LANG_TYPE, key string) string {
return key
}
switch lang {
case msg.LANG_TYPE_LANG_EN:
case msg.LANG_TYPE_LangEn:
return gamedata.GetStringValue(data, "en_US")
case msg.LANG_TYPE_LANG_PTBR:
case msg.LANG_TYPE_LangPtbr:
return gamedata.GetStringValue(data, "pt_BR")
case msg.LANG_TYPE_LANG_CN:
case msg.LANG_TYPE_LangCn:
return gamedata.GetStringValue(data, "zh_CN")
case msg.LANG_TYPE_LANG_ES_LATAM:
case msg.LANG_TYPE_LangEsLatam:
return gamedata.GetStringValue(data, "es_LATAM")
default:
return key

View File

@ -6,7 +6,7 @@ import (
"server/game/mod/item"
GoUtil "server/game_util"
"server/gamedata"
"server/msg"
"server/msg/meowmentnet"
"strings"
)
@ -80,10 +80,10 @@ func GetRecallMail(Title, ItemName, TitleEn, ItemNameEn string) (string, string,
if err != nil {
return "", "", "", ""
}
mt := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_CN, gamedata.GetStringValue(data, "Title"))
mc := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_CN, gamedata.GetStringValue(data, "Content"))
mt_en := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_EN, gamedata.GetStringValue(data, "Title"))
mc_en := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_EN, gamedata.GetStringValue(data, "Content"))
mt := languageCfg.GetLanguage(meowmentnet.LANG_TYPE_LangCn, gamedata.GetStringValue(data, "Title"))
mc := languageCfg.GetLanguage(meowmentnet.LANG_TYPE_LangCn, gamedata.GetStringValue(data, "Content"))
mt_en := languageCfg.GetLanguage(meowmentnet.LANG_TYPE_LangEn, gamedata.GetStringValue(data, "Title"))
mc_en := languageCfg.GetLanguage(meowmentnet.LANG_TYPE_LangEn, gamedata.GetStringValue(data, "Content"))
return fmt.Sprintf(mt, Title), fmt.Sprintf(mc, Title, ItemName), fmt.Sprintf(mt_en, TitleEn), fmt.Sprintf(mc_en, Title, ItemNameEn)
}
@ -92,10 +92,10 @@ func GetChargeSendMail(PlayerName string) (string, string, string, string) {
if err != nil {
return "", "", "", ""
}
mt := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_CN, gamedata.GetStringValue(data, "Title"))
mc := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_CN, gamedata.GetStringValue(data, "Content"))
mt_en := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_EN, gamedata.GetStringValue(data, "Title"))
mc_en := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_EN, gamedata.GetStringValue(data, "Content"))
mt := languageCfg.GetLanguage(meowmentnet.LANG_TYPE_LangCn, gamedata.GetStringValue(data, "Title"))
mc := languageCfg.GetLanguage(meowmentnet.LANG_TYPE_LangCn, gamedata.GetStringValue(data, "Content"))
mt_en := languageCfg.GetLanguage(meowmentnet.LANG_TYPE_LangEn, gamedata.GetStringValue(data, "Title"))
mc_en := languageCfg.GetLanguage(meowmentnet.LANG_TYPE_LangEn, gamedata.GetStringValue(data, "Content"))
return mt, fmt.Sprintf(mc, PlayerName), mt_en, fmt.Sprintf(mc_en, PlayerName)
}
@ -104,9 +104,9 @@ func GetChargeReceiveMail(PlayerName string, Content string) (string, string, st
if err != nil {
return "", "", "", ""
}
mt := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_CN, gamedata.GetStringValue(data, "Title"))
mc := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_CN, gamedata.GetStringValue(data, "Content"))
mt_en := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_EN, gamedata.GetStringValue(data, "Title"))
mc_en := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_EN, gamedata.GetStringValue(data, "Content"))
mt := languageCfg.GetLanguage(meowmentnet.LANG_TYPE_LangCn, gamedata.GetStringValue(data, "Title"))
mc := languageCfg.GetLanguage(meowmentnet.LANG_TYPE_LangCn, gamedata.GetStringValue(data, "Content"))
mt_en := languageCfg.GetLanguage(meowmentnet.LANG_TYPE_LangEn, gamedata.GetStringValue(data, "Title"))
mc_en := languageCfg.GetLanguage(meowmentnet.LANG_TYPE_LangEn, gamedata.GetStringValue(data, "Content"))
return fmt.Sprintf(mt, PlayerName), fmt.Sprintf(mc, Content), fmt.Sprintf(mt_en, PlayerName), fmt.Sprintf(mc_en, Content)
}

View File

@ -2,7 +2,7 @@
"AppID": 0,
"LogLevel": "debug",
"LogPath": "./log",
"TCPAddr": ":3602",
"TCPAddr": ":3601",
"WSAddr": ":3567",
"RPCAddr": ":50051",
"MySqlAddr": "127.0.0.1",

View File

@ -19,13 +19,12 @@ import (
"server/game/internal"
MsgMod "server/game/mod/msg"
"server/msg"
msg "server/msg/meowmentnet"
"time"
"github.com/apache/thrift/lib/go/thrift"
"github.com/robfig/cron/v3"
"google.golang.org/protobuf/proto"
"gitea.bywaystudios.com/pet_home/leaf/gate"
"gitea.bywaystudios.com/pet_home/leaf/timer"
@ -38,7 +37,7 @@ var (
var isInitGameLogic = false
var RegisterNetWorkFunc = make(map[string]interface{})
var NewRegisterNetWorkFunc = make(map[string]func(*Player, *proto.Message) error)
var NewRegisterNetWorkFunc = make(map[string]func(*Player, *thrift.TStruct) error)
const (
SERVER_STATUS_OPEN = 1 // 服务器状态 开放
@ -59,8 +58,8 @@ func RegisterNewMsgProcessFunc(key string, value interface{}) {
NewRegisterNetWorkFunc[key] = handler
}
func buildNewMsgHandlerAdapter(value interface{}) (func(*Player, *proto.Message) error, error) {
if fn, ok := value.(func(*Player, *proto.Message) error); ok {
func buildNewMsgHandlerAdapter(value interface{}) (func(*Player, *thrift.TStruct) error, error) {
if fn, ok := value.(func(*Player, *thrift.TStruct) error); ok {
return fn, nil
}
@ -84,10 +83,10 @@ func buildNewMsgHandlerAdapter(value interface{}) (func(*Player, *proto.Message)
return nil, fmt.Errorf("return type must be error")
}
msgIfaceType := reflect.TypeOf((*proto.Message)(nil)).Elem()
msgIfaceType := reflect.TypeOf((*thrift.TStruct)(nil)).Elem()
msgArgType := rt.In(1)
if msgArgType == reflect.TypeOf((*proto.Message)(nil)) {
return func(player *Player, msg *proto.Message) error {
if msgArgType == reflect.TypeOf((*thrift.TStruct)(nil)) {
return func(player *Player, msg *thrift.TStruct) error {
results := rv.Call([]reflect.Value{reflect.ValueOf(player), reflect.ValueOf(msg)})
if results[0].IsNil() {
return nil
@ -96,12 +95,15 @@ func buildNewMsgHandlerAdapter(value interface{}) (func(*Player, *proto.Message)
}, nil
}
if msgArgType.Kind() != reflect.Ptr || !msgArgType.Implements(msgIfaceType) {
return nil, fmt.Errorf("second arg must be *proto.Message or pointer type implementing proto.Message")
return nil, fmt.Errorf("second arg must be *thrift.TStruct or pointer type implementing thrift.TStruct")
}
return func(player *Player, msg *proto.Message) error {
// 注册具体的 thrift 消息类型到全局缓存
registerThriftType(msgArgType)
return func(player *Player, msg *thrift.TStruct) error {
if msg == nil || *msg == nil {
return fmt.Errorf("nil proto message")
return fmt.Errorf("nil thrift message")
}
raw := *msg
@ -118,7 +120,7 @@ func buildNewMsgHandlerAdapter(value interface{}) (func(*Player, *proto.Message)
}, nil
}
func RunNewNetProcessByKey(key string, player *Player, msg *proto.Message) error {
func RunNewNetProcessByKey(key string, player *Player, msg *thrift.TStruct) error {
fun, ok := NewRegisterNetWorkFunc[key]
if ok {
err := fun(player, msg)
@ -300,8 +302,8 @@ func (ad *GameLogic) NewAccountInsertDataToDB() bool {
}
func (ad *GameLogic) PackLoginResInfo(a gate.Agent, ResLogin *msg.ResLogin) {
resBuff, _ := proto.Marshal(ResLogin)
ad.PackResInfo(a, "ResLogin", resBuff)
data := GoUtil.Marshal(ResLogin)
ad.PackResInfo(a, "ResLogin", data)
}
func (ad *GameLogic) PackResInfo(a gate.Agent, Func string, data []byte) {
@ -322,7 +324,7 @@ func (ad *GameLogic) CreateNewPlayer(a gate.Agent, UserName string) *Player {
player.agent = a
err := player.InitPlayer(UserName)
if err != nil {
data, _ := proto.Marshal(&msg.ResLogin{ResultCode: MergeConst.Protocol_Error_Account_Fail})
data := GoUtil.Marshal(&msg.ResLogin{ResultCode: MergeConst.Protocol_Error_Account_Fail})
G_GameLogicPtr.PackResInfo(a, "ResLogin", data)
panic(err)
}
@ -594,7 +596,7 @@ func (ad *GameLogic) InitServerInfo() {
func (ad *GameLogic) SendServerVersion(a gate.Agent) {
res := &msg.ResServerVersion{}
res.Version = G_GameLogicPtr.Version
data, _ := proto.Marshal(res)
data := GoUtil.Marshal(res)
G_getGameLogic().PackResInfo(a, "ResServerVersion", data)
}
@ -641,7 +643,7 @@ func (ad *GameLogic) ReplaceExistPlayerAndAgent(a gate.Agent, player *Player) er
}
agent := player.GetAgentByPlayer()
notify := &msg.ForceKickOut{}
data, _ := proto.Marshal(notify)
data := GoUtil.Marshal(notify)
if agent != nil && a != agent {
G_getGameLogic().PackResInfo(agent, "ForceKickOut", data)
internal.AsignPlayerToAgents(agent, ad.NotInitPlayer)

View File

@ -15,7 +15,7 @@ import (
"server/game/mod/item"
"server/game/mod/mail"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
"sort"
"gitea.bywaystudios.com/pet_home/leaf/log"
@ -65,14 +65,14 @@ func (p *Player) ActivityLogin() {
// 清空猫草大作战数据无需发邮件
MailMod := p.PlayMod.getMailMod()
MailMod.SendMail(&mail.MailStruct{
Title: languageCfg.GetLanguage(msg.LANG_TYPE_LANG_CN, "backend_gardenend_mail_title"),
TitleEn: languageCfg.GetLanguage(msg.LANG_TYPE_LANG_EN, "backend_gardenend_mail_title"),
Content: languageCfg.GetLanguage(msg.LANG_TYPE_LANG_CN, "backend_gardenend_mail_content"),
ContentEn: languageCfg.GetLanguage(msg.LANG_TYPE_LANG_EN, "backend_gardenend_mail_content"),
TitlePtBr: languageCfg.GetLanguage(msg.LANG_TYPE_LANG_PTBR, "backend_gardenend_mail_title"),
ContentPtBr: languageCfg.GetLanguage(msg.LANG_TYPE_LANG_PTBR, "backend_gardenend_mail_content"),
TitleEsLatam: languageCfg.GetLanguage(msg.LANG_TYPE_LANG_ES_LATAM, "backend_gardenend_mail_title"),
ContentEsLatam: languageCfg.GetLanguage(msg.LANG_TYPE_LANG_ES_LATAM, "backend_gardenend_mail_content"),
Title: languageCfg.GetLanguage(msg.LANG_TYPE_LangCn, "backend_gardenend_mail_title"),
TitleEn: languageCfg.GetLanguage(msg.LANG_TYPE_LangEn, "backend_gardenend_mail_title"),
Content: languageCfg.GetLanguage(msg.LANG_TYPE_LangCn, "backend_gardenend_mail_content"),
ContentEn: languageCfg.GetLanguage(msg.LANG_TYPE_LangEn, "backend_gardenend_mail_content"),
TitlePtBr: languageCfg.GetLanguage(msg.LANG_TYPE_LangPtbr, "backend_gardenend_mail_title"),
ContentPtBr: languageCfg.GetLanguage(msg.LANG_TYPE_LangPtbr, "backend_gardenend_mail_content"),
TitleEsLatam: languageCfg.GetLanguage(msg.LANG_TYPE_LangEsLatam, "backend_gardenend_mail_title"),
ContentEsLatam: languageCfg.GetLanguage(msg.LANG_TYPE_LangEsLatam, "backend_gardenend_mail_content"),
Items: catnipUnReward,
Type: mail.MAIL_TYPE_NORMAL,
})
@ -108,18 +108,18 @@ func (p *Player) ActivityLogin() {
func (p *Player) SendActivityMail(ItemId, ItemNum, ActivityId int, RewardItems []*item.Item) {
MailMod := p.PlayMod.getMailMod()
activity_title_key, mail_title_key, mail_content_key := activityCfg.GetActivityRecycleMail(ActivityId)
activity_title_zh := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_CN, activity_title_key)
activity_title_en := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_EN, activity_title_key)
activity_title_pt := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_PTBR, activity_title_key)
activity_title_es := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_ES_LATAM, activity_title_key)
mt_zh := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_CN, mail_title_key)
mc_zh := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_CN, mail_content_key)
mt_en := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_EN, mail_title_key)
mc_en := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_EN, mail_content_key)
mt_pt := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_PTBR, mail_title_key)
mc_pt := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_PTBR, mail_content_key)
mt_es := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_ES_LATAM, mail_title_key)
mc_es := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_ES_LATAM, mail_content_key)
activity_title_zh := languageCfg.GetLanguage(msg.LANG_TYPE_LangCn, activity_title_key)
activity_title_en := languageCfg.GetLanguage(msg.LANG_TYPE_LangEn, activity_title_key)
activity_title_pt := languageCfg.GetLanguage(msg.LANG_TYPE_LangPtbr, activity_title_key)
activity_title_es := languageCfg.GetLanguage(msg.LANG_TYPE_LangEsLatam, activity_title_key)
mt_zh := languageCfg.GetLanguage(msg.LANG_TYPE_LangCn, mail_title_key)
mc_zh := languageCfg.GetLanguage(msg.LANG_TYPE_LangCn, mail_content_key)
mt_en := languageCfg.GetLanguage(msg.LANG_TYPE_LangEn, mail_title_key)
mc_en := languageCfg.GetLanguage(msg.LANG_TYPE_LangEn, mail_content_key)
mt_pt := languageCfg.GetLanguage(msg.LANG_TYPE_LangPtbr, mail_title_key)
mc_pt := languageCfg.GetLanguage(msg.LANG_TYPE_LangPtbr, mail_content_key)
mt_es := languageCfg.GetLanguage(msg.LANG_TYPE_LangEsLatam, mail_title_key)
mc_es := languageCfg.GetLanguage(msg.LANG_TYPE_LangEsLatam, mail_content_key)
Items := []*item.Item{item.NewItem(ItemId, ItemNum)}
Items = append(Items, RewardItems...)
MailMod.SendMail(&mail.MailStruct{
@ -139,14 +139,14 @@ func (p *Player) SendActivityMail(ItemId, ItemNum, ActivityId int, RewardItems [
// 发送活动邮件
func (p *Player) SendActivityMail2(items []*item.Item, mail_title, mail_content string) {
MailMod := p.PlayMod.getMailMod()
mt_zh := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_CN, mail_title)
mc_zh := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_CN, mail_content)
mt_en := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_EN, mail_title)
mc_en := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_EN, mail_content)
mt_pt := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_PTBR, mail_title)
mc_pt := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_PTBR, mail_content)
mt_es := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_ES_LATAM, mail_title)
mc_es := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_ES_LATAM, mail_content)
mt_zh := languageCfg.GetLanguage(msg.LANG_TYPE_LangCn, mail_title)
mc_zh := languageCfg.GetLanguage(msg.LANG_TYPE_LangCn, mail_content)
mt_en := languageCfg.GetLanguage(msg.LANG_TYPE_LangEn, mail_title)
mc_en := languageCfg.GetLanguage(msg.LANG_TYPE_LangEn, mail_content)
mt_pt := languageCfg.GetLanguage(msg.LANG_TYPE_LangPtbr, mail_title)
mc_pt := languageCfg.GetLanguage(msg.LANG_TYPE_LangPtbr, mail_content)
mt_es := languageCfg.GetLanguage(msg.LANG_TYPE_LangEsLatam, mail_title)
mc_es := languageCfg.GetLanguage(msg.LANG_TYPE_LangEsLatam, mail_content)
MailMod.SendMail(&mail.MailStruct{
Title: mt_zh,
Content: mc_zh,

View File

@ -1,18 +1,17 @@
package game
import (
"encoding/json"
"fmt"
"server/db"
"server/game/mod/activity"
"server/game/mod/msg"
Msg "server/game/mod/msg"
GoUtil "server/game_util"
protoMsg "server/msg"
protoMsg "server/msg/meowmentnet"
"sync"
"gitea.bywaystudios.com/pet_home/leaf/log"
"google.golang.org/protobuf/encoding/protojson"
)
type ActivityMgr struct {
@ -171,21 +170,21 @@ func unmarshalActivityCfg(atype int, buf []byte) (interface{}, error) {
switch atype {
case 1:
cfg := &protoMsg.MiningCfg{}
err := protojson.Unmarshal(buf, cfg)
err := json.Unmarshal(buf, cfg)
if err != nil {
return nil, err
}
return cfg, nil
case 9:
cfg := &protoMsg.ChampionshipCfg{}
err := protojson.Unmarshal(buf, cfg)
err := json.Unmarshal(buf, cfg)
if err != nil {
return nil, err
}
return cfg, nil
case 10:
cfg := &protoMsg.CatReturnGiftCfg{}
err := protojson.Unmarshal(buf, cfg)
err := json.Unmarshal(buf, cfg)
if err != nil {
return nil, err
}

View File

@ -11,6 +11,7 @@ import (
GoUtil "server/game_util"
"server/gamedata"
"server/msg"
"server/msg/meowmentnet"
"time"
"gitea.bywaystudios.com/pet_home/leaf/gate"
@ -49,18 +50,18 @@ func AdminProcess(funcName string, args []interface{}) {
log.Debug("AdminProcess error: %v", "Func not found")
}
func VerifyUser(accountInfo *db.Db_Account, detail *msg.ReqLogin) (ResLogin *msg.ResLogin, accountInfoOut *db.Db_Account) {
if detail.Type == msg.LOGIN_TYPE_CODE_LOGIN {
func VerifyUser(accountInfo *db.Db_Account, detail *meowmentnet.ReqLogin) (ResLogin *meowmentnet.ResLogin, accountInfoOut *db.Db_Account) {
if detail.Type == meowmentnet.LOGIN_TYPE(meowmentnet.LOGIN_TYPE_CodeLogin) {
err := VerifyCode(detail.UserName, detail.Code)
if err != nil {
ResLogin = &msg.ResLogin{
ResLogin = &meowmentnet.ResLogin{
ResultCode: MergeConst.Protocol_Error_Account_Code_Error,
DwUin: 0,
}
return
}
}
if detail.Type == msg.LOGIN_TYPE_SDK_LOGIN {
if detail.Type == meowmentnet.LOGIN_TYPE(meowmentnet.LOGIN_TYPE_SdkLogin) {
if accountInfo == nil {
accountInfo = db.GetAccountInfoFromDb(detail.Device)
}
@ -71,22 +72,22 @@ func VerifyUser(accountInfo *db.Db_Account, detail *msg.ReqLogin) (ResLogin *msg
}
}
if accountInfo == nil {
ResLogin = &msg.ResLogin{
ResLogin = &meowmentnet.ResLogin{
ResultCode: MergeConst.Protocol_Error_Account_NoExsit,
DwUin: 0,
}
return
}
if detail.Type == msg.LOGIN_TYPE_ACCOUNT_LOGIN && accountInfo.UserPassword != detail.UserPwd {
ResLogin = &msg.ResLogin{
if detail.Type == meowmentnet.LOGIN_TYPE(meowmentnet.LOGIN_TYPE_AccountLogin) && accountInfo.UserPassword != detail.UserPwd {
ResLogin = &meowmentnet.ResLogin{
ResultCode: MergeConst.Protocol_Error_Account_OR_PWD_ERROR,
DwUin: 0,
}
return
}
if detail.Type == msg.LOGIN_TYPE_DEVICE_LOGIN {
if detail.Type == meowmentnet.LOGIN_TYPE(meowmentnet.LOGIN_TYPE_DeviceLogin) {
if detail.Device != accountInfo.DeviceId {
ResLogin = &msg.ResLogin{
ResLogin = &meowmentnet.ResLogin{
ResultCode: MergeConst.Protocol_Error_Account_Device_Error,
DwUin: 0,
}
@ -96,7 +97,7 @@ func VerifyUser(accountInfo *db.Db_Account, detail *msg.ReqLogin) (ResLogin *msg
playerbaseinfo := db.GetPlayerBaseInfoFromDbByName(detail.UserName)
if playerbaseinfo == nil {
ResLogin = &msg.ResLogin{
ResLogin = &meowmentnet.ResLogin{
ResultCode: MergeConst.Protocol_Error_Account_NoExsit,
DwUin: 0,
}
@ -104,14 +105,14 @@ func VerifyUser(accountInfo *db.Db_Account, detail *msg.ReqLogin) (ResLogin *msg
}
if playerbaseinfo.Ban > GoUtil.Now() || playerbaseinfo.Ban == -1 {
ResLogin = &msg.ResLogin{
ResLogin = &meowmentnet.ResLogin{
ResultCode: MergeConst.Protocol_Error_Account_Ban,
DwUin: 0,
}
return
}
accountInfoOut = accountInfo
ResLogin = &msg.ResLogin{
ResLogin = &meowmentnet.ResLogin{
ResultCode: 0,
DwUin: playerbaseinfo.DwUin,
FaceBookId: playerbaseinfo.FaceBookId,
@ -137,7 +138,7 @@ func ReqAdminShipping(args []interface{}) error {
}
player := G_GameLogicPtr.GetPlayer(int64(orderInfo.Uid))
if player != nil {
go player.TriggerShippingOrderOrigin(&msg.ReqShippingOrder{
go player.TriggerShippingOrderOrigin(&meowmentnet.ReqShippingOrder{
OrderSn: req.OrderSn,
})
res["Msg"] = "player online,triggered sync"
@ -343,7 +344,7 @@ func AdminShipping(req *msg.ReqOrderShipping) (*msg.ResOrderShipping, error) {
// 玩家在线,通知发货
player := G_GameLogicPtr.GetPlayer(int64(orderInfo.Uid))
if player != nil {
go player.TriggerShippingOrderOrigin(&msg.ReqShippingOrder{
go player.TriggerShippingOrderOrigin(&meowmentnet.ReqShippingOrder{
OrderSn: req.OrderSn,
})
res.Msg = "player online,triggered sync"

View File

@ -16,7 +16,7 @@ import (
piggyBank "server/game/mod/piggy_bank"
"server/game/mod/quest"
GoUtil "server/game_util"
proto "server/msg"
proto "server/msg/meowmentnet"
"strings"
"time"

View File

@ -1,6 +1,7 @@
package game
import (
"encoding/json"
"fmt"
"reflect"
"server/MergeConst"
@ -10,15 +11,12 @@ import (
"strings"
"time"
"server/msg"
msg "server/msg/meowmentnet"
"gitea.bywaystudios.com/pet_home/leaf/gate"
"gitea.bywaystudios.com/pet_home/leaf/log"
"google.golang.org/protobuf/encoding/protojson"
"google.golang.org/protobuf/proto"
"server/db"
)
@ -73,46 +71,46 @@ func HandleClientReq(args []interface{}) {
case "ClientTick":
case "ReqChangePassword":
detail := &msg.ReqChangePassword{}
proto.Unmarshal(buf, detail)
GoUtil.Unmarshal(buf, detail)
accountInfo := db.GetAccountInfoFromDb(detail.UserName)
if accountInfo == nil {
ResChangePassword := &msg.ResChangePassword{}
ResChangePassword.ResultCode = MergeConst.Protocol_Error_Account_NoExsit
data, _ := proto.Marshal(ResChangePassword)
data := GoUtil.Marshal(ResChangePassword)
G_GameLogicPtr.PackResInfo(a, "ResChangePassword", data)
return
}
if accountInfo.UserPassword != detail.OldPwd && detail.OldPwd != "-1" {
ResChangePassword := &msg.ResChangePassword{}
ResChangePassword.ResultCode = MergeConst.Protocol_Error_Account_OR_PWD_ERROR
data, _ := proto.Marshal(ResChangePassword)
data := GoUtil.Marshal(ResChangePassword)
G_GameLogicPtr.PackResInfo(a, "ResChangePassword", data)
return
}
if strings.Count(detail.NewPwd, "")-1 < 6 {
if strings.Count(detail.NewPwd_, "")-1 < 6 {
ResChangePassword := &msg.ResChangePassword{}
ResChangePassword.ResultCode = MergeConst.Protocol_Error_Account_OR_PWD_Short
data, _ := proto.Marshal(ResChangePassword)
data := GoUtil.Marshal(ResChangePassword)
G_GameLogicPtr.PackResInfo(a, "ResChangePassword", data)
return
}
accountInfo.UserPassword = detail.NewPwd
accountInfo.UserPassword = detail.NewPwd_
err := db.UpdateAccountInfoToDb(accountInfo)
if err != nil {
ResChangePassword := &msg.ResChangePassword{}
ResChangePassword.ResultCode = MergeConst.Protocol_Error_Account_Fail
data, _ := proto.Marshal(ResChangePassword)
data := GoUtil.Marshal(ResChangePassword)
G_GameLogicPtr.PackResInfo(a, "ResChangePassword", data)
return
}
ResChangePassword := &msg.ResChangePassword{}
ResChangePassword.ResultCode = 0
data, _ := proto.Marshal(ResChangePassword)
data := GoUtil.Marshal(ResChangePassword)
G_GameLogicPtr.PackResInfo(a, "ResChangePassword", data)
case "ReqAdminInfo": // 后台接口
AdminProcess(m.GetFunc(), []interface{}{a, buf})
case "ReqLoginCode":
detailMsg, err := UnmarshalProtoMessageByName(m.GetFunc(), buf)
detailMsg, err := UnmarshalThriftMessageByName(m.GetFunc(), buf)
if err != nil {
log.Error("unmarshal %s failed: %v", m.GetFunc(), err)
return
@ -125,13 +123,13 @@ func HandleClientReq(args []interface{}) {
ResLoginCode.Msg = err.Error()
}
ResLoginCode.Code = Code
data, _ := proto.Marshal(ResLoginCode)
data := GoUtil.Marshal(ResLoginCode)
G_GameLogicPtr.PackResInfo(a, "ResLoginCode", data)
case "ReqServerVersion":
G_GameLogicPtr.SendServerVersion(a)
case "ReqRegisterAccount":
detail := &msg.ReqRegisterAccount{}
proto.Unmarshal(buf, detail)
GoUtil.Unmarshal(buf, detail)
log.Debug("player %s start register", detail.UserName)
gl := G_getGameLogic()
defer func() {
@ -143,7 +141,7 @@ func HandleClientReq(args []interface{}) {
if gl.IsExsitAccount(detail.UserName) {
ResRegisterAccount := &msg.ResRegisterAccount{}
ResRegisterAccount.ResultCode = MergeConst.Protocol_Error_Account_Exist
data, _ := proto.Marshal(ResRegisterAccount)
data := GoUtil.Marshal(ResRegisterAccount)
gl.PackResInfo(a, "ResRegisterAccount", data)
break
}
@ -152,17 +150,17 @@ func HandleClientReq(args []interface{}) {
if !gl.NewAccountInsertDataToDB() {
ResRegisterAccount := &msg.ResRegisterAccount{}
ResRegisterAccount.ResultCode = MergeConst.Protocol_Error_Account_Fail
data, _ := proto.Marshal(ResRegisterAccount)
data := GoUtil.Marshal(ResRegisterAccount)
gl.PackResInfo(a, "ResRegisterAccount", data)
break
}
ResRegisterAccount := &msg.ResRegisterAccount{}
ResRegisterAccount.ResultCode = 0
data, _ := proto.Marshal(ResRegisterAccount)
data := GoUtil.Marshal(ResRegisterAccount)
gl.PackResInfo(a, "ResRegisterAccount", data)
case "ReqLogin": // 登录请求
detail := &msg.ReqLogin{}
proto.Unmarshal(buf, detail)
GoUtil.Unmarshal(buf, detail)
accountInfo := db.GetAccountInfoFromDb(detail.UserName)
log.Debug("player %s start login", detail.UserName)
defer func() {
@ -206,10 +204,10 @@ func HandleClientReq(args []interface{}) {
log.Debug("uid : %d, init user process : %s, execTime : %v , isNew: %v", p.(*Player).M_DwUin, m.GetFunc(), time.Since(start), newPlayer)
case "ReqServerTime": // 获取服务器时间
detail := &msg.ReqServerTime{}
proto.Unmarshal(buf, detail)
GoUtil.Unmarshal(buf, detail)
res := &msg.ResServerTime{}
res.ServerTime = (int32)(time.Now().Unix())
data, _ := proto.Marshal(res)
data := GoUtil.Marshal(res)
G_getGameLogic().PackResInfo(a, "ResServerTime", data)
case "ReqOfflineReconnect": // 断线重连
ReqOfflineReconnectFunc(a, buf)
@ -232,7 +230,7 @@ func HandleClientReq(args []interface{}) {
p.(*Player).args = make(map[string]interface{})
p.(*Player).args["func"] = m
p.(*Player).args["agent"] = a
detailMsg, err := UnmarshalProtoMessageByName(m.GetFunc(), buf)
detailMsg, err := UnmarshalThriftMessageByName(m.GetFunc(), buf)
if err != nil {
log.Error("uid : %d, func : %s, unmarshal error : %s", p.(*Player).M_DwUin, m.GetFunc(), err)
p.(*Player).TeLog("func_unmarshal_error", map[string]interface{}{
@ -244,8 +242,12 @@ func HandleClientReq(args []interface{}) {
err = RunNewNetProcessByKey(m.GetFunc(), p.(*Player), &detailMsg)
str := ""
if conf.Server.GameName == "pet_home" || conf.Server.GameName == "merge_pet_sdk" {
strbuf, _ := protojson.Marshal(detailMsg)
str = string(strbuf)
jsonBuf, err := json.Marshal(detailMsg)
if err != nil {
log.Error("marshal %s to json failed: %v", m.GetFunc(), err)
return
}
str = string(jsonBuf)
}
if err != nil {
log.Error("uid : %d, func : %s, err : %s", p.(*Player).M_DwUin, m.GetFunc(), err)

View File

@ -30,7 +30,7 @@ import (
"server/game/mod/order"
"server/game/mod/playroom"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
"strconv"
"strings"
"time"
@ -58,11 +58,11 @@ func ReqGmCommand_(player *Player, Command string) error {
case "additem":
id, _ := strconv.Atoi(arg[1])
num, _ := strconv.Atoi(arg[2])
player.HandleItem([]*item.Item{item.NewItem(id, num)}, msg.ITEM_POP_LABEL_GM.String())
player.HandleItem([]*item.Item{item.NewItem(id, num)}, msg.ITEM_POP_LABEL_Gm.String())
case "subitem":
id, _ := strconv.Atoi(arg[1])
num, _ := strconv.Atoi(arg[2])
player.HandleItem([]*item.Item{item.NewItem(id, -num)}, msg.ITEM_POP_LABEL_GM.String())
player.HandleItem([]*item.Item{item.NewItem(id, -num)}, msg.ITEM_POP_LABEL_Gm.String())
case "reset_order":
player.PlayMod.mod_list.Order.Step = 0
player.PlayMod.mod_list.Order.InitData()
@ -566,7 +566,7 @@ func ReqGmCommand_(player *Player, Command string) error {
})
}
}
player.HandleItem(items, msg.ITEM_POP_LABEL_GM.String())
player.HandleItem(items, msg.ITEM_POP_LABEL_Gm.String())
case "resetCompensation":
compensationMod := player.PlayMod.getCompensationMod()
compensationMod.C20250910 = false

View File

@ -11,7 +11,7 @@ import (
MsgMod "server/game/mod/msg"
"server/game/mod/playroom"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
"time"
)

View File

@ -24,7 +24,7 @@ import (
"server/game/mod/order"
"server/game/mod/playroom"
GoUtil "server/game_util"
proto "server/msg"
proto "server/msg/meowmentnet"
"sort"
"gitea.bywaystudios.com/pet_home/leaf/log"
@ -915,12 +915,12 @@ func (player *Player) AddOrder() {
preheatStep := OrderMod.PreheatStep[chessColor]
OrderMod.PreheatStep[chessColor]++
if preheatStep < 4 {
newChessId := mergeDataCfg.GetChessIdByLvAndColor(BaseMod.GetEnergyMul()+preheatStep+1, chessColor)
NewChessId_ := mergeDataCfg.GetChessIdByLvAndColor(BaseMod.GetEnergyMul()+preheatStep+1, chessColor)
items, ok := order.PreheatItems[OrderMod.PreheatStep[chessColor]]
if !ok {
items = []*item.Item{item.NewItem(item.ITEM_STAR_ID, order.GetOrderStar([]int{newChessId}, ChessMod.GetStarEmitList()))}
items = []*item.Item{item.NewItem(item.ITEM_STAR_ID, order.GetOrderStar([]int{NewChessId_}, ChessMod.GetStarEmitList()))}
}
OrderMod.AddPreheatOrder([]int{newChessId}, order.DIFF_LOW, order.Preheat_type, items)
OrderMod.AddPreheatOrder([]int{NewChessId_}, order.DIFF_LOW, order.Preheat_type, items)
}
}
for _, v := range OrderMod.OrderList {
@ -956,13 +956,13 @@ func (player *Player) FixOrderBug() {
if exit {
continue
}
newChessId := mergeDataCfg.GetChessIdByLvAndColor(BaseMod.GetEnergyMul()+v+1, k)
NewChessId_ := mergeDataCfg.GetChessIdByLvAndColor(BaseMod.GetEnergyMul()+v+1, k)
OrderMod.PreheatStep[k]++
items, ok := order.PreheatItems[OrderMod.PreheatStep[k]]
if !ok {
items = []*item.Item{item.NewItem(item.ITEM_STAR_ID, order.GetOrderStar([]int{newChessId}, ChessMod.GetStarEmitList()))}
items = []*item.Item{item.NewItem(item.ITEM_STAR_ID, order.GetOrderStar([]int{NewChessId_}, ChessMod.GetStarEmitList()))}
}
OrderMod.AddPreheatOrder([]int{newChessId}, order.DIFF_LOW, order.Preheat_type, items)
OrderMod.AddPreheatOrder([]int{NewChessId_}, order.DIFF_LOW, order.Preheat_type, items)
}
}

View File

@ -4,7 +4,7 @@ import (
"fmt"
avatarCfg "server/conf/avatar"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
)
type AvatarMod struct {

View File

@ -6,7 +6,7 @@ import (
baseCfg "server/conf/base"
"server/game/mod/item"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
)
const (

View File

@ -5,7 +5,7 @@ import (
cardCfg "server/conf/card"
"server/game/mod/item"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
"gitea.bywaystudios.com/pet_home/leaf/log"
)

View File

@ -6,7 +6,7 @@ import (
mergeDataCfg "server/conf/merge_data"
"server/game/mod/item"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
)
type ChampshipMod struct {

View File

@ -9,7 +9,7 @@ import (
"server/game/mod/item"
"server/game/mod/order"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
"gitea.bywaystudios.com/pet_home/leaf/log"
)

View File

@ -8,7 +8,7 @@ import (
userCfg "server/conf/user"
"server/game/mod/item"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
"sort"
"strings"
)
@ -401,7 +401,7 @@ func (cb *ChessBorad) FinishOrderChessByBag(chess int) error {
}
// 棋子转换
func (cb *ChessBorad) ExChess(oldChessId, newChessId int) error {
func (cb *ChessBorad) ExChess(oldChessId, NewChessId_ int) error {
if oldChessId > 0 {
newList, b := GoUtil.PopElemSlice(cb.ChessList, oldChessId)
if !b {
@ -409,7 +409,7 @@ func (cb *ChessBorad) ExChess(oldChessId, newChessId int) error {
}
cb.ChessList = newList
}
return cb.AddChess(newChessId)
return cb.AddChess(NewChessId_)
}
// 增加棋盘缓冲器

View File

@ -5,7 +5,7 @@ import (
collectCfg "server/conf/collect"
"server/game/mod/item"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
)
type Collect struct {

View File

@ -6,7 +6,7 @@ import (
"server/game/mod/item"
"server/game/mod/quest"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
"sort"
"gitea.bywaystudios.com/pet_home/leaf/log"

View File

@ -8,7 +8,7 @@ import (
orderCfg "server/conf/order"
"server/game/mod/item"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
"sort"
)

View File

@ -4,7 +4,7 @@ import (
"fmt"
emojiCfg "server/conf/emoji"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
)
type EmojiMod struct {

View File

@ -5,7 +5,7 @@ import (
"math"
endlessCfg "server/conf/endless"
"server/game/mod/item"
"server/msg"
msg "server/msg/meowmentnet"
"sort"
)

View File

@ -4,7 +4,7 @@ import (
"fmt"
faceCfg "server/conf/face"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
)
type FaceMod struct {

View File

@ -7,7 +7,7 @@ import (
"server/game/mod/card"
"server/game/mod/item"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
"sort"
)

View File

@ -5,7 +5,7 @@ import (
friendTreasureCfg "server/conf/friend_treasure"
"server/game/mod/item"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
)
type FriendTreasureMod struct {

View File

@ -4,7 +4,7 @@ import (
"fmt"
fur_cfg "server/conf/fur"
"server/game/mod/item"
"server/msg"
msg "server/msg/meowmentnet"
)
type FurMod struct {

View File

@ -5,7 +5,7 @@ import (
guidecfg "server/conf/guide"
"server/game/mod/item"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
)
type Guide struct {

View File

@ -6,7 +6,7 @@ import (
"server/game/mod/item"
"server/game/mod/quest"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
)
type GuideTaskMod struct {

View File

@ -6,7 +6,7 @@ import (
handbookCfg "server/conf/handbook"
startMergeCfg "server/conf/start_merge"
"server/game/mod/item"
"server/msg"
msg "server/msg/meowmentnet"
)
type Handbook struct {

View File

@ -5,7 +5,7 @@ import (
inviteCfg "server/conf/invite"
"server/game/mod/item"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
)
type InviteMod struct {

View File

@ -3,7 +3,7 @@ package item
import (
"fmt"
"math"
"server/msg"
msg "server/msg/meowmentnet"
)
type Item struct {

View File

@ -2,7 +2,7 @@ package kv
import (
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
)
type KvMod struct {

View File

@ -7,7 +7,7 @@ import (
mergeDataCfg "server/conf/merge_data"
"server/game/mod/item"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
)
const (
@ -537,29 +537,29 @@ func getLimitEventMsg(eType int, event *LTEInfo) *msg.LimitEvent {
if !ok {
return nil
}
param[msg.LimitEventParam_LUCKY_CAT_EARNINGS.String()] = int32(d.MaxEarings)
param[msg.LimitEventParam_LuckyCatEarnings.String()] = int32(d.MaxEarings)
case EVENT_TYPE_CAT_TRICK:
d, ok := event.D.(*CatTrick)
if !ok {
return nil
}
energy := d.Energy
param[msg.LimitEventParam_CAT_TRICK_ENERGY.String()] = int32(energy)
param[msg.LimitEventParam_CatTrickEnergy.String()] = int32(energy)
case EVENT_TYPE_PAYBACK_DAY:
d, ok := event.D.(*PaybackDay)
if !ok {
return nil
}
param[msg.LimitEventParam_PAYBACK_DAY_COUNT.String()] = int32(d.Count)
param[msg.LimitEventParam_PaybackDayCount.String()] = int32(d.Count)
case EVENT_TYPE_SENCE_DASH:
times := GoUtil.Int(event.Info["Times"])
param[msg.LimitEventParam_SENCE_DASH_TIMES.String()] = int32(times)
param[msg.LimitEventParam_SenceDashTimes.String()] = int32(times)
}
return &msg.LimitEvent{
EndTime: endTime,
ShowTime: showTime,
Cd: int32(cd),
Mul: float32(mul),
Mul: float64(mul),
StartTime: int32(event.StartT),
Param: param,
}

View File

@ -4,7 +4,7 @@ import (
"fmt"
"server/game/mod/item"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
)
type MailMod struct {

View File

@ -6,7 +6,7 @@ import (
orderCfg "server/conf/order"
"server/game/mod/item"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
"strings"
"time"
)
@ -344,19 +344,19 @@ func (o *OrderMod) CreatePriorityOrder(lv int, emit []int) bool {
if B == 1 {
newColor := GoUtil.RandStringSlice(produce[1:])
diffLv := GoUtil.RandMap(map[int]int{DIFF_LOW: 70, DIFF_MID: 30})
newChessId := 0
NewChessId_ := 0
switch diffLv {
case DIFF_LOW:
newLv := GoUtil.RandNum(4, 3+durLv)
newChessId = mergeDataCfg.GetChessIdByLvAndColor(newLv, newColor)
NewChessId_ = mergeDataCfg.GetChessIdByLvAndColor(newLv, newColor)
case DIFF_MID:
newLv := GoUtil.RandNum(4+durLv, 3+durLv*2)
newChessId = mergeDataCfg.GetChessIdByLvAndColor(newLv, newColor)
NewChessId_ = mergeDataCfg.GetChessIdByLvAndColor(newLv, newColor)
}
if newChessId == 0 {
if NewChessId_ == 0 {
continue
}
o.addOrder([]int{newChessId}, diffLv, Common_type)
o.addOrder([]int{NewChessId_}, diffLv, Common_type)
return true
}
}
@ -701,16 +701,16 @@ func (o *OrderMod) ChangeEnergyMul(lv int, emit []int, energyMul int, chessList
chessId := v.MergeId[0]
chessColor := mergeDataCfg.GetColorById(chessId)
preheatStep := o.PreheatStep[chessColor]
newChessId := mergeDataCfg.GetChessIdByLvAndColor(energyMul+preheatStep, chessColor)
if newChessId == 0 {
NewChessId_ := mergeDataCfg.GetChessIdByLvAndColor(energyMul+preheatStep, chessColor)
if NewChessId_ == 0 {
continue
}
delete(o.OrderList, k)
items, ok := PreheatItems[preheatStep]
if !ok {
items = []*item.Item{item.NewItem(item.ITEM_STAR_ID, GetOrderStar([]int{newChessId}, emit))}
items = []*item.Item{item.NewItem(item.ITEM_STAR_ID, GetOrderStar([]int{NewChessId_}, emit))}
}
o.addPreheatOrder([]int{newChessId}, DIFF_LOW, Preheat_type, items)
o.addPreheatOrder([]int{NewChessId_}, DIFF_LOW, Preheat_type, items)
}
}

View File

@ -4,7 +4,7 @@ import (
chargeCfg "server/conf/charge"
"server/game/mod/item"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
)
type PiggyBankMod struct {

View File

@ -8,7 +8,7 @@ import (
"server/game/mod/item"
"server/game/mod/quest"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
"sort"
"gitea.bywaystudios.com/pet_home/leaf/log"

View File

@ -3,7 +3,7 @@ package quest
import (
"fmt"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
"strconv"
"strings"
)

View File

@ -5,7 +5,7 @@ import (
sevenLoginCfg "server/conf/seven_login"
"server/game/mod/item"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
)
type SevenLoginMod struct {

View File

@ -5,7 +5,7 @@ import (
languageCfg "server/conf/language"
notification_cfg "server/conf/notification"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
)
const (

View File

@ -7,7 +7,7 @@ import (
"server/game/mod/item"
limitedTimeEvent "server/game/mod/limited_time_event"
GoUtil "server/game_util"
proto "server/msg"
proto "server/msg/meowmentnet"
)
func (p *Player) NotifyPlayroomTask() {
@ -287,7 +287,7 @@ func (p *Player) ChargeBackData() {
specialChargeWeek = int32(GoUtil.FullWeeksSince(c.LastSpecialCharge))
}
p.PushClientRes(&proto.ResCharge{
Charge: float32(c.Charge),
Charge: float64(c.Charge),
Total: int32(c.Total),
First: GoUtil.MapIntToSlice(c.EnergyShop),
SpecialShop: specialShop,
@ -295,10 +295,10 @@ func (p *Player) ChargeBackData() {
ChessShop: chessShop,
Gift: GoUtil.MapIntToInt32(c.Gift),
Ad: c.Ad,
SpecialCharge: float32(c.SpecialCharge),
SpecialCharge: float64(c.SpecialCharge),
SpecialChargeWeek: specialChargeWeek,
TodayCharge: float32(c.TodayCharge),
MonthCharge: float32(c.MonthCharge),
TodayCharge: float64(c.TodayCharge),
MonthCharge: float64(c.MonthCharge),
Wish: resWish,
AdEndTime: c.AdEndTime,
WeeklyDiscount: weeklyDiscount,

View File

@ -14,12 +14,10 @@ import (
Msg "server/game/mod/msg"
"server/game/mod/order"
"server/game/mod/quest"
"server/msg"
msg "server/msg/meowmentnet"
"time"
"gitea.bywaystudios.com/pet_home/leaf/log"
"google.golang.org/protobuf/proto"
)
type PlayerBaseData struct {
@ -203,10 +201,7 @@ func (p *PlayerBaseData) ReqRemoveAd(player *Player, req *msg.ReqRemoveAd) {
res := &msg.ResRemoveAd{}
p.Data.NoAd = 1
res.ResultCode = 0
agent := player.GetAgentByPlayer()
data, _ := proto.Marshal(res)
G_getGameLogic().PackResInfo(agent, "ResRemoveAd", data)
player.PushClientRes(res)
}
func (p *PlayerBaseData) ResPlayerBaseInfo(player *Player) {
@ -255,10 +250,8 @@ func (p *PlayerBaseData) ReqBindFacebookAccount(player *Player, req *msg.ReqBind
}
BaseMod := player.PlayMod.getBaseMod()
BaseMod.FackBookId = req.BindAccountId
agent := player.GetAgentByPlayer()
data, _ := proto.Marshal(res)
p.SaveDataFromDB("")
G_getGameLogic().PackResInfo(agent, "ResBindFacebookAccount", data)
player.PushAndSendClienRes(res)
}
func (p *PlayerBaseData) ReqUnBindFacebook(player *Player, req *msg.ReqUnBindFacebook) {
@ -268,10 +261,8 @@ func (p *PlayerBaseData) ReqUnBindFacebook(player *Player, req *msg.ReqUnBindFac
p.Data.FaceBookId = ""
BaseMod := player.PlayMod.getBaseMod()
BaseMod.FackBookId = ""
agent := player.GetAgentByPlayer()
data, _ := proto.Marshal(res)
G_getGameLogic().PackResInfo(agent, "ResUnBindFacebook", data)
p.SaveDataFromDB("")
player.PushAndSendClienRes(res)
player.TeLog("platform_disconnect", map[string]interface{}{
"platform_type": "Facebook",
"platform_id": req.BindAccountId,
@ -332,9 +323,7 @@ func (p *PlayerBaseData) ReqOnlyBindFacebook(player *Player, req *msg.ReqOnlyBin
BaseMod := player.PlayMod.getBaseMod()
BaseMod.FackBookId = req.BindAccountId
p.SaveDataFromDB("")
agent := player.GetAgentByPlayer()
data, _ := proto.Marshal(res)
G_getGameLogic().PackResInfo(agent, "ResOnlyBindFacebook", data)
player.PushAndSendClienRes(res)
}
func (p *PlayerBaseData) ReqSynGameData(player *Player, req *msg.ReqSynGameData) {
@ -342,7 +331,7 @@ func (p *PlayerBaseData) ReqSynGameData(player *Player, req *msg.ReqSynGameData)
sqlStr := "SELECT * FROM t_player_baseinfo WHERE FaceBookId = ?"
sqlStruck := db.ResPlayerBaseInfo{}
isHaveOther := false
if err := db.SqlDb.Get(&sqlStruck, sqlStr, req.NewFBId); err != nil {
if err := db.SqlDb.Get(&sqlStruck, sqlStr, req.NewFBId_); err != nil {
isHaveOther = false
} else {
isHaveOther = true
@ -352,13 +341,9 @@ func (p *PlayerBaseData) ReqSynGameData(player *Player, req *msg.ReqSynGameData)
}
oldPlayer := G_GameLogicPtr.GetPlayer(sqlStruck.DwUin)
if oldPlayer != nil {
agent := oldPlayer.GetAgentByPlayer()
// notify := &msg.ForceKickOut{}
notify := &msg.ResSynGameData{}
data, _ := proto.Marshal(notify)
if agent != nil {
G_getGameLogic().PackResInfo(agent, "ResSynGameData", data)
}
oldPlayer.PushAndSendClienRes(notify)
oldPlayer.ClearData()
G_GameLogicPtr.M_Players.Delete(sqlStruck.DwUin)
}
@ -392,9 +377,9 @@ func (p *PlayerBaseData) ReqSynGameData(player *Player, req *msg.ReqSynGameData)
return
}
sqlStruck.FaceBookId = req.NewFBId
sqlStruck.FaceBookId = req.NewFBId_
sqlStruck.UserName = userName
_, err = db.SqlDb.Exec("update t_player_baseinfo set user_name = ?, FaceBookId = ? where dwUin = ?", userName, req.NewFBId, sqlStruck.DwUin)
_, err = db.SqlDb.Exec("update t_player_baseinfo set user_name = ?, FaceBookId = ? where dwUin = ?", userName, req.NewFBId_, sqlStruck.DwUin)
if err != nil {
tx.Rollback()
return
@ -421,9 +406,7 @@ func (p *PlayerBaseData) ReqSynGameData(player *Player, req *msg.ReqSynGameData)
"platform_type": "facebook",
})
p.SaveDataFromDB("")
agent := player.GetAgentByPlayer()
data, _ := proto.Marshal(res)
G_getGameLogic().PackResInfo(agent, "ResSynGameData", data)
player.PushAndSendClienRes(res)
}
func (p *PlayerBaseData) ClearData() bool {

View File

@ -11,12 +11,10 @@ import (
"server/game/mod/order"
"server/game/mod/quest"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
"sort"
"gitea.bywaystudios.com/pet_home/leaf/log"
"google.golang.org/protobuf/proto"
)
type PlayerChessData struct {
@ -35,19 +33,15 @@ func (p *PlayerChessData) SaveDataFromDB(key interface{}) bool {
}
func (p *PlayerChessData) ResPlayerChessData(player *Player) {
agent := player.GetAgentByPlayer()
res := &p.Data
ChessMod := player.PlayMod.getChessMod()
res.ChessList = ChessMod.BackData().ChessList
res.MChessData = ChessMod.ChessMap
data, _ := proto.Marshal(res)
G_getGameLogic().PackResInfo(agent, "ResPlayerChessData", data)
player.PushClientRes(res)
}
func (p *PlayerChessData) ResChessColorData(player *Player) {
agent := player.GetAgentByPlayer()
data, _ := proto.Marshal(&p.ColorData)
G_getGameLogic().PackResInfo(agent, "ResChessColorData", data)
player.PushClientRes(&p.ColorData)
}
// 同步棋盘数据
@ -57,7 +51,7 @@ func (p *PlayerChessData) UpdatePlayerChessData(player *Player, req *msg.UpdateP
addChessList, addNewEmit, err := p.HandleChess(player, update.MChessHandle)
if err != nil {
res := &msg.ResUpdatePlayerChessData{
Code: msg.RES_CODE_FAIL,
Code: msg.RES_CODE_Fail,
Msg: err.Error(),
}
handleStr := ""
@ -72,12 +66,12 @@ func (p *PlayerChessData) UpdatePlayerChessData(player *Player, req *msg.UpdateP
return err
}
player.PushClientRes(&msg.ResUpdatePlayerChessData{
Code: msg.RES_CODE_SUCCESS,
Code: msg.RES_CODE_Success,
})
p.Data.MChessData = update.MChessData
if !p.checkChessEqual(player) {
res := &msg.ResUpdatePlayerChessData{
Code: msg.RES_CODE_FAIL,
Code: msg.RES_CODE_Fail,
Msg: "棋子数据不一致",
}
handleStr := ""
@ -110,7 +104,7 @@ func (p *PlayerChessData) UpdateChessData(player *Player, mChessData map[string]
p.Data.MChessData = mChessData
if !p.checkChessEqual(player) {
res := &msg.ResUpdatePlayerChessData{
Code: msg.RES_CODE_FAIL,
Code: msg.RES_CODE_Fail,
Msg: "棋子数据不一致",
}
log.Debug("棋子数据不一致地图, %v---%v---%v", player.PlayMod.getChessMod().ChessMap, p.Data.MChessData, player.PlayMod.getChessMod().GetChessList())
@ -202,7 +196,7 @@ func (p *PlayerChessData) HandleChess(player *Player, handle_list []*msg.ChessHa
chessId := int(v.ChessId)
emitId := int(v.Emit)
switch v.Type {
case msg.HANDLE_TYPE_ADD: //增加棋子
case msg.HANDLE_TYPE_Add: //增加棋子
err := ChessMod.AddChess(chessId)
if err != nil {
return nil, nil, err
@ -222,25 +216,25 @@ func (p *PlayerChessData) HandleChess(player *Player, handle_list []*msg.ChessHa
addNewEmit = append(addNewEmit, chessId)
}
player.PushClientRes(HandbookMod.BackData())
case msg.HANDLE_TYPE_COMPOSE: //合成棋子
newChessId, err := ChessMod.ComposeChess(chessId)
case msg.HANDLE_TYPE_Compose: //合成棋子
NewChessId_, err := ChessMod.ComposeChess(chessId)
if err != nil {
return nil, nil, err
}
b := HandbookMod.SetHandbook(newChessId) // 添加图鉴
b := HandbookMod.SetHandbook(NewChessId_) // 添加图鉴
if b {
addNewEmit = append(addNewEmit, newChessId)
addNewEmit = append(addNewEmit, NewChessId_)
}
addChessList = append(addChessList, newChessId)
newChessIdLv := mergeDataCfg.GetLvById(newChessId)
TriggerList = append(TriggerList, &quest.Trigger{Label: quest.TRIGGER_LABEL_MERGELVTIME, A: []interface{}{newChessIdLv}})
addChessList = append(addChessList, NewChessId_)
NewChessId_Lv := mergeDataCfg.GetLvById(NewChessId_)
TriggerList = append(TriggerList, &quest.Trigger{Label: quest.TRIGGER_LABEL_MERGELVTIME, A: []interface{}{NewChessId_Lv}})
TriggerList = append(TriggerList, &quest.Trigger{Label: quest.TRIGGER_LABEL_MERGETIME})
player.PushClientRes(HandbookMod.BackData())
triggerComposeChess(player, newChessId, player.PlayMod.getBaseMod().EnergyMul, player.PlayMod.getChessMod().GetEmitList())
triggerComposeChess(player, NewChessId_, player.PlayMod.getBaseMod().EnergyMul, player.PlayMod.getChessMod().GetEmitList())
// 获取活动道具
ActItem := player.GetActivityItem(GoUtil.Int32ToInt(v.ActType))
itemList = item.Merge(itemList, ActItem)
case msg.HANDLE_TYPE_BUY: //购买棋子
case msg.HANDLE_TYPE_Buy: //购买棋子
loseGold, err := ChessMod.BuyChess(chessId)
if err != nil {
return nil, nil, err
@ -248,7 +242,7 @@ func (p *PlayerChessData) HandleChess(player *Player, handle_list []*msg.ChessHa
addChessList = append(addChessList, chessId)
buyChess += loseGold
itemList = append(itemList, &item.Item{Id: item.ITEM_STAR_ID, Num: int(-loseGold)})
case msg.HANDLE_TYPE_SELL: //出售棋子
case msg.HANDLE_TYPE_Sell: //出售棋子
items, err := ChessMod.SellChess(chessId)
if checkChess(chessId, BaseMod.GetEnergyMul(), ChessMod.GetEmitList()) { // 在订单中无法生成的棋子 出售获得原价宠物币
items = []*item.Item{{Id: item.ITEM_STAR_ID, Num: mergeDataCfg.GetStarById(chessId)}}
@ -278,7 +272,7 @@ func (p *PlayerChessData) HandleChess(player *Player, handle_list []*msg.ChessHa
// 获取活动道具
ActItem := player.GetActivityItem(GoUtil.Int32ToInt(v.ActType))
itemList = item.Merge(itemList, ActItem)
case msg.HANDLE_TYPE_REMOVE: //移除棋子
case msg.HANDLE_TYPE_Remove: //移除棋子
ChessMod.RemoveChess(chessId)
}

View File

@ -28,7 +28,7 @@ import (
"server/game/mod/playroom"
"server/game/mod/quest"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
"strconv"
"sync"
"time"
@ -38,9 +38,8 @@ import (
"gitea.bywaystudios.com/pet_home/leaf/log"
"github.com/apache/thrift/lib/go/thrift"
"github.com/robfig/cron/v3"
"google.golang.org/protobuf/proto"
)
// import "reflect"
@ -147,25 +146,25 @@ func (p *Player) SendClientRes() {
p.Msg = make([]PlayerMsg, 0)
}
func (p *Player) PushClientRes(m proto.Message) {
func (p *Player) PushClientRes(m thrift.TStruct) {
key := GetStructName(m)
buff, _ := proto.Marshal(m)
data := GoUtil.Marshal(m)
p.Msg = append(p.Msg, PlayerMsg{
F: key,
B: buff,
B: data,
})
}
func (p *Player) PushAndSendClienRes(m proto.Message) {
func (p *Player) PushAndSendClienRes(m thrift.TStruct) {
key := GetStructName(m)
buff, _ := proto.Marshal(m)
G_GameLogicPtr.PackResInfo(p.GetAgent(), key, buff)
data := GoUtil.Marshal(m)
G_GameLogicPtr.PackResInfo(p.GetAgent(), key, data)
}
func (p *Player) SendErrClienRes(m proto.Message) {
func (p *Player) SendErrClienRes(m thrift.TStruct) {
key := GetStructName(m)
buff, _ := proto.Marshal(m)
G_GameLogicPtr.PackResInfo(p.GetAgent(), key, buff)
data := GoUtil.Marshal(m)
G_GameLogicPtr.PackResInfo(p.GetAgent(), key, data)
}
func (p *Player) QuestTrigger(tr *quest.Trigger) {

View File

@ -2,16 +2,22 @@ package game
import (
"fmt"
"reflect"
GoUtil "server/game_util"
"server/msg"
"sync"
thrift "github.com/apache/thrift/lib/go/thrift"
"google.golang.org/protobuf/proto"
"google.golang.org/protobuf/reflect/protoreflect"
"google.golang.org/protobuf/reflect/protoregistry"
)
var (
protoMessageTypeCacheOnce sync.Once
protoMessageTypeByName sync.Map
protoMessageTypeCacheOnce sync.Once
protoMessageTypeByName sync.Map
thriftMessageTypeCacheOnce sync.Once
thriftMessageTypeByName sync.Map
)
func buildProtoMessageTypeCache() {
@ -26,6 +32,27 @@ func buildProtoMessageTypeCache() {
})
}
func registerThriftType(msgType reflect.Type) {
if msgType == nil || msgType.Kind() != reflect.Ptr {
return
}
elemType := msgType.Elem()
if elemType.Name() != "" {
thriftMessageTypeByName.Store(elemType.Name(), msgType)
}
thriftMessageTypeByName.Store(msgType.String(), msgType)
thriftMessageTypeByName.Store(elemType.String(), msgType)
if elemType.PkgPath() != "" && elemType.Name() != "" {
thriftMessageTypeByName.Store(elemType.PkgPath()+"."+elemType.Name(), msgType)
}
}
func buildThriftMessageTypeCache() {
msg.Processor.Range(func(_ uint16, msgType reflect.Type) {
registerThriftType(msgType)
})
}
func FindProtoMessageTypeByName(name string) (protoreflect.MessageType, error) {
messageType, err := protoregistry.GlobalTypes.FindMessageByName(protoreflect.FullName(name))
if err == nil {
@ -40,6 +67,15 @@ func FindProtoMessageTypeByName(name string) (protoreflect.MessageType, error) {
return nil, fmt.Errorf("protobuf message type not found: %s", name)
}
func FindThriftMessageTypeByName(name string) (reflect.Type, error) {
thriftMessageTypeCacheOnce.Do(buildThriftMessageTypeCache)
if cachedType, ok := thriftMessageTypeByName.Load(name); ok {
return cachedType.(reflect.Type), nil
}
return nil, fmt.Errorf("thrift message type not found: %s", name)
}
func NewProtoMessageByName(name string) (proto.Message, error) {
messageType, err := FindProtoMessageTypeByName(name)
if err != nil {
@ -49,6 +85,21 @@ func NewProtoMessageByName(name string) (proto.Message, error) {
return messageType.New().Interface(), nil
}
func NewThriftMessageByName(name string) (thrift.TStruct, error) {
messageType, err := FindThriftMessageTypeByName(name)
if err != nil {
return nil, err
}
message := reflect.New(messageType.Elem()).Interface()
thriftMessage, ok := message.(thrift.TStruct)
if !ok {
return nil, fmt.Errorf("thrift message type %s does not implement thrift.TStruct", messageType)
}
return thriftMessage, nil
}
func UnmarshalProtoMessageByName(name string, data []byte) (proto.Message, error) {
message, err := NewProtoMessageByName(name)
if err != nil {
@ -61,3 +112,14 @@ func UnmarshalProtoMessageByName(name string, data []byte) (proto.Message, error
return message, nil
}
func UnmarshalThriftMessageByName(name string, data []byte) (thrift.TStruct, error) {
message, err := NewThriftMessageByName(name)
if err != nil {
return nil, err
}
if err := GoUtil.Unmarshal(data, message); err != nil {
return nil, err
}
return message, nil
}

File diff suppressed because it is too large Load Diff

View File

@ -11,7 +11,7 @@ import (
"server/game/mod/item"
MsqMod "server/game/mod/msg"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
"strconv"
)
@ -100,14 +100,14 @@ func ReqApplyFriend(player *Player, req *msg.ReqApplyFriend) error {
FriendMod := player.PlayMod.getFriendMod()
if Uid == int(player.M_DwUin) {
player.SendErrClienRes(&msg.ResApplyFriend{
Code: msg.RES_CODE_FAIL,
Code: msg.RES_CODE_Fail,
Msg: "cannot apply yourself",
})
return fmt.Errorf("cannot apply yourself")
}
if FriendMod.CheckFriend(Uid) {
player.SendErrClienRes(&msg.ResApplyFriend{
Code: msg.RES_CODE_FAIL,
Code: msg.RES_CODE_Fail,
Msg: "already friend",
})
return fmt.Errorf("already friend")
@ -115,7 +115,7 @@ func ReqApplyFriend(player *Player, req *msg.ReqApplyFriend) error {
// 好友人数到达上限2000人玩家将无法再发送好友申请
if FriendMod.GetFriendLen() >= friendCfg.GetFriendLimitNum() {
player.SendErrClienRes(&msg.ResApplyFriend{
Code: msg.RES_CODE_FAIL,
Code: msg.RES_CODE_Fail,
Msg: "friend list full",
})
return fmt.Errorf("friend list full")
@ -124,7 +124,7 @@ func ReqApplyFriend(player *Player, req *msg.ReqApplyFriend) error {
sendApplyTime := FriendMod.GetSendApplyTime(Uid)
if sendApplyTime != 0 && GoUtil.Now()-sendApplyTime < oneday {
player.PushClientRes(&msg.ResApplyFriend{
Code: msg.RES_CODE_FAIL,
Code: msg.RES_CODE_Fail,
Uid: req.Uid,
Msg: "already applied",
})
@ -136,7 +136,7 @@ func ReqApplyFriend(player *Player, req *msg.ReqApplyFriend) error {
Items, err := FriendMod.GetSponsorReward()
if err != nil {
player.SendErrClienRes(&msg.ResApplyFriend{
Code: msg.RES_CODE_FAIL,
Code: msg.RES_CODE_Fail,
Msg: err.Error(),
})
return err
@ -146,7 +146,7 @@ func ReqApplyFriend(player *Player, req *msg.ReqApplyFriend) error {
err = player.HandleItem(Items, msg.ITEM_POP_LABEL_ApplyFriendSponsor.String())
if err != nil {
player.SendErrClienRes(&msg.ResApplyFriend{
Code: msg.RES_CODE_FAIL,
Code: msg.RES_CODE_Fail,
Msg: err.Error(),
})
return err
@ -176,7 +176,7 @@ func ReqApplyFriend(player *Player, req *msg.ReqApplyFriend) error {
}
FriendMgrSend(m)
player.PushClientRes(&msg.ResApplyFriend{
Code: msg.RES_CODE_SUCCESS,
Code: msg.RES_CODE_Success,
Uid: req.Uid,
})
return nil
@ -188,7 +188,7 @@ func ReqAgreeFriend(player *Player, req *msg.ReqAgreeFriend) error {
FriendMod := player.PlayMod.getFriendMod()
if !FriendMod.CheckApply(Uid) {
player.SendErrClienRes(&msg.ResAgreeFriend{
Code: msg.RES_CODE_FAIL,
Code: msg.RES_CODE_Fail,
Msg: "apply uid not exist",
})
return fmt.Errorf("apply uid not exist")
@ -196,7 +196,7 @@ func ReqAgreeFriend(player *Player, req *msg.ReqAgreeFriend) error {
// 好友人数到达上限2000人玩家将无法再同意好友申请
if FriendMod.GetFriendLen() >= friendCfg.GetFriendLimitNum() {
player.SendErrClienRes(&msg.ResAgreeFriend{
Code: msg.RES_CODE_FAIL,
Code: msg.RES_CODE_Fail,
Msg: "friend list full",
})
return fmt.Errorf("friend list full")
@ -207,7 +207,7 @@ func ReqAgreeFriend(player *Player, req *msg.ReqAgreeFriend) error {
}
FriendMod.AddFriend(Uid)
player.PushClientRes(&msg.ResAgreeFriend{
Code: msg.RES_CODE_SUCCESS,
Code: msg.RES_CODE_Success,
Uid: req.Uid,
Player: G_GameLogicPtr.GetResSimplePlayerByUid(int(req.Uid)),
})
@ -243,7 +243,7 @@ func ReqDelFriend(player *Player, req *msg.ReqDelFriend) error {
FriendMod.DelFriend(Uid)
player.PlayMod.save()
player.PushClientRes(&msg.ResDelFriend{
Code: msg.RES_CODE_SUCCESS,
Code: msg.RES_CODE_Success,
Uid: req.Uid,
})
player.AddLog(Uid, friend.LOG_TYPE_FRIEND_DELETE, "", GoUtil.Now())
@ -261,7 +261,7 @@ func ReqRefuseFriend(player *Player, req *msg.ReqRefuseFriend) error {
FriendMod.RefuseApply(Uid)
player.PlayMod.save()
player.PushClientRes(&msg.ResRefuseFriend{
Code: msg.RES_CODE_SUCCESS,
Code: msg.RES_CODE_Success,
Uid: req.Uid,
})
now := GoUtil.Now()
@ -302,7 +302,7 @@ func ReqFriendTLUpvote(player *Player, req *msg.ReqFriendTLUpvote) error {
Items, FUid, err := FriendMod.Upvote(int(req.Id))
if err != nil {
player.SendErrClienRes(&msg.ResFriendTLUpvote{
Code: msg.RES_CODE_FAIL,
Code: msg.RES_CODE_Fail,
Msg: err.Error(),
})
return err
@ -310,7 +310,7 @@ func ReqFriendTLUpvote(player *Player, req *msg.ReqFriendTLUpvote) error {
err = player.HandleItem(Items, msg.ITEM_POP_LABEL_TLUpvote.String())
if err != nil {
player.SendErrClienRes(&msg.ResFriendTLUpvote{
Code: msg.RES_CODE_FAIL,
Code: msg.RES_CODE_Fail,
Msg: err.Error(),
})
return err
@ -329,7 +329,7 @@ func ReqFriendTLUpvote(player *Player, req *msg.ReqFriendTLUpvote) error {
FriendMgrSend(m)
player.PlayMod.save()
player.PushClientRes(&msg.ResFriendTLUpvote{
Code: msg.RES_CODE_SUCCESS,
Code: msg.RES_CODE_Success,
Id: req.Id,
})
player.TeLog("friend_upvote", map[string]interface{}{
@ -343,7 +343,7 @@ func ReqFriendTReward(player *Player, req *msg.ReqFriendTReward) error {
Items, err := FriendMod.GetReward(int(req.Id))
if err != nil {
player.SendErrClienRes(&msg.ResFriendTReward{
Code: msg.RES_CODE_FAIL,
Code: msg.RES_CODE_Fail,
Msg: err.Error(),
})
return err
@ -351,14 +351,14 @@ func ReqFriendTReward(player *Player, req *msg.ReqFriendTReward) error {
err = player.HandleItem(Items, msg.ITEM_POP_LABEL_FriendTReward.String())
if err != nil {
player.SendErrClienRes(&msg.ResFriendTReward{
Code: msg.RES_CODE_FAIL,
Code: msg.RES_CODE_Fail,
Msg: err.Error(),
})
return err
}
player.PlayMod.save()
player.PushClientRes(&msg.ResFriendTReward{
Code: msg.RES_CODE_SUCCESS,
Code: msg.RES_CODE_Success,
Id: req.Id,
})
return nil
@ -369,12 +369,12 @@ func ReqFriendReplyHandle(player *Player, req *msg.ReqFriendReplyHandle) error {
ReplyInfo := FriendMod.ReplyFriend(int(req.LogId))
if ReplyInfo == nil {
player.SendErrClienRes(&msg.ResFriendReplyHandle{
Code: msg.RES_CODE_FAIL,
Code: msg.RES_CODE_Fail,
Msg: "reply info not exist",
})
return fmt.Errorf("reply info not exist")
}
ErrType := msg.FRIEND_REPLY_HANDLE_ERR_TYPE_NONE
ErrType := msg.FRIEND_REPLY_HANDLE_ERR_TYPE_None
now := GoUtil.Now()
items := make([]*item.Item, 0)
if ReplyInfo.Type == friend.REPLY_TYPE_GREETING_Get {
@ -439,7 +439,7 @@ func ReqFriendReplyHandle(player *Player, req *msg.ReqFriendReplyHandle) error {
}
player.CatnipBackData()
} else {
ErrType = msg.FRIEND_REPLY_HANDLE_ERR_TYPE_CATNIP
ErrType = msg.FRIEND_REPLY_HANDLE_ERR_TYPE_Catnip
}
}
}
@ -447,7 +447,7 @@ func ReqFriendReplyHandle(player *Player, req *msg.ReqFriendReplyHandle) error {
err := player.HandleItem(items, msg.ITEM_POP_LABEL_FriendReplyHandle.String())
if err != nil {
player.SendErrClienRes(&msg.ResFriendReplyHandle{
Code: msg.RES_CODE_FAIL,
Code: msg.RES_CODE_Fail,
Msg: err.Error(),
})
return err
@ -455,7 +455,7 @@ func ReqFriendReplyHandle(player *Player, req *msg.ReqFriendReplyHandle) error {
}
player.FriendLogBackData()
player.PushClientRes(&msg.ResFriendReplyHandle{
Code: msg.RES_CODE_SUCCESS,
Code: msg.RES_CODE_Success,
LogId: req.LogId,
Type: req.Type,
ErrType: ErrType,
@ -466,7 +466,7 @@ func ReqFriendReplyHandle(player *Player, req *msg.ReqFriendReplyHandle) error {
func ReqFriendByCode(player *Player, req *msg.ReqFriendByCode) error {
if req.Code == "" {
player.SendErrClienRes(&msg.ResFriendByCode{
Code: msg.RES_CODE_FAIL,
Code: msg.RES_CODE_Fail,
Msg: "code is empty",
})
return fmt.Errorf("code is empty")
@ -474,7 +474,7 @@ func ReqFriendByCode(player *Player, req *msg.ReqFriendByCode) error {
CodeNum := GoUtil.ParseUniqueStringToInt(req.Code)
if CodeNum <= 0 {
player.SendErrClienRes(&msg.ResFriendByCode{
Code: msg.RES_CODE_FAIL,
Code: msg.RES_CODE_Fail,
Msg: "code is invalid",
})
return fmt.Errorf("code is invalid")
@ -482,7 +482,7 @@ func ReqFriendByCode(player *Player, req *msg.ReqFriendByCode) error {
Uid := int64(CodeNum) + int64(100000) + int64(conf.Server.AppID*100000000)
if Uid == player.M_DwUin {
player.SendErrClienRes(&msg.ResFriendByCode{
Code: msg.RES_CODE_FAIL,
Code: msg.RES_CODE_Fail,
Msg: "can not add yourself",
})
return fmt.Errorf("can not add yourself")
@ -491,13 +491,13 @@ func ReqFriendByCode(player *Player, req *msg.ReqFriendByCode) error {
PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(int(Uid))
if PlayerSimpleData == nil {
player.SendErrClienRes(&msg.ResFriendByCode{
Code: msg.RES_CODE_FAIL,
Code: msg.RES_CODE_Fail,
Msg: "player not exist",
})
return fmt.Errorf("player not exist")
}
player.PushClientRes(&msg.ResFriendByCode{
Code: msg.RES_CODE_SUCCESS,
Code: msg.RES_CODE_Success,
Player: PlayerSimpleData,
})
return nil
@ -508,7 +508,7 @@ func ReqAddNpc(player *Player, req *msg.ReqAddNpc) error {
err := FriendMod.SetNpc(int(req.NpcId))
if err != nil {
player.SendErrClienRes(&msg.ResAddNpc{
Code: msg.RES_CODE_FAIL,
Code: msg.RES_CODE_Fail,
Msg: err.Error(),
})
return err
@ -526,7 +526,7 @@ func ReqAddNpc(player *Player, req *msg.ReqAddNpc) error {
FriendMod.AddReplyInfo(int(req.NpcId), friend.REPLY_TYPE_GREETING_Get, "", GoUtil.Now()+oneday, nil)
player.AddLog(int(req.NpcId), friend.LOG_TYPE_FRIEND_BECOME_NPC, GoUtil.String(req.NpcId), GoUtil.Now())
player.PushClientRes(&msg.ResAddNpc{
Code: msg.RES_CODE_SUCCESS,
Code: msg.RES_CODE_Success,
NpcId: req.NpcId,
})
return nil

View File

@ -1,7 +1,7 @@
package game
import (
"server/msg"
msg "server/msg/meowmentnet"
)
func ReqPetFur(player *Player, req *msg.ReqPetFur) error {

View File

@ -17,7 +17,7 @@ import (
"server/game/mod/order"
"server/game/mod/quest"
GoUtil "server/game_util"
"server/msg"
msg "server/msg/meowmentnet"
"sort"
"gitea.bywaystudios.com/pet_home/leaf/log"
@ -47,14 +47,14 @@ func (player *Player) MailTrigger(Tr *quest.Trigger) bool {
tr := false
for _, v := range t {
if player.checkTriggerCondition(v.Trigger) {
Title := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_CN, v.Title)
Content := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_CN, v.Content)
TitleEn := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_EN, v.Title)
ContentEn := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_EN, v.Content)
TitlePtBr := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_PTBR, v.Title)
ContentPtBr := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_PTBR, v.Content)
TitleEsLatam := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_ES_LATAM, v.Title)
ContentEsLatam := languageCfg.GetLanguage(msg.LANG_TYPE_LANG_ES_LATAM, v.Content)
Title := languageCfg.GetLanguage(msg.LANG_TYPE_LangCn, v.Title)
Content := languageCfg.GetLanguage(msg.LANG_TYPE_LangCn, v.Content)
TitleEn := languageCfg.GetLanguage(msg.LANG_TYPE_LangEn, v.Title)
ContentEn := languageCfg.GetLanguage(msg.LANG_TYPE_LangEn, v.Content)
TitlePtBr := languageCfg.GetLanguage(msg.LANG_TYPE_LangPtbr, v.Title)
ContentPtBr := languageCfg.GetLanguage(msg.LANG_TYPE_LangPtbr, v.Content)
TitleEsLatam := languageCfg.GetLanguage(msg.LANG_TYPE_LangEsLatam, v.Title)
ContentEsLatam := languageCfg.GetLanguage(msg.LANG_TYPE_LangEsLatam, v.Content)
MailMod.SendMail(&mail.MailStruct{
Title: Title,
SubTitle: "",
@ -102,7 +102,7 @@ func (player *Player) TriggerShippingOrderOrigin(req *msg.ReqShippingOrder) {
if Status == MergeConst.ORDER_STATUS_CANCEL { // 取消支付
player.CancelOrder(OrderSn)
player.PushClientRes(&msg.ResShippingOrder{
Code: msg.RES_CODE_SUCCESS,
Code: msg.RES_CODE_Success,
Msg: "cancel success",
})
return
@ -161,7 +161,7 @@ func (player *Player) TriggerShippingOrderOrigin(req *msg.ReqShippingOrder) {
}
player.TeLog("pay", orderDataMap)
player.PushClientRes(&msg.ResShippingOrder{
Code: msg.RES_CODE_SUCCESS,
Code: msg.RES_CODE_Success,
})
player.SendClientRes()
}

View File

@ -11,7 +11,7 @@ import (
"server/game/mod/item"
"server/game/mod/order"
"server/game/mod/quest"
"server/msg"
msg "server/msg/meowmentnet"
"time"
"gitea.bywaystudios.com/pet_home/leaf/log"

View File

@ -2,6 +2,7 @@ package GoUtil
import (
"bytes"
"context"
"crypto/aes"
"crypto/cipher"
"crypto/md5"
@ -26,6 +27,7 @@ import (
"gitea.bywaystudios.com/pet_home/leaf/log"
"github.com/apache/thrift/lib/go/thrift"
"github.com/oschwald/geoip2-golang"
)
@ -965,3 +967,35 @@ func FormatStarItemNum(num, factor int) int {
Num := math.Round(float64(num) * float64(factor) / 100)
return int(Num) / 5 * 5
}
func newCompactSerializer() *thrift.TSerializer {
transport := thrift.NewTMemoryBufferLen(1024)
protocol := thrift.NewTCompactProtocolFactoryConf(nil).GetProtocol(transport)
return &thrift.TSerializer{Transport: transport, Protocol: protocol}
}
func newCompactDeserializer() *thrift.TDeserializer {
transport := thrift.NewTMemoryBufferLen(1024)
protocol := thrift.NewTCompactProtocolFactoryConf(nil).GetProtocol(transport)
return &thrift.TDeserializer{Transport: transport, Protocol: protocol}
}
func Marshal(m thrift.TStruct) []byte {
serializer := newCompactSerializer()
data, err := serializer.Write(context.Background(), m)
if err != nil {
log.Debug("thrift Marshal error:", err)
return nil
}
return data
}
func Unmarshal(data []byte, m thrift.TStruct) error {
deserializer := newCompactDeserializer()
err := deserializer.Read(context.Background(), m, data)
if err != nil {
log.Debug("thrift Unmarshal error:", err)
return err
}
return nil
}

View File

@ -2,13 +2,14 @@ package gate
import (
"server/game"
"server/msg"
msg "server/msg"
"server/msg/meowmentnet"
)
func init() {
// 这里指定消息 Hello 路由到 game 模块
// 模块间使用 ChanRPC 通讯,消息路由也不例外
msg.Processor.SetRouter(&msg.ClientReq{}, game.ChanRPC)
msg.Processor.SetRouter(&msg.ClientRes{}, game.ChanRPC)
msg.Processor.SetRouter(&msg.AdminReq{}, game.ChanRPC)
msg.Processor.SetRouter(&meowmentnet.ClientReq{}, game.ChanRPC)
msg.Processor.SetRouter(&meowmentnet.ClientRes{}, game.ChanRPC)
msg.Processor.SetRouter(&meowmentnet.AdminReq{}, game.ChanRPC)
}

View File

@ -4,7 +4,7 @@ go 1.25.5
require (
gitea.bywaystudios.com/pet_home/galog v0.0.0-20260313081346-5689712d8f74
gitea.bywaystudios.com/pet_home/leaf v0.0.0-20260313092348-57448df16cd8
gitea.bywaystudios.com/pet_home/leaf v0.0.0-20260409104501-67c163ff07c2
gitea.bywaystudios.com/pet_home/thinkdata v0.0.0-20260401014936-68c5994be89c
github.com/alibabacloud-go/cloudauth-20190307/v4 v4.9.2
github.com/alibabacloud-go/darabonba-openapi/v2 v2.0.11
@ -57,6 +57,7 @@ require (
require (
filippo.io/edwards25519 v1.1.0 // indirect
github.com/apache/thrift v0.22.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
github.com/google/uuid v1.6.0 // indirect

View File

@ -5,6 +5,10 @@ gitea.bywaystudios.com/pet_home/galog v0.0.0-20260313081346-5689712d8f74 h1:Z2tn
gitea.bywaystudios.com/pet_home/galog v0.0.0-20260313081346-5689712d8f74/go.mod h1:Sj45tVreK2AFDH+k03Q0uy8paaF6TINOT6vqWIFG4sg=
gitea.bywaystudios.com/pet_home/leaf v0.0.0-20260313092348-57448df16cd8 h1:qs0cKcOE/uI8ABumwubKR9TKMFa3u9jUR9hQ4SThq4Q=
gitea.bywaystudios.com/pet_home/leaf v0.0.0-20260313092348-57448df16cd8/go.mod h1:9rWUv5SNj6indAuM2dAT76uO34a/C2FGptEDKkyg21U=
gitea.bywaystudios.com/pet_home/leaf v0.0.0-20260409020159-53d700ade952 h1:z3vtUEQTdzm5LqH9jwLaLUwU5WYwobwvSpboUu8kpSY=
gitea.bywaystudios.com/pet_home/leaf v0.0.0-20260409020159-53d700ade952/go.mod h1:v2aZGGOhLPUWCtgtwMztLucxBmk85qsnOuR8X+wDmdQ=
gitea.bywaystudios.com/pet_home/leaf v0.0.0-20260409104501-67c163ff07c2 h1:EnuWeend4oN/VAjzHcZYibQg5Ksuw9UTG0XJGEJzL6M=
gitea.bywaystudios.com/pet_home/leaf v0.0.0-20260409104501-67c163ff07c2/go.mod h1:v2aZGGOhLPUWCtgtwMztLucxBmk85qsnOuR8X+wDmdQ=
gitea.bywaystudios.com/pet_home/thinkdata v0.0.0-20260401014936-68c5994be89c h1:FjL8acgHxp1CMi+JSMwD1GXWIe7WIo1h8LoFVaLI87A=
gitea.bywaystudios.com/pet_home/thinkdata v0.0.0-20260401014936-68c5994be89c/go.mod h1:VNNASaG7YCk+7We0m+SQ6/fMacEjx+TTFvcS/1Rp+6Q=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
@ -79,6 +83,8 @@ github.com/aliyun/credentials-go v1.3.6/go.mod h1:1LxUuX7L5YrZUWzBrRyk0SwSdH4OmP
github.com/aliyun/credentials-go v1.4.5/go.mod h1:Jm6d+xIgwJVLVWT561vy67ZRP4lPTQxMbEYRuT2Ti1U=
github.com/aliyun/credentials-go v1.4.6 h1:CG8rc/nxCNKfXbZWpWDzI9GjF4Tuu3Es14qT8Y0ClOk=
github.com/aliyun/credentials-go v1.4.6/go.mod h1:Jm6d+xIgwJVLVWT561vy67ZRP4lPTQxMbEYRuT2Ti1U=
github.com/apache/thrift v0.22.0 h1:r7mTJdj51TMDe6RtcmNdQxgn9XcyfGDOzegMDRg47uc=
github.com/apache/thrift v0.22.0/go.mod h1:1e7J/O1Ae6ZQMTYdy9xa3w9k+XHWPfRvdPyJeynQ+/g=
github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs=
github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c=
github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA=

View File

@ -1,14 +1,16 @@
package msg
import (
"gitea.bywaystudios.com/pet_home/leaf/network/protobuf"
"server/msg/meowmentnet"
"gitea.bywaystudios.com/pet_home/leaf/network/thrift"
)
var Processor = protobuf.NewProcessor()
var Processor = thrift.NewProcessor()
func init() {
Processor.Register(&ClientReq{})
Processor.Register(&ClientRes{})
Processor.Register(&AdminReq{})
Processor.Register(&AdminRes{})
Processor.Register(&meowmentnet.ClientReq{})
Processor.Register(&meowmentnet.ClientRes{})
Processor.Register(&meowmentnet.AdminReq{})
Processor.Register(&meowmentnet.AdminRes{})
}