97 lines
1.9 KiB
Go
97 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/binary"
|
|
"net"
|
|
)
|
|
|
|
/* Login to El */
|
|
func sendLogin(c net.Conn, user string, password string) {
|
|
s := user + " " + password
|
|
length := len(s) + 3
|
|
b := make([]byte, length+2)
|
|
b[0] = 140
|
|
b[1] = byte(length % 256)
|
|
b[2] = byte(length / 256)
|
|
copy(b[3:], s)
|
|
b[length+1] = 0
|
|
binary.Write(c, binary.LittleEndian, b)
|
|
}
|
|
|
|
/* Send back to server what we received */
|
|
func sendPingReply(c net.Conn, b []byte) {
|
|
ping_reply := make([]byte, 7)
|
|
for i := 0; i < 7; i++ {
|
|
ping_reply[i] = b[i]
|
|
}
|
|
binary.Write(c, binary.LittleEndian, ping_reply)
|
|
}
|
|
|
|
func sendMessage(c net.Conn, user string, mesaj string) {
|
|
s := user + " " + mesaj
|
|
msg := make([]byte, len(s)+3)
|
|
msg[0] = 2
|
|
msg[1] = byte((len(s) + 1) % 256)
|
|
msg[2] = byte((len(s) + 1) / 256)
|
|
copy(msg[3:], s)
|
|
binary.Write(c, binary.LittleEndian, msg)
|
|
}
|
|
|
|
func sendHeartBeat(c net.Conn) {
|
|
hb := make([]byte, 3)
|
|
hb[0] = 14
|
|
hb[1] = 1
|
|
hb[2] = 0
|
|
binary.Write(c, binary.LittleEndian, hb)
|
|
}
|
|
|
|
/* // Not used right now
|
|
func sendMeMyActors(c net.Conn) {
|
|
msg := make([]byte, 3)
|
|
msg[0] = 8
|
|
msg[1] = 1
|
|
msg[2] = 0
|
|
binary.Write(c, binary.LittleEndian, msg)
|
|
}
|
|
*/
|
|
func sendTrade(c net.Conn, actor int) {
|
|
msg := make([]byte, 7)
|
|
msg[0] = 32
|
|
msg[1] = 5
|
|
msg[2] = 0
|
|
msg[3] = byte(actor % 256)
|
|
msg[4] = byte(actor / 256)
|
|
msg[5] = 0
|
|
msg[6] = 0
|
|
// @TODO@ - Add proper debug statement
|
|
// fmt.Printf("Send trade hex dump: %s\n", hex.Dump(msg))
|
|
binary.Write(c, binary.LittleEndian, msg)
|
|
|
|
}
|
|
|
|
func putItemOnTrade(c net.Conn, quantity int, inv_index int) {
|
|
|
|
msg := make([]byte, 9)
|
|
msg[0] = PUT_OBJECT_ON_TRADE
|
|
msg[1] = 7
|
|
msg[2] = 0
|
|
msg[3] = 1
|
|
msg[4] = byte(inventar[inv_index].Pos)
|
|
msg[5] = byte(quantity % 256)
|
|
msg[6] = byte(quantity / 256)
|
|
msg[7] = 0
|
|
msg[8] = 0
|
|
binary.Write(c, binary.LittleEndian, msg)
|
|
}
|
|
|
|
func acceptTrade(c net.Conn) {
|
|
msg := make([]byte, 19)
|
|
msg[0] = ACCEPT_TRADE
|
|
msg[1] = 17
|
|
msg[2] = 0
|
|
for i := 0; i < 16; i++ {
|
|
msg[3+i] = 1
|
|
}
|
|
binary.Write(c, binary.LittleEndian, msg)
|
|
}
|