幸运猫
This commit is contained in:
parent
a91952b796
commit
df9cf9d44d
@ -5,6 +5,7 @@ import (
|
||||
"server/game/mod/item"
|
||||
"server/gamedata"
|
||||
"server/pkg/github.com/name5566/leaf/log"
|
||||
"sort"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -20,6 +21,7 @@ const (
|
||||
CFG_LIMITED_TIME_EVENT_CONST = "LimitedTimeEventConst"
|
||||
CFG_LIMITED_TIME_EVENT_BONUS = "LimitedTimeEventBonus"
|
||||
CFG_LIMITED_TIME_EVENT_MONEY = "LimitedTimeEventMoney"
|
||||
CFG_LIMITED_TIME_EVENT_LUCKY = "LimitedTimeEventLuckyCat"
|
||||
)
|
||||
|
||||
func init() {
|
||||
@ -35,6 +37,7 @@ func init() {
|
||||
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_BONUS)
|
||||
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_CHEST_JACKPOT)
|
||||
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_MONEY)
|
||||
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_LUCKY)
|
||||
}
|
||||
|
||||
// 获取限时事件触发列表
|
||||
@ -302,3 +305,30 @@ func GetMoneyCatMax() int {
|
||||
}
|
||||
return len(data)
|
||||
}
|
||||
|
||||
func GetLuckyCatMaxEarning(Remain int) int {
|
||||
data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_LUCKY)
|
||||
if err != nil {
|
||||
log.Debug("GetMul err:%v", err)
|
||||
return 0
|
||||
}
|
||||
type d struct {
|
||||
t int
|
||||
e int
|
||||
}
|
||||
l := make([]d, 0)
|
||||
for k, v := range data {
|
||||
t := GoUtil.Int(k)
|
||||
e := gamedata.GetIntValue(v, "Earn")
|
||||
l = append(l, d{t, e})
|
||||
}
|
||||
sort.Slice(l, func(i, j int) bool {
|
||||
return l[i].t < l[j].t
|
||||
})
|
||||
for _, v := range l {
|
||||
if Remain <= v.t {
|
||||
return v.e
|
||||
}
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
@ -697,12 +697,13 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
|
||||
RegisterMsgProcessFunc("ReqGetMonthLoginReward", ReqGetMonthLoginReward) // 领取月签到奖励
|
||||
|
||||
// 限时事件
|
||||
RegisterMsgProcessFunc("ReqLimitEvent", ReqLimitEvent) // 请求限时事件数据
|
||||
RegisterMsgProcessFunc("ReqFastProduceReward", ReqFastProduceReward) // 连击快手奖励
|
||||
RegisterMsgProcessFunc("ReqFastProduceInfo", ReqFastProduceInfo) // 请求连击快手数据
|
||||
RegisterMsgProcessFunc("ReqLimitSenceReward", ReqLimitSenceReward) // 获取场景转盘奖励
|
||||
RegisterMsgProcessFunc("ReqSelectLimitEvent", ReqSelectLimitEvent) //领取限时事件进度奖励
|
||||
RegisterMsgProcessFunc("ReqGetGoldCard", ReqGetGoldCard) //请求金卡交换信息
|
||||
RegisterMsgProcessFunc("ReqLimitEvent", ReqLimitEvent) // 请求限时事件数据
|
||||
RegisterMsgProcessFunc("ReqFastProduceReward", ReqFastProduceReward) // 连击快手奖励
|
||||
RegisterMsgProcessFunc("ReqFastProduceInfo", ReqFastProduceInfo) // 请求连击快手数据
|
||||
RegisterMsgProcessFunc("ReqLimitSenceReward", ReqLimitSenceReward) // 获取场景转盘奖励
|
||||
RegisterMsgProcessFunc("ReqSelectLimitEvent", ReqSelectLimitEvent) //领取限时事件进度奖励
|
||||
RegisterMsgProcessFunc("ReqGetGoldCard", ReqGetGoldCard) //请求金卡交换信息
|
||||
RegisterMsgProcessFunc("ReqLimitEventLuckyCat", ReqLimitEventLuckyCat) //幸运猫获取奖励
|
||||
|
||||
// #region 好友
|
||||
RegisterMsgProcessFunc("ReqFriendList", ReqFriendList) // 请求好友列表
|
||||
|
||||
@ -3798,3 +3798,34 @@ func ReqPlayroomPetAirSet(player *Player, buf []byte) error {
|
||||
})
|
||||
return nil
|
||||
}
|
||||
|
||||
func ReqLimitEventLuckyCat(player *Player, buf []byte) error {
|
||||
req := &msg.ReqLimitEventLuckyCat{}
|
||||
LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod()
|
||||
err := LimitedTimeEventMod.LuckyCat(int(req.ChessId))
|
||||
if err != nil {
|
||||
player.SendErrClienRes(&msg.ResLimitEventLuckyCat{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
Msg: err.Error(),
|
||||
})
|
||||
return err
|
||||
}
|
||||
data := &PlayerChessData{}
|
||||
err = data.UpdateChessData(player, req.MChessData)
|
||||
if err != nil {
|
||||
player.SendErrClienRes(&msg.ResChessEx{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
Msg: err.Error(),
|
||||
})
|
||||
player.TeLog("outsync_event", map[string]interface{}{
|
||||
"outsync_event": "ReqLimitEventLuckyCat",
|
||||
})
|
||||
return err
|
||||
}
|
||||
player.PlayMod.save()
|
||||
player.PushClientRes(LimitedTimeEventMod.BackData())
|
||||
player.PushClientRes(&msg.ResLimitEventLuckyCat{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
})
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -54,5 +54,5 @@ type ActivityInfo struct {
|
||||
|
||||
func init() {
|
||||
gob.Register(&limitedTimeEvent.MoneyCat{})
|
||||
|
||||
gob.Register(&limitedTimeEvent.LuckyCat{})
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@ package limitedTimeEvent
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"server/GoUtil"
|
||||
limitedTimeEventCfg "server/conf/limitedTimeEvent"
|
||||
mergeDataCfg "server/conf/mergeData"
|
||||
@ -22,6 +23,7 @@ const (
|
||||
EVENT_TYPE_FAST_PRODUCE = 10 // 连击快手
|
||||
EVENT_TYPE_CAT_CYCLONE = 11 // 猫咪飓风
|
||||
EVENT_TYPE_MONEY_CAT = 12 // 招财猫
|
||||
EVENT_TYPE_LUCKY_CAT = 13 // 幸运猫
|
||||
)
|
||||
|
||||
const (
|
||||
@ -55,6 +57,10 @@ type MoneyCat struct {
|
||||
Mul float64
|
||||
}
|
||||
|
||||
type LuckyCat struct {
|
||||
Earnings int
|
||||
}
|
||||
|
||||
func (l *LimitedTimeEventMod) InitData(Lv int) {
|
||||
if l.EventList == nil {
|
||||
l.EventList = make(map[int]*LTEInfo)
|
||||
@ -335,6 +341,22 @@ func (l *LimitedTimeEventMod) RemoveSuperOrder() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (l *LimitedTimeEventMod) LuckyCat(ChessId int) error {
|
||||
L := l.EventList[EVENT_TYPE_LUCKY_CAT]
|
||||
if L == nil {
|
||||
return fmt.Errorf("LuckyCat event not exist")
|
||||
}
|
||||
MaxEarning := limitedTimeEventCfg.GetLuckyCatMaxEarning(int(L.Remian))
|
||||
d := L.D.(*LuckyCat)
|
||||
Lv := mergeDataCfg.GetLvById(ChessId)
|
||||
Earn := math.Pow(2, float64(Lv-1))
|
||||
d.Earnings += int(Earn)
|
||||
if d.Earnings >= MaxEarning {
|
||||
delete(l.EventList, EVENT_TYPE_LUCKY_CAT)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// 获取超级订单奖励
|
||||
func initEventInfo(E *LTEInfo, EventType int) {
|
||||
switch EventType {
|
||||
@ -349,12 +371,17 @@ func initEventInfo(E *LTEInfo, EventType int) {
|
||||
EndTime: 0,
|
||||
Mul: 1.1,
|
||||
}
|
||||
case EVENT_TYPE_LUCKY_CAT:
|
||||
E.D = &LuckyCat{
|
||||
Earnings: 0,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func getLimitEventMsg(t int, e *LTEInfo) *msg.LimitEvent {
|
||||
Cd := 0
|
||||
Mul := 0.0
|
||||
|
||||
switch t {
|
||||
case EVENT_TYPE_FAST_PRODUCE:
|
||||
NextPlay := GoUtil.Int64(e.Info["NextPlay"])
|
||||
@ -365,8 +392,9 @@ func getLimitEventMsg(t int, e *LTEInfo) *msg.LimitEvent {
|
||||
Mul = d.Mul
|
||||
}
|
||||
return &msg.LimitEvent{
|
||||
EndTime: int32(e.StartT + e.Remian),
|
||||
Cd: int32(Cd),
|
||||
Mul: float32(Mul),
|
||||
EndTime: int32(e.StartT + e.Remian),
|
||||
Cd: int32(Cd),
|
||||
Mul: float32(Mul),
|
||||
StartTime: int32(e.StartT),
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user