remove robot.py
This commit is contained in:
parent
0174c7bdef
commit
a2e3b63feb
@ -1,195 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import websocket
|
||||
import sys
|
||||
import ssl
|
||||
import json
|
||||
import datetime
|
||||
import urllib.request
|
||||
|
||||
import cs_proto_pb2
|
||||
import cs_msgid_pb2
|
||||
|
||||
#from google.protobuf import json_format
|
||||
import pprint
|
||||
|
||||
try:
|
||||
import thread
|
||||
except ImportError:
|
||||
import _thread as thread
|
||||
import time
|
||||
|
||||
def getSession(account_id):
|
||||
url = 'https://login-test.kingsome.cn/webapp/index.php?c=Login&a=auth&'
|
||||
params = {
|
||||
'openid': sys.argv[2],
|
||||
'token': sys.argv[2],
|
||||
'gameid': 1008,
|
||||
'channel': '6000'
|
||||
}
|
||||
real_url = url + urllib.parse.urlencode(params)
|
||||
print(real_url)
|
||||
req = urllib.request.Request(real_url)
|
||||
data = urllib.request.urlopen(req).read()
|
||||
print(data)
|
||||
return json.loads(data.decode('utf-8'))['session_id']
|
||||
|
||||
def inputCommand(ws):
|
||||
cmdline= input('')
|
||||
idx = cmdline.find(' ')
|
||||
if idx <= 0:
|
||||
cmdline += '()'
|
||||
else:
|
||||
cmdline = cmdline[:idx] + '(' + cmdline[idx + 1:] + ')'
|
||||
msg = eval('cs_proto_pb2.' + cmdline)
|
||||
sendMsg(ws, msg)
|
||||
inputCommand(ws)
|
||||
|
||||
def getSMMsgEnum(sm_msgid):
|
||||
sm_e = cs_msgid_pb2._SMMESSAGEID_E
|
||||
for e in sm_e.values:
|
||||
if e.number == sm_msgid:
|
||||
return e
|
||||
return None
|
||||
|
||||
def getSMMsg(sm_msgid):
|
||||
sm_e = getSMMsgEnum(sm_msgid)
|
||||
msg = eval('cs_proto_pb2.' + sm_e.name[1:] + '()')
|
||||
return msg
|
||||
|
||||
#g_remote_ip = "ws://127.0.0.1:" + sys.argv[1]
|
||||
g_remote_ip = sys.argv[1]
|
||||
g_account_id = '6000_2001_' + sys.argv[2]
|
||||
g_session_id = getSession(g_account_id)
|
||||
g_server_id = sys.argv[4]
|
||||
g_seqid = 1000
|
||||
g_login_time = time.time()
|
||||
g_active_player_id = 0
|
||||
|
||||
recv_buf = bytearray()
|
||||
|
||||
def sendMsg(ws, msg):
|
||||
# print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f'))
|
||||
global g_seqid
|
||||
++g_seqid
|
||||
msgid = eval('cs_msgid_pb2._' + msg.DESCRIPTOR.name)
|
||||
|
||||
enmsg = msg.SerializeToString()
|
||||
pktlen_str = bytes([(len(enmsg) & 0xFF) , (len(enmsg) >> 8 & 0xFF)])
|
||||
msgid_str = bytes([(msgid & 0xFF) , (msgid >> 8 & 0xFF)])
|
||||
seqid_str = bytes([(g_seqid & 0xFF) , (g_seqid >> 8 & 0xFF) , \
|
||||
(g_seqid >> 16 & 0xFF) , (g_seqid >> 24 & 0xFF)])
|
||||
sign_str = bytes([ord('K'), ord('S')])
|
||||
reserved_str = bytes([0, 0])
|
||||
buff = pktlen_str + msgid_str + seqid_str + sign_str + reserved_str + enmsg
|
||||
|
||||
ws.send (buff, 2)
|
||||
# print(time.time(), time.strftime('[%H:%M:%S]'), msg.DESCRIPTOR.name + '{')
|
||||
# print(str(msg),)
|
||||
# print('}')
|
||||
# print('')
|
||||
|
||||
def sendCMMove(ws):
|
||||
msg = cs_proto_pb2.CMMove()
|
||||
msg.spectate = True
|
||||
sendMsg(ws, msg)
|
||||
|
||||
def onMessage(ws, message):
|
||||
global recv_buf
|
||||
|
||||
# print('onMessage', len(message))
|
||||
data = bytearray(message)
|
||||
recv_buf += data
|
||||
parserPacket(ws)
|
||||
|
||||
def parserPacket(ws):
|
||||
global recv_buf
|
||||
while len(recv_buf) >= 8:
|
||||
pktlen = recv_buf[0] + (recv_buf[1] << 8)
|
||||
msgid = recv_buf[2] + (recv_buf[3] << 8)
|
||||
seqid = recv_buf[4] + \
|
||||
(recv_buf[5] << 8) + \
|
||||
(recv_buf[6] << 16) + \
|
||||
(recv_buf[7] << 24)
|
||||
sign = recv_buf[8] + (recv_buf[9] << 8)
|
||||
resv = recv_buf[10] + (recv_buf[11] << 8)
|
||||
if len(recv_buf) >= 12 + pktlen:
|
||||
msgbody = recv_buf[12 : 12 + pktlen]
|
||||
onUserPacket(ws, msgid, msgbody)
|
||||
recv_buf = recv_buf[12 + pktlen:]
|
||||
|
||||
def procSMUpdate(msg):
|
||||
global g_active_player_id
|
||||
if msg.active_player_id != 0:
|
||||
g_active_player_id = msg.active_player_id
|
||||
print(g_active_player_id)
|
||||
for part_obj in msg.part_objects:
|
||||
if part_obj.object_type == 1 and part_obj.union_obj_1.obj_uniid == g_active_player_id:
|
||||
pass
|
||||
# print(part_obj)
|
||||
for full_obj in msg.full_objects:
|
||||
if full_obj.object_type == 1 and full_obj.union_obj_1.obj_uniid == g_active_player_id:
|
||||
if full_obj.union_obj_1.dead:
|
||||
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f'))
|
||||
print(full_obj)
|
||||
|
||||
def onUserPacket(ws, msgid, msgbody):
|
||||
print('onUserPacket')
|
||||
global g_login_time
|
||||
if time.time() - g_login_time > 30:
|
||||
sendCMMove(ws)
|
||||
try:
|
||||
if msgid == 1004:
|
||||
msg = getSMMsg(msgid)
|
||||
ret = msg.ParseFromString(msgbody)
|
||||
procSMUpdate(msg)
|
||||
if msgid != 1009 and msgid != 1005:
|
||||
return
|
||||
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f'))
|
||||
msg = getSMMsg(msgid)
|
||||
ret = msg.ParseFromString(msgbody)
|
||||
print(len(msgbody))
|
||||
print(time.time(), time.strftime('[%H:%M:%S]'), msg.DESCRIPTOR.name + '{')
|
||||
print(str(msg),)
|
||||
print('}')
|
||||
print('')
|
||||
except Exception as e:
|
||||
print('onUserPacket', e)
|
||||
|
||||
def onError (ws, error):
|
||||
print (error)
|
||||
|
||||
def onClose (ws):
|
||||
print ("### closed ###")
|
||||
|
||||
def opOpen (ws):
|
||||
print('opOpen', time.time())
|
||||
def run (*args):
|
||||
global g_remote_ip
|
||||
global g_account_id
|
||||
global g_session_id
|
||||
global g_server_id
|
||||
msg = cs_proto_pb2.CMJoin()
|
||||
msg.server_id = int(g_server_id)
|
||||
msg.account_id = g_account_id
|
||||
msg.name = "aozhwei12345678"
|
||||
print(msg.DESCRIPTOR.name, 'zzzzz')
|
||||
sendMsg(ws, msg)
|
||||
while True:
|
||||
inputCommand(ws)
|
||||
time.sleep(500)
|
||||
ws.close ()
|
||||
print ("thread terminating...")
|
||||
thread.start_new_thread (run, ())
|
||||
|
||||
print(time.time())
|
||||
print(g_remote_ip)
|
||||
|
||||
if __name__ == "__main__":
|
||||
# websocket.enableTrace(True)
|
||||
ws = websocket.WebSocketApp (g_remote_ip,
|
||||
on_message = onMessage,
|
||||
on_error = onError,
|
||||
on_close = onClose
|
||||
)
|
||||
ws.on_open = opOpen
|
||||
ws.run_forever ()
|
Loading…
x
Reference in New Issue
Block a user