def launch(self): message = msg_base.ProtobufMessage( steammessages_clientserver_pb2.CMsgClientGamesPlayed, EMsg.ClientGamesPlayed) message.body.games_played.add(game_id=self.appid) self.gc.client.connection.send_message(message) time.sleep(3) try: response = self.sendClientHello() if Util.get_msg( response.body.msgtype ) == csgo_base.EGCBaseClientMsg.k_EMsgGCClientWelcome: logEvent('Launch successful!') return True else: logEvent('Tried to launch, but got ' + str(Util.get_msg(response.body.msgtype))) return False except Exception: logEvent( 'Not connected, client hello failed to respond. (This is normal on first attempt)' ) return False
def launch(self): message = msg_base.ProtobufMessage(steammessages_clientserver_pb2.CMsgClientGamesPlayed, EMsg.ClientGamesPlayed) message.body.games_played.add(game_id=self.appid) self.gc.client.connection.send_message(message) time.sleep(3) response = self.sendClientHello() if Util.get_msg(response.body.msgtype) == csgo_base.EGCBaseClientMsg.k_EMsgGCClientWelcome: logEvent("Launch successful!") return True else: logEvent("Tried to launch, but got " + str(Util.get_msg(response.body.msgtype))) return False
def requestEconData(self, param_a, param_d, param_s=0, param_m=0): message = msg_base.ProtobufMessage( cstrike15_gcmessages_pb2.CMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockRequest, csgo_base.ECSGOCMsg.k_EMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockRequest, ) message.body.param_s = param_s # SteamID message.body.param_a = param_a # AssetID message.body.param_d = param_d message.body.param_m = param_m # MarketID self.gc.gcSend(message) response = self.gc.client.wait_for_message(EMsg.ClientFromGC, timeout=5.0) if response == "Timed Out": return "Steam servers did not respond, your time delay is probably too small." elif ( Util.get_msg(response.body.msgtype) == csgo_base.ECSGOCMsg.k_EMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockResponse ): econData = self.gc.gcFrom( response.body.payload, cstrike15_gcmessages_pb2.CMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockResponse ) return econData else: return "Response was not of type EconPreviewDataBlockResponse"
def requestEconData(self, param_a, param_d, param_s=0, param_m=0): message = msg_base.ProtobufMessage( cstrike15_gcmessages_pb2. CMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockRequest, csgo_base.ECSGOCMsg. k_EMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockRequest) message.body.param_s = param_s # SteamID message.body.param_a = param_a # AssetID message.body.param_d = param_d message.body.param_m = param_m # MarketID self.gc.gcSend(message) response = self.gc.client.wait_for_message(EMsg.ClientFromGC, timeout=5.0) if response == 'Timed Out': return 'Steam servers did not respond, your time delay is probably too small.' elif Util.get_msg( response.body.msgtype ) == csgo_base.ECSGOCMsg.k_EMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockResponse: econData = self.gc.gcFrom( response.body.payload, cstrike15_gcmessages_pb2. CMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockResponse) return econData else: return 'Response was not of type EconPreviewDataBlockResponse'
def handle_message(self, emsg_real, msg): emsg = Util.get_msg(emsg_real) #print "EMsg is", Util.lookup_enum(EMsg, emsg) if emsg == EMsg.ClientLogOnResponse: self.handle_client_logon(msg) elif emsg == EMsg.ClientUpdateMachineAuth: self.handle_update_machine_auth(msg) elif emsg == EMsg.ClientSessionToken: self.handle_session_token(msg) elif emsg == EMsg.ClientServerList: self.handle_server_list(msg) for listener in self.listeners: listener.handle_message(emsg_real, msg) if emsg in self.message_constructors: constructor = self.message_constructors[emsg] if constructor[2]: message = constructor[0](constructor[1], constructor[2]) else: message = constructor[0](constructor[1]) message.parse(msg) if self.message_events.get(emsg): self.message_events[emsg].set(message) self.message_events[emsg] = None if self.message_job_events.get(message.header.target_jobid): self.message_job_events[message.header.target_jobid].set(message) self.message_job_events[message.header.target_jobid] = None
def handle_message(self, emsg_real, msg): emsg = Util.get_msg(emsg_real) #print "EMsg is", Util.lookup_enum(EMsg, emsg) if emsg == EMsg.ClientLogOnResponse: self.handle_client_logon(msg) elif emsg == EMsg.ClientUpdateMachineAuth: self.handle_update_machine_auth(msg) elif emsg == EMsg.ClientSessionToken: self.handle_session_token(msg) elif emsg == EMsg.ClientServerList: self.handle_server_list(msg) for listener in self.listeners: listener.handle_message(emsg_real, msg) if emsg in self.message_constructors: constructor = self.message_constructors[emsg] if constructor[2]: message = constructor[0](constructor[1], constructor[2]) else: message = constructor[0](constructor[1]) message.parse(msg) if self.message_events.get(emsg): self.message_events[emsg].set(message) self.message_events[emsg] = None if self.message_job_events.get(message.header.target_jobid): self.message_job_events[message.header.target_jobid].set( message) self.message_job_events[message.header.target_jobid] = None
def dispatch_message(self, msg): emsg_real, = struct.unpack_from('<I', msg) emsg = Util.get_msg(emsg_real) if emsg == EMsg.ChannelEncryptRequest: gevent.spawn(self.channel_encrypt_request, msg) elif emsg == EMsg.ClientLogOnResponse: self.logon_response(msg) elif emsg == EMsg.Multi: self.split_multi_message(msg) self.client.handle_message(emsg_real, msg)
def gcSend(self, inputmsg): Type = inputmsg.header.emsg if logging == 2: logEvent("gcSend " + str(Util.get_msg(Type))) message = msg_base.ProtobufMessage(steammessages_clientserver_pb2.CMsgGCClient, EMsg.ClientToGC) message.header.routing_appid = self.appid message.body.appid = self.appid message.body.msgtype = Type | 0x80000000 if Util.is_proto(Type) else Type message.body.payload = inputmsg.serialize() self.client.connection.send_message(message)
def gcSend(self, inputmsg): Type = inputmsg.header.emsg if logging == 2: logEvent('gcSend ' + str(Util.get_msg(Type))) message = msg_base.ProtobufMessage( steammessages_clientserver_pb2.CMsgGCClient, EMsg.ClientToGC) message.header.routing_appid = self.appid message.body.appid = self.appid message.body.msgtype = Type | 0x80000000 if Util.is_proto( Type) else Type message.body.payload = inputmsg.serialize() self.client.connection.send_message(message)
def requestEconData(self, param_a, param_d, param_s=0, param_m=0): message = msg_base.ProtobufMessage(cstrike15_gcmessages_pb2.CMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockRequest, csgo_base.ECSGOCMsg.k_EMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockRequest) message.body.param_s = param_s #SteamID message.body.param_a = param_a #AssetID message.body.param_d = param_d message.body.param_m = param_m #MarketID self.gc.gcSend(message) response = self.gc.client.wait_for_message(EMsg.ClientFromGC) if Util.get_msg(response.body.msgtype) == csgo_base.ECSGOCMsg.k_EMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockResponse: econData = self.gc.gcFrom(response.body.payload, cstrike15_gcmessages_pb2.CMsgGCCStrike15_v2_Client2GCEconPreviewDataBlockResponse) return econData else: return 'Response was not of type EconPreviewDataBlockResponse'
def handle_message(self, emsg, msg): if logging == 2: logEvent('Received message ' + str(Util.get_msg(emsg))) pass
def handle_message(self, emsg, msg): emsg = Util.get_msg(emsg) if emsg == EMsg.ClientLoggedOff: # Game already started on account self.exit()
def handle_message(self, emsg, msg): if logging == 2: logEvent("Received message " + str(Util.get_msg(emsg))) pass
def handle_message(self, emsg_real, msg): emsg = Util.get_msg(emsg_real) if emsg == EMsg.ClientLicenseList: self.handle_license_list(msg)