Commit Graph

105 Commits

Author SHA1 Message Date
4c21c4ac78 ```
feat(maps): 重构移动广播逻辑并优化数据结构

将 WalkOutInfo 结构体迁移至 maps/info 包,并调整相关引用。
移除旧广播逻辑,改用 Space.Walk 方法进行统一广播处理。
新增 PlayerI 接口方法 SendWalkMapInfo 以支持行走信息发送。
在 Player 和 AI_player 中实现 SendWalkMapInfo 方法。
引入限流器到 space 包,用于控制广播频率。
```
2025-11-16 12:10:27 +08:00
0a8ef3d555 feat(fight_boss): 新增怪物ID处理逻辑,支持随机选择与过滤空值
新增 `processMonID` 函数用于处理 BOSS 战斗中怪物 ID 的字符串分割、
过滤空值,并在多个 ID 中随机选取一个。优化新手任务 BOSS 战逻辑,
使其更灵活地适配不同的配置输入。

---

refactor(map): 使用 ants 协程池优化地图进出逻辑并移除无用导入

将原本通过
2025-11-16 11:56:57 +08:00
1
88cd1affe4 修复战斗 2025-11-15 22:17:43 +00:00
135419a99e ```
feat(fight): 添加擂台系统相关功能与协议支持

新增了擂台系统相关的消息结构体和处理逻辑,包括:
- 添加了多个与擂台交互的命令结构体(如 ARENA_SET_OWENR、ARENA_FIGHT_OWENR 等)
- 实现了玩家发送擂台信息的方法 Send_ARENA_GET_INFO
- 在 Space 结构中增加了擂台相关信息及操作方法 Can_ARENA 和 UP_ARENA
- 修复了一个伤害计算公式错误,将乘法修正为除法
- 当
2025-11-15 19:11:23 +08:00
6979b7018d ```
feat(space): 替换并发安全map实现以提升性能

将原来基于`utils.ConcurrentMap`的玩家存储结构替换为
`github.com/mhmtszr/concurrent-swiss-map`提供的`CsMap`,
以获得更高效的并发读写能力。

同时修改了相关API调用方式:
- `Set` 改为 `Store`
- `Remove` 改为 `Delete`
- `IterCb` 改为 `Range`,并支持提前终止迭代
- `Items()` 不再使用

此外,调整了部分业务逻辑中对玩家列表遍历的方式,
确保在发送网络包后及时跳出循环,避免不必要的操作。

新增战斗类型处理函数`PET_King`用于处理宠物王相关的
战斗请求,并修复了`PET_MELEE`方法中的逻辑问题。

更新了go.mod和go.sum引入新的依赖库。
```
2025-11-15 15:22:58 +08:00
f919047ff6 ```
fix(login): 修正用户登录时间字段命名及逻辑

将 `Onlinetime` 字段更名为 `Logintime`,以更准确反映其含义,并确保在登录时正确记录时间戳。

refactor(player): 移除冗余的 Save 方法及相关逻辑

删除 Player 结构体中的 Save、CanGetExp、CompleteLogin 和 IsNewPlayer 方法,
相关功能已迁移或不再使用。

feat(pprof): 更新 pprof 监听地址

修改 README 中的 pprof 示例命令,将监听地址从远程 IP 改为本地回环地址 `127.0.0.1
2025-11-15 13:20:42 +08:00
0e1860bdf4 ```
feat(fight): 实现精灵大乱斗模式并优化对战逻辑

新增大乱斗模式(PET_MELEE)支持,重构原有精灵王之战相关逻辑。
更新战斗初始化流程,添加随机精灵选择机制。
调整玩家匹配与取消邀请接口实现方式。
完善战斗结束处理函数,移除未实现异常抛出。
```
2025-11-15 01:53:51 +08:00
a86782b1ea ```text
refactor(fight): 重构战斗准备逻辑并优化战斗启动流程

将 ReadyFight 方法拆分为多个职责清晰的子方法:
- buildFightStartInfo: 构建战斗初始信息
- checkBothPlayersReady: 检查PVP双方是否就绪
- handleNPCFightSpecial: 处理NPC战斗特殊逻辑(如可捕捉标记)
- startBattle: 统一启动战斗流程

同时修复部分逻辑顺序问题,增强代码可读性和扩展性。

feat(fight): 新增精灵王挑战协议支持

增加 StartPetWarInboundInfo 结构体用于接收精灵王挑战请求,
为后续实现相关功能提供基础。

fix(effect): 修正多个技能效果数值引用错误

- effect_37: 技能威力计算使用正确参数索引
- effect_50: 固定减伤比例调整为除以2
- effect_65: 正确比较技能分类类型
- effect_68: 致死保护改为锁定剩余1点生命值
- effect_77: 回复目标由敌方改为己方
- effect_93: 固定伤害值直接取参数

refactor(effect): 移除冗余效果类文件

删除 effect_133.go 和 effect_90.go 文件,其功能已被统一条件伤害和倍率系统取代;
移除 effect_74.go、effect_75.go 中重复的状态随机施加逻辑。

refactor(effect): 更新能力操作枚举命名一致性

重命名 AbilityOpType 枚举项名称,去除前缀,提升语义清晰度:
- AbilityOpStealStrengthen → StealStrengthen
- AbilityOpReverse → Reverse
- AbilityOpBounceWeaken → BounceWeaken

chore(fight): 完善 BattlePetEntity 属性初始化逻辑

在创建 BattlePetEntity 时即设置 PType,避免后续多次查询 PetMAP;
移除 Type() 方法中的冗余配置查找逻辑。

fix(skill): 确保必中技能不参与命中率计算

在 AttackTimeC 方法中添加 return 防止必中技能继续执行命中率公式计算。

refactor(fight): 调整战斗回合结束逻辑

进入新回合时允许玩家更换精灵,并提前跳出循环防止多余处理。

style(effect): 更正拼写及变量命名风格

修改 BaseSataus.Switch 方法签名中的参数命名;
更正 Effect58 中 can 字段首字母大写;
2025-11-14 23:09:16 +08:00
5e3d558d30 ```
feat(player): 添加 UseCoins 方法统一处理玩家金币消耗逻辑

重构购买物品和变更外观功能,使用 UseCoins 方法替代手动操作 Coins 字段,
确保金币扣除的安全性和一致性。同时修复可能因并发导致的金币超扣问题。

此外,调整部分战斗系统接口参数传递方式,将 DamageZone 指
2025-11-13 21:36:18 +08:00
6e01848b04 ```
refactor(socket): 移除未使用的网络相关导入和注释掉的 RST 攻击检测逻辑

移除了 `ServerEvent.go` 中未使用的 `net` 和 `strings` 包导入。同时,
将原有的 RST 攻击检测及防护逻辑代码注释掉,便于后续重新设计或彻底删除。

fix(logic): 调整 fight pool 初始化与释放策略

将 `fight/action.go` 中的 `Fightpool` 类型从 `*ants.MultiPool`
改为 `*ants.Pool`,并调整其初始化方式为 `NewPool(-1)` 以适应动态扩容。
此外,在 `main.go` 中将 `ReleaseTimeout` 参数由 100 调整为 0,
确保立即清理超时任务。

feat(fight): 优化战斗输入状态重置逻辑

在 `fight/action.go` 的 `ReadyFight` 方法中提前设置
`GetInputByPlayer(c, false).Finished = true`,避免重复赋值。
同时更新了状态睡眠效果的处理流程,并简化了输入模块的状态缓存机制,
移除了冗余的 `Initeffectcache` 函数调用及相关逻辑。

perf(fight): 动态计算玩家动作等待时间

在 `loop.go` 的 `collectPlayerActions` 方法中,
将固定超时时间替换为基于 `waittime` 的动态等待时间计算公式,
提高响应灵活性。同时修复通道关闭判断条件以增强稳定性。

refactor(fight): 更新技能效果解析和状态持续逻辑

修改 `input.go` 中 `GenSataus` 方法以正确初始化状态数组;
在 `Turn.go` 中重构 `Turn_End` 方法内的执行逻辑,
确保仅在我方后手时增加回合数,提升战斗流程准确性。

chore(service): 删除废弃文件 SocketHandler_Tomee.go

完全移除已弃用的 `SocketHandler_Tomee.go` 文件及其全部内容,
减少项目冗余代码。
```
2025-11-13 05:05:05 +08:00
f281b949ba ```
feat(fight): 调整战斗逻辑与精灵切换机制

- 优化精灵切换时的效果处理,增加切换事件支持
- 修复战斗中超时逻辑和技能CD计算问题
- 增强状态效果在精灵上下场时的清理机制
- 修改伤害计算逻辑以提高准确性
- 更新战斗池初始化参数提升并发性能

此外,同步更新了宠物放生字段命名及逻辑处理方式,并调整网络通信中的限流策略。
```
2025-11-13 02:43:00 +08:00
0d61134dd8 fix(fight): 修复技能命中和伤害计算逻辑错误
- 修正 `Effect7` 中敌我双方血量判断逻辑,确保技能命中率和伤害值正确计算
- 调整 `FightC` 中技能攻击流程,统一使用 `Exec` 替代 `ExecCace` 执行效果
- 移除重复的 `AddEffects` 方法,简化效果添加逻辑
- 注释暂未使用的逻辑,避免无效调用影响战斗流程
- 增加战斗超时保护机制,防止协程泄漏
- 优化玩家离线保存逻辑
2025-11-12 21:44:56 +08:00
0b5cfac0b2 ```
feat(fight): 调整战斗逻辑与伤害计算流程

- 移除 `Over` 方法中的冗余回调参数 `fn`
- 修复部分技能效果中错误的伤害目标对象(Our/Opp)
- 优化战斗循环逻辑,使用 `over` channel 替代 `quit` 作为战斗结束信号
- 增加回合效果执行前的存活状态判断
- 修正伤害计算过程中对血量扣减的逻辑错误
-
2025-11-12 01:19:24 +08:00
1
27b408eeec fix(fight): 修复空变更提交问题 2025-11-11 11:45:09 +00:00
da9286d3d8 ```
feat(fight): 调整技能效果命中逻辑与回合开始处理

- 修改了技能效果命中的判定顺序,确保暴击计算在效果添加之前执行
- 修复了回合开始时敌我双方状态结算的上下文错误
- 优化了效果缓存初始化逻辑,避免重复添加相同效果
- 增加了效果去重判断,防止完全相同的效果被重复添加
- 调整了战斗循环中结束逻辑的位置,确保广播和通道关闭正确执行
- 更新了部分日志提示信息,使其更符合实际业务含义
- 移除了部分无用代码和注释,提高
2025-11-11 01:10:26 +08:00
1
3b84572455 fix(fight): 修复空变更提交问题 2025-11-10 04:17:27 +00:00
1
7653f6b583 fix(fight): 修复技能效果 2025-11-10 02:45:19 +00:00
4b34445dfc ```
refactor(fight): 重构战斗逻辑中技能实体传递方式

将战斗逻辑中使用的 action.SelectSkillAction 替换为 info.SkillEntity,
以统一技能数据结构。同时更新相关函数签名和字段引用。

此外,移除了未使用的 Attack 字段,并调整了部分逻辑实现以提高代码清晰度。
还修复了 effect_power_doblue.go 中对输入参数的错误引用问题。

最后,修改了通道命名规范(ActionChan -> actionChan, GetActionChan -> GetOverChan),
并引入 overchan 用于战斗结束通知,提升并发安全性与语义明确性。
```
2025-11-10 02:29:00 +08:00
1
de3fb29407 fix(fight): 修复空变更提交问题 2025-11-09 04:37:15 +00:00
c916440033 ```
feat(fight): 完善战斗系统中道具使用逻辑与血量恢复机制

- 修改 item.go 中 Item 结构体,将 Bonus 字段类型由 string
2025-11-08 16:38:41 +08:00
1
e2578f6c63 refactor(fight): 优化战斗逻辑代码结构,清理冗余代码 2025-11-06 13:43:16 +00:00
1
f687599d1a refactor(fight): 优化战斗逻辑代码结构,清理冗余代码 2025-11-05 22:34:03 +00:00
1
4263e4050c refactor(fight): 优化战斗逻辑代码结构,清理冗余代码 2025-11-05 22:18:29 +00:00
1
bd43c75dce refactor(fight): 优化战斗逻辑代码结构,清理冗余代码 2025-11-05 22:17:03 +00:00
1
5092186b4e refactor(fight): 优化战斗逻辑代码结构,清理冗余代码 2025-11-05 22:07:46 +00:00
1
4d7064e59f refactor(fight): 优化战斗逻辑代码结构,清理冗余代码 2025-11-05 17:06:08 +00:00
9b73de4faf ```
feat(rpc): 更新客户端映射变量命名以符合导出规则

将 rpc.go 中的 clientmap 变量重命名为 Clientmap,使其可被其他包访问。
同时修复了拼写错误 useid1 -> userid,并在 RegisterLogic 方法中调用 Refurh 函数。

fix
2025-11-03 19:14:34 +08:00
30ed47a30c ```
refactor(socket): 优化消息处理逻辑,避免顺序执行问题

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

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

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

ref
2025-11-03 03:59:59 +08:00
038bd0ce0c ```text
build(go): 升级 gf/v2 框架至 v2.7.0

统一将 common、login 和 mysql driver 中的 github.com/gogf/gf/v2 依赖版本从 v2.6.3 更新到 v2.7.0。

feat(logic): 优化道具服务逻辑与数据结构

- 修改 Item 结构体,去除 Data 字段,新增 ItemId 和 ItemCnt 字段以提高可读性和查询效率。
- 调整 Item 相关方法实现,包括 Item(), AddItem(), SubItem() 和 CheakItem() 方法,支持直接按范围获取及增减物品
2025-11-02 18:56:16 +08:00
ea4ca98e49 fix(socket): 修复连接处理逻辑并优化数据解码流程
- 修复 `OnOpen` 中网络类型判断位置不正确的问题,提前过滤非 TCP 连接
- 移除 `OnTraffic` 中重复的网络类型判断
- 优化 `TomeeSocketCodec` 的解码逻辑,使用 `InboundBuffered` 和 `Next` 提高效率
- 调整 `ByteArray` 创建方法参数,避免可变参数带来的性能损耗
- 在 `ClientData` 中将 `IsCrossDomain` 改为 `sync.Once` 避免重复处理
- 使用 `AsyncWrite` 替代 `Write` 提升写入异步性
- 修复连接关闭流程,使用
2025-11-01 14:31:19 +08:00
008701d3de ```
fix(player): 修复玩家发送数据包时的空指针异常

- 将 `ClientData` 中的 `sync.Mutex` 替换为 `sync.RWMutex` 以支持读写锁
- 在 `ServerEvent.go` 中添加读锁保护对客户端数据的访问
- 增加对 `MainConn` 及其上下文是否存在判断,防止空指针引用
```
2025-11-01 01:08:47 +08:00
eac1d41043 fix(rpc): 修复日志输出格式并修正logic服务器注册逻辑
修复了rpc模块中日志输出时参数拼接错误的问题,同时修正了RegisterLogic函数中端口映射的逻辑错误。

feat(socket): 替换错误处理方式为panic

在ServerEvent.go中将网络启动失败的返回错误改为panic处理,提高错误可见性。

feat(fight): 增加战斗加载进度控制

在LoadPercent函数中增加对FightC非
2025-11-01 00:40:19 +08:00
1
566c5cc3ce `` refactor(socket): 优化客户端数据校验逻辑,增加保存锁并完善日志记录`` 2025-10-30 16:56:07 +00:00
1
44d3756cda Merge branch 'main' of https://github.com/72wo/blazing 2025-10-30 16:54:50 +00:00
1
260e86e2cf `` refactor(socket): 将ClientData结构及相关方法从wscodec.go移至SocketHandler_Tomee.go,优化代码组织结构`` 2025-10-30 16:54:20 +00:00
cccf26788e fix(socket): 玩家断开连接时增加保存锁,避免重复保存
在玩家断开连接时,使用 sync.Once 确保只保存一次玩家数据,
防止因并发或多次触发导致的数据异常。

feat(fight): 增加战斗资格判断与邀请取消功能

- 新增 Player.CanFight() 方法用于统一判断是否可以参与战斗
- 在多个战斗相关接口中加入 CanFight 检查
- 添加“取消战斗邀请”指令及处理逻辑(cmd: 2402)
- 修复部分错误码不准确的问题,提升提示一致性

refactor(login): 优化登录流程并增强健壮性

- 提前校验 session 合法性
- 增强获取玩家信息后的空指针检查
- 调整挖矿数据重置方式为 defer 执行
- 优化日志输出内容,便于调试追踪

docs(model): 更新部门、菜单等模型字段命名规范

将 orderNum 字段改为 ordernum,保持数据库列名风格一致,
同时更新了 base_sys_role 中 userId 为 userid。

perf(rate-limit): 提高登录接口的限流 Burst 容量

调整限流器配置,将请求 burst 容量从 2 提升至 5,
以应对短时间高频访问场景,改善用户体验。

chore(build): 忽略新增编译产物和临时文件

在 .gitignore 中添加 logic/logic2、login/login 等新生成文件路径,
避免误提交二进制文件到版本控制。
2025-10-31 00:53:22 +08:00
1
ac75275dff ``` refactor(socket): 重构客户端数据处理逻辑,优化玩家信息校验和包处理流程 2025-10-30 01:37:53 +00:00
bb48f01e94 Merge branch 'main' of github.com:72wo/blazing 2025-10-29 23:51:52 +08:00
fdd55ed99b ```
refactor(socket): 移除 Lockfree 依赖并优化事件处理逻辑

将原有的基于 Lockfree 的消息队列机制移除,改为直接在协程池中调用客户端数据处理器。
同时调整了 `ClientData` 结构体和相关方法实现,使代码更简洁、易于维护。
此外,注释掉了一处调试日志输出,并修正了获取玩家对象的方式。
```
2025-10-29 23:51:03 +08:00
1
8376068bb6 fix(socket): 移除debug.Stack并统一使用cool.Loger记录panic错误 2025-10-29 15:50:48 +00:00
f06638d6b6 ```
feat(socket): 优化TCP连接处理逻辑并引入批量读取机制

- 在 `ServerEvent.go` 中调整了 `OnTraffic` 方法的处理逻辑,
  避免不必要的循环,确保跨域请求优先处理。
- 新增 `batchRead` 配置项,用于控制单次处理的最大数据包数量,
 默认值设为 10。
- 修复 `OnClose` 方法中可能存在的执行顺序问题,并显式关闭 Lockfree 资源。
- 在 `ClientData` 初始化时,将 Lockfree 的阻塞策略从 Sleep 策略
  替换为 ConditionBlock 策略,提升并发处理性能。
- 微调玩家登录完成时的地图ID判断条件,由 1000
2025-10-29 03:19:32 +08:00
c0f22cb208 修改 2025-10-29 02:05:34 +08:00
1
a37b459793 ``` feat(socket): 优化panic处理逻辑并添加详细堆栈打印,完善服务器退出条件检查 2025-10-28 07:39:11 +00:00
ec082db71d ```
feat(socket): 优化服务器事件处理逻辑并修复数据解码问题

- 移除重复的 `gnet.WithTicker(true)` 配置项
- 调整 `OnTick` 的执行间隔从 10 秒延长至 30 秒
- 更新 `NewClientData` 方法以传入连接对象,用于后续消息处理
- 将 `c.Read` 替换为 `c.Discard` 以正确丢弃已读数据
- 改进数据包处理逻辑,增强对不完整包的处理能力
- 修正 `TomeeHeader.Version` 类型由 string 转为 byte,并更新相关读写操作
- 在消息处理中增加错误日志打印
2025-10-28 02:28:15 +08:00
1
448943ca75 修改底层 2025-10-27 09:36:49 +00:00
5542718a2b feat(fight): 优化睡眠状态效果逻辑,确保对方攻击后解除睡眠
睡眠状态现在会正确挂载到对手身上,以实现在对方攻击后自动解除睡眠效果。

fix(fight): 修复技能PP减少逻辑,确保使用技能时正确扣减PP

在技能执行过程中,通过查找当前宠物的技能列表来正确地减少对应技能的PP值,避免了错误的PP扣减。

fix(fight): 修复回合开始时技能列表初始化问题

修正了战斗中角色和对手的技能列表初始化逻辑,确保双方技能数据正确加载。

feat(pet): 限制宠物技能数量为4个并修复技能学习逻辑

更新宠物技能学习逻辑,确保只保留最后四个技能,并在学习新技能时正确添加至技能列表。

fix(p
2025-10-27 01:11:31 +08:00
e75ecd413d feat(fight): 重构战斗系统技能逻辑与精灵切换功能
- 优化技能执行流程,统一使用 SelectSkillAction 作为技能载体
- 移除冗余的技能 ID 字段,简化数据结构
- 调整命中判断和技能效果触发机制,提升准确性
- 修改精灵切换与捕获相关方法参数格式
- 更新技能列表结构为动态数组以支持灵活长度
- 完善睡眠等异常状态的处理逻辑
- 修复战斗中技能 PP 扣减及副本还原问题
- 清理无用代码,如多余的 FindWithIndex 函数定义
- 强化验证码缓存键命名规则,增强安全性
2025-10-26 20:56:03 +08:00
03aea8ae6c ```
feat(player): 实现玩家主动退出并优化踢出逻辑

将原有的踢出玩家逻辑提取到 Player 结构体的 Kick 方法中,统一处理登录状态判断、
发送错误码、关闭连接等操作。同时在 QuitSelf 方法中调用该逻辑,确保所有玩家被正确踢出。
移除了 server.go 中重复的踢出实现,并调整了相关包导入路径。
```
2025-10-26 14:56:29 +08:00
4306e2db53 ```
feat(item): 实现批量购买物品功能并优化物品添加逻辑

新增 BuyMItem 方法支持批量购买多个物品,并在 Controller 中完善错误处理流程。
修改 ItemAdd 方法以返回添加结果,增强对物品数量限制和异常情况的控制。
调整任务完成时的物品发放逻辑,确保只有成功添加的物品才会被返回给客户端。
修复新手任务中初级体力药剂的数量从 3 改为 5。
将 defer 调用提前执行以避免潜在的数据不一致问题。
```
2025-10-25 15:06:05 +08:00
18378a3ab6 feat(logic): 添加玩家外观与聊天功能并优化宠物生成逻辑
- 在 `logic/controller/item.go` 中添加了更换玩家服装后广播结果的逻辑
- 在 `logic/controller/user.go` 中新增多个控制器方法:
  - `Aimat`:瞄准操作处理
  - `Chat`:支持消息发送及过滤
  - `ChangePlayerColor`:修改玩家颜色并扣除金币
  - `ChangePlayerDoodle`:更改玩家涂鸦并扣费
  - `ChangeNONOColor`:改变 NONO 颜色
- 移动宠物信息生成函数 `GenPetInfo` 至 `modules/blazing/model/pet.go` 并重构其实现
- 更新 `logic/service/player/pet.go` 和相关引用以适应新结构
-
2025-10-24 00:31:38 +08:00