diff --git a/server/channelserver/handlers_register.go b/server/channelserver/handlers_register.go index 57bce3e61..2135af6fb 100644 --- a/server/channelserver/handlers_register.go +++ b/server/channelserver/handlers_register.go @@ -16,7 +16,7 @@ func handleMsgMhfRegisterEvent(s *Session, p mhfpacket.MHFPacket) { } bf.WriteUint8(uint8(pkt.WorldID)) bf.WriteUint8(uint8(pkt.LandID)) - bf.WriteUint16(0x1142) // Probably random ID + bf.WriteUint16(s.server.raviente.id) doAckSimpleSucceed(s, pkt.AckHandle, bf.Data()) } @@ -142,15 +142,11 @@ func (s *Session) notifyRavi() { func (s *Server) getRaviSemaphore() *Semaphore { for _, semaphore := range s.semaphore { - if strings.HasPrefix(semaphore.id_semaphore, "hs_l0u3B5") && strings.HasSuffix(semaphore.id_semaphore, "3") { + if strings.HasPrefix(semaphore.id_semaphore, "hs_l0") && strings.HasSuffix(semaphore.id_semaphore, "3") { return semaphore } } return nil } -func resetRavi(s *Session) { - s.server.raviente = NewRaviente() -} - func handleMsgSysNotifyRegister(s *Session, p mhfpacket.MHFPacket) {} diff --git a/server/channelserver/handlers_semaphore.go b/server/channelserver/handlers_semaphore.go index 503df5110..21b12682e 100644 --- a/server/channelserver/handlers_semaphore.go +++ b/server/channelserver/handlers_semaphore.go @@ -35,7 +35,7 @@ func destructEmptySemaphores(s *Session) { s.server.semaphoreLock.Unlock() delete(s.server.semaphore, id) s.server.semaphoreLock.Lock() - if strings.HasPrefix(id, "hs_l0u3B5") { + if strings.HasPrefix(id, "hs_l0") { releaseRaviSemaphore(s, sema) } s.logger.Debug("Destructed semaphore", zap.String("sema.id_semaphore", id)) @@ -49,7 +49,7 @@ func releaseRaviSemaphore(s *Session, sema *Semaphore) { delete(sema.clients, s) if strings.HasSuffix(sema.id_semaphore, "2") && len(sema.clients) == 0 { s.logger.Debug("Main raviente semaphore is empty, resetting") - resetRavi(s) + s.server.resetRaviente() } } @@ -60,7 +60,7 @@ func handleMsgSysDeleteSemaphore(s *Session, p mhfpacket.MHFPacket) { s.server.semaphoreLock.Lock() for id, sema := range s.server.semaphore { if sema.id == pkt.SemaphoreID { - if strings.HasPrefix(id, "hs_l0u3B5") { + if strings.HasPrefix(id, "hs_l0") { releaseRaviSemaphore(s, sema) s.server.semaphoreLock.Unlock() return @@ -84,7 +84,7 @@ func handleMsgSysCreateAcquireSemaphore(s *Session, p mhfpacket.MHFPacket) { fmt.Printf("Got reserve stage req, StageID: %v\n\n", SemaphoreID) if !exists { s.server.semaphoreLock.Lock() - if strings.HasPrefix(SemaphoreID, "hs_l0u3B5") { + if strings.HasPrefix(SemaphoreID, "hs_l0") { suffix, _ := strconv.Atoi(pkt.SemaphoreID[len(pkt.SemaphoreID)-1:]) s.server.semaphore[SemaphoreID] = &Semaphore{ id_semaphore: pkt.SemaphoreID, diff --git a/server/channelserver/sys_channel_server.go b/server/channelserver/sys_channel_server.go index 0de5650c0..8c0e9fe23 100644 --- a/server/channelserver/sys_channel_server.go +++ b/server/channelserver/sys_channel_server.go @@ -76,18 +76,17 @@ type Server struct { type Raviente struct { sync.Mutex + id uint16 register []uint32 state []uint32 support []uint32 } -func NewRaviente() *Raviente { - raviente := &Raviente{ - register: make([]uint32, 30), - state: make([]uint32, 30), - support: make([]uint32, 30), - } - return raviente +func (s *Server) resetRaviente() { + s.raviente.id = s.raviente.id + 1 + s.raviente.register = make([]uint32, 30) + s.raviente.state = make([]uint32, 30) + s.raviente.support = make([]uint32, 30) } func (s *Server) GetRaviMultiplier() float64 { @@ -158,7 +157,11 @@ func NewServer(config *Config) *Server { semaphoreIndex: 7, discordBot: config.DiscordBot, name: config.Name, - raviente: NewRaviente(), + raviente: &Raviente{ + register: make([]uint32, 30), + state: make([]uint32, 30), + support: make([]uint32, 30), + }, } // Mezeporta