Merge branch 'develop' into sdk
This commit is contained in:
commit
67bd1ab43f
@ -10,14 +10,15 @@ import (
|
||||
|
||||
const (
|
||||
CFG_CHARGE = "Charge"
|
||||
CFG_DIAMOND_SHOP = "DiamondShop"
|
||||
CFG_ENERGY_SHOP = "EnergyShop"
|
||||
CFG_SEPCIAL_SHOP = "SpecialShop"
|
||||
CFG_FREE_SHOP = "FreeShop"
|
||||
CFG_CHARGE_CONST = "ChargeConst"
|
||||
CFG_CHARGE_GIFT = "ChargeGift"
|
||||
CFG_CHARGE_WISH = "ChargeWish"
|
||||
CFG_DIAMOND_SHOP = "DiamondShop" // 钻石商店
|
||||
CFG_ENERGY_SHOP = "EnergyShop" // 体力商店
|
||||
CFG_SEPCIAL_SHOP = "SpecialShop" // 特惠商店
|
||||
CFG_FREE_SHOP = "FreeShop" // 免费商店
|
||||
CFG_CHARGE_CONST = "ChargeConst" // 充值常量配置
|
||||
CFG_CHARGE_GIFT = "ChargeGift" // 充值礼包
|
||||
CFG_CHARGE_WISH = "ChargeWish" // 许愿配置
|
||||
CFG_CHARGE_PETCOIN = "ChargePetCoin" // 宠物币充值配置
|
||||
CFG_CHARGE_AD = "ChargeAD" // 广告充值配置
|
||||
)
|
||||
|
||||
func init() {
|
||||
@ -30,6 +31,20 @@ func init() {
|
||||
gamedata.InitCfg(CFG_CHARGE_GIFT)
|
||||
gamedata.InitCfg(CFG_CHARGE_WISH)
|
||||
gamedata.InitCfg(CFG_CHARGE_PETCOIN)
|
||||
gamedata.InitCfg(CFG_CHARGE_AD)
|
||||
}
|
||||
|
||||
func GetADReward(ChargeId int) ([]*item.Item, int) {
|
||||
data, err := gamedata.GetData(CFG_CHARGE_AD)
|
||||
if err != nil {
|
||||
return nil, 0
|
||||
}
|
||||
for _, v := range data {
|
||||
if gamedata.GetIntValue(v, "ChargeId") == ChargeId {
|
||||
return item.ParseItem(gamedata.GetValue(v, "Items")), gamedata.GetIntValue(v, "PetWork")
|
||||
}
|
||||
}
|
||||
return nil, 0
|
||||
}
|
||||
|
||||
func GetMoneyCharge(ChargeId int) float64 {
|
||||
|
||||
@ -473,13 +473,24 @@ func DynamicLev2(Lv int, EmitId int, Color1 string, Color2 string) int {
|
||||
return Lv
|
||||
}
|
||||
|
||||
func DynamicAdjust(EmitId int, Color string) int {
|
||||
func DynamicAdjust(EmitId int, Color string, EnergyMul int) int {
|
||||
data, err := gamedata.GetDataByIntKey(CFG_NAME, EmitId)
|
||||
if err != nil {
|
||||
log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId)
|
||||
return 0
|
||||
}
|
||||
DynamicLv := gamedata.GetStringValue(data, "Dynamic")
|
||||
DynamicLv := ""
|
||||
switch EnergyMul {
|
||||
case 0:
|
||||
DynamicLv = gamedata.GetStringValue(data, "Dynamic")
|
||||
case 1, 2:
|
||||
DynamicLv = gamedata.GetStringValue(data, "Dynamic1")
|
||||
case 3, 4:
|
||||
DynamicLv = gamedata.GetStringValue(data, "Dynamic2")
|
||||
default:
|
||||
DynamicLv = gamedata.GetStringValue(data, "Dynamic3")
|
||||
}
|
||||
|
||||
if DynamicLv == "" {
|
||||
return 0
|
||||
}
|
||||
@ -497,13 +508,23 @@ func DynamicAdjust(EmitId int, Color string) int {
|
||||
return 0
|
||||
}
|
||||
|
||||
func GetAdjust(EmitId int, Color string) int {
|
||||
func GetAdjust(EmitId int, Color string, EnergyMul int) 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")
|
||||
AdjustLv := ""
|
||||
switch EnergyMul {
|
||||
case 0:
|
||||
AdjustLv = gamedata.GetStringValue(data, "Dynamic")
|
||||
case 1, 2:
|
||||
AdjustLv = gamedata.GetStringValue(data, "Dynamic1")
|
||||
case 3, 4:
|
||||
AdjustLv = gamedata.GetStringValue(data, "Dynamic2")
|
||||
default:
|
||||
AdjustLv = gamedata.GetStringValue(data, "Dynamic3")
|
||||
}
|
||||
if AdjustLv == "" {
|
||||
return 0
|
||||
}
|
||||
|
||||
@ -568,14 +568,59 @@ func GetOrderItem(Star int) map[int][]gamedata.PetOrderItem {
|
||||
log.Debug("GetOrderItem Id is 0, Type:%v", Type)
|
||||
continue
|
||||
}
|
||||
GradeStr := gamedata.GetStringValue(v, "Grade")
|
||||
Grade := make([]int, 0)
|
||||
for _, v1 := range strings.Split(GradeStr, ",") {
|
||||
v2 := GoUtil.Int(v1)
|
||||
if v2 > 0 {
|
||||
Grade = append(Grade, v2)
|
||||
}
|
||||
}
|
||||
r[Type] = append(r[Type], gamedata.PetOrderItem{
|
||||
Id: Id,
|
||||
Star: ItemStar,
|
||||
Id: Id,
|
||||
Star: ItemStar,
|
||||
Grade: Grade,
|
||||
})
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
func GetOrderItemByGrade(Grade int) map[int][]int {
|
||||
data, err := gamedata.GetData(CFG_PLAYROOM_ORDERITEM)
|
||||
if err != nil {
|
||||
log.Debug("GetOrderItemByGrade err:%v", err)
|
||||
return nil
|
||||
}
|
||||
r := make(map[int][]int)
|
||||
for k, v := range data {
|
||||
GradeStr := gamedata.GetStringValue(v, "Grade")
|
||||
GradeList := make([]int, 0)
|
||||
for _, v1 := range strings.Split(GradeStr, ",") {
|
||||
v2 := GoUtil.Int(v1)
|
||||
if v2 > 0 {
|
||||
GradeList = append(GradeList, v2)
|
||||
}
|
||||
}
|
||||
if !GoUtil.InArray(Grade, GradeList) {
|
||||
continue
|
||||
}
|
||||
Id := GoUtil.Int(k)
|
||||
Type := gamedata.GetIntValue(v, "Type")
|
||||
if Type == 0 {
|
||||
continue
|
||||
}
|
||||
if _, ok := r[Type]; !ok {
|
||||
r[Type] = make([]int, 0)
|
||||
}
|
||||
if Id == 0 {
|
||||
log.Debug("GetOrderItemByGrade Id is 0, Type:%v", Type)
|
||||
continue
|
||||
}
|
||||
r[Type] = append(r[Type], Id)
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
func GetOrderItemList() []int {
|
||||
data, err := gamedata.GetData(CFG_PLAYROOM_ORDERITEM)
|
||||
if err != nil {
|
||||
@ -648,3 +693,25 @@ func GetDailyTaskListById(Id int) []int {
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
func GetItemAddPhysiology(Item map[int]int) int {
|
||||
r := 0
|
||||
data, err := gamedata.GetData(CFG_PLAYROOM_MOOD)
|
||||
if err != nil {
|
||||
log.Debug("GetItemAddPhysiology err")
|
||||
return 0
|
||||
}
|
||||
for _, v := range data {
|
||||
costItem := gamedata.GetItemList(v, "Cost2")
|
||||
if len(costItem) < 1 {
|
||||
continue
|
||||
}
|
||||
if costItem[0].Id == 0 {
|
||||
continue
|
||||
}
|
||||
if val, ok := Item[costItem[0].Id]; ok {
|
||||
r += gamedata.GetIntValue(v, "PEffect") * val
|
||||
}
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
@ -17,6 +17,7 @@ func Charge(p *Player, ChargeId int) {
|
||||
PiggyBankFire(p, ChargeId) // 猪猪银行
|
||||
PlayroomFire(p, ChargeId) // 游乐场
|
||||
ActivityFire(p, ChargeId) // 活动礼包
|
||||
ADPetWorkFire(p, ChargeId) // 广告宠物工作
|
||||
OrderMod := p.PlayMod.getOrderMod()
|
||||
OrderMod.SetIsCharge() // 设置订单模块为充值状态
|
||||
p.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PURCHASE, A: []interface{}{}})
|
||||
@ -32,6 +33,21 @@ func SendCharge(p *Player, d *ChargeExtra) {
|
||||
})
|
||||
}
|
||||
|
||||
func ADPetWorkFire(p *Player, ChargeId int) {
|
||||
ChargeMod := p.PlayMod.getChargeMod()
|
||||
Item := ChargeMod.FireAdReward(ChargeId)
|
||||
if Item == nil {
|
||||
return
|
||||
}
|
||||
err := p.HandleItem(Item, msg.ITEM_POP_LABEL_ActivityGift.String())
|
||||
if err != nil {
|
||||
log.Debug("ChargeFire err : %s", err)
|
||||
return
|
||||
}
|
||||
p.PlayMod.save()
|
||||
p.PushClientRes(ChargeMod.BackData())
|
||||
}
|
||||
|
||||
func ActivityFire(p *Player, ChargeId int) {
|
||||
ActivityMod := p.PlayMod.getActivityMod()
|
||||
ActivityId := activityCfg.GetActivityGiftId(ChargeId)
|
||||
|
||||
@ -316,7 +316,7 @@ func checkChess(ChessId, EnergyMul int, Emit []int) bool {
|
||||
}
|
||||
}
|
||||
_, Max := getChesslvRange(EmitId, EnergyMul, false)
|
||||
Adjust := mergeDataCfg.GetAdjust(EmitId, ChessIdColor)
|
||||
Adjust := mergeDataCfg.GetAdjust(EmitId, ChessIdColor, EnergyMul)
|
||||
return ChessIdLv > Max-Adjust
|
||||
}
|
||||
func getChesslvRange(Emit int, EnergyMul int, IsCharge bool) (int, int) {
|
||||
|
||||
@ -11,6 +11,7 @@ import (
|
||||
cardCfg "server/conf/card"
|
||||
chargeCfg "server/conf/charge"
|
||||
decorateCfg "server/conf/decorate"
|
||||
itemCfg "server/conf/item"
|
||||
limitedTimeEventCfg "server/conf/limitedTimeEvent"
|
||||
mailCfg "server/conf/mail"
|
||||
mergeDataCfg "server/conf/mergeData"
|
||||
@ -1172,7 +1173,7 @@ func (player *Player) CreateNormalOrder() {
|
||||
}
|
||||
Items := make([]*item.Item, 0)
|
||||
Star := order.GetOrderStar(v.MergeId, ChessMod.GetStarEmitList())
|
||||
Star = int(float64(Star)*float64(OrderFactor)/1000) * 10
|
||||
// Star = int(float64(Star)*float64(OrderFactor)/1000) * 10
|
||||
Items = player.GetPetOrderReward(Star, Items)
|
||||
if len(Items) == 1 && Items[0].Id == item.ITEM_STAR_ID {
|
||||
v.Type = order.Common_type
|
||||
@ -1270,63 +1271,33 @@ func (player *Player) InitOrderItem() {
|
||||
}
|
||||
}
|
||||
func (player *Player) GetPetOrderReward(Star int, Items []*item.Item) []*item.Item {
|
||||
OrderItem := playroomCfg.GetOrderItem(Star)
|
||||
type sortData struct {
|
||||
Type int
|
||||
Num int
|
||||
HighNum := Star / 225
|
||||
if HighNum > 0 {
|
||||
HighNum = min(HighNum, 3)
|
||||
Items = append(Items, item.NewItem(item.ITEM_PLAYROOM_BOX_HIGH_ID, HighNum))
|
||||
Star -= HighNum * 225
|
||||
}
|
||||
ItemMod := player.PlayMod.getItemMod()
|
||||
sortList := make([]sortData, 0)
|
||||
for k, v := range OrderItem {
|
||||
ids := make([]int, 0)
|
||||
for _, v1 := range v {
|
||||
if v1.Id == 0 {
|
||||
continue
|
||||
}
|
||||
ids = append(ids, v1.Id)
|
||||
}
|
||||
Num := ItemMod.GetItemNumByList(ids)
|
||||
sortList = append(sortList, sortData{
|
||||
Type: k,
|
||||
Num: Num,
|
||||
})
|
||||
|
||||
MidNum := Star / 150
|
||||
if MidNum > 0 {
|
||||
MidNum = min(MidNum, 3)
|
||||
Items = append(Items, item.NewItem(item.ITEM_PLAYROOM_BOX_MID_ID, MidNum))
|
||||
Star -= MidNum * 150
|
||||
}
|
||||
if len(sortList) == 0 && Star > 0 {
|
||||
if len(Items) >= 2 {
|
||||
Items = append(Items, item.NewItem(item.ITEM_STAR_ID, Star))
|
||||
return Items
|
||||
}
|
||||
|
||||
sort.Slice(sortList, func(i, j int) bool {
|
||||
return sortList[i].Num < sortList[j].Num
|
||||
})
|
||||
|
||||
ItemsId := OrderItem[sortList[0].Type]
|
||||
if len(ItemsId) == 0 {
|
||||
return Items
|
||||
LowNum := Star / 75
|
||||
if LowNum > 0 {
|
||||
LowNum = min(LowNum, 3)
|
||||
Items = append(Items, item.NewItem(item.ITEM_PLAYROOM_BOX_LOW_ID, LowNum))
|
||||
Star -= LowNum * 75
|
||||
}
|
||||
|
||||
for k, v := range ItemsId {
|
||||
ItemNum := ItemMod.GetItem(v.Id)
|
||||
for _, v1 := range Items {
|
||||
if v1.Id == v.Id {
|
||||
ItemNum += v1.Num
|
||||
}
|
||||
}
|
||||
v.Num = ItemNum
|
||||
ItemsId[k] = v
|
||||
if Star > 0 {
|
||||
Items = append(Items, item.NewItem(item.ITEM_STAR_ID, Star))
|
||||
}
|
||||
sort.Slice(ItemsId, func(i, j int) bool {
|
||||
return ItemsId[i].Num < ItemsId[j].Num
|
||||
})
|
||||
Items = append(Items, item.NewItem(ItemsId[0].Id, 1))
|
||||
Star -= ItemsId[0].Star
|
||||
if Star <= 0 {
|
||||
return Items
|
||||
}
|
||||
if len(Items) >= 2 {
|
||||
return Items
|
||||
}
|
||||
return player.GetPetOrderReward(Star, Items)
|
||||
return Items
|
||||
}
|
||||
|
||||
func ExcludeCardStar(CardList []int) []int {
|
||||
@ -1492,3 +1463,79 @@ func (p *Player) AddHighOrder2() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (p *Player) FormatPetOrderItem(Items []*item.Item) []*item.Item {
|
||||
NewItems := make([]*item.Item, 0)
|
||||
PlayroomMod := p.PlayMod.getPlayroomMod()
|
||||
for _, v := range Items {
|
||||
if v.Id != item.ITEM_PLAYROOM_BOX_LOW_ID && v.Id != item.ITEM_PLAYROOM_BOX_MID_ID && v.Id != item.ITEM_PLAYROOM_BOX_HIGH_ID {
|
||||
NewItems = append(NewItems, v)
|
||||
continue
|
||||
}
|
||||
var OrderItem map[int][]int
|
||||
switch v.Id {
|
||||
case item.ITEM_PLAYROOM_BOX_LOW_ID:
|
||||
OrderItem = playroomCfg.GetOrderItemByGrade(1)
|
||||
case item.ITEM_PLAYROOM_BOX_MID_ID:
|
||||
OrderItem = playroomCfg.GetOrderItemByGrade(2)
|
||||
default:
|
||||
OrderItem = playroomCfg.GetOrderItemByGrade(3)
|
||||
}
|
||||
feed := PlayroomMod.GetPhysiology(playroom.PHYSIOLOGY_TYPE_FEED)
|
||||
feedItem := p.GetPlayroomFood()
|
||||
feedPlo := playroomCfg.GetItemAddPhysiology(feedItem)
|
||||
if feed.Num+feedPlo <= 1 {
|
||||
RandList := OrderItem[1]
|
||||
NewItems = append(NewItems, item.NewItem(GoUtil.RandSlice(RandList), 1))
|
||||
continue
|
||||
}
|
||||
clean := PlayroomMod.GetPhysiology(playroom.PHYSIOLOGY_TYPE_CLEAN)
|
||||
cleanItem := p.GetPlayroomClean()
|
||||
cleanPlo := playroomCfg.GetItemAddPhysiology(cleanItem)
|
||||
// 卫生值低于等于5点,优先产出清洁类物品
|
||||
if clean.Num+cleanPlo <= 5 {
|
||||
RandList := OrderItem[2]
|
||||
NewItems = append(NewItems, item.NewItem(GoUtil.RandSlice(RandList), 1))
|
||||
continue
|
||||
}
|
||||
RandList := make([]int, 0)
|
||||
for k, v1 := range OrderItem {
|
||||
if k == 1 || k == 2 {
|
||||
continue
|
||||
}
|
||||
RandList = append(RandList, v1...)
|
||||
}
|
||||
NewItems = append(NewItems, item.NewItem(GoUtil.RandSlice(RandList), 1))
|
||||
}
|
||||
return NewItems
|
||||
}
|
||||
|
||||
func (player *Player) GetPlayroomFood() map[int]int {
|
||||
ItemMod := player.PlayMod.getItemMod()
|
||||
Item := make(map[int]int)
|
||||
for k, v := range ItemMod.Data {
|
||||
ItemType := itemCfg.GetItemType(k)
|
||||
if ItemType == item.ITEM_TYPE_PLAYROOM_PET {
|
||||
Effect := itemCfg.GetItemEffect(k)
|
||||
if Effect == 1 {
|
||||
Item[k] = v
|
||||
}
|
||||
}
|
||||
}
|
||||
return Item
|
||||
}
|
||||
|
||||
func (player *Player) GetPlayroomClean() map[int]int {
|
||||
ItemMod := player.PlayMod.getItemMod()
|
||||
Item := make(map[int]int)
|
||||
for k, v := range ItemMod.Data {
|
||||
ItemType := itemCfg.GetItemType(k)
|
||||
if ItemType == item.ITEM_TYPE_PLAYROOM_PET {
|
||||
Effect := itemCfg.GetItemEffect(k)
|
||||
if Effect == 2 {
|
||||
Item[k] = v
|
||||
}
|
||||
}
|
||||
}
|
||||
return Item
|
||||
}
|
||||
|
||||
@ -235,6 +235,9 @@ func ReqRewardOrder(player *Player, buf []byte) error {
|
||||
ChessMod := player.PlayMod.getChessMod()
|
||||
LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod()
|
||||
Item, mergeList, OrderType, Star, err := OrderMod.RewardOrder(int(req.OrderId))
|
||||
if OrderType == order.Pet_type {
|
||||
Item = player.FormatPetOrderItem(Item)
|
||||
}
|
||||
ActItem := GetActivityItem(player, GoUtil.Int32ToInt(req.ActType))
|
||||
Item = item.Merge(Item, ActItem)
|
||||
if !OrderMod.CheckSuperOrder() {
|
||||
|
||||
@ -263,7 +263,7 @@ func UnitOrder2(p *Player, Lv, EnergyMul int) float64 {
|
||||
Color := mergeDataCfg.GetColorById(v1)
|
||||
Lv := mergeDataCfg.GetLvById(v1)
|
||||
EmitId := order.GetEmitByColor(Emit, Color)
|
||||
AdjustLv := mergeDataCfg.GetAdjust(EmitId, Color)
|
||||
AdjustLv := mergeDataCfg.GetAdjust(EmitId, Color, EnergyMul)
|
||||
Energy += math.Pow(2, float64(Lv-1+AdjustLv))
|
||||
}
|
||||
}
|
||||
@ -353,3 +353,12 @@ func UnitOrderExtra(p *Player) error {
|
||||
fmt.Print(Update)
|
||||
return nil
|
||||
}
|
||||
|
||||
func UnitOrderPetReward(p *Player) error {
|
||||
OrderMod := p.PlayMod.getOrderMod()
|
||||
Item, _, OrderType, _, _ := OrderMod.RewardOrder(10015)
|
||||
if OrderType == order.Pet_type {
|
||||
Item = p.FormatPetOrderItem(Item)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -122,6 +122,7 @@ func AdminPlayerInfo(args []interface{}) error {
|
||||
res["Name"] = player.PlayMod.getBaseMod().NickName
|
||||
res["Uid"] = player.M_DwUin
|
||||
res["AreaId"] = player.PlayMod.getDecorateMod().GetAreaId()
|
||||
res["Face"] = player.PlayMod.getFaceMod().SetId
|
||||
res["Charge"] = player.PlayMod.getChargeMod().Charge
|
||||
res["Level"] = player.GetPlayerBaseMod().GetLevel()
|
||||
res["Diamond"] = player.GetPlayerBaseMod().GetDiamond()
|
||||
@ -140,6 +141,7 @@ func AdminPlayerInfo(args []interface{}) error {
|
||||
}
|
||||
res["Bonus"] = player.PlayMod.getLimitedTimeEventMod().Progress
|
||||
res["Code"] = player.PlayMod.getBaseMod().AddCode
|
||||
res["ChessMap"] = player.PlayMod.getChessMod().ChessMap
|
||||
OrderMap := make(map[int]interface{})
|
||||
Index := 0
|
||||
for k, v := range player.PlayMod.getOrderMod().OrderList {
|
||||
|
||||
@ -32,9 +32,9 @@ type ChargeMod struct {
|
||||
|
||||
Gift map[int]int // 礼包
|
||||
|
||||
Ad bool // 是否购买免广告
|
||||
|
||||
WishList *WishList
|
||||
Ad bool // 是否购买免广告
|
||||
AdEndTime int64
|
||||
WishList *WishList
|
||||
}
|
||||
|
||||
type WishList struct {
|
||||
@ -243,6 +243,21 @@ func (c *ChargeMod) FireAd(ChargeId int) []*item.Item {
|
||||
return nil
|
||||
}
|
||||
|
||||
// 免广告礼包
|
||||
func (c *ChargeMod) FireAdReward(ChargeId int) []*item.Item {
|
||||
Items, PetWorkDay := chargeCfg.GetADReward(ChargeId)
|
||||
if PetWorkDay != 0 {
|
||||
Now := GoUtil.Now()
|
||||
if c.AdEndTime < Now {
|
||||
c.AdEndTime = Now + int64(PetWorkDay*24*3600)
|
||||
} else {
|
||||
c.AdEndTime += int64(PetWorkDay * 24 * 3600)
|
||||
}
|
||||
c.Ad = true
|
||||
}
|
||||
return Items
|
||||
}
|
||||
|
||||
// 免费商店
|
||||
func (c *ChargeMod) FireFreeShop() ([]*item.Item, error) {
|
||||
if c.FreeShop >= 2 {
|
||||
@ -292,6 +307,7 @@ func (c *ChargeMod) BackData() *msg.ResCharge {
|
||||
TodayCharge: float32(c.TodayCharge),
|
||||
MonthCharge: float32(c.MonthCharge),
|
||||
Wish: resWish,
|
||||
AdEndTime: c.AdEndTime,
|
||||
}
|
||||
}
|
||||
|
||||
@ -307,21 +323,16 @@ func (c *ChargeMod) InitChessShop(Emit []int) {
|
||||
ProduceList := mergeDataCfg.GetEmitProduceType(v)
|
||||
for _, p := range ProduceList {
|
||||
ChessList := order.GetChessByDiff(v, 1, order.DIFF_MID, p)
|
||||
ColorType := mergeDataCfg.GetColorType(p)
|
||||
//ColorType := mergeDataCfg.GetColorType(p)
|
||||
for _, c := range ChessList {
|
||||
if c == 0 {
|
||||
continue
|
||||
}
|
||||
ChessLv := mergeDataCfg.GetLvById(c)
|
||||
Diamond := int(math.Pow(2, float64(ChessLv-1)) / 2.5)
|
||||
if ColorType == mergeDataCfg.CHESS_PRODUCT_SUB_TYPE {
|
||||
Diamond = int(math.Pow(2, float64(ChessLv-1))/2.5 + 6.4)
|
||||
}
|
||||
Diamond = max(1, Diamond)
|
||||
if ColorType == mergeDataCfg.CHESS_PRODUCT_SECONDARY_TYPE {
|
||||
Diamond *= 2
|
||||
}
|
||||
RandList = append(RandList, &Rand{ChessId: c, Diamond: Diamond})
|
||||
DynamicLv := mergeDataCfg.GetAdjust(v, p, 0)
|
||||
ChessLv += DynamicLv
|
||||
Diamond := math.Round(math.Pow(2, float64(ChessLv-1)) / 18)
|
||||
RandList = append(RandList, &Rand{ChessId: c, Diamond: int(Diamond)})
|
||||
}
|
||||
}
|
||||
//ColorList = append(ColorList, ProduceList...)
|
||||
|
||||
@ -2,7 +2,6 @@ package charge
|
||||
|
||||
import (
|
||||
"math"
|
||||
mergeDataCfg "server/conf/mergeData"
|
||||
)
|
||||
|
||||
func GetChessDiamond(Lv, Type int) int {
|
||||
@ -22,41 +21,41 @@ func GetChessDiamond(Lv, Type int) int {
|
||||
return max(1, d)
|
||||
}
|
||||
|
||||
func getChessMainRand(Color string) []*Rand {
|
||||
r := make([]*Rand, 0)
|
||||
for i := 6; i <= 10; i++ {
|
||||
Diamond := int(math.Pow(2, float64(i-1)) / 2.5)
|
||||
ChessId := mergeDataCfg.GetChessIdByLvAndColor(i, Color)
|
||||
if ChessId == 0 {
|
||||
continue
|
||||
}
|
||||
r = append(r, &Rand{ChessId: ChessId, Diamond: Diamond})
|
||||
}
|
||||
return r
|
||||
}
|
||||
// func getChessMainRand(Color string) []*Rand {
|
||||
// r := make([]*Rand, 0)
|
||||
// for i := 6; i <= 10; i++ {
|
||||
// Diamond := int(math.Pow(2, float64(i-1)) / 2.5)
|
||||
// ChessId := mergeDataCfg.GetChessIdByLvAndColor(i, Color)
|
||||
// if ChessId == 0 {
|
||||
// continue
|
||||
// }
|
||||
// r = append(r, &Rand{ChessId: ChessId, Diamond: Diamond})
|
||||
// }
|
||||
// return r
|
||||
// }
|
||||
|
||||
func getChessSecondaryRand(Color string) []*Rand {
|
||||
r := make([]*Rand, 0)
|
||||
for i := 5; i <= 9; i++ {
|
||||
Diamond := int((math.Pow(2, float64(i-1)) / 2.5) * 2)
|
||||
ChessId := mergeDataCfg.GetChessIdByLvAndColor(i, Color)
|
||||
if ChessId == 0 {
|
||||
continue
|
||||
}
|
||||
r = append(r, &Rand{ChessId: ChessId, Diamond: Diamond})
|
||||
}
|
||||
return r
|
||||
}
|
||||
// func getChessSecondaryRand(Color string) []*Rand {
|
||||
// r := make([]*Rand, 0)
|
||||
// for i := 5; i <= 9; i++ {
|
||||
// Diamond := int((math.Pow(2, float64(i-1)) / 2.5) * 2)
|
||||
// ChessId := mergeDataCfg.GetChessIdByLvAndColor(i, Color)
|
||||
// if ChessId == 0 {
|
||||
// continue
|
||||
// }
|
||||
// r = append(r, &Rand{ChessId: ChessId, Diamond: Diamond})
|
||||
// }
|
||||
// return r
|
||||
// }
|
||||
|
||||
func getChessSubRand(Color string) []*Rand {
|
||||
r := make([]*Rand, 0)
|
||||
for i := 5; i <= 9; i++ {
|
||||
Diamond := int(math.Pow(2, float64(i-1))/2.5 + 6.4)
|
||||
ChessId := mergeDataCfg.GetChessIdByLvAndColor(i, Color)
|
||||
if ChessId == 0 {
|
||||
continue
|
||||
}
|
||||
r = append(r, &Rand{ChessId: ChessId, Diamond: Diamond})
|
||||
}
|
||||
return r
|
||||
}
|
||||
// func getChessSubRand(Color string) []*Rand {
|
||||
// r := make([]*Rand, 0)
|
||||
// for i := 5; i <= 9; i++ {
|
||||
// Diamond := int(math.Pow(2, float64(i-1))/2.5 + 6.4)
|
||||
// ChessId := mergeDataCfg.GetChessIdByLvAndColor(i, Color)
|
||||
// if ChessId == 0 {
|
||||
// continue
|
||||
// }
|
||||
// r = append(r, &Rand{ChessId: ChessId, Diamond: Diamond})
|
||||
// }
|
||||
// return r
|
||||
// }
|
||||
|
||||
@ -32,7 +32,6 @@ func (f *FaceMod) InitData() {
|
||||
if f.List == nil || !f.Init {
|
||||
f.Init = true
|
||||
f.List = make(map[int]*Face)
|
||||
|
||||
f.SetId = 1
|
||||
}
|
||||
InitId := faceCfg.GetInitList()
|
||||
|
||||
@ -16,15 +16,18 @@ type ItemMod struct {
|
||||
}
|
||||
|
||||
const (
|
||||
ITEM_ENERGY_ID = 100001
|
||||
ITEM_STAR_ID = 100002
|
||||
ITEM_DIAMOND_ID = 100003
|
||||
ITEM_FIVE_STAR_CARD_PACK = 100008
|
||||
ITEM_RACING_BATTERY_ID = 100027
|
||||
ITEM_LAUNCHER_ID = 1602
|
||||
ITEM_LAUNCHER_lOW_ID = 1601
|
||||
ITEM_ENERGY_GIFT_ID = 562
|
||||
ITEM_DIAMOND_LV2_ID = 502
|
||||
ITEM_ENERGY_ID = 100001
|
||||
ITEM_STAR_ID = 100002
|
||||
ITEM_DIAMOND_ID = 100003
|
||||
ITEM_FIVE_STAR_CARD_PACK = 100008
|
||||
ITEM_RACING_BATTERY_ID = 100027
|
||||
ITEM_LAUNCHER_ID = 1602
|
||||
ITEM_LAUNCHER_lOW_ID = 1601
|
||||
ITEM_ENERGY_GIFT_ID = 562
|
||||
ITEM_DIAMOND_LV2_ID = 502
|
||||
ITEM_PLAYROOM_BOX_LOW_ID = 101445
|
||||
ITEM_PLAYROOM_BOX_MID_ID = 101446
|
||||
ITEM_PLAYROOM_BOX_HIGH_ID = 101447
|
||||
)
|
||||
|
||||
const (
|
||||
@ -52,6 +55,7 @@ const (
|
||||
ITEM_TYPE_PLAYROOM_DRESS = 112 // playroom服饰
|
||||
ITEM_TYPE_PLAYROOM_DECORATION_SET = 113 // playroom装饰套装
|
||||
ITEM_TYPE_PLAYROOM_DRESS_SET = 114 // playroom服饰套装
|
||||
ITEM_TYPE_PLAYROOM_BOX = 115 // playroom宝箱
|
||||
)
|
||||
|
||||
func (i *ItemMod) InitData() {
|
||||
|
||||
@ -161,12 +161,17 @@ func (m *MailMod) NotifyMail(Id int) *msg.MailNotify {
|
||||
mailInfo := m.List[Id]
|
||||
return &msg.MailNotify{
|
||||
Info: &msg.MailInfo{
|
||||
Id: int32(Id),
|
||||
Title: mailInfo.Title,
|
||||
Content: mailInfo.Content,
|
||||
Items: item.ItemToMsg(mailInfo.Items),
|
||||
Status: int32(mailInfo.Status),
|
||||
Time: int32(mailInfo.Send),
|
||||
Id: int32(Id),
|
||||
Title: mailInfo.Title,
|
||||
Content: mailInfo.Content,
|
||||
ContentEn: mailInfo.ContentEn,
|
||||
SubTitle: mailInfo.SubTitle,
|
||||
SubTitleEn: mailInfo.SubTitleEn,
|
||||
TitleEn: mailInfo.TitleEn,
|
||||
Type: int32(mailInfo.Type),
|
||||
Items: item.ItemToMsg(mailInfo.Items),
|
||||
Status: int32(mailInfo.Status),
|
||||
Time: int32(mailInfo.Send),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@ -436,18 +436,11 @@ func (o *OrderMod) CreateNormalOrder(lv int, Emit []int, EnergyMul, OrderType in
|
||||
}
|
||||
break
|
||||
}
|
||||
// if len(mergeList) == 2 {
|
||||
// ColorMap := make(map[string]int)
|
||||
// for _, v := range mergeList {
|
||||
// Color := mergeDataCfg.GetColorById(v)
|
||||
// ColorMap[Color]++
|
||||
// if ColorMap[Color] > 1 {
|
||||
// log.Printf("CreateNormalOrder: %v, %v, %v", mergeList, OrderDiff, err)
|
||||
// return fmt.Errorf("订单生成失败,重复颜色")
|
||||
// }
|
||||
// }
|
||||
|
||||
// }
|
||||
for _, v := range mergeList {
|
||||
if v == 0 {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
o.addOrder(mergeList, OrderDiff, OrderType)
|
||||
return nil
|
||||
}
|
||||
@ -673,7 +666,7 @@ func (o *OrderMod) ChangeEnergyMul(lv int, Emit []int, EnergyMul int, ChessList
|
||||
Color := mergeDataCfg.GetColorById(vv)
|
||||
EmitId := GetEmitByColor(Emit, Color)
|
||||
_, Max := getChesslvRange(EmitId, EnergyMul, o.IsCharge)
|
||||
Adjust := mergeDataCfg.GetAdjust(EmitId, Color)
|
||||
Adjust := mergeDataCfg.GetAdjust(EmitId, Color, EnergyMul)
|
||||
if Lv >= EnergyMul+1 && Lv <= Max-Adjust {
|
||||
continue
|
||||
}
|
||||
|
||||
@ -90,13 +90,13 @@ type orderConfigInfo struct {
|
||||
}
|
||||
|
||||
// 订单棋子数量
|
||||
func getChessNumRand(OrderN int) map[int]int {
|
||||
return map[int]int{
|
||||
1: int(70 - 2*OrderN),
|
||||
2: int(25 + OrderN),
|
||||
3: int(5 + OrderN),
|
||||
}
|
||||
}
|
||||
// func getChessNumRand(OrderN int) map[int]int {
|
||||
// return map[int]int{
|
||||
// 1: int(70 - 2*OrderN),
|
||||
// 2: int(25 + OrderN),
|
||||
// 3: int(5 + OrderN),
|
||||
// }
|
||||
// }
|
||||
|
||||
// 根据上一个订单难度和系数 生成订单难度
|
||||
func getOrderDiffRand(Lv, Diff, OrderN int) map[int]int {
|
||||
@ -501,25 +501,6 @@ func randOrderChess(o *OrderMod, lv int, Emit []int, EnergyMul, OrderType int) (
|
||||
//获取订单体力范围和棋子数量
|
||||
MinEnergy, MaxEnergy, ChessNum := getChessByDiff(lv, OrderDiff, OrderType)
|
||||
mergeList := getChessFromPoolByEnergy(o, MinEnergy, MaxEnergy, ChessNum, Emit, EnergyMul, OrderDiff)
|
||||
// // 根据订单棋子难度生成棋子
|
||||
// for _, v := range ChessDiff {
|
||||
// ChessId := 0
|
||||
// Num := 0
|
||||
// for {
|
||||
// Num++
|
||||
// if Num > 50 {
|
||||
// break
|
||||
// }
|
||||
// ChessId = getChessFromPoolByDiff(o, v, Emit, EnergyMul)
|
||||
// if ChessId == 0 {
|
||||
// continue
|
||||
// }
|
||||
// if !GoUtil.InArray(ChessId, mergeList) {
|
||||
// break
|
||||
// }
|
||||
// }
|
||||
// mergeList = append(mergeList, ChessId)
|
||||
// }
|
||||
return mergeList, OrderDiff, nil
|
||||
}
|
||||
|
||||
@ -568,6 +549,9 @@ func filterPool(o *OrderMod) {
|
||||
}
|
||||
|
||||
func ShuffleColor(List []string, Last string) []string {
|
||||
if len(List) <= 1 {
|
||||
return List
|
||||
}
|
||||
Break := 0
|
||||
List2 := make([]string, len(List))
|
||||
List3 := make([]string, len(List))
|
||||
@ -753,34 +737,34 @@ func (o *OrderMod) getChessLvFromConfig1(MinEnergy, MaxEnergy, MinLv, MaxLv, Las
|
||||
return rand
|
||||
}
|
||||
|
||||
func (o *OrderMod) getChessLvFromConfig2(MinEnergy, MaxEnergy, MinLv, MaxLv, LastEnergy int) []int {
|
||||
rand := []int{}
|
||||
for _, v := range orderCfgMap {
|
||||
if MinEnergy >= v.Min && MaxEnergy <= v.Max {
|
||||
for _, info := range v.Pool {
|
||||
if MinLv <= info.lv && MaxLv >= info.lv {
|
||||
rand = append(rand, info.lv)
|
||||
}
|
||||
}
|
||||
// func (o *OrderMod) getChessLvFromConfig2(MinEnergy, MaxEnergy, MinLv, MaxLv, LastEnergy int) []int {
|
||||
// rand := []int{}
|
||||
// for _, v := range orderCfgMap {
|
||||
// if MinEnergy >= v.Min && MaxEnergy <= v.Max {
|
||||
// for _, info := range v.Pool {
|
||||
// if MinLv <= info.lv && MaxLv >= info.lv {
|
||||
// rand = append(rand, info.lv)
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
}
|
||||
return rand
|
||||
}
|
||||
func (o *OrderMod) getChessLvFromConfig3(MinEnergy, MaxEnergy, MinLv, MaxLv, LastEnergy int) []int {
|
||||
rand := []int{}
|
||||
for _, v := range orderCfgMap {
|
||||
if MinEnergy >= v.Min && MaxEnergy <= v.Max {
|
||||
for _, info := range v.Pool {
|
||||
if MinLv <= info.lv && MaxLv >= info.lv && LastEnergy+info.energy <= MaxEnergy && LastEnergy+info.energy >= MinEnergy {
|
||||
rand = append(rand, info.lv)
|
||||
}
|
||||
}
|
||||
// }
|
||||
// }
|
||||
// return rand
|
||||
// }
|
||||
// func (o *OrderMod) getChessLvFromConfig3(MinEnergy, MaxEnergy, MinLv, MaxLv, LastEnergy int) []int {
|
||||
// rand := []int{}
|
||||
// for _, v := range orderCfgMap {
|
||||
// if MinEnergy >= v.Min && MaxEnergy <= v.Max {
|
||||
// for _, info := range v.Pool {
|
||||
// if MinLv <= info.lv && MaxLv >= info.lv && LastEnergy+info.energy <= MaxEnergy && LastEnergy+info.energy >= MinEnergy {
|
||||
// rand = append(rand, info.lv)
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
}
|
||||
return rand
|
||||
}
|
||||
// }
|
||||
// }
|
||||
// return rand
|
||||
// }
|
||||
|
||||
func (o *OrderMod) ChessPoolChess(Color string, Lv int) bool {
|
||||
for _, v := range o.ChessPool2[Color] {
|
||||
@ -965,19 +949,19 @@ func initReflectChess(Emits []int, EnergyMul int) {
|
||||
Start = ChessMinLv
|
||||
End = ChessMinLv + (ChessMaxLv-ChessMinLv+1)/3 - 1
|
||||
for _, v := range Product {
|
||||
Adjust := mergeDataCfg.DynamicAdjust(Emit, v)
|
||||
Adjust := mergeDataCfg.DynamicAdjust(Emit, v, EnergyMul)
|
||||
initReflectChess2(v, Start, End, DIFF_LOW, Adjust)
|
||||
}
|
||||
Start = ChessMinLv + (ChessMaxLv-ChessMinLv+1)/3
|
||||
End = ChessMinLv + (ChessMaxLv-ChessMinLv+1)/3*2 - 1
|
||||
for _, v := range Product {
|
||||
Adjust := mergeDataCfg.DynamicAdjust(Emit, v)
|
||||
Adjust := mergeDataCfg.DynamicAdjust(Emit, v, EnergyMul)
|
||||
initReflectChess2(v, Start, End, DIFF_MID, Adjust)
|
||||
}
|
||||
Start = ChessMinLv + (ChessMaxLv-ChessMinLv+1)/3*2
|
||||
End = ChessMaxLv
|
||||
for _, v := range Product {
|
||||
Adjust := mergeDataCfg.DynamicAdjust(Emit, v)
|
||||
Adjust := mergeDataCfg.DynamicAdjust(Emit, v, EnergyMul)
|
||||
initReflectChess2(v, Start, End, DIFF_HIGH, Adjust)
|
||||
}
|
||||
}
|
||||
|
||||
@ -62,7 +62,8 @@ type LimitedTimeEventData struct {
|
||||
}
|
||||
|
||||
type PetOrderItem struct {
|
||||
Id int
|
||||
Star int
|
||||
Num int
|
||||
Id int
|
||||
Star int
|
||||
Num int
|
||||
Grade []int
|
||||
}
|
||||
|
||||
@ -15923,6 +15923,7 @@ type ResCharge struct {
|
||||
SpecialChargeWeek int32 `protobuf:"varint,11,opt,name=SpecialChargeWeek,proto3" json:"SpecialChargeWeek,omitempty"` // 距离现在多少周
|
||||
TodayCharge float32 `protobuf:"fixed32,12,opt,name=TodayCharge,proto3" json:"TodayCharge,omitempty"` // 今日充值金额
|
||||
MonthCharge float32 `protobuf:"fixed32,13,opt,name=MonthCharge,proto3" json:"MonthCharge,omitempty"` // 本月充值金额
|
||||
AdEndTime int64 `protobuf:"varint,14,opt,name=AdEndTime,proto3" json:"AdEndTime,omitempty"` // 广告礼包结束时间
|
||||
unknownFields protoimpl.UnknownFields
|
||||
sizeCache protoimpl.SizeCache
|
||||
}
|
||||
@ -16048,6 +16049,13 @@ func (x *ResCharge) GetMonthCharge() float32 {
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *ResCharge) GetAdEndTime() int64 {
|
||||
if x != nil {
|
||||
return x.AdEndTime
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type WishList struct {
|
||||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 物品id
|
||||
@ -27010,7 +27018,7 @@ const file_proto_Gameapi_proto_rawDesc = "" +
|
||||
"\rResDeleteMail\x12&\n" +
|
||||
"\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" +
|
||||
"\x03Msg\x18\x02 \x01(\tR\x03Msg\x12\x0e\n" +
|
||||
"\x02Id\x18\x03 \x01(\x05R\x02Id\"\xe1\x05\n" +
|
||||
"\x02Id\x18\x03 \x01(\x05R\x02Id\"\xff\x05\n" +
|
||||
"\tResCharge\x12\x16\n" +
|
||||
"\x06Charge\x18\x01 \x01(\x02R\x06Charge\x12\x14\n" +
|
||||
"\x05Total\x18\x02 \x01(\x05R\x05Total\x12\x14\n" +
|
||||
@ -27025,7 +27033,8 @@ const file_proto_Gameapi_proto_rawDesc = "" +
|
||||
" \x01(\x02R\rSpecialCharge\x12,\n" +
|
||||
"\x11SpecialChargeWeek\x18\v \x01(\x05R\x11SpecialChargeWeek\x12 \n" +
|
||||
"\vTodayCharge\x18\f \x01(\x02R\vTodayCharge\x12 \n" +
|
||||
"\vMonthCharge\x18\r \x01(\x02R\vMonthCharge\x1aX\n" +
|
||||
"\vMonthCharge\x18\r \x01(\x02R\vMonthCharge\x12\x1c\n" +
|
||||
"\tAdEndTime\x18\x0e \x01(\x03R\tAdEndTime\x1aX\n" +
|
||||
"\x10SpecialShopEntry\x12\x10\n" +
|
||||
"\x03key\x18\x01 \x01(\x05R\x03key\x12.\n" +
|
||||
"\x05value\x18\x02 \x01(\v2\x18.tutorial.ResSpecialShopR\x05value:\x028\x01\x1aT\n" +
|
||||
|
||||
Loading…
Reference in New Issue
Block a user