幸运猫
This commit is contained in:
parent
a91952b796
commit
df9cf9d44d
@ -5,6 +5,7 @@ import (
|
|||||||
"server/game/mod/item"
|
"server/game/mod/item"
|
||||||
"server/gamedata"
|
"server/gamedata"
|
||||||
"server/pkg/github.com/name5566/leaf/log"
|
"server/pkg/github.com/name5566/leaf/log"
|
||||||
|
"sort"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -20,6 +21,7 @@ const (
|
|||||||
CFG_LIMITED_TIME_EVENT_CONST = "LimitedTimeEventConst"
|
CFG_LIMITED_TIME_EVENT_CONST = "LimitedTimeEventConst"
|
||||||
CFG_LIMITED_TIME_EVENT_BONUS = "LimitedTimeEventBonus"
|
CFG_LIMITED_TIME_EVENT_BONUS = "LimitedTimeEventBonus"
|
||||||
CFG_LIMITED_TIME_EVENT_MONEY = "LimitedTimeEventMoney"
|
CFG_LIMITED_TIME_EVENT_MONEY = "LimitedTimeEventMoney"
|
||||||
|
CFG_LIMITED_TIME_EVENT_LUCKY = "LimitedTimeEventLuckyCat"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@ -35,6 +37,7 @@ func init() {
|
|||||||
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_BONUS)
|
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_BONUS)
|
||||||
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_CHEST_JACKPOT)
|
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_CHEST_JACKPOT)
|
||||||
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_MONEY)
|
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_MONEY)
|
||||||
|
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_LUCKY)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取限时事件触发列表
|
// 获取限时事件触发列表
|
||||||
@ -302,3 +305,30 @@ func GetMoneyCatMax() int {
|
|||||||
}
|
}
|
||||||
return len(data)
|
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("ReqGetMonthLoginReward", ReqGetMonthLoginReward) // 领取月签到奖励
|
||||||
|
|
||||||
// 限时事件
|
// 限时事件
|
||||||
RegisterMsgProcessFunc("ReqLimitEvent", ReqLimitEvent) // 请求限时事件数据
|
RegisterMsgProcessFunc("ReqLimitEvent", ReqLimitEvent) // 请求限时事件数据
|
||||||
RegisterMsgProcessFunc("ReqFastProduceReward", ReqFastProduceReward) // 连击快手奖励
|
RegisterMsgProcessFunc("ReqFastProduceReward", ReqFastProduceReward) // 连击快手奖励
|
||||||
RegisterMsgProcessFunc("ReqFastProduceInfo", ReqFastProduceInfo) // 请求连击快手数据
|
RegisterMsgProcessFunc("ReqFastProduceInfo", ReqFastProduceInfo) // 请求连击快手数据
|
||||||
RegisterMsgProcessFunc("ReqLimitSenceReward", ReqLimitSenceReward) // 获取场景转盘奖励
|
RegisterMsgProcessFunc("ReqLimitSenceReward", ReqLimitSenceReward) // 获取场景转盘奖励
|
||||||
RegisterMsgProcessFunc("ReqSelectLimitEvent", ReqSelectLimitEvent) //领取限时事件进度奖励
|
RegisterMsgProcessFunc("ReqSelectLimitEvent", ReqSelectLimitEvent) //领取限时事件进度奖励
|
||||||
RegisterMsgProcessFunc("ReqGetGoldCard", ReqGetGoldCard) //请求金卡交换信息
|
RegisterMsgProcessFunc("ReqGetGoldCard", ReqGetGoldCard) //请求金卡交换信息
|
||||||
|
RegisterMsgProcessFunc("ReqLimitEventLuckyCat", ReqLimitEventLuckyCat) //幸运猫获取奖励
|
||||||
|
|
||||||
// #region 好友
|
// #region 好友
|
||||||
RegisterMsgProcessFunc("ReqFriendList", ReqFriendList) // 请求好友列表
|
RegisterMsgProcessFunc("ReqFriendList", ReqFriendList) // 请求好友列表
|
||||||
|
|||||||
@ -3798,3 +3798,34 @@ func ReqPlayroomPetAirSet(player *Player, buf []byte) error {
|
|||||||
})
|
})
|
||||||
return nil
|
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() {
|
func init() {
|
||||||
gob.Register(&limitedTimeEvent.MoneyCat{})
|
gob.Register(&limitedTimeEvent.MoneyCat{})
|
||||||
|
gob.Register(&limitedTimeEvent.LuckyCat{})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package limitedTimeEvent
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"math"
|
||||||
"server/GoUtil"
|
"server/GoUtil"
|
||||||
limitedTimeEventCfg "server/conf/limitedTimeEvent"
|
limitedTimeEventCfg "server/conf/limitedTimeEvent"
|
||||||
mergeDataCfg "server/conf/mergeData"
|
mergeDataCfg "server/conf/mergeData"
|
||||||
@ -22,6 +23,7 @@ const (
|
|||||||
EVENT_TYPE_FAST_PRODUCE = 10 // 连击快手
|
EVENT_TYPE_FAST_PRODUCE = 10 // 连击快手
|
||||||
EVENT_TYPE_CAT_CYCLONE = 11 // 猫咪飓风
|
EVENT_TYPE_CAT_CYCLONE = 11 // 猫咪飓风
|
||||||
EVENT_TYPE_MONEY_CAT = 12 // 招财猫
|
EVENT_TYPE_MONEY_CAT = 12 // 招财猫
|
||||||
|
EVENT_TYPE_LUCKY_CAT = 13 // 幸运猫
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -55,6 +57,10 @@ type MoneyCat struct {
|
|||||||
Mul float64
|
Mul float64
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type LuckyCat struct {
|
||||||
|
Earnings int
|
||||||
|
}
|
||||||
|
|
||||||
func (l *LimitedTimeEventMod) InitData(Lv int) {
|
func (l *LimitedTimeEventMod) InitData(Lv int) {
|
||||||
if l.EventList == nil {
|
if l.EventList == nil {
|
||||||
l.EventList = make(map[int]*LTEInfo)
|
l.EventList = make(map[int]*LTEInfo)
|
||||||
@ -335,6 +341,22 @@ func (l *LimitedTimeEventMod) RemoveSuperOrder() bool {
|
|||||||
return false
|
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) {
|
func initEventInfo(E *LTEInfo, EventType int) {
|
||||||
switch EventType {
|
switch EventType {
|
||||||
@ -349,12 +371,17 @@ func initEventInfo(E *LTEInfo, EventType int) {
|
|||||||
EndTime: 0,
|
EndTime: 0,
|
||||||
Mul: 1.1,
|
Mul: 1.1,
|
||||||
}
|
}
|
||||||
|
case EVENT_TYPE_LUCKY_CAT:
|
||||||
|
E.D = &LuckyCat{
|
||||||
|
Earnings: 0,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func getLimitEventMsg(t int, e *LTEInfo) *msg.LimitEvent {
|
func getLimitEventMsg(t int, e *LTEInfo) *msg.LimitEvent {
|
||||||
Cd := 0
|
Cd := 0
|
||||||
Mul := 0.0
|
Mul := 0.0
|
||||||
|
|
||||||
switch t {
|
switch t {
|
||||||
case EVENT_TYPE_FAST_PRODUCE:
|
case EVENT_TYPE_FAST_PRODUCE:
|
||||||
NextPlay := GoUtil.Int64(e.Info["NextPlay"])
|
NextPlay := GoUtil.Int64(e.Info["NextPlay"])
|
||||||
@ -365,8 +392,9 @@ func getLimitEventMsg(t int, e *LTEInfo) *msg.LimitEvent {
|
|||||||
Mul = d.Mul
|
Mul = d.Mul
|
||||||
}
|
}
|
||||||
return &msg.LimitEvent{
|
return &msg.LimitEvent{
|
||||||
EndTime: int32(e.StartT + e.Remian),
|
EndTime: int32(e.StartT + e.Remian),
|
||||||
Cd: int32(Cd),
|
Cd: int32(Cd),
|
||||||
Mul: float32(Mul),
|
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