-
Notifications
You must be signed in to change notification settings - Fork 3
/
packethandler.go
49 lines (43 loc) · 1.16 KB
/
packethandler.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package main
import "fmt"
import "math/rand"
import "strings"
type PacketHandler struct {
player Player
}
func (handler *PacketHandler) loginRequest(packet *packet) {
packet.readByte() // reconnecting := packet.readByte() == 1
version := packet.readInt()
fmt.Printf("Version:%d\n", version)
packet.readInt()
packet.readInt()
packet.readInt()
packet.readInt()
userHash := packet.readLong()
password := strings.TrimSpace(string(packet.data[packet.currentOffset:]))
handler.player.password = password
fmt.Println(userHash)
fmt.Println(password)
}
func (handler *PacketHandler) sessionIDRequest(packet *packet) {
handler.player.session.uID = packet.readByte() & 0xFF
id := int64(rand.Uint32())<<32 + int64(rand.Uint32())
handler.player.session.id = id
handler.player.session.WriteLong(id)
}
func (handler *PacketHandler) HandlePacket(packet *packet) {
switch packet.opcode {
case 32:
handler.sessionIDRequest(packet)
break
case 0:
handler.loginRequest(packet)
break
default:
fmt.Printf("Unhandled packet[opcode:%d; length:%d]\n", packet.opcode, packet.length)
break
}
}
func NewPacketHandler(player Player) PacketHandler {
return PacketHandler{player}
}