コード例 #1
0
        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()
コード例 #2
0
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)
コード例 #3
0
        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)
コード例 #4
0
    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)
コード例 #5
0
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()