feat(config): 更新服务器配置字段注释并修复VIP标识逻辑

- 修改config.go中IsVip字段注释,明确其表示测试服状态
- 添加isdebug字段注释说明本地服标识
- 从.gitignore添加login-login-linux-amd64到忽略列表
- 移除已废弃的coolconfig.SetTest函数

fix(item_buy): 注释掉金币购买功能代码

- 将BuyGoldItem方法注释掉,暂时禁用金币购买商品功能
- 移除未使用的gconv导入包

fix(server): 修正调试模式判断条件

- 将server.go中的IsVip判断改为IsDebug,确保调试模式正确启用

refactor(item_service): 优化模型调用并添加VIP标识

- 修复ItemService.UPDATE方法中模型调用的一致性问题
- 添加is_vip字段到数据记录中用于区分服务器类型

feat(pet_service): 为宠物数据添加VIP标识

- 在宠物服务中为新捕捉的宠物添加IsVip字段设置

```
This commit is contained in:
2026-01-10 02:01:17 +08:00
parent e218d4602f
commit 4cd34f5009
10 changed files with 90 additions and 47 deletions

1
.gitignore vendored
View File

@@ -44,3 +44,4 @@ logic/logic1
public/logic-linux-amd64 public/logic-linux-amd64
public/login-linux-amd64 public/login-linux-amd64
public/login-login-linux-amd64

View File

@@ -31,8 +31,9 @@ type ServerList struct {
//密码 //密码
Password string `gorm:"type:string;comment:'密码'" json:"password"` Password string `gorm:"type:string;comment:'密码'" json:"password"`
CanPort []uint32 `gorm:"type:jsonb;comment:'可连接端口'" json:"can_port"` CanPort []uint32 `gorm:"type:jsonb;comment:'可连接端口'" json:"can_port"`
//是否测试服
IsVip uint32 `gorm:"default:0;not null;comment:'是否为VIP服务器'" json:"is_vip"` IsVip uint32 `gorm:"default:0;not null;comment:'是否为VIP服务器'" json:"is_vip"`
//isdebug //isdebug 是否本地服
IsDebug uint8 `gorm:"default:0;comment:'是否为调试模式'" json:"is_debug"` IsDebug uint8 `gorm:"default:0;comment:'是否为调试模式'" json:"is_debug"`
//服务器异色概率设定ServerList //服务器异色概率设定ServerList
ShinyRate uint8 `gorm:"default:0;comment:'异色概率'" json:"shiny_rate"` ShinyRate uint8 `gorm:"default:0;comment:'异色概率'" json:"shiny_rate"`

View File

@@ -1,12 +0,0 @@
package cool
import (
"github.com/gogf/gf/v2/frame/g"
)
func SetTest(m g.Map) g.Map {
if Config.ServerInfo.IsVip != 0 {
m["is_vip"] = Config.ServerInfo.IsVip
}
return m
}

View File

@@ -6,8 +6,6 @@ import (
"blazing/logic/service/item" "blazing/logic/service/item"
"blazing/logic/service/player" "blazing/logic/service/player"
"github.com/gogf/gf/v2/util/gconv"
) )
// 防止封包通过领取来获取道具 // 防止封包通过领取来获取道具
@@ -92,34 +90,34 @@ func (h Controller) BuyMultipleItems(data *item.BuyMultiInboundInfo, player *pla
// data: 包含金豆购买商品信息的输入数据 // data: 包含金豆购买商品信息的输入数据
// player: 当前玩家对象 // player: 当前玩家对象
// 返回: 金豆购买结果和错误码 // 返回: 金豆购买结果和错误码
func (h Controller) BuyGoldItem(data *item.C2S_GOLD_BUY_PRODUCT, player *player.Player) (result *item.S2C_GoldBuyProductInfo, err errorcode.ErrorCode) { // func (h Controller) BuyGoldItem(data *item.C2S_GOLD_BUY_PRODUCT, player *player.Player) (result *item.S2C_GoldBuyProductInfo, err errorcode.ErrorCode) {
product, exists := xmlres.GoldProductMap[int(data.ProductID)] // product, exists := xmlres.GoldProductMap[int(data.ProductID)]
if !exists { // if !exists {
return nil, errorcode.ErrorCodes.ErrSystemError // return nil, errorcode.ErrorCodes.ErrSystemError
} // }
useGold := uint32(data.Count) * uint32(gconv.Float64(product.Price)*100) // useGold := uint32(data.Count) * uint32(gconv.Float64(product.Price)*100)
if !player.UseGold(useGold) { // if !player.UseGold(useGold) {
return &item.S2C_GoldBuyProductInfo{ // return &item.S2C_GoldBuyProductInfo{
Gold: player.User.GetGold(uint(player.Info.UserID)), // Gold: player.User.GetGold(uint(player.Info.UserID)),
PayGold: 0, // PayGold: 0,
Reserved: 0, // Reserved: 0,
}, errorcode.ErrorCodes.ErrXinDouInsufficient // }, errorcode.ErrorCodes.ErrXinDouInsufficient
} // }
addSuccess := player.ItemAdd(uint32(gconv.Uint32(product.ItemID)), uint32(data.Count)) // addSuccess := player.ItemAdd(uint32(gconv.Uint32(product.ItemID)), uint32(data.Count))
if addSuccess { // if addSuccess {
player.User.UpdateGold(player.Info.UserID, -int64(useGold)) // player.User.UpdateGold(player.Info.UserID, -int64(useGold))
return &item.S2C_GoldBuyProductInfo{ // return &item.S2C_GoldBuyProductInfo{
Gold: player.User.GetGold(uint(player.Info.UserID)), // Gold: player.User.GetGold(uint(player.Info.UserID)),
PayGold: useGold, // PayGold: useGold,
Reserved: 0, // Reserved: 0,
}, 0 // }, 0
} // }
return &item.S2C_GoldBuyProductInfo{ // return &item.S2C_GoldBuyProductInfo{
Gold: player.User.GetGold(uint(player.Info.UserID)), // Gold: player.User.GetGold(uint(player.Info.UserID)),
PayGold: 0, // PayGold: 0,
Reserved: 0, // Reserved: 0,
}, errorcode.ErrorCodes.ErrSystemError // }, errorcode.ErrorCodes.ErrSystemError
} // }

View File

@@ -58,7 +58,7 @@ func Start() {
serverID := cool.Config.GameOnlineID serverID := cool.Config.GameOnlineID
cool.Config.ServerInfo = config.NewServerService().GetServerID(serverID).ServerList cool.Config.ServerInfo = config.NewServerService().GetServerID(serverID).ServerList
if cool.Config.ServerInfo.IsVip == 1 { if cool.Config.ServerInfo.IsDebug == 1 {
g.DB().SetDebug(true) g.DB().SetDebug(true)
} }

View File

@@ -0,0 +1,39 @@
package effect
import (
"blazing/logic/service/fight/info"
"blazing/logic/service/fight/input"
)
// NewSel112 受到物理时使自身的一种 battle_lv 提升1个等级可提升n次;a1: which blv, a2: max_blv_up_times
// TODO: 实现受到物理时使自身的一种 battle_lv 提升1个等级可提升n次;a1: which blv, a2: max_blv_up_times的核心逻辑
type NewSel112 struct {
NewSel0
count int
}
func (e *NewSel112) DamageDivEx(t *info.DamageZone) bool {
// fmt.Println(e.ID().GetCatchTime(), e.Ctx().Our.CurrentPet.Info.CatchTime)
if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime {
return true
}
// 2. 技能为空或非物理攻击,不触发
skill := e.Ctx().SkillEntity
if skill == nil {
return true
}
if skill.Category() != info.Category.PHYSICAL {
return true
}
if e.count >= int(e.Args()[1].IntPart()) {
return true
}
e.Ctx().Our.SetProp(e.Ctx().Our, int8(e.Args()[0].IntPart()), 1, info.AbilityOpType.ADD)
e.count++
return true
}
func init() {
input.InitEffect(input.EffectType.NewSel, 112, &NewSel112{})
}

View File

@@ -0,0 +1,15 @@
package effect
import (
"blazing/logic/service/fight/input"
)
// todo "只有当自己处于异常状态时才会受到伤害"
type NewSel113 struct {
NewSel0
count int
}
func init() {
input.InitEffect(input.EffectType.NewSel, 113, &NewSel113{})
}

View File

@@ -28,7 +28,7 @@ func (s *ItemService) UPDATE(id uint32, count int) {
m := s.TestModel(s.Model) m := s.TestModel(s.Model)
if t, _ := m.Where("item_id", id).Exist(); t { if t, _ := m.Where("item_id", id).Exist(); t {
_, err := m.Where("item_id", id).Increment("item_cnt", count) _, err := s.TestModel(s.Model).Where("item_id", id).Increment("item_cnt", count)
if err != nil { if err != nil {
panic(err) panic(err)
} }
@@ -38,8 +38,8 @@ func (s *ItemService) UPDATE(id uint32, count int) {
"player_id": s.userid, "player_id": s.userid,
"item_id": id, "item_id": id,
"item_cnt": count, "item_cnt": count,
"is_vip": cool.Config.ServerInfo.IsVip,
} }
data = cool.SetTest(data)
m.Data(data).Insert() m.Data(data).Insert()
} }

View File

@@ -117,6 +117,7 @@ RETURNING max_ts;
player.Data = *y player.Data = *y
player.CatchTime = y.CatchTime player.CatchTime = y.CatchTime
player.Free = 0 player.Free = 0
player.IsVip = cool.Config.ServerInfo.IsVip
_, err = m1.Insert(player) _, err = m1.Insert(player)
if err != nil { if err != nil {

Binary file not shown.