diff --git a/logic/controller/fight_boss野怪和地图怪.go b/logic/controller/fight_boss野怪和地图怪.go index 9b53738ea..4806e601c 100644 --- a/logic/controller/fight_boss野怪和地图怪.go +++ b/logic/controller/fight_boss野怪和地图怪.go @@ -180,6 +180,7 @@ func (Controller) OnPlayerFightNpcMonster(data1 *fight.FightNpcMonsterInboundInf int(refPet.Lv), refPet.ShinyInfo, -1) + monster.CatchMap = p.Info.MapID //设置当前地图 if refPet.Ext != 0 { if grand.Meet(2, 1000) { monster.RandShiny() @@ -203,11 +204,13 @@ func (Controller) OnPlayerFightNpcMonster(data1 *fight.FightNpcMonsterInboundInf addlevel, poolevel := p.CanGetExp() addexp := gconv.Float32(addlevel * gconv.Float32(exp)) poolexp := gconv.Float32(poolevel) * gconv.Float32((exp)) - items := &info.S2C_GET_BOSS_MONSTER{ - //EV: 45, - EXP: uint32(poolexp), - } - p.Info.ExpPool += int64(poolexp + addexp) + items := &info.S2C_GET_BOSS_MONSTER{} + + p.ItemAdd(3, int64(poolexp+addexp)) + items.ItemList = append(items.ItemList, data.ItemInfo{ + ItemId: 3, + ItemCnt: int64(poolexp), + }) p.AddPetExp(foi.Winpet, int64(addexp)) if refPet.Item != 0 { count := int64(grand.Intn(2) + 1) diff --git a/logic/controller/fight_擂台.go b/logic/controller/fight_擂台.go index e60d3970f..d8979b890 100644 --- a/logic/controller/fight_擂台.go +++ b/logic/controller/fight_擂台.go @@ -1,12 +1,12 @@ package controller import ( + "blazing/common/data" "blazing/common/socket/errorcode" "sync/atomic" "blazing/logic/service/fight" "blazing/logic/service/fight/info" - "blazing/logic/service/pet" "blazing/logic/service/player" "blazing/logic/service/space" ) @@ -39,7 +39,7 @@ func (h Controller) ArenaSetOwner(data *fight.ARENA_SET_OWENR, c *player.Player) // 后端到前端无数据内容 空包 // 还是后端主动发送2503的包给双方前端后 等待前端加载完毕 主动发送2404包通知后端开始战斗 // ArenaFightOwner 并不会通知对方是否接受挑战。只要有人挑战就直接进入对战 -func (h Controller) ArenaFightOwner(data *fight.ARENA_FIGHT_OWENR, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) { +func (h Controller) ArenaFightOwner(data1 *fight.ARENA_FIGHT_OWENR, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) { if !c.CanFight() { return nil, errorcode.ErrorCodes.ErrNoEligiblePokemon @@ -78,25 +78,36 @@ func (h Controller) ArenaFightOwner(data *fight.ARENA_FIGHT_OWENR, c *player.Pla if foi.Reason == 0 { //正常获胜 // addev := int64(int(1) * int(cool.Connected) * int(c.GetSpace().Owner.HostWins) * (int(c.GetSpace().User.Count()) / int(cool.Connected))) - addev := int64(int(1) * int(c.GetSpace().Owner.HostWins) * (int(c.GetSpace().User.Count()))) + addev := int64(int(2) * int(c.GetSpace().Owner.HostWins) * (int(c.GetSpace().User.Count()))) if foi.WinnerId == c.GetInfo().UserID { c.Info.MaxArenaWins += 1 - c.Info.EVPool += addev + if addev != 0 { + c.Info.EVPool += addev + + c.SendPackCmd(8004, &info.S2C_GET_BOSS_MONSTER{ //发送EV + ItemList: []data.ItemInfo{data.ItemInfo{ + ItemId: 9, + ItemCnt: int64(addev), + }}, + }) + } - c.SendPackCmd(50001, &pet.S2C_50001{ - UseEV: int32(addev), - }) } else { oper := c.GetSpace().Owner.ARENA_Player if oper != nil { if oper.GetInfo() != nil { c.GetSpace().Owner.ARENA_Player.GetInfo().MaxArenaWins += 1 + if addev != 0 { + c.GetSpace().Owner.ARENA_Player.GetInfo().EVPool += addev - c.GetSpace().Owner.ARENA_Player.GetInfo().EVPool += addev + c.GetSpace().Owner.ARENA_Player.SendPackCmd(8004, &info.S2C_GET_BOSS_MONSTER{ //发送EV + ItemList: []data.ItemInfo{data.ItemInfo{ + ItemId: 9, + ItemCnt: int64(addev), + }}, + }) + } - c.GetSpace().Owner.ARENA_Player.SendPackCmd(50001, &pet.S2C_50001{ - UseEV: int32(addev), - }) } } diff --git a/logic/controller/pet_ev.go b/logic/controller/pet_ev.go index 2d8c91576..7d0733a21 100644 --- a/logic/controller/pet_ev.go +++ b/logic/controller/pet_ev.go @@ -2,6 +2,7 @@ package controller import ( "blazing/common/socket/errorcode" + "blazing/logic/service/fight" "blazing/logic/service/pet" "blazing/logic/service/player" @@ -12,7 +13,7 @@ import ( // data: 包含宠物捕获时间和EV分配数据的输入信息 // c: 当前玩家对象 // 返回: 分配结果和错误码 -func (h Controller) PetEVDiy(data *pet.PetEV, c *player.Player) (result *pet.S2C_50001, err errorcode.ErrorCode) { +func (h Controller) PetEVDiy(data *pet.PetEV, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) { _, currentPet, found := c.FindPet(data.CacthTime) if !found { return nil, errorcode.ErrorCodes.Err10401 @@ -45,7 +46,7 @@ func (h Controller) PetEVDiy(data *pet.PetEV, c *player.Player) (result *pet.S2C currentPet.CalculatePetPane(false) c.Info.EVPool -= int64(usedEV) - result = &pet.S2C_50001{} - result.UseEV = -int32(usedEV) + // result = &pet.S2C_50001{} + // result.UseEV = -int32(usedEV) return result, 0 } diff --git a/logic/controller/user_info.go b/logic/controller/user_info.go index 208c2d223..d86c20577 100644 --- a/logic/controller/user_info.go +++ b/logic/controller/user_info.go @@ -63,5 +63,6 @@ func (h Controller) GetPlayerExp(data *item.ExpTotalRemainInboundInfo, player *p return &item.ExpTotalRemainOutboundInfo{ TotalExp: uint32(player.Info.ExpPool), + TotalEv: uint32(player.Info.EVPool), }, 0 } diff --git a/logic/service/fight/info/over.go b/logic/service/fight/info/over.go index e8423be1f..54fb13105 100644 --- a/logic/service/fight/info/over.go +++ b/logic/service/fight/info/over.go @@ -3,9 +3,9 @@ package info import "blazing/common/data" type S2C_GET_BOSS_MONSTER struct { - BonusID uint32 // 激活前端任务的ID - EXP uint32 `json:"exp" description:"奖励经验"` - EV int64 `struc:"uint32"` + BonusID uint32 // 激活前端任务的ID + // EXP uint32 `json:"exp" description:"奖励经验"` + // EV int64 `struc:"uint32"` PetID uint32 // 发放精灵的ID CaptureTm uint32 // 发放精灵的捕获时间 ItemListLen uint32 `struc:"sizeof=ItemList"` diff --git a/logic/service/item/item.go b/logic/service/item/item.go index a55603147..b184f401c 100644 --- a/logic/service/item/item.go +++ b/logic/service/item/item.go @@ -29,7 +29,7 @@ type GoldOnlineRemainInboundInfo struct { type GoldOnlineRemainOutboundInfo struct { // GoldNumber 金豆数量(后端返回实际数量需要*100) GoldNumber uint32 `json:"goldNumber" ` - Coin int64 `struc:"uint32"` + Coin int64 `struc:"uint32"` } // ExpTotalRemainInboundInfo 累计经验相关的入站信息 @@ -42,4 +42,5 @@ type ExpTotalRemainInboundInfo struct { type ExpTotalRemainOutboundInfo struct { // TotalExp 累计经验值(根据实际业务需求确定是否需要倍率转换) TotalExp uint32 `json:"totalExp" ` + TotalEv uint32 `json:"totalEv" ` } diff --git a/logic/service/pet/BargeList.go b/logic/service/pet/BargeList.go index 555f5bece..ecf761e87 100644 --- a/logic/service/pet/BargeList.go +++ b/logic/service/pet/BargeList.go @@ -31,9 +31,7 @@ type PetEV struct { CacthTime uint32 `description:"捕捉时间" codec:"cacthTime"` EVs [6]uint32 `description:"属性" codec:"evs"` } -type S2C_50001 struct { - UseEV int32 //用掉的学习力 -} + type S2C_9756 struct { UseEV uint32 //用掉的学习力 } diff --git a/modules/config/service/shiny.go b/modules/config/service/shiny.go index ca59eb0ea..75d7b7dda 100644 --- a/modules/config/service/shiny.go +++ b/modules/config/service/shiny.go @@ -137,7 +137,7 @@ func (s *ShinyService) GetShiny(id int) *data.GlowFilter { var ret []model.ColorfulSkin // 执行 Raw SQL 并扫描返回值 - dbm_enable(s.Model). + dbm_nocache_noenable(s.Model). Where("id", id).Scan(&ret) if len(ret) == 0 { return nil diff --git a/modules/dict/service/dict_info.go b/modules/dict/service/dict_info.go index 5b9b557ef..ff2ef90ba 100644 --- a/modules/dict/service/dict_info.go +++ b/modules/dict/service/dict_info.go @@ -169,7 +169,7 @@ func NewDictInfoService() *DictInfoService { Model: model.NewDictInfo(), ListQueryOp: &cool.QueryOp{ FieldEQ: []string{"typeId"}, - KeyWordField: []string{"name"}, + KeyWordField: []string{"name", "value"}, AddOrderby: g.MapStrStr{"createTime": "ASC"}, }, }, diff --git a/modules/player/controller/admin/monster_get.go b/modules/player/controller/admin/pet.go similarity index 87% rename from modules/player/controller/admin/monster_get.go rename to modules/player/controller/admin/pet.go index ef3dacb3d..f88c7511d 100644 --- a/modules/player/controller/admin/monster_get.go +++ b/modules/player/controller/admin/pet.go @@ -1,7 +1,9 @@ package admin import ( + "blazing/common/data" "blazing/cool" + config "blazing/modules/config/service" "blazing/modules/player/model" "blazing/modules/player/service" "context" @@ -14,6 +16,8 @@ type PetBagController struct { } type PetGetReq struct { g.Meta `path:"/genpet" method:"POST"` + UserID uint32 `json:"user_id"` + IsVIP int `json:"is_vip"` // 新增:精灵相关参数(完全对齐自定义表单配置) PetTypeId int `json:"petTypeId" v:"required|min:1" comment:"精灵类型ID,必填,正整数(最小1,无0或负数类型),对应GenPetInfo的id参数"` IndividualValue int `json:"individualValue" v:"required|between:-1,31" comment:"精灵个体值,必填,范围-1~31(-1表示随机生成满个体,0~31为固定值,决定基础属性上限)"` @@ -35,16 +39,17 @@ func init() { cool.RegisterController(task_info_controller) } func (c *PetBagController) GetSession(ctx context.Context, req *PetGetReq) (res *cool.BaseRes, err error) { + var shiny []data.GlowFilter + if req.IsShiny != 0 { + r := config.NewShinyService().GetShiny(req.IsShiny) + shiny = append(shiny, *r) + } - var ( - admin = cool.GetAdmin(ctx) - //r = g.RequestFromCtx(ctx) - ) t := model.GenPetInfo( - req.PetTypeId, req.IndividualValue, req.NatureId, req.AbilityTypeEnum, req.Level, nil, -1) - t.FixShiny() + req.PetTypeId, req.IndividualValue, req.NatureId, req.AbilityTypeEnum, req.Level, shiny, -1) + t.CatchRect = 1 //代表这是人工合成的 - service.NewUserService(uint32(admin.UserId)).Pet.PetAdd(t) + service.NewUserService(uint32(req.UserID)).Pet.PetAdd(t) return }