gamedata空指针

This commit is contained in:
sk 2024-11-09 14:09:39 +08:00
parent 14f8211ea1
commit a9d67662b3
4 changed files with 24 additions and 9 deletions

View File

@ -1,6 +1,8 @@
package main package main
import ( import (
"fmt"
"strings"
"time" "time"
"mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/logger"
@ -13,7 +15,7 @@ type SaveTaskHandler interface {
var SaverSliceNumber = 600 var SaverSliceNumber = 600
var DbSaver_Inst = &DbSaver{ var DbSaveInst = &DbSaver{
Tick: int32(SaverSliceNumber), Tick: int32(SaverSliceNumber),
index: 0, index: 0,
init: false, init: false,
@ -31,6 +33,18 @@ type DbSaver struct {
pool map[SaveTaskHandler]*SaverArray pool map[SaveTaskHandler]*SaverArray
} }
func (this *DbSaver) String() string {
buf := strings.Builder{}
buf.WriteString("DbSaver:\n")
buf.WriteString(fmt.Sprintf("Tick: %v\n", this.Tick))
buf.WriteString(fmt.Sprintf("List: %v\n", len(this.list)))
buf.WriteString(fmt.Sprintf("Queue: %v\n", len(this.queue)))
for k, v := range this.queue {
buf.WriteString(fmt.Sprintf("q%v: %v\n", k, len(v.queue)))
}
return buf.String()
}
// pushBalanceSaverArray 向队列中添加SaveTaskHandler // pushBalanceSaverArray 向队列中添加SaveTaskHandler
func (this *DbSaver) pushBalanceSaverArray(sth SaveTaskHandler) { func (this *DbSaver) pushBalanceSaverArray(sth SaveTaskHandler) {
if sth == nil { if sth == nil {
@ -64,8 +78,8 @@ func (this *DbSaver) RegisterDbSaverTask(i interface{}) {
} }
} }
// UnregisteDbSaveTask 从队列中移除SaveTaskHandler // UnregisterDbSaveTask 从队列中移除SaveTaskHandler
func (this *DbSaver) UnregisteDbSaveTask(i interface{}) { func (this *DbSaver) UnregisterDbSaveTask(i interface{}) {
if sth, ok := i.(SaveTaskHandler); ok { if sth, ok := i.(SaveTaskHandler); ok {
if arr, exist := this.pool[sth]; exist { if arr, exist := this.pool[sth]; exist {
delete(this.pool, sth) delete(this.pool, sth)
@ -144,5 +158,5 @@ func (this *DbSaver) Shutdown() {
// 注册模块 // 注册模块
func init() { func init() {
module.RegisteModule(DbSaver_Inst, time.Second, 0) module.RegisteModule(DbSaveInst, time.Second, 0)
} }

View File

@ -1379,7 +1379,7 @@ func (this *Player) OnLogouted() {
// 更新数据库 // 更新数据库
logger.Logger.Tracef("###%v unmount from DBSaver[DelPlayer]", this.Name) logger.Logger.Tracef("###%v unmount from DBSaver[DelPlayer]", this.Name)
DbSaver_Inst.UnregisteDbSaveTask(this) DbSaveInst.UnregisterDbSaveTask(this)
this.Save(true) this.Save(true)
} }
@ -1418,7 +1418,8 @@ func (this *Player) UnmarshalData(data []byte, scene *Scene) {
// PlayerInfo 同步 // PlayerInfo 同步
info := PlayerInfoMgrSingle.Players[this.SnId] info := PlayerInfoMgrSingle.Players[this.SnId]
if info == nil { if info == nil {
PlayerInfoMgrSingle.Players[this.SnId] = &PlayerInfo{} info = &PlayerInfo{}
PlayerInfoMgrSingle.Players[this.SnId] = info
} }
info.GameData = pd.GameData info.GameData = pd.GameData

View File

@ -207,7 +207,7 @@ func (c *PlayerCacheMgr) Update() {
c.DbSaver.Update() c.DbSaver.Update()
for _, p := range c.playerWaitClr { for _, p := range c.playerWaitClr {
delete(c.playerMap, p.SnId) delete(c.playerMap, p.SnId)
c.UnregisteDbSaveTask(p) c.UnregisterDbSaveTask(p)
// 释放玩家数据 // 释放玩家数据
if PlayerMgrSington.GetPlayerBySnId(p.SnId) == nil { if PlayerMgrSington.GetPlayerBySnId(p.SnId) == nil {

View File

@ -144,9 +144,9 @@ func (this *PlayerMgr) AddPlayer(sid int64, playerInfo *model.PlayerData, s *net
logger.Logger.Tracef("###%v mount to DBSaver[AddPlayer]", player.Name) logger.Logger.Tracef("###%v mount to DBSaver[AddPlayer]", player.Name)
if oldp != nil { //删除旧的玩家 if oldp != nil { //删除旧的玩家
DbSaver_Inst.UnregisteDbSaveTask(oldp) DbSaveInst.UnregisterDbSaveTask(oldp)
} }
DbSaver_Inst.RegisterDbSaverTask(player) DbSaveInst.RegisterDbSaverTask(player)
niceIdMgr.NiceIdCheck(player.SnId) niceIdMgr.NiceIdCheck(player.SnId)
} else { } else {
player.NiceId = niceIdMgr.PopNiceId(player.SnId) player.NiceId = niceIdMgr.PopNiceId(player.SnId)