diff --git a/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go b/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go index a2f19612..c164d1e4 100644 --- a/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go +++ b/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go @@ -141,13 +141,17 @@ func (l *LimitedTimeEventMod) Trigger(Lv int) (int, []int, []int) { Remain := 0 //删除过期事件 for k, v := range l.EventList { - if v.StartT+v.Remian <= Now { + EndTime := v.StartT + v.Remian + if k == EVENT_TYPE_CAT_TRICK { + EndTime += 5 * 60 // 猫咪戏法事件显示时间为5分钟 + } + if EndTime <= Now { delete(l.EventList, k) TimeoutEvent = append(TimeoutEvent, k) continue } - EndTime := (v.StartT + v.Remian) - Now - Remain = GoUtil.IfTrue(Remain > 0, min(Remain, int(EndTime)), int(EndTime)).(int) + NowRemain := (v.StartT + v.Remian) - Now + Remain = GoUtil.IfTrue(Remain > 0, min(Remain, int(NowRemain)), int(NowRemain)).(int) } return Remain, TimeoutEvent, AddEvent } @@ -381,7 +385,12 @@ func (l *LimitedTimeEventMod) AddCatTrickEnergy(Energy int) { if l.EventList[EVENT_TYPE_CAT_TRICK] == nil { return } - d := l.EventList[EVENT_TYPE_CAT_TRICK].D.(*CatTrick) + Event := l.EventList[EVENT_TYPE_CAT_TRICK] + if Event.Remian+Event.StartT <= GoUtil.Now() { + return + } + // 事件未过期 + d := Event.D.(*CatTrick) d.Energy += Energy } @@ -475,6 +484,7 @@ func getLimitEventMsg(t int, e *LTEInfo) *msg.LimitEvent { Cd := 0 Mul := 0.0 Param := make(map[string]int32, 0) + ShowTime := int32(e.StartT + e.Remian) switch t { case EVENT_TYPE_FAST_PRODUCE: NextPlay := GoUtil.Int64(e.Info["NextPlay"]) @@ -489,12 +499,14 @@ func getLimitEventMsg(t int, e *LTEInfo) *msg.LimitEvent { Param[msg.LimitEventParam_CAT_TRICK_ENERGY.String()] = int32(Energy) info := d.List[0] Param[msg.LimitEventParam_CAT_TRICK_TYPE.String()] = int32(info.Type) + ShowTime += 5 * 60 // 5分钟 case EVENT_TYPE_PAYBACK_DAY: d := e.D.(*PaybackDay) Param[msg.LimitEventParam_PAYBACK_DAY_COUNT.String()] = int32(d.count) } return &msg.LimitEvent{ EndTime: int32(e.StartT + e.Remian), + ShowTime: ShowTime, Cd: int32(Cd), Mul: float32(Mul), StartTime: int32(e.StartT), diff --git a/src/server/msg/Gameapi.pb.go b/src/server/msg/Gameapi.pb.go index 7eae8416..9e2f4fd8 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -10676,6 +10676,7 @@ type LimitEvent struct { Mul float32 `protobuf:"fixed32,3,opt,name=mul,proto3" json:"mul,omitempty"` //倍数 StartTime int32 `protobuf:"varint,4,opt,name=StartTime,proto3" json:"StartTime,omitempty"` //开始时间 Param map[string]int32 `protobuf:"bytes,5,rep,name=Param,proto3" json:"Param,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` //key 为枚举 LimitEventParam + ShowTime int32 `protobuf:"varint,6,opt,name=ShowTime,proto3" json:"ShowTime,omitempty"` //显示时间 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -10745,6 +10746,13 @@ func (x *LimitEvent) GetParam() map[string]int32 { return nil } +func (x *LimitEvent) GetShowTime() int32 { + if x != nil { + return x.ShowTime + } + return 0 +} + type LimitEventNotify struct { state protoimpl.MessageState `protogen:"open.v1"` Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 限时事件类型 @@ -23285,14 +23293,15 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\x02Id\x18\x01 \x01(\x05R\x02Id\"O\n" + "\x13ResSelectLimitEvent\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + - "\x03Msg\x18\x02 \x01(\tR\x03Msg\"\xd7\x01\n" + + "\x03Msg\x18\x02 \x01(\tR\x03Msg\"\xf3\x01\n" + "\n" + "LimitEvent\x12\x18\n" + "\aEndTime\x18\x01 \x01(\x05R\aEndTime\x12\x0e\n" + "\x02Cd\x18\x02 \x01(\x05R\x02Cd\x12\x10\n" + "\x03mul\x18\x03 \x01(\x02R\x03mul\x12\x1c\n" + "\tStartTime\x18\x04 \x01(\x05R\tStartTime\x125\n" + - "\x05Param\x18\x05 \x03(\v2\x1f.tutorial.LimitEvent.ParamEntryR\x05Param\x1a8\n" + + "\x05Param\x18\x05 \x03(\v2\x1f.tutorial.LimitEvent.ParamEntryR\x05Param\x12\x1a\n" + + "\bShowTime\x18\x06 \x01(\x05R\bShowTime\x1a8\n" + "\n" + "ParamEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +