feat(broadcast): 添加全服广播功能并完善相关逻辑 新增 Broadcast 结构体及 Server 的 Broadcast 方法,用于实现全服广播消息, 并在 RPC 客户端中增加对应接口。同时在 fight 模块中添加聊天信息结构体和处理逻辑。 refactor(pet_skill): 优化宠物技能设置逻辑 修复宠物技能替换判断条件错误的问题,并调整相关逻辑顺序以提高代码可读性与健壮性。 feat(chat): 实现战斗内聊天功能 新增战斗中的聊天指令结构体 ChatInfo 和对应的控制器方法 FightChat, 支持玩家在战斗中发送聊天消息。 refactor(item_buy): 调整金币购买道具的扣费方式 将原直接比较金币数量改为调用
51 lines
880 B
Go
51 lines
880 B
Go
package socket
|
|
|
|
import (
|
|
"blazing/cool"
|
|
"blazing/logic/service/player"
|
|
"context"
|
|
"fmt"
|
|
)
|
|
|
|
type Broadcast struct {
|
|
Name string
|
|
}
|
|
|
|
func (h *Server) Broadcast(t string) int {
|
|
cool.Loger.Info(context.TODO(), "全服广播", t)
|
|
var count int
|
|
player.Mainplayer.Range(func(key uint32, value *player.Player) bool {
|
|
count++
|
|
value.SendPackCmd(50003, &Broadcast{
|
|
Name: t,
|
|
})
|
|
return true
|
|
})
|
|
|
|
return count
|
|
}
|
|
func (h *Server) KickPerson(a int) error {
|
|
cool.Loger.Info(context.TODO(), "检测到踢人请求", a)
|
|
if a == 0 {
|
|
return nil
|
|
}
|
|
|
|
return player.KickPlayer(uint32(a))
|
|
}
|
|
|
|
// 参数不为0是强制踢出
|
|
func (h *Server) QuitSelf(a int) error {
|
|
//TODO 这里待退出
|
|
fmt.Println("检测到退出请求")
|
|
|
|
h.quit = true
|
|
if a != 0 {
|
|
player.Mainplayer.Range(func(key uint32, value *player.Player) bool {
|
|
value.Kick()
|
|
return true
|
|
})
|
|
}
|
|
|
|
return nil
|
|
}
|