refactor(socket): 优化消息处理逻辑,避免顺序执行问题

将消息处理的循环从协程外部移入协程内部,确保每个消息在独立的 goroutine 中处理,
避免因并发导致的消息顺序错乱问题。同时移除了多余的空行,使代码更简洁。

fix(controller): 为低 ID 用户设置 VIP 标志

在 COMMEND_ONLINE 接口逻辑中,新增对 UserID 小于 10000 的用户设置 IsVip = 1,
用于标识测试或特殊用户身份。

ref
This commit is contained in:
2025-11-03 03:59:59 +08:00
parent 7a8be1c23a
commit 30ed47a30c
17 changed files with 300 additions and 242 deletions

View File

@@ -35,7 +35,7 @@ func Geteffect(etype EnumEffectType, id int) Effect {
eff := deep.MustCopy(ret)
return eff.(Effect)
return eff
//todo 获取后GetEffect
}
return nil
@@ -66,10 +66,8 @@ func (c *Input) GetProp(id int, istue bool) int {
return realValue
}
func (c *Input) CountEffect(etype EnumEffectType, id int) int {
return len(c.GetEffect(etype, id))
}
func (c *Input) GetEffect(etype EnumEffectType, id int) []Effect {
func (c *Input) GetEffect(etype EnumEffectType, id int) Effect {
var ret []Effect
for _, v := range c.Effects {
if v.ID() == id {
@@ -77,7 +75,10 @@ func (c *Input) GetEffect(etype EnumEffectType, id int) []Effect {
}
}
return ret
if len(ret) > 0 {
return ret[len(ret)-1]
}
return nil
}
func (c *Input) StatEffect_Exist(id int) bool {
for _, v := range c.Effects {
@@ -106,8 +107,9 @@ func (c *Input) AddEffect(e Effect) {
// 如果已有同 ID 的效果,尝试叠加
for _, v := range c.Effects {
if v.ID() == e.ID() && v.Alive() {
if v.MaxStack() >= 0 {
v.NotALive() //取消之前效果
v.NotALive() //取消之前效果
if v.MaxStack() > 0 {
if v.Stack() < v.MaxStack() { //如果小于最大叠层,状态可以叠层
e.SetArgs(v.GetInput(), v.GetArgs()...) //参数输入
e.Stack(v.Stack() + e.Stack()) //获取到当前叠层数然后叠加