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 {
data, err := gamedata.GetDataByIntKey(CFG_NAME, Id)
if err != nil {
log.Debug("GetTypeById GetOne Id:%v not found", Id)
log.Debug("GetEmitProduceType GetOne Id:%v not found", Id)
return []string{}
}
return strings.Split(gamedata.ParseString(data["Emit_Product"]), ",")
@ -212,7 +212,7 @@ func GetEmitProduceType(Id int) []string {
func GetEmitProduceChessType(Id int) []string {
data, err := gamedata.GetDataByIntKey(CFG_NAME, Id)
if err != nil {
log.Debug("GetTypeById GetOne Id:%v not found", Id)
log.Debug("GetEmitProduceChessType GetOne Id:%v not found", Id)
return []string{}
}
value := gamedata.ParseString(data["Product_Type"])
@ -226,7 +226,7 @@ func GetEmitProduceChessType(Id int) []string {
func GetEmitId(Id int) string {
data, err := gamedata.GetDataByIntKey(CFG_NAME, Id)
if err != nil {
log.Debug("GetTypeById GetOne Id:%v not found", Id)
log.Debug("GetEmitId GetOne Id:%v not found", Id)
return ""
}
return gamedata.ParseString(data["Emit_ID"])
@ -235,7 +235,7 @@ func GetEmitId(Id int) string {
func GetEmitType(Id int) string {
data, err := gamedata.GetDataByIntKey(CFG_NAME, Id)
if err != nil {
log.Debug("GetTypeById GetOne Id:%v not found", Id)
log.Debug("GetEmitType GetOne Id:%v not found", Id)
return ""
}
return gamedata.ParseString(data["Emit_Type"])
@ -412,3 +412,66 @@ func DynamicAdjust(EmitId int, Color string) int {
}
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")
}
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) {
data, err := gamedata.GetDataByIntKey(CFG_PLAYROOM_MOOD, Id)
if err != nil {

View File

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

View File

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

View File

@ -5,6 +5,7 @@ import (
"math"
"server/GoUtil"
mergeDataCfg "server/conf/mergeData"
orderCfg "server/conf/order"
"server/game/mod/item"
"server/game/mod/quest"
"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_MERGETIME})
player.PushClientRes(HandbookMod.BackData())
triggerComposeChess(player, NewChessId, player.PlayMod.getBaseMod().EnergyMul, player.PlayMod.getChessMod().GetEmitList())
// 获取活动道具
ActItem := GetActivityItem(player, GoUtil.Int32ToInt(v.ActType))
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)})
case msg.HANDLE_TYPE_SELL: //出售棋子
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 {
return err
}
@ -219,3 +224,44 @@ func (p *PlayerChessData) HandleChess(player *Player, handle_list []*msg.ChessHa
func (p *PlayerChessData) ClearData() bool {
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.Mood = GoUtil.MapIntToInt32(PlayroomMod.GetMood())
r.AllMood = int32(PlayroomMod.AllMood)
r.Jackpot = int32(PlayroomMod.JackpotNum)
p.PushClientRes(r)
}

View File

@ -335,6 +335,29 @@ func ReqRewardOrder(args []interface{}) error {
BackChampship(player)
player.PushClientRes(LimitedTimeEventMod.BackData())
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
}

View File

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

View File

@ -107,7 +107,7 @@ func (cb *ChessBorad) ComposeChess(id int) (int, error) {
}
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)
if ChessType == "Emitter" {
@ -429,18 +429,7 @@ func (cb *ChessBorad) TakeChessOutBag(Grid int) error {
}
func (cb *ChessBorad) GetOrderEmit() []int {
r := make([]int, 0)
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
return cb.GetEmitList()
}
func (cb *ChessBorad) GetRetireEmit() map[string]int {

View File

@ -41,6 +41,7 @@ const (
Preheat_type = 4 // 预热订单
Trigger_type = 5 // 触发订单
Clean_type = 6 // 清理订单
Clean_Order_type = 7 // 清理无法生成订单的棋子
diff_low = 1 // 低难度
diff_mid = 2 // 中难度
@ -405,6 +406,11 @@ func (o *OrderMod) CreateCleanOrder(ChessList []int) bool {
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 {
GetExtraEmitId := mergeDataCfg.GetExtraEmitId()
b1 := false
@ -548,3 +554,15 @@ func (o *OrderMod) Retire(EmitId string) {
o.ChessPool = ChessPool
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 {
case diff_low:
rand := map[int]int{
diff_low: 99,
diff_mid: 1,
diff_low: 99 - OrderN,
diff_mid: 1 + OrderN,
}
secondDiff := GoUtil.RandMap(rand)
rs = map[int]int{
@ -66,8 +66,8 @@ func getChessDiff(ChessNum, OrderDiff, OrderN int) map[int]int {
}
case diff_mid:
rand := map[int]int{
diff_low: 5,
diff_mid: 95,
diff_low: 5 + OrderN,
diff_mid: 95 - OrderN,
}
secondDiff := GoUtil.RandMap(rand)
rs = map[int]int{
@ -90,37 +90,51 @@ func getChessDiff(ChessNum, OrderDiff, OrderN int) map[int]int {
switch OrderDiff {
case diff_low:
rand := map[int]int{
diff_low: 99,
diff_mid: 1,
diff_low: 95 - OrderN,
diff_mid: 5 + OrderN,
}
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{
1: diff_low,
2: secondDiff,
3: secondDiff,
3: thirdDiff,
}
case diff_mid:
rand := map[int]int{
diff_low: 5,
diff_mid: 95,
diff_low: 50 - 3*OrderN,
diff_mid: 50 + 3*OrderN,
}
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{
1: diff_low,
2: secondDiff,
3: secondDiff,
3: thirdDiff,
}
case diff_high:
rand := map[int]int{
diff_low: int(95 - 10*OrderN),
diff_mid: int(4 + 6*OrderN),
diff_high: int(1 + 4*OrderN),
diff_mid: int(5 + 10*OrderN),
}
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{
1: diff_low,
2: secondDiff,
3: secondDiff,
3: thirdDiff,
}
}
}
@ -181,7 +195,7 @@ func getChesslvRange(Emit int, EnergyMul int) (int, int) {
}
// 根据类型获取发射器id
func getEmitByColor(Emit []int, color string) int {
func GetEmitByColor(Emit []int, color string) int {
for _, v := range Emit {
Produce := mergeDataCfg.GetEmitProduceChessType(v)
for _, c := range Produce {
@ -314,7 +328,7 @@ func getChessFromPoolByDiff(o *OrderMod, Diff int, Emit []int, EnergyMul int) in
*/
if MinChessId != 0 {
MinChessColor := mergeDataCfg.GetColorById(MinChessId)
NewEmitChessId := getEmitByColor(Emit, MinChessColor)
NewEmitChessId := GetEmitByColor(Emit, MinChessColor)
ColorRand := mergeDataCfg.GetEmitProduceType(NewEmitChessId)
ChessMinLv, ChessMaxLv := getChesslvRange(NewEmitChessId, EnergyMul)
NewLev := getChessLv(ChessMinLv, ChessMaxLv, Diff)

View File

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

File diff suppressed because it is too large Load Diff