From 68600988297ae748ac52637ae2635702626cd238 Mon Sep 17 00:00:00 2001 From: wish Date: Wed, 9 Aug 2023 23:20:50 +1000 Subject: [PATCH] implement customisable Raviente latency --- config.json | 1 + config/config.go | 1 + server/channelserver/handlers.go | 3 +-- server/channelserver/handlers_register.go | 17 ++++++++++++++--- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/config.json b/config.json index b51709724..d3de778bb 100644 --- a/config.json +++ b/config.json @@ -48,6 +48,7 @@ "DailyQuestAllowance": 1, "MezfesSoloTickets": 10, "MezfesGroupTickets": 4, + "LowLatencyRaviente": false, "RegularRavienteMaxPlayers": 8, "ViolentRavienteMaxPlayers": 8, "BerserkRavienteMaxPlayers": 32, diff --git a/config/config.go b/config/config.go index 292388040..ac7e48af6 100644 --- a/config/config.go +++ b/config/config.go @@ -133,6 +133,7 @@ type GameplayOptions struct { DailyQuestAllowance uint32 // Number of Daily Quests to allow daily MezfesSoloTickets uint32 // Number of solo tickets given weekly MezfesGroupTickets uint32 // Number of group tickets given weekly + LowLatencyRaviente bool // Toggles low latency mode for Raviente, can be network intensive RegularRavienteMaxPlayers uint8 ViolentRavienteMaxPlayers uint8 BerserkRavienteMaxPlayers uint8 diff --git a/server/channelserver/handlers.go b/server/channelserver/handlers.go index c48a0ea6d..abc554d06 100644 --- a/server/channelserver/handlers.go +++ b/server/channelserver/handlers.go @@ -272,13 +272,12 @@ func handleMsgSysPing(s *Session, p mhfpacket.MHFPacket) { } func handleMsgSysTime(s *Session, p mhfpacket.MHFPacket) { - //pkt := p.(*mhfpacket.MsgSysTime) - resp := &mhfpacket.MsgSysTime{ GetRemoteTime: false, Timestamp: uint32(TimeAdjusted().Unix()), // JP timezone } s.QueueSendMHF(resp) + s.notifyRavi() } func handleMsgSysIssueLogkey(s *Session, p mhfpacket.MHFPacket) { diff --git a/server/channelserver/handlers_register.go b/server/channelserver/handlers_register.go index efe9dc1b1..33261a94e 100644 --- a/server/channelserver/handlers_register.go +++ b/server/channelserver/handlers_register.go @@ -196,7 +196,9 @@ func handleMsgSysOperateRegister(s *Session, p mhfpacket.MHFPacket) { resp.WriteUint8(0) doAckBufSucceed(s, pkt.AckHandle, resp.Data()) } - s.notifyRavi() + if s.server.erupeConfig.GameplayOptions.LowLatencyRaviente { + s.notifyRavi() + } s.server.raviente.Unlock() } @@ -241,6 +243,10 @@ func handleMsgSysLoadRegister(s *Session, p mhfpacket.MHFPacket) { } func (s *Session) notifyRavi() { + sema := getRaviSemaphore(s.server) + if sema == nil { + return + } var temp mhfpacket.MHFPacket raviNotif := byteframe.NewByteFrame() temp = &mhfpacket.MsgSysNotifyRegister{RegisterID: 4} @@ -253,11 +259,16 @@ func (s *Session) notifyRavi() { raviNotif.WriteUint16(uint16(temp.Opcode())) temp.Build(raviNotif, s.clientContext) raviNotif.WriteUint16(0x0010) // End it. - sema := getRaviSemaphore(s.server) - if sema != nil { + if s.server.erupeConfig.GameplayOptions.LowLatencyRaviente { for session := range sema.clients { session.QueueSend(raviNotif.Data()) } + } else { + for session := range sema.clients { + if session.charID == s.charID { + session.QueueSend(raviNotif.Data()) + } + } } }