Merge branch 'develop' into audit
This commit is contained in:
commit
014b84d86b
@ -12,6 +12,7 @@ import (
|
||||
|
||||
const (
|
||||
FEISHU_WEBHOOK = "https://gadmin.bywaystudios.com/api/feishu/notify"
|
||||
FEISHU_ORDER = "https://gadmin.bywaystudios.com/api/feishu/notify/order"
|
||||
)
|
||||
|
||||
// AAqFpbuPhFSEx
|
||||
@ -55,6 +56,46 @@ func SendFeishuFatal(PlayerId int, FuncName string, msg string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func SendFeishuOrder(PlayerId int, OrderId string, Price float64, ProductName string, PayTime, VerityTime int64) error {
|
||||
// 创建请求体
|
||||
|
||||
payload := map[string]interface{}{
|
||||
"UID": PlayerId,
|
||||
"OrderId": OrderId,
|
||||
"Product": String(Price),
|
||||
"ProductName": ProductName,
|
||||
"EventRecovery": time.Unix(PayTime, 0).Format("2006-01-02 15:04:05"),
|
||||
"EventAge": time.Unix(VerityTime, 0).Format("2006-01-02 15:04:05"),
|
||||
}
|
||||
|
||||
payloadBytes, err := json.Marshal(payload)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 创建HTTP请求
|
||||
req, err := http.NewRequest("POST", FEISHU_ORDER, bytes.NewBuffer(payloadBytes))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
|
||||
// 发送请求
|
||||
client := &http.Client{}
|
||||
resp, err := client.Do(req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
// 检查响应状态码
|
||||
if resp.StatusCode != http.StatusOK {
|
||||
return fmt.Errorf("failed to send message, status code: %d", resp.StatusCode)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func SendFeishuMsg2(msg string) error {
|
||||
// 创建请求体
|
||||
payload := map[string]interface{}{
|
||||
|
||||
@ -7,7 +7,7 @@ import (
|
||||
|
||||
func RandMap(d map[int]int) int {
|
||||
if len(d) == 0 {
|
||||
return -1
|
||||
return 0
|
||||
}
|
||||
total := 0
|
||||
for _, v := range d {
|
||||
@ -26,7 +26,7 @@ func RandMap(d map[int]int) int {
|
||||
}
|
||||
|
||||
// 如果没有找到,返回一个默认值
|
||||
return -1
|
||||
return 0
|
||||
}
|
||||
|
||||
func RandStringMap(d map[string]int) string {
|
||||
|
||||
@ -160,6 +160,17 @@ func PopElemSlice(s []int, Id int) ([]int, bool) {
|
||||
return s, false
|
||||
}
|
||||
|
||||
func PopStringElemSlice(s0 []string, Id string) ([]string, bool) {
|
||||
s := make([]string, len(s0))
|
||||
copy(s, s0)
|
||||
for k, v := range s {
|
||||
if v == Id {
|
||||
return append(s[0:k], s[k+1:]...), true
|
||||
}
|
||||
}
|
||||
return s, false
|
||||
}
|
||||
|
||||
func ElemInSlice(s []int, Id int) bool {
|
||||
for _, v := range s {
|
||||
if v == Id {
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package GuideTaskCfg
|
||||
|
||||
import (
|
||||
"server/GoUtil"
|
||||
"server/game/mod/item"
|
||||
"server/gamedata"
|
||||
"server/pkg/github.com/name5566/leaf/log"
|
||||
@ -42,6 +43,13 @@ func GetTaskActive(Id int) int {
|
||||
}
|
||||
return gamedata.GetIntValue(data, "Active")
|
||||
}
|
||||
func GetUnlock(Id int) int {
|
||||
data, err := gamedata.GetDataByIntKey(GUIDE_TASK_TASK, Id)
|
||||
if err != nil {
|
||||
return 0
|
||||
}
|
||||
return gamedata.GetIntValue(data, "Unlock")
|
||||
}
|
||||
|
||||
func GetActiveReward(Id int) ([]*item.Item, int) {
|
||||
data, err := gamedata.GetDataByIntKey(GUIDE_TASK_ACTIVE, Id)
|
||||
@ -50,6 +58,23 @@ func GetActiveReward(Id int) ([]*item.Item, int) {
|
||||
}
|
||||
return gamedata.GetItemList(data, "Items"), gamedata.GetIntValue(data, "Active")
|
||||
}
|
||||
func GetActiveReward2(reward []int, Active int) []*item.Item {
|
||||
data, err := gamedata.GetData(GUIDE_TASK_ACTIVE)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
for k, v := range data {
|
||||
active := gamedata.GetIntValue(v, "Active")
|
||||
if active < Active {
|
||||
continue
|
||||
}
|
||||
if GoUtil.InArray(GoUtil.Int(k), reward) {
|
||||
continue
|
||||
}
|
||||
return gamedata.GetItemList(v, "Items")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetUnlockLv() int {
|
||||
data, err := gamedata.GetDataByKey(GUIDE_TASK_CONST, "UnlockLv")
|
||||
|
||||
@ -110,7 +110,7 @@ func GetNameById(Id int) string {
|
||||
log.Debug("MergeDataCfg GetOne Id:%v not found", Id)
|
||||
return ""
|
||||
}
|
||||
return gamedata.GetStringValue(data, "Icon")
|
||||
return gamedata.GetStringValue(data, "Title")
|
||||
}
|
||||
|
||||
// 根据等级和颜色获取棋子id
|
||||
@ -194,6 +194,21 @@ func GetEmitRetire(Id string) int {
|
||||
return gamedata.GetIntValue(data, "Retire")
|
||||
}
|
||||
|
||||
func GetEmitProductNumByColor(Id string) int {
|
||||
data, err := gamedata.GetData(CFG_MERGE_EMIT)
|
||||
if err != nil {
|
||||
log.Debug("GetEmitProductNumByColor GetOne Id:%v not found", Id)
|
||||
return 0
|
||||
}
|
||||
for _, v := range data {
|
||||
ColorList := strings.Split(gamedata.GetStringValue(v, "Product_Type"), ",")
|
||||
if GoUtil.InStringArray(Id, ColorList) {
|
||||
return len(strings.Split(gamedata.GetStringValue(v, "Product_Type"), ","))
|
||||
}
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
// 根据Id获取棋子类型
|
||||
func GetTypeById(Id int) string {
|
||||
data, err := gamedata.GetDataByIntKey(CFG_NAME, Id)
|
||||
@ -279,6 +294,15 @@ func GetEmitType(Id int) string {
|
||||
return gamedata.ParseString(data["Emit_Type"])
|
||||
}
|
||||
|
||||
func GetEmitN(EmitSeries string) int {
|
||||
data, err := gamedata.GetDataByKey(CFG_MERGE_EMIT, EmitSeries)
|
||||
if err != nil {
|
||||
log.Debug("GetEmitN GetOne EmitSeries:%v not found", EmitSeries)
|
||||
return 0
|
||||
}
|
||||
return gamedata.GetIntValue(data, "N")
|
||||
}
|
||||
|
||||
// 获取常量
|
||||
func GetConst(Key string) string {
|
||||
data, err := gamedata.GetDataByKey(CONST_NAME, Key)
|
||||
@ -368,7 +392,29 @@ func GetHighSourceChestItem() []*item.Item {
|
||||
r = append(r, item.NewItem(item.ITEM_ENERGY_ID, B4))
|
||||
return r
|
||||
}
|
||||
|
||||
func DynamicLevRev(Lv int, 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 Lv
|
||||
}
|
||||
DynamicLv := gamedata.GetStringValue(data, "Dynamic")
|
||||
if DynamicLv == "" {
|
||||
return Lv
|
||||
}
|
||||
Arr := strings.Split(DynamicLv, ",")
|
||||
for _, v := range Arr {
|
||||
Arr2 := strings.Split(v, "=")
|
||||
if len(Arr2) != 2 {
|
||||
continue
|
||||
}
|
||||
if Color == Arr2[0] {
|
||||
NewLv, _ := strconv.Atoi(Arr2[1])
|
||||
return Lv + NewLv
|
||||
}
|
||||
}
|
||||
return Lv
|
||||
}
|
||||
func DynamicLev(Lv int, EmitId int, Color string) int {
|
||||
data, err := gamedata.GetDataByIntKey(CFG_NAME, EmitId)
|
||||
if err != nil {
|
||||
|
||||
@ -13,6 +13,7 @@ const (
|
||||
CFG_START_ORDER = "StartOrder"
|
||||
CFG_CONST = "OrderConst"
|
||||
CFG_ORDER_SCENE = "OrderScene"
|
||||
CFG_ORDER_K = "OrderK"
|
||||
)
|
||||
|
||||
func init() {
|
||||
@ -22,6 +23,18 @@ func init() {
|
||||
gamedata.InitCfg(CFG_START_ORDER)
|
||||
gamedata.InitCfg(CFG_CONST)
|
||||
gamedata.InitCfg(CFG_ORDER_SCENE)
|
||||
gamedata.InitCfg(CFG_ORDER_K)
|
||||
}
|
||||
|
||||
func GetOrderK(Lv int) int {
|
||||
data, err := gamedata.GetDataByIntKey(CFG_ORDER_K, Lv)
|
||||
if err != nil {
|
||||
return 0
|
||||
}
|
||||
Energy := gamedata.GetIntValue(data, "Energy")
|
||||
K := gamedata.GetFloatValue(data, "K")
|
||||
a := float64(Energy)*K/10 + 0.5
|
||||
return int(a) * 10
|
||||
}
|
||||
|
||||
func GetOrderFactor(Scene int) int {
|
||||
@ -81,6 +94,14 @@ func GetOrderNum(Level int) int {
|
||||
return 0
|
||||
}
|
||||
|
||||
func GetStartOrderInfo(Id int) (int, int) {
|
||||
data, err := gamedata.GetDataByIntKey(CFG_START_ORDER, Id)
|
||||
if err != nil {
|
||||
return -1, -1
|
||||
}
|
||||
return gamedata.GetIntValue(data, "group"), gamedata.GetIntValue(data, "step")
|
||||
}
|
||||
|
||||
func GetStartOrderList() []*gamedata.StartOrderData {
|
||||
ret := make([]*gamedata.StartOrderData, 0)
|
||||
data, err := gamedata.GetData(CFG_START_ORDER)
|
||||
@ -95,6 +116,8 @@ func GetStartOrderList() []*gamedata.StartOrderData {
|
||||
Appear: gamedata.GetStringValue(v, "appear"),
|
||||
Preview: gamedata.GetStringValue(v, "preview"),
|
||||
Items: gamedata.GetItemList(v, "reward"),
|
||||
Group: gamedata.GetIntValue(v, "group"),
|
||||
Step: gamedata.GetIntValue(v, "step"),
|
||||
})
|
||||
}
|
||||
sort.Slice(ret, func(i, j int) bool {
|
||||
|
||||
@ -65,6 +65,38 @@ func GetLevUpExp(lv int) (int, int) {
|
||||
return gamedata.GetIntValue(data, "Exp"), gamedata.GetIntValue(data, "PExp")
|
||||
}
|
||||
|
||||
func GetNewLevUpExp(lv int, Exp int, PetExt int) (int, int) {
|
||||
ExpLv := lv
|
||||
PetLv := lv
|
||||
for {
|
||||
data1, err := gamedata.GetDataByIntKey(CFG_NAME, ExpLv)
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
ExpNeed := gamedata.GetIntValue(data1, "Exp")
|
||||
if Exp >= ExpNeed {
|
||||
Exp -= ExpNeed
|
||||
ExpLv++
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
for {
|
||||
data2, err := gamedata.GetDataByIntKey(CFG_NAME, PetLv)
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
PetNeed := gamedata.GetIntValue(data2, "PExp")
|
||||
if PetExt >= PetNeed {
|
||||
PetExt -= PetNeed
|
||||
PetLv++
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
return ExpLv, PetLv
|
||||
}
|
||||
|
||||
// 获取能量回复时间
|
||||
func GetRecover(lv int) int {
|
||||
data, err := gamedata.GetDataByIntKey(CFG_NAME, lv)
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -199,7 +199,7 @@ func ReqGmCommand_(player *Player, Command string) error {
|
||||
EnergyMul := player.PlayMod.getBaseMod().GetEnergyMul()
|
||||
OrderMod := player.PlayMod.getOrderMod()
|
||||
OrderMod.LastOrder.Type = 1
|
||||
OrderMod.CreateOrder(Lv, EmitList, EnergyMul)
|
||||
OrderMod.CreateOrder(Lv, EmitList, EnergyMul, order.Common_type)
|
||||
player.PushClientRes(player.PlayMod.getOrderMod().BackData())
|
||||
case "resetCardReq":
|
||||
CardMod := player.PlayMod.getCardMod()
|
||||
|
||||
@ -275,6 +275,12 @@ func (p *Player) InitPlayer(UserName string) error {
|
||||
// GoUtil.RegisterEvent(MergeConst.Notify_Midday_Renew, p.ZeroUpdate, p)
|
||||
SyncFriendMsg(p)
|
||||
p.UpdateUserInfo()
|
||||
// fix bug
|
||||
ChargeMod := p.PlayMod.getChargeMod()
|
||||
ChessMod := p.PlayMod.getChessMod()
|
||||
ChargeMod.FixBug(ChessMod.GetEmitList())
|
||||
p.FixOrderBug()
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -310,7 +316,8 @@ func (p *Player) ZeroUpdate(a []interface{}) {
|
||||
|
||||
// 礼包充值
|
||||
ChessMod := p.PlayMod.getChessMod()
|
||||
p.PlayMod.getChargeMod().ZeroUpdate(ChessMod.GetEmitList())
|
||||
ChargeMod := p.PlayMod.getChargeMod()
|
||||
ChargeMod.ZeroUpdate(ChessMod.GetEmitList())
|
||||
p.PushClientRes(p.PlayMod.getChargeMod().BackData())
|
||||
|
||||
// 无尽礼包
|
||||
@ -796,6 +803,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
|
||||
PlayroomBackData(p)
|
||||
}
|
||||
}
|
||||
p.PetItemUseLog(itemList)
|
||||
CardMod := p.PlayMod.getCardMod()
|
||||
p.PushClientRes(CardMod.NotifyCard())
|
||||
p.PushClientRes(ItemMod.NotifyItem())
|
||||
|
||||
@ -265,7 +265,7 @@ func (p *PlayerBaseData) ReqUnBindFacebook(player *Player, buf []byte) {
|
||||
G_getGameLogic().PackResInfo(agent, "ResUnBindFacebook", data)
|
||||
p.SaveDataFromDB("")
|
||||
player.TeLog("platform_disconnect", map[string]interface{}{
|
||||
"platform_type": "facebook",
|
||||
"platform_type": "Facebook",
|
||||
"platform_id": req.BindAccountId,
|
||||
})
|
||||
}
|
||||
@ -528,7 +528,7 @@ func (p *PlayerBaseData) AddExp(player *Player, exp int, pexp int) (int, error)
|
||||
ChargeMod.TriggerChargeUnlock(int(BaseMod.Level), ChessMod.GetEmitList())
|
||||
player.PushClientRes(ChargeMod.BackData())
|
||||
OrderMod := player.PlayMod.getOrderMod()
|
||||
OrderMod.TriggerOrder(BaseMod.Level, order.TRIGGER_TYPE_LV, ChessMod.GetOrderEmit(), player.PlayMod.getBaseMod().GetEnergyMul())
|
||||
player.TriggerOrder(BaseMod.Level, order.TRIGGER_TYPE_LV, ChessMod.GetOrderEmit(), player.PlayMod.getBaseMod().GetEnergyMul())
|
||||
player.PushClientRes(OrderMod.BackData())
|
||||
// 重载活动
|
||||
player.initAcitivity()
|
||||
@ -537,9 +537,12 @@ func (p *PlayerBaseData) AddExp(player *Player, exp int, pexp int) (int, error)
|
||||
player.TeLog("level_up", map[string]interface{}{
|
||||
"after_level": BaseMod.Level,
|
||||
})
|
||||
NewExpLv, NewPetLv := userCfg.GetNewLevUpExp(BaseMod.Level, BaseMod.Exp, BaseMod.PExp)
|
||||
player.TeLog("property_level_up", map[string]interface{}{
|
||||
"property_level": BaseMod.Level,
|
||||
"property_level_reward": userCfg.GetUnlock(int(BaseMod.Level)),
|
||||
"story_level": NewExpLv,
|
||||
"pet_level": NewPetLv,
|
||||
})
|
||||
player.HandleInUserRank()
|
||||
}
|
||||
@ -550,6 +553,7 @@ func (p *PlayerBaseData) AddExp(player *Player, exp int, pexp int) (int, error)
|
||||
}
|
||||
}
|
||||
EmitRetireTrigger2(player)
|
||||
player.InitOrderItem()
|
||||
player.PushClientRes(p.BackAsset())
|
||||
return upLv, nil
|
||||
}
|
||||
|
||||
@ -105,6 +105,7 @@ func (p *PlayerChessData) UpdatePlayerChessData(player *Player, buf []byte) erro
|
||||
ChessMod.ChessMap = update.MChessData
|
||||
Update := OrderMod.CreateExtraOrder(AddChessList, AddNewEmit, ChessMod.GetUnlockChessList(), BaseMod.GetEnergyMul(), BaseMod.GetLevel())
|
||||
if Update {
|
||||
player.InitOrderItem()
|
||||
player.PushClientRes(OrderMod.BackData())
|
||||
}
|
||||
return nil
|
||||
@ -235,6 +236,7 @@ func (p *PlayerChessData) HandleChess(player *Player, handle_list []*msg.ChessHa
|
||||
}
|
||||
player.TeLog("sell_item", map[string]interface{}{
|
||||
"merge_item_id": ChessId,
|
||||
"product_name": mergeDataCfg.GetNameById(ChessId),
|
||||
"get_star_num": items[0].Num,
|
||||
})
|
||||
itemList = item.Merge(itemList, items)
|
||||
@ -282,6 +284,7 @@ func (p *PlayerChessData) HandleChess(player *Player, handle_list []*msg.ChessHa
|
||||
}
|
||||
player.QuestTriggerList(TriggerList)
|
||||
EmitRetireTrigger1(player)
|
||||
player.InitOrderItem()
|
||||
player.PushClientRes(ChessMod.BackData())
|
||||
player.PlayMod.save()
|
||||
return AddChessList, AddNewEmit, nil
|
||||
@ -312,18 +315,22 @@ func checkChess(ChessId, EnergyMul int, Emit []int) bool {
|
||||
break
|
||||
}
|
||||
}
|
||||
_, Max := getChesslvRange(EmitId, EnergyMul)
|
||||
_, Max := getChesslvRange(EmitId, EnergyMul, false)
|
||||
Adjust := mergeDataCfg.GetAdjust(EmitId, ChessIdColor)
|
||||
return ChessIdLv > Max-Adjust
|
||||
}
|
||||
|
||||
func getChesslvRange(Emit int, EnergyMul int) (int, int) {
|
||||
func getChesslvRange(Emit int, EnergyMul int, IsCharge bool) (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)
|
||||
if IsCharge {
|
||||
m += 10
|
||||
}
|
||||
m = max(1, m)
|
||||
m = min(100, m)
|
||||
ChessMinLev := orderCfg.GetLvMin(EnergyMul)
|
||||
ChessMaxLev := orderCfg.GetLvMax(EnergyMul, m)
|
||||
return ChessMinLev, ChessMaxLev
|
||||
|
||||
@ -75,7 +75,7 @@ func handle(p *Player, m *msg.Msg) error {
|
||||
PlayroomBackData(p)
|
||||
p.TeLog("friend_add", map[string]interface{}{
|
||||
"player_id": m.From,
|
||||
"add_type": "invite add friend",
|
||||
"add_type": "发起申请",
|
||||
})
|
||||
p.PlayMod.save()
|
||||
case msg.HANDLE_TYPE_INVITE_FRIEND: // 邀请好友
|
||||
@ -103,7 +103,10 @@ func handle(p *Player, m *msg.Msg) error {
|
||||
p.PushClientRes(CardMod.NotifyCard())
|
||||
p.PushClientRes(CardMod.NotifyTimes())
|
||||
case msg.HANDLE_TYPE_EX_CARD_TIMEOUT: // B收到A同意置换卡牌超时
|
||||
CardInfo := m.Extra.(card.CardInfo)
|
||||
CardInfo, ok := m.Extra.(card.CardInfo)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
CardMod := p.PlayMod.getCardMod()
|
||||
p.AddCard(CardInfo.ExId)
|
||||
p.PushClientRes(CardMod.NotifyCard())
|
||||
@ -209,7 +212,7 @@ func handle(p *Player, m *msg.Msg) error {
|
||||
Extra := m.Extra.([]int)
|
||||
p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_CHAMPSHIP, fmt.Sprintf("%d_%d", Extra[0], Extra[1]), m.SendT)
|
||||
case msg.HANDLE_TYPE_TREASURE_RESULT: // # 好友宝藏结果
|
||||
p.AddLog(m.From, friend.LOG_TYPE_TREASURE, fmt.Sprintf("%d", m.Extra.(int)), m.SendT)
|
||||
//p.AddLog(m.From, friend.LOG_TYPE_TREASURE, fmt.Sprintf("%d", m.Extra.(int)), m.SendT)
|
||||
case msg.HANDLE_TYPE_MAIL: // 邮件操作
|
||||
SyncMailMsg(p)
|
||||
case msg.HANDLE_TYPE_PLAYROOM_LOSE: // # 玩家输了
|
||||
@ -267,7 +270,13 @@ func handle(p *Player, m *msg.Msg) error {
|
||||
p.AddLog(m.From, friend.LOG_TYPE_TREASURE_HELP, "", m.SendT)
|
||||
p.HandleItem(Items, proto.ITEM_POP_LABEL_Friendtreasure.String())
|
||||
case msg.HANDLE_TYPE_HANDBOOK_COLLECTION: // 图鉴收集奖励
|
||||
data := m.Extra.(msg.HandbookMsg)
|
||||
if m.Extra != nil {
|
||||
return nil
|
||||
}
|
||||
data, ok := m.Extra.(msg.HandbookMsg)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
p.AddLog(m.From, friend.LOG_TYPE_HANDBOOK, data.Type, m.SendT)
|
||||
case msg.HANDLE_TYPE_HANDBOOK_UPVOTE: // 图鉴点赞
|
||||
FriendMod := p.PlayMod.getFriendMod()
|
||||
@ -403,7 +412,7 @@ func HandleFriendMsg(p *Player, m *msg.Msg) error {
|
||||
PlayroomBackData(p)
|
||||
p.TeLog("friend_add", map[string]interface{}{
|
||||
"player_id": m.From,
|
||||
"add_type": "agree",
|
||||
"add_type": "接受申请",
|
||||
})
|
||||
p.AddLog(m.From, friend.LOG_TYPE_FRIEND_BECOME, "", m.SendT)
|
||||
case msg.HANDLE_TYPE_DEL: // 删除好友
|
||||
@ -849,6 +858,9 @@ func EmitRetireTrigger1(p *Player) {
|
||||
})
|
||||
OrderMod := p.PlayMod.getOrderMod()
|
||||
OrderMod.Retire(EmitId1[0])
|
||||
p.TeLog("launcher_retire", map[string]interface{}{
|
||||
"launcher_type": EmitId1[0],
|
||||
})
|
||||
ChessMod.BeginRetire(EmitId1[0])
|
||||
}
|
||||
|
||||
@ -879,7 +891,7 @@ func EmitRetireTrigger2(p *Player) {
|
||||
}
|
||||
|
||||
NeedFinishOrder := false
|
||||
Produce := mergeDataCfg.GetEmitProduce(k)
|
||||
Produce := mergeDataCfg.GetEmitOrderProduce(k)
|
||||
for _, v1 := range Produce {
|
||||
if _, ok := AllChess[v1]; ok {
|
||||
NeedFinishOrder = true
|
||||
@ -986,7 +998,131 @@ func (player *Player) GetPetOrderItemExp() int {
|
||||
return playroomCfg.GetPetOrderItemExpByList(itemList)
|
||||
}
|
||||
|
||||
func (player *Player) FormatOrderReward() {
|
||||
// 触发生成新的固定订单
|
||||
func (player *Player) TriggerOrder(lv int, Type string, Emit []int, EnergyMul int) error {
|
||||
OrderMod := player.PlayMod.getOrderMod()
|
||||
TriggerOrderList := orderCfg.GetStartOrderList()
|
||||
FixedOrder := 0
|
||||
for _, v := range OrderMod.OrderList {
|
||||
if v.Type == order.Fixed_type {
|
||||
FixedOrder++
|
||||
}
|
||||
}
|
||||
OrderList := make(map[int]order.Order, len(OrderMod.OrderList))
|
||||
for k, v := range OrderMod.OrderList {
|
||||
OrderList[k] = v
|
||||
}
|
||||
// 触发生成新的固定订单
|
||||
for _, v := range TriggerOrderList {
|
||||
if GoUtil.InArray(v.Id, OrderMod.FinishOrder) {
|
||||
continue
|
||||
}
|
||||
orderInfo, exists := OrderList[v.Id]
|
||||
if exists && v.Preview == "" {
|
||||
continue
|
||||
}
|
||||
// 预览条件不为空且未存在且未完成
|
||||
if v.Preview != "" && !exists && !GoUtil.InArray(v.Id, OrderMod.FinishOrder) {
|
||||
if OrderMod.CheckCondition(lv, v.Preview, Type, Emit, FixedOrder, OrderList) {
|
||||
OrderMod.AddFixOrder(v.Id, v.MergeList, order.Preview_type, v.Items)
|
||||
player.TeLog("preset_order_birth", map[string]interface{}{
|
||||
"order_id": v.Id,
|
||||
"order_item_id": v.MergeList,
|
||||
"preset_order_group": v.Group,
|
||||
"preset_order_step": v.Step,
|
||||
})
|
||||
}
|
||||
}
|
||||
if v.Appear != "" {
|
||||
if OrderMod.CheckCondition(lv, v.Appear, Type, Emit, FixedOrder, OrderList) {
|
||||
Type := order.Fixed_type
|
||||
OrderType := orderCfg.GetOrderType(v.Id)
|
||||
if OrderType != 0 {
|
||||
Type = OrderType
|
||||
}
|
||||
if exists {
|
||||
orderInfo.Type = order.Fixed_type
|
||||
OrderMod.OrderList[v.Id] = orderInfo
|
||||
} else {
|
||||
OrderMod.AddFixOrder(v.Id, v.MergeList, Type, v.Items)
|
||||
if v.Id == 78 {
|
||||
OrderMod.Retire("D")
|
||||
OrderMod.AutoEmit = append(OrderMod.AutoEmit, "D")
|
||||
}
|
||||
if v.Id == 79 {
|
||||
OrderMod.Retire("I")
|
||||
OrderMod.AutoEmit = append(OrderMod.AutoEmit, "I")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (player *Player) AddOrder() {
|
||||
BaseMod := player.PlayMod.getBaseMod()
|
||||
OrderMod := player.PlayMod.getOrderMod()
|
||||
ChessMod := player.PlayMod.getChessMod()
|
||||
MaxOrderNum := orderCfg.GetOrderNum(BaseMod.GetLevel())
|
||||
n := 0
|
||||
if OrderMod.LastOrder.Type == order.Preheat_type {
|
||||
ChessId := OrderMod.LastOrder.MergeId[0]
|
||||
ChessColor := mergeDataCfg.GetColorById(ChessId)
|
||||
PreheatStep := OrderMod.PreheatStep[ChessColor]
|
||||
OrderMod.PreheatStep[ChessColor]++
|
||||
if PreheatStep < 4 {
|
||||
NewChessId := mergeDataCfg.GetChessIdByLvAndColor(BaseMod.GetEnergyMul()+PreheatStep+1, ChessColor)
|
||||
Items, ok := order.PreheatItems[OrderMod.PreheatStep[ChessColor]]
|
||||
if !ok {
|
||||
Items = []*item.Item{item.NewItem(item.ITEM_STAR_ID, order.GetOrderStar([]int{NewChessId}, ChessMod.GetOrderEmit()))}
|
||||
}
|
||||
OrderMod.AddPreheatOrder([]int{NewChessId}, order.DIFF_LOW, order.Preheat_type, Items)
|
||||
}
|
||||
}
|
||||
for _, v := range OrderMod.OrderList {
|
||||
if v.Type == order.Common_type || v.Type == order.Pet_type || v.Type == order.Part_type || v.Type == order.Fixed_type || v.Type == order.Preview_type {
|
||||
n++
|
||||
}
|
||||
}
|
||||
for i := n; i < MaxOrderNum; i++ {
|
||||
player.CreateNormalOrder()
|
||||
}
|
||||
}
|
||||
|
||||
func (player *Player) FixOrderBug() {
|
||||
OrderMod := player.PlayMod.getOrderMod()
|
||||
BaseMod := player.PlayMod.getBaseMod()
|
||||
ChessMod := player.PlayMod.getChessMod()
|
||||
for k, v := range OrderMod.PreheatStep {
|
||||
if v > 4 {
|
||||
continue
|
||||
}
|
||||
Exit := false
|
||||
for _, o := range OrderMod.OrderList {
|
||||
if o.Type != order.Preheat_type {
|
||||
continue
|
||||
}
|
||||
Color := mergeDataCfg.GetColorById(o.MergeId[0])
|
||||
if Color == k {
|
||||
Exit = true
|
||||
break
|
||||
}
|
||||
|
||||
}
|
||||
if Exit {
|
||||
continue
|
||||
}
|
||||
NewChessId := mergeDataCfg.GetChessIdByLvAndColor(BaseMod.GetEnergyMul()+v+1, k)
|
||||
OrderMod.PreheatStep[k]++
|
||||
Items, ok := order.PreheatItems[OrderMod.PreheatStep[k]]
|
||||
if !ok {
|
||||
Items = []*item.Item{item.NewItem(item.ITEM_STAR_ID, order.GetOrderStar([]int{NewChessId}, ChessMod.GetOrderEmit()))}
|
||||
}
|
||||
OrderMod.AddPreheatOrder([]int{NewChessId}, order.DIFF_LOW, order.Preheat_type, Items)
|
||||
}
|
||||
}
|
||||
|
||||
func (player *Player) CreateNormalOrder() {
|
||||
Exp, PExp := userCfg.GetLevUpExp(player.GetPlayerBaseMod().GetLevel())
|
||||
BaseMod := player.PlayMod.getBaseMod()
|
||||
DecorateMod := player.PlayMod.getDecorateMod()
|
||||
@ -995,33 +1131,47 @@ func (player *Player) FormatOrderReward() {
|
||||
ExpCoin := (Exp-BaseMod.GetExp())*decorateCfg.GetAreaPerPExp(DecorateMod.GetAreaId()) - BaseMod.GetStar()
|
||||
PExpCoin := (PExp-BaseMod.GetPExp())*50 - player.GetPetOrderItemExp()
|
||||
OrderMod := player.PlayMod.getOrderMod()
|
||||
if ExpCoin > PExpCoin || BaseMod.GetLevel() < 17 {
|
||||
|
||||
// 预热订单
|
||||
|
||||
// 安慰订单
|
||||
Now := GoUtil.Now()
|
||||
if OrderMod.LastOrder.Type == order.COMFORT_TYPE && Now < int64(OrderMod.ComfortEndTime) {
|
||||
OrderMod.CreateOrder(BaseMod.GetLevel(), ChessMod.GetOrderEmit(), BaseMod.GetEnergyMul(), order.COMFORT_TYPE)
|
||||
for k, v := range OrderMod.GetOrderList() {
|
||||
if len(v.Items) != 0 {
|
||||
continue
|
||||
if k == OrderMod.Auto_id {
|
||||
if v.Type != order.COMFORT_TYPE {
|
||||
continue
|
||||
}
|
||||
Items := make([]*item.Item, 0)
|
||||
Star := order.GetOrderStar(v.MergeId, ChessMod.GetOrderEmit())
|
||||
Star = int(float64(Star)*float64(OrderFactor)/1000) * 10
|
||||
v.Items = append(Items, &item.Item{Id: item.ITEM_STAR_ID, Num: Star})
|
||||
OrderMod.OrderList[k] = v
|
||||
}
|
||||
if v.Type != order.Common_type {
|
||||
continue
|
||||
}
|
||||
Star := order.GetOrderStar(v.MergeId)
|
||||
Star = int(float64(Star)*float64(OrderFactor)/10) * 10
|
||||
v.Items = append(v.Items, &item.Item{
|
||||
Id: item.ITEM_STAR_ID,
|
||||
Num: Star,
|
||||
})
|
||||
OrderMod.OrderList[k] = v
|
||||
}
|
||||
} else {
|
||||
return
|
||||
}
|
||||
|
||||
PetTrigger := true
|
||||
for _, v := range OrderMod.GetOrderList() {
|
||||
if v.Type == order.Pet_type {
|
||||
PetTrigger = false
|
||||
break
|
||||
}
|
||||
}
|
||||
if PExpCoin > ExpCoin && PetTrigger && BaseMod.GetLevel() >= 17 {
|
||||
OrderMod.CreateOrder(BaseMod.GetLevel(), ChessMod.GetOrderEmit(), BaseMod.GetEnergyMul(), order.Pet_type)
|
||||
for k, v := range OrderMod.GetOrderList() {
|
||||
if len(v.Items) != 0 {
|
||||
continue
|
||||
}
|
||||
if v.Type != order.Common_type {
|
||||
if v.Type != order.Pet_type {
|
||||
continue
|
||||
}
|
||||
Items := make([]*item.Item, 0)
|
||||
Star := order.GetOrderStar(v.MergeId)
|
||||
Star = int(float64(Star)*float64(OrderFactor)/10) * 10
|
||||
Star := order.GetOrderStar(v.MergeId, ChessMod.GetStarEmitList())
|
||||
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
|
||||
@ -1031,7 +1181,45 @@ func (player *Player) FormatOrderReward() {
|
||||
v.Items = Items
|
||||
OrderMod.OrderList[k] = v
|
||||
}
|
||||
return
|
||||
}
|
||||
// if ExpCoin > PExpCoin || BaseMod.GetLevel() < 17 {
|
||||
// for k, v := range OrderMod.GetOrderList() {
|
||||
// if len(v.Items) != 0 {
|
||||
// continue
|
||||
// }
|
||||
// if v.Type != order.Common_type {
|
||||
// continue
|
||||
// }
|
||||
// Star := order.GetOrderStar(v.MergeId)
|
||||
// Star = int(float64(Star)*float64(OrderFactor)/10) * 10
|
||||
// v.Items = append(v.Items, &item.Item{
|
||||
// Id: item.ITEM_STAR_ID,
|
||||
// Num: Star,
|
||||
// })
|
||||
// OrderMod.OrderList[k] = v
|
||||
// }
|
||||
// } else {
|
||||
// for k, v := range OrderMod.GetOrderList() {
|
||||
// if len(v.Items) != 0 {
|
||||
// continue
|
||||
// }
|
||||
// if v.Type != order.Common_type {
|
||||
// continue
|
||||
// }
|
||||
// Items := make([]*item.Item, 0)
|
||||
// Star := order.GetOrderStar(v.MergeId)
|
||||
// Star = int(float64(Star)*float64(OrderFactor)/10) * 10
|
||||
// Items = player.GetPetOrderReward(Star, Items)
|
||||
// if len(Items) == 1 && Items[0].Id == item.ITEM_STAR_ID {
|
||||
// v.Type = order.Common_type
|
||||
// } else {
|
||||
// v.Type = order.Pet_type
|
||||
// }
|
||||
// v.Items = Items
|
||||
// OrderMod.OrderList[k] = v
|
||||
// }
|
||||
// }
|
||||
|
||||
// 触发式订单 满足条件生成零件订单
|
||||
PartCost := DecorateMod.GetPartCost()
|
||||
@ -1048,22 +1236,38 @@ func (player *Player) FormatOrderReward() {
|
||||
Trigger2 = true
|
||||
}
|
||||
}
|
||||
if Trigger && Trigger2 {
|
||||
if Trigger && Trigger2 && BaseMod.GetLevel() >= 12 {
|
||||
OrderMod.CreateOrder(BaseMod.GetLevel(), ChessMod.GetOrderEmit(), BaseMod.GetEnergyMul(), order.Part_type)
|
||||
for k, v := range OrderMod.GetOrderList() {
|
||||
if v.Type != order.Common_type {
|
||||
continue
|
||||
if v.Type == order.Part_type {
|
||||
v.Items = []*item.Item{item.NewItem(item.ITEM_LAUNCHER_ID, 2)}
|
||||
OrderMod.OrderList[k] = v
|
||||
}
|
||||
if v.Diff == order.DIFF_LOW {
|
||||
continue
|
||||
}
|
||||
v.Items = []*item.Item{item.NewItem(item.ITEM_LAUNCHER_ID, 2)}
|
||||
v.Type = order.Part_type
|
||||
OrderMod.OrderList[k] = v
|
||||
break
|
||||
}
|
||||
return
|
||||
}
|
||||
OrderMod.CreateOrder(BaseMod.GetLevel(), ChessMod.GetOrderEmit(), BaseMod.GetEnergyMul(), order.Common_type)
|
||||
|
||||
}
|
||||
func (player *Player) InitOrderItem() {
|
||||
OrderMod := player.PlayMod.getOrderMod()
|
||||
DecorateMod := player.PlayMod.getDecorateMod()
|
||||
ChessMod := player.PlayMod.getChessMod()
|
||||
OrderFactor := orderCfg.GetOrderFactor(DecorateMod.GetAreaId())
|
||||
for k, v := range OrderMod.GetOrderList() {
|
||||
if v.Type == order.Super_type {
|
||||
continue
|
||||
}
|
||||
if len(v.Items) != 0 {
|
||||
continue
|
||||
}
|
||||
Items := make([]*item.Item, 0)
|
||||
Star := order.GetOrderStar(v.MergeId, ChessMod.GetStarEmitList())
|
||||
Star = int(float64(Star)*float64(OrderFactor)/1000+0.5) * 10
|
||||
v.Items = append(Items, &item.Item{Id: item.ITEM_STAR_ID, Num: Star})
|
||||
OrderMod.OrderList[k] = v
|
||||
}
|
||||
}
|
||||
|
||||
func (player *Player) GetPetOrderReward(Star int, Items []*item.Item) []*item.Item {
|
||||
OrderItem := playroomCfg.GetOrderItem(Star)
|
||||
type sortData struct {
|
||||
@ -1192,3 +1396,98 @@ func (p *Player) GetPetThiefReward(Target int) error {
|
||||
p.HandleItem([]*item.Item{{Id: ItemId, Num: 1}}, proto.ITEM_POP_LABEL_PetTheif.String())
|
||||
return nil
|
||||
}
|
||||
|
||||
// 高级产物订单
|
||||
func (p *Player) AddHighOrder() {
|
||||
OrderMod := p.PlayMod.getOrderMod()
|
||||
BaseMod := p.PlayMod.getBaseMod()
|
||||
ChessMod := p.PlayMod.getChessMod()
|
||||
LastChess := OrderMod.LastOrder.MergeId[len(OrderMod.LastOrder.MergeId)-1]
|
||||
maxId := 0
|
||||
for k := range OrderMod.GetOrderList() {
|
||||
maxId = max(maxId, k)
|
||||
}
|
||||
if maxId == 0 || BaseMod.GetLevel() < 12 {
|
||||
return
|
||||
}
|
||||
NewChess := OrderMod.GetOrderList()[maxId].MergeId[0]
|
||||
LastColor := mergeDataCfg.GetColorById(LastChess)
|
||||
NewColor := mergeDataCfg.GetColorById(NewChess)
|
||||
LastEmitId := order.GetEmitByColor(ChessMod.GetOrderEmit(), LastColor)
|
||||
AddNewEmitId := order.GetEmitByColor(ChessMod.GetOrderEmit(), NewColor)
|
||||
Product := []string{}
|
||||
Product = append(Product, mergeDataCfg.GetEmitProduceType(LastEmitId)...)
|
||||
Product = append(Product, mergeDataCfg.GetEmitProduceType(AddNewEmitId)...)
|
||||
ChessMap := make(map[string]int, 0)
|
||||
ChessList := ChessMod.GetUnlockChessList()
|
||||
for _, v := range ChessList {
|
||||
ChessType := mergeDataCfg.GetTypeById(v)
|
||||
if ChessType != "Product" {
|
||||
continue
|
||||
}
|
||||
Color := mergeDataCfg.GetColorById(v)
|
||||
if GoUtil.InStringArray(Color, Product) {
|
||||
continue
|
||||
}
|
||||
if v > ChessMap[Color] {
|
||||
ChessMap[Color] = v
|
||||
}
|
||||
}
|
||||
|
||||
for Color, ChessId := range ChessMap {
|
||||
EmitId := order.GetEmitByColor(ChessMod.GetOrderEmit(), Color)
|
||||
_, ChessMaxLv := getChesslvRange(EmitId, BaseMod.GetEnergyMul(), OrderMod.IsCharge)
|
||||
NewLev2 := mergeDataCfg.DynamicLev(ChessMaxLv, EmitId, Color)
|
||||
NewLev3 := order.AdjustLev(NewLev2, BaseMod.GetEnergyMul())
|
||||
ChessLv := mergeDataCfg.GetLvById(ChessId)
|
||||
if NewLev3 >= ChessLv {
|
||||
continue
|
||||
}
|
||||
Add := true
|
||||
for _, v := range OrderMod.GetOrderList() {
|
||||
if GoUtil.InArray(ChessId, v.MergeId) {
|
||||
Add = false
|
||||
}
|
||||
}
|
||||
if Add {
|
||||
OrderMod.AddExtraOrder([]int{ChessId})
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 高级产物订单
|
||||
func (p *Player) AddHighOrder2() {
|
||||
OrderMod := p.PlayMod.getOrderMod()
|
||||
ChessMod := p.PlayMod.getChessMod()
|
||||
ChessList := ChessMod.GetUnlockChessList()
|
||||
ChessMap := make(map[int]int, 0)
|
||||
for _, v := range ChessList {
|
||||
Lv := mergeDataCfg.GetLvById(v)
|
||||
MaxLv := mergeDataCfg.GetMaxLvById(v)
|
||||
if Lv != MaxLv {
|
||||
continue
|
||||
}
|
||||
Type := mergeDataCfg.GetTypeById(v)
|
||||
if Type != "Product" {
|
||||
continue
|
||||
}
|
||||
ChessMap[v]++
|
||||
}
|
||||
for ChessId, Num := range ChessMap {
|
||||
if Num < 3 {
|
||||
continue
|
||||
}
|
||||
add := true
|
||||
for _, v := range OrderMod.GetOrderList() {
|
||||
if GoUtil.SliceEqual(v.MergeId, []int{ChessId, ChessId, ChessId}) {
|
||||
add = false
|
||||
break
|
||||
}
|
||||
}
|
||||
if add {
|
||||
OrderMod.AddExtraOrder([]int{ChessId, ChessId, ChessId})
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -27,7 +27,7 @@ func (p *Player) PetItemGetLog(Item []*item.Item, Cost []*item.Item, Label strin
|
||||
CostNum := 0
|
||||
if len(Cost) > 0 {
|
||||
switch Cost[0].Id {
|
||||
case item.ITEM_TYPE_DIAMOND:
|
||||
case item.ITEM_DIAMOND_ID:
|
||||
CostType = "diamond"
|
||||
case item.ITEM_STAR_ID:
|
||||
CostType = "star"
|
||||
@ -36,7 +36,7 @@ func (p *Player) PetItemGetLog(Item []*item.Item, Cost []*item.Item, Label strin
|
||||
default:
|
||||
CostType = "unknown"
|
||||
}
|
||||
CostNum = Cost[0].Num
|
||||
CostNum = -Cost[0].Num
|
||||
}
|
||||
for _, v := range Item {
|
||||
Type := itemCfg.GetItemType(v.Id)
|
||||
@ -61,7 +61,7 @@ func (p *Player) PetItemGetLog_(Type int, Name string, Label string, CostType st
|
||||
func (p *Player) PetItemUseLog(Item []*item.Item) {
|
||||
for _, v := range Item {
|
||||
Type := itemCfg.GetItemType(v.Id)
|
||||
if Type == item.ITEM_TYPE_PLAYROOM_PET {
|
||||
if Type == item.ITEM_TYPE_PLAYROOM_PET && v.Num < 0 {
|
||||
Name, _ := itemCfg.GetItemName(v.Id)
|
||||
Effect := itemCfg.GetItemEffect(v.Id)
|
||||
p.TeLog("pet_item_use", map[string]interface{}{
|
||||
|
||||
@ -10,10 +10,12 @@ import (
|
||||
collectCfg "server/conf/collect"
|
||||
decorateCfg "server/conf/decorate"
|
||||
emojiCfg "server/conf/emoji"
|
||||
GuideTaskCfg "server/conf/guideTask"
|
||||
handbookCfg "server/conf/handbook"
|
||||
limitedTimeEventCfg "server/conf/limitedTimeEvent"
|
||||
mergeDataCfg "server/conf/mergeData"
|
||||
miningCfg "server/conf/mining"
|
||||
orderCfg "server/conf/order"
|
||||
playroomCfg "server/conf/playroom"
|
||||
"server/db"
|
||||
"server/game/internal"
|
||||
@ -144,7 +146,8 @@ func RegSetEneryFunc(player *Player, buf []byte) error {
|
||||
Emit := player.PlayMod.getChessMod().GetOrderEmit()
|
||||
ChessList := player.PlayMod.getChessMod().GetUnlockChessList()
|
||||
OrderMod.ChangeEnergyMul(Lv, Emit, int(req.EnergyMul), ChessList)
|
||||
player.FormatOrderReward()
|
||||
player.InitOrderItem()
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(OrderMod.BackData())
|
||||
player.PushClientRes(player.PlayMod.getBaseMod().BackData())
|
||||
return nil
|
||||
@ -325,11 +328,29 @@ func ReqRewardOrder(player *Player, buf []byte) error {
|
||||
|
||||
// 每日任务
|
||||
player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_FINISHORDER})
|
||||
order_star_reward := 0
|
||||
order_item_reward := []int{}
|
||||
for _, v := range Item {
|
||||
if v.Id == item.ITEM_STAR_ID {
|
||||
order_star_reward += v.Num
|
||||
} else {
|
||||
order_item_reward = append(order_item_reward, v.Id)
|
||||
}
|
||||
}
|
||||
preset_order_group := 0
|
||||
if OrderType != order.Preview_type && OrderType != order.Fixed_type {
|
||||
preset_order_group = -1
|
||||
}
|
||||
preset_order_group, preset_order_step := orderCfg.GetStartOrderInfo(int(req.OrderId))
|
||||
player.TeLog("order_finish", map[string]interface{}{
|
||||
"order_id": int(req.OrderId),
|
||||
"order_item_id": mergeList,
|
||||
"order_type": OrderType,
|
||||
"order_star_reward": Star,
|
||||
"order_id": int(req.OrderId),
|
||||
"order_item_id": mergeList,
|
||||
"order_type": OrderType,
|
||||
"order_star_reward": order_star_reward,
|
||||
"order_item_reward": order_item_reward,
|
||||
"order_star_value": Star,
|
||||
"preset_order_group": preset_order_group,
|
||||
"preset_order_step": preset_order_step,
|
||||
})
|
||||
player.PetItemGetLog(Item, nil, "Order")
|
||||
EmitRetireTrigger2(player)
|
||||
@ -343,16 +364,29 @@ func ReqRewardOrder(player *Player, buf []byte) error {
|
||||
// } else {
|
||||
// OrderMod.CreateOrderSeed(NewOrder)
|
||||
// }
|
||||
OrderMod.TriggerOrder(Lv, order.TRIGGER_TYPE_ORDER, Emit, EnergyMul)
|
||||
player.FormatOrderReward()
|
||||
player.TriggerOrder(Lv, order.TRIGGER_TYPE_ORDER, Emit, EnergyMul)
|
||||
player.AddOrder()
|
||||
player.AddHighOrder()
|
||||
player.AddHighOrder2()
|
||||
player.InitOrderItem()
|
||||
// 存钱罐增加钻石
|
||||
PiggyBankMod := player.PlayMod.getPiggyBankMod()
|
||||
PiggyBankMod.Trigger()
|
||||
|
||||
// 锦标赛增加积分
|
||||
if player.GetPlayerBaseMod().GetLevel() >= 17 {
|
||||
ChessList := make([]int, 0)
|
||||
for _, v := range mergeList {
|
||||
color := mergeDataCfg.GetColorById(v)
|
||||
Emit := order.GetEmitByColor(ChessMod.GetStarEmitList(), color)
|
||||
EmitType := mergeDataCfg.GetEmitType(Emit)
|
||||
if EmitType == "auto" {
|
||||
continue
|
||||
}
|
||||
ChessList = append(ChessList, v)
|
||||
}
|
||||
ChampshipMod := player.PlayMod.getChampshipMod()
|
||||
ChampshipMod.AddScore(mergeList)
|
||||
ChampshipMod.AddScore(ChessList)
|
||||
player.HandleInChampshipRank()
|
||||
}
|
||||
FriendTreasureMod := player.PlayMod.getFriendTreasureMod()
|
||||
@ -403,7 +437,7 @@ func ReqDecorate(player *Player, buf []byte) error {
|
||||
DecorateMod := player.PlayMod.getDecorateMod()
|
||||
DecorateId := int(req.DecorateId)
|
||||
AreaId := int(req.AreaId)
|
||||
CostItem, PetExp := DecorateMod.GetDecorateCostItem(AreaId, DecorateId)
|
||||
CostItem, PetExp, PartItem := DecorateMod.GetDecorateCostItem(AreaId, DecorateId)
|
||||
err := player.HandleLoseItem(CostItem, msg.ITEM_POP_LABEL_DecorateCost.String()) // 扣除道具
|
||||
if err != nil {
|
||||
player.SendErrClienRes(&msg.ResDecorate{
|
||||
@ -451,7 +485,8 @@ func ReqDecorate(player *Player, buf []byte) error {
|
||||
})
|
||||
}
|
||||
player.TeLog("finish_deco", map[string]interface{}{
|
||||
"deco_step_id": fmt.Sprintf("%d_%d", AreaId, DecorateId),
|
||||
"deco_step_id": fmt.Sprintf("%d_%d", AreaId, DecorateId),
|
||||
"material_cost": PartItem,
|
||||
})
|
||||
|
||||
player.PlayMod.save()
|
||||
@ -616,6 +651,7 @@ func ReqGetChessFromBuff(player *Player, buf []byte) error {
|
||||
}
|
||||
triggerComposeChess(player, ChessId, player.PlayMod.getBaseMod().EnergyMul, player.PlayMod.getChessMod().GetEmitList())
|
||||
EmitRetireTrigger1(player)
|
||||
player.InitOrderItem()
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(ChessMod.BackData())
|
||||
player.PushClientRes(&msg.ResGetChessFromBuff{
|
||||
@ -726,6 +762,7 @@ func ReqTakeChessOutBag(player *Player, buf []byte) error {
|
||||
"bag_id": req.BagId,
|
||||
"chess_id": ChessId,
|
||||
})
|
||||
player.InitOrderItem()
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(ChessMod.BackData())
|
||||
player.PushClientRes(&msg.ResTakeChessOutBag{
|
||||
@ -831,9 +868,9 @@ func ReqUpgradeChess(player *Player, buf []byte) error {
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.TeLog("ReqUpgradeChess", map[string]interface{}{
|
||||
"chess_id": req.ChessId,
|
||||
"new_chess": NewChess,
|
||||
player.TeLog("wand_use", map[string]interface{}{
|
||||
"wand_item_id": req.ChessId,
|
||||
"new_chess": NewChess,
|
||||
})
|
||||
Handbook := player.PlayMod.getHandbookMod()
|
||||
Handbook.SetHandbook(NewChess)
|
||||
@ -1196,7 +1233,7 @@ func ReqGetDailyTaskReward(player *Player, buf []byte) error {
|
||||
"task_id": int(req.Id),
|
||||
"item_list": itemList,
|
||||
"task_type": "daily",
|
||||
"task_score_reward": 0,
|
||||
"task_score_reward": DailyTaskMod.GetWeekReward2(),
|
||||
})
|
||||
return nil
|
||||
}
|
||||
@ -1270,9 +1307,11 @@ func ReqGetGuideTaskReward(player *Player, buf []byte) error {
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.TeLog("ReqGetGuideTaskReward", map[string]interface{}{
|
||||
"task_id": int(req.Id),
|
||||
"item_list": itemList,
|
||||
player.TeLog("new_player_task", map[string]interface{}{
|
||||
"task_id": int(req.Id),
|
||||
"item_list": itemList,
|
||||
"task_gruop": GuideTaskCfg.GetUnlock(int(req.Id)),
|
||||
"task_score_reward": GuideTaskCfg.GetActiveReward2(GuideTaskMod.Reward, GuideTaskMod.Active),
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(GuideTaskMod.BackData())
|
||||
@ -1365,8 +1404,13 @@ func ReqSetFace(player *Player, buf []byte) error {
|
||||
player.PushClientRes(&msg.ResSetFace{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
})
|
||||
is_platform := false
|
||||
if req.Face == 0 {
|
||||
is_platform = true
|
||||
}
|
||||
player.TeLog("face_set", map[string]interface{}{
|
||||
"face_id": int(req.Face),
|
||||
"face_id": int(req.Face),
|
||||
"is_platform": is_platform,
|
||||
})
|
||||
player.PlayerDecoSetLog("face", int(req.Face), "")
|
||||
BackUserInfo(player)
|
||||
@ -1680,10 +1724,6 @@ func ReqApplyFriend(player *Player, buf []byte) error {
|
||||
BaseMod := player.PlayMod.getBaseMod()
|
||||
PlayroomMod.AddRoomPointInvite(BaseMod.GetLevel())
|
||||
PlayroomBackData(player)
|
||||
player.TeLog("friend_add", map[string]interface{}{
|
||||
"player_id": Uid,
|
||||
"add_type": "apply",
|
||||
})
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -1715,7 +1755,7 @@ func ReqAgreeFriend(player *Player, buf []byte) error {
|
||||
})
|
||||
player.TeLog("friend_add", map[string]interface{}{
|
||||
"player_id": Uid,
|
||||
"add_type": "agree",
|
||||
"add_type": "接受申请",
|
||||
})
|
||||
player.AddLog(Uid, friend.LOG_TYPE_FRIEND_BECOME, "", GoUtil.Now())
|
||||
FriendApplyBackData(player)
|
||||
@ -2454,7 +2494,7 @@ func ReqBuyChessShop(player *Player, buf []byte) error {
|
||||
"item_id": int(req.Id),
|
||||
"change_num": 1,
|
||||
"cost_type": "diamond",
|
||||
"cost_num": LostItem[0].Num,
|
||||
"cost_num": -LostItem[0].Num,
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(ChargeMod.BackData())
|
||||
@ -2462,7 +2502,7 @@ func ReqBuyChessShop(player *Player, buf []byte) error {
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
})
|
||||
player.TeLog("buy_product_diamond", map[string]interface{}{
|
||||
"diamond_cost": LostItem[0].Num,
|
||||
"diamond_cost": -LostItem[0].Num,
|
||||
"product_id": int(req.Id),
|
||||
"product_name": mergeDataCfg.GetNameById(int(req.Id)),
|
||||
})
|
||||
@ -3005,7 +3045,7 @@ func ReqAutoAddInviteFriend(player *Player, buf []byte) error {
|
||||
PlayroomBackData(player)
|
||||
player.TeLog("friend_add", map[string]interface{}{
|
||||
"player_id": req.Id,
|
||||
"add_type": "invite add friend",
|
||||
"add_type": "邀请注册",
|
||||
})
|
||||
return nil
|
||||
}
|
||||
@ -3046,7 +3086,7 @@ func ReqAutoAddInviteFriend2(player *Player, buf []byte) error {
|
||||
PlayroomBackData(player)
|
||||
player.TeLog("friend_add", map[string]interface{}{
|
||||
"player_id": req.Id,
|
||||
"add_type": "invite add friend",
|
||||
"add_type": "邀请注册",
|
||||
})
|
||||
return nil
|
||||
}
|
||||
@ -3056,7 +3096,7 @@ func ReqSelectLimitEvent(player *Player, buf []byte) error {
|
||||
proto.Unmarshal(buf, req)
|
||||
LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod()
|
||||
BaseMod := player.PlayMod.getBaseMod()
|
||||
Items, EventName, slot_order_number, err := LimitedTimeEventMod.SelectProgressReward(int(req.Id), BaseMod.GetLevel(), BaseMod.GetEnergy())
|
||||
Items, EventType, OrderNum, RewardList, err := LimitedTimeEventMod.SelectProgressReward(int(req.Id), BaseMod.GetLevel(), BaseMod.GetEnergy())
|
||||
if err != nil {
|
||||
player.SendErrClienRes(&msg.ResSelectLimitEvent{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
@ -3073,9 +3113,9 @@ func ReqSelectLimitEvent(player *Player, buf []byte) error {
|
||||
return err
|
||||
}
|
||||
player.TeLog("time_limited_slot", map[string]interface{}{
|
||||
"slot_order_number": slot_order_number,
|
||||
"slot_reward_list": EventName,
|
||||
"slot_reward": EventName,
|
||||
"slot_order_number": OrderNum,
|
||||
"slot_reward_list": RewardList,
|
||||
"slot_reward": limitedTimeEventCfg.GetEventName(EventType),
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(LimitedTimeEventMod.BackData())
|
||||
@ -3436,7 +3476,7 @@ func ReqPlayroomSetRoom(player *Player, buf []byte) error {
|
||||
req := &msg.ReqPlayroomSetRoom{}
|
||||
proto.Unmarshal(buf, req)
|
||||
PlayroomMod := player.PlayMod.getPlayroomMod()
|
||||
Diff, err := PlayroomMod.SetRoom(GoUtil.MapInt32ToInt(req.Playroom))
|
||||
_, err := PlayroomMod.SetRoom(GoUtil.MapInt32ToInt(req.Playroom))
|
||||
if err != nil {
|
||||
player.SendErrClienRes(&msg.ResPlayroomSetRoom{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
@ -3446,7 +3486,7 @@ func ReqPlayroomSetRoom(player *Player, buf []byte) error {
|
||||
}
|
||||
player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_ROOMDEC})
|
||||
player.PlayMod.save()
|
||||
player.RoomDecoSetLog(Diff)
|
||||
//player.RoomDecoSetLog(Diff)
|
||||
player.PushClientRes(&msg.ResPlayroomSetRoom{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
})
|
||||
@ -3467,7 +3507,6 @@ func ReqPlayroomGame(player *Player, buf []byte) error {
|
||||
return fmt.Errorf("no target")
|
||||
}
|
||||
Items := player.GetPlayroomGameReward(int(req.Type), 0)
|
||||
PlayroomMod.ResetGame()
|
||||
err := player.HandleItem(Items, msg.ITEM_POP_LABEL_PlayroomGame.String())
|
||||
if err != nil {
|
||||
player.SendErrClienRes(&msg.ResPlayroomGame{
|
||||
@ -3498,6 +3537,7 @@ func ReqPlayroomGame(player *Player, buf []byte) error {
|
||||
"is_chip": false,
|
||||
"item_list": Items,
|
||||
})
|
||||
PlayroomMod.ResetGame()
|
||||
PlayroomBackData(player)
|
||||
player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_game")
|
||||
player.PushClientRes(&msg.ResPlayroomGame{
|
||||
@ -3548,12 +3588,13 @@ func ReqPlayroomSelectReward(player *Player, buf []byte) error {
|
||||
player.GetPetThiefReward(Target)
|
||||
}
|
||||
G_GameLogicPtr.SetUserData(Target, VAR_OP_CHIP, 1)
|
||||
PlayroomMod.ResetGame()
|
||||
player.TeLog("finish_mini_game", map[string]interface{}{
|
||||
"mini_game_type": PlayroomMod.GetGameId(),
|
||||
"is_chip": true,
|
||||
"item_list": Items,
|
||||
})
|
||||
PlayroomMod.ResetGame()
|
||||
|
||||
player.PlayerDecoSetLog("emoji", int(req.EmojiId), "playroom_select_reward")
|
||||
PlayroomBackData(player)
|
||||
player.PlayMod.save()
|
||||
@ -3754,7 +3795,7 @@ func ReqPlayroomFlipReward(player *Player, buf []byte) error {
|
||||
},
|
||||
})
|
||||
player.TeLog("finish_mini_game", map[string]interface{}{
|
||||
"mini_game_type": PlayroomMod.GetGameId(),
|
||||
"mini_game_type": playroom.GAME_TYPE_FILP,
|
||||
"is_chip": false,
|
||||
"item_list": Items,
|
||||
})
|
||||
@ -3894,9 +3935,10 @@ func ReqPlayroomTask(player *Player, buf []byte) error {
|
||||
})
|
||||
return err
|
||||
}
|
||||
Type := playroomCfg.GetDailyTaskType(int(req.Id))
|
||||
player.TeLog("room_daily_task", map[string]interface{}{
|
||||
"task_id": req.Id,
|
||||
"is_reward": PlayroomMod.DailyTaskCanReward(int(req.Id)),
|
||||
"is_reward": PlayroomMod.DailyTaskCanReward(Type),
|
||||
})
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(&msg.ResPlayroomTask{
|
||||
@ -4192,11 +4234,14 @@ func ReqFriendTreasureEnd(player *Player, buf []byte) error {
|
||||
)
|
||||
return err
|
||||
}
|
||||
player.TeLog("friend_treasure_end", map[string]interface{}{
|
||||
"items": Items,
|
||||
"num": FriendItemNum,
|
||||
player.TeLog("pet_treasure_open", map[string]interface{}{
|
||||
"pet_treasure_step": FriendTreasureMod.Shift,
|
||||
"pet_treasure_box": FriendTreasureMod.BoxItems,
|
||||
"pet_treasure_reward": append(Items, FriendTreasureMod.BoxItems...),
|
||||
})
|
||||
FriendTreasureMod.ResetGame()
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(FriendTreasureMod.BackData())
|
||||
player.PushClientRes(&msg.ResFriendTreasureEnd{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
})
|
||||
@ -4346,7 +4391,7 @@ func ReqPlayroomDressSet(player *Player, buf []byte) error {
|
||||
req := &msg.ReqPlayroomDressSet{}
|
||||
proto.Unmarshal(buf, req)
|
||||
PlayroomMod := player.PlayMod.getPlayroomMod()
|
||||
Parts, Diff, error := PlayroomMod.PlayroomDressSet(GoUtil.MapInt32ToInt(req.DressSet))
|
||||
Parts, _, error := PlayroomMod.PlayroomDressSet(GoUtil.MapInt32ToInt(req.DressSet))
|
||||
if error != nil {
|
||||
player.SendErrClienRes(&msg.ResPlayroomDressSet{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
@ -4356,7 +4401,7 @@ func ReqPlayroomDressSet(player *Player, buf []byte) error {
|
||||
}
|
||||
player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PETDRESS, A: []interface{}{Parts}})
|
||||
player.PlayMod.save()
|
||||
player.PetDecoSetLog(Diff)
|
||||
//player.PetDecoSetLog(Diff)
|
||||
PlayroomBackData(player)
|
||||
player.PushClientRes(&msg.ResPlayroomDressSet{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
|
||||
@ -114,6 +114,10 @@ func TriggerShippingOrder(player *Player, req *msg.ReqShippingOrder) {
|
||||
GoUtil.SendFeishuFatal(int(player.M_DwUin), "GoogleVerify支付校验异常", fmt.Sprintf("GoogleVerify parmas OrderSn:%s; ProduceId:%s; Token:%s", OrderSn, req.ProduceId, req.Token))
|
||||
log.Debug("[order data nil] Uid:%d;OrderSn:%s;PayOrder:%s;", player.M_DwUin, OrderSn, req.ProduceId)
|
||||
return
|
||||
} else {
|
||||
if conf.Server.GameName == "Merge_Pet_online" {
|
||||
GoUtil.SendFeishuOrder(int(player.M_DwUin), OrderData.PayChannelOrderId, OrderData.Price, req.ProduceId, OrderData.PayTime, GoUtil.Now())
|
||||
}
|
||||
}
|
||||
log.Debug("[order verify success] Uid:%d;OrderSn:%s;PayOrder:%s;Token:%s", player.M_DwUin, OrderData.OrderId, OrderData.PayChannelOrderId, req.Token)
|
||||
player.lock.Lock()
|
||||
@ -133,7 +137,7 @@ func TriggerShippingOrder(player *Player, req *msg.ReqShippingOrder) {
|
||||
SendCharge(player, OrderExtraData)
|
||||
}
|
||||
OrderData.PayStatus = MergeConst.ORDER_STATUS_SHIP
|
||||
OrderData.PayChannelOrderId = req.Token
|
||||
OrderData.ProductName = req.ProduceId
|
||||
db.UpdatePlayerChargeData(OrderData)
|
||||
player.PlayMod.save()
|
||||
orderDataMap := map[string]interface{}{
|
||||
@ -157,34 +161,15 @@ func TriggerComfortOrder(p *Player) {
|
||||
Now := GoUtil.Now()
|
||||
Lv := BaseMod.GetLevel()
|
||||
|
||||
if Now-BaseMod.GetLogoutTime() < 7*86400 || Lv < 17 {
|
||||
if Now-BaseMod.GetLogoutTime() < 7*86400 || Lv < 23 {
|
||||
return
|
||||
}
|
||||
OrderMod := p.PlayMod.getOrderMod()
|
||||
ChessMod := p.PlayMod.getChessMod()
|
||||
ChessList := ChessMod.GetUnlockChessList()
|
||||
TriggerType := 1
|
||||
for _, Order := range OrderMod.GetOrderList() {
|
||||
if GoUtil.IsContain(ChessList, Order.MergeId) {
|
||||
continue
|
||||
}
|
||||
if Order.Diff == order.DIFF_LOW {
|
||||
return
|
||||
}
|
||||
if Order.Diff == order.DIFF_MID {
|
||||
TriggerType = 2
|
||||
}
|
||||
}
|
||||
OrderMod.ComfortEndTime = int(Now + 86400)
|
||||
EmitList := ChessMod.GetEmitList()
|
||||
EnergyMul := BaseMod.GetEnergyMul()
|
||||
if TriggerType == 1 {
|
||||
OrderMod.CreateComfortOrder(Lv, EmitList, EnergyMul, order.DIFF_LOW, 2)
|
||||
OrderMod.CreateComfortOrder(Lv, EmitList, EnergyMul, order.DIFF_LOW, 3)
|
||||
OrderMod.CreateComfortOrder(Lv, EmitList, EnergyMul, order.DIFF_MID, 2)
|
||||
} else {
|
||||
OrderMod.CreateComfortOrder(Lv, EmitList, EnergyMul, order.DIFF_LOW, 2)
|
||||
OrderMod.CreateComfortOrder(Lv, EmitList, EnergyMul, order.DIFF_LOW, 3)
|
||||
}
|
||||
OrderMod.CreateNormalOrder(BaseMod.GetLevel(), EmitList, EnergyMul, order.COMFORT_TYPE)
|
||||
}
|
||||
|
||||
func TriggerSeed(player *Player) {
|
||||
|
||||
@ -4,7 +4,9 @@ import (
|
||||
"fmt"
|
||||
"math"
|
||||
mergeDataCfg "server/conf/mergeData"
|
||||
orderCfg "server/conf/order"
|
||||
"server/game/mod/decorate"
|
||||
"server/game/mod/item"
|
||||
"server/game/mod/order"
|
||||
"server/game/mod/quest"
|
||||
"server/msg"
|
||||
@ -45,15 +47,29 @@ func UnitOrder(p *Player) error {
|
||||
ChessMod := p.PlayMod.getChessMod()
|
||||
BaseMod := p.PlayMod.getBaseMod()
|
||||
//OrderMod.OrderList = make(map[int]order.Order)
|
||||
for i := 0; i < 5000; i++ {
|
||||
for i := 0; i < 1000; i++ {
|
||||
//OrderMod.ChessPool = nil
|
||||
//OrderMod.EmitShuffle = nil
|
||||
err := OrderMod.CreateNormalOrder(BaseMod.GetLevel(), ChessMod.GetOrderEmit(), BaseMod.GetEnergyMul())
|
||||
err := OrderMod.CreateNormalOrder(BaseMod.GetLevel(), ChessMod.GetOrderEmit(), BaseMod.GetEnergyMul(), order.Common_type)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for k, v := range OrderMod.OrderList {
|
||||
if v.Type == order.Super_type {
|
||||
continue
|
||||
}
|
||||
if len(v.Items) > 0 {
|
||||
continue
|
||||
}
|
||||
if v.Diff == 0 {
|
||||
continue
|
||||
}
|
||||
Star := order.GetOrderStar(v.MergeId, ChessMod.GetOrderEmit())
|
||||
v.Items = []*item.Item{item.NewItem(item.ITEM_STAR_ID, Star)}
|
||||
OrderMod.OrderList[k] = v
|
||||
fmt.Printf("OrderId %d, Diff %d, MergeId %v, Star %d\n", k, v.Diff, v.MergeId, Star)
|
||||
}
|
||||
}
|
||||
p.FormatOrderReward()
|
||||
NumMap := make(map[int]int)
|
||||
for _, v := range OrderMod.OrderList {
|
||||
NumMap[len(v.MergeId)]++
|
||||
@ -235,7 +251,7 @@ func UnitOrder2(p *Player, Lv, EnergyMul int) float64 {
|
||||
// fmt.Println(EmitList)
|
||||
// OrderMod.Debug = make(map[int]int)
|
||||
for i := 0; i < 5000; i++ {
|
||||
err := OrderMod.CreateNormalOrder(Lv, Emit, EnergyMul)
|
||||
err := OrderMod.CreateNormalOrder(Lv, Emit, EnergyMul, order.Common_type)
|
||||
log.Debug("OrderMod.CreateNormalOrder %d", i)
|
||||
if err != nil {
|
||||
return 0
|
||||
@ -289,7 +305,13 @@ func UnitPlayroomOrder(p *Player) error {
|
||||
}
|
||||
|
||||
func UnitPetOrder(p *Player) error {
|
||||
p.FormatOrderReward()
|
||||
p.CreateNormalOrder()
|
||||
ChessMod := p.PlayMod.getChessMod()
|
||||
DecorateMod := p.PlayMod.getDecorateMod()
|
||||
OrderFactor := orderCfg.GetOrderFactor(DecorateMod.GetAreaId())
|
||||
Star := order.GetOrderStar([]int{305}, ChessMod.GetStarEmitList())
|
||||
a := int(float64(Star)*float64(OrderFactor)/1000+0.5) * 10
|
||||
fmt.Print(a)
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -301,7 +323,7 @@ func UnitDecoratePartCost(p *Player) error {
|
||||
DecorateMod.PartClassPool = []int{}
|
||||
DecorateMod.PartPool = make(map[int]int)
|
||||
DecorateMod.InitData()
|
||||
Items, _ := DecorateMod.GetDecorateCostItem(1, 33)
|
||||
Items, _, _ := DecorateMod.GetDecorateCostItem(1, 33)
|
||||
err := p.HandleLoseItem(Items, "")
|
||||
if err != nil {
|
||||
fmt.Print(err)
|
||||
@ -319,7 +341,7 @@ func UnitOrderTrigger(p *Player) error {
|
||||
Emit := ChessMod.GetEmitList()
|
||||
EnergyMul := BaseMod.GetEnergyMul()
|
||||
OrderMod.TriggerOrder(Lv, order.TRIGGER_TYPE_ORDER, Emit, EnergyMul)
|
||||
|
||||
order.GetOrderStar([]int{1146}, ChessMod.GetOrderEmit())
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
@ -32,9 +32,9 @@ type ChargeMod struct {
|
||||
|
||||
Gift map[int]int // 礼包
|
||||
|
||||
Ad bool // 是否购买免广告
|
||||
|
||||
WishList *WishList
|
||||
Ad bool // 是否购买免广告
|
||||
AdEndTime int64
|
||||
WishList *WishList
|
||||
}
|
||||
|
||||
type WishList struct {
|
||||
@ -132,6 +132,12 @@ func (c *ChargeMod) NoonUpdate(Emit []int) {
|
||||
c.InitChessShop(Emit)
|
||||
}
|
||||
|
||||
func (c *ChargeMod) FixBug(Emit []int) {
|
||||
if len(c.ChessShop) < 5 {
|
||||
c.InitChessShop(Emit)
|
||||
}
|
||||
}
|
||||
|
||||
// 充值
|
||||
func (c *ChargeMod) Fire(ChargeId int) (Item []*item.Item) {
|
||||
Money := chargeCfg.GetMoneyCharge(ChargeId)
|
||||
@ -237,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 {
|
||||
@ -286,6 +307,7 @@ func (c *ChargeMod) BackData() *msg.ResCharge {
|
||||
TodayCharge: float32(c.TodayCharge),
|
||||
MonthCharge: float32(c.MonthCharge),
|
||||
Wish: resWish,
|
||||
AdEndTime: c.AdEndTime,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -261,7 +261,31 @@ func (cb *ChessBorad) RemoveChess(Id int) error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (cb *ChessBorad) GetStarEmitList() []int {
|
||||
result := make([]int, 0, len(cb.EmitList))
|
||||
EM := make(map[string]int)
|
||||
for k, v := range cb.EmitList {
|
||||
if v <= 0 {
|
||||
delete(cb.EmitList, k)
|
||||
continue
|
||||
}
|
||||
EmitID := mergeDataCfg.GetEmitId(k)
|
||||
if EmitID == "" {
|
||||
continue
|
||||
}
|
||||
EmitType := mergeDataCfg.GetEmitType(k)
|
||||
if EmitType == "sub" {
|
||||
continue
|
||||
}
|
||||
if v > 0 {
|
||||
EM[EmitID] = max(EM[EmitID], k)
|
||||
}
|
||||
}
|
||||
for _, v := range EM {
|
||||
result = append(result, v)
|
||||
}
|
||||
return result
|
||||
}
|
||||
func (cb *ChessBorad) GetEmitList() []int {
|
||||
result := make([]int, 0, len(cb.EmitList))
|
||||
EM := make(map[string]int)
|
||||
@ -274,7 +298,7 @@ func (cb *ChessBorad) GetEmitList() []int {
|
||||
if EmitID == "" {
|
||||
continue
|
||||
}
|
||||
if cb.Retire[EmitID] == EMIT_RETIRE_START {
|
||||
if cb.Retire[EmitID] >= EMIT_RETIRE_START {
|
||||
continue
|
||||
}
|
||||
EmitType := mergeDataCfg.GetEmitType(k)
|
||||
@ -386,7 +410,7 @@ func (cb *ChessBorad) BackData() *msg.ResPlayerChessInfo {
|
||||
}
|
||||
Re := make([]string, 0)
|
||||
for k, v := range cb.Retire {
|
||||
if v == 3 {
|
||||
if v == EMIT_RETIRE_END {
|
||||
Re = append(Re, k)
|
||||
}
|
||||
}
|
||||
@ -554,7 +578,7 @@ func (cb *ChessBorad) RetireOrder(EmitType string) error {
|
||||
return errors.New("chess has not been retired")
|
||||
}
|
||||
chess := make([]int, 0)
|
||||
EmitProduct := mergeDataCfg.GetEmitProduce(EmitType)
|
||||
EmitProduct := mergeDataCfg.GetEmitOrderProduce(EmitType)
|
||||
for k, v := range cb.ChessMap {
|
||||
arr := strings.Split(k, "@")
|
||||
Color := mergeDataCfg.GetColorById(int(v))
|
||||
|
||||
@ -192,3 +192,23 @@ func (dt *DailyTaskMod) GetWeekReward(id int) ([]*item.Item, error) {
|
||||
}
|
||||
return nil, fmt.Errorf("task not finish")
|
||||
}
|
||||
|
||||
func (dt *DailyTaskMod) GetWeekReward2() []*item.Item {
|
||||
max := 0
|
||||
for id := range dt.WeekReward {
|
||||
if id > max {
|
||||
max = id
|
||||
}
|
||||
}
|
||||
max++
|
||||
if v, ok := dt.WeekReward[max]; ok {
|
||||
NeedActive := dailyTaskCfg.GetTaskActiveById(max)
|
||||
if dt.Active < NeedActive {
|
||||
return nil
|
||||
}
|
||||
if !v.Status {
|
||||
return v.Items
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -75,20 +75,22 @@ func (d *Decorate) GetDecorateAddEnergy(cnt int) []*item.Item {
|
||||
}
|
||||
|
||||
// 获取装饰消耗
|
||||
func (d *Decorate) GetDecorateCostItem(AreaId, DecorateId int) ([]*item.Item, int) {
|
||||
func (d *Decorate) GetDecorateCostItem(AreaId, DecorateId int) ([]*item.Item, int, []*item.Item) {
|
||||
Item := decorateCfg.GetStarCost(AreaId, DecorateId)
|
||||
PetExp := decorateCfg.GetDecoratePExp(AreaId, DecorateId)
|
||||
Id := decorateCfg.GetIdBySenceAndLv(AreaId, DecorateId)
|
||||
Items := []*item.Item{item.NewItem(item.ITEM_STAR_ID, Item)}
|
||||
PartItem := d.PartCost[Id]
|
||||
PartItemList := make([]*item.Item, 0)
|
||||
if PartItem != nil {
|
||||
Items = append(Items, PartItem.Items...)
|
||||
PartItemList = PartItem.Items
|
||||
delete(d.PartCost, Id)
|
||||
}
|
||||
if len(d.PartCost) == 0 {
|
||||
d.initPartCost(d.AreaId + 1)
|
||||
}
|
||||
return Items, PetExp
|
||||
return Items, PetExp, PartItemList
|
||||
}
|
||||
|
||||
func (d *Decorate) DecorateAll(Star int) ([]*item.Item, []*item.Item, int, []int, []interface{}, int) {
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -24,9 +24,10 @@ type FriendMod struct {
|
||||
}
|
||||
|
||||
type BubbleInfo struct {
|
||||
Id int // 气泡ID
|
||||
Time int64 // 气泡时间
|
||||
Type int
|
||||
Id int // 气泡ID
|
||||
Time int64 // 气泡时间
|
||||
Type int
|
||||
ItemList []*item.Item // 奖励物品
|
||||
}
|
||||
|
||||
type FriendInfo struct {
|
||||
@ -272,30 +273,34 @@ func (f *FriendMod) AddLog(Uid, Type int, Param string) int {
|
||||
})
|
||||
switch Type {
|
||||
case LOG_TYPE_HANDBOOK_UPVOTE:
|
||||
f.AddBubble(f.AutoId, Type)
|
||||
f.AddBubble(f.AutoId, Type, nil)
|
||||
case LOG_TYPE_PLAYROOM_UPVOTE:
|
||||
f.AddBubble(f.AutoId, Type)
|
||||
f.AddBubble(f.AutoId, Type, nil)
|
||||
case LOG_TYPE_TREASURE_HELP:
|
||||
f.AddBubble(f.AutoId, Type)
|
||||
ItemNum := GoUtil.RandNum(2, 5)
|
||||
ItemList := []*item.Item{item.NewItem(item.ITEM_STAR_ID, ItemNum)}
|
||||
f.AddBubble(f.AutoId, Type, ItemList)
|
||||
}
|
||||
if len(f.Log) > 30 {
|
||||
f.Log = f.Log[len(f.Log)-30:]
|
||||
}
|
||||
return f.AutoId
|
||||
}
|
||||
func (f *FriendMod) AddBubble(Id, Type int) {
|
||||
func (f *FriendMod) AddBubble(Id, Type int, ItemList []*item.Item) {
|
||||
f.Bubble[Id] = &BubbleInfo{
|
||||
Id: Id,
|
||||
Time: GoUtil.Now(),
|
||||
Type: Type,
|
||||
Id: Id,
|
||||
Time: GoUtil.Now(),
|
||||
Type: Type,
|
||||
ItemList: ItemList,
|
||||
}
|
||||
}
|
||||
|
||||
func (f *FriendMod) GetBubbble(Id int) *msg.FriendBubbleInfo {
|
||||
if v, ok := f.Bubble[Id]; ok {
|
||||
return &msg.FriendBubbleInfo{
|
||||
Id: int32(v.Id),
|
||||
Type: int32(v.Type),
|
||||
Id: int32(v.Id),
|
||||
Type: int32(v.Type),
|
||||
Items: item.ItemToMsg(v.ItemList),
|
||||
}
|
||||
}
|
||||
return nil
|
||||
@ -305,8 +310,9 @@ func (f *FriendMod) BubbleBackData() *msg.ResFriendBubble {
|
||||
rs := make([]*msg.FriendBubbleInfo, 0, len(f.Bubble))
|
||||
for _, v := range f.Bubble {
|
||||
rs = append(rs, &msg.FriendBubbleInfo{
|
||||
Id: int32(v.Id),
|
||||
Type: int32(v.Type),
|
||||
Id: int32(v.Id),
|
||||
Type: int32(v.Type),
|
||||
Items: item.ItemToMsg(v.ItemList),
|
||||
})
|
||||
}
|
||||
return &msg.ResFriendBubble{
|
||||
@ -351,6 +357,8 @@ func (f *FriendMod) GetReward(Id int) ([]*item.Item, error) {
|
||||
reward = append(reward, item.NewItem(item.ITEM_ENERGY_ID, 5))
|
||||
case LOG_TYPE_PLAYROOM_UPVOTE:
|
||||
reward = append(reward, item.NewItem(item.ITEM_ENERGY_ID, 5))
|
||||
case LOG_TYPE_TREASURE_HELP:
|
||||
reward = append(reward, info.ItemList...)
|
||||
default:
|
||||
return nil, fmt.Errorf("log type not support")
|
||||
}
|
||||
|
||||
@ -10,13 +10,14 @@ import (
|
||||
)
|
||||
|
||||
type FriendTreasureMod struct {
|
||||
Star int // 星级
|
||||
Shift int // 挡位
|
||||
Pos []int
|
||||
List map[int]*msg.TreasureInfo
|
||||
List2 []int32 // 选择的好友
|
||||
Uids []int64
|
||||
Status int
|
||||
Star int // 星级
|
||||
Shift int // 挡位
|
||||
Pos []int
|
||||
List map[int]*msg.TreasureInfo
|
||||
List2 []int32 // 选择的好友
|
||||
Uids []int64
|
||||
Status int
|
||||
BoxItems []*item.Item
|
||||
}
|
||||
|
||||
const (
|
||||
@ -70,7 +71,11 @@ func (f *FriendTreasureMod) Flip(Pos int) ([]*item.Item, int64, error) {
|
||||
ProbMap := friendTreasureCfg.GetChestProb()
|
||||
Prob := GoUtil.RandMap(ProbMap)
|
||||
Info.Status = GAME_STATUS_START
|
||||
return friendTreasureCfg.GetChestItems(Prob), Info.Uid, nil
|
||||
Items := friendTreasureCfg.GetChestItems(Prob)
|
||||
if Items == nil {
|
||||
f.BoxItems = append(f.BoxItems, Items...)
|
||||
}
|
||||
return Items, Info.Uid, nil
|
||||
}
|
||||
Info.Status = GAME_STATUS_START
|
||||
return nil, 0, nil
|
||||
@ -91,10 +96,15 @@ func (f *FriendTreasureMod) EndGame() ([]*item.Item, int, error) {
|
||||
BigReward := friendTreasureCfg.GetBigReward()
|
||||
Reward = append(Reward, BigReward...)
|
||||
}
|
||||
|
||||
return Reward, FriendItemNum, nil
|
||||
}
|
||||
|
||||
func (f *FriendTreasureMod) ResetGame() {
|
||||
f.Star = 0
|
||||
f.Shift = 0
|
||||
f.Status = GAME_STATUS_END
|
||||
return Reward, FriendItemNum, nil
|
||||
f.BoxItems = []*item.Item{}
|
||||
}
|
||||
|
||||
func (f *FriendTreasureMod) NotifyStar() *msg.ResFriendTreasureStar {
|
||||
|
||||
@ -22,6 +22,9 @@ const (
|
||||
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
|
||||
)
|
||||
|
||||
const (
|
||||
|
||||
@ -350,13 +350,14 @@ func (l *LimitedTimeEventMod) AddProgress(Lv int) {
|
||||
}
|
||||
|
||||
// 选择进度奖励
|
||||
func (l *LimitedTimeEventMod) SelectProgressReward(Id, Lv, Energy int) ([]*item.Item, int, int, error) {
|
||||
func (l *LimitedTimeEventMod) SelectProgressReward(Id, Lv, Energy int) ([]*item.Item, int, int, map[int]int, error) {
|
||||
RewardId, ok := l.ProgressReward[Id]
|
||||
RewardList := l.ProgressReward
|
||||
if !ok {
|
||||
return nil, 0, 0, fmt.Errorf("RewardId not exist")
|
||||
return nil, 0, 0, nil, fmt.Errorf("RewardId not exist")
|
||||
}
|
||||
r2 := l.ProgressMax
|
||||
Item := limitedTimeEventCfg.GetProgressReward(RewardId)
|
||||
OrderNum := l.ProgressMax
|
||||
l.LastSelect = RewardId
|
||||
l.ProgressReward = make(map[int]int)
|
||||
l.Progress = 0
|
||||
@ -389,7 +390,7 @@ func (l *LimitedTimeEventMod) SelectProgressReward(Id, Lv, Energy int) ([]*item.
|
||||
}
|
||||
l.LastOption = r
|
||||
l.FirstReward = true
|
||||
return Item, limitedTimeEventCfg.GetProgressRewardType(RewardId), r2, nil
|
||||
return Item, limitedTimeEventCfg.GetProgressRewardType(RewardId), OrderNum, RewardList, nil
|
||||
}
|
||||
|
||||
func (l *LimitedTimeEventMod) RemoveSuperOrder() bool {
|
||||
|
||||
@ -20,16 +20,19 @@ type OrderMod struct {
|
||||
LastOrder Order // 上一个订单
|
||||
LastNormalOrder Order // 上一个普通订单
|
||||
EimtOrder map[string]struct{}
|
||||
PreheatStep map[string]int // 预热订单步骤
|
||||
EmitShuffle []string // 发射器乱序
|
||||
ColorShuffle []string // 棋子系列乱序
|
||||
LastColor string // 上次生成订单的棋子系列
|
||||
ChessPool []int // 棋子池
|
||||
OrderPool map[int]*Order // 订单池
|
||||
FinishOrder []int // 已完成订单
|
||||
IsCharge bool // 是否充值
|
||||
AutoEmit []string // 自动发射器
|
||||
LastChess int // 上次生成订单的棋子
|
||||
PreheatStep map[string]int // 预热订单步骤
|
||||
EmitShuffle []string // 发射器乱序
|
||||
ColorShuffle []string // 棋子系列乱序
|
||||
LastColor string // 上次生成订单的棋子系列
|
||||
ChessPool []int // 棋子池
|
||||
ChessPool2 map[string][]int // 按系列分类的棋子池
|
||||
OrderPool map[int]*Order // 订单池
|
||||
FinishOrder []int // 已完成订单
|
||||
IsCharge bool // 是否充值
|
||||
AutoEmit []string // 自动发射器
|
||||
LastChess int // 上次生成订单的棋子
|
||||
NextDiff int // 下次订单难度
|
||||
ComfortEndTime int
|
||||
}
|
||||
|
||||
type Order struct {
|
||||
@ -42,6 +45,12 @@ type Order struct {
|
||||
Items []*item.Item // 奖励物品
|
||||
}
|
||||
|
||||
var PreheatItems = map[int][]*item.Item{
|
||||
1: {item.NewItem(item.ITEM_ENERGY_GIFT_ID, 1)},
|
||||
2: {item.NewItem(item.ITEM_DIAMOND_LV2_ID, 1)},
|
||||
3: {item.NewItem(item.ITEM_LAUNCHER_lOW_ID, 1)},
|
||||
}
|
||||
|
||||
const (
|
||||
Common_type = 1 // 普通订单
|
||||
Extra_type = 2 // 额外订单 弃用
|
||||
@ -86,6 +95,9 @@ func (o *OrderMod) InitData() {
|
||||
delete(o.OrderList, k)
|
||||
}
|
||||
}
|
||||
if o.ChessPool2 == nil {
|
||||
o.ChessPool2 = make(map[string][]int)
|
||||
}
|
||||
if o.Auto_id == 0 {
|
||||
o.Auto_id = 10000
|
||||
}
|
||||
@ -118,6 +130,12 @@ func (o *OrderMod) RewardOrder(id int) ([]*item.Item, []int, int, int, error) {
|
||||
if v.Type == Fixed_type || v.Type == Playroom_type {
|
||||
o.FinishOrder = append(o.FinishOrder, id)
|
||||
}
|
||||
if GoUtil.InArray(78, o.FinishOrder) {
|
||||
o.AutoEmit, _ = GoUtil.PopStringElemSlice(o.AutoEmit, "D")
|
||||
}
|
||||
if GoUtil.InArray(79, o.FinishOrder) {
|
||||
o.AutoEmit, _ = GoUtil.PopStringElemSlice(o.AutoEmit, "I")
|
||||
}
|
||||
return ItemList, v.MergeId, v.Type, Star, nil
|
||||
}
|
||||
return ItemList, MergeList, 0, 0, fmt.Errorf("订单不存在, 订单id%d", id)
|
||||
@ -227,9 +245,6 @@ func (o *OrderMod) TriggerOrder(lv int, Type string, Emit []int, EnergyMul int)
|
||||
}
|
||||
}
|
||||
}
|
||||
if lv >= 12 {
|
||||
o.CreateOrder(lv, Emit, EnergyMul)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -289,7 +304,7 @@ func (o *OrderMod) CheckCondition(lv int, condition, Type string, Emit []int, Fi
|
||||
}
|
||||
|
||||
// 生成新订单
|
||||
func (o *OrderMod) CreateOrder(lv int, Emit []int, EnergyMul int) error {
|
||||
func (o *OrderMod) CreateOrder(lv int, Emit []int, EnergyMul, OrderType int) error {
|
||||
if len(Emit) == 0 {
|
||||
return nil
|
||||
}
|
||||
@ -297,20 +312,8 @@ func (o *OrderMod) CreateOrder(lv int, Emit []int, EnergyMul int) error {
|
||||
if o.CreatePriorityOrder(lv, Emit) {
|
||||
return nil
|
||||
}
|
||||
MaxOrderNum := orderCfg.GetOrderNum(lv)
|
||||
n := 0
|
||||
for _, v := range o.OrderList {
|
||||
if v.Type == Common_type || v.Type == Clean_type || v.Type == Pet_type || v.Type == Part_type || v.Type == Fixed_type || v.Type == Preview_type {
|
||||
n++
|
||||
}
|
||||
}
|
||||
for i := n; i < MaxOrderNum; i++ {
|
||||
err := o.CreateNormalOrder(lv, Emit, EnergyMul)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
err := o.CreateNormalOrder(lv, Emit, EnergyMul, OrderType)
|
||||
return err
|
||||
}
|
||||
|
||||
func (o *OrderMod) CreatePriorityOrder(lv int, Emit []int) bool {
|
||||
@ -403,7 +406,7 @@ func (o *OrderMod) CreateNormalOrderSeed(lv int, Emit []int, EnergyMul int, Diff
|
||||
}
|
||||
|
||||
// 生成新订单
|
||||
func (o *OrderMod) CreateNormalOrder(lv int, Emit []int, EnergyMul int) error {
|
||||
func (o *OrderMod) CreateNormalOrder(lv int, Emit []int, EnergyMul, OrderType int) error {
|
||||
if len(Emit) == 0 {
|
||||
return nil
|
||||
}
|
||||
@ -416,7 +419,7 @@ func (o *OrderMod) CreateNormalOrder(lv int, Emit []int, EnergyMul int) error {
|
||||
break
|
||||
}
|
||||
randNum++
|
||||
mergeList, OrderDiff, err = randOrderChess(o, lv, Emit, EnergyMul)
|
||||
mergeList, OrderDiff, err = randOrderChess(o, lv, Emit, EnergyMul, OrderType)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
@ -433,19 +436,12 @@ func (o *OrderMod) CreateNormalOrder(lv int, Emit []int, EnergyMul int) error {
|
||||
}
|
||||
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("订单生成失败,重复颜色")
|
||||
// }
|
||||
// }
|
||||
|
||||
// }
|
||||
o.addOrder(mergeList, OrderDiff, Common_type)
|
||||
for _, v := range mergeList {
|
||||
if v == 0 {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
o.addOrder(mergeList, OrderDiff, OrderType)
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -483,6 +479,28 @@ func (o *OrderMod) CreateSuperOrder(lv int, Emit []int, EnergyMul int) error {
|
||||
o.addOrder(mergeList, OrderDiff, Super_type)
|
||||
return nil
|
||||
}
|
||||
func (o *OrderMod) addOrder(ChessList []int, Diff int, Type int) int {
|
||||
o.Auto_id++
|
||||
Order := Order{
|
||||
MergeId: ChessList,
|
||||
Diff: Diff,
|
||||
Type: Type,
|
||||
Timestamp: time.Now().Unix(),
|
||||
Items: nil,
|
||||
}
|
||||
o.OrderList[o.Auto_id] = Order
|
||||
if Type == Common_type {
|
||||
o.LastNormalOrder = Order
|
||||
}
|
||||
o.LastDiff = Diff
|
||||
return o.Auto_id
|
||||
}
|
||||
func (o *OrderMod) AddExtraOrder(ChessList []int) {
|
||||
o.addOrder(ChessList, DIFF_LOW, Extra_type)
|
||||
}
|
||||
func (o *OrderMod) AddFixOrder(Id int, ChessList []int, Type int, Items []*item.Item) {
|
||||
o.addFixOrder(Id, ChessList, Type, Items)
|
||||
}
|
||||
func (o *OrderMod) addFixOrder(Id int, ChessList []int, Type int, Items []*item.Item) {
|
||||
Order := Order{
|
||||
MergeId: ChessList,
|
||||
@ -492,13 +510,11 @@ func (o *OrderMod) addFixOrder(Id int, ChessList []int, Type int, Items []*item.
|
||||
}
|
||||
o.OrderList[Id] = Order
|
||||
}
|
||||
func (o *OrderMod) addOrder(ChessList []int, Diff int, Type int) int {
|
||||
func (o *OrderMod) AddPreheatOrder(ChessList []int, Diff int, Type int, Items []*item.Item) int {
|
||||
return o.addPreheatOrder(ChessList, Diff, Type, Items)
|
||||
}
|
||||
func (o *OrderMod) addPreheatOrder(ChessList []int, Diff int, Type int, Items []*item.Item) int {
|
||||
o.Auto_id++
|
||||
Star := GetOrderStar(ChessList)
|
||||
Items := make([]*item.Item, 0)
|
||||
if Type != Common_type && Type != Super_type {
|
||||
Items = []*item.Item{item.NewItem(item.ITEM_STAR_ID, Star)}
|
||||
}
|
||||
Order := Order{
|
||||
MergeId: ChessList,
|
||||
Diff: Diff,
|
||||
@ -507,10 +523,6 @@ func (o *OrderMod) addOrder(ChessList []int, Diff int, Type int) int {
|
||||
Items: Items,
|
||||
}
|
||||
o.OrderList[o.Auto_id] = Order
|
||||
if Type == Common_type {
|
||||
o.LastNormalOrder = Order
|
||||
}
|
||||
o.LastDiff = Diff
|
||||
return o.Auto_id
|
||||
}
|
||||
|
||||
@ -556,7 +568,7 @@ func (o *OrderMod) CreateExtraOrder(AddChess, AddNewEmit, ChessList []int, Energ
|
||||
//额外订单补充2;当玩家的棋盘中出现三个相同的满级产物时,立刻生成一个对应的收购订单;
|
||||
for k := range MaxLvChess {
|
||||
ChessNum := GoUtil.GetElemNum(ChessList, k)
|
||||
if ChessNum == 3 && Level >= 12 {
|
||||
if ChessNum >= 3 && Level >= 12 {
|
||||
b2 := true
|
||||
for _, v := range o.OrderList {
|
||||
if GoUtil.SliceEqual(v.MergeId, []int{k, k, k}) {
|
||||
@ -579,7 +591,8 @@ func (o *OrderMod) CreateExtraOrder(AddChess, AddNewEmit, ChessList []int, Energ
|
||||
ChessId := mergeDataCfg.GetChessIdByLvAndColor(EnergyMul+1, ChessColor[0])
|
||||
if ChessId != 0 {
|
||||
o.PreheatStep[ChessColor[0]] = 1
|
||||
o.addOrder([]int{ChessId}, DIFF_LOW, Preheat_type)
|
||||
Items := PreheatItems[1]
|
||||
o.addPreheatOrder([]int{ChessId}, DIFF_LOW, Preheat_type, Items)
|
||||
}
|
||||
}
|
||||
return b1 || b3
|
||||
@ -624,7 +637,6 @@ func (o *OrderMod) CheckSuperOrder() bool {
|
||||
* 根据能量倍数 调整订单
|
||||
*/
|
||||
func (o *OrderMod) ChangeEnergyMul(lv int, Emit []int, EnergyMul int, ChessList []int) {
|
||||
|
||||
for k, v := range o.OrderList {
|
||||
if v.Type == Preheat_type { // 预热订单 修改倍数时修改棋子等级
|
||||
ChessId := v.MergeId[0]
|
||||
@ -635,7 +647,11 @@ func (o *OrderMod) ChangeEnergyMul(lv int, Emit []int, EnergyMul int, ChessList
|
||||
continue
|
||||
}
|
||||
delete(o.OrderList, k)
|
||||
o.addOrder([]int{NewChessId}, DIFF_LOW, Preheat_type)
|
||||
Items, ok := PreheatItems[PreheatStep]
|
||||
if !ok {
|
||||
Items = []*item.Item{item.NewItem(item.ITEM_STAR_ID, GetOrderStar([]int{NewChessId}, Emit))}
|
||||
}
|
||||
o.addPreheatOrder([]int{NewChessId}, DIFF_LOW, Preheat_type, Items)
|
||||
}
|
||||
}
|
||||
|
||||
@ -668,14 +684,14 @@ func (o *OrderMod) ChangeEnergyMul(lv int, Emit []int, EnergyMul int, ChessList
|
||||
*/
|
||||
if NeedTrigger {
|
||||
delete(o.OrderList, k)
|
||||
o.CreateNormalOrder(lv, Emit, EnergyMul)
|
||||
o.CreateNormalOrder(lv, Emit, EnergyMul, v.Type)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (o *OrderMod) Retire(EmitId string) {
|
||||
ChessPool := make([]int, 0)
|
||||
Product := mergeDataCfg.GetEmitProduce(EmitId)
|
||||
Product := mergeDataCfg.GetEmitOrderProduce(EmitId)
|
||||
for _, v := range o.ChessPool {
|
||||
Color := mergeDataCfg.GetColorById(v)
|
||||
if GoUtil.InStringArray(Color, Product) {
|
||||
|
||||
@ -1,14 +1,94 @@
|
||||
package order
|
||||
|
||||
import (
|
||||
"math"
|
||||
"server/GoUtil"
|
||||
mergeDataCfg "server/conf/mergeData"
|
||||
orderCfg "server/conf/order"
|
||||
userCfg "server/conf/user"
|
||||
"sort"
|
||||
)
|
||||
|
||||
var reflectChess = map[int]int{} // 棋子难度映射表
|
||||
|
||||
var orderCfgMap = map[int]orderConfig{
|
||||
1: {
|
||||
Min: 15,
|
||||
Max: 150,
|
||||
Pool: map[int]orderConfigInfo{
|
||||
1: {lv: 5, energy: 16, t: 0},
|
||||
2: {lv: 6, energy: 32, t: 0},
|
||||
3: {lv: 7, energy: 64, t: 0},
|
||||
4: {lv: 8, energy: 128, t: 0},
|
||||
},
|
||||
},
|
||||
2: {
|
||||
Min: 20,
|
||||
Max: 300,
|
||||
Pool: map[int]orderConfigInfo{
|
||||
2: {lv: 6, energy: 32, t: 0},
|
||||
3: {lv: 7, energy: 64, t: 0},
|
||||
4: {lv: 8, energy: 128, t: 0},
|
||||
},
|
||||
},
|
||||
3: {
|
||||
Min: 40,
|
||||
Max: 400,
|
||||
Pool: map[int]orderConfigInfo{
|
||||
1: {lv: 5, energy: 16, t: 0},
|
||||
2: {lv: 6, energy: 32, t: 0},
|
||||
3: {lv: 7, energy: 64, t: 0},
|
||||
4: {lv: 8, energy: 128, t: 0},
|
||||
5: {lv: 9, energy: 256, t: 0},
|
||||
},
|
||||
},
|
||||
4: {
|
||||
Min: 40,
|
||||
Max: 200,
|
||||
Pool: map[int]orderConfigInfo{
|
||||
1: {lv: 5, energy: 16, t: 1},
|
||||
2: {lv: 6, energy: 32, t: 1},
|
||||
3: {lv: 7, energy: 64, t: 0},
|
||||
4: {lv: 8, energy: 128, t: 0},
|
||||
},
|
||||
},
|
||||
5: {
|
||||
Min: 100,
|
||||
Max: 600,
|
||||
Pool: map[int]orderConfigInfo{
|
||||
1: {lv: 6, energy: 32, t: 1},
|
||||
2: {lv: 7, energy: 64, t: 1},
|
||||
3: {lv: 8, energy: 128, t: 0},
|
||||
4: {lv: 9, energy: 256, t: 0},
|
||||
5: {lv: 10, energy: 512, t: 0},
|
||||
},
|
||||
},
|
||||
6: {
|
||||
Min: 500,
|
||||
Max: 1200,
|
||||
Pool: map[int]orderConfigInfo{
|
||||
1: {lv: 6, energy: 32, t: 1},
|
||||
2: {lv: 7, energy: 64, t: 1},
|
||||
3: {lv: 8, energy: 128, t: 0},
|
||||
4: {lv: 9, energy: 256, t: 0},
|
||||
5: {lv: 10, energy: 512, t: 0},
|
||||
6: {lv: 11, energy: 1024, t: 0},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
type orderConfig struct {
|
||||
Min int
|
||||
Max int
|
||||
Pool map[int]orderConfigInfo
|
||||
}
|
||||
|
||||
type orderConfigInfo struct {
|
||||
lv int
|
||||
energy int
|
||||
t int
|
||||
}
|
||||
|
||||
// 订单棋子数量
|
||||
func getChessNumRand(OrderN int) map[int]int {
|
||||
return map[int]int{
|
||||
@ -19,8 +99,23 @@ func getChessNumRand(OrderN int) map[int]int {
|
||||
}
|
||||
|
||||
// 根据上一个订单难度和系数 生成订单难度
|
||||
func getOrderDiffRand(Diff, OrderN int) map[int]int {
|
||||
func getOrderDiffRand(Lv, Diff, OrderN int) map[int]int {
|
||||
var d map[int]int
|
||||
if Lv < 24 {
|
||||
switch Diff {
|
||||
case DIFF_MID:
|
||||
d = map[int]int{
|
||||
DIFF_LOW: 50,
|
||||
DIFF_MID: 50,
|
||||
}
|
||||
default:
|
||||
d = map[int]int{
|
||||
DIFF_LOW: 30,
|
||||
DIFF_MID: 70,
|
||||
}
|
||||
}
|
||||
return d
|
||||
}
|
||||
switch Diff {
|
||||
case DIFF_MID:
|
||||
d = map[int]int{
|
||||
@ -44,6 +139,32 @@ func getOrderDiffRand(Diff, OrderN int) map[int]int {
|
||||
return d
|
||||
}
|
||||
|
||||
func getChessByDiff(Lv, Diff, Type int) (int, int, int) {
|
||||
if Type == Common_type {
|
||||
switch Diff {
|
||||
case DIFF_MID:
|
||||
return 100, 600, GoUtil.RandMap(map[int]int{1: 50, 2: 50})
|
||||
case DIFF_HIGH:
|
||||
return 500, 1200, GoUtil.RandMap(map[int]int{1: 33, 2: 67})
|
||||
default:
|
||||
if Lv < 23 {
|
||||
return 15, 150, GoUtil.RandMap(map[int]int{1: 67, 2: 33})
|
||||
}
|
||||
return 30, 200, GoUtil.RandMap(map[int]int{1: 67, 2: 33})
|
||||
}
|
||||
}
|
||||
if Type == Pet_type {
|
||||
return 40, 200, GoUtil.RandMap(map[int]int{1: 50, 2: 50})
|
||||
}
|
||||
if Type == Part_type {
|
||||
return 100, 600, GoUtil.RandMap(map[int]int{1: 50, 2: 50})
|
||||
}
|
||||
if Type == COMFORT_TYPE {
|
||||
return 15, 150, GoUtil.RandMap(map[int]int{1: 33, 2: 67})
|
||||
}
|
||||
return 100, 600, GoUtil.RandMap(map[int]int{1: 50, 2: 50})
|
||||
}
|
||||
|
||||
// 根据订单难度生成棋子难度
|
||||
func getChessDiff(ChessNum, OrderDiff, OrderN int) map[int]int {
|
||||
var rs map[int]int
|
||||
@ -194,14 +315,38 @@ func getChessLv(Min, Max, Diff int) int {
|
||||
func getChessLvRange(Min, Max, Diff int) []int {
|
||||
Start := Min
|
||||
End := Max
|
||||
switch Diff {
|
||||
case DIFF_LOW:
|
||||
End = Min + (Max-Min+1)/3 - 1
|
||||
case DIFF_MID:
|
||||
Start = Min + (Max-Min+1)/3
|
||||
End = Min + (Max-Min+1)/3*2 - 1
|
||||
case DIFF_HIGH:
|
||||
Start = Min + (Max-Min+1)/3*2
|
||||
if Max-Min >= 5 {
|
||||
switch Diff {
|
||||
case DIFF_LOW:
|
||||
End = Min + (Max-Min+1)/3 - 1
|
||||
case DIFF_MID:
|
||||
Start = Min + (Max-Min+1)/3
|
||||
End = Min + (Max-Min+1)/3*2 - 1
|
||||
case DIFF_HIGH:
|
||||
Start = Min + (Max-Min+1)/3*2
|
||||
}
|
||||
}
|
||||
if Max-Min == 4 {
|
||||
switch Diff {
|
||||
case DIFF_LOW:
|
||||
End = Min + 1
|
||||
case DIFF_MID:
|
||||
Start = Min + 2
|
||||
End = Min + 3
|
||||
case DIFF_HIGH:
|
||||
Start = Min + 4
|
||||
}
|
||||
}
|
||||
if Max-Min == 3 {
|
||||
switch Diff {
|
||||
case DIFF_LOW:
|
||||
End = Min + 1
|
||||
case DIFF_MID:
|
||||
Start = Min + 2
|
||||
End = Min + 2
|
||||
case DIFF_HIGH:
|
||||
Start = Min + 3
|
||||
}
|
||||
}
|
||||
Start = max(Min, Start)
|
||||
End = max(Start, End)
|
||||
@ -242,13 +387,13 @@ func getChesslvRange(Emit int, EnergyMul int, IsCharge bool) (int, int) {
|
||||
RandEmitMinLv := mergeDataCfg.GetEmitMinLvById(EmitId)
|
||||
Ratio := mergeDataCfg.GetEmitRatio(EmitId)
|
||||
m := int(float64(1+RandEmitLv-RandEmitMinLv) / float64(1+RandMaxLv-RandEmitMinLv) / Ratio * 100)
|
||||
if IsCharge {
|
||||
m += 10
|
||||
}
|
||||
m = max(1, m)
|
||||
m = min(100, m)
|
||||
ChessMinLev := orderCfg.GetLvMin(EnergyMul)
|
||||
ChessMaxLev := orderCfg.GetLvMax(EnergyMul, m)
|
||||
ProductList := mergeDataCfg.GetEmitProduceType(Emit)
|
||||
ChessMaxLev = ChessMaxLev - len(ProductList) + 2
|
||||
if IsCharge {
|
||||
ChessMaxLev += 1
|
||||
}
|
||||
return ChessMinLev, ChessMaxLev
|
||||
}
|
||||
|
||||
@ -337,39 +482,25 @@ func randOrderChessWithDiff(o *OrderMod, lv int, Emit []int, EnergyMul, OrderDif
|
||||
}
|
||||
|
||||
// 随机生成订单棋子
|
||||
func randOrderChess(o *OrderMod, lv int, Emit []int, EnergyMul int) ([]int, int, error) {
|
||||
func randOrderChess(o *OrderMod, lv int, Emit []int, EnergyMul, OrderType int) ([]int, int, error) {
|
||||
initReflectChess(Emit, EnergyMul)
|
||||
filterPool(o)
|
||||
OrderN, err := userCfg.GetOrderNByLv(lv)
|
||||
RandChessNum := getChessNumRand(OrderN)
|
||||
//RandChessNum := getChessNumRand(OrderN)
|
||||
if err != nil {
|
||||
return nil, DIFF_LOW, err
|
||||
}
|
||||
// 生成订单难度和棋子数量
|
||||
ChessNum := GoUtil.RandMap(RandChessNum)
|
||||
OrderDiffRand := getOrderDiffRand(o.LastDiff, OrderN)
|
||||
//ChessNum := GoUtil.RandMap(RandChessNum)
|
||||
OrderDiffRand := getOrderDiffRand(lv, o.LastDiff, OrderN)
|
||||
OrderDiff := GoUtil.RandMap(OrderDiffRand)
|
||||
ChessDiff := getChessDiff(ChessNum, OrderDiff, OrderN)
|
||||
mergeList := make([]int, 0, len(ChessDiff))
|
||||
// 根据订单棋子难度生成棋子
|
||||
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)
|
||||
if o.NextDiff != 0 {
|
||||
OrderDiff = o.NextDiff
|
||||
o.NextDiff = 0
|
||||
}
|
||||
//获取订单体力范围和棋子数量
|
||||
MinEnergy, MaxEnergy, ChessNum := getChessByDiff(lv, OrderDiff, OrderType)
|
||||
mergeList := getChessFromPoolByEnergy(o, MinEnergy, MaxEnergy, ChessNum, Emit, EnergyMul, OrderDiff)
|
||||
return mergeList, OrderDiff, nil
|
||||
}
|
||||
|
||||
@ -418,17 +549,27 @@ 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))
|
||||
for _, v := range List {
|
||||
if mergeDataCfg.GetEmitProductNumByColor(v) == 1 {
|
||||
List3 = append(List3, v)
|
||||
} else {
|
||||
List2 = append(List2, v)
|
||||
}
|
||||
}
|
||||
|
||||
for {
|
||||
Break++
|
||||
if Break > 1000 {
|
||||
break
|
||||
}
|
||||
Same := false
|
||||
NewList := GoUtil.ShuffleStringArray(List)
|
||||
if NewList[0] == Last {
|
||||
continue
|
||||
}
|
||||
NewList := GoUtil.ShuffleStringArray(List2)
|
||||
for i := 1; i < len(NewList); i++ {
|
||||
BeforeSries := mergeDataCfg.GetEmitTypeByColor(NewList[i-1])
|
||||
NowSries := mergeDataCfg.GetEmitTypeByColor(NewList[i])
|
||||
@ -436,8 +577,23 @@ func ShuffleColor(List []string, Last string) []string {
|
||||
Same = true
|
||||
break
|
||||
}
|
||||
|
||||
}
|
||||
// 将 List3 随机插入 NewList 中
|
||||
if len(List3) > 0 {
|
||||
for _, v := range GoUtil.ShuffleStringArray(List3) {
|
||||
idx := GoUtil.RandNum(0, len(NewList))
|
||||
if idx >= len(NewList) {
|
||||
NewList = append(NewList, v)
|
||||
} else {
|
||||
NewList = append(NewList[:idx+1], NewList[idx:]...)
|
||||
NewList[idx] = v
|
||||
}
|
||||
}
|
||||
}
|
||||
if NewList[0] == Last {
|
||||
continue
|
||||
}
|
||||
|
||||
if !Same {
|
||||
return NewList
|
||||
}
|
||||
@ -470,24 +626,43 @@ func ShuffleColor(List []string, Last string) []string {
|
||||
|
||||
// 获取发射器系列
|
||||
func getEmitSeries(o *OrderMod, Emit []int) string {
|
||||
if o.ColorShuffle == nil {
|
||||
ColorShuffle := make([]string, 0)
|
||||
for _, v := range Emit {
|
||||
EmitId := mergeDataCfg.GetEmitId(v)
|
||||
if GoUtil.InStringArray(EmitId, o.AutoEmit) {
|
||||
continue
|
||||
}
|
||||
EmitProduct := mergeDataCfg.GetEmitProduceType(v)
|
||||
if len(EmitProduct) == 0 || EmitProduct[0] == "" {
|
||||
continue
|
||||
}
|
||||
ColorShuffle = append(ColorShuffle, EmitProduct...)
|
||||
o.initColorShuffle(Emit)
|
||||
PopEmitId := ""
|
||||
NewSlice := make([]string, 0)
|
||||
ChessColorNum := map[string]int{}
|
||||
for _, v := range o.OrderList {
|
||||
for _, c := range v.MergeId {
|
||||
Color := mergeDataCfg.GetColorById(c)
|
||||
ChessColorNum[Color]++
|
||||
}
|
||||
}
|
||||
Break := 0
|
||||
for {
|
||||
if Break > 1000 {
|
||||
break
|
||||
}
|
||||
Break++
|
||||
PopEmitId, NewSlice = GoUtil.PopStringArray(o.ColorShuffle)
|
||||
o.ColorShuffle = NewSlice
|
||||
if PopEmitId == "" {
|
||||
o.initColorShuffle(Emit)
|
||||
continue
|
||||
}
|
||||
PopEmitIdProductNum := mergeDataCfg.GetEmitProductNumByColor(PopEmitId)
|
||||
o.initColorShuffle(Emit)
|
||||
if PopEmitIdProductNum == 1 && ChessColorNum[PopEmitId] >= 2 {
|
||||
continue
|
||||
} else {
|
||||
break
|
||||
}
|
||||
o.ColorShuffle = ShuffleColor(ColorShuffle, o.LastColor)
|
||||
}
|
||||
PopEmitId, NewSlice := GoUtil.PopStringArray(o.ColorShuffle)
|
||||
o.ColorShuffle = NewSlice
|
||||
o.LastColor = PopEmitId
|
||||
o.initColorShuffle(Emit)
|
||||
return PopEmitId
|
||||
}
|
||||
|
||||
func (o *OrderMod) initColorShuffle(Emit []int) {
|
||||
if len(o.ColorShuffle) == 0 {
|
||||
ColorShuffle := make([]string, 0)
|
||||
for _, v := range Emit {
|
||||
@ -496,21 +671,34 @@ func getEmitSeries(o *OrderMod, Emit []int) string {
|
||||
continue
|
||||
}
|
||||
EmitProduct := mergeDataCfg.GetEmitProduceType(v)
|
||||
|
||||
if len(EmitProduct) == 0 || EmitProduct[0] == "" {
|
||||
continue
|
||||
}
|
||||
Preheat, ok := o.PreheatStep[EmitProduct[0]]
|
||||
// 预热订单未全部完成 排除
|
||||
if ok && Preheat < 5 {
|
||||
continue
|
||||
}
|
||||
ColorShuffle = append(ColorShuffle, EmitProduct...)
|
||||
}
|
||||
o.ColorShuffle = ShuffleColor(ColorShuffle, o.LastColor)
|
||||
}
|
||||
return PopEmitId
|
||||
}
|
||||
|
||||
// 订单能获取的宠物币
|
||||
func GetOrderStar(ChessList []int) int {
|
||||
func GetOrderStar(ChessList []int, EmitList []int) int {
|
||||
Star := 0
|
||||
for _, v := range ChessList {
|
||||
Star += mergeDataCfg.GetStarById(v)
|
||||
ChessLv := mergeDataCfg.GetLvById(v)
|
||||
Color := mergeDataCfg.GetColorById(v)
|
||||
EmitId := GetEmitByColor(EmitList, Color)
|
||||
if EmitId == 0 {
|
||||
continue
|
||||
}
|
||||
NewChessLv := mergeDataCfg.DynamicLevRev(ChessLv, EmitId, Color)
|
||||
n := orderCfg.GetOrderK(NewChessLv)
|
||||
Star += n
|
||||
}
|
||||
return Star
|
||||
}
|
||||
@ -528,6 +716,155 @@ func GetChessByDiff(EmitId, EnergyMul, Diff int, Color string) []int {
|
||||
}
|
||||
return GoUtil.UniqueInts(ChessIds)
|
||||
}
|
||||
func (o *OrderMod) getChessLvFromConfig1(MinEnergy, MaxEnergy, MinLv, MaxLv, LastEnergy int) []int {
|
||||
rand := []int{}
|
||||
t := 0
|
||||
if LastEnergy > 0 {
|
||||
t = 1
|
||||
}
|
||||
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 && t >= info.t {
|
||||
rand = append(rand, info.lv)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if len(rand) == 0 {
|
||||
return rand
|
||||
}
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
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) ChessPoolChess(Color string, Lv int) bool {
|
||||
for _, v := range o.ChessPool2[Color] {
|
||||
if v > Lv {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (o *OrderMod) getFromPool(Emit int, Color string, Lv int) {
|
||||
for i, v := range o.ChessPool2[Color] {
|
||||
if v == Lv {
|
||||
o.ChessPool2[Color] = append(o.ChessPool2[Color][:i], o.ChessPool2[Color][i+1:]...)
|
||||
return
|
||||
}
|
||||
}
|
||||
for i, v := range o.ChessPool2[Color] {
|
||||
if v > Lv {
|
||||
o.ChessPool2[Color] = append(o.ChessPool2[Color][:i], o.ChessPool2[Color][i+1:]...)
|
||||
for k := Lv; k < v; k++ {
|
||||
o.ChessPool2[Color] = append(o.ChessPool2[Color], k)
|
||||
}
|
||||
return
|
||||
}
|
||||
}
|
||||
Product := mergeDataCfg.GetEmitProduceType(Emit)
|
||||
if len(Product) < 2 {
|
||||
return
|
||||
}
|
||||
for _, v := range Product {
|
||||
if Color == v {
|
||||
continue
|
||||
}
|
||||
o.ChessPool2[Color] = append(o.ChessPool2[Color], Lv)
|
||||
}
|
||||
}
|
||||
|
||||
func (o *OrderMod) getChessIdPool(Emit []int, Color string, EnergyMul, Lv, MinEnergy, MaxEnergy, OrderDiff, LastEnergy int) (int, int) {
|
||||
ChessLv := 0
|
||||
EmitChessId := getEmitBySeries(Emit, Color)
|
||||
ChessMinLv, ChessMaxLv := getChesslvRange(EmitChessId, EnergyMul, o.IsCharge)
|
||||
ChessLvRand := o.getChessLvFromConfig1(MinEnergy, MaxEnergy, ChessMinLv, ChessMaxLv, LastEnergy)
|
||||
Pool := o.ChessPool2[Color]
|
||||
ChessLvRand2 := make([]int, 0)
|
||||
for _, v := range ChessLvRand {
|
||||
if GoUtil.InArray(v, Pool) {
|
||||
ChessLvRand2 = append(ChessLvRand2, v)
|
||||
}
|
||||
}
|
||||
if len(ChessLvRand2) > 0 {
|
||||
ChessLv = GoUtil.RandSlice(ChessLvRand2)
|
||||
}
|
||||
sort.Ints(ChessLvRand)
|
||||
if len(ChessLvRand) > 0 && len(ChessLvRand2) == 0 && o.ChessPoolChess(Color, ChessLvRand[len(ChessLvRand)-1]) {
|
||||
ChessLv = ChessLvRand[len(ChessLvRand)-1]
|
||||
}
|
||||
if len(ChessLvRand) > 0 && len(ChessLvRand2) == 0 && !o.ChessPoolChess(Color, ChessLvRand[len(ChessLvRand)-1]) && len(ChessLvRand) > 0 {
|
||||
ChessLv = GoUtil.RandSlice(ChessLvRand)
|
||||
}
|
||||
if ChessLv == 0 {
|
||||
ChessLv = 6
|
||||
o.NextDiff = OrderDiff
|
||||
}
|
||||
o.getFromPool(EmitChessId, Color, ChessLv)
|
||||
NewLev := mergeDataCfg.DynamicLev(ChessLv, EmitChessId, Color)
|
||||
MaxLev := mergeDataCfg.GetMaxLvByColor(Color)
|
||||
NewLev1 := adjustLev(NewLev, EnergyMul)
|
||||
NewLev2 := min(NewLev1, MaxLev)
|
||||
Chess := mergeDataCfg.GetChessIdByLvAndColor(NewLev2, Color)
|
||||
if Chess == 0 {
|
||||
Chess = mergeDataCfg.GetChessIdByLvAndColor(6, Color)
|
||||
}
|
||||
return Chess, ChessLv
|
||||
}
|
||||
func getChessFromPoolByEnergy(o *OrderMod, MinEnergy, MaxEnergy, ChessNum int, Emit []int, EnergyMul, OrderDiff int) []int {
|
||||
ColorArr := make([]string, 0)
|
||||
for i := 0; i < ChessNum; i++ {
|
||||
ColorArr = append(ColorArr, getEmitSeries(o, Emit))
|
||||
}
|
||||
ChessArr := make([]int, 0)
|
||||
if len(ColorArr) == 1 {
|
||||
Chess, _ := o.getChessIdPool(Emit, ColorArr[0], EnergyMul, 0, MinEnergy, MaxEnergy, OrderDiff, 0)
|
||||
if Chess == 0 {
|
||||
Chess = mergeDataCfg.GetChessIdByLvAndColor(6, ColorArr[0])
|
||||
}
|
||||
return []int{Chess}
|
||||
}
|
||||
if len(ColorArr) == 2 {
|
||||
Chess1, Chess1Lv := o.getChessIdPool(Emit, ColorArr[0], EnergyMul, 0, MinEnergy, MaxEnergy, OrderDiff, 0)
|
||||
if Chess1 == 0 {
|
||||
Chess1 = mergeDataCfg.GetChessIdByLvAndColor(6, ColorArr[0])
|
||||
}
|
||||
Energy := int(math.Pow(2, float64(Chess1Lv-1)))
|
||||
Chess2, _ := o.getChessIdPool(Emit, ColorArr[1], EnergyMul, 0, MinEnergy, MaxEnergy, OrderDiff, Energy)
|
||||
return []int{Chess1, Chess2}
|
||||
}
|
||||
|
||||
return ChessArr
|
||||
}
|
||||
|
||||
// 从棋子池中获取棋子
|
||||
func getChessFromPoolByDiff(o *OrderMod, Diff int, Emit []int, EnergyMul int) int {
|
||||
@ -640,10 +977,29 @@ func initReflectChess2(Color string, Start, End, Diff, adjust int) {
|
||||
reflectChess[ChessId] = Diff
|
||||
}
|
||||
}
|
||||
func AdjustLev(Lev, EnergyMul int) int {
|
||||
return adjustLev(Lev, EnergyMul)
|
||||
}
|
||||
|
||||
// 调整棋子等级
|
||||
func adjustLev(Lev, EnergyMul int) int {
|
||||
return max(min(Lev, EnergyMul+12), EnergyMul+1)
|
||||
randMapList := map[int]map[int]int{
|
||||
1: {},
|
||||
2: {0: 30, 1: 70},
|
||||
3: {1: 90, 2: 10},
|
||||
4: {1: 30, 2: 70},
|
||||
5: {2: 40, 3: 60},
|
||||
6: {2: 10, 3: 50, 4: 40},
|
||||
7: {3: 20, 4: 40, 5: 40},
|
||||
8: {4: 40, 5: 60},
|
||||
9: {4: 20, 5: 40, 6: 40},
|
||||
10: {5: 40, 6: 60},
|
||||
11: {5: 20, 6: 70, 7: 10},
|
||||
}
|
||||
if v, ok := randMapList[EnergyMul]; ok {
|
||||
Lev += GoUtil.RandMap(v)
|
||||
}
|
||||
return Lev
|
||||
}
|
||||
|
||||
// 获取发射器系列
|
||||
|
||||
@ -24,6 +24,7 @@ type StartOrderData struct {
|
||||
Step int `json:"step"`
|
||||
Appear string `json:"appear"`
|
||||
Preview string `json:"preview"`
|
||||
Group int `json:"group"`
|
||||
Items []*item.Item
|
||||
}
|
||||
|
||||
|
||||
@ -536,6 +536,7 @@ const (
|
||||
ORDER_TYPE_Pet_type ORDER_TYPE = 11 // 宠物订单
|
||||
ORDER_TYPE_Preview_type ORDER_TYPE = 12 // 预览订单
|
||||
ORDER_TYPE_Fixed_type ORDER_TYPE = 13 // 修复订单
|
||||
ORDER_TYPE_Playroom_type ORDER_TYPE = 14 // playroom订单
|
||||
)
|
||||
|
||||
// Enum value maps for ORDER_TYPE.
|
||||
@ -555,6 +556,7 @@ var (
|
||||
11: "Pet_type",
|
||||
12: "Preview_type",
|
||||
13: "Fixed_type",
|
||||
14: "Playroom_type",
|
||||
}
|
||||
ORDER_TYPE_value = map[string]int32{
|
||||
"ORDER_TYPE_DEFAULT": 0,
|
||||
@ -571,6 +573,7 @@ var (
|
||||
"Pet_type": 11,
|
||||
"Preview_type": 12,
|
||||
"Fixed_type": 13,
|
||||
"Playroom_type": 14,
|
||||
}
|
||||
)
|
||||
|
||||
@ -682,6 +685,7 @@ const (
|
||||
TIME_LINE_TYPE_LOG_TYPE_PLAYROOM_CAT_LOSE TIME_LINE_TYPE = 27 // 小猫游戏,装箱小猫未成功
|
||||
TIME_LINE_TYPE_LOG_TYPE_CARD_GIVE_ACCEPT TIME_LINE_TYPE = 28 // 接受卡牌请求
|
||||
TIME_LINE_TYPE_LOG_TYPE_FRIEND_INVITE TIME_LINE_TYPE = 29 // 邀请注册
|
||||
TIME_LINE_TYPE_LOG_TYPE_TREASURE_HELP TIME_LINE_TYPE = 30 // 宠物宝藏帮助
|
||||
)
|
||||
|
||||
// Enum value maps for TIME_LINE_TYPE.
|
||||
@ -715,6 +719,7 @@ var (
|
||||
27: "LOG_TYPE_PLAYROOM_CAT_LOSE",
|
||||
28: "LOG_TYPE_CARD_GIVE_ACCEPT",
|
||||
29: "LOG_TYPE_FRIEND_INVITE",
|
||||
30: "LOG_TYPE_TREASURE_HELP",
|
||||
}
|
||||
TIME_LINE_TYPE_value = map[string]int32{
|
||||
"DEFAULT": 0,
|
||||
@ -745,6 +750,7 @@ var (
|
||||
"LOG_TYPE_PLAYROOM_CAT_LOSE": 27,
|
||||
"LOG_TYPE_CARD_GIVE_ACCEPT": 28,
|
||||
"LOG_TYPE_FRIEND_INVITE": 29,
|
||||
"LOG_TYPE_TREASURE_HELP": 30,
|
||||
}
|
||||
)
|
||||
|
||||
@ -3199,7 +3205,7 @@ type ResPlayerChessInfo struct {
|
||||
ChessBag *ChessBag `protobuf:"bytes,3,opt,name=ChessBag,proto3" json:"ChessBag,omitempty"`
|
||||
RetireEmit []string `protobuf:"bytes,4,rep,name=RetireEmit,proto3" json:"RetireEmit,omitempty"`
|
||||
Honor []int32 `protobuf:"varint,5,rep,packed,name=Honor,proto3" json:"Honor,omitempty"`
|
||||
PartBag *PartBag `protobuf:"bytes,6,opt,name=PartBag,proto3" json:"PartBag,omitempty"`
|
||||
PartBag *PartBag `protobuf:"bytes,6,opt,name=PartBag,proto3" json:"PartBag,omitempty"` // 满级零件
|
||||
unknownFields protoimpl.UnknownFields
|
||||
sizeCache protoimpl.SizeCache
|
||||
}
|
||||
@ -13189,8 +13195,9 @@ func (x *NotifyFriendLog) GetBubble() *FriendBubbleInfo {
|
||||
|
||||
type FriendBubbleInfo struct {
|
||||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 气泡id
|
||||
Type int32 `protobuf:"varint,2,opt,name=Type,proto3" json:"Type,omitempty"` // 气泡类型 1:普通 2:
|
||||
Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 气泡id
|
||||
Type int32 `protobuf:"varint,2,opt,name=Type,proto3" json:"Type,omitempty"` // 气泡类型 1:普通 2:
|
||||
Items []*ItemInfo `protobuf:"bytes,3,rep,name=Items,proto3" json:"Items,omitempty"` // 奖励
|
||||
unknownFields protoimpl.UnknownFields
|
||||
sizeCache protoimpl.SizeCache
|
||||
}
|
||||
@ -13239,6 +13246,13 @@ func (x *FriendBubbleInfo) GetType() int32 {
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *FriendBubbleInfo) GetItems() []*ItemInfo {
|
||||
if x != nil {
|
||||
return x.Items
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type NotifyFriendCard struct {
|
||||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
Info *ResFriendCard `protobuf:"bytes,1,opt,name=Info,proto3" json:"Info,omitempty"`
|
||||
@ -15909,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
|
||||
}
|
||||
@ -16034,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
|
||||
@ -26825,10 +26847,11 @@ const file_proto_Gameapi_proto_rawDesc = "" +
|
||||
"\x06Upvote\x18\x06 \x01(\bR\x06Upvote\"q\n" +
|
||||
"\x0fNotifyFriendLog\x12*\n" +
|
||||
"\x04info\x18\x01 \x01(\v2\x16.tutorial.ResFriendLogR\x04info\x122\n" +
|
||||
"\x06Bubble\x18\x02 \x01(\v2\x1a.tutorial.FriendBubbleInfoR\x06Bubble\"6\n" +
|
||||
"\x06Bubble\x18\x02 \x01(\v2\x1a.tutorial.FriendBubbleInfoR\x06Bubble\"`\n" +
|
||||
"\x10FriendBubbleInfo\x12\x0e\n" +
|
||||
"\x02Id\x18\x01 \x01(\x05R\x02Id\x12\x12\n" +
|
||||
"\x04Type\x18\x02 \x01(\x05R\x04Type\"?\n" +
|
||||
"\x04Type\x18\x02 \x01(\x05R\x04Type\x12(\n" +
|
||||
"\x05Items\x18\x03 \x03(\v2\x12.tutorial.ItemInfoR\x05Items\"?\n" +
|
||||
"\x10NotifyFriendCard\x12+\n" +
|
||||
"\x04Info\x18\x01 \x01(\v2\x17.tutorial.ResFriendCardR\x04Info\"\x91\x02\n" +
|
||||
"\rResFriendCard\x12\x10\n" +
|
||||
@ -26995,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" +
|
||||
@ -27010,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" +
|
||||
@ -27843,7 +27867,7 @@ const file_proto_Gameapi_proto_rawDesc = "" +
|
||||
"\x14ACT_TYPE_GUESS_COLOR\x10\x02\x12\x11\n" +
|
||||
"\rACT_TYPE_RACE\x10\x03\x12\x1a\n" +
|
||||
"\x16ACT_TYPE_DISCOUNT_GIFT\x10\x04\x12\x15\n" +
|
||||
"\x11ACT_TYPE_ADD_GIFT\x10\x05*\x82\x02\n" +
|
||||
"\x11ACT_TYPE_ADD_GIFT\x10\x05*\x95\x02\n" +
|
||||
"\n" +
|
||||
"ORDER_TYPE\x12\x16\n" +
|
||||
"\x12ORDER_TYPE_DEFAULT\x10\x00\x12\x0f\n" +
|
||||
@ -27865,13 +27889,14 @@ const file_proto_Gameapi_proto_rawDesc = "" +
|
||||
"\bPet_type\x10\v\x12\x10\n" +
|
||||
"\fPreview_type\x10\f\x12\x0e\n" +
|
||||
"\n" +
|
||||
"Fixed_type\x10\r*A\n" +
|
||||
"Fixed_type\x10\r\x12\x11\n" +
|
||||
"\rPlayroom_type\x10\x0e*A\n" +
|
||||
"\n" +
|
||||
"LOGIN_TYPE\x12\x11\n" +
|
||||
"\rACCOUNT_LOGIN\x10\x00\x12\x0e\n" +
|
||||
"\n" +
|
||||
"CODE_LOGIN\x10\x01\x12\x10\n" +
|
||||
"\fDEVICE_LOGIN\x10\x02*\x9d\x06\n" +
|
||||
"\fDEVICE_LOGIN\x10\x02*\xb9\x06\n" +
|
||||
"\x0eTIME_LINE_TYPE\x12\v\n" +
|
||||
"\aDEFAULT\x10\x00\x12\x19\n" +
|
||||
"\x15LOG_TYPE_FRIEND_APPLY\x10\x01\x12\x1a\n" +
|
||||
@ -27901,7 +27926,8 @@ const file_proto_Gameapi_proto_rawDesc = "" +
|
||||
"\x19LOG_TYPE_PLAYROOM_CAT_WIN\x10\x1a\x12\x1e\n" +
|
||||
"\x1aLOG_TYPE_PLAYROOM_CAT_LOSE\x10\x1b\x12\x1d\n" +
|
||||
"\x19LOG_TYPE_CARD_GIVE_ACCEPT\x10\x1c\x12\x1a\n" +
|
||||
"\x16LOG_TYPE_FRIEND_INVITE\x10\x1d*\x9b\x01\n" +
|
||||
"\x16LOG_TYPE_FRIEND_INVITE\x10\x1d\x12\x1a\n" +
|
||||
"\x16LOG_TYPE_TREASURE_HELP\x10\x1e*\x9b\x01\n" +
|
||||
"\rCHESS_EX_TYPE\x12\x11\n" +
|
||||
"\rCHESS_EX_NONE\x10\x00\x12\x13\n" +
|
||||
"\x0fCHESS_EX_BUBBLE\x10\x01\x12\x10\n" +
|
||||
@ -28592,169 +28618,170 @@ var file_proto_Gameapi_proto_depIdxs = []int32{
|
||||
225, // 123: tutorial.ResFriendLog.Player:type_name -> tutorial.ResPlayerSimple
|
||||
227, // 124: tutorial.NotifyFriendLog.info:type_name -> tutorial.ResFriendLog
|
||||
229, // 125: tutorial.NotifyFriendLog.Bubble:type_name -> tutorial.FriendBubbleInfo
|
||||
231, // 126: tutorial.NotifyFriendCard.Info:type_name -> tutorial.ResFriendCard
|
||||
494, // 127: tutorial.ResKv.kv:type_name -> tutorial.ResKv.KvEntry
|
||||
2, // 128: tutorial.ResFriendByCode.Code:type_name -> tutorial.RES_CODE
|
||||
225, // 129: tutorial.ResFriendByCode.Player:type_name -> tutorial.ResPlayerSimple
|
||||
225, // 130: tutorial.ResFriendRecommend.List:type_name -> tutorial.ResPlayerSimple
|
||||
2, // 131: tutorial.ResFriendIgnore.Code:type_name -> tutorial.RES_CODE
|
||||
225, // 132: tutorial.ResFriendList.FriendList:type_name -> tutorial.ResPlayerSimple
|
||||
2, // 133: tutorial.ResAddNpc.Code:type_name -> tutorial.RES_CODE
|
||||
246, // 134: tutorial.ResFriendApply.ApplyList:type_name -> tutorial.ResFriendApplyInfo
|
||||
225, // 135: tutorial.ResFriendApplyInfo.Player:type_name -> tutorial.ResPlayerSimple
|
||||
231, // 136: tutorial.ResFriendCardMsg.MsgList:type_name -> tutorial.ResFriendCard
|
||||
246, // 137: tutorial.ResWishApplyList.ApplyList:type_name -> tutorial.ResFriendApplyInfo
|
||||
2, // 138: tutorial.ResWishApply.Code:type_name -> tutorial.RES_CODE
|
||||
227, // 139: tutorial.ResFriendTimeLine.Log:type_name -> tutorial.ResFriendLog
|
||||
229, // 140: tutorial.ResFriendBubble.Bubble:type_name -> tutorial.FriendBubbleInfo
|
||||
2, // 141: tutorial.ResFriendTLUpvote.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 142: tutorial.ResFriendTReward.Code:type_name -> tutorial.RES_CODE
|
||||
225, // 143: tutorial.ResFriendApplyNotify.Player:type_name -> tutorial.ResPlayerSimple
|
||||
2, // 144: tutorial.ResApplyFriend.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 145: tutorial.ResAgreeFriend.Code:type_name -> tutorial.RES_CODE
|
||||
225, // 146: tutorial.ResAgreeFriend.Player:type_name -> tutorial.ResPlayerSimple
|
||||
2, // 147: tutorial.ResRefuseFriend.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 148: tutorial.ResDelFriend.Code:type_name -> tutorial.RES_CODE
|
||||
495, // 149: tutorial.ResRank.RankList:type_name -> tutorial.ResRank.RankListEntry
|
||||
496, // 150: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry
|
||||
164, // 151: tutorial.MailInfo.Items:type_name -> tutorial.ItemInfo
|
||||
273, // 152: tutorial.MailNotify.Info:type_name -> tutorial.MailInfo
|
||||
2, // 153: tutorial.ResReadMail.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 154: tutorial.ResGetMailReward.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 155: tutorial.ResDeleteMail.Code:type_name -> tutorial.RES_CODE
|
||||
497, // 156: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry
|
||||
498, // 157: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry
|
||||
499, // 158: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry
|
||||
282, // 159: tutorial.ResCharge.Wish:type_name -> tutorial.WishList
|
||||
2, // 160: tutorial.ResAddWish.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 161: tutorial.ResGetWish.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 162: tutorial.ResSendWishBeg.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 163: tutorial.ResFreeShop.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 164: tutorial.ResBuyChessShop.Code:type_name -> tutorial.RES_CODE
|
||||
500, // 165: tutorial.ReqBuyChessShop2.mChessData:type_name -> tutorial.ReqBuyChessShop2.MChessDataEntry
|
||||
2, // 166: tutorial.ResBuyChessShop2.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 167: tutorial.ResRefreshChessShop.Code:type_name -> tutorial.RES_CODE
|
||||
501, // 168: tutorial.ResEndless.EndlessList:type_name -> tutorial.ResEndless.EndlessListEntry
|
||||
164, // 169: tutorial.ResEndlessInfo.Items:type_name -> tutorial.ItemInfo
|
||||
2, // 170: tutorial.ResEndlessReward.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 171: tutorial.ResPiggyBankReward.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 172: tutorial.ResChargeReceive.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 173: tutorial.ResShippingOrder.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 174: tutorial.ResChampshipReward.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 175: tutorial.ResChampshipRankReward.Code:type_name -> tutorial.RES_CODE
|
||||
502, // 176: tutorial.ResChampshipRank.RankList:type_name -> tutorial.ResChampshipRank.RankListEntry
|
||||
503, // 177: tutorial.ResChampshipPreRank.RankList:type_name -> tutorial.ResChampshipPreRank.RankListEntry
|
||||
504, // 178: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry
|
||||
505, // 179: tutorial.ResNotifyCard.Master:type_name -> tutorial.ResNotifyCard.MasterEntry
|
||||
506, // 180: tutorial.ResNotifyCard.Handbook:type_name -> tutorial.ResNotifyCard.HandbookEntry
|
||||
2, // 181: tutorial.ResSetFacebookUrl.Code:type_name -> tutorial.RES_CODE
|
||||
507, // 182: tutorial.ResMining.Map:type_name -> tutorial.ResMining.MapEntry
|
||||
508, // 183: tutorial.ReqMiningTake.Map:type_name -> tutorial.ReqMiningTake.MapEntry
|
||||
2, // 184: tutorial.ResMiningTake.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 185: tutorial.ResMiningReward.Code:type_name -> tutorial.RES_CODE
|
||||
509, // 186: tutorial.ResActRed.Red:type_name -> tutorial.ResActRed.RedEntry
|
||||
200, // 187: tutorial.ActivityNotify.Info:type_name -> tutorial.ActivityInfo
|
||||
510, // 188: tutorial.ResItem.Item:type_name -> tutorial.ResItem.ItemEntry
|
||||
511, // 189: tutorial.ItemNotify.Item:type_name -> tutorial.ItemNotify.ItemEntry
|
||||
352, // 190: tutorial.ResGuessColor.MapList:type_name -> tutorial.GuessColorInfo
|
||||
512, // 191: tutorial.ResGuessColor.OMap:type_name -> tutorial.ResGuessColor.OMapEntry
|
||||
350, // 192: tutorial.ResGuessColor.Opponent:type_name -> tutorial.opponent
|
||||
352, // 193: tutorial.ReqGuessColorTake.Map:type_name -> tutorial.GuessColorInfo
|
||||
513, // 194: tutorial.ReqGuessColorTake.OMap:type_name -> tutorial.ReqGuessColorTake.OMapEntry
|
||||
514, // 195: tutorial.GuessColorInfo.Map:type_name -> tutorial.GuessColorInfo.MapEntry
|
||||
2, // 196: tutorial.ResGuessColorTake.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 197: tutorial.ResGuessColorReward.Code:type_name -> tutorial.RES_CODE
|
||||
358, // 198: tutorial.ResRace.Opponent:type_name -> tutorial.raceopponent
|
||||
2, // 199: tutorial.ResRaceStart.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 200: tutorial.ResRaceReward.Code:type_name -> tutorial.RES_CODE
|
||||
164, // 201: tutorial.ResPlayroom.Items:type_name -> tutorial.ItemInfo
|
||||
392, // 202: tutorial.ResPlayroom.Opponent:type_name -> tutorial.RoomOpponent
|
||||
391, // 203: tutorial.ResPlayroom.Friend:type_name -> tutorial.FriendRoom
|
||||
515, // 204: tutorial.ResPlayroom.Playroom:type_name -> tutorial.ResPlayroom.PlayroomEntry
|
||||
377, // 205: tutorial.ResPlayroom.collect:type_name -> tutorial.PlayroomCollectInfo
|
||||
516, // 206: tutorial.ResPlayroom.Mood:type_name -> tutorial.ResPlayroom.MoodEntry
|
||||
164, // 207: tutorial.ResPlayroom.LoseItem:type_name -> tutorial.ItemInfo
|
||||
387, // 208: tutorial.ResPlayroom.Chip:type_name -> tutorial.ChipInfo
|
||||
517, // 209: tutorial.ResPlayroom.Physiology:type_name -> tutorial.ResPlayroom.PhysiologyEntry
|
||||
518, // 210: tutorial.ResPlayroom.Dress:type_name -> tutorial.ResPlayroom.DressEntry
|
||||
519, // 211: tutorial.ResPlayroom.DressSet:type_name -> tutorial.ResPlayroom.DressSetEntry
|
||||
376, // 212: tutorial.ResPlayroom.PetAir:type_name -> tutorial.PlayroomAirInfo
|
||||
174, // 213: tutorial.ResPlayroom.DailyTask:type_name -> tutorial.DailyTask
|
||||
389, // 214: tutorial.ResPlayroom.AdItem:type_name -> tutorial.AdItem
|
||||
391, // 215: tutorial.ResPlayroom.Target:type_name -> tutorial.FriendRoom
|
||||
174, // 216: tutorial.NotifyPlayroomTask.DailyTask:type_name -> tutorial.DailyTask
|
||||
2, // 217: tutorial.ResPlayroomTask.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 218: tutorial.ResPlayroomTaskReward.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 219: tutorial.ResPlayroomUnlock.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 220: tutorial.ResPlayroomUpvote.Code:type_name -> tutorial.RES_CODE
|
||||
375, // 221: tutorial.PlayroomDress.List:type_name -> tutorial.PlayroomDressInfo
|
||||
520, // 222: tutorial.ReqPlayroomDressSet.DressSet:type_name -> tutorial.ReqPlayroomDressSet.DressSetEntry
|
||||
2, // 223: tutorial.ResPlayroomDressSet.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 224: tutorial.ResPlayroomPetAirSet.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 225: tutorial.ResPlayroomWrokOutline.Code:type_name -> tutorial.RES_CODE
|
||||
164, // 226: tutorial.NotifyPlayroomLose.LoseItem:type_name -> tutorial.ItemInfo
|
||||
387, // 227: tutorial.NotifyPlayroomLose.Chip:type_name -> tutorial.ChipInfo
|
||||
521, // 228: tutorial.NotifyPlayroomMood.Mood:type_name -> tutorial.NotifyPlayroomMood.MoodEntry
|
||||
522, // 229: tutorial.NotifyPlayroomMood.Physiology:type_name -> tutorial.NotifyPlayroomMood.PhysiologyEntry
|
||||
389, // 230: tutorial.NotifyPlayroomMood.AdItem:type_name -> tutorial.AdItem
|
||||
523, // 231: tutorial.ResPlayroomInfo.Playroom:type_name -> tutorial.ResPlayroomInfo.PlayroomEntry
|
||||
524, // 232: tutorial.ResPlayroomInfo.Items:type_name -> tutorial.ResPlayroomInfo.ItemsEntry
|
||||
525, // 233: tutorial.ResPlayroomInfo.flip:type_name -> tutorial.ResPlayroomInfo.FlipEntry
|
||||
526, // 234: tutorial.ResPlayroomInfo.Emoji:type_name -> tutorial.ResPlayroomInfo.EmojiEntry
|
||||
527, // 235: tutorial.ResPlayroomInfo.DressSet:type_name -> tutorial.ResPlayroomInfo.DressSetEntry
|
||||
2, // 236: tutorial.ResPlayroomFlip.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 237: tutorial.ResPlayroomGuide.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 238: tutorial.ResPlayroomFlipReward.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 239: tutorial.ResPlayroomGame.Code:type_name -> tutorial.RES_CODE
|
||||
528, // 240: tutorial.ResPlayroomGame.Items:type_name -> tutorial.ResPlayroomGame.ItemsEntry
|
||||
164, // 241: tutorial.ResPlayroomGameShowReward.Items:type_name -> tutorial.ItemInfo
|
||||
2, // 242: tutorial.ResPlayroomInteract.Code:type_name -> tutorial.RES_CODE
|
||||
529, // 243: tutorial.ReqPlayroomSetRoom.Playroom:type_name -> tutorial.ReqPlayroomSetRoom.PlayroomEntry
|
||||
2, // 244: tutorial.ResPlayroomSetRoom.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 245: tutorial.ResPlayroomSelectReward.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 246: tutorial.ResPlayroomLose.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 247: tutorial.ResPlayroomWork.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 248: tutorial.ResPlayroomRest.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 249: tutorial.ResPlayroomDraw.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 250: tutorial.ResPlayroomChip.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 251: tutorial.ResPlayroomBuyItem.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 252: tutorial.ResPlayroomShop.Code:type_name -> tutorial.RES_CODE
|
||||
427, // 253: tutorial.ResFriendTreasure.List:type_name -> tutorial.TreasureInfo
|
||||
427, // 254: tutorial.ReqFriendTreasureStart.List:type_name -> tutorial.TreasureInfo
|
||||
2, // 255: tutorial.ResFriendTreasureStart.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 256: tutorial.ResFriendTreasureEnd.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 257: tutorial.ResFriendTreasureFilp.Code:type_name -> tutorial.RES_CODE
|
||||
438, // 258: tutorial.ResCollectInfo.Items:type_name -> tutorial.CollectItem
|
||||
164, // 259: tutorial.CollectItem.Items:type_name -> tutorial.ItemInfo
|
||||
2, // 260: tutorial.ResCollect.Code:type_name -> tutorial.RES_CODE
|
||||
443, // 261: tutorial.ResCatnip.GameList:type_name -> tutorial.CatnipGame
|
||||
225, // 262: tutorial.CatnipGame.Partner:type_name -> tutorial.ResPlayerSimple
|
||||
2, // 263: tutorial.ResCatnipInvite.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 264: tutorial.ResCatnipAgree.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 265: tutorial.ResCatnipRefuse.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 266: tutorial.ResCatnipMultiply.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 267: tutorial.ResCatnipPlay.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 268: tutorial.ResCatnipReward.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 269: tutorial.ResCatnipGrandReward.Code:type_name -> tutorial.RES_CODE
|
||||
167, // 270: tutorial.ResGuideTask.TaskEntry.value:type_name -> tutorial.GuideTask
|
||||
173, // 271: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek
|
||||
174, // 272: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask
|
||||
210, // 273: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent
|
||||
225, // 274: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple
|
||||
273, // 275: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo
|
||||
289, // 276: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop
|
||||
290, // 277: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop
|
||||
301, // 278: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo
|
||||
226, // 279: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank
|
||||
226, // 280: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank
|
||||
374, // 281: tutorial.ResPlayroom.DressEntry.value:type_name -> tutorial.PlayroomDress
|
||||
164, // 282: tutorial.ResPlayroomInfo.ItemsEntry.value:type_name -> tutorial.ItemInfo
|
||||
164, // 283: tutorial.ResPlayroomGame.ItemsEntry.value:type_name -> tutorial.ItemInfo
|
||||
284, // [284:284] is the sub-list for method output_type
|
||||
284, // [284:284] is the sub-list for method input_type
|
||||
284, // [284:284] is the sub-list for extension type_name
|
||||
284, // [284:284] is the sub-list for extension extendee
|
||||
0, // [0:284] is the sub-list for field type_name
|
||||
164, // 126: tutorial.FriendBubbleInfo.Items:type_name -> tutorial.ItemInfo
|
||||
231, // 127: tutorial.NotifyFriendCard.Info:type_name -> tutorial.ResFriendCard
|
||||
494, // 128: tutorial.ResKv.kv:type_name -> tutorial.ResKv.KvEntry
|
||||
2, // 129: tutorial.ResFriendByCode.Code:type_name -> tutorial.RES_CODE
|
||||
225, // 130: tutorial.ResFriendByCode.Player:type_name -> tutorial.ResPlayerSimple
|
||||
225, // 131: tutorial.ResFriendRecommend.List:type_name -> tutorial.ResPlayerSimple
|
||||
2, // 132: tutorial.ResFriendIgnore.Code:type_name -> tutorial.RES_CODE
|
||||
225, // 133: tutorial.ResFriendList.FriendList:type_name -> tutorial.ResPlayerSimple
|
||||
2, // 134: tutorial.ResAddNpc.Code:type_name -> tutorial.RES_CODE
|
||||
246, // 135: tutorial.ResFriendApply.ApplyList:type_name -> tutorial.ResFriendApplyInfo
|
||||
225, // 136: tutorial.ResFriendApplyInfo.Player:type_name -> tutorial.ResPlayerSimple
|
||||
231, // 137: tutorial.ResFriendCardMsg.MsgList:type_name -> tutorial.ResFriendCard
|
||||
246, // 138: tutorial.ResWishApplyList.ApplyList:type_name -> tutorial.ResFriendApplyInfo
|
||||
2, // 139: tutorial.ResWishApply.Code:type_name -> tutorial.RES_CODE
|
||||
227, // 140: tutorial.ResFriendTimeLine.Log:type_name -> tutorial.ResFriendLog
|
||||
229, // 141: tutorial.ResFriendBubble.Bubble:type_name -> tutorial.FriendBubbleInfo
|
||||
2, // 142: tutorial.ResFriendTLUpvote.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 143: tutorial.ResFriendTReward.Code:type_name -> tutorial.RES_CODE
|
||||
225, // 144: tutorial.ResFriendApplyNotify.Player:type_name -> tutorial.ResPlayerSimple
|
||||
2, // 145: tutorial.ResApplyFriend.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 146: tutorial.ResAgreeFriend.Code:type_name -> tutorial.RES_CODE
|
||||
225, // 147: tutorial.ResAgreeFriend.Player:type_name -> tutorial.ResPlayerSimple
|
||||
2, // 148: tutorial.ResRefuseFriend.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 149: tutorial.ResDelFriend.Code:type_name -> tutorial.RES_CODE
|
||||
495, // 150: tutorial.ResRank.RankList:type_name -> tutorial.ResRank.RankListEntry
|
||||
496, // 151: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry
|
||||
164, // 152: tutorial.MailInfo.Items:type_name -> tutorial.ItemInfo
|
||||
273, // 153: tutorial.MailNotify.Info:type_name -> tutorial.MailInfo
|
||||
2, // 154: tutorial.ResReadMail.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 155: tutorial.ResGetMailReward.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 156: tutorial.ResDeleteMail.Code:type_name -> tutorial.RES_CODE
|
||||
497, // 157: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry
|
||||
498, // 158: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry
|
||||
499, // 159: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry
|
||||
282, // 160: tutorial.ResCharge.Wish:type_name -> tutorial.WishList
|
||||
2, // 161: tutorial.ResAddWish.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 162: tutorial.ResGetWish.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 163: tutorial.ResSendWishBeg.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 164: tutorial.ResFreeShop.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 165: tutorial.ResBuyChessShop.Code:type_name -> tutorial.RES_CODE
|
||||
500, // 166: tutorial.ReqBuyChessShop2.mChessData:type_name -> tutorial.ReqBuyChessShop2.MChessDataEntry
|
||||
2, // 167: tutorial.ResBuyChessShop2.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 168: tutorial.ResRefreshChessShop.Code:type_name -> tutorial.RES_CODE
|
||||
501, // 169: tutorial.ResEndless.EndlessList:type_name -> tutorial.ResEndless.EndlessListEntry
|
||||
164, // 170: tutorial.ResEndlessInfo.Items:type_name -> tutorial.ItemInfo
|
||||
2, // 171: tutorial.ResEndlessReward.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 172: tutorial.ResPiggyBankReward.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 173: tutorial.ResChargeReceive.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 174: tutorial.ResShippingOrder.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 175: tutorial.ResChampshipReward.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 176: tutorial.ResChampshipRankReward.Code:type_name -> tutorial.RES_CODE
|
||||
502, // 177: tutorial.ResChampshipRank.RankList:type_name -> tutorial.ResChampshipRank.RankListEntry
|
||||
503, // 178: tutorial.ResChampshipPreRank.RankList:type_name -> tutorial.ResChampshipPreRank.RankListEntry
|
||||
504, // 179: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry
|
||||
505, // 180: tutorial.ResNotifyCard.Master:type_name -> tutorial.ResNotifyCard.MasterEntry
|
||||
506, // 181: tutorial.ResNotifyCard.Handbook:type_name -> tutorial.ResNotifyCard.HandbookEntry
|
||||
2, // 182: tutorial.ResSetFacebookUrl.Code:type_name -> tutorial.RES_CODE
|
||||
507, // 183: tutorial.ResMining.Map:type_name -> tutorial.ResMining.MapEntry
|
||||
508, // 184: tutorial.ReqMiningTake.Map:type_name -> tutorial.ReqMiningTake.MapEntry
|
||||
2, // 185: tutorial.ResMiningTake.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 186: tutorial.ResMiningReward.Code:type_name -> tutorial.RES_CODE
|
||||
509, // 187: tutorial.ResActRed.Red:type_name -> tutorial.ResActRed.RedEntry
|
||||
200, // 188: tutorial.ActivityNotify.Info:type_name -> tutorial.ActivityInfo
|
||||
510, // 189: tutorial.ResItem.Item:type_name -> tutorial.ResItem.ItemEntry
|
||||
511, // 190: tutorial.ItemNotify.Item:type_name -> tutorial.ItemNotify.ItemEntry
|
||||
352, // 191: tutorial.ResGuessColor.MapList:type_name -> tutorial.GuessColorInfo
|
||||
512, // 192: tutorial.ResGuessColor.OMap:type_name -> tutorial.ResGuessColor.OMapEntry
|
||||
350, // 193: tutorial.ResGuessColor.Opponent:type_name -> tutorial.opponent
|
||||
352, // 194: tutorial.ReqGuessColorTake.Map:type_name -> tutorial.GuessColorInfo
|
||||
513, // 195: tutorial.ReqGuessColorTake.OMap:type_name -> tutorial.ReqGuessColorTake.OMapEntry
|
||||
514, // 196: tutorial.GuessColorInfo.Map:type_name -> tutorial.GuessColorInfo.MapEntry
|
||||
2, // 197: tutorial.ResGuessColorTake.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 198: tutorial.ResGuessColorReward.Code:type_name -> tutorial.RES_CODE
|
||||
358, // 199: tutorial.ResRace.Opponent:type_name -> tutorial.raceopponent
|
||||
2, // 200: tutorial.ResRaceStart.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 201: tutorial.ResRaceReward.Code:type_name -> tutorial.RES_CODE
|
||||
164, // 202: tutorial.ResPlayroom.Items:type_name -> tutorial.ItemInfo
|
||||
392, // 203: tutorial.ResPlayroom.Opponent:type_name -> tutorial.RoomOpponent
|
||||
391, // 204: tutorial.ResPlayroom.Friend:type_name -> tutorial.FriendRoom
|
||||
515, // 205: tutorial.ResPlayroom.Playroom:type_name -> tutorial.ResPlayroom.PlayroomEntry
|
||||
377, // 206: tutorial.ResPlayroom.collect:type_name -> tutorial.PlayroomCollectInfo
|
||||
516, // 207: tutorial.ResPlayroom.Mood:type_name -> tutorial.ResPlayroom.MoodEntry
|
||||
164, // 208: tutorial.ResPlayroom.LoseItem:type_name -> tutorial.ItemInfo
|
||||
387, // 209: tutorial.ResPlayroom.Chip:type_name -> tutorial.ChipInfo
|
||||
517, // 210: tutorial.ResPlayroom.Physiology:type_name -> tutorial.ResPlayroom.PhysiologyEntry
|
||||
518, // 211: tutorial.ResPlayroom.Dress:type_name -> tutorial.ResPlayroom.DressEntry
|
||||
519, // 212: tutorial.ResPlayroom.DressSet:type_name -> tutorial.ResPlayroom.DressSetEntry
|
||||
376, // 213: tutorial.ResPlayroom.PetAir:type_name -> tutorial.PlayroomAirInfo
|
||||
174, // 214: tutorial.ResPlayroom.DailyTask:type_name -> tutorial.DailyTask
|
||||
389, // 215: tutorial.ResPlayroom.AdItem:type_name -> tutorial.AdItem
|
||||
391, // 216: tutorial.ResPlayroom.Target:type_name -> tutorial.FriendRoom
|
||||
174, // 217: tutorial.NotifyPlayroomTask.DailyTask:type_name -> tutorial.DailyTask
|
||||
2, // 218: tutorial.ResPlayroomTask.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 219: tutorial.ResPlayroomTaskReward.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 220: tutorial.ResPlayroomUnlock.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 221: tutorial.ResPlayroomUpvote.Code:type_name -> tutorial.RES_CODE
|
||||
375, // 222: tutorial.PlayroomDress.List:type_name -> tutorial.PlayroomDressInfo
|
||||
520, // 223: tutorial.ReqPlayroomDressSet.DressSet:type_name -> tutorial.ReqPlayroomDressSet.DressSetEntry
|
||||
2, // 224: tutorial.ResPlayroomDressSet.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 225: tutorial.ResPlayroomPetAirSet.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 226: tutorial.ResPlayroomWrokOutline.Code:type_name -> tutorial.RES_CODE
|
||||
164, // 227: tutorial.NotifyPlayroomLose.LoseItem:type_name -> tutorial.ItemInfo
|
||||
387, // 228: tutorial.NotifyPlayroomLose.Chip:type_name -> tutorial.ChipInfo
|
||||
521, // 229: tutorial.NotifyPlayroomMood.Mood:type_name -> tutorial.NotifyPlayroomMood.MoodEntry
|
||||
522, // 230: tutorial.NotifyPlayroomMood.Physiology:type_name -> tutorial.NotifyPlayroomMood.PhysiologyEntry
|
||||
389, // 231: tutorial.NotifyPlayroomMood.AdItem:type_name -> tutorial.AdItem
|
||||
523, // 232: tutorial.ResPlayroomInfo.Playroom:type_name -> tutorial.ResPlayroomInfo.PlayroomEntry
|
||||
524, // 233: tutorial.ResPlayroomInfo.Items:type_name -> tutorial.ResPlayroomInfo.ItemsEntry
|
||||
525, // 234: tutorial.ResPlayroomInfo.flip:type_name -> tutorial.ResPlayroomInfo.FlipEntry
|
||||
526, // 235: tutorial.ResPlayroomInfo.Emoji:type_name -> tutorial.ResPlayroomInfo.EmojiEntry
|
||||
527, // 236: tutorial.ResPlayroomInfo.DressSet:type_name -> tutorial.ResPlayroomInfo.DressSetEntry
|
||||
2, // 237: tutorial.ResPlayroomFlip.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 238: tutorial.ResPlayroomGuide.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 239: tutorial.ResPlayroomFlipReward.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 240: tutorial.ResPlayroomGame.Code:type_name -> tutorial.RES_CODE
|
||||
528, // 241: tutorial.ResPlayroomGame.Items:type_name -> tutorial.ResPlayroomGame.ItemsEntry
|
||||
164, // 242: tutorial.ResPlayroomGameShowReward.Items:type_name -> tutorial.ItemInfo
|
||||
2, // 243: tutorial.ResPlayroomInteract.Code:type_name -> tutorial.RES_CODE
|
||||
529, // 244: tutorial.ReqPlayroomSetRoom.Playroom:type_name -> tutorial.ReqPlayroomSetRoom.PlayroomEntry
|
||||
2, // 245: tutorial.ResPlayroomSetRoom.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 246: tutorial.ResPlayroomSelectReward.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 247: tutorial.ResPlayroomLose.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 248: tutorial.ResPlayroomWork.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 249: tutorial.ResPlayroomRest.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 250: tutorial.ResPlayroomDraw.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 251: tutorial.ResPlayroomChip.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 252: tutorial.ResPlayroomBuyItem.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 253: tutorial.ResPlayroomShop.Code:type_name -> tutorial.RES_CODE
|
||||
427, // 254: tutorial.ResFriendTreasure.List:type_name -> tutorial.TreasureInfo
|
||||
427, // 255: tutorial.ReqFriendTreasureStart.List:type_name -> tutorial.TreasureInfo
|
||||
2, // 256: tutorial.ResFriendTreasureStart.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 257: tutorial.ResFriendTreasureEnd.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 258: tutorial.ResFriendTreasureFilp.Code:type_name -> tutorial.RES_CODE
|
||||
438, // 259: tutorial.ResCollectInfo.Items:type_name -> tutorial.CollectItem
|
||||
164, // 260: tutorial.CollectItem.Items:type_name -> tutorial.ItemInfo
|
||||
2, // 261: tutorial.ResCollect.Code:type_name -> tutorial.RES_CODE
|
||||
443, // 262: tutorial.ResCatnip.GameList:type_name -> tutorial.CatnipGame
|
||||
225, // 263: tutorial.CatnipGame.Partner:type_name -> tutorial.ResPlayerSimple
|
||||
2, // 264: tutorial.ResCatnipInvite.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 265: tutorial.ResCatnipAgree.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 266: tutorial.ResCatnipRefuse.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 267: tutorial.ResCatnipMultiply.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 268: tutorial.ResCatnipPlay.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 269: tutorial.ResCatnipReward.Code:type_name -> tutorial.RES_CODE
|
||||
2, // 270: tutorial.ResCatnipGrandReward.Code:type_name -> tutorial.RES_CODE
|
||||
167, // 271: tutorial.ResGuideTask.TaskEntry.value:type_name -> tutorial.GuideTask
|
||||
173, // 272: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek
|
||||
174, // 273: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask
|
||||
210, // 274: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent
|
||||
225, // 275: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple
|
||||
273, // 276: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo
|
||||
289, // 277: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop
|
||||
290, // 278: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop
|
||||
301, // 279: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo
|
||||
226, // 280: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank
|
||||
226, // 281: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank
|
||||
374, // 282: tutorial.ResPlayroom.DressEntry.value:type_name -> tutorial.PlayroomDress
|
||||
164, // 283: tutorial.ResPlayroomInfo.ItemsEntry.value:type_name -> tutorial.ItemInfo
|
||||
164, // 284: tutorial.ResPlayroomGame.ItemsEntry.value:type_name -> tutorial.ItemInfo
|
||||
285, // [285:285] is the sub-list for method output_type
|
||||
285, // [285:285] is the sub-list for method input_type
|
||||
285, // [285:285] is the sub-list for extension type_name
|
||||
285, // [285:285] is the sub-list for extension extendee
|
||||
0, // [0:285] is the sub-list for field type_name
|
||||
}
|
||||
|
||||
func init() { file_proto_Gameapi_proto_init() }
|
||||
|
||||
Loading…
Reference in New Issue
Block a user