diff --git a/common/cool/service.go b/common/cool/service.go index ab5371a44..f9a744ca9 100644 --- a/common/cool/service.go +++ b/common/cool/service.go @@ -135,6 +135,8 @@ func (s *Service) ServiceUpdate(ctx context.Context, req *UpdateReq) (data inter } } m := DBM(s.Model) + rmap["updateTime"] = nil + //rmap["id"] = nil _, err = m.Data(rmap).Where("id", rmap["id"]).Update() return diff --git a/logic/controller/fight_擂台.go b/logic/controller/fight_擂台.go index bc691c0ed..502a50dce 100644 --- a/logic/controller/fight_擂台.go +++ b/logic/controller/fight_擂台.go @@ -87,13 +87,17 @@ func (h Controller) ArenaFightOwner(data *fight.ARENA_FIGHT_OWENR, c *player.Pla UseEV: int32(addev), }) } else { - c.GetSpace().Owner.ARENA_Player.GetInfo().MaxArenaWins += 1 + oper := c.GetSpace().Owner.ARENA_Player.GetInfo() + if oper != nil { + c.GetSpace().Owner.ARENA_Player.GetInfo().MaxArenaWins += 1 - c.GetSpace().Owner.ARENA_Player.GetInfo().EVPool += addev + c.GetSpace().Owner.ARENA_Player.GetInfo().EVPool += addev + + c.GetSpace().Owner.ARENA_Player.SendPackCmd(50001, &pet.S2C_50001{ + UseEV: int32(addev), + }) + } - c.GetSpace().Owner.ARENA_Player.SendPackCmd(50001, &pet.S2C_50001{ - UseEV: int32(addev), - }) } } diff --git a/logic/controller/map.go b/logic/controller/map.go index 9815961ef..f60ebb021 100644 --- a/logic/controller/map.go +++ b/logic/controller/map.go @@ -30,17 +30,14 @@ func (h Controller) EnterMap(data *space.InInfo, c *player.Player) (result *info println("进入地图", c.Info.UserID, c.Info.MapID) } - defer func() { - if data.MapId > 10000 && data.MapId != c.Info.UserID { - - c.Service.Done.UpdateRoom(1, 0) - service.NewDoneService(data.MapId).UpdateRoom(0, 1) - } - }() // copier.CopyWithOption(result, c.Info, copier.Option{DeepCopy: true}) c.GetSpace().EnterMap(c) + if data.MapId > 10000 && data.MapId != c.Info.UserID { + c.Service.Done.UpdateRoom(1, 0) + service.NewDoneService(data.MapId).UpdateRoom(0, 1) + } return nil, -1 } func (h Controller) GetMapHot(data *maphot.InInfo, c *player.Player) (result *maphot.OutInfo, err errorcode.ErrorCode) { diff --git a/logic/service/fight/action.go b/logic/service/fight/action.go index fb7d6a954..721c71e46 100644 --- a/logic/service/fight/action.go +++ b/logic/service/fight/action.go @@ -43,7 +43,10 @@ func (f *FightC) Over(c common.PlayerI, res info.EnumBattleOverReason) { f.overl.Do(func() { f.Reason = res - f.WinnerId = f.GetInputByPlayer(c, true).UserID + if f.GetInputByPlayer(c, true) != nil { + f.WinnerId = f.GetInputByPlayer(c, true).UserID + } + close(f.quit) }) diff --git a/logic/service/fight/loop.go b/logic/service/fight/loop.go index 5c039de4e..c1d322c90 100644 --- a/logic/service/fight/loop.go +++ b/logic/service/fight/loop.go @@ -117,6 +117,7 @@ func (f *FightC) battleLoop() { // f.Our.Player.(*player.Player).MapNPC.Reset(7 * time.Second) copier.Copy(&f.FightOverInfo, f.Our.Player.(*player.Player).Info) + f.Our.Player.(*player.Player).MapNPC.Reset(7 * time.Second) // f.Our.Player.(*player.Player).Info.FightTime = f.Our.Player.(*player.Player).Info.FightTime + time.Now().Unix() - f.StartTime.Unix() } diff --git a/logic/service/fight/new.go b/logic/service/fight/new.go index 792af5b43..6585b3cfa 100644 --- a/logic/service/fight/new.go +++ b/logic/service/fight/new.go @@ -59,7 +59,7 @@ func NewFight(p1, p2 common.PlayerI, fn func(info.FightOverInfo)) (*FightC, erro f.Opp.Finished = true //PVE 默认boss数据直接加载完成 loadtime = 60 * time.Second //f.handleNPCFightSpecial(&fightStartInfo) - f.Our.Player.(*player.Player).GenMonster() + if f.Opp.Player.(*player.AI_player).CanCapture > 0 { f.Opp.CanCapture = f.Opp.Player.(*player.AI_player).CanCapture f.FightStartOutboundInfo.Info2.Catchable = 1 //可以捕捉就置1 diff --git a/login/internal/cmd/cmd.go b/login/internal/cmd/cmd.go index 58fe213ab..cdaa143d5 100644 --- a/login/internal/cmd/cmd.go +++ b/login/internal/cmd/cmd.go @@ -26,7 +26,7 @@ var ( r := parser.GetOpt("debug", false) if r.Bool() { g.DB().SetDebug(true) - + // service.NewServerService().SetServerScreen(0, "sss") cool.Config.ServerInfo.IsDebug = 1 } if cool.IsRedisMode { diff --git a/modules/config/model/item_gift.go b/modules/config/model/item_gift.go index 82ff9507d..6542a85d2 100644 --- a/modules/config/model/item_gift.go +++ b/modules/config/model/item_gift.go @@ -11,7 +11,7 @@ const ( // ItemGift 物品奖励基础配置模型(与数据库表 item_gift 字段一一对应,核心存储结构) type ItemGift struct { - *BaseConfig + *cool.Model // 保留通用Model(ID/创建时间/更新时间等) // 核心业务字段(按需求实现:物品id、备注、是否启用、是否为扭蛋、物品数量) ItemID int64 `gorm:"not null;default:0;comment:'物品ID,关联物品配置表主键'" json:"item_id"` @@ -20,6 +20,7 @@ type ItemGift struct { ItemMinCount int64 `gorm:"column:item_min_count;not null;comment:单次采集最小产出数量" json:"item_min_count"` // ItemMaxCount 单次采集最大产出数量 ItemMaxCount uint32 `gorm:"column:item_max_count;not null;comment:单次采集最大产出数量" json:"item_max_count"` + Remark string `gorm:"type:varchar(255);default:'';comment:'性别配置备注(如:默认性别规则)'" json:"remark"` // 调整注释 } // TableName 指定ItemGift对应的数据库表名(遵循现有代码规范) @@ -35,7 +36,7 @@ func (*ItemGift) GroupName() string { // NewItemGift 创建一个新的ItemGift实例(初始化通用Model字段+默认值,与现有实例创建逻辑一致) func NewItemGift() *ItemGift { return &ItemGift{ - BaseConfig: NewBaseConfig(), + Model: cool.NewModel(), } } diff --git a/modules/config/model/pet_gift.go b/modules/config/model/pet_gift.go index 5a93b4c1a..fc7e12652 100644 --- a/modules/config/model/pet_gift.go +++ b/modules/config/model/pet_gift.go @@ -11,15 +11,16 @@ const ( // PetReward 精灵奖励基础配置模型(核心存储结构,与数据库表字段一一对应) type PetReward struct { - *BaseConfig + *cool.Model // 保留通用Model(ID/创建时间/更新时间等) MonID int32 `gorm:"not null;comment:'BOSS对应的精灵ID'" json:"mon_id"` DV int32 `gorm:"not null;default:0;comment:'成长值'" json:"dv"` Nature int32 `gorm:"not null;default:0;comment:'BOSS属性-性格'" json:"nature"` Effect int32 `gorm:"not null;comment:'BOSS特性'" json:"effect"` Lv int32 `gorm:"not null;comment:'BOSS等级(LvHpMatchUser非0时此配置无效)'" json:"lv"` - IsEgg uint32 `gorm:"not null;default:0;comment:'是否蛋'" json:"is_egg"` //奖励是否为扭蛋奖励 - IsLight uint32 `gorm:"not null;default:0;comment:'是否擦灯'" json:"is_light"` //奖励是否为光之子`` + IsEgg uint32 `gorm:"not null;default:0;comment:'是否蛋'" json:"is_egg"` //奖励是否为扭蛋奖励 + IsLight uint32 `gorm:"not null;default:0;comment:'是否擦灯'" json:"is_light"` //奖励是否为光之子`` + Remark string `gorm:"type:varchar(255);default:'';comment:'性别配置备注(如:默认性别规则)'" json:"remark"` // 调整注释 } // TableName 指定PetReward对应的数据库表名(遵循现有代码规范) @@ -35,7 +36,7 @@ func (*PetReward) GroupName() string { // NewPetReward 创建一个新的PetReward实例(初始化通用Model字段+所有字段默认值,与NewBossConfig保持一致) func NewPetReward() *PetReward { return &PetReward{ - BaseConfig: NewBaseConfig(), + Model: cool.NewModel(), } } diff --git a/modules/config/service/base.go b/modules/config/service/base.go index 84719d9e9..054e5681a 100644 --- a/modules/config/service/base.go +++ b/modules/config/service/base.go @@ -7,7 +7,7 @@ import ( ) // /取消redis空节点的强制缓存 -func dbm(m cool.IModel) *gdb.Model { +func dbm_enable(m cool.IModel) *gdb.Model { ret := cool.DBM(m) if cool.Config.ServerInfo.IsVip == 0 { //正式服启动缓存 ret = ret.Where("is_enable", 1) @@ -20,7 +20,7 @@ func dbm(m cool.IModel) *gdb.Model { } return ret } -func dbm_fix(m cool.IModel) *gdb.Model { +func dbm_notenable(m cool.IModel) *gdb.Model { ret := cool.DBM(m).Cache(gdb.CacheOption{ Force: false, }) @@ -40,3 +40,8 @@ func dbm_nocache(m cool.IModel) *gdb.Model { // } return ret } +func dbm_nocache_noenable(m cool.IModel) *gdb.Model { + ret := cool.DBM(m) + + return ret +} diff --git a/modules/config/service/boss.go b/modules/config/service/boss.go index 462b58b27..bfeae8ce2 100644 --- a/modules/config/service/boss.go +++ b/modules/config/service/boss.go @@ -25,7 +25,7 @@ func (s *BossService) Get(id uint32) *model.BossConfig { return nil } var item *model.BossConfig - dbm_fix(s.Model).Where("id", id).Scan(&item) + dbm_notenable(s.Model).Where("id", id).Scan(&item) return item diff --git a/modules/config/service/cdk.go b/modules/config/service/cdk.go index 10f6092a5..545d8c6cd 100644 --- a/modules/config/service/cdk.go +++ b/modules/config/service/cdk.go @@ -40,7 +40,7 @@ func NewCdkService() *CdkService { } func (s *CdkService) Get(id string) *model.CDKConfig { var item *model.CDKConfig - dbm_fix(s.Model).Where("cdk_code", id).WhereNot("exchange_remain_count", 0).Scan(&item) + dbm_notenable(s.Model).Where("cdk_code", id).WhereNot("exchange_remain_count", 0).Scan(&item) return item diff --git a/modules/config/service/effect.go b/modules/config/service/effect.go index 0bca4827b..d2710817e 100644 --- a/modules/config/service/effect.go +++ b/modules/config/service/effect.go @@ -10,7 +10,7 @@ type EffectService struct { } func (s *EffectService) Args(id uint32) (int, []int) { - m := dbm_fix(s.Model).Where("se_idx", id) + m := dbm_notenable(s.Model).Where("se_idx", id) var tt model.PlayerPetSpecialEffect m.Scan(&tt) diff --git a/modules/config/service/egg.go b/modules/config/service/egg.go index 3f276166b..464618c74 100644 --- a/modules/config/service/egg.go +++ b/modules/config/service/egg.go @@ -23,7 +23,7 @@ func NewEggService() *EggService { func (s *EggService) GetData(p1 uint32) []int32 { //cacheKey := strings.Join([]string{fmt.Sprintf("%d", p1), fmt.Sprintf("%d", p2)}, ":") - m := dbm(s.Model) + m := dbm_enable(s.Model) var pet []model.Egg //一个特性应该是唯一的,但是我们要获取默认随机特性 m.Wheref(`male_pet_ids @> ARRAY[?]::integer[]`, p1).Scan(&pet) @@ -37,7 +37,7 @@ func (s *EggService) GetData(p1 uint32) []int32 { } func (s *EggService) GetResult(m, f uint32) uint32 { //cacheKey := strings.Join([]string{fmt.Sprintf("%d", p1), fmt.Sprintf("%d", p2)}, ":") - md := dbm(s.Model) + md := dbm_enable(s.Model) var pet *model.Egg //一个特性应该是唯一的,但是我们要获取默认随机特性 md.Wheref(`male_pet_ids @> ARRAY[?]::integer[]`, m). diff --git a/modules/config/service/item.go b/modules/config/service/item.go index 64da1a386..21b6a7ba1 100644 --- a/modules/config/service/item.go +++ b/modules/config/service/item.go @@ -17,14 +17,14 @@ type ItemService struct { func (s *ItemService) GetItem(id uint32) *model.ItemGift { var item *model.ItemGift - dbm(s.Model).Where("id", id).Scan(&item) + dbm_notenable(s.Model).Where("id", id).Scan(&item) return item } func (s *ItemService) GetItemCount(id uint32) data.ItemInfo { var item model.ItemGift var res data.ItemInfo - dbm(s.Model).Where("id", id).Scan(&item) + dbm_notenable(s.Model).Where("id", id).Scan(&item) if item.ItemID == 0 { @@ -41,7 +41,7 @@ func (s *ItemService) GetItemCount(id uint32) data.ItemInfo { } func (s *ItemService) GetEgg(count int64) []data.ItemInfo { var item []model.ItemGift - dbm(s.Model).Where("is_egg", 1).Scan(&item) + dbm_notenable(s.Model).Where("is_egg", 1).Scan(&item) rr := utils.RandomSlice(item, int(count)) var res = make([]data.ItemInfo, len(rr)) diff --git a/modules/config/service/pet.go b/modules/config/service/pet.go index 92f0e7022..91d70cb1c 100644 --- a/modules/config/service/pet.go +++ b/modules/config/service/pet.go @@ -23,7 +23,7 @@ func NewPetRewardService() *PetRewardService { } func (s *PetRewardService) GetEgg() model.PetReward { var item model.PetReward - dbm_nocache(s.Model).Where("is_egg", 1).OrderRandom().Limit(1).Scan(&item) + dbm_nocache_noenable(s.Model).Where("is_egg", 1).OrderRandom().Limit(1).Scan(&item) return item @@ -33,7 +33,7 @@ func (s *PetRewardService) Get(id uint32) *model.PetReward { return nil } var item *model.PetReward - dbm(s.Model).Where("id", id).Scan(&item) + dbm_notenable(s.Model).Where("id", id).Scan(&item) return item diff --git a/modules/config/service/pet_fusion_material_service.go b/modules/config/service/pet_fusion_material_service.go index cd4306c7c..d6885485d 100644 --- a/modules/config/service/pet_fusion_material_service.go +++ b/modules/config/service/pet_fusion_material_service.go @@ -43,7 +43,7 @@ func (s *PetFusionMaterialService) Data(Material1 [4]uint32) int32 { } } - m := dbm(s.Model) + m := dbm_enable(s.Model) var effect *model.PetFusionMaterial //一个特性应该是唯一的,但是我们要获取默认随机特性 condition := g.Map{ diff --git a/modules/config/service/pet_fusion_service.go b/modules/config/service/pet_fusion_service.go index c6aead926..91f783e01 100644 --- a/modules/config/service/pet_fusion_service.go +++ b/modules/config/service/pet_fusion_service.go @@ -64,7 +64,7 @@ func (s *PetFusionService) Data(p1, p2, rand uint32) uint32 { func (s *PetFusionService) getData(p1, p2 uint32) []model.PetFusion { var pet []model.PetFusion //一个特性应该是唯一的,但是我们要获取默认随机特性 - dbm(s.Model).Where("main_pet_id", p1).Wheref(`sub_pet_ids @> ARRAY[?]::integer[]`, p2).Scan(&pet) + dbm_enable(s.Model).Where("main_pet_id", p1).Wheref(`sub_pet_ids @> ARRAY[?]::integer[]`, p2).Scan(&pet) return pet @@ -73,7 +73,7 @@ func (s *PetFusionService) getData(p1, p2 uint32) []model.PetFusion { func (s *PetFusionService) def() []model.PetFusion { var pets []model.PetFusion - dbm(s.Model).Where("is_default", 1).Scan(&pets) + dbm_enable(s.Model).Where("is_default", 1).Scan(&pets) return pets // return ret.Interface().([]model.PetFusion) diff --git a/modules/config/service/shiny.go b/modules/config/service/shiny.go index 9615f0959..e941ceb73 100644 --- a/modules/config/service/shiny.go +++ b/modules/config/service/shiny.go @@ -46,7 +46,7 @@ func (s *ShinyService) RandShiny(id uint32) *model.ColorfulSkin { var ret []model.ColorfulSkin // 执行 Raw SQL 并扫描返回值 - dbm(s.Model). + dbm_enable(s.Model). Wheref(`bind_elf_ids @> ?::jsonb`, id). Wheref(`jsonb_typeof(bind_elf_ids) = ?`, "array").Scan(&ret) @@ -73,7 +73,7 @@ func (s *ShinyService) FixShiny(id uint32) *model.ColorfulSkin { var ret []model.ColorfulSkin // 执行 Raw SQL 并扫描返回值 - dbm(s.Model). + dbm_enable(s.Model). Wheref(`bind_elf_ids @> ?::jsonb`, id). Wheref(`jsonb_typeof(bind_elf_ids) = ?`, "array").Scan(&ret) if len(ret) == 0 { @@ -93,7 +93,7 @@ func (s *ShinyService) GetShiny(id int) *data.GlowFilter { var ret []model.ColorfulSkin // 执行 Raw SQL 并扫描返回值 - dbm(s.Model). + dbm_enable(s.Model). Where("id", id).Scan(&ret) if len(ret) == 0 { return nil diff --git a/modules/config/service/shop.go b/modules/config/service/shop.go index 994605d79..311b789e3 100644 --- a/modules/config/service/shop.go +++ b/modules/config/service/shop.go @@ -21,7 +21,7 @@ func NewShopService() *ShopService { } } func (s *ShopService) Get(product_id uint32) *model.ShopConfig { - m := dbm(s.Model).Where("product_id", product_id) + m := dbm_enable(s.Model).Where("product_id", product_id) var tt *model.ShopConfig m.Scan(&tt) diff --git a/modules/config/service/talkconfig.go b/modules/config/service/talkconfig.go index b06e54ecd..45cc71adb 100644 --- a/modules/config/service/talkconfig.go +++ b/modules/config/service/talkconfig.go @@ -21,7 +21,7 @@ func NewTalkConfigService() *TalkConfigService { func (s *TalkConfigService) GetCache(flag int) model.MineralCollectionConfig { var config model.MineralCollectionConfig - dbm(s.Model).Where("type", flag).Scan(&config) + dbm_enable(s.Model).Where("type", flag).Scan(&config) return config } diff --git a/modules/config/service/task.go b/modules/config/service/task.go index 7c395f5b8..2ff1b5b83 100644 --- a/modules/config/service/task.go +++ b/modules/config/service/task.go @@ -25,7 +25,7 @@ func NewTaskService() *TaskService { } func (s *TaskService) Get(id, os int) *model.TaskConfig { var item []model.TaskConfig - dbm(s.Model).Where("task_id", id).Scan(&item) + dbm_enable(s.Model).Where("task_id", id).Scan(&item) var res *model.TaskConfig for _, v := range item { if v.OutState == os { @@ -40,7 +40,7 @@ func (s *TaskService) Get(id, os int) *model.TaskConfig { } func (s *TaskService) GetDaily() []model.TaskConfig { var item []model.TaskConfig - dbm(s.Model).Where("task_type", 1).Scan(&item) + dbm_enable(s.Model).Where("task_type", 1).Scan(&item) return item diff --git a/modules/config/service/tower.go b/modules/config/service/tower.go index ee1c4ac32..936156e27 100644 --- a/modules/config/service/tower.go +++ b/modules/config/service/tower.go @@ -68,7 +68,7 @@ func (m *UnifiedTowerModel) GroupName() string { // Boss 根据塔等级获取对应的Boss配置(统一入口) func (s *TowerService) Boss(towerLevel uint32) *model.BaseTowerConfig { // 构建基础查询条件 - query := dbm(s.Model).Where("tower_level = ?", towerLevel) + query := dbm_enable(s.Model).Where("tower_level = ?", towerLevel) // 600塔专属的缓存配置 var config model.BaseTowerConfig