Merge branch 'develop' into sdk

This commit is contained in:
hahwu 2025-01-20 11:13:45 +08:00
commit c6d4a48145
13 changed files with 3781 additions and 3489 deletions

View File

@ -202,7 +202,7 @@ func GetColorById(Id int) string {
func GetEmitProduceType(Id int) []string { func GetEmitProduceType(Id int) []string {
data, err := gamedata.GetDataByIntKey(CFG_NAME, Id) data, err := gamedata.GetDataByIntKey(CFG_NAME, Id)
if err != nil { if err != nil {
log.Debug("GetTypeById GetOne Id:%v not found", Id) log.Debug("GetEmitProduceType GetOne Id:%v not found", Id)
return []string{} return []string{}
} }
return strings.Split(gamedata.ParseString(data["Emit_Product"]), ",") return strings.Split(gamedata.ParseString(data["Emit_Product"]), ",")
@ -212,7 +212,7 @@ func GetEmitProduceType(Id int) []string {
func GetEmitProduceChessType(Id int) []string { func GetEmitProduceChessType(Id int) []string {
data, err := gamedata.GetDataByIntKey(CFG_NAME, Id) data, err := gamedata.GetDataByIntKey(CFG_NAME, Id)
if err != nil { if err != nil {
log.Debug("GetTypeById GetOne Id:%v not found", Id) log.Debug("GetEmitProduceChessType GetOne Id:%v not found", Id)
return []string{} return []string{}
} }
value := gamedata.ParseString(data["Product_Type"]) value := gamedata.ParseString(data["Product_Type"])
@ -226,7 +226,7 @@ func GetEmitProduceChessType(Id int) []string {
func GetEmitId(Id int) string { func GetEmitId(Id int) string {
data, err := gamedata.GetDataByIntKey(CFG_NAME, Id) data, err := gamedata.GetDataByIntKey(CFG_NAME, Id)
if err != nil { if err != nil {
log.Debug("GetTypeById GetOne Id:%v not found", Id) log.Debug("GetEmitId GetOne Id:%v not found", Id)
return "" return ""
} }
return gamedata.ParseString(data["Emit_ID"]) return gamedata.ParseString(data["Emit_ID"])
@ -235,7 +235,7 @@ func GetEmitId(Id int) string {
func GetEmitType(Id int) string { func GetEmitType(Id int) string {
data, err := gamedata.GetDataByIntKey(CFG_NAME, Id) data, err := gamedata.GetDataByIntKey(CFG_NAME, Id)
if err != nil { if err != nil {
log.Debug("GetTypeById GetOne Id:%v not found", Id) log.Debug("GetEmitType GetOne Id:%v not found", Id)
return "" return ""
} }
return gamedata.ParseString(data["Emit_Type"]) return gamedata.ParseString(data["Emit_Type"])
@ -412,3 +412,66 @@ func DynamicAdjust(EmitId int, Color string) int {
} }
return 0 return 0
} }
func GetAdjust(EmitId int, Color string) int {
data, err := gamedata.GetDataByIntKey(CFG_NAME, EmitId)
if err != nil {
log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId)
return 0
}
AdjustLv := gamedata.GetStringValue(data, "Dynamic")
if AdjustLv == "" {
return 0
}
Arr := strings.Split(AdjustLv, ",")
for _, v := range Arr {
Arr2 := strings.Split(v, "=")
if len(Arr2) != 2 {
continue
}
if Color == Arr2[0] {
NewLv, _ := strconv.Atoi(Arr2[1])
return NewLv
}
}
return 0
}
func GetSellDiamondMul(EmitId int, Color string) int {
data, err := gamedata.GetDataByIntKey(CFG_NAME, EmitId)
if err != nil {
log.Debug("GetSellDiamondMul GetOne EmitId:%v not found", EmitId)
return 0
}
ProductEmit := gamedata.GetStringValue(data, "Emit_Product")
if ProductEmit == "" {
return 1
}
Arr := strings.Split(ProductEmit, ",")
if Color == Arr[0] {
return 1
}
if !GoUtil.InStringArray(Color, Arr) {
return 1
}
Emit_List := gamedata.GetStringValue(data, "Emit_List")
MainProb := getColorProb(Emit_List, Arr[0])
SubProb := getColorProb(Emit_List, Color)
return int(MainProb / SubProb)
}
func getColorProb(Emit_List string, Color string) float64 {
Arr := strings.Split(Emit_List, ",")
Prob := 0.0
for _, v := range Arr {
Arr2 := strings.Split(v, "=")
A1 := GoUtil.Int(Arr2[0])
A2, _ := strconv.ParseFloat(Arr2[1], 64)
A1Color := GetColorById(A1)
if A1Color != Color {
continue
}
Prob += A2 * float64(A1%10)
}
return Prob
}

View File

@ -89,6 +89,14 @@ func GetWorkChargeId() int {
return gamedata.GetIntValue(data, "Value") return gamedata.GetIntValue(data, "Value")
} }
func GetJackpotNum() int {
data, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "Jackpot")
if err != nil {
return 0
}
return gamedata.GetIntValue(data, "Value")
}
func GetInteract(Id, Type int) (int, []*item.Item, int) { func GetInteract(Id, Type int) (int, []*item.Item, int) {
data, err := gamedata.GetDataByIntKey(CFG_PLAYROOM_MOOD, Id) data, err := gamedata.GetDataByIntKey(CFG_PLAYROOM_MOOD, Id)
if err != nil { if err != nil {

View File

@ -644,7 +644,7 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
//领取订单奖励 //领取订单奖励
RegisterMsgProcessFunc("ReqRewardOrder", ReqRewardOrder) // 领取订单奖励 RegisterMsgProcessFunc("ReqRewardOrder", ReqRewardOrder) // 领取订单奖励
RegisterMsgProcessFunc("ReqDelOrder", ReqDelOrder) // 删除订单
//装饰 //装饰
RegisterMsgProcessFunc("ReqDecorate", ReqDecorate) // 装饰 RegisterMsgProcessFunc("ReqDecorate", ReqDecorate) // 装饰
RegisterMsgProcessFunc("ReqDecorateAll", ReqDecorateAll) // 装饰全部 RegisterMsgProcessFunc("ReqDecorateAll", ReqDecorateAll) // 装饰全部

View File

@ -294,6 +294,10 @@ func (p *Player) ZeroUpdate(a []interface{}) {
p.PlayMod.getFriendTreasureMod().ZeroUpdate() p.PlayMod.getFriendTreasureMod().ZeroUpdate()
// p.PushClientRes(p.PlayMod.getFriendTreasureMod().BackData()) // p.PushClientRes(p.PlayMod.getFriendTreasureMod().BackData())
// playroom
PlayroomMod := p.PlayMod.getPlayroomMod()
PlayroomMod.ZeroUpdate()
PlayroomBackData(p)
p.PlayMod.getChampshipMod().ZeroUpdate() p.PlayMod.getChampshipMod().ZeroUpdate()
p.initAcitivity() p.initAcitivity()
ActivityZeroUpdate(p) ActivityZeroUpdate(p)

View File

@ -5,6 +5,7 @@ import (
"math" "math"
"server/GoUtil" "server/GoUtil"
mergeDataCfg "server/conf/mergeData" mergeDataCfg "server/conf/mergeData"
orderCfg "server/conf/order"
"server/game/mod/item" "server/game/mod/item"
"server/game/mod/quest" "server/game/mod/quest"
"server/msg" "server/msg"
@ -168,6 +169,7 @@ func (p *PlayerChessData) HandleChess(player *Player, handle_list []*msg.ChessHa
TriggerList = append(TriggerList, &quest.Trigger{Label: quest.TRIGGER_LABEL_MERGELVTIME, A: []interface{}{NewChessIdLv}}) TriggerList = append(TriggerList, &quest.Trigger{Label: quest.TRIGGER_LABEL_MERGELVTIME, A: []interface{}{NewChessIdLv}})
TriggerList = append(TriggerList, &quest.Trigger{Label: quest.TRIGGER_LABEL_MERGETIME}) TriggerList = append(TriggerList, &quest.Trigger{Label: quest.TRIGGER_LABEL_MERGETIME})
player.PushClientRes(HandbookMod.BackData()) player.PushClientRes(HandbookMod.BackData())
triggerComposeChess(player, NewChessId, player.PlayMod.getBaseMod().EnergyMul, player.PlayMod.getChessMod().GetEmitList())
// 获取活动道具 // 获取活动道具
ActItem := GetActivityItem(player, GoUtil.Int32ToInt(v.ActType)) ActItem := GetActivityItem(player, GoUtil.Int32ToInt(v.ActType))
itemList = item.Merge(itemList, ActItem) itemList = item.Merge(itemList, ActItem)
@ -180,6 +182,9 @@ func (p *PlayerChessData) HandleChess(player *Player, handle_list []*msg.ChessHa
itemList = append(itemList, &item.Item{Id: item.ITEM_STAR_ID, Num: int(-loseGold)}) itemList = append(itemList, &item.Item{Id: item.ITEM_STAR_ID, Num: int(-loseGold)})
case msg.HANDLE_TYPE_SELL: //出售棋子 case msg.HANDLE_TYPE_SELL: //出售棋子
items, err := ChessMod.SellChess(ChessId) items, err := ChessMod.SellChess(ChessId)
if checkChess(ChessId, BaseMod.GetEnergyMul(), ChessMod.GetEmitList()) { // 在订单中无法生成的棋子 出售获得原价宠物币
items = []*item.Item{{Id: item.ITEM_STAR_ID, Num: mergeDataCfg.GetStarById(ChessId)}}
}
if err != nil { if err != nil {
return err return err
} }
@ -219,3 +224,44 @@ func (p *PlayerChessData) HandleChess(player *Player, handle_list []*msg.ChessHa
func (p *PlayerChessData) ClearData() bool { func (p *PlayerChessData) ClearData() bool {
return true return true
} }
func checkChess(ChessId, EnergyMul int, Emit []int) bool {
ChessIdLv := mergeDataCfg.GetLvById(ChessId)
ChessIdColor := mergeDataCfg.GetColorById(ChessId)
EmitId := 0
for _, v := range Emit {
ProduceColor := mergeDataCfg.GetEmitProduceType(v)
if GoUtil.InStringArray(ChessIdColor, ProduceColor) {
EmitId = v
break
}
}
Min, Max := getChesslvRange(EmitId, EnergyMul)
Adjust := mergeDataCfg.GetAdjust(EmitId, ChessIdColor)
if ChessIdLv < Min-Adjust || ChessIdLv > Max-Adjust {
return true
}
return false
}
func getChesslvRange(Emit int, EnergyMul int) (int, int) {
RandEmitLv := mergeDataCfg.GetLvById(Emit)
EmitId := mergeDataCfg.GetEmitId(Emit)
RandMaxLv := mergeDataCfg.GetMaxLvById(Emit)
RandEmitMinLv := mergeDataCfg.GetEmitMinLvById(EmitId)
Ratio := mergeDataCfg.GetEmitRatio(EmitId)
m := int(float64(1+RandEmitLv-RandEmitMinLv) / float64(1+RandMaxLv-RandEmitMinLv) / Ratio * 100)
ChessMinLev := orderCfg.GetLvMin(EnergyMul)
ChessMaxLev := orderCfg.GetLvMax(EnergyMul, m)
return ChessMinLev, ChessMaxLev
}
func triggerComposeChess(player *Player, ChessId, EnergyMul int, Emit []int) {
return //TODO 暂时不用
if !checkChess(ChessId, EnergyMul, Emit) {
return
}
OrderMod := player.PlayMod.getOrderMod()
OrderMod.CreateCleanOrder2([]int{ChessId})
player.PushClientRes(OrderMod.BackData())
}

View File

@ -602,6 +602,7 @@ func PlayroomBackData(p *Player) {
r.Playroom = GoUtil.MapIntToInt32(PlayroomMod.GetRoom()) r.Playroom = GoUtil.MapIntToInt32(PlayroomMod.GetRoom())
r.Mood = GoUtil.MapIntToInt32(PlayroomMod.GetMood()) r.Mood = GoUtil.MapIntToInt32(PlayroomMod.GetMood())
r.AllMood = int32(PlayroomMod.AllMood) r.AllMood = int32(PlayroomMod.AllMood)
r.Jackpot = int32(PlayroomMod.JackpotNum)
p.PushClientRes(r) p.PushClientRes(r)
} }

View File

@ -335,6 +335,29 @@ func ReqRewardOrder(args []interface{}) error {
BackChampship(player) BackChampship(player)
player.PushClientRes(LimitedTimeEventMod.BackData()) player.PushClientRes(LimitedTimeEventMod.BackData())
player.PushClientRes(LimitedTimeEventMod.ProgressBackData()) player.PushClientRes(LimitedTimeEventMod.ProgressBackData())
player.PushClientRes(&msg.ResRewardOrder{
Code: msg.RES_CODE_SUCCESS,
})
return nil
}
func ReqDelOrder(args []interface{}) error {
_, player, buf := ParseArgs(args)
req := &msg.ReqDelOrder{}
proto.Unmarshal(buf, req)
OrderMod := player.PlayMod.getOrderMod()
err := OrderMod.DelOrder(int(req.OrderId))
if err != nil {
player.SendErrClienRes(&msg.ResDelOrder{
Code: msg.RES_CODE_FAIL,
Msg: err.Error(),
})
return err
}
player.PushAndSendClienRes(&msg.ResDelOrder{
Code: msg.RES_CODE_SUCCESS,
})
player.PushClientRes(OrderMod.BackData())
return nil return nil
} }

View File

@ -6,6 +6,7 @@ import (
chargeCfg "server/conf/charge" chargeCfg "server/conf/charge"
mergeDataCfg "server/conf/mergeData" mergeDataCfg "server/conf/mergeData"
"server/game/mod/item" "server/game/mod/item"
"server/game/mod/order"
"server/msg" "server/msg"
"server/pkg/github.com/name5566/leaf/log" "server/pkg/github.com/name5566/leaf/log"
) )
@ -268,7 +269,9 @@ func (c *ChargeMod) InitChessShop(Emit []int) {
break break
} }
} else { } else {
Diamond := GetChessDiamond(i, v) EmitId := order.GetEmitByColor(Emit, k)
Mul := mergeDataCfg.GetSellDiamondMul(EmitId, k)
Diamond := GetChessDiamond(i, v) * Mul
RandList = append(RandList, Rand{ RandList = append(RandList, Rand{
ChessId: ChessId, ChessId: ChessId,
Diamond: Diamond, Diamond: Diamond,

View File

@ -107,7 +107,7 @@ func (cb *ChessBorad) ComposeChess(id int) (int, error) {
} }
if count < 2 { if count < 2 {
return 0, errors.New("次数不足" + fmt.Sprintf("Id: %d", count)) return 0, errors.New("次数不足" + fmt.Sprintf("Id: %d", id))
} }
ChessType := mergeDataCfg.GetTypeById(id) ChessType := mergeDataCfg.GetTypeById(id)
if ChessType == "Emitter" { if ChessType == "Emitter" {
@ -429,18 +429,7 @@ func (cb *ChessBorad) TakeChessOutBag(Grid int) error {
} }
func (cb *ChessBorad) GetOrderEmit() []int { func (cb *ChessBorad) GetOrderEmit() []int {
r := make([]int, 0) return cb.GetEmitList()
for k, v := range cb.EmitList {
if v <= 0 {
continue
}
EmitId := mergeDataCfg.GetEmitId(k)
if cb.Retire[EmitId] > 0 {
continue
}
r = append(r, k)
}
return r
} }
func (cb *ChessBorad) GetRetireEmit() map[string]int { func (cb *ChessBorad) GetRetireEmit() map[string]int {

View File

@ -35,12 +35,13 @@ type Order struct {
} }
const ( const (
Common_type = 1 // 普通订单 Common_type = 1 // 普通订单
Extra_type = 2 // 额外订单 Extra_type = 2 // 额外订单
Super_type = 3 // 超级订单 Super_type = 3 // 超级订单
Preheat_type = 4 // 预热订单 Preheat_type = 4 // 预热订单
Trigger_type = 5 // 触发订单 Trigger_type = 5 // 触发订单
Clean_type = 6 // 清理订单 Clean_type = 6 // 清理订单
Clean_Order_type = 7 // 清理无法生成订单的棋子
diff_low = 1 // 低难度 diff_low = 1 // 低难度
diff_mid = 2 // 中难度 diff_mid = 2 // 中难度
@ -405,6 +406,11 @@ func (o *OrderMod) CreateCleanOrder(ChessList []int) bool {
return true return true
} }
func (o *OrderMod) CreateCleanOrder2(ChessList []int) bool {
o.addOrder(ChessList, diff_low, Clean_Order_type)
return true
}
func (o *OrderMod) CreateExtraOrder(AddChess, AddNewEmit, ChessList []int, EnergyMul int) bool { func (o *OrderMod) CreateExtraOrder(AddChess, AddNewEmit, ChessList []int, EnergyMul int) bool {
GetExtraEmitId := mergeDataCfg.GetExtraEmitId() GetExtraEmitId := mergeDataCfg.GetExtraEmitId()
b1 := false b1 := false
@ -548,3 +554,15 @@ func (o *OrderMod) Retire(EmitId string) {
o.ChessPool = ChessPool o.ChessPool = ChessPool
o.EmitShuffle = nil o.EmitShuffle = nil
} }
func (o *OrderMod) DelOrder(OrderId int) error {
Order, ok := o.OrderList[OrderId]
if !ok {
return fmt.Errorf("order not exist")
}
if Order.Type != Clean_Order_type {
return fmt.Errorf("order type wrong")
}
delete(o.OrderList, OrderId)
return nil
}

View File

@ -56,8 +56,8 @@ func getChessDiff(ChessNum, OrderDiff, OrderN int) map[int]int {
switch OrderDiff { switch OrderDiff {
case diff_low: case diff_low:
rand := map[int]int{ rand := map[int]int{
diff_low: 99, diff_low: 99 - OrderN,
diff_mid: 1, diff_mid: 1 + OrderN,
} }
secondDiff := GoUtil.RandMap(rand) secondDiff := GoUtil.RandMap(rand)
rs = map[int]int{ rs = map[int]int{
@ -66,8 +66,8 @@ func getChessDiff(ChessNum, OrderDiff, OrderN int) map[int]int {
} }
case diff_mid: case diff_mid:
rand := map[int]int{ rand := map[int]int{
diff_low: 5, diff_low: 5 + OrderN,
diff_mid: 95, diff_mid: 95 - OrderN,
} }
secondDiff := GoUtil.RandMap(rand) secondDiff := GoUtil.RandMap(rand)
rs = map[int]int{ rs = map[int]int{
@ -90,37 +90,51 @@ func getChessDiff(ChessNum, OrderDiff, OrderN int) map[int]int {
switch OrderDiff { switch OrderDiff {
case diff_low: case diff_low:
rand := map[int]int{ rand := map[int]int{
diff_low: 99, diff_low: 95 - OrderN,
diff_mid: 1, diff_mid: 5 + OrderN,
} }
secondDiff := GoUtil.RandMap(rand) secondDiff := GoUtil.RandMap(rand)
rand = map[int]int{
diff_low: 60 - 4*OrderN,
diff_mid: 40 + 4*OrderN,
}
thirdDiff := GoUtil.RandMap(rand)
rs = map[int]int{ rs = map[int]int{
1: diff_low, 1: diff_low,
2: secondDiff, 2: secondDiff,
3: secondDiff, 3: thirdDiff,
} }
case diff_mid: case diff_mid:
rand := map[int]int{ rand := map[int]int{
diff_low: 5, diff_low: 50 - 3*OrderN,
diff_mid: 95, diff_mid: 50 + 3*OrderN,
} }
secondDiff := GoUtil.RandMap(rand) secondDiff := GoUtil.RandMap(rand)
rand = map[int]int{
diff_mid: 95 - 4*OrderN,
diff_high: 5 + 4*OrderN,
}
thirdDiff := GoUtil.RandMap(rand)
rs = map[int]int{ rs = map[int]int{
1: diff_low, 1: diff_low,
2: secondDiff, 2: secondDiff,
3: secondDiff, 3: thirdDiff,
} }
case diff_high: case diff_high:
rand := map[int]int{ rand := map[int]int{
diff_low: int(95 - 10*OrderN), diff_low: int(95 - 10*OrderN),
diff_mid: int(4 + 6*OrderN), diff_mid: int(5 + 10*OrderN),
diff_high: int(1 + 4*OrderN),
} }
secondDiff := GoUtil.RandMap(rand) secondDiff := GoUtil.RandMap(rand)
rand = map[int]int{
diff_mid: int(95 - 8*OrderN),
diff_high: int(5 + 8*OrderN),
}
thirdDiff := GoUtil.RandMap(rand)
rs = map[int]int{ rs = map[int]int{
1: diff_low, 1: diff_low,
2: secondDiff, 2: secondDiff,
3: secondDiff, 3: thirdDiff,
} }
} }
} }
@ -181,7 +195,7 @@ func getChesslvRange(Emit int, EnergyMul int) (int, int) {
} }
// 根据类型获取发射器id // 根据类型获取发射器id
func getEmitByColor(Emit []int, color string) int { func GetEmitByColor(Emit []int, color string) int {
for _, v := range Emit { for _, v := range Emit {
Produce := mergeDataCfg.GetEmitProduceChessType(v) Produce := mergeDataCfg.GetEmitProduceChessType(v)
for _, c := range Produce { for _, c := range Produce {
@ -314,7 +328,7 @@ func getChessFromPoolByDiff(o *OrderMod, Diff int, Emit []int, EnergyMul int) in
*/ */
if MinChessId != 0 { if MinChessId != 0 {
MinChessColor := mergeDataCfg.GetColorById(MinChessId) MinChessColor := mergeDataCfg.GetColorById(MinChessId)
NewEmitChessId := getEmitByColor(Emit, MinChessColor) NewEmitChessId := GetEmitByColor(Emit, MinChessColor)
ColorRand := mergeDataCfg.GetEmitProduceType(NewEmitChessId) ColorRand := mergeDataCfg.GetEmitProduceType(NewEmitChessId)
ChessMinLv, ChessMaxLv := getChesslvRange(NewEmitChessId, EnergyMul) ChessMinLv, ChessMaxLv := getChesslvRange(NewEmitChessId, EnergyMul)
NewLev := getChessLv(ChessMinLv, ChessMaxLv, Diff) NewLev := getChessLv(ChessMinLv, ChessMaxLv, Diff)

View File

@ -37,6 +37,7 @@ type PlayroomMod struct {
LastFlip int // 上次翻牌奖励档次 LastFlip int // 上次翻牌奖励档次
NoFlip int // 连续未获取最高翻牌奖励次数 NoFlip int // 连续未获取最高翻牌奖励次数
TodayFlip bool // 今日是否已获得最高档奖励 TodayFlip bool // 今日是否已获得最高档奖励
JackpotNum int // 每日转盘数量
} }
const ( const (
@ -77,6 +78,7 @@ func (p *PlayroomMod) InitData() {
} }
if p.Room == nil { if p.Room == nil {
p.Room = make(map[int]int) p.Room = make(map[int]int)
p.JackpotNum = playroomCfg.GetJackpotNum()
} }
if p.Visitor == nil { if p.Visitor == nil {
p.Visitor = make(map[int]*Info) p.Visitor = make(map[int]*Info)
@ -104,6 +106,7 @@ func (p *PlayroomMod) InitData() {
func (p *PlayroomMod) ZeroUpdate() { func (p *PlayroomMod) ZeroUpdate() {
p.TodayFlip = false p.TodayFlip = false
p.LastFlip = 0 p.LastFlip = 0
p.JackpotNum = playroomCfg.GetJackpotNum()
} }
func (p *PlayroomMod) GetVisitor() map[int]*Info { func (p *PlayroomMod) GetVisitor() map[int]*Info {

File diff suppressed because it is too large Load Diff