message 信息修复

This commit is contained in:
hahwu 2026-03-11 17:08:00 +08:00
parent e4ed9d57e9
commit 54db6ea9d8
2 changed files with 34 additions and 27 deletions

View File

@ -100,35 +100,42 @@ func (m *MessageMgr) MessageMgrInit() {
m.NodeRegister()
m.CenterRegister()
FixBug()
log.Debug("MessageMgr initialized successfully")
}
func FixBug() {
// messageMgrData := getMessageData()
// // 先更新 PlayerList需要加锁
// messageMgrData.mu.Lock()
// defer messageMgrData.mu.Unlock()
// now := GoUtil.Now()
// for k, v := range messageMgrData.MessageList {
// if k < 100000 {
// delete(messageMgrData.MessageList, k)
// continue
// }
// isLose := CheckPlayerLose(int(k))
// // 反向遍历以安全删除元素
// for i := len(v.Messages) - 1; i >= 0; i-- {
// if v.Messages[i].Type == msg.HANDLE_TYPE_CHAMPSHIP_NOTIFY || (v.Messages[i].End != 0 && v.Messages[i].End < now) {
// // 删除消息
// v.Messages = append(v.Messages[:i], v.Messages[i+1:]...)
// }
// if isLose && v.Messages[i].Type == msg.HANDLE_TYPE_CHAMPSHIP_RESULT {
// // 删除消息
// v.Messages = append(v.Messages[:i], v.Messages[i+1:]...)
// }
// }
// if len(v.Messages) == 0 {
// delete(messageMgrData.MessageList, k)
// }
// }
messageMgrData := getMessageData()
// 先更新 PlayerList需要加锁
messageMgrData.mu.Lock()
defer messageMgrData.mu.Unlock()
now := GoUtil.Now()
for k, v := range messageMgrData.MessageList {
if k < 100000 {
delete(messageMgrData.MessageList, k)
continue
}
newMsgList := make([]*msg.Msg, 0, len(v.Messages))
// 反向遍历以安全删除元素
for _, message := range v.Messages {
if message == nil {
continue
}
if message.Type == msg.HADNLE_TYPE_AGREE || message.Type == msg.HANDLE_TYPE_DEL {
newMsgList = append(newMsgList, message)
continue
}
if message.End < now {
log.Debug("delete message %v", message)
continue
}
newMsgList = append(newMsgList, message)
}
v.Messages = newMsgList
if len(v.Messages) == 0 {
log.Debug("delete messagelist uid:%d", k)
delete(messageMgrData.MessageList, k)
}
}
}
// 注册处理器

View File

@ -204,7 +204,7 @@ func (m *Msg) Reply(data interface{}) *Msg {
func (m *Msg) String() string {
typeStr := "default"
handleTypeStr := formatHandleType(m.HandleType)
if m.HandleType == HANDLE_MOD_REPLY_PLAYER_MSG {
if m.HandleType == HANDLE_MOD_PLAYER_MSG {
typeStr = formatType(m.Type)
}
return fmt.Sprintf("Msg{Type:%s, To:%d, From:%d, SendT:%d, End:%d, Id:%d, HandleType:%s, Items:%+v, Extra:%+v}",