elbot/sending.go

89 lines
1.7 KiB
Go

package main
import (
"encoding/binary"
"encoding/hex"
"fmt"
"net"
)
/* login to El */
func sendLogin(user string, password string) []byte {
s := user + " " + password
lungime := len(s) + 3
b := make([]byte, lungime+2)
b[0] = 140
b[1] = byte(lungime % 256)
b[2] = byte(lungime / 256)
copy(b[3:], s)
b[lungime+1] = 0
return b
}
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
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)
}