feat(item): 添加物品相关功能并优化任务和宠物逻辑

- 新增物品检查和添加功能
- 优化任务重置和完成逻辑
- 改进宠物信息获取和展示
- 调整玩家登录和保存机制
This commit is contained in:
2025-09-11 01:07:00 +08:00
parent e0ec9ee1ec
commit 53df18c1e1
12 changed files with 240 additions and 78 deletions

View File

@@ -4,10 +4,28 @@ import (
"blazing/common/socket/errorcode"
"blazing/logic/service"
"blazing/logic/service/item"
"blazing/modules/blazing/model"
)
func (h Controller) UserItemList(data *item.ItemListInboundInfo, c *service.Player) (result *item.ItemListOutboundInfo, err errorcode.ErrorCode) {
result = &item.ItemListOutboundInfo{}
result.ItemList = make([]model.SingleItemInfo, 0)
re := c.Service.ItemCheak()
for _, v := range re {
if int32(v.ItemId) > int32(data.Param1) && int32(v.ItemId) < int32(data.Param2) {
v.LeftTime = 360000
result.ItemList = append(result.ItemList, v)
}
}
return result, 0
}
func (h Controller) PlayerGoldCount(data *item.GoldOnlineRemainInboundInfo, c *service.Player) (result *item.GoldOnlineRemainOutboundInfo, err errorcode.ErrorCode) {
return &item.GoldOnlineRemainOutboundInfo{
uint32(c.Info.GoldBean) * 100,
}, 0
}

View File

@@ -35,26 +35,29 @@ func (h *Controller) Login(data *login.InInfo, c *service.Conn) (result *login.O
h.RPCClient.Kick(data.Head.UserID) //先踢人
t := socket.GetPlayer(c, data.Head.UserID)
t.Info = blservice.NewUserService(data.Head.UserID).Person()
t.Service = blservice.NewUserService(data.Head.UserID)
t.Info = t.Service.Person()
t.Info.UserID = data.Head.UserID
t.Onlinetime = uint32(time.Now().Unix()) //保存时间戳
t.Onlinetime = uint32(time.Now().Unix()) //保存时间戳
share.ShareManager.SetUserOnline(data.Head.UserID, h.Port) //设置用户登录服务器
if !IsToday(t.Info.LastResetTime) { //判断是否是今天
t.Info.LastResetTime = time.Now()
//每天login时候检查重置时间然后把电池任务挖矿重置
t.Info.TimeToday = 0 //重置电池
taskservice := blservice.NewUserService(t.ID())
for i := 400; i < 500; i++ { //每日任务区段
t.Info.TaskList[i] = 0 //重置每日任务
go func() {
for i := 400; i < 500; i++ { //每日任务区段
t.Info.TaskList[i] = 0 //重置每日任务
_, ok := taskservice.TaskInfo((uint32(i)))
if ok {
taskservice.TaskSet((uint32(i)), model.TaskInfo{
Info: []uint32{},
})
_, ok := t.Service.TaskInfo((uint32(i)))
if ok {
t.Service.TaskSet((uint32(i)), model.TaskInfo{
Info: []uint32{},
})
}
}
}
}()
}
if t.MapID() > 10000 {
@@ -68,8 +71,6 @@ func (h *Controller) Login(data *login.InInfo, c *service.Conn) (result *login.O
result = login.NewOutInfo() //设置登录消息
result.PlayerInfo = *t.Info
//result.TaskList = blservice.NewUserService(t.Info.UserID).GenTask()
//result.PetList = blservice.NewUserService(t.Info.UserID).GetPetList(1)
tt := maps.NewOutInfo()
//copier.Copy(t.Info, tt)

View File

@@ -1,11 +1,12 @@
package controller
import (
"blazing/common/data/xmlres"
"blazing/common/socket/errorcode"
"blazing/logic/service"
"blazing/logic/service/pet"
blservice "blazing/modules/blazing/service"
"blazing/modules/blazing/model"
"github.com/jinzhu/copier"
)
@@ -15,11 +16,15 @@ func (h *Controller) GetPetInfo(
data *pet.InInfo,
c *service.Player) (result *pet.OutInfo,
err errorcode.ErrorCode) { //这个时候player应该是空的
for _, pi := range c.Info.PetList {
if pi.CatchTime == data.CatchTime {
return &pet.OutInfo{
PetInfo: pi,
}, 0
}
t := blservice.NewUserService(c.Info.UserID).GetPetInfo(data.CatchTime)
return &pet.OutInfo{
PetInfo: t,
}, 0
}
return result, errorcode.ErrorCodes.ErrNoPrerequisiteFacility
}
// 获取仓库列表
@@ -29,7 +34,7 @@ func (h *Controller) GetPetList(
err errorcode.ErrorCode) { //这个时候player应该是空的
result = &pet.GetPetListOutboundInfo{}
tt := blservice.NewUserService(c.Info.UserID).GetPetList(0) //获得未放生的精灵
tt := c.Service.GetPetList(0) //获得未放生的精灵
result.ShortInfoList = make([]pet.PetShortInfo, len(tt))
for i, v := range tt {
@@ -51,7 +56,7 @@ func (h *Controller) PetRelease(
result = &pet.PetReleaseOutboundInfo{}
result.Flag = uint32(data.Flag)
t := blservice.NewUserService(c.Info.UserID).PetM(int(data.CatchTime), int(data.Flag))
t := c.Service.PetM(int(data.CatchTime), int(data.Flag))
switch data.Flag {
case 0:
@@ -79,3 +84,53 @@ func (h *Controller) PetRelease(
//service.NewUserService(c.Info.UserID).PetAdd( *r)
return result, 0
}
// 精灵展示
func (h *Controller) PlayerShowPet(
data *pet.PetShowInboundInfo, c *service.Player) (result *pet.PetShowOutboundInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
results := pet.PetShowOutboundInfo{}
for _, pi := range c.Info.PetList {
if pi.CatchTime == data.CatchTime {
copier.Copy(&results, pi)
results.Flag = data.Flag
results.UserID = data.Head.UserID
data.Broadcast(c.Info.MapID, results) //同步广播
}
}
return result, -1
}
func (h *Controller) PetOneCure(
data *pet.PetOneCureInboundInfo, c *service.Player) (result *pet.PetOneCureOutboundInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
result = &pet.PetOneCureOutboundInfo{
data.CatchTime,
}
var temp []model.PetInfo
for _, pi := range c.Info.PetList {
if pi.CatchTime == data.CatchTime {
pi.Hp = pi.MaxHp
// 恢复技能PP值
var skillList [4]model.SkillInfo
for i, skill := range pi.SkillList {
// 跳过无效技能
if skill.ID == 0 {
continue
}
// 恢复至最大PP值从配置表获取
if maxPP, ok := xmlres.SkillMap[int(skill.ID)]; ok {
skill.PP = uint32(maxPP.MaxPP)
skillList[i] = skill
}
}
pi.SkillList = skillList
}
temp = append(temp, pi)
}
c.Info.PetList = temp
return result, 0
}

View File

@@ -5,7 +5,6 @@ import (
"blazing/logic/service"
"blazing/logic/service/task"
"blazing/modules/blazing/model"
blservice "blazing/modules/blazing/service"
"math/rand"
"time"
)
@@ -37,14 +36,14 @@ func (h Controller) AddTaskBuf(data *task.AddTaskBufInboundInfo, c *service.Play
// isdaliy = true
// }
result = &task.AddTaskBufOutboundInfo{}
taskservice := blservice.NewUserService(c.Info.UserID)
_, ok := taskservice.TaskInfo(data.TaskId)
_, ok := c.Service.TaskInfo(data.TaskId)
if ok {
taskservice.TaskSet(data.TaskId, model.TaskInfo{
c.Service.TaskSet(data.TaskId, model.TaskInfo{
Info: data.TaskList,
})
} else {
taskservice.TaskADD(data.TaskId, model.TaskInfo{
c.Service.TaskADD(data.TaskId, model.TaskInfo{
Info: data.TaskList,
})
@@ -94,7 +93,7 @@ func (h Controller) Complete_Task(data *task.CompleteTaskInboundInfo, c *service
r := model.GenPetInfo(1, []int{0, 31}, []int{0, 24}, []int{0}, []int{0}, []int{5})
result.CaptureTime = r.CatchTime
result.PetTypeId = r.ID
blservice.NewUserService(c.Info.UserID).PetAdd(*r)
c.Service.PetAdd(*r)
}
if data.TaskId == 87 { //新手注册任务
@@ -107,6 +106,11 @@ func (h Controller) Complete_Task(data *task.CompleteTaskInboundInfo, c *service
result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 1, ItemCount: 5000})
}
var ttt []model.SingleItemInfo
for _, v := range result.ItemList {
ttt = append(ttt, model.SingleItemInfo{ItemId: v.ItemId, ItemCnt: v.ItemCount})
}
c.ItemAdd(ttt)
return result, 0
}
@@ -114,7 +118,7 @@ func (h Controller) Complete_Task(data *task.CompleteTaskInboundInfo, c *service
* 获取任务状态
*/
func (h Controller) Get_Task_Buf(data *task.GetTaskBufInboundInfo, c *service.Player) (result *task.GetTaskBufOutboundInfo, err errorcode.ErrorCode) {
info, _ := blservice.NewUserService(c.Info.UserID).TaskInfo(data.TaskId)
info, _ := c.Service.TaskInfo(data.TaskId)
result = &task.GetTaskBufOutboundInfo{}
result.TaskId = data.TaskId
result.TaskList = info.Info