Merge branch 'develop' into sdk
This commit is contained in:
commit
c6d4a48145
@ -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
|
||||
}
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -644,7 +644,7 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
|
||||
|
||||
//领取订单奖励
|
||||
RegisterMsgProcessFunc("ReqRewardOrder", ReqRewardOrder) // 领取订单奖励
|
||||
|
||||
RegisterMsgProcessFunc("ReqDelOrder", ReqDelOrder) // 删除订单
|
||||
//装饰
|
||||
RegisterMsgProcessFunc("ReqDecorate", ReqDecorate) // 装饰
|
||||
RegisterMsgProcessFunc("ReqDecorateAll", ReqDecorateAll) // 装饰全部
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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())
|
||||
}
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -35,12 +35,13 @@ type Order struct {
|
||||
}
|
||||
|
||||
const (
|
||||
Common_type = 1 // 普通订单
|
||||
Extra_type = 2 // 额外订单
|
||||
Super_type = 3 // 超级订单
|
||||
Preheat_type = 4 // 预热订单
|
||||
Trigger_type = 5 // 触发订单
|
||||
Clean_type = 6 // 清理订单
|
||||
Common_type = 1 // 普通订单
|
||||
Extra_type = 2 // 额外订单
|
||||
Super_type = 3 // 超级订单
|
||||
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
|
||||
}
|
||||
|
||||
@ -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_low: int(95 - 10*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)
|
||||
|
||||
@ -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
Loading…
Reference in New Issue
Block a user