feat(rpc): 优化 RPC 客户端地址配置逻辑 - 将 RPC 地址从硬编码改为通过 service 动态获取 - 修改端口常量名称 rpcaddr 为 rpcport,提升语义清晰度 - 调整客户端连接逻辑以支持动态 IP 和端口拼接 fix(fight): 修复技能命中与闪避逻辑执行顺序 - 调整战斗中技能攻击流程,确保命中率和闪避计算正确应用 - 更新 effect 接口定义,增强技能使用前后的控制节点 - 增加伤害计算过程中的多阶段触发机制(加法、乘法、减法等) feat(config): 更新数据库及 Redis 配置信息 - 修改 PostgreSQL 用户名、密码和数据库名 - 更新 Redis 访问密码 - 调整服务器 IP 获取方式,区分测试环境与生产环境 chore(vscode): 优化调试配置 console 输出设置 - 在 launch.json 中为调试配置增加 integratedTerminal 控制台选项 - 统一逻辑服务启动参数格式 chore(gitignore): 忽略特定平台编译产物 - 添加针对 Linux 平台的 logic 和 login 模块编译文件忽略规则 ```
119 lines
3.2 KiB
Go
119 lines
3.2 KiB
Go
package user
|
||
|
||
import (
|
||
"blazing/cool"
|
||
"blazing/logic/service/player"
|
||
baseservice "blazing/modules/base/service"
|
||
"blazing/modules/blazing/model"
|
||
"context"
|
||
|
||
"github.com/butoften/array"
|
||
)
|
||
|
||
//var _ entity.Blazingservice = (*SidInfo)(nil)
|
||
|
||
type SidInfo struct { //这里直接使用组合来实现将传入的原始头部数据和结构体参数序列化
|
||
Head player.TomeeHeader `cmd:"105" struc:"[0]pad"` //玩家登录
|
||
|
||
Sid []byte `struc:"[20]byte"` // 登录会话ID,固定长度16字节
|
||
// ret []byte `struc:"[0]pad"`
|
||
}
|
||
|
||
// CommendSvrInfo 初始连接请求信息结构体
|
||
type CommendSvrInfo struct {
|
||
//Handler player.TomeeHeader //` struc:"[0]pad"` //消息头 ,这里为传入的头部数据,遍历此头部实现解析CommendSvrInfo
|
||
MaxOnlineID uint32 `struc:"sizeof=ServerList"` // 最大连接数
|
||
IsVip uint32 // 建议为0
|
||
ServerInfoLen uint32 `struc:"sizeof=ServerList"` // 服务器信息长度 ServerInfo
|
||
ServerList []ServerInfo // 服务器具体信息
|
||
FriendInfoLen uint32 `struc:"sizeof=FriendInfo"`
|
||
FriendInfo []FriendInfo // 好友id
|
||
BlackInfoLen uint32 `struc:"sizeof=BlackInfo"`
|
||
BlackInfo []BlackInfo // 黑名单id
|
||
}
|
||
|
||
// NewInInfo 创建并返回一个新的 commendSvrInfo 结构体实例
|
||
// 返回的实例包含初始化的 ServerList、FriendInfo 和 BlackInfo 切片
|
||
// IsVip 和 ServerInfoLen 字段被初始化为 0
|
||
func NewInInfo() *CommendSvrInfo {
|
||
return &CommendSvrInfo{
|
||
// Handler: player.TomeeHeader{},
|
||
// MaxOnlineID: 100,
|
||
IsVip: 0,
|
||
ServerInfoLen: 0,
|
||
ServerList: make([]ServerInfo, 0),
|
||
FriendInfo: make([]FriendInfo, 0),
|
||
BlackInfo: make([]BlackInfo, 0),
|
||
//Reversed: 0,
|
||
}
|
||
}
|
||
|
||
// ServerInfo 服务器信息结构体
|
||
type ServerInfo struct {
|
||
// 连接ID, 即服务器序号
|
||
OnlineID uint32
|
||
// 当前服务器玩家在线数量, 供SWF显示
|
||
UserCnt uint32
|
||
// 服务器IP, 16字节UTF-8, 不足16补齐到16
|
||
IP string `struc:"[16]byte"` // 定长模式:16字节
|
||
// 端口
|
||
Port uint16
|
||
// 好友在线的个数
|
||
Friends uint32
|
||
}
|
||
|
||
// NewServerInfo 创建新的服务器信息实例
|
||
func newServerInfo() *ServerInfo {
|
||
//getServerInfoList()
|
||
return &ServerInfo{
|
||
//OnlineID: 0,
|
||
UserCnt: 20,
|
||
//IP: "",
|
||
// Port: 0,
|
||
Friends: 1,
|
||
}
|
||
}
|
||
|
||
func GetServerInfoList() []ServerInfo {
|
||
dictInfoModel1 := model.NewServerList()
|
||
mType := cool.DBM(dictInfoModel1)
|
||
t, _ := mType.All()
|
||
//fmt.Println(t)
|
||
var ret []model.ServerList
|
||
t.Structs(&ret)
|
||
//fmt.Println(t)
|
||
var ret1 []ServerInfo
|
||
ip, _ := baseservice.NewBaseSysParamService().DataByKey(context.Background(), "server_ip")
|
||
testip, _ := baseservice.NewBaseSysParamService().DataByKey(context.Background(), "test_ip")
|
||
for _, v := range ret {
|
||
tt := newServerInfo()
|
||
tt.OnlineID = uint32(v.OnlineID)
|
||
// tt.UserCnt = v.UserCnt
|
||
//tt.IP = v.IP
|
||
tt.IP = ip
|
||
if tt.OnlineID == 2 {
|
||
tt.IP = testip
|
||
}
|
||
tt.Port = v.Port
|
||
// tt.Friends = v.Friends
|
||
ret1 = append(ret1, *tt)
|
||
|
||
}
|
||
array.Sort(&ret1, func(a ServerInfo, b ServerInfo) bool {
|
||
return a.OnlineID < b.OnlineID
|
||
})
|
||
//fmt.Printf("升序 Sort: %v\n", ret1)
|
||
return ret1
|
||
|
||
}
|
||
|
||
type FriendInfo struct {
|
||
BlackInfo
|
||
TimePoke uint32
|
||
}
|
||
|
||
type BlackInfo struct {
|
||
Userid uint32
|
||
//TimePoke uint32
|
||
}
|