Files
bl/modules/blazing/service/info.go
昔念 d88a2d19ea ```
feat(fight): 支持勇者之塔和试炼之塔战斗功能

- 实现勇者之塔(CMD 2414)和试炼之塔(CMD 2428)的战斗逻辑
- 添加Tower500Service和Tower600Service的Boss查询功能
- 统一处理两个塔的BossId
2026-01-01 15:37:43 +08:00

156 lines
3.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package service
import (
"blazing/common/data/share"
"blazing/cool"
"blazing/modules/blazing/model"
"blazing/modules/config/service"
"context"
"time"
"github.com/gogf/gf/v2/os/glog"
"github.com/gogf/gf/v2/os/gtime"
)
// 是否注册,如果注册过,那么就会产生用户player信息
func (s *InfoService) IsReg() bool {
m := s.GModel(s.Model)
record, err := m.One()
if err != nil {
return false
}
if record != nil {
return true
}
return false
}
// 实现注册,id+昵称+颜色
func (s *InfoService) Reg(nick string, color uint32) {
if s.IsReg() {
return
}
t := model.NewPlayer()
t.PlayerID = uint64(s.userid)
//设置用户信息
t.Data = model.NewPlayerInfo()
t.Data.Nick = nick
t.Data.UserID = s.userid
t.Data.Color = color
t.Data.RegisterTime = uint32(time.Now().Unix()) //写入注册时间
_, err := cool.DBM(s.Model).Data(t).FieldsEx("id").Insert()
if err != nil {
glog.Error(context.Background(), err)
return
}
//go s.InitTask()
}
func (s *InfoService) Person(userid uint32) *model.PlayerInfo {
m := cool.DBM(s.Model).Where("player_id", userid)
var tt model.PlayerEX
err := m.Scan(&tt)
if err != nil {
return nil
}
ret := tt.Data
return &ret
}
func (s *InfoService) Personself() *model.PlayerInfo {
m := cool.DBM(s.Model).Where("player_id", s.userid)
var tt model.PlayerEX
err := m.Scan(&tt)
if err != nil {
return nil
}
tt.Data.AllPetNumber = uint32(NewPetService(s.userid).PetCount(0))
if !IsToday(tt.LastResetTime) { //判断是否是今天
//每天login时候检查重置时间然后把电池任务挖矿重置
//挖矿需要单独存,因为防止多开挖矿
tt.LastResetTime = gtime.Now()
//每天login时候检查重置时间然后把电池任务挖矿重置
//挖矿需要单独存,因为防止多开挖矿
tt.Data.TimeToday = 0 //重置电池
for _, v := range service.NewTaskService().GetDaily() {
tt.Data.SetTask(int(v.TaskId), model.Unaccepted)
}
for i := 0; i < 50; i++ { //每日任务区段
tt.Data.DailyResArr[i] = 0 //重置每日任务
}
//defer t.Service.Talk_Reset()
_, err := m.Save(tt)
if err != nil {
panic(err)
}
}
ret := tt.Data
return &ret
}
func (s *InfoService) Kick(id uint32) {
cool.Logger.Info(context.TODO(), "服务器收到踢人")
useid1, err := share.ShareManager.GetUserOnline(id)
if err != nil {
return
}
cl, ok := cool.GetClient(useid1)
if ok {
err := cl.KickPerson(id) //实现指定服务器踢人
if err != nil {
return
}
}
}
func (s *InfoService) Save(data model.PlayerInfo) {
m := s.GModel(s.Model)
var tt model.PlayerEX
m.Scan(&tt)
tt.Data = data
_, err := m.Save(tt)
if err != nil {
panic(err)
}
}
type InfoService struct {
BaseService
}
func NewInfoService(id uint32) *InfoService {
return &InfoService{
BaseService: BaseService{userid: id,
Service: &cool.Service{Model: model.NewPlayer(), UniqueKey: map[string]string{
"player_id": "角色名称不能重复",
}, PageQueryOp: &cool.QueryOp{
FieldEQ: []string{"player_id"},
}},
},
}
}