引导订单优化

This commit is contained in:
hahwu 2025-04-10 19:08:29 +08:00
parent e3628c77b7
commit 01e7a90efd
9 changed files with 3036 additions and 2911 deletions

View File

@ -1,4 +1,4 @@
package guildCfg
package GuideCfg
import (
"server/game/mod/item"
@ -7,15 +7,15 @@ import (
)
const (
GUILD_REWARD = "GuildReward"
GUIDE_REWARD = "GuideReward"
)
func init() {
gamedata.InitCfg(GUILD_REWARD)
gamedata.InitCfg(GUIDE_REWARD)
}
func GetGuildReward(Id int) ([]*item.Item, int) {
data, err := gamedata.GetDataByIntKey(GUILD_REWARD, Id)
func GetGuideReward(Id int) ([]*item.Item, int) {
data, err := gamedata.GetDataByIntKey(GUIDE_REWARD, Id)
if err != nil {
log.Debug("GuildCfg GetGuildReward Id:%v not found", Id)
return nil, 0

View File

@ -312,8 +312,8 @@ func ReqGmCommand_(player *Player, Command string) error {
BaseMod.LogoutTime = GoUtil.Now() - 7*86400
TriggerComfortOrder(player)
player.PushClientRes(player.PlayMod.getOrderMod().BackData())
case "resetGuiid":
GuildMod := player.PlayMod.getGuildMod()
case "resetGuide":
GuildMod := player.PlayMod.getGuideMod()
GuildMod.Reward = make(map[int]int)
player.PushClientRes(GuildMod.BackData())
case "setDecorateArea":

View File

@ -602,6 +602,36 @@ func BackChampship(p *Player) {
p.PushClientRes(ChampshipMod.BackData(MyRank, MyPreRank))
}
func GuideTriggerOrder(p *Player) error {
GuideMod := p.PlayMod.getGuideMod()
GuideOrder := GuideMod.GetGuideOrder()
if GuideOrder {
return fmt.Errorf("not")
}
OrderMod := p.PlayMod.getOrderMod()
MinOrderId := 0
for k := range OrderMod.GetOrderList() {
if MinOrderId == 0 {
MinOrderId = k
}
if k < MinOrderId {
MinOrderId = k
}
}
BaseMod := p.PlayMod.getBaseMod()
ChessMod := p.PlayMod.getChessMod()
if MinOrderId < 12 {
return fmt.Errorf("not")
}
if MinOrderId < 14 && BaseMod.GetEnergy() > 0 {
return fmt.Errorf("not")
}
OrderMod.GuideTriggerOrder(ChessMod.GetUnlockChessList())
GuideMod.SetGuideOrder(true)
p.PlayMod.save()
return nil
}
func PlayroomOrderTrigger(p *Player) error {
CD := playroomCfg.GetTriggerCd()
PlayroomMod := p.PlayMod.getPlayroomMod()

View File

@ -21,7 +21,7 @@ import (
"server/game/mod/friend"
"server/game/mod/friendTreasure.go"
guesscolor "server/game/mod/guessColor"
"server/game/mod/guild"
"server/game/mod/guide"
"server/game/mod/handbook"
"server/game/mod/invite"
"server/game/mod/item"
@ -54,7 +54,7 @@ type PlayerModList struct {
Decorate decorate.Decorate //装饰
Card card.CardMod //卡牌
Var Var.Var // 变量
Guild guild.Guild // 引导
Guide guide.Guide // 引导
DailyTask dailyTask.DailyTaskMod // 每日任务
Face face.FaceMod // 头像
Avatar avatar.AvatarMod // 头像框
@ -156,7 +156,7 @@ func (p *PlayerModData) InitMod(player *Player) (bool, error) {
p.ModList.Decorate.InitData()
p.ModList.Card.InitData()
p.ModList.Var.InitData()
p.ModList.Guild.InitData()
p.ModList.Guide.InitData()
p.ModList.DailyTask.InitData()
p.ModList.Face.InitData()
p.ModList.Avatar.InitData()
@ -272,8 +272,8 @@ func (p *PlayerMod) getVarMod() *Var.Var {
return &p.mod_list.Var
}
func (p *PlayerMod) getGuildMod() *guild.Guild {
return &p.mod_list.Guild
func (p *PlayerMod) getGuideMod() *guide.Guide {
return &p.mod_list.Guide
}
func (p *PlayerMod) getDailyTaskMod() *dailyTask.DailyTaskMod {

View File

@ -353,6 +353,7 @@ func ReqRewardOrder(player *Player, buf []byte) error {
}
// playroom 触发式订单
err = PlayroomOrderTrigger(player)
GuideTriggerOrder(player)
if err != nil {
player.SendErrClienRes(&msg.ResRewardOrder{
Code: msg.RES_CODE_FAIL,
@ -545,6 +546,11 @@ func UpdatePlayerChessDataFunc(player *Player, buf []byte) error {
}
RedBackData(player)
player.UpdateUserInfo()
err1 := GuideTriggerOrder(player)
if err1 == nil {
OrderMod := player.PlayMod.getOrderMod()
player.PushClientRes(OrderMod.BackData())
}
return err
}
@ -1030,8 +1036,8 @@ func ReqAllCollectReward(player *Player, buf []byte) error {
func ReqGuideReward(player *Player, buf []byte) error {
req := &msg.ReqGuideReward{}
proto.Unmarshal(buf, req)
GuildMod := player.PlayMod.getGuildMod()
itemList, err := GuildMod.GetReward(int(req.Id))
GuideMod := player.PlayMod.getGuideMod()
itemList, err := GuideMod.GetReward(int(req.Id))
if err != nil {
player.SendErrClienRes(&msg.ResGuideReward{
Code: msg.RES_CODE_FAIL,
@ -1049,7 +1055,7 @@ func ReqGuideReward(player *Player, buf []byte) error {
return err
}
player.PlayMod.save()
player.PushClientRes(GuildMod.BackData())
player.PushClientRes(GuideMod.BackData())
player.PushClientRes(&msg.ResGuideReward{
Code: msg.RES_CODE_SUCCESS,
})

View File

@ -0,0 +1,57 @@
package guide
import (
"fmt"
"server/GoUtil"
GuideCfg "server/conf/Guide"
"server/game/mod/item"
"server/msg"
)
type Guide struct {
Guide int
GuideOrder bool
Reward map[int]int
}
func (g *Guide) InitData() {
g.Reward = make(map[int]int)
if g.Reward == nil {
g.Reward = make(map[int]int)
}
}
func (g *Guide) GetReward(Id int) ([]*item.Item, error) {
Items, Num := GuideCfg.GetGuideReward(Id)
n, ok := g.Reward[Id]
if !ok {
n = 0
}
if n >= Num {
return nil, fmt.Errorf("Guide GetReward Id:%v has been received", Id)
}
g.Reward[Id]++
return Items, nil
}
func (g *Guide) BackData() *msg.ResGuideInfo {
return &msg.ResGuideInfo{
Reward: GoUtil.MapIntToInt32(g.Reward),
}
}
func (g *Guide) GetGuide() int {
return g.Guide
}
func (g *Guide) SetGuide(guide int) {
g.Guide = guide
}
func (g *Guide) GetGuideOrder() bool {
return g.GuideOrder
}
func (g *Guide) SetGuideOrder(guideOrder bool) {
g.GuideOrder = guideOrder
}

View File

@ -1,40 +0,0 @@
package guild
import (
"fmt"
"server/GoUtil"
guildCfg "server/conf/guild"
"server/game/mod/item"
"server/msg"
)
type Guild struct {
Guild int
Reward map[int]int
}
func (g *Guild) InitData() {
g.Reward = make(map[int]int)
if g.Reward == nil {
g.Reward = make(map[int]int)
}
}
func (g *Guild) GetReward(Id int) ([]*item.Item, error) {
Items, Num := guildCfg.GetGuildReward(Id)
n, ok := g.Reward[Id]
if !ok {
n = 0
}
if n >= Num {
return nil, fmt.Errorf("Guild GetReward Id:%v has been received", Id)
}
g.Reward[Id]++
return Items, nil
}
func (g *Guild) BackData() *msg.ResGuildInfo {
return &msg.ResGuildInfo{
Reward: GoUtil.MapIntToInt32(g.Reward),
}
}

View File

@ -37,19 +37,19 @@ type Order struct {
}
const (
Common_type = 1 // 普通订单
Extra_type = 2 // 额外订单
Super_type = 3 // 超级订单
Preheat_type = 4 // 预热订单
Trigger_type = 5 // 触发订单
Clean_type = 6 // 退役发射器清理订单
Clean_Order_type = 7 // 清理无法生成订单的棋子
Clean_type2 = 8 // 棋盘空格不足清理棋子的订单
COMFORT_TYPE = 9 // 安慰订单
DIFF_LOW = 1 // 低难度
DIFF_MID = 2 // 中难度
DIFF_HIGH = 3 // 高难度
Common_type = 1 // 普通订单
Extra_type = 2 // 额外订单
Super_type = 3 // 超级订单
Preheat_type = 4 // 预热订单
Trigger_type = 5 // 触发订单
Clean_type = 6 // 退役发射器清理订单
Clean_Order_type = 7 // 清理无法生成订单的棋子
Clean_type2 = 8 // 棋盘空格不足清理棋子的订单
COMFORT_TYPE = 9 // 安慰订单
Guide_type = 10 // 引导订单
DIFF_LOW = 1 // 低难度
DIFF_MID = 2 // 中难度
DIFF_HIGH = 3 // 高难度
)
func (o *OrderMod) InitData() {
@ -104,6 +104,9 @@ func (o *OrderMod) RewardOrder(id int) ([]*item.Item, []int, int, int, error) {
} else {
ItemList = append(ItemList, &item.Item{Id: item.ITEM_STAR_ID, Num: Star})
}
if v.Type == Guide_type {
return nil, []int{}, v.Type, 0, nil
}
return ItemList, v.MergeId, v.Type, Star, nil
}
return ItemList, MergeList, 0, 0, fmt.Errorf("订单不存在, 订单id%d", id)
@ -491,6 +494,19 @@ func (o *OrderMod) addOrder(ChessList []int, Diff int, Type int) {
o.LastDiff = Diff
}
func (o *OrderMod) GuideTriggerOrder(ChessList []int) bool {
//rand := map[int]int{1: 10, 2: 10, 21: 10, 22: 10, 41: 10, 42: 10}
C := []int{1, 2, 21, 22, 41, 42}
for _, v := range C {
if GoUtil.InArray(v, ChessList) {
o.addOrder([]int{v}, DIFF_LOW, Guide_type)
return true
}
}
o.addOrder([]int{1}, DIFF_LOW, Guide_type)
return true
}
func (o *OrderMod) CreateCleanOrder(ChessList []int) bool {
o.addOrder(ChessList, DIFF_LOW, Clean_type)
return true

File diff suppressed because it is too large Load Diff