mirror of
https://github.com/Mezeporta/Erupe.git
synced 2025-12-15 00:15:08 +01:00
implement customisable Raviente latency
This commit is contained in:
@@ -48,6 +48,7 @@
|
|||||||
"DailyQuestAllowance": 1,
|
"DailyQuestAllowance": 1,
|
||||||
"MezfesSoloTickets": 10,
|
"MezfesSoloTickets": 10,
|
||||||
"MezfesGroupTickets": 4,
|
"MezfesGroupTickets": 4,
|
||||||
|
"LowLatencyRaviente": false,
|
||||||
"RegularRavienteMaxPlayers": 8,
|
"RegularRavienteMaxPlayers": 8,
|
||||||
"ViolentRavienteMaxPlayers": 8,
|
"ViolentRavienteMaxPlayers": 8,
|
||||||
"BerserkRavienteMaxPlayers": 32,
|
"BerserkRavienteMaxPlayers": 32,
|
||||||
|
|||||||
@@ -133,6 +133,7 @@ type GameplayOptions struct {
|
|||||||
DailyQuestAllowance uint32 // Number of Daily Quests to allow daily
|
DailyQuestAllowance uint32 // Number of Daily Quests to allow daily
|
||||||
MezfesSoloTickets uint32 // Number of solo tickets given weekly
|
MezfesSoloTickets uint32 // Number of solo tickets given weekly
|
||||||
MezfesGroupTickets uint32 // Number of group 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
|
RegularRavienteMaxPlayers uint8
|
||||||
ViolentRavienteMaxPlayers uint8
|
ViolentRavienteMaxPlayers uint8
|
||||||
BerserkRavienteMaxPlayers uint8
|
BerserkRavienteMaxPlayers uint8
|
||||||
|
|||||||
@@ -272,13 +272,12 @@ func handleMsgSysPing(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func handleMsgSysTime(s *Session, p mhfpacket.MHFPacket) {
|
func handleMsgSysTime(s *Session, p mhfpacket.MHFPacket) {
|
||||||
//pkt := p.(*mhfpacket.MsgSysTime)
|
|
||||||
|
|
||||||
resp := &mhfpacket.MsgSysTime{
|
resp := &mhfpacket.MsgSysTime{
|
||||||
GetRemoteTime: false,
|
GetRemoteTime: false,
|
||||||
Timestamp: uint32(TimeAdjusted().Unix()), // JP timezone
|
Timestamp: uint32(TimeAdjusted().Unix()), // JP timezone
|
||||||
}
|
}
|
||||||
s.QueueSendMHF(resp)
|
s.QueueSendMHF(resp)
|
||||||
|
s.notifyRavi()
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleMsgSysIssueLogkey(s *Session, p mhfpacket.MHFPacket) {
|
func handleMsgSysIssueLogkey(s *Session, p mhfpacket.MHFPacket) {
|
||||||
|
|||||||
@@ -196,7 +196,9 @@ func handleMsgSysOperateRegister(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
resp.WriteUint8(0)
|
resp.WriteUint8(0)
|
||||||
doAckBufSucceed(s, pkt.AckHandle, resp.Data())
|
doAckBufSucceed(s, pkt.AckHandle, resp.Data())
|
||||||
}
|
}
|
||||||
s.notifyRavi()
|
if s.server.erupeConfig.GameplayOptions.LowLatencyRaviente {
|
||||||
|
s.notifyRavi()
|
||||||
|
}
|
||||||
s.server.raviente.Unlock()
|
s.server.raviente.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -241,6 +243,10 @@ func handleMsgSysLoadRegister(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Session) notifyRavi() {
|
func (s *Session) notifyRavi() {
|
||||||
|
sema := getRaviSemaphore(s.server)
|
||||||
|
if sema == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
var temp mhfpacket.MHFPacket
|
var temp mhfpacket.MHFPacket
|
||||||
raviNotif := byteframe.NewByteFrame()
|
raviNotif := byteframe.NewByteFrame()
|
||||||
temp = &mhfpacket.MsgSysNotifyRegister{RegisterID: 4}
|
temp = &mhfpacket.MsgSysNotifyRegister{RegisterID: 4}
|
||||||
@@ -253,11 +259,16 @@ func (s *Session) notifyRavi() {
|
|||||||
raviNotif.WriteUint16(uint16(temp.Opcode()))
|
raviNotif.WriteUint16(uint16(temp.Opcode()))
|
||||||
temp.Build(raviNotif, s.clientContext)
|
temp.Build(raviNotif, s.clientContext)
|
||||||
raviNotif.WriteUint16(0x0010) // End it.
|
raviNotif.WriteUint16(0x0010) // End it.
|
||||||
sema := getRaviSemaphore(s.server)
|
if s.server.erupeConfig.GameplayOptions.LowLatencyRaviente {
|
||||||
if sema != nil {
|
|
||||||
for session := range sema.clients {
|
for session := range sema.clients {
|
||||||
session.QueueSend(raviNotif.Data())
|
session.QueueSend(raviNotif.Data())
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
for session := range sema.clients {
|
||||||
|
if session.charID == s.charID {
|
||||||
|
session.QueueSend(raviNotif.Data())
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user