优化系统bug

This commit is contained in:
hahwu 2024-12-24 18:53:37 +08:00
parent 3d63153d66
commit d5325f59e5
23 changed files with 477 additions and 690 deletions

View File

@ -1,6 +1,7 @@
package GoUtil
import (
"fmt"
"sort"
"strconv"
"strings"
@ -218,3 +219,9 @@ func InitNumSlice(start, end int) []int {
}
return result
}
func IntSliceToString(slice []int) string {
str := fmt.Sprintf("%v", slice)
str = strings.Trim(str, "[]")
return str
}

View File

@ -9,6 +9,7 @@ import (
)
var Server struct {
AppID int
LogLevel string
LogPath string
WSAddr string

View File

@ -1,4 +1,5 @@
{
"AppID": 1,
"LogLevel": "debug",
"LogPath": "",
"TCPAddr": ":3565",

View File

@ -187,6 +187,9 @@ func FormatAllMemInsertDb(u interface{}, tableName string) (insertID int64, err
if k == reflect.Int32 {
Values[i] = ufield.Int()
}
if k == reflect.Int64 {
Values[i] = ufield.Int()
}
}
for i := range Fields {
Fields[i] = "`" + Fields[i] + "`"

View File

@ -23,7 +23,7 @@ type Db_Account struct {
}
type ResPlayerBaseInfo struct {
DwUin int32 `db:"dwUin"`
DwUin int64 `db:"dwUin"`
Energy int32 `db:"energy"`
Star int32 `db:"star"`
RecoverTime int32 `db:"recover_time"`
@ -458,7 +458,7 @@ type SqlAddFriendStruct struct {
}
type SqlModStruct struct {
DwUin int32 `db:"dwUin"`
DwUin int64 `db:"dwUin"`
ModData []byte `db:"mData"`
UpdataTime int32 `db:"updateTime"`
}

View File

@ -213,7 +213,7 @@ func (c *ChampshipMgr) GetPreRankMsg(Uid int) *proto.ResChampshipPreRank {
continue
}
RL[int32(k+1)] = &proto.ResPlayerRank{
Uid: int32(v.Uid),
Uid: int64(v.Uid),
Score: float32(v.Score),
Name: Robot.Name,
Avatar: int32(Robot.Avatar),
@ -226,7 +226,7 @@ func (c *ChampshipMgr) GetPreRankMsg(Uid int) *proto.ResChampshipPreRank {
continue
}
RL[int32(k+1)] = &proto.ResPlayerRank{
Uid: int32(v.Uid),
Uid: int64(v.Uid),
Score: float32(v.Score),
Name: SimplePlayer.Name,
Avatar: int32(SimplePlayer.Avatar),
@ -266,7 +266,7 @@ func (c *ChampshipMgr) GetRankMsg(Uid int) *proto.ResChampshipRank {
continue
}
RL[int32(k+1)] = &proto.ResPlayerRank{
Uid: int32(v.Uid),
Uid: int64(v.Uid),
Score: float32(v.Score),
Name: Robot.Name,
Avatar: int32(Robot.Avatar),
@ -279,7 +279,7 @@ func (c *ChampshipMgr) GetRankMsg(Uid int) *proto.ResChampshipRank {
continue
}
RL[int32(k+1)] = &proto.ResPlayerRank{
Uid: int32(v.Uid),
Uid: int64(v.Uid),
Score: float32(v.Score),
Name: SimplePlayer.Name,
Avatar: int32(SimplePlayer.Avatar),

View File

@ -96,7 +96,7 @@ func (f *FriendMgr) sync(m *msg.Msg) (interface{}, error) {
// 发送消息给玩家
func sendToPlayer(m *msg.Msg) error {
p := G_GameLogicPtr.GetPlayer(int32(m.To))
p := G_GameLogicPtr.GetPlayer(int64(m.To))
if p == nil || p.stop {
return fmt.Errorf("player %d not online", m.To)
}

View File

@ -126,7 +126,7 @@ func (gl *GameLogic) DelPlayer(player *Player) {
gl.M_Players.Delete(player.M_DwUin)
}
func (gl *GameLogic) GetPlayer(DwUin int32) *Player {
func (gl *GameLogic) GetPlayer(DwUin int64) *Player {
if v, ok := gl.M_Players.Load(DwUin); ok {
return v.(*Player)
}
@ -181,9 +181,9 @@ func (ad *GameLogic) NewAccountInsertDataToDB() bool {
return false
}
insertId = insertId + int64(conf.Server.ServerID*100000)
insertId = insertId + int64(conf.Server.ServerID*100000) + int64(conf.Server.AppID*100000000)
playerInfo := &db.ResPlayerBaseInfo{}
playerInfo.DwUin = int32(insertId)
playerInfo.DwUin = int64(insertId)
playerInfo.Energy = 100
playerInfo.Star = 0
playerInfo.RecoverTime = int32(time.Now().Unix())
@ -207,7 +207,7 @@ func (ad *GameLogic) NewAccountInsertDataToDB() bool {
encode := gob.NewEncoder(&buf)
encode.Encode(&PlayerModList{})
playerMod := &db.SqlModStruct{
DwUin: int32(insertId),
DwUin: int64(insertId),
ModData: buf.Bytes(),
UpdataTime: int32(time.Now().Unix()),
}
@ -393,7 +393,7 @@ func (ad *GameLogic) GetResSimplePlayerByUid(Id int) *msg.ResPlayerSimple {
}
return &msg.ResPlayerSimple{
Uid: int32(player.Uid),
Uid: int64(player.Uid),
Name: player.Name,
Level: int32(player.Level),
Avatar: int32(player.Avatar),
@ -492,46 +492,6 @@ func (ad *GameLogic) ClearData(args []interface{}) {
}
}
func (ad *GameLogic) InitPromotionInsertDb(player *Player, StartSvrTime int32, EndSvrTime int32, ConfigActId int) int32 {
st := &db.SqlLimitPromotionStruct{}
st.DwUin = player.M_DwUin
st.IsPay = 0
st.StartSvrTime = StartSvrTime
st.EndSvrTime = EndSvrTime
st.ActiveID = 0
st.ConfigActId = int32(ConfigActId)
activityID, _ := db.FormatAllMemInsertDb(st, "t_player_LimitPromotion")
return int32(activityID)
}
func (ad *GameLogic) InitInfinitePackInsertDb(player *Player, StartSvrTime int32, EndSvrTime int32, ConfigActId int) int32 {
st := &db.SqlLimitInfinitePackStruct{}
st.DwUin = player.M_DwUin
st.CurGear = 1
st.StartSvrTime = StartSvrTime
st.EndSvrTime = EndSvrTime
st.ActiveID = 0
st.ConfigActId = int32(ConfigActId)
activityID, _ := db.FormatAllMemInsertDb(st, "t_player_LimitInfinitePack")
return int32(activityID)
}
func (ad *GameLogic) Init7DayLoginInsertDb(player *Player, StartSvrTime int32, EndSvrTime int32, ConfigActId int) int32 {
st := &db.SqlSevenDayLoginStruct{}
st.DwUin = player.M_DwUin
st.LastGetTime = 0
st.StartSvrTime = StartSvrTime
st.EndSvrTime = EndSvrTime
st.ActiveID = 0
st.GetIndex = 0
st.ConfigActId = int32(ConfigActId)
activityID, _ := db.FormatAllMemInsertDb(st, "t_player_Limit7DayLogin")
return int32(activityID)
}
func (ad *GameLogic) LoadSvrGlobalData() {
sqlStr := "SELECT * FROM t_server_global_data WHERE Id = ?"
@ -597,7 +557,7 @@ func (ad *GameLogic) ReplaceExistPlayerAndAgent(a gate.Agent, player *Player) er
return nil
}
func (ad *GameLogic) SendMassage(dwUin int32, Func string, data []byte) bool {
func (ad *GameLogic) SendMassage(dwUin int64, Func string, data []byte) bool {
player := ad.GetPlayer(dwUin)
if player != nil {
agent := player.GetAgentByPlayer()
@ -841,7 +801,7 @@ func (ad *GameLogic) NotifyAll(m *MsgMod.Msg) {
}
func NotifyPlayer(Uid int, m *MsgMod.Msg) {
p := G_GameLogicPtr.GetPlayer(int32(Uid))
p := G_GameLogicPtr.GetPlayer(int64(Uid))
if p == nil || p.stop {
return
}

View File

@ -51,7 +51,7 @@ func ReqGmCommand(args []interface{}) error {
player.PushClientRes(player.PlayMod.mod_list.Card.BackData())
case "addexp":
num, _ := strconv.Atoi(arg[1])
player.GetPlayerBaseMod().AddExp(num)
player.GetPlayerBaseMod().AddExp(player, num)
player.PushClientRes(&player.GetPlayerBaseMod().Data)
case "setlv":
num, _ := strconv.Atoi(arg[1])

View File

@ -4,6 +4,7 @@ import (
"fmt"
"math"
"server/GoUtil"
userCfg "server/conf/user"
"server/game/mod/card"
"server/game/mod/limitedTimeEvent"
MsgMod "server/game/mod/msg" // Ensure this package exists and is correctly referenced
@ -37,7 +38,7 @@ func LimitedTimeEventTrigger(p *Player, AddEventId int) {
switch v {
case limitedTimeEvent.EVENT_TYPE_HIGH_ROLLER:
EnergyMul := p.PlayMod.getBaseMod().GetEnergyMul()
MaxEnergyMul := p.GetPlayerBaseMod().GetMaxEnergyMul()
MaxEnergyMul := p.GetPlayerBaseMod().GetMaxEnergyMul(p)
p.PlayMod.getBaseMod().ResetEnergyMul(MaxEnergyMul)
NewEnergyMul := p.PlayMod.getBaseMod().GetEnergyMul()
OrderMod := p.PlayMod.getOrderMod()
@ -178,3 +179,27 @@ func LimitedTimePlayroomWorkTrigger(p *Player) {
}, "PlayroomWork")
}
}
func LimitedTimeEnergyAdd(p *Player) {
curtime := time.Now().Unix()
PlayerBaseMod := p.GetPlayerBaseMod()
delta := curtime - (int64)(PlayerBaseMod.Data.RecoverTime)
Recover := userCfg.GetRecover(int(PlayerBaseMod.Data.Level))
Addsta := int(delta) / Recover
if Addsta <= 0 {
return
}
if PlayerBaseMod.GetMaxEnergy() > PlayerBaseMod.Data.Energy {
PlayerBaseMod.Data.Energy = PlayerBaseMod.Data.Energy + int32(Addsta)
if PlayerBaseMod.Data.Energy > PlayerBaseMod.GetMaxEnergy() {
PlayerBaseMod.Data.Energy = PlayerBaseMod.GetMaxEnergy()
}
p.CallEvent(time.Duration(Recover)*time.Second, func() {
p.lock.Lock()
defer p.lock.Unlock()
LimitedTimeEnergyAdd(p)
}, "AddEnergy")
}
PlayerBaseMod.Data.RecoverTime = int32(curtime)
p.SendErrClienRes(PlayerBaseMod.BackAsset())
}

View File

@ -24,7 +24,7 @@ type LogMgr struct {
}
type Log struct {
Uid int32
Uid int64
EventName string
Param map[string]interface{}
TimeStamp int64

View File

@ -41,9 +41,9 @@ import (
//"fmt"
type Player struct {
playerdata map[string]PlayerDataModule
PlayerBaseMod *PlayerBaseData
PlayMod PlayerMod
M_DwUin int32
M_DwUin int64
agent gate.Agent
lock sync.Mutex
stopSignal chan bool
@ -185,9 +185,7 @@ func (p *Player) InitPlayer(UserName string) error {
p.timerList = make(map[string]*timer.Timer)
p.MDispatr = timer.NewDispatcher(100)
p.stopSignal = make(chan bool)
p.playerdata = make(map[string]PlayerDataModule)
Base := &PlayerBaseData{PlayerData: NewPlayerData(PLAYER_BASE_DATA, p)}
p.playerdata[PLAYER_BASE_DATA] = Base
Base := &PlayerBaseData{}
// 玩家基础数据
ok := Base.LoadDataFromDB(UserName)
@ -195,17 +193,10 @@ func (p *Player) InitPlayer(UserName string) error {
log.Debug("load PlayerBaseData failed:", UserName)
return errors.New("load PlayerBaseData failed")
}
p.playerdata[PLAYER_BASE_DATA] = Base
p.PlayerBaseMod = Base
p.M_DwUin = Base.Data.DwUin
// 棋盘数据
Chess := &PlayerChessData{PlayerData: NewPlayerData("PlayerChessData", p)}
ok = Chess.LoadDataFromDB(Base.Data.DwUin)
if !ok {
log.Debug("load PlayerChessData failed:", UserName)
return errors.New("load PlayerChessData failed")
}
p.playerdata["PlayerChessData"] = Chess
// 玩家模块数据
modData := &PlayerModData{PlayerData: NewPlayerData("PlayerModData", p)}
@ -377,11 +368,7 @@ func (p *Player) ClearData() {
log.Debug("ClearData BeginTx failed:", err)
return
}
for k, v := range p.playerdata {
if k == PLAYER_BASE_DATA || k == "PlayerChessData" {
v.ClearData()
}
}
p.PlayerBaseMod.ClearData()
p.PlayMod.ClearData(p)
tx.Commit()
p.Stop()
@ -399,9 +386,8 @@ func (p *Player) AutoSaveData() {
log.Debug("AutoSaveData BeginTx failed:", err)
return
}
for _, v := range p.playerdata {
v.SaveDataFromDB("")
}
p.PlayerBaseMod.SaveDataFromDB("")
p.PlayMod.ClearData(p)
err = tx.Commit()
if err != nil {
@ -425,36 +411,8 @@ func (p *Player) SetAgent(a gate.Agent) {
p.agent = a
}
func (p *Player) GetIFGameData(key string) interface{} {
v, ok := p.playerdata[key]
if ok {
return v
}
return nil
}
func (p *Player) GetPlayerBaseMod() *PlayerBaseData {
v, ok := p.playerdata[PLAYER_BASE_DATA]
if ok {
return v.(*PlayerBaseData)
}
return nil
}
func (p *Player) GetGameData(key string) PlayerDataModule {
v, ok := p.playerdata[key]
if ok {
return v
}
return nil
}
func (p *Player) GetGameMod(key string) interface{} {
v, ok := p.playerdata[key]
if ok {
return v
}
return nil
return p.PlayerBaseMod
}
func (p *Player) GetAgentByPlayer() gate.Agent {
@ -495,7 +453,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
IType := itemCfg.GetItemType(v.Id)
switch IType {
case item.ITEM_TYPE_ENERGY: // 能量
err := p.GetPlayerBaseMod().AddEnergy(v.Num)
err := p.GetPlayerBaseMod().AddEnergy(p, v.Num)
p.TeLog("asset_change", map[string]interface{}{
"item_id": v.Id,
"change_type": change_type,
@ -507,7 +465,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
return err
}
case item.ITEM_TYPE_STAR: // 星星
err := p.GetPlayerBaseMod().AddStar(v.Num)
err := p.GetPlayerBaseMod().AddStar(p, v.Num)
is_update = true
if err != nil {
return err
@ -700,16 +658,15 @@ func (p *Player) InitPlayerOnly() {
p.timerList = make(map[string]*timer.Timer)
p.MDispatr = timer.NewDispatcher(10)
p.stopSignal = make(chan bool)
p.playerdata = make(map[string]PlayerDataModule)
Base := &PlayerBaseData{PlayerData: NewPlayerData(PLAYER_BASE_DATA, p)}
p.playerdata[PLAYER_BASE_DATA] = Base
Base := &PlayerBaseData{}
// 玩家基础数据
ok := Base.GetDataByUid(p.M_DwUin)
if !ok {
return
}
p.playerdata[PLAYER_BASE_DATA] = Base
p.PlayerBaseMod = Base
p.M_DwUin = Base.Data.DwUin
// 玩家模块数据
@ -724,7 +681,7 @@ func (p *Player) InitPlayerOnly() {
// 获取玩家简单数据
func (p *Player) GetSimpleData(Uid int, simple *PlayerSimpleData) error {
p.M_DwUin = int32(Uid)
p.M_DwUin = int64(Uid)
p.InitPlayerOnly()
Base := p.GetPlayerBaseMod()
simple.Name = p.GetPlayerBaseMod().GetName()

View File

@ -1,12 +1,9 @@
package game
import (
"bytes"
"context"
"database/sql"
"encoding/gob"
"errors"
"server/GoUtil"
"server/MergeConst"
userCfg "server/conf/user"
"server/db"
@ -15,26 +12,14 @@ import (
"server/game/mod/quest"
"server/msg"
"server/pkg/github.com/name5566/leaf/log"
"server/pkg/github.com/name5566/leaf/timer"
telog "server/thinkdata"
"time"
"github.com/robfig/cron/v3"
"google.golang.org/protobuf/proto"
)
type PlayerBaseData struct {
*PlayerData
Data msg.ResPlayerBaseInfo
KeyValueData map[int]string
MLeafTimer *timer.Timer
MTicker *time.Ticker
McronSave *cron.Cron
McronSaveID cron.EntryID
Mdispatr *timer.Dispatcher
DailyRenewTime int32
Update bool
isKeyValueDb bool
}
func (p *PlayerBaseData) GetData() interface{} {
@ -103,9 +88,6 @@ func (p *PlayerBaseData) LoadDataFromDB(UserName interface{}) bool {
log.Debug("get data failed, err:%v\n", err)
return false
}
sqlStr1 := "SELECT * FROM t_player_client_data WHERE dwUin = ?"
sqlStruck1 := db.SqlModStruct{}
db.SqlDb.Get(&sqlStruck1, sqlStr1, sqlStruck.DwUin)
p.Data.Diamond = sqlStruck.Diamond
p.Data.DwUin = sqlStruck.DwUin
@ -127,72 +109,12 @@ func (p *PlayerBaseData) LoadDataFromDB(UserName interface{}) bool {
p.Data.Rolecreatetime = sqlStruck.Rolecreatetime
p.Data.LastChampGroupID = sqlStruck.LastChampGroupID
p.Data.ChampshipsGroupID = sqlStruck.ChampshipsGroupID
p.DailyRenewTime = sqlStruck.DailyRenewTime
p.Data.NoAd = sqlStruck.NoAd
p.Data.FaceBookId = sqlStruck.FaceBookId
p.McronSave = cron.New()
p.Reconnect(false)
p.KeyValueData = make(map[int]string)
if len(sqlStruck1.ModData) > 0 {
var buf bytes.Buffer
buf.Write(sqlStruck1.ModData)
decode := gob.NewDecoder(&buf)
err := decode.Decode(&p.KeyValueData)
if err != nil {
log.Debug("decode failed, err:%v\n", err)
}
}
return true
}
func (p *PlayerBaseData) AddSta() error {
curtime := time.Now().Unix()
delta := curtime - (int64)(p.Data.RecoverTime)
Recover := userCfg.GetRecover(int(p.Data.Level))
Addsta := int(delta) / Recover
if Addsta <= 0 {
return nil
}
if p.GetMaxEnergy() > p.Data.Energy {
p.Data.Energy = p.Data.Energy + int32(Addsta)
if p.Data.Energy > p.GetMaxEnergy() {
p.Data.Energy = p.GetMaxEnergy()
}
p.M_Player.CallEvent(time.Duration(Recover)*time.Second, func() {
p.M_Player.lock.Lock()
defer p.M_Player.lock.Unlock()
p.AddSta()
}, "AddEnergy")
}
p.Data.RecoverTime = int32(curtime)
p.M_Player.SendErrClienRes(p.BackAsset())
return nil
}
func (p *PlayerBaseData) Reconnect(b bool) {
p.AddSta()
if G_GameLogicPtr.DailyTaskTimestamp > (int64)(p.DailyRenewTime) {
p.DailyRenewTime = int32(G_GameLogicPtr.DailyTaskTimestamp)
p.Data.EnergyBuyCount = 0
}
// GoUtil.RegisterEvent(MergeConst.Notify_Daily_Renew, p.Notify_Daily_Renew, p)
}
func (p *PlayerBaseData) Notify_Daily_Renew(param []interface{}) {
p.Data.EnergyBuyCount = 0
p.DailyRenewTime = int32(G_GameLogicPtr.DailyTaskTimestamp)
notify := &msg.NotifyRenewBuyEnergyCnt{}
notify.DwUin = p.M_Player.M_DwUin
notify.CurCnt = 0
agent := p.GetPlayer().GetAgentByPlayer()
data, _ := proto.Marshal(notify)
G_getGameLogic().PackResInfo(agent, "NotifyRenewBuyEnergyCnt", data)
}
func (p *PlayerBaseData) SaveDataFromDB(Key interface{}) bool {
// G_getGameLogic().Mlogger.Debug("SaveDataFromDB:", p.Data.DwUin)
sqlStruck := db.ResPlayerBaseInfo{}
@ -214,29 +136,18 @@ func (p *PlayerBaseData) SaveDataFromDB(Key interface{}) bool {
sqlStruck.LogoutTime = p.Data.LogoutTime
sqlStruck.Todayolinetime = p.Data.Todayolinetime
sqlStruck.Rolecreatetime = p.Data.Rolecreatetime
sqlStruck.DailyRenewTime = p.DailyRenewTime
sqlStruck.NoAd = p.Data.NoAd
sqlStruck.ChampshipsGroupID = p.Data.ChampshipsGroupID
sqlStruck.LastChampGroupID = p.Data.LastChampGroupID
sqlStruck.FaceBookId = p.Data.FaceBookId
db.FormatAllMemUpdateDb(&sqlStruck, "t_player_baseinfo", "dwUin")
// 存储KeyValue
var buf bytes.Buffer
encode := gob.NewEncoder(&buf)
encode.Encode(p.KeyValueData)
// log.Debug("player :%d KeyValueData Save:%v ", p.Data.DwUin, p.KeyValueData)
db.SavePlayerClientData(&db.SqlModStruct{
DwUin: p.Data.DwUin,
ModData: buf.Bytes(),
UpdataTime: int32(GoUtil.Now()),
})
return true
}
func (p *PlayerBaseData) GetMaxEnergyMul() int {
func (p *PlayerBaseData) GetMaxEnergyMul(player *Player) int {
MaxEnergyMul := userCfg.GetEnergyMulByLv(int(p.Data.Level))
if p.M_Player.PlayMod.getLimitedTimeEventMod().CheckExist(limitedTimeEvent.EVENT_TYPE_HIGH_ROLLER) {
if player.PlayMod.getLimitedTimeEventMod().CheckExist(limitedTimeEvent.EVENT_TYPE_HIGH_ROLLER) {
MaxEnergyMul = 10
}
return MaxEnergyMul
@ -265,26 +176,6 @@ func (p *PlayerBaseData) GetMaxEnergy() int32 {
return MaxSta
}
// 定时增加体力
func (p *PlayerBaseData) NotifyAddSta(cnt int, timeStamp int64) {
p.M_Player.lock.Lock()
defer p.M_Player.lock.Unlock()
if p.GetMaxEnergy() <= p.Data.Energy {
return
}
G_getGameLogic().Mlogger.Debug("NotifyAddSta:", p.Data.DwUin)
p.Data.Energy = p.Data.Energy + int32(cnt)
p.Data.RecoverTime = int32(timeStamp)
notify := &msg.NotifyAddEnergy{}
notify.AddCnt = int32(cnt)
notify.DwUin = p.M_Player.M_DwUin
agent := p.GetPlayer().GetAgentByPlayer()
data, _ := proto.Marshal(notify)
G_getGameLogic().PackResInfo(agent, "NotifyAddEnergy", data)
}
// 更新游戏道具
func (p *PlayerBaseData) UpdateBaseItemInfo(update *msg.UpdateBaseItemInfo) {
for k, v := range update.MUpdateItem {
@ -304,7 +195,7 @@ func (p *PlayerBaseData) UpdateBaseItemInfo(update *msg.UpdateBaseItemInfo) {
}
func (p *PlayerBaseData) ReqRemoveAd(buf []byte) {
func (p *PlayerBaseData) ReqRemoveAd(player *Player, buf []byte) {
req := &msg.ReqRemoveAd{}
res := &msg.ResRemoveAd{}
proto.Unmarshal(buf, req)
@ -312,31 +203,18 @@ func (p *PlayerBaseData) ReqRemoveAd(buf []byte) {
p.Data.NoAd = 1
res.ResultCode = 0
agent := p.GetPlayer().GetAgentByPlayer()
agent := player.GetAgentByPlayer()
data, _ := proto.Marshal(res)
G_getGameLogic().PackResInfo(agent, "ResRemoveAd", data)
}
func (p *PlayerBaseData) ResPlayerBaseInfo(player *Player) {
if player != p.M_Player {
return
}
agent := p.GetPlayer().GetAgentByPlayer()
agent := player.GetAgentByPlayer()
data, _ := proto.Marshal(&p.Data)
G_getGameLogic().PackResInfo(agent, "ResPlayerBaseInfo", data)
}
func (p *PlayerBaseData) BackKv() *msg.ResKv {
kv := make(map[int32]string)
for k, v := range p.KeyValueData {
kv[int32(k)] = v
}
return &msg.ResKv{
Kv: kv,
}
}
func (p *PlayerBaseData) ReqBindFacebookAccount(buf []byte) {
func (p *PlayerBaseData) ReqBindFacebookAccount(player *Player, buf []byte) {
req := &msg.ReqBindFacebookAccount{}
res := &msg.ResBindFacebookAccount{}
proto.Unmarshal(buf, req)
@ -360,19 +238,19 @@ func (p *PlayerBaseData) ReqBindFacebookAccount(buf []byte) {
res.ResultCode = 0
p.Data.FaceBookId = req.BindAccountId
res.BindAccountId = req.BindAccountId
p.M_Player.TeLog("platform_connect", map[string]interface{}{
player.TeLog("platform_connect", map[string]interface{}{
"platform_type": "facebook",
"platform_id": req.BindAccountId,
"is_reward": false,
})
}
agent := p.GetPlayer().GetAgentByPlayer()
agent := player.GetAgentByPlayer()
data, _ := proto.Marshal(res)
G_getGameLogic().PackResInfo(agent, "ResBindFacebookAccount", data)
}
func (p *PlayerBaseData) ReqUnBindFacebook(buf []byte) {
func (p *PlayerBaseData) ReqUnBindFacebook(player *Player, buf []byte) {
req := &msg.ReqUnBindFacebook{}
res := &msg.ResUnBindFacebook{}
proto.Unmarshal(buf, req)
@ -381,15 +259,15 @@ func (p *PlayerBaseData) ReqUnBindFacebook(buf []byte) {
res.BindAccountId = req.BindAccountId
p.Data.FaceBookId = ""
agent := p.GetPlayer().GetAgentByPlayer()
agent := player.GetAgentByPlayer()
data, _ := proto.Marshal(res)
G_getGameLogic().PackResInfo(agent, "ResUnBindFacebook", data)
p.M_Player.TeLog("platform_disconnect", map[string]interface{}{
player.TeLog("platform_disconnect", map[string]interface{}{
"platform_type": "facebook",
"platform_id": req.BindAccountId,
})
}
func (p *PlayerBaseData) ReqOnlyBindFacebook(buf []byte) {
func (p *PlayerBaseData) ReqOnlyBindFacebook(player *Player, buf []byte) {
req := &msg.ReqOnlyBindFacebook{}
res := &msg.ResOnlyBindFacebook{}
proto.Unmarshal(buf, req)
@ -430,7 +308,7 @@ func (p *PlayerBaseData) ReqOnlyBindFacebook(buf []byte) {
res.ResultCode = 0
p.Data.FaceBookId = req.BindAccountId
res.BindAccountId = req.BindAccountId
p.M_Player.TeLog("platform_connect", map[string]interface{}{
player.TeLog("platform_connect", map[string]interface{}{
"platform_type": "facebook",
"platform_id": req.BindAccountId,
"is_reward": false,
@ -444,12 +322,12 @@ func (p *PlayerBaseData) ReqOnlyBindFacebook(buf []byte) {
}
agent := p.GetPlayer().GetAgentByPlayer()
agent := player.GetAgentByPlayer()
data, _ := proto.Marshal(res)
G_getGameLogic().PackResInfo(agent, "ResOnlyBindFacebook", data)
}
func (p *PlayerBaseData) ReqSynGameData(buf []byte) {
func (p *PlayerBaseData) ReqSynGameData(player *Player, buf []byte) {
req := &msg.ReqSynGameData{}
res := &msg.ResSynGameData{}
proto.Unmarshal(buf, req)
@ -463,7 +341,7 @@ func (p *PlayerBaseData) ReqSynGameData(buf []byte) {
} else {
isHaveOther = true
}
if sqlStruck.DwUin == p.M_Player.M_DwUin {
if sqlStruck.DwUin == player.M_DwUin {
return
}
OldPlayer := G_GameLogicPtr.GetPlayer(sqlStruck.DwUin)
@ -534,43 +412,32 @@ func (p *PlayerBaseData) ReqSynGameData(buf []byte) {
}
agent := p.GetPlayer().GetAgentByPlayer()
agent := player.GetAgentByPlayer()
data, _ := proto.Marshal(res)
G_getGameLogic().PackResInfo(agent, "ResSynGameData", data)
}
func (p *PlayerBaseData) ClearData() bool {
p.Data.LogoutTime = int32(time.Now().Unix())
GoUtil.RemoveEvent(MergeConst.Notify_Daily_Renew, p.Notify_Daily_Renew, p)
p.McronSave.Remove(p.McronSaveID)
p.McronSave.Stop()
if p.MLeafTimer != nil {
p.MLeafTimer.Stop()
p.MLeafTimer = nil
}
if p.MTicker != nil {
p.MTicker.Stop()
p.MTicker = nil
}
p.SaveDataFromDB("")
return true
}
// 增加减少体力
func (p *PlayerBaseData) AddEnergy(cnt int) error {
func (p *PlayerBaseData) AddEnergy(player *Player, cnt int) error {
NewEnergy := p.Data.Energy + int32(cnt)
if NewEnergy < 0 {
return errors.New("能量不足")
}
if cnt < 0 {
p.M_Player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_ENERGY, A: []interface{}{-cnt}})
player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_ENERGY, A: []interface{}{-cnt}})
}
if p.Data.Energy >= p.GetMaxEnergy() && NewEnergy < p.GetMaxEnergy() {
Recover := userCfg.GetRecover(int(p.Data.Level))
p.M_Player.CallEvent(time.Duration(Recover)*time.Second, func() {
p.M_Player.lock.Lock()
defer p.M_Player.lock.Unlock()
p.AddSta()
player.CallEvent(time.Duration(Recover)*time.Second, func() {
player.lock.Lock()
defer player.lock.Unlock()
LimitedTimeEnergyAdd(player)
}, "AddEnergy")
p.Data.RecoverTime = int32(time.Now().Unix())
}
@ -579,13 +446,13 @@ func (p *PlayerBaseData) AddEnergy(cnt int) error {
}
// 增加减少星星
func (p *PlayerBaseData) AddStar(cnt int) error {
func (p *PlayerBaseData) AddStar(player *Player, cnt int) error {
NewStar := p.Data.Star + int32(cnt)
if NewStar < 0 {
return errors.New("星星不足")
}
p.Data.Star = NewStar
p.M_Player.UpdateUserInfo()
player.UpdateUserInfo()
return nil
}
@ -600,7 +467,7 @@ func (p *PlayerBaseData) AddDiamond(cnt int) error {
}
// 增加经验
func (p *PlayerBaseData) AddExp(exp int) (int, error) {
func (p *PlayerBaseData) AddExp(player *Player, exp int) (int, error) {
p.Data.Exp += int32(exp)
upLv := 0
upExp := userCfg.GetLevUpExp(int(p.Data.Level))
@ -615,26 +482,26 @@ func (p *PlayerBaseData) AddExp(exp int) (int, error) {
p.Data.Exp -= int32(upExp)
upExp = userCfg.GetLevUpExp(int(p.Data.Level))
// 日常任务解锁
DailyTaskMod := p.M_Player.PlayMod.getDailyTaskMod()
DecorateMod := p.M_Player.PlayMod.getDecorateMod()
DailyTaskMod := player.PlayMod.getDailyTaskMod()
DecorateMod := player.PlayMod.getDecorateMod()
if DailyTaskMod.LevUpTrigger(int(p.Data.Level), DecorateMod.GetAreaId()) {
p.M_Player.PushClientRes(DailyTaskMod.BackData())
player.PushClientRes(DailyTaskMod.BackData())
}
upLv = int(p.Data.Level)
Items := userCfg.GetLevUpReward(upLv)
UpLevelItem = item.Merge(UpLevelItem, Items)
// 棋盘背包解锁
p.M_Player.PushClientRes(p.BackAsset())
ChessMod := p.M_Player.PlayMod.getChessMod()
player.PushClientRes(p.BackAsset())
ChessMod := player.PlayMod.getChessMod()
if ChessMod.TriggerChessBagUnlock(int(p.Data.Level)) {
p.M_Player.PushClientRes(ChessMod.BackData())
player.PushClientRes(ChessMod.BackData())
}
ChargeMod := p.M_Player.PlayMod.getChargeMod()
ChargeMod := player.PlayMod.getChargeMod()
ChargeMod.TriggerChargeUnlock(int(p.Data.Level), ChessMod.GetEmitList())
p.M_Player.PushClientRes(ChargeMod.BackData())
player.PushClientRes(ChargeMod.BackData())
// 重载活动
p.M_Player.initAcitivity()
player.initAcitivity()
telog.Te.Track(p.Data.UserName, p.Data.UserName, "level_up", map[string]interface{}{
"after_level": p.Data.Level,
})
@ -644,12 +511,12 @@ func (p *PlayerBaseData) AddExp(exp int) (int, error) {
})
}
if len(UpLevelItem) > 0 {
err := p.M_Player.HandleItem(UpLevelItem, msg.ITEM_POP_LABEL_LevUpReward.String())
err := player.HandleItem(UpLevelItem, msg.ITEM_POP_LABEL_LevUpReward.String())
if err != nil {
return 0, err
}
}
p.M_Player.PushClientRes(p.BackAsset())
player.PushClientRes(p.BackAsset())
return upLv, nil
}
@ -732,18 +599,7 @@ func (p *PlayerBaseData) GetDataByUid(Uid interface{}) bool {
p.Data.Rolecreatetime = sqlStruck.Rolecreatetime
p.Data.LastChampGroupID = sqlStruck.LastChampGroupID
p.Data.ChampshipsGroupID = sqlStruck.ChampshipsGroupID
p.DailyRenewTime = sqlStruck.DailyRenewTime
p.Data.NoAd = sqlStruck.NoAd
p.Data.FaceBookId = sqlStruck.FaceBookId
p.McronSave = cron.New()
p.Reconnect(false)
return true
}
func (p *PlayerBaseData) SetKv(Key int, Value string) error {
if p.KeyValueData == nil {
p.KeyValueData = make(map[int]string)
}
p.KeyValueData[Key] = Value
return nil
}

View File

@ -15,7 +15,6 @@ import (
)
type PlayerChessData struct {
*PlayerData
Data msg.ResPlayerChessData
ColorData msg.ResChessColorData
}
@ -35,12 +34,9 @@ func (p *PlayerChessData) SaveDataFromDB(Key interface{}) bool {
}
func (p *PlayerChessData) ResPlayerChessData(player *Player) {
if player != p.M_Player {
return
}
agent := p.GetPlayer().GetAgentByPlayer()
agent := player.GetAgentByPlayer()
Msg := &p.Data
ChessMod := p.M_Player.PlayMod.getChessMod()
ChessMod := player.PlayMod.getChessMod()
Msg.ChessList = ChessMod.BackData().ChessList
Msg.MChessData = ChessMod.ChessMap
data, _ := proto.Marshal(Msg)
@ -48,66 +44,63 @@ func (p *PlayerChessData) ResPlayerChessData(player *Player) {
}
func (p *PlayerChessData) ResChessColorData(player *Player) {
if player != p.M_Player {
return
}
agent := p.GetPlayer().GetAgentByPlayer()
agent := player.GetAgentByPlayer()
data, _ := proto.Marshal(&p.ColorData)
G_getGameLogic().PackResInfo(agent, "ResChessColorData", data)
}
// 同步棋盘数据
func (p *PlayerChessData) UpdatePlayerChessData(buf []byte) error {
func (p *PlayerChessData) UpdatePlayerChessData(player *Player, buf []byte) error {
update := &msg.UpdatePlayerChessData{}
proto.Unmarshal(buf, update)
err := p.HandleChess(update.MChessHandle)
err := p.HandleChess(player, update.MChessHandle)
if err != nil {
res := &msg.ResUpdatePlayerChessData{
Code: msg.RES_CODE_FAIL,
Msg: err.Error(),
}
p.M_Player.SendErrClienRes(res)
player.SendErrClienRes(res)
return err
}
p.M_Player.PushClientRes(&msg.ResUpdatePlayerChessData{
player.PushClientRes(&msg.ResUpdatePlayerChessData{
Code: msg.RES_CODE_SUCCESS,
})
p.Data.MChessData = update.MChessData
if !p.checkChessEqual() {
if !p.checkChessEqual(player) {
res := &msg.ResUpdatePlayerChessData{
Code: msg.RES_CODE_FAIL,
Msg: "棋子数据不一致",
}
log.Debug("棋子数据不一致, %v---%v", p.Data.MChessData, p.M_Player.PlayMod.getChessMod().GetChessList())
p.M_Player.SendErrClienRes(res)
log.Debug("棋子数据不一致, %v---%v", p.Data.MChessData, player.PlayMod.getChessMod().GetChessList())
player.SendErrClienRes(res)
return fmt.Errorf("棋子数据不一致")
}
p.M_Player.PlayMod.getChessMod().ChessMap = update.MChessData
player.PlayMod.getChessMod().ChessMap = update.MChessData
return nil
}
func (p *PlayerChessData) UpdateChessData(MChessData map[string]int32) error {
func (p *PlayerChessData) UpdateChessData(player *Player, MChessData map[string]int32) error {
p.Data.MChessData = MChessData
if !p.checkChessEqual() {
if !p.checkChessEqual(player) {
res := &msg.ResUpdatePlayerChessData{
Code: msg.RES_CODE_FAIL,
Msg: "棋子数据不一致",
}
log.Debug("棋子数据不一致, %v---%v", p.Data.MChessData, p.M_Player.PlayMod.getChessMod().GetChessList())
p.M_Player.SendErrClienRes(res)
log.Debug("棋子数据不一致, %v---%v", p.Data.MChessData, player.PlayMod.getChessMod().GetChessList())
player.SendErrClienRes(res)
return fmt.Errorf("棋子数据不一致")
}
p.M_Player.PlayMod.getChessMod().ChessMap = MChessData
player.PlayMod.getChessMod().ChessMap = MChessData
return nil
}
// 检查棋子数据是否一致
func (p *PlayerChessData) checkChessEqual() bool {
func (p *PlayerChessData) checkChessEqual(player *Player) bool {
if len(p.Data.MChessData) == 0 {
return true
}
ChessList := p.M_Player.PlayMod.getChessMod().GetChessList()
ChessList := player.PlayMod.getChessMod().GetChessList()
if len(ChessList) != len(p.Data.MChessData) {
return false
}
@ -124,12 +117,12 @@ func (p *PlayerChessData) checkChessEqual() bool {
}
// 棋子操作
func (p *PlayerChessData) HandleChess(handle_list []*msg.ChessHandle) error {
func (p *PlayerChessData) HandleChess(player *Player, handle_list []*msg.ChessHandle) error {
sort.Slice(handle_list, func(i, j int) bool {
return handle_list[i].Id < handle_list[j].Id
})
ChessMod := p.M_Player.PlayMod.getChessMod()
HandbookMod := p.M_Player.PlayMod.getHandbookMod()
ChessMod := player.PlayMod.getChessMod()
HandbookMod := player.PlayMod.getHandbookMod()
var addChessCostEnergy int
var buyChess int
TriggerList := make([]*quest.Trigger, 0)
@ -152,19 +145,19 @@ func (p *PlayerChessData) HandleChess(handle_list []*msg.ChessHandle) error {
b := HandbookMod.SetHandbook(ChessId) // 添加图鉴
if b {
p.M_Player.TeLog("collection_add", map[string]interface{}{
player.TeLog("collection_add", map[string]interface{}{
"item_id": ChessId,
"item_name": mergeDataCfg.GetNameById(ChessId),
})
AddNewEmit = append(AddNewEmit, ChessId)
}
p.M_Player.PushClientRes(HandbookMod.BackData())
player.PushClientRes(HandbookMod.BackData())
case msg.HANDLE_TYPE_COMPOSE: //合成棋子
NewChessId, err := ChessMod.ComposeChess(ChessId)
if err != nil {
return err
}
HandbookMod := p.M_Player.PlayMod.getHandbookMod() // 添加图鉴
HandbookMod := player.PlayMod.getHandbookMod() // 添加图鉴
b := HandbookMod.SetHandbook(NewChessId)
if b {
AddNewEmit = append(AddNewEmit, NewChessId)
@ -173,9 +166,9 @@ func (p *PlayerChessData) HandleChess(handle_list []*msg.ChessHandle) error {
NewChessIdLv := mergeDataCfg.GetLvById(NewChessId)
TriggerList = append(TriggerList, &quest.Trigger{Label: quest.TRIGGER_LABEL_MERGELVTIME, A: []interface{}{NewChessIdLv}})
TriggerList = append(TriggerList, &quest.Trigger{Label: quest.TRIGGER_LABEL_MERGETIME})
p.M_Player.PushClientRes(HandbookMod.BackData())
player.PushClientRes(HandbookMod.BackData())
// 获取活动道具
ActItem := GetActivityItem(p.M_Player, GoUtil.Int32ToInt(v.ActType))
ActItem := GetActivityItem(player, GoUtil.Int32ToInt(v.ActType))
itemList = item.Merge(itemList, ActItem)
case msg.HANDLE_TYPE_BUY: //购买棋子
loseGold, err := ChessMod.BuyChess(ChessId)
@ -189,7 +182,7 @@ func (p *PlayerChessData) HandleChess(handle_list []*msg.ChessHandle) error {
if err != nil {
return err
}
p.M_Player.TeLog("sell_item", map[string]interface{}{
player.TeLog("sell_item", map[string]interface{}{
"merge_item_id": ChessId,
"get_star_num": items[0].Num,
})
@ -202,23 +195,23 @@ func (p *PlayerChessData) HandleChess(handle_list []*msg.ChessHandle) error {
//扣除体力
if addChessCostEnergy > 0 {
EnergyPow := p.M_Player.PlayMod.getBaseMod().GetEnergyMul()
EnergyPow := player.PlayMod.getBaseMod().GetEnergyMul()
ReduceEneny := int(math.Pow(2, float64(EnergyPow))) * addChessCostEnergy
itemList = append(itemList, &item.Item{Id: item.ITEM_ENERGY_ID, Num: -ReduceEneny})
}
err := p.M_Player.HandleItem(itemList, msg.ITEM_POP_LABEL_HandleChess.String())
err := player.HandleItem(itemList, msg.ITEM_POP_LABEL_HandleChess.String())
if err != nil {
return err
}
OrderMod := p.M_Player.PlayMod.getOrderMod()
OrderMod := player.PlayMod.getOrderMod()
Update := OrderMod.CreateExtraOrder(AddChessList, AddNewEmit, ChessMod.GetChessList())
if Update {
p.M_Player.PushClientRes(OrderMod.BackData())
player.PushClientRes(OrderMod.BackData())
}
p.M_Player.QuestTriggerList(TriggerList)
EmitRetireTrigger1(p.M_Player)
p.M_Player.PushClientRes(ChessMod.BackData())
p.M_Player.PlayMod.save()
player.QuestTriggerList(TriggerList)
EmitRetireTrigger1(player)
player.PushClientRes(ChessMod.BackData())
player.PlayMod.save()
return nil
}

View File

@ -423,7 +423,7 @@ func BackUserInfo(p *Player) {
DecorateMod := p.PlayMod.getDecorateMod()
PlayerBaseMod := p.GetPlayerBaseMod()
p.PushClientRes(&proto.UserInfo{
Uid: int32(p.M_DwUin),
Uid: p.M_DwUin,
Nickname: BaseMod.NickName,
Avatar: int32(AvatarMod.SetId),
Face: int32(FaceMod.SetId),
@ -459,7 +459,7 @@ func GetCardInfoMsg(CardInfo *card.CardInfo) *proto.ResFriendCard {
ps := G_GameLogicPtr.GetSimplePlayerByUid(Uid)
return &proto.ResFriendCard{
Uid: int32(Uid),
Uid: int64(Uid),
Name: ps.Name,
Face: int32(ps.Face),
Avatar: int32(ps.Avatar),
@ -512,7 +512,7 @@ func PlayroomBackData(p *Player) {
}
if !FriendMod.CheckFriend(k) {
Opponent = append(Opponent, &proto.RoomOpponent{
Uid: int32(k),
Uid: int64(k),
Name: ps.Name,
Face: int32(ps.Face),
Avatar: int32(ps.Avatar),
@ -528,7 +528,7 @@ func PlayroomBackData(p *Player) {
}
Times, _ := PlayroomMod.GetVisitorInfo(v)
FriendList = append(FriendList, &proto.FriendRoom{
Uid: int32(v),
Uid: int64(v),
Name: ps.Name,
Face: int32(ps.Face),
Avatar: int32(ps.Avatar),
@ -565,7 +565,7 @@ func PlayroomVisit(p *Player, Uid int) {
if PlayerData.WorkStart > 0 && PlayerData.WorkStart+86400 > Now {
Work = true
}
r.Uid = int32(Uid)
r.Uid = int64(Uid)
r.Name = PlayerData.Name
r.Face = int32(PlayerData.Face)
r.Avatar = int32(PlayerData.Avatar)

View File

@ -76,13 +76,13 @@ type PlayerModList struct {
func (p *PlayerModData) LoadDataFromDB(dwUin interface{}) bool {
sqlStr := "SELECT * FROM t_player_mod WHERE dwUin = ?"
p.Data = db.SqlModStruct{}
if err := db.SqlDb.Get(&p.Data, sqlStr, dwUin.(int32)); err != nil {
if err := db.SqlDb.Get(&p.Data, sqlStr, dwUin.(int64)); err != nil {
p.IsHaveDataDb = false
} else {
p.IsHaveDataDb = true
}
p.Data.DwUin = dwUin.(int32)
p.Data.DwUin = dwUin.(int64)
return true
}

View File

@ -35,15 +35,7 @@ func ReqPlayerBaseInfofunction(args []interface{}) error {
_, player, buf := ParseArgs(args)
detail := &msg.ReqPlayerBaseInfo{}
proto.Unmarshal(buf, detail)
if player.GetGameData("PlayerBaseData") == nil {
data := &PlayerBaseData{PlayerData: NewPlayerData("PlayerBaseData", player)}
ok := data.LoadDataFromDB(player.M_DwUin)
if ok {
player.playerdata["PlayerBaseData"] = data
}
}
player.GetIFGameData("PlayerBaseData").(*PlayerBaseData).ResPlayerBaseInfo(player)
player.PlayerBaseMod.ResPlayerBaseInfo(player)
return nil
}
@ -67,7 +59,7 @@ func ReqPlayerBriefProfileDataFunc(args []interface{}) error {
// 移除广告
func ReqRemoveAdFunc(args []interface{}) error {
_, player, buf := ParseArgs(args)
player.GetIFGameData("PlayerBaseData").(*PlayerBaseData).ReqRemoveAd(buf)
player.PlayerBaseMod.ReqRemoveAd(player, buf)
return nil
}
@ -76,7 +68,7 @@ func UpdateBaseItemInfofunction(args []interface{}) error {
_, player, buf := ParseArgs(args)
detail := &msg.UpdateBaseItemInfo{}
proto.Unmarshal(buf, detail)
player.GetIFGameData("PlayerBaseData").(*PlayerBaseData).UpdateBaseItemInfo(detail)
player.PlayerBaseMod.UpdateBaseItemInfo(detail)
return nil
}
@ -85,71 +77,33 @@ func ReqPlayerChessDataFunc(args []interface{}) error {
_, player, buf := ParseArgs(args)
detail := &msg.ReqPlayerChessData{}
proto.Unmarshal(buf, detail)
if player.GetGameData("PlayerChessData") == nil {
data := &PlayerChessData{PlayerData: NewPlayerData("PlayerChessData", player)}
ok := data.LoadDataFromDB(player.M_DwUin)
if ok {
player.playerdata["PlayerChessData"] = data
}
}
player.GetIFGameData("PlayerChessData").(*PlayerChessData).ResPlayerChessData(player)
playerChessData := &PlayerChessData{}
playerChessData.ResPlayerChessData(player)
return nil
}
func ReqBindFacebookAccount(args []interface{}) error {
_, player, buf := ParseArgs(args)
if player.GetGameData("PlayerBaseData") == nil {
data := &PlayerBaseData{PlayerData: NewPlayerData("PlayerBaseData", player)}
ok := data.LoadDataFromDB(player.M_DwUin)
if ok {
player.playerdata["PlayerBaseData"] = data
}
}
player.GetIFGameData("PlayerBaseData").(*PlayerBaseData).ReqBindFacebookAccount(buf)
player.PlayerBaseMod.ReqBindFacebookAccount(player, buf)
return nil
}
func ReqUnBindFacebook(args []interface{}) error {
_, player, buf := ParseArgs(args)
if player.GetGameData("PlayerBaseData") == nil {
data := &PlayerBaseData{PlayerData: NewPlayerData("PlayerBaseData", player)}
ok := data.LoadDataFromDB(player.M_DwUin)
if ok {
player.playerdata["PlayerBaseData"] = data
}
}
player.GetIFGameData("PlayerBaseData").(*PlayerBaseData).ReqUnBindFacebook(buf)
player.PlayerBaseMod.ReqUnBindFacebook(player, buf)
return nil
}
func ReqOnlyBindFacebook(args []interface{}) error {
_, player, buf := ParseArgs(args)
if player.GetGameData("PlayerBaseData") == nil {
data := &PlayerBaseData{PlayerData: NewPlayerData("PlayerBaseData", player)}
ok := data.LoadDataFromDB(player.M_DwUin)
if ok {
player.playerdata["PlayerBaseData"] = data
}
}
player.GetIFGameData("PlayerBaseData").(*PlayerBaseData).ReqOnlyBindFacebook(buf)
player.PlayerBaseMod.ReqOnlyBindFacebook(player, buf)
return nil
}
func ReqSynGameData(args []interface{}) error {
_, player, buf := ParseArgs(args)
if player.GetGameData("PlayerBaseData") == nil {
data := &PlayerBaseData{PlayerData: NewPlayerData("PlayerBaseData", player)}
ok := data.LoadDataFromDB(player.M_DwUin)
if ok {
player.playerdata["PlayerBaseData"] = data
}
}
player.GetIFGameData("PlayerBaseData").(*PlayerBaseData).ReqSynGameData(buf)
player.PlayerBaseMod.ReqSynGameData(player, buf)
return nil
}
@ -157,7 +111,7 @@ func RegSetEneryFunc(args []interface{}) error {
_, player, buf := ParseArgs(args)
req := &msg.ReqSetEnergyMul{}
proto.Unmarshal(buf, req)
MaxEnergyMul := player.GetPlayerBaseMod().GetMaxEnergyMul()
MaxEnergyMul := player.GetPlayerBaseMod().GetMaxEnergyMul(player)
if int(req.EnergyMul) > MaxEnergyMul {
player.SendErrClienRes(&msg.ResSetEnergyMul{
ResultCode: msg.RES_CODE_FAIL,
@ -286,8 +240,8 @@ func ReqRewardOrder(args []interface{}) error {
})
return err
}
data := player.GetIFGameData("PlayerChessData")
err = data.(*PlayerChessData).UpdateChessData(req.MChessData)
data := &PlayerChessData{}
err = data.UpdateChessData(player, req.MChessData)
if err != nil {
player.SendErrClienRes(&msg.ResGetChessFromBuff{
Code: msg.RES_CODE_FAIL,
@ -378,7 +332,7 @@ func ReqDecorate(args []interface{}) error {
return err
}
_, err = player.GetPlayerBaseMod().AddExp(10)
_, err = player.GetPlayerBaseMod().AddExp(player, 10)
if err != nil {
player.SendErrClienRes(&msg.ResDecorate{
Code: msg.RES_CODE_FAIL,
@ -439,7 +393,7 @@ func ReqDecorateAll(args []interface{}) error {
return err
}
_, err = player.GetPlayerBaseMod().AddExp(10 * DecorateNum)
_, err = player.GetPlayerBaseMod().AddExp(player, 10*DecorateNum)
if err != nil {
player.SendErrClienRes(&msg.ResDecorateAll{
Code: msg.RES_CODE_FAIL,
@ -467,8 +421,8 @@ func ReqDecorateAll(args []interface{}) error {
// 更新棋盘信息
func UpdatePlayerChessDataFunc(args []interface{}) error {
_, player, buf := ParseArgs(args)
data := player.GetIFGameData("PlayerChessData")
err := data.(*PlayerChessData).UpdatePlayerChessData(buf)
data := &PlayerChessData{}
err := data.UpdatePlayerChessData(player, buf)
RedBackData(player)
player.UpdateUserInfo()
return err
@ -497,8 +451,8 @@ func ReqGetChessFromBuff(args []interface{}) error {
})
return err
}
data := player.GetIFGameData("PlayerChessData")
err = data.(*PlayerChessData).UpdateChessData(req.MChessData)
data := &PlayerChessData{}
err = data.UpdateChessData(player, req.MChessData)
if err != nil {
player.SendErrClienRes(&msg.ResGetChessFromBuff{
Code: msg.RES_CODE_FAIL,
@ -534,8 +488,8 @@ func ReqPutChessInBag(args []interface{}) error {
})
return err
}
data := player.GetIFGameData("PlayerChessData")
err = data.(*PlayerChessData).UpdateChessData(req.MChessData)
data := &PlayerChessData{}
err = data.UpdateChessData(player, req.MChessData)
if err != nil {
player.SendErrClienRes(&msg.ResPutChessInBag{
Code: msg.RES_CODE_FAIL,
@ -565,8 +519,8 @@ func ReqTakeChessOutBag(args []interface{}) error {
})
return err
}
data := player.GetIFGameData("PlayerChessData")
err = data.(*PlayerChessData).UpdateChessData(req.MChessData)
data := &PlayerChessData{}
err = data.UpdateChessData(player, req.MChessData)
if err != nil {
player.SendErrClienRes(&msg.ResTakeChessOutBag{
Code: msg.RES_CODE_FAIL,
@ -650,8 +604,8 @@ func ReqChessEx(args []interface{}) error {
}
HandbookMod := player.PlayMod.getHandbookMod()
HandbookMod.SetHandbook(int(req.NewChessId))
data := player.GetIFGameData("PlayerChessData")
err = data.(*PlayerChessData).UpdateChessData(req.MChessData)
data := &PlayerChessData{}
err = data.UpdateChessData(player, req.MChessData)
if err != nil {
player.SendErrClienRes(&msg.ResChessEx{
Code: msg.RES_CODE_FAIL,
@ -1983,8 +1937,8 @@ func ReqBuyChessShop2(args []interface{}) error {
})
return err
}
data := player.GetIFGameData("PlayerChessData")
err = data.(*PlayerChessData).UpdateChessData(req.MChessData)
data := &PlayerChessData{}
err = data.UpdateChessData(player, req.MChessData)
if err != nil {
player.SendErrClienRes(&msg.ResBuyChessShop2{
Code: msg.RES_CODE_FAIL,
@ -3134,8 +3088,8 @@ func ReqPlayroomOutline(args []interface{}) error {
}
HandbookMod := player.PlayMod.getHandbookMod()
HandbookMod.SetHandbook(int(req.NewChessId))
data := player.GetIFGameData("PlayerChessData")
err = data.(*PlayerChessData).UpdateChessData(req.MChessData)
data := &PlayerChessData{}
err = data.UpdateChessData(player, req.MChessData)
if err != nil {
player.SendErrClienRes(&msg.ResPlayroomOutline{
Code: msg.RES_CODE_FAIL,

View File

@ -142,6 +142,9 @@ func (s *ServerMod) SaveData() {
ctx := context.Background()
txOptions := &sql.TxOptions{}
tx, err := db.SqlDb.BeginTx(ctx, txOptions)
if err != nil {
log.Debug("SaveData sql begin tx failed,Mod Key: %s err:%v", s.key, err)
}
err = db.SaveServerData(&DbData)
if err != nil {
tx.Rollback()

View File

@ -71,7 +71,7 @@ func UnitDecorate(p *Player) error {
PlayerBaseMod := p.GetPlayerBaseMod()
PlayerBaseMod.Data.Level = 6
PlayerBaseMod.Data.Exp = 50
PlayerBaseMod.AddExp(100)
PlayerBaseMod.AddExp(p, 100)
return nil
}

View File

@ -2,6 +2,7 @@ package game
import (
"encoding/json"
"server/GoUtil"
"server/msg"
"server/pkg/github.com/name5566/leaf/gate"
"server/pkg/github.com/name5566/leaf/log"
@ -33,6 +34,7 @@ func AdminPlayerInfo(args []interface{}) error {
player = new(Player)
player.M_DwUin = req.Uid
player.InitPlayerOnly()
player.ZeroUpdate(nil)
}
res := make(map[string]interface{})
res["Name"] = player.PlayMod.getBaseMod().NickName
@ -45,6 +47,21 @@ func AdminPlayerInfo(args []interface{}) error {
res["Diamond"] = player.GetPlayerBaseMod().GetDiamond()
res["Mac"] = player.GetPlayerBaseMod().GetName()
res["Login"] = player.GetPlayerBaseMod().Data.LoginTime
res["Cumulative"] = player.PlayMod.getBaseMod().Cumulative
res["TodayCumulative"] = player.PlayMod.getBaseMod().TodayCumulative
OrderMap := make(map[int]interface{})
Index := 0
for k, v := range player.PlayMod.getOrderMod().OrderList {
OrderMap[Index] = map[string]interface{}{
"Id": k,
"Type": v.Type,
"Time": v.Timestamp,
"ChessId": GoUtil.IntSliceToString(v.MergeId),
"Diff": v.Diff,
}
Index++
}
res["Order"] = OrderMap
JsonBuff, err := json.Marshal(res)
if err != nil {
return err

View File

@ -45,7 +45,7 @@ func HandleAdminReq(args []interface{}) {
// 消息的发送者
a := args[1].(gate.Agent)
buf := m.GetInfo()
log.Debug("admin 消息Func : %s", m.GetFunc())
// log.Debug("admin 消息Func : %s", m.GetFunc())
AdminProcess(m.GetFunc(), []interface{}{a, buf})
}
@ -57,7 +57,7 @@ func HandleClientReq(args []interface{}) {
// 消息的发送者
a := args[1].(gate.Agent)
buf := m.GetInfo()
log.Debug("消息Func : %s", m.GetFunc())
// log.Debug("消息Func : %s", m.GetFunc())
switch m.GetFunc() {
case "ClientTick":
case "ReqAdminInfo":

View File

@ -79,7 +79,7 @@ func (f *FriendTreasureMod) EndGame() ([]*item.Item, int, error) {
}
f.Star = 0
f.Shift = 0
f.Status = 0
f.Status = 2
f.Num = 0
return Reward, FriendItemNum, nil
}

File diff suppressed because it is too large Load Diff