def handle_read(self): recievedData = self.recv(BS) if recievedData: rec(recievedData) else: player_id = self.pi ids.pop(player_id) un.pop(player_id) if player_id in queue: queue.remove(player_id) num = "" for i in games: check = games[i].check(player_id) if check: packet = Packet() packet.clear() packet.write(2, 'ends') packet.send(games[i].oth(player_id), packet) num = i if num != "": games.pop(num) self.close()
def send(client): cmd = raw_input("Enter command: ") pkt = Packet() pkt.toIP = attackip pkt.state = cmd if pkt.state == "147": base = "C:\Users\Matt\Desktop\\testfolder" path = base + "\\" + pkt.toIP + "-encryptionkey" try: f = open(path,"rb") pkt.data = f.read() pkt.length = len(pkt.data) except: print "no encryption key found" pkt.send(client)
def handle_accept(self): conn, addr = self.accept() print('Connection address:' + addr[0] + " " + str(addr[1])) conn.setsockopt(socket.SOL_TCP, socket.TCP_NODELAY, 1) outgoing.append(conn) newid = random.randint(1, 99999) while newid in un: newid = random.randint(1, 99999) playerid = newid conns[conn] = playerid update = ['id update', playerid] ids[playerid] = conn username = '******' + str(random.randint(1, 999)) un[playerid] = username packet = Packet() packet.clear() packet.write(2, 'init') packet.write(2, username) packet.write(3, playerid) packet.send(conn, packet) Run(conn, playerid)
def rec(message): global mes mes = message packet = Packet() arr[0] = readstring(mes) if arr[0] == "queue": pid = readint(mes) weapon = readstring(mes) queue.append(pid) wpon.append(weapon) print("Entered Queue") if len(queue) == 2: print("Match found") new = {} random.seed(time.time()) map = random.randint(0, 2) rule = random.randint(0, 2) num = 0 for i in queue: new[num] = i packet.clear() packet.write(2, 'queue') packet.write(3, len(games)) packet.write(3, num) packet.write(3, map) packet.write(3, rule) for l in wpon: packet.write(2, l) packet.send(ids[i], packet) num += 1 queue.clear() games["game" + str(len(games))] = Match( new[0], new[1], ids[new[0]], ids[new[1]], weapon, weapon) if arr[0] == "ping": pid = readint(mes) tm = readint(mes) if pid in ids: packet.clear() packet.write(2, "ping") packet.write(3, tm) packet.write(3, len(ids)) packet.send(ids[pid], packet) if arr[0] == "leave": pid = readint(mes) if pid in queue: queue.remove(pid) if arr[0] == "move": xx = readint(mes) yy = readint(mes) pid = readint(mes) match = readint(mes) pn = readint(mes) #xs = readint(mes) if "game" + str(match) in games: cur = games["game" + str(match)] cur.update(xx, yy, pn) send = cur.grab(pn) packet.clear() packet.write(2, 'move') packet.write(3, xx) packet.write(3, yy) packet.send(send, packet) if arr[0] == "pickup": match = readint(mes) xx = readint(mes) yy = readint(mes) pid = readint(mes) if "game" + str(match) in games: cur = games["game" + str(match)] send = cur.grab(pid) packet.clear() packet.write(2, 'pickup') packet.write(3, xx) packet.write(3, yy) packet.send(send, packet) if arr[0] == "hit": game = readint(mes) pn = readint(mes) hit = readint(mes) if "game" + str(game) in games: cur = games["game" + str(game)] chck = cur.hit(pn, hit) players = cur.list() # if chck: # for i in players: # packet.clear() # packet.write(2, 'end') # packet.send(i, packet) # games.pop("game"+str(game)) if arr[0] == "end": game = readint(mes) if "game" + str(game) in games: cur = games["game" + str(game)] players = cur.list() for i in players: packet.clear() packet.write(2, 'end') packet.send(i, packet) games.pop("game" + str(game)) if arr[0] == "shoot": xx = readint(mes) yy = readint(mes) dir = readint(mes) match = readint(mes) pn = readint(mes) type = readstring(mes) if "game" + str(match) in games: cur = games["game" + str(match)] send = cur.grab(pn) packet.clear() packet.write(2, 'shoot') packet.write(3, xx) packet.write(3, yy) packet.write(3, dir) packet.write(2, type) packet.send(send, packet) if packet.Buffer > 0: rec(mes)
class RCCarController(): def __init__(self, joystick_port=0, serial_port='/dev/ttyACM0', publish_rate=10.0): self.joystick = Joystick(joystick_port) self.serial_port = serial_port self.publish_rate = publish_rate self.xbee = Packet() self.arm_car = False self.last_data = None self.arm_display_count = 0 self.safety_check_done = False def setup(self): self.xbee.open(self.serial_port) def trigger_check(self): safe = False while not safe: data = self.joystick.parse_logitech() if data['left_trigger'] == -1.0 and data['right_trigger'] == -1.0: safe = True else: print( '\nPlease press the left and right trigger (LT/RT) and release.' ) print('LT: %.1f, RT: %.1f (Both must be -1.0)' % (data['left_trigger'], data['right_trigger'])) input('>>> Press [ENTER] to continue.\n') self.safety_check_done = True def set_throttle_trigger(self, data): forward = mapfloat(data['right_trigger'], -1.0, 1.0, 0, 255) backward = mapfloat(data['left_trigger'], -1.0, 1.0, 0, 255) magnitude = constrain(int(max(forward, backward)), 0, 255) direction = 0 if forward >= backward else 1 self.xbee.tx_throttle = magnitude self.xbee.tx_direction = direction def set_throttle_axis(self, data): magnitude = mapfloat(data['right_stick'][1], -1.0, 1.0, -255, 255) direction = 0 if magnitude > 0 else 1 magnitude = constrain(abs(int(magnitude)), 0, 255) self.xbee.tx_throttle = magnitude self.xbee.tx_direction = direction def set_steering(self, data): steering = mapfloat(data['left_stick'][0], -1.0, 1.0, 0, 255) steering = constrain(int(steering), 0, 255) self.xbee.tx_steering = steering def set_arm(self, data): if data['face_buttons'][ 'X'] and not self.last_data['face_buttons']['X']: if not self.arm_car: self.arm_car = True else: self.arm_car = False self.xbee.reset_packet() self.xbee.tx_arm = self.arm_car def run(self): # Parse joystick data. data = self.joystick.parse_logitech() # Safety checks. if not self.safety_check_done: self.trigger_check() if self.last_data is None: self.last_data = data return # Set data and send serial packet. self.set_arm(data) if self.arm_car: self.set_steering(data) # self.set_throttle_axis(data) self.set_throttle_trigger(data) self.xbee.send() self.display() self.last_data = data def loop(self): while True: try: time.sleep(1 / self.publish_rate) self.run() except KeyboardInterrupt: print('\n\n>>> USER STOPPED') break except Exception as error: print('\n\n>>> ERROR OCCURRED:', error) traceback.print_tb(error.__traceback__) break self.xbee.close() def display(self): # Arm text. if self.xbee.tx_arm: arm_text = ' ' if self.arm_display_count > 0.6 * self.publish_rate \ else '\033[1m\033[91mARM\033[0m' else: arm_text = 'OFF' self.arm_display_count = (self.arm_display_count + 1) % self.publish_rate # Steering text. if self.xbee.tx_steering == 127: str_text = '127' else: str_text = '\033[1m\033[93m%03d\033[0m' % self.xbee.tx_steering # Throttle text. if self.xbee.tx_throttle == 0: thr_text = 'NET 000' elif not self.xbee.tx_direction: thr_text = '\033[1m\033[92mFWD %03d\033[0m' % self.xbee.tx_throttle elif self.xbee.tx_direction: thr_text = '\033[1m\033[94mREV %03d\033[0m' % self.xbee.tx_throttle # Display all text. text = 'ARM: %s | THR: %s | STR: %s' text = text % (arm_text, thr_text, str_text) sys.stdout.write('\r' + text + ' ' * 5) sys.stdout.flush()