```
feat(cache): 添加复合键缓存操作支持 添加了基于 uint32+string 组合键的缓存操作方法,包括 GetByCompoundKey、SetByCompoundKey、DelByCompoundKey 和 ContainsByCompoundKey 方法,用于处理用户ID和会话ID的组合缓存场景 fix(vscode): 添加 cSpell 配置支持 struc 词汇 refactor(session): 移除过时的会话管理方法 移除了基于单一字符串键的会话管理方法,因为已迁移到使用 复合键的缓存操作方式 ```
This commit is contained in:
@@ -5,8 +5,8 @@ import (
|
||||
"blazing/common/socket/errorcode"
|
||||
"blazing/logic/service/egg"
|
||||
"blazing/logic/service/player"
|
||||
"blazing/modules/blazing/model"
|
||||
"blazing/modules/config/service"
|
||||
"blazing/modules/player/model"
|
||||
|
||||
"github.com/gogf/gf/v2/util/grand"
|
||||
)
|
||||
|
||||
@@ -10,8 +10,8 @@ import (
|
||||
"blazing/logic/service/fight/info"
|
||||
|
||||
"blazing/logic/service/player"
|
||||
"blazing/modules/blazing/model"
|
||||
"blazing/modules/config/service"
|
||||
"blazing/modules/player/model"
|
||||
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
"github.com/gogf/gf/v2/util/grand"
|
||||
@@ -137,12 +137,12 @@ func (h Controller) PlayerFightBoss(data *fight.ChallengeBossInboundInfo, p *pla
|
||||
fight.NewFight(p, ai, func(foi info.FightOverInfo) {
|
||||
if taskID != 0 {
|
||||
if foi.Reason == 0 && foi.WinnerId == p.Info.UserID {
|
||||
p.CompletedTask(taskID, 100)
|
||||
p.BossCompletedTask(taskID, 100)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
p.Done.Exec(model.MilestoneMode.BOSS, []uint32{p.Info.MapID, data.BossId, uint32(foi.Reason)}, nil)
|
||||
//p.Done.Exec(model.MilestoneMode.BOSS, []uint32{p.Info.MapID, data.BossId, uint32(foi.Reason)}, nil)
|
||||
|
||||
})
|
||||
|
||||
@@ -189,7 +189,7 @@ func (h Controller) OnPlayerFightNpcMonster(data1 *fight.FightNpcMonsterInboundI
|
||||
p.Fightinfo.Mode = info.BattleMode.MULTI_MODE //多人模式
|
||||
|
||||
fight.NewFight(p, ai, func(foi info.FightOverInfo) {
|
||||
p.Done.Exec(model.MilestoneMode.Moster, []uint32{p.Info.MapID, monsterInfo.PetList[0].ID, uint32(foi.Reason)}, nil)
|
||||
//p.Done.Exec(model.MilestoneMode.Moster, []uint32{p.Info.MapID, monsterInfo.PetList[0].ID, uint32(foi.Reason)}, nil)
|
||||
if foi.Reason == 0 && foi.WinnerId == p.Info.UserID {
|
||||
|
||||
if !p.CanGetExp() {
|
||||
@@ -217,6 +217,7 @@ func (h Controller) OnPlayerFightNpcMonster(data1 *fight.FightNpcMonsterInboundI
|
||||
p.Info.ExpPool += exp * 4
|
||||
p.AddPetExp(foi.Winpet, uint32(exp)*2)
|
||||
p.SendPackCmd(8004, items)
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
@@ -7,9 +7,9 @@ import (
|
||||
fightinfo "blazing/logic/service/fight/info"
|
||||
"blazing/logic/service/player"
|
||||
"blazing/logic/service/space/info"
|
||||
"blazing/modules/blazing/model"
|
||||
configmodel "blazing/modules/config/model"
|
||||
"blazing/modules/config/service"
|
||||
"blazing/modules/player/model"
|
||||
|
||||
"sync/atomic"
|
||||
|
||||
@@ -188,26 +188,20 @@ func (h Controller) PetTawor(data *fight.StartTwarInboundInfo, c *player.Player)
|
||||
if foi.Reason == 0 && foi.WinnerId == c.Info.UserID { //我放获胜
|
||||
switch data.Head.CMD {
|
||||
case 2429: //试炼之塔
|
||||
for _, v := range boss.TaskIds {
|
||||
c.CompletedTask(int(v), 600)
|
||||
}
|
||||
c.BossCompletedTask(600, int(c.Info.CurrentStage))
|
||||
c.Info.CurrentFreshStage++
|
||||
if c.Info.CurrentFreshStage >= c.Info.MaxFreshStage {
|
||||
c.Info.MaxFreshStage = c.Info.CurrentFreshStage
|
||||
}
|
||||
|
||||
case 2415: //勇者之塔
|
||||
for _, v := range boss.TaskIds {
|
||||
c.CompletedTask(int(v), 500)
|
||||
}
|
||||
c.BossCompletedTask(500, int(c.Info.CurrentStage))
|
||||
c.Info.CurrentStage++
|
||||
if c.Info.CurrentStage >= c.Info.MaxStage {
|
||||
c.Info.MaxStage = c.Info.CurrentStage
|
||||
}
|
||||
case 2425:
|
||||
for _, v := range boss.TaskIds {
|
||||
c.CompletedTask(int(v), 110)
|
||||
}
|
||||
c.BossCompletedTask(110, int(c.Info.CurrentStage))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
"blazing/logic/service/fight"
|
||||
"blazing/logic/service/item"
|
||||
"blazing/logic/service/player"
|
||||
"blazing/modules/blazing/model"
|
||||
"blazing/modules/player/model"
|
||||
|
||||
"github.com/jinzhu/copier"
|
||||
)
|
||||
|
||||
@@ -3,8 +3,13 @@ package controller
|
||||
import (
|
||||
"blazing/common/rpc"
|
||||
"blazing/common/socket/errorcode"
|
||||
"blazing/cool"
|
||||
"blazing/logic/service/user"
|
||||
"blazing/modules/base/service"
|
||||
playerservice "blazing/modules/player/service"
|
||||
"context"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
|
||||
"github.com/panjf2000/gnet/v2"
|
||||
)
|
||||
@@ -21,12 +26,37 @@ import (
|
||||
// GetServerOnline 处理命令: 105
|
||||
func (h Controller) GetServerOnline(data *user.SidInfo, c gnet.Conn) (result *rpc.CommendSvrInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
result = rpc.NewInInfo()
|
||||
// tt, _ := cool.CacheManager.Keys(context.Background())
|
||||
//g.Dump(tt)
|
||||
t1 := hex.EncodeToString(data.Sid)
|
||||
userid, ok := playerservice.User.Load(t1)
|
||||
if !ok || userid != data.Head.UserID {
|
||||
|
||||
defer c.Close()
|
||||
return
|
||||
}
|
||||
|
||||
// if service.NewBaseSysUserService().GetPerson(data.Head.UserID).Debug == 1 {
|
||||
// result.IsVip = 1
|
||||
// }
|
||||
result.IsVip = 1
|
||||
result.ServerList = rpc.GetServerInfoList(service.NewBaseSysUserService().GetPerson(data.Head.UserID).Debug)
|
||||
defer func() {
|
||||
|
||||
// share.ShareManager.DeleteSession(t1)
|
||||
|
||||
ser := playerservice.NewUserService(data.Head.UserID)
|
||||
kickErr := ser.Info.Kick(data.Head.UserID)
|
||||
if kickErr != nil {
|
||||
fmt.Println("踢人失败", kickErr)
|
||||
|
||||
}
|
||||
logininfo := ser.Info.SetLogin()
|
||||
if logininfo != nil {
|
||||
cool.CacheManager.Set(context.TODO(), fmt.Sprintf("player: %d", data.Head.UserID), logininfo, 0)
|
||||
cool.CacheManager.Set(context.Background(), fmt.Sprintf("session: %d", data.Head.UserID), t1, 0)
|
||||
|
||||
}
|
||||
|
||||
}()
|
||||
|
||||
return
|
||||
|
||||
//return //TODO 这里待实现改成接口调用Ret方法
|
||||
|
||||
@@ -3,7 +3,6 @@ package controller
|
||||
import (
|
||||
"blazing/common/data/share"
|
||||
"blazing/cool"
|
||||
"fmt"
|
||||
|
||||
"blazing/common/socket/errorcode"
|
||||
|
||||
@@ -11,7 +10,7 @@ import (
|
||||
|
||||
"blazing/logic/service/player"
|
||||
"blazing/logic/service/space"
|
||||
blservice "blazing/modules/blazing/service"
|
||||
"blazing/modules/player/service"
|
||||
"context"
|
||||
"time"
|
||||
|
||||
@@ -27,13 +26,6 @@ func (h Controller) Login(data *user.MAIN_LOGIN_IN, c gnet.Conn) (result *user.L
|
||||
return
|
||||
}
|
||||
|
||||
kickErr := h.RPCClient.Kick(data.Head.UserID) //先踢人
|
||||
if kickErr != nil {
|
||||
fmt.Println("踢人失败", err)
|
||||
}
|
||||
|
||||
cool.Logger.Info(context.TODO(), "踢人请求完成,继续登录流程")
|
||||
|
||||
share.ShareManager.SetUserOnline(data.Head.UserID, h.Port) //设置用户登录服务器
|
||||
currentPlayer := player.GetPlayer(c, data.Head.UserID)
|
||||
if currentPlayer == nil {
|
||||
@@ -42,9 +34,9 @@ func (h Controller) Login(data *user.MAIN_LOGIN_IN, c gnet.Conn) (result *user.L
|
||||
defer c.Close()
|
||||
return
|
||||
}
|
||||
currentPlayer.Service = blservice.NewUserService(data.Head.UserID)
|
||||
currentPlayer.Service = service.NewUserService(data.Head.UserID)
|
||||
|
||||
currentPlayer.Info = currentPlayer.Service.Info.Personself()
|
||||
currentPlayer.Info = currentPlayer.Service.Info.GetCache()
|
||||
|
||||
if currentPlayer.Info == nil {
|
||||
defer c.Close()
|
||||
|
||||
95
logic/controller/pet_breed.go
Normal file
95
logic/controller/pet_breed.go
Normal file
@@ -0,0 +1,95 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"blazing/common/socket/errorcode"
|
||||
"blazing/logic/service/fight"
|
||||
"blazing/logic/service/pet"
|
||||
"blazing/logic/service/player"
|
||||
)
|
||||
|
||||
// GetBreedInfo 获取繁殖信息协议
|
||||
// 前端到后端无数据 请求协议
|
||||
func (ctl Controller) GetBreedInfo(
|
||||
data *pet.C2S_GET_BREED_INFO, playerObj *player.Player) (result *pet.S2C_GET_BREED_INFO, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
|
||||
result = &pet.S2C_GET_BREED_INFO{}
|
||||
// TODO: 实现获取繁殖信息的具体逻辑
|
||||
return result, 0
|
||||
|
||||
}
|
||||
|
||||
// GetBreedPet 获取繁殖精灵
|
||||
// 前端到后端
|
||||
func (ctl Controller) GetBreedPet(
|
||||
data *pet.C2S_GET_BREED_PET, playerObj *player.Player) (result *pet.S2C_GET_BREED_PET, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
|
||||
result = &pet.S2C_GET_BREED_PET{}
|
||||
// TODO: 实现获取可繁殖雌性精灵列表的逻辑
|
||||
// 这里只是示例,实际应该根据雄性精灵的catchTime查找可繁殖的雌性精灵
|
||||
for _, v := range playerObj.Info.PetList {
|
||||
// 如果是雌性精灵,且可以繁殖,则添加到列表
|
||||
result.FemaleList = append(result.FemaleList, v.CatchTime)
|
||||
}
|
||||
return result, 0
|
||||
|
||||
}
|
||||
|
||||
// StartBreed 开始繁殖协议
|
||||
// 前端到后端
|
||||
func (ctl Controller) StartBreed(
|
||||
data *pet.C2S_START_BREED, playerObj *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
|
||||
// TODO: 实现开始繁殖的具体逻辑
|
||||
result = &fight.NullOutboundInfo{}
|
||||
return result, 0
|
||||
|
||||
}
|
||||
|
||||
// GetEggList 获取精灵蛋数组
|
||||
// 前端到后端无数据 请求协议
|
||||
func (ctl Controller) GetEggList(
|
||||
data *pet.C2S_GET_EGG_LIST, playerObj *player.Player) (result *pet.S2C_GET_EGG_LIST, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
|
||||
result = &pet.S2C_GET_EGG_LIST{}
|
||||
// TODO: 实现获取精灵蛋列表的逻辑
|
||||
// 示例数据,实际应从玩家数据中获取
|
||||
result.EggList = append(result.EggList, pet.EggInfo{EggID: 1, OwnerID: 10001, EggCatchTime: 122123})
|
||||
return result, 0
|
||||
|
||||
}
|
||||
|
||||
// EffectHatch 精灵蛋互动协议
|
||||
// 前端到后端
|
||||
func (ctl Controller) EffectHatch(
|
||||
data *pet.C2S_EFFECT_HATCH, playerObj *player.Player) (result *pet.S2C_EFFECT_HATCH, err errorcode.ErrorCode) {
|
||||
|
||||
result = &pet.S2C_EFFECT_HATCH{}
|
||||
// TODO: 实现精灵蛋互动逻辑,根据互动ID更新亲密度
|
||||
result.Intimacy = 1 // 悲伤
|
||||
return result, 0
|
||||
|
||||
}
|
||||
|
||||
// StartHatch 开始孵化精灵蛋
|
||||
// 前端到后端
|
||||
func (ctl Controller) StartHatch(
|
||||
data *pet.C2S_START_HATCH, playerObj *player.Player) (result *pet.S2C_START_HATCH, err errorcode.ErrorCode) {
|
||||
|
||||
// TODO: 实现开始孵化精灵蛋的具体逻辑
|
||||
result = &pet.S2C_START_HATCH{}
|
||||
return result, 0
|
||||
|
||||
}
|
||||
|
||||
// GetHatchPet 获得孵化精灵协议
|
||||
// 前端到后端无数据内容 请求协议
|
||||
func (ctl Controller) GetHatchPet(
|
||||
data *pet.C2S_GET_HATCH_PET, playerObj *player.Player) (result *pet.S2C_GET_HATCH_PET, err errorcode.ErrorCode) {
|
||||
|
||||
result = &pet.S2C_GET_HATCH_PET{}
|
||||
// TODO: 实现获得孵化精灵的具体逻辑,这里暂时返回默认值
|
||||
result.PetID = 0
|
||||
result.CatchTime = 0
|
||||
return result, 0
|
||||
|
||||
}
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"blazing/common/socket/errorcode"
|
||||
"blazing/logic/service/pet"
|
||||
"blazing/logic/service/player"
|
||||
"blazing/modules/blazing/model"
|
||||
"blazing/modules/player/model"
|
||||
|
||||
"github.com/samber/lo"
|
||||
)
|
||||
|
||||
@@ -5,8 +5,8 @@ import (
|
||||
"blazing/common/socket/errorcode"
|
||||
"blazing/logic/service/pet"
|
||||
"blazing/logic/service/player"
|
||||
"blazing/modules/blazing/model"
|
||||
"blazing/modules/config/service"
|
||||
"blazing/modules/player/model"
|
||||
|
||||
"github.com/alpacahq/alpacadecimal"
|
||||
"github.com/gogf/gf/v2/util/grand"
|
||||
|
||||
@@ -7,7 +7,7 @@ import (
|
||||
"blazing/logic/service/fight"
|
||||
"blazing/logic/service/pet"
|
||||
"blazing/logic/service/player"
|
||||
"blazing/modules/blazing/model"
|
||||
"blazing/modules/player/model"
|
||||
|
||||
"github.com/samber/lo"
|
||||
)
|
||||
|
||||
@@ -20,7 +20,7 @@ func (h Controller) BuyFitment(data *room.C2S_BUY_FITMENT, c *player.Player) (re
|
||||
if !c.GetCoins(uint32(totalCost)) {
|
||||
return nil, errorcode.ErrorCodes.ErrSunDouInsufficient10016
|
||||
}
|
||||
c.Service.Room.Add(data.ID, data.Count)
|
||||
c.Service.Item.UPDATE(data.ID, int(data.Count))
|
||||
c.Info.Coins -= uint32(totalCost)
|
||||
result.ID = data.ID
|
||||
result.Coins = c.Info.Coins
|
||||
|
||||
@@ -2,7 +2,7 @@ package controller
|
||||
|
||||
import (
|
||||
"blazing/common/socket/errorcode"
|
||||
"blazing/modules/blazing/model"
|
||||
"blazing/modules/player/model"
|
||||
|
||||
"blazing/logic/service/pet"
|
||||
"blazing/logic/service/player"
|
||||
@@ -55,10 +55,19 @@ func (h Controller) GetAllFurniture(data *room.FitmentAllInboundEmpty, c *player
|
||||
result = &room.FitmentAllOutboundInfo{}
|
||||
result.Fitments = make([]room.FitmentItemInfo, 0)
|
||||
|
||||
items := c.Service.Item.Get(500000, 600000)
|
||||
roomData := c.Service.Room.Get(c.Info.UserID)
|
||||
for itemID, count := range roomData.OwnedItems {
|
||||
result.Fitments = append(result.Fitments, room.FitmentItemInfo{Id: itemID, AllCount: count, UsedCount: roomData.UserItems[itemID]})
|
||||
for _, item := range items {
|
||||
var itemInfo room.FitmentItemInfo
|
||||
itemInfo.Id = item.ItemId
|
||||
itemInfo.AllCount = item.ItemCnt
|
||||
i, ok := roomData.UsedItems[item.ItemId]
|
||||
if ok {
|
||||
itemInfo.UsedCount = i
|
||||
}
|
||||
result.Fitments = append(result.Fitments, itemInfo)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ import (
|
||||
// c: 当前玩家对象
|
||||
// 返回: 空结果和错误码
|
||||
func (h Controller) SetFitment(data *room.SET_FITMENT, c *player.Player) (result *room.NullInfo, err errorcode.ErrorCode) {
|
||||
|
||||
c.Service.Room.Set(data.Fitments)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -7,7 +7,8 @@ import (
|
||||
"blazing/logic/service/item"
|
||||
"blazing/logic/service/player"
|
||||
"blazing/logic/service/user"
|
||||
"blazing/modules/blazing/model"
|
||||
"blazing/modules/player/model"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// PlayerAim 玩家射击操作
|
||||
@@ -160,3 +161,34 @@ func (h Controller) ChangePlayerCloth(data *item.ChangePlayerClothInboundInfo, p
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (h Controller) ChangePlayerName(data *user.ChangePlayerNameInboundInfo, c *player.Player) (result *user.ChangePlayerNameOutboundInfo, err errorcode.ErrorCode) {
|
||||
newNickname := cool.Filter.Replace(strings.Trim(data.Nickname, "\x00"), '*')
|
||||
|
||||
c.Info.Nick = newNickname
|
||||
result = &user.ChangePlayerNameOutboundInfo{
|
||||
Nickname: newNickname,
|
||||
UserID: c.Info.UserID,
|
||||
}
|
||||
c.GetSpace().Broadcast(c, data.Head.CMD, result)
|
||||
|
||||
return result, 0
|
||||
}
|
||||
func (h Controller) ChangeTile(data *user.ChangeTitleInboundInfo, c *player.Player) (result *user.ChangeTitleOutboundInfo, err errorcode.ErrorCode) {
|
||||
result = &user.ChangeTitleOutboundInfo{
|
||||
|
||||
UserID: c.Info.UserID,
|
||||
}
|
||||
if data.TileID == 0 {
|
||||
return result, 0
|
||||
}
|
||||
if !c.Service.Title.Can(data.TileID) {
|
||||
return nil, errorcode.ErrorCodes.ErrSystemError
|
||||
}
|
||||
c.Info.Title = data.TileID
|
||||
result.TileID = data.TileID
|
||||
|
||||
c.GetSpace().Broadcast(c, data.Head.CMD, result)
|
||||
|
||||
return result, 0
|
||||
}
|
||||
|
||||
56
logic/controller/user_cdk.go
Normal file
56
logic/controller/user_cdk.go
Normal file
@@ -0,0 +1,56 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"blazing/common/socket/errorcode"
|
||||
"blazing/logic/service/player"
|
||||
"blazing/logic/service/user"
|
||||
"blazing/modules/config/service"
|
||||
"blazing/modules/player/model"
|
||||
"time"
|
||||
)
|
||||
|
||||
func (h Controller) CDK(data *user.C2S_GET_GIFT_COMPLETE, player *player.Player) (result *user.S2C_GET_GIFT_COMPLETE, err errorcode.ErrorCode) {
|
||||
result = &user.S2C_GET_GIFT_COMPLETE{}
|
||||
|
||||
r := service.NewCdkService().Get(data.PassText)
|
||||
if r == nil {
|
||||
return nil, errorcode.ErrorCodes.ErrMolecularCodeNotExists
|
||||
}
|
||||
|
||||
if r.ValidEndTime.Compare(time.Now()) == -1 {
|
||||
return nil, errorcode.ErrorCodes.ErrMolecularCodeExpired
|
||||
}
|
||||
if !player.Service.Cdk.CanGet(uint32(r.ID)) {
|
||||
return
|
||||
}
|
||||
if !service.NewCdkService().Set(data.PassText) {
|
||||
return nil, errorcode.ErrorCodes.ErrMolecularCodeGiftsGone
|
||||
}
|
||||
|
||||
result.Flag = 1
|
||||
for _, v := range r.ElfRewardIds {
|
||||
pet := service.NewPetRewardService().Get(v)
|
||||
if pet != nil {
|
||||
peti := model.GenPetInfo(int(pet.MonID), int(pet.DV), int(pet.Nature), int(pet.Effect), int(pet.Lv), nil)
|
||||
player.Service.Pet.PetAdd(peti)
|
||||
result.PetGift = append(result.PetGift, user.PetGiftInfo{PetID: peti.ID, CacthTime: peti.CatchTime})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
for _, itemID := range r.ItemRewardIds {
|
||||
iteminfo := service.NewItemService().GetItemCount(itemID)
|
||||
player.ItemAdd(iteminfo.ItemId, iteminfo.ItemCnt)
|
||||
|
||||
result.GiftList = append(result.GiftList, user.GiftInfo{GiftID: iteminfo.ItemId, Count: iteminfo.ItemCnt})
|
||||
|
||||
}
|
||||
if r.TitleRewardIds != 0 {
|
||||
player.Service.Title.Give(r.TitleRewardIds)
|
||||
result.Tile = r.TitleRewardIds
|
||||
|
||||
}
|
||||
player.Service.Cdk.Log(uint32(r.ID))
|
||||
|
||||
return
|
||||
}
|
||||
@@ -3,10 +3,9 @@ package controller
|
||||
import (
|
||||
"blazing/common/socket/errorcode"
|
||||
"blazing/cool"
|
||||
"blazing/modules/player/service"
|
||||
|
||||
"blazing/logic/service/player"
|
||||
"blazing/logic/service/user"
|
||||
blservice "blazing/modules/blazing/service"
|
||||
"strings"
|
||||
|
||||
"github.com/panjf2000/gnet/v2"
|
||||
@@ -15,19 +14,7 @@ import (
|
||||
// CreatePlayer 处理命令: 1001
|
||||
func (h Controller) CreatePlayer(data *user.CreatePlayerInboundInfo, c gnet.Conn) (result *user.CreatePlayerOutInfo, err errorcode.ErrorCode) {
|
||||
data.Nickname = strings.Trim(data.Nickname, "\x00")
|
||||
blservice.NewUserService(data.Head.UserID).Info.Reg(cool.Filter.Replace(data.Nickname, '*'), data.Color)
|
||||
return result, 0
|
||||
}
|
||||
|
||||
func (h Controller) ChangePlayerName(data *user.ChangePlayerNameInboundInfo, c *player.Player) (result *user.ChangePlayerNameOutboundInfo, err errorcode.ErrorCode) {
|
||||
newNickname := cool.Filter.Replace(strings.Trim(data.Nickname, "\x00"), '*')
|
||||
|
||||
c.Info.Nick = newNickname
|
||||
result = &user.ChangePlayerNameOutboundInfo{
|
||||
Nickname: newNickname,
|
||||
UserID: c.Info.UserID,
|
||||
}
|
||||
c.GetSpace().Broadcast(c, data.Head.CMD, result)
|
||||
service.NewUserService(data.Head.UserID).Info.Reg(cool.Filter.Replace(data.Nickname, '*'), data.Color)
|
||||
|
||||
return result, 0
|
||||
}
|
||||
|
||||
@@ -3,11 +3,11 @@ package controller
|
||||
import (
|
||||
"blazing/common/data"
|
||||
"blazing/common/socket/errorcode"
|
||||
"fmt"
|
||||
|
||||
"blazing/logic/service/player"
|
||||
"blazing/logic/service/task"
|
||||
"blazing/modules/blazing/model"
|
||||
"blazing/modules/config/service"
|
||||
"blazing/modules/player/model"
|
||||
)
|
||||
|
||||
// AcceptTask 接受任务
|
||||
@@ -16,13 +16,14 @@ func (h Controller) AcceptTask(data *task.AcceptTaskInboundInfo, c *player.Playe
|
||||
// if data.Head.CMD != 2201 { //判断是每日任务
|
||||
// //isdaliy = true
|
||||
// }
|
||||
if c.Info.GetTask(int(data.TaskId)) == model.Completed {
|
||||
return result, 0
|
||||
if c.Info.GetTask(int(data.TaskId)) != model.Unaccepted {
|
||||
return nil, errorcode.ErrorCodes.ErrSystemError
|
||||
}
|
||||
if !service.NewTaskService().IsAcceptable(data.TaskId) {
|
||||
return nil, errorcode.ErrorCodes.ErrSystemError
|
||||
}
|
||||
if c.Info.GetTask(int(data.TaskId)) == model.Unaccepted {
|
||||
c.Info.SetTask(int(data.TaskId), model.Accepted)
|
||||
|
||||
}
|
||||
c.Info.SetTask(int(data.TaskId), model.Accepted)
|
||||
c.Service.Task.Exec(uint32(data.TaskId), func(t *model.TaskEX) bool {
|
||||
t.Data = []uint32{}
|
||||
|
||||
@@ -39,6 +40,10 @@ func (h Controller) AcceptTask(data *task.AcceptTaskInboundInfo, c *player.Playe
|
||||
// c: 当前玩家对象
|
||||
// 返回: 空输出结果和错误码
|
||||
func (h Controller) AddTaskBuf(data *task.AddTaskBufInboundInfo, c *player.Player) (result *task.AddTaskBufOutboundInfo, err errorcode.ErrorCode) {
|
||||
|
||||
if !service.NewTaskService().IsAcceptable(data.TaskId) {
|
||||
return nil, errorcode.ErrorCodes.ErrSystemError
|
||||
}
|
||||
c.Service.Task.Exec(data.TaskId, func(taskEx *model.TaskEX) bool {
|
||||
taskEx.Data = data.TaskList
|
||||
return true
|
||||
@@ -54,9 +59,12 @@ func (h Controller) CompleteTask(data1 *task.CompleteTaskInboundInfo, c *player.
|
||||
if c.Info.GetTask(int(data1.TaskId)) != model.Accepted {
|
||||
return result, errorcode.ErrorCodes.ErrAwardAlreadyClaimed
|
||||
}
|
||||
if data1.OutState > 10 {
|
||||
fmt.Println("error", data1.OutState, c.Info.UserID, "分支溢出")
|
||||
return result, 0
|
||||
// if data1.OutState > 10 {
|
||||
// fmt.Println("error", data1.OutState, c.Info.UserID, "分支溢出")
|
||||
// return result, 0
|
||||
// }
|
||||
if !service.NewTaskService().IsAcceptable(data1.TaskId) {
|
||||
return nil, errorcode.ErrorCodes.ErrSystemError
|
||||
}
|
||||
c.Info.SetTask(int(data1.TaskId), model.Completed)
|
||||
|
||||
@@ -65,7 +73,7 @@ func (h Controller) CompleteTask(data1 *task.CompleteTaskInboundInfo, c *player.
|
||||
ItemList: make([]data.ItemInfo, 0),
|
||||
}
|
||||
|
||||
taskInfo := task.GetTaskInfo(data1.TaskId, data1.OutState)
|
||||
taskInfo := task.GetTaskInfo(int(data1.TaskId), int(data1.OutState))
|
||||
if taskInfo == nil {
|
||||
return result, 0
|
||||
}
|
||||
@@ -104,7 +112,9 @@ func (h Controller) GetTaskBuf(data *task.GetTaskBufInboundInfo, c *player.Playe
|
||||
|
||||
// DeleteTask 删除任务
|
||||
func (h Controller) DeleteTask(data *task.DeleteTaskInboundInfo, c *player.Player) (result *task.DeleteTaskOutboundInfo, err errorcode.ErrorCode) {
|
||||
|
||||
if !service.NewTaskService().IsAcceptable(data.TaskId) {
|
||||
return nil, errorcode.ErrorCodes.ErrSystemError
|
||||
}
|
||||
if c.Info.GetTask(int(data.TaskId)) == model.Accepted {
|
||||
c.Info.SetTask(int(data.TaskId), model.Unaccepted)
|
||||
return &task.DeleteTaskOutboundInfo{TaskId: data.TaskId}, 0
|
||||
|
||||
Reference in New Issue
Block a user