summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--classic/ext_hack_control.go13
-rw-r--r--server/player.go13
-rw-r--r--server/server.go1
3 files changed, 26 insertions, 1 deletions
diff --git a/classic/ext_hack_control.go b/classic/ext_hack_control.go
new file mode 100644
index 0000000..1f65f91
--- /dev/null
+++ b/classic/ext_hack_control.go
@@ -0,0 +1,13 @@
+package classic
+
+type HackControl struct {
+ Flying byte
+ NoClip byte
+ Speeding byte
+ SpawnControl byte
+ ThirdPersonView byte
+ JumpHeight FShort
+}
+func (p *HackControl) PacketId() byte {
+ return 0x20
+}
diff --git a/server/player.go b/server/player.go
index e5a4547..5ac99da 100644
--- a/server/player.go
+++ b/server/player.go
@@ -86,13 +86,24 @@ func (p *player) kick(reason string) {
}
func (p *player) sendAuthInfo() {
- var userType byte
+ var userType, hacks byte
if p.state.Auth >= cheatAuth {
userType = classic.OpUser
+ hacks = 1
}
p.client.SendPacket(p, &classic.UpdateUserType {
Type: userType,
})
+ if p.extensions["HackControl"] {
+ p.client.SendPacket(p, &classic.HackControl {
+ Flying: hacks,
+ NoClip: hacks,
+ Speeding: hacks,
+ SpawnControl: hacks,
+ ThirdPersonView: 1,
+ JumpHeight: 40,
+ })
+ }
}
func (p *player) handlePacket(packet classic.Packet) {
diff --git a/server/server.go b/server/server.go
index a9ad605..6c73044 100644
--- a/server/server.go
+++ b/server/server.go
@@ -16,6 +16,7 @@ import (
var SoftwareName = "Metronode"
var supportedExtensions = []string {
"ExtEntityPositions",
+ "HackControl",
}
var requiredExtensions = []string {
"ExtEntityPositions",