Merge branch 'sdk' into online

This commit is contained in:
hahwu 2025-10-16 19:32:07 +08:00
commit a98ec990c4
18 changed files with 401 additions and 204 deletions

View File

@ -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 {

View File

@ -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
}

View File

@ -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
}

View File

@ -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)

View File

@ -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) {

View File

@ -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
}

View File

@ -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() {

View File

@ -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
}

View File

@ -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 {

View File

@ -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,20 @@ 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)
if len(ChessList) == 1 {
ChessList = append(ChessList, ChessList[0]-1)
}
//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)
}
DynamicLv := mergeDataCfg.GetAdjust(v, p, 0)
ChessLv += DynamicLv
Diamond := math.Round(math.Pow(2, float64(ChessLv-1)) / 18)
Diamond = max(1, Diamond)
if ColorType == mergeDataCfg.CHESS_PRODUCT_SECONDARY_TYPE {
Diamond *= 2
}
RandList = append(RandList, &Rand{ChessId: c, Diamond: Diamond})
RandList = append(RandList, &Rand{ChessId: c, Diamond: int(Diamond)})
}
}
//ColorList = append(ColorList, ProduceList...)

View File

@ -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
// }

View File

@ -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()

View File

@ -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() {

View File

@ -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),
},
}
}

View File

@ -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
}

View File

@ -1,6 +1,7 @@
package order
import (
"log"
"math"
"server/GoUtil"
mergeDataCfg "server/conf/mergeData"
@ -90,13 +91,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 +502,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 +550,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))
@ -664,8 +649,12 @@ func getEmitSeries(o *OrderMod, Emit []int) string {
o.initColorShuffle(Emit)
continue
}
if o.LastColor == PopEmitId {
continue
}
PopEmitIdProductNum := mergeDataCfg.GetEmitProductNumByColor(PopEmitId)
o.initColorShuffle(Emit)
// 单链棋子 且订单中已有两个 跳过
if PopEmitIdProductNum == 1 && ChessColorNum[PopEmitId] >= 2 {
continue
} else {
@ -753,34 +742,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] {
@ -861,6 +850,9 @@ func getChessFromPoolByEnergy(o *OrderMod, MinEnergy, MaxEnergy, ChessNum int, E
for i := 0; i < ChessNum; i++ {
ColorArr = append(ColorArr, getEmitSeries(o, Emit))
}
if len(ColorArr) == 2 && ColorArr[0] == ColorArr[1] {
log.Default()
}
ChessArr := make([]int, 0)
if len(ColorArr) == 1 {
Chess, _ := o.getChessIdPool(Emit, ColorArr[0], EnergyMul, 0, MinEnergy, MaxEnergy, OrderDiff, 0)
@ -965,19 +957,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)
}
}

View File

@ -62,7 +62,8 @@ type LimitedTimeEventData struct {
}
type PetOrderItem struct {
Id int
Star int
Num int
Id int
Star int
Num int
Grade []int
}

View File

@ -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" +