@@ -14,8 +14,6 @@ type Bot struct {
1414
1515 state * state.GameState
1616
17- UserActions chan []byte // packets sent by client to server
18-
1917 clientConn protocol.Connection
2018 serverConn protocol.Connection
2119 stopChan chan struct {} // The broadcast channel
@@ -27,8 +25,6 @@ func NewBot(state *state.GameState, clientConn protocol.Connection, serverConn p
2725 return & Bot {
2826 state : state ,
2927
30- UserActions : make (chan []byte , 1024 ),
31-
3228 clientConn : clientConn ,
3329 serverConn : serverConn ,
3430 stopChan : make (chan struct {}),
@@ -39,7 +35,6 @@ func (b *Bot) Start() {
3935 log .Println ("[Bot] Engine started" )
4036
4137 b .runModule ("LightHack" , b .loopLightHack )
42- b .runModule ("HandleUserAction" , b .loopHandleUserAction )
4338 b .runModule ("Fishing" , b .loopFishing )
4439 b .runModule ("UI" , b .loopWebUI )
4540}
@@ -100,29 +95,6 @@ func (b *Bot) loopLightHack() {
10095 }
10196}
10297
103- func (b * Bot ) loopHandleUserAction () {
104- for {
105- select {
106- case <- b .stopChan :
107- return
108- case packet := <- b .UserActions :
109- b .handleUserAction (packet )
110- }
111- }
112- }
113-
114- func (b * Bot ) handleUserAction (rawMsg []byte ) {
115- packetReader := protocol .NewPacketReader (rawMsg )
116- packet , err := packets .ReadAndParseC2S (packetReader )
117- if err != nil {
118- return
119- }
120- switch p := packet .(type ) {
121- case * packets.LookRequest :
122- log .Printf ("User looked at item ID: %d" , p .ItemId )
123- }
124- }
125-
12698// InterceptS2CPacket has to return immediately.
12799func (b * Bot ) InterceptS2CPacket (data []byte ) ([]byte , error ) {
128100 pr := protocol .NewPacketReader (data )
@@ -136,3 +108,28 @@ func (b *Bot) InterceptS2CPacket(data []byte) ([]byte, error) {
136108 }
137109 return data , nil
138110}
111+
112+ // InterceptC2SPacket has to return immediately.
113+ func (b * Bot ) InterceptC2SPacket (data []byte ) ([]byte , error ) {
114+ pr := protocol .NewPacketReader (data )
115+ firstByte , err := pr .PeekUint8 ()
116+ if err != nil {
117+ log .Println ("[Bot] InterceptC2SPacket err:" , err )
118+ return data , err
119+ }
120+ opcode := packets .C2SOpcode (firstByte )
121+ switch opcode {
122+ case packets .C2SLookRequest :
123+ b .handleLookRequest (pr )
124+ }
125+ return data , nil
126+ }
127+
128+ func (b * Bot ) handleLookRequest (pr * protocol.PacketReader ) {
129+ p , err := packets .ParseLookRequest (pr )
130+ if err != nil {
131+ log .Printf ("Failed to parse look request: %v" , err )
132+ return
133+ }
134+ log .Printf ("User looked at item ID: %d" , p .ItemId )
135+ }
0 commit comments