mirror of
https://github.com/Mezeporta/Erupe.git
synced 2025-12-13 07:25:03 +01:00
322 lines
18 KiB
Go
322 lines
18 KiB
Go
package channelserver
|
|
|
|
import (
|
|
"encoding/hex"
|
|
"erupe-ce/common/stringsupport"
|
|
_config "erupe-ce/config"
|
|
"time"
|
|
|
|
"erupe-ce/common/byteframe"
|
|
"erupe-ce/network/mhfpacket"
|
|
)
|
|
|
|
func cleanupDiva(s *Session) {
|
|
s.server.db.Exec("DELETE FROM events WHERE event_type='diva'")
|
|
}
|
|
|
|
func generateDivaTimestamps(s *Session, start uint32, debug bool) []uint32 {
|
|
timestamps := make([]uint32, 6)
|
|
midnight := TimeMidnight()
|
|
if debug && start <= 3 {
|
|
midnight := uint32(midnight.Unix())
|
|
switch start {
|
|
case 1:
|
|
timestamps[0] = midnight
|
|
timestamps[1] = timestamps[0] + 601200
|
|
timestamps[2] = timestamps[1] + 3900
|
|
timestamps[3] = timestamps[1] + 604800
|
|
timestamps[4] = timestamps[3] + 3900
|
|
timestamps[5] = timestamps[3] + 604800
|
|
case 2:
|
|
timestamps[0] = midnight - 605100
|
|
timestamps[1] = midnight - 3900
|
|
timestamps[2] = midnight
|
|
timestamps[3] = timestamps[1] + 604800
|
|
timestamps[4] = timestamps[3] + 3900
|
|
timestamps[5] = timestamps[3] + 604800
|
|
case 3:
|
|
timestamps[0] = midnight - 1213800
|
|
timestamps[1] = midnight - 608700
|
|
timestamps[2] = midnight - 604800
|
|
timestamps[3] = midnight - 3900
|
|
timestamps[4] = midnight
|
|
timestamps[5] = timestamps[3] + 604800
|
|
}
|
|
return timestamps
|
|
}
|
|
if start == 0 || TimeAdjusted().Unix() > int64(start)+2977200 {
|
|
cleanupDiva(s)
|
|
// Generate a new diva defense, starting midnight tomorrow
|
|
start = uint32(midnight.Add(24 * time.Hour).Unix())
|
|
s.server.db.Exec("INSERT INTO events (event_type, start_time) VALUES ('diva', to_timestamp($1)::timestamp without time zone)", start)
|
|
}
|
|
timestamps[0] = start
|
|
timestamps[1] = timestamps[0] + 601200
|
|
timestamps[2] = timestamps[1] + 3900
|
|
timestamps[3] = timestamps[1] + 604800
|
|
timestamps[4] = timestamps[3] + 3900
|
|
timestamps[5] = timestamps[3] + 604800
|
|
return timestamps
|
|
}
|
|
|
|
func handleMsgMhfGetUdSchedule(s *Session, p mhfpacket.MHFPacket) {
|
|
pkt := p.(*mhfpacket.MsgMhfGetUdSchedule)
|
|
bf := byteframe.NewByteFrame()
|
|
|
|
id, start := uint32(0xCAFEBEEF), uint32(0)
|
|
rows, _ := s.server.db.Queryx("SELECT id, (EXTRACT(epoch FROM start_time)::int) as start_time FROM events WHERE event_type='diva'")
|
|
for rows.Next() {
|
|
rows.Scan(&id, &start)
|
|
}
|
|
|
|
var timestamps []uint32
|
|
if s.server.erupeConfig.DebugOptions.DivaOverride >= 0 {
|
|
if s.server.erupeConfig.DebugOptions.DivaOverride == 0 {
|
|
if s.server.erupeConfig.RealClientMode >= _config.Z2 {
|
|
doAckBufSucceed(s, pkt.AckHandle, make([]byte, 36))
|
|
} else {
|
|
doAckBufSucceed(s, pkt.AckHandle, make([]byte, 32))
|
|
}
|
|
return
|
|
}
|
|
timestamps = generateDivaTimestamps(s, uint32(s.server.erupeConfig.DebugOptions.DivaOverride), true)
|
|
} else {
|
|
timestamps = generateDivaTimestamps(s, start, false)
|
|
}
|
|
|
|
if s.server.erupeConfig.RealClientMode >= _config.Z2 {
|
|
bf.WriteUint32(id)
|
|
}
|
|
for i := range timestamps {
|
|
bf.WriteUint32(timestamps[i])
|
|
}
|
|
|
|
bf.WriteUint16(0x19) // Unk 00011001
|
|
bf.WriteUint16(0x2D) // Unk 00101101
|
|
bf.WriteUint16(0x02) // Unk 00000010
|
|
bf.WriteUint16(0x02) // Unk 00000010
|
|
|
|
doAckBufSucceed(s, pkt.AckHandle, bf.Data())
|
|
}
|
|
|
|
func handleMsgMhfGetUdInfo(s *Session, p mhfpacket.MHFPacket) {
|
|
pkt := p.(*mhfpacket.MsgMhfGetUdInfo)
|
|
// Message that appears on the Diva Defense NPC and triggers the green exclamation mark
|
|
udInfos := []struct {
|
|
Text string
|
|
StartTime time.Time
|
|
EndTime time.Time
|
|
}{}
|
|
|
|
resp := byteframe.NewByteFrame()
|
|
resp.WriteUint8(uint8(len(udInfos)))
|
|
for _, udInfo := range udInfos {
|
|
resp.WriteBytes(stringsupport.PaddedString(udInfo.Text, 1024, true))
|
|
resp.WriteUint32(uint32(udInfo.StartTime.Unix()))
|
|
resp.WriteUint32(uint32(udInfo.EndTime.Unix()))
|
|
}
|
|
|
|
doAckBufSucceed(s, pkt.AckHandle, resp.Data())
|
|
}
|
|
|
|
func handleMsgMhfGetKijuInfo(s *Session, p mhfpacket.MHFPacket) {
|
|
pkt := p.(*mhfpacket.MsgMhfGetKijuInfo)
|
|
// Temporary canned response
|
|
data, _ := hex.DecodeString("04965C959782CC8B468EEC00000000000000000000000000000000000000000000815C82A082E782B582DC82A982BA82CC82AB82B682E3815C0A965C959782C682CD96D282E98E7682A281420A95B782AD8ED282C997458B4382F0975E82A682E98142000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001018BAD8C8282CC8B468EEC00000000000000000000000000000000000000000000815C82AB82E582A482B082AB82CC82AB82B682E3815C0A8BAD8C8282C682CD8BAD82A290BA904681420A95B782AD8ED282CC97CD82F08CA482AC909F82DC82B78142200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003138C8B8F5782CC8B468EEC00000000000000000000000000000000000000000000815C82AF82C182B582E382A482CC82AB82B682E3815C0A8C8B8F5782C682CD8A6D8CC582BD82E9904D978A81420A8F5782DF82E982D982C782C98EEB906C82BD82BF82CC90B8905F97CD82C682C882E9814200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041189CC8CEC82CC8B468EEC00000000000000000000000000000000000000000000815C82A482BD82DC82E082E882CC82AB82B682E3815C0A89CC8CEC82C682CD89CC955082CC8CEC82E881420A8F5782DF82E982D982C782C98EEB906C82BD82BF82CC8E7882A682C682C882E9814220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000212")
|
|
doAckBufSucceed(s, pkt.AckHandle, data)
|
|
}
|
|
|
|
func handleMsgMhfSetKiju(s *Session, p mhfpacket.MHFPacket) {
|
|
pkt := p.(*mhfpacket.MsgMhfSetKiju)
|
|
doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00})
|
|
}
|
|
|
|
func handleMsgMhfAddUdPoint(s *Session, p mhfpacket.MHFPacket) {
|
|
pkt := p.(*mhfpacket.MsgMhfAddUdPoint)
|
|
doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00})
|
|
}
|
|
|
|
func handleMsgMhfGetUdMyPoint(s *Session, p mhfpacket.MHFPacket) {
|
|
pkt := p.(*mhfpacket.MsgMhfGetUdMyPoint)
|
|
// Temporary canned response
|
|
data, _ := hex.DecodeString("00040000013C000000FA000000000000000000040000007E0000003C02000000000000000000000000000000000000000000000000000002000004CC00000438000000000000000000000000000000000000000000000000000000020000026E00000230000000000000000000020000007D0000007D000000000000000000000000000000000000000000000000000000")
|
|
doAckBufSucceed(s, pkt.AckHandle, data)
|
|
}
|
|
|
|
func handleMsgMhfGetUdTotalPointInfo(s *Session, p mhfpacket.MHFPacket) {
|
|
pkt := p.(*mhfpacket.MsgMhfGetUdTotalPointInfo)
|
|
// Temporary canned response
|
|
data, _ := hex.DecodeString("00000000000007A12000000000000F424000000000001E848000000000002DC6C000000000003D090000000000004C4B4000000000005B8D8000000000006ACFC000000000007A1200000000000089544000000000009896800000000000E4E1C00000000001312D0000000000017D78400000000001C9C3800000000002160EC00000000002625A000000000002AEA5400000000002FAF0800000000003473BC0000000000393870000000000042C1D800000000004C4B40000000000055D4A800000000005F5E10000000000008954400000000001C9C3800000000003473BC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001020300000000000000000000000000000000000000000000000000000000000000000000000000000000101F1420")
|
|
doAckBufSucceed(s, pkt.AckHandle, data)
|
|
}
|
|
|
|
func handleMsgMhfGetUdSelectedColorInfo(s *Session, p mhfpacket.MHFPacket) {
|
|
pkt := p.(*mhfpacket.MsgMhfGetUdSelectedColorInfo)
|
|
|
|
// Unk
|
|
doAckBufSucceed(s, pkt.AckHandle, []byte{0x00, 0x01, 0x01, 0x01, 0x02, 0x03, 0x02, 0x00, 0x00})
|
|
}
|
|
|
|
func handleMsgMhfGetUdMonsterPoint(s *Session, p mhfpacket.MHFPacket) {
|
|
pkt := p.(*mhfpacket.MsgMhfGetUdMonsterPoint)
|
|
|
|
monsterPoints := []struct {
|
|
MID uint8
|
|
Points uint16
|
|
}{
|
|
{MID: 0x01, Points: 0x3C}, // em1 Rathian
|
|
{MID: 0x02, Points: 0x5A}, // em2 Fatalis
|
|
{MID: 0x06, Points: 0x14}, // em6 Yian Kut-Ku
|
|
{MID: 0x07, Points: 0x50}, // em7 Lao-Shan Lung
|
|
{MID: 0x08, Points: 0x28}, // em8 Cephadrome
|
|
{MID: 0x0B, Points: 0x3C}, // em11 Rathalos
|
|
{MID: 0x0E, Points: 0x3C}, // em14 Diablos
|
|
{MID: 0x0F, Points: 0x46}, // em15 Khezu
|
|
{MID: 0x11, Points: 0x46}, // em17 Gravios
|
|
{MID: 0x14, Points: 0x28}, // em20 Gypceros
|
|
{MID: 0x15, Points: 0x3C}, // em21 Plesioth
|
|
{MID: 0x16, Points: 0x32}, // em22 Basarios
|
|
{MID: 0x1A, Points: 0x32}, // em26 Monoblos
|
|
{MID: 0x1B, Points: 0x0A}, // em27 Velocidrome
|
|
{MID: 0x1C, Points: 0x0A}, // em28 Gendrome
|
|
{MID: 0x1F, Points: 0x0A}, // em31 Iodrome
|
|
{MID: 0x21, Points: 0x50}, // em33 Kirin
|
|
{MID: 0x24, Points: 0x64}, // em36 Crimson Fatalis
|
|
{MID: 0x25, Points: 0x3C}, // em37 Pink Rathian
|
|
{MID: 0x26, Points: 0x1E}, // em38 Blue Yian Kut-Ku
|
|
{MID: 0x27, Points: 0x28}, // em39 Purple Gypceros
|
|
{MID: 0x28, Points: 0x50}, // em40 Yian Garuga
|
|
{MID: 0x29, Points: 0x5A}, // em41 Silver Rathalos
|
|
{MID: 0x2A, Points: 0x50}, // em42 Gold Rathian
|
|
{MID: 0x2B, Points: 0x3C}, // em43 Black Diablos
|
|
{MID: 0x2C, Points: 0x3C}, // em44 White Monoblos
|
|
{MID: 0x2D, Points: 0x46}, // em45 Red Khezu
|
|
{MID: 0x2E, Points: 0x3C}, // em46 Green Plesioth
|
|
{MID: 0x2F, Points: 0x50}, // em47 Black Gravios
|
|
{MID: 0x30, Points: 0x1E}, // em48 Daimyo Hermitaur
|
|
{MID: 0x31, Points: 0x3C}, // em49 Azure Rathalos
|
|
{MID: 0x32, Points: 0x50}, // em50 Ashen Lao-Shan Lung
|
|
{MID: 0x33, Points: 0x3C}, // em51 Blangonga
|
|
{MID: 0x34, Points: 0x28}, // em52 Congalala
|
|
{MID: 0x35, Points: 0x50}, // em53 Rajang
|
|
{MID: 0x36, Points: 0x6E}, // em54 Kushala Daora
|
|
{MID: 0x37, Points: 0x50}, // em55 Shen Gaoren
|
|
{MID: 0x3A, Points: 0x50}, // em58 Yama Tsukami
|
|
{MID: 0x3B, Points: 0x6E}, // em59 Chameleos
|
|
{MID: 0x40, Points: 0x64}, // em64 Lunastra
|
|
{MID: 0x41, Points: 0x6E}, // em65 Teostra
|
|
{MID: 0x43, Points: 0x28}, // em67 Shogun Ceanataur
|
|
{MID: 0x44, Points: 0x0A}, // em68 Bulldrome
|
|
{MID: 0x47, Points: 0x6E}, // em71 White Fatalis
|
|
{MID: 0x4A, Points: 0xFA}, // em74 Hypnocatrice
|
|
{MID: 0x4B, Points: 0xFA}, // em75 Lavasioth
|
|
{MID: 0x4C, Points: 0x46}, // em76 Tigrex
|
|
{MID: 0x4D, Points: 0x64}, // em77 Akantor
|
|
{MID: 0x4E, Points: 0xFA}, // em78 Bright Hypnoc
|
|
{MID: 0x4F, Points: 0xFA}, // em79 Lavasioth Subspecies
|
|
{MID: 0x50, Points: 0xFA}, // em80 Espinas
|
|
{MID: 0x51, Points: 0xFA}, // em81 Orange Espinas
|
|
{MID: 0x52, Points: 0xFA}, // em82 White Hypnoc
|
|
{MID: 0x53, Points: 0xFA}, // em83 Akura Vashimu
|
|
{MID: 0x54, Points: 0xFA}, // em84 Akura Jebia
|
|
{MID: 0x55, Points: 0xFA}, // em85 Berukyurosu
|
|
{MID: 0x59, Points: 0xFA}, // em89 Pariapuria
|
|
{MID: 0x5A, Points: 0xFA}, // em90 White Espinas
|
|
{MID: 0x5B, Points: 0xFA}, // em91 Kamu Orugaron
|
|
{MID: 0x5C, Points: 0xFA}, // em92 Nono Orugaron
|
|
{MID: 0x5E, Points: 0xFA}, // em94 Dyuragaua
|
|
{MID: 0x5F, Points: 0xFA}, // em95 Doragyurosu
|
|
{MID: 0x60, Points: 0xFA}, // em96 Gurenzeburu
|
|
{MID: 0x63, Points: 0xFA}, // em99 Rukodiora
|
|
{MID: 0x65, Points: 0xFA}, // em101 Gogomoa
|
|
{MID: 0x67, Points: 0xFA}, // em103 Taikun Zamuza
|
|
{MID: 0x68, Points: 0xFA}, // em104 Abiorugu
|
|
{MID: 0x69, Points: 0xFA}, // em105 Kuarusepusu
|
|
{MID: 0x6A, Points: 0xFA}, // em106 Odibatorasu
|
|
{MID: 0x6B, Points: 0xFA}, // em107 Disufiroa
|
|
{MID: 0x6C, Points: 0xFA}, // em108 Rebidiora
|
|
{MID: 0x6D, Points: 0xFA}, // em109 Anorupatisu
|
|
{MID: 0x6E, Points: 0xFA}, // em110 Hyujikiki
|
|
{MID: 0x6F, Points: 0xFA}, // em111 Midogaron
|
|
{MID: 0x70, Points: 0xFA}, // em112 Giaorugu
|
|
{MID: 0x72, Points: 0xFA}, // em114 Farunokku
|
|
{MID: 0x73, Points: 0xFA}, // em115 Pokaradon
|
|
{MID: 0x74, Points: 0xFA}, // em116 Shantien
|
|
{MID: 0x77, Points: 0xFA}, // em119 Goruganosu
|
|
{MID: 0x78, Points: 0xFA}, // em120 Aruganosu
|
|
{MID: 0x79, Points: 0xFA}, // em121 Baruragaru
|
|
{MID: 0x7A, Points: 0xFA}, // em122 Zerureusu
|
|
{MID: 0x7B, Points: 0xFA}, // em123 Gougarf
|
|
{MID: 0x7D, Points: 0xFA}, // em125 Forokururu
|
|
{MID: 0x7E, Points: 0xFA}, // em126 Meraginasu
|
|
{MID: 0x7F, Points: 0xFA}, // em127 Diorekkusu
|
|
{MID: 0x80, Points: 0xFA}, // em128 Garuba Daora
|
|
{MID: 0x81, Points: 0xFA}, // em129 Inagami
|
|
{MID: 0x82, Points: 0xFA}, // em130 Varusaburosu
|
|
{MID: 0x83, Points: 0xFA}, // em131 Poborubarumu
|
|
{MID: 0x8B, Points: 0xFA}, // em139 Gureadomosu
|
|
{MID: 0x8C, Points: 0xFA}, // em140 Harudomerugu
|
|
{MID: 0x8D, Points: 0xFA}, // em141 Toridcless
|
|
{MID: 0x8E, Points: 0xFA}, // em142 Gasurabazura
|
|
{MID: 0x90, Points: 0xFA}, // em144 Yama Kurai
|
|
{MID: 0x92, Points: 0x78}, // em146 Zinogre
|
|
{MID: 0x93, Points: 0x78}, // em147 Deviljho
|
|
{MID: 0x94, Points: 0x78}, // em148 Brachydios
|
|
{MID: 0x96, Points: 0xFA}, // em150 Toa Tesukatora
|
|
{MID: 0x97, Points: 0x78}, // em151 Barioth
|
|
{MID: 0x98, Points: 0x78}, // em152 Uragaan
|
|
{MID: 0x99, Points: 0x78}, // em153 Stygian Zinogre
|
|
{MID: 0x9A, Points: 0xFA}, // em154 Guanzorumu
|
|
{MID: 0x9E, Points: 0xFA}, // em158 Voljang
|
|
{MID: 0x9F, Points: 0x78}, // em159 Nargacuga
|
|
{MID: 0xA0, Points: 0xFA}, // em160 Keoaruboru
|
|
{MID: 0xA1, Points: 0xFA}, // em161 Zenaserisu
|
|
{MID: 0xA2, Points: 0x78}, // em162 Gore Magala
|
|
{MID: 0xA4, Points: 0x78}, // em164 Shagaru Magala
|
|
{MID: 0xA5, Points: 0x78}, // em165 Amatsu
|
|
{MID: 0xA6, Points: 0xFA}, // em166 Elzelion
|
|
{MID: 0xA9, Points: 0x78}, // em169 Seregios
|
|
{MID: 0xAA, Points: 0xFA}, // em170 Bogabadorumu
|
|
}
|
|
|
|
resp := byteframe.NewByteFrame()
|
|
resp.WriteUint8(uint8(len(monsterPoints)))
|
|
for _, mp := range monsterPoints {
|
|
resp.WriteUint8(mp.MID)
|
|
resp.WriteUint16(mp.Points)
|
|
}
|
|
|
|
doAckBufSucceed(s, pkt.AckHandle, resp.Data())
|
|
}
|
|
|
|
func handleMsgMhfGetUdDailyPresentList(s *Session, p mhfpacket.MHFPacket) {
|
|
pkt := p.(*mhfpacket.MsgMhfGetUdDailyPresentList)
|
|
// Temporary canned response
|
|
data, _ := hex.DecodeString("0100001600000A5397DF00000000000000000000000000000000")
|
|
doAckBufSucceed(s, pkt.AckHandle, data)
|
|
}
|
|
|
|
func handleMsgMhfGetUdNormaPresentList(s *Session, p mhfpacket.MHFPacket) {
|
|
pkt := p.(*mhfpacket.MsgMhfGetUdNormaPresentList)
|
|
// Temporary canned response
|
|
data, _ := hex.DecodeString("0100001600000A5397DF00000000000000000000000000000000")
|
|
doAckBufSucceed(s, pkt.AckHandle, data)
|
|
}
|
|
|
|
func handleMsgMhfAcquireUdItem(s *Session, p mhfpacket.MHFPacket) {
|
|
pkt := p.(*mhfpacket.MsgMhfAcquireUdItem)
|
|
doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00})
|
|
}
|
|
|
|
func handleMsgMhfGetUdRanking(s *Session, p mhfpacket.MHFPacket) {
|
|
pkt := p.(*mhfpacket.MsgMhfGetUdRanking)
|
|
doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00})
|
|
}
|
|
|
|
func handleMsgMhfGetUdMyRanking(s *Session, p mhfpacket.MHFPacket) {
|
|
pkt := p.(*mhfpacket.MsgMhfGetUdMyRanking)
|
|
// Temporary canned response
|
|
data, _ := hex.DecodeString("00000515000005150000CEB4000003CE000003CE0000CEB44D49444E494748542D414E47454C0000000000000000000000")
|
|
doAckBufSucceed(s, pkt.AckHandle, data)
|
|
}
|