招财猫
This commit is contained in:
parent
d693b6d314
commit
5d160f71ef
@ -19,6 +19,7 @@ const (
|
||||
CFG_LIMITED_TIME_EVENT_CHEST_JACKPOT = "LimitedTimeEventChestJackpot"
|
||||
CFG_LIMITED_TIME_EVENT_CONST = "LimitedTimeEventConst"
|
||||
CFG_LIMITED_TIME_EVENT_BONUS = "LimitedTimeEventBonus"
|
||||
CFG_LIMITED_TIME_EVENT_MONEY = "LimitedTimeEventMoney"
|
||||
)
|
||||
|
||||
func init() {
|
||||
@ -33,6 +34,7 @@ func init() {
|
||||
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_CONST)
|
||||
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_BONUS)
|
||||
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_CHEST_JACKPOT)
|
||||
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_MONEY)
|
||||
}
|
||||
|
||||
// 获取限时事件触发列表
|
||||
@ -280,3 +282,23 @@ func GetFastCD() int {
|
||||
}
|
||||
return gamedata.GetIntValue(data, "Value")
|
||||
}
|
||||
|
||||
// 招财猫
|
||||
|
||||
func GetMoneyCat(Id int) (float64, int) {
|
||||
data, err := gamedata.GetDataByIntKey(CFG_LIMITED_TIME_EVENT_MONEY, Id)
|
||||
if err != nil {
|
||||
log.Debug("GetMul err:%v", err)
|
||||
return 0.0, 0
|
||||
}
|
||||
return gamedata.GetFloatValue(data, "Mul"), gamedata.GetIntValue(data, "Cd")
|
||||
}
|
||||
|
||||
func GetMoneyCatMax() int {
|
||||
data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_MONEY)
|
||||
if err != nil {
|
||||
log.Debug("GetMul err:%v", err)
|
||||
return 0
|
||||
}
|
||||
return len(data)
|
||||
}
|
||||
|
||||
@ -510,3 +510,11 @@ func GetColorType(Color string) int {
|
||||
}
|
||||
return CHESS_PRODUCT_MAIN_TYPE
|
||||
}
|
||||
|
||||
func GetMergeStar(MergeList []int) int {
|
||||
Star := 0
|
||||
for _, v := range MergeList {
|
||||
Star += GetStarById(v)
|
||||
}
|
||||
return Star
|
||||
}
|
||||
|
||||
@ -245,6 +245,16 @@ func ReqRewardOrder(player *Player, buf []byte) error {
|
||||
}
|
||||
Item = item.Merge(Item, AddItem)
|
||||
}
|
||||
if LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_MONEY_CAT) { //招财猫活动
|
||||
AddItem := LimitedTimeEventMod.GetMoneyCatReward(mergeList)
|
||||
if len(AddItem) > 0 {
|
||||
player.TeLog("time_limited_event_action", map[string]interface{}{
|
||||
"event_type": "money_cat",
|
||||
"item_list": AddItem,
|
||||
})
|
||||
}
|
||||
Item = item.Merge(Item, AddItem)
|
||||
}
|
||||
if err != nil {
|
||||
player.SendErrClienRes(&msg.ResRewardOrder{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
|
||||
@ -21,6 +21,7 @@ const (
|
||||
EVENT_TYPE_PET_THIEF = 9 // 宠物小偷
|
||||
EVENT_TYPE_FAST_PRODUCE = 10 // 连击快手
|
||||
EVENT_TYPE_CAT_CYCLONE = 11 // 猫咪飓风
|
||||
EVENT_TYPE_MONEY_CAT = 12 // 招财猫
|
||||
)
|
||||
|
||||
const (
|
||||
@ -45,6 +46,13 @@ type LTEInfo struct {
|
||||
StartT int64 // 开始时间
|
||||
Remian int64 // 剩余时间
|
||||
Info map[string]interface{} // 事件信息
|
||||
D interface{}
|
||||
}
|
||||
|
||||
type MoneyCat struct {
|
||||
Id int
|
||||
EndTime int64
|
||||
Mul float64
|
||||
}
|
||||
|
||||
func (l *LimitedTimeEventMod) InitData(Lv int) {
|
||||
@ -141,24 +149,40 @@ func (l *LimitedTimeEventMod) WeekUpdate() {
|
||||
l.Triggered = make(map[int]struct{})
|
||||
}
|
||||
|
||||
func (l *LimitedTimeEventMod) GetMoneyCatReward(ChessList []int) []*item.Item {
|
||||
L := l.EventList[EVENT_TYPE_MONEY_CAT]
|
||||
if L == nil {
|
||||
return nil
|
||||
}
|
||||
Star := mergeDataCfg.GetMergeStar(ChessList)
|
||||
d := L.D.(*MoneyCat)
|
||||
mul := d.Mul
|
||||
// 超时
|
||||
if d.EndTime > 0 && GoUtil.Now() >= d.EndTime {
|
||||
NextMul, Cd := limitedTimeEventCfg.GetMoneyCat(1)
|
||||
d.EndTime = int64(Cd)
|
||||
d.Mul = NextMul
|
||||
Star = int(float64(Star) * NextMul)
|
||||
} else {
|
||||
MaxId := limitedTimeEventCfg.GetMoneyCatMax()
|
||||
NextId := min(d.Id+1, MaxId)
|
||||
NextMul, Cd := limitedTimeEventCfg.GetMoneyCat(NextId)
|
||||
d.Id = NextId
|
||||
d.Mul = NextMul
|
||||
d.EndTime = GoUtil.Now() + int64(Cd)
|
||||
Star = int(float64(Star) * mul)
|
||||
}
|
||||
|
||||
return []*item.Item{{Id: item.ITEM_STAR_ID, Num: Star}}
|
||||
}
|
||||
|
||||
func (l *LimitedTimeEventMod) BackData() *msg.ResLimitEvent {
|
||||
Res := &msg.ResLimitEvent{}
|
||||
EventList := make(map[int32]*msg.LimitEvent)
|
||||
Now := GoUtil.Now()
|
||||
for k, v := range l.EventList {
|
||||
Cd := 0
|
||||
if k == EVENT_TYPE_FAST_PRODUCE {
|
||||
NextPlay := GoUtil.Int64(v.Info["NextPlay"])
|
||||
Cd = int(max(NextPlay-Now, 0))
|
||||
}
|
||||
EventList[int32(k)] = &msg.LimitEvent{
|
||||
EndTime: int32(v.StartT + v.Remian),
|
||||
Cd: int32(Cd),
|
||||
}
|
||||
EventList[int32(k)] = getLimitEventMsg(k, v)
|
||||
}
|
||||
Res.LimitEventList = EventList
|
||||
// Res.Progress = int32(l.Progress)
|
||||
// Res.ProgressReward = GoUtil.MapIntToInt32(l.ProgressReward)
|
||||
return Res
|
||||
}
|
||||
|
||||
@ -319,5 +343,30 @@ func initEventInfo(E *LTEInfo, EventType int) {
|
||||
"Times": 0,
|
||||
"NextPlay": 0,
|
||||
}
|
||||
case EVENT_TYPE_MONEY_CAT:
|
||||
E.D = &MoneyCat{
|
||||
Id: 1,
|
||||
EndTime: 0,
|
||||
Mul: 1.1,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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"])
|
||||
Cd = int(max(NextPlay-GoUtil.Now(), 0))
|
||||
case EVENT_TYPE_MONEY_CAT:
|
||||
d := e.D.(*MoneyCat)
|
||||
Cd = int(d.EndTime)
|
||||
Mul = d.Mul
|
||||
}
|
||||
return &msg.LimitEvent{
|
||||
EndTime: int32(e.StartT + e.Remian),
|
||||
Cd: int32(Cd),
|
||||
Mul: float32(Mul),
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user