예제 #1
0
파일: mitm.py 프로젝트: FleX-iBeL/cuwo
 def on_client_packet(self, packet):
     if packet.packet_id == EntityUpdate.packet_id:
         self.on_entity_update(packet)
     if self.relay_client is None:
         self.relay_packets.append(write_packet(packet))
         return
     self.relay_client.transport.write(write_packet(packet))
     if packet.packet_id not in (0, ):
         print 'Got client packet:', packet.packet_id
예제 #2
0
파일: mitm.py 프로젝트: xEnt22/cuwo
 def on_client_packet(self, packet):
     if packet.packet_id == EntityUpdate.packet_id:
         self.on_entity_update(packet)
     if self.relay_client is None:
         self.relay_packets.append(write_packet(packet))
         return
     self.relay_client.transport.write(write_packet(packet))
     if packet.packet_id not in (0,):
         print 'Got client packet:', packet.packet_id
예제 #3
0
파일: server.py 프로젝트: ChrisMiuchiz/cuwo
    def send_entity_data(self, entity):
        base = self.config.base

        # full entity packet for new, close players
        entity_packet.set_entity(entity, entity.entity_id)
        full = packets.write_packet(entity_packet)

        # pos entity packet
        if not entity.is_tgen:
            entity_packet.set_entity(entity, entity.entity_id,
                                     entitydata.POS_FLAG)
            only_pos = packets.write_packet(entity_packet)

        # reduced rate packet
        skip_reduced = self.skip_index != 0
        entity_packet.set_entity(entity, entity.entity_id,
                                 entitydata.POS_FLAG)
        reduced = packets.write_packet(entity_packet)

        max_distance = base.max_distance
        max_reduce_distance = base.max_reduce_distance

        old_close_players = entity.close_players
        new_close_players = {}
        for connection in self.players.values():
            player_entity = connection.entity
            if player_entity is None:
                continue
            if entity is player_entity:
                continue
            if entity.full_update:
                connection.send_data(full)
                new_close_players[connection] = entity.copy()
                continue
            dist = (player_entity.pos - entity.pos).length
            if dist > max_distance:
                if not entity.is_tgen:
                    connection.send_data(only_pos)
                continue
            old_ref = old_close_players.get(connection, None)
            if old_ref is None:
                connection.send_data(full)
                new_close_players[connection] = entity.copy()
                continue
            if dist > max_reduce_distance and skip_reduced:
                connection.send_data(reduced)
                new_close_players[connection] = old_ref
                continue
            new_mask = entitydata.get_mask(old_ref, entity)
            entity_packet.set_entity(entity, entity.entity_id, new_mask)
            connection.send_packet(entity_packet)
            new_close_players[connection] = entity.copy()

        entity.close_players = new_close_players
        entity.full_update = False
예제 #4
0
파일: server.py 프로젝트: matpow2/cuwo
    def send_entity_data(self, entity):
        base = self.config.base

        # full entity packet for new, close players
        entity_packet.set_entity(entity, entity.entity_id)
        full = packets.write_packet(entity_packet)

        # pos entity packet
        if not entity.is_tgen:
            entity_packet.set_entity(entity, entity.entity_id,
                                     entitydata.POS_FLAG)
            only_pos = packets.write_packet(entity_packet)

        # reduced rate packet
        skip_reduced = self.skip_index != 0
        entity_packet.set_entity(entity, entity.entity_id,
                                 entitydata.POS_FLAG)
        reduced = packets.write_packet(entity_packet)

        max_distance = base.max_distance
        max_reduce_distance = base.max_reduce_distance

        old_close_players = entity.close_players
        new_close_players = {}
        for connection in self.players.values():
            player_entity = connection.entity
            if player_entity is None:
                continue
            if entity is player_entity:
                continue
            if entity.full_update:
                connection.send_data(full)
                new_close_players[connection] = entity.copy()
                continue
            dist = (player_entity.pos - entity.pos).length
            if dist > max_distance:
                if not entity.is_tgen:
                    connection.send_data(only_pos)
                continue
            old_ref = old_close_players.get(connection, None)
            if old_ref is None:
                connection.send_data(full)
                new_close_players[connection] = entity.copy()
                continue
            if dist > max_reduce_distance and skip_reduced:
                connection.send_data(reduced)
                new_close_players[connection] = old_ref
                continue
            new_mask = entitydata.get_mask(old_ref, entity)
            entity_packet.set_entity(entity, entity.entity_id, new_mask)
            connection.send_packet(entity_packet)
            new_close_players[connection] = entity.copy()

        entity.close_players = new_close_players
        entity.full_update = False
예제 #5
0
파일: mitm.py 프로젝트: CarlosX/cuwo
 def send_debug(self):
     reactor.callLater(0.01, self.send_debug)
     if self.entity_id is None:
         return
     entity = self.entities[self.entity_id]
     from cuwo.vector import Vector3
     shoot = ShootPacket()
     shoot.entity_id = 2
     shoot.chunk_x, shoot.chunk_y = get_chunk(
         Vector3(entity.x, entity.y, entity.z))
     import random
     shoot.something5 = random.randrange(0, 10)
     shoot.something13 = 0
     shoot.something14 = 0
     shoot.something15 = 0
     shoot.something19 = 10.49137020111084
     shoot.something20 = 0.5
     shoot.something21 = 1.0
     shoot.something22 = 0.0
     shoot.something23 = 0
     shoot.something24 = 0
     shoot.something25 = 0
     shoot.something26 = 0
     shoot.something27 = 0
     shoot.something28 = 0
     shoot.pos = Vector3(entity.x, entity.y, entity.z + 150000)
     shoot.velocity = Vector3(93.929801940, -34.1773529054, -3.0167741775)
     self.relay_client.transport.write(write_packet(shoot))
예제 #6
0
파일: mitm.py 프로젝트: lilezek/cuwo
 def on_client_packet(self, packet):
     if packet.packet_id in (12, 11):
         return
     if self.relay_client is None:
         self.relay_packets.append(write_packet(packet))
         return
     self.relay_client.transport.write(write_packet(packet))
     client_ids[packet.packet_id] += 1
     if packet.packet_id == EntityUpdate.packet_id:
         try:
             name = packet.entity.name
             if not name:
                 return
             self.name = name
             reactor.callLater(10, self.send_welcome)
         except AttributeError:
             pass
         return
     print 'Got client packet:', packet.packet_id
예제 #7
0
파일: mitm.py 프로젝트: xEnt22/cuwo
 def on_server_packet(self, packet):
     if packet.packet_id == EntityUpdate.packet_id:
         self.on_entity_update(packet)
     elif packet.packet_id == ServerData.packet_id:
         self.entity_id = packet.entity_id
     elif packet.packet_id == CurrentTime.packet_id:
         # I hate darkness
         packet.time = constants.MAX_TIME / 2
     self.transport.write(write_packet(packet))
     if packet.packet_id not in (0, 2, 4, 5):
         print 'Got server packet:', packet.packet_id
예제 #8
0
파일: mitm.py 프로젝트: FleX-iBeL/cuwo
 def on_server_packet(self, packet):
     if packet.packet_id == EntityUpdate.packet_id:
         self.on_entity_update(packet)
     elif packet.packet_id == JoinPacket.packet_id:
         self.entity_id = packet.entity_id
     elif packet.packet_id == CurrentTime.packet_id:
         # I hate darkness
         packet.time = constants.MAX_TIME / 2
     self.transport.write(write_packet(packet))
     if packet.packet_id not in (0, 2, 4, 5):
         print 'Got server packet:', packet.packet_id
예제 #9
0
파일: mitm.py 프로젝트: matpow2/cuwo
 def on_server_packet(self, packet):
     if packet.packet_id == EntityUpdate.packet_id:
         self.on_entity_update(packet)
     elif packet.packet_id == JoinPacket.packet_id:
         self.entity_id = packet.entity_id
     elif packet.packet_id == CurrentTime.packet_id:
         # I hate darkness
         packet.time = constants.MAX_TIME / 2
     elif packet.packet_id == ServerUpdate.packet_id:
         self.on_server_update(packet)
     self.transport.write(write_packet(packet))
     if packet.packet_id not in (EntityUpdate.packet_id,
                                 UpdateFinished.packet_id,
                                 CurrentTime.packet_id,
                                 ServerUpdate.packet_id):
         print('Got server packet:', packet.packet_id)
예제 #10
0
파일: mitm.py 프로젝트: mfgpker/cuwo
 def on_server_packet(self, packet):
     if packet.packet_id == EntityUpdate.packet_id:
         self.on_entity_update(packet)
     elif packet.packet_id == JoinPacket.packet_id:
         self.entity_id = packet.entity_id
     elif packet.packet_id == CurrentTime.packet_id:
         # I hate darkness
         packet.time = constants.MAX_TIME / 2
     elif packet.packet_id == ServerUpdate.packet_id:
         self.on_server_update(packet)
     self.transport.write(write_packet(packet))
     if packet.packet_id not in (EntityUpdate.packet_id,
                                 UpdateFinished.packet_id,
                                 CurrentTime.packet_id,
                                 ServerUpdate.packet_id):
         print('Got server packet:', packet.packet_id)
예제 #11
0
파일: server.py 프로젝트: ChrisMiuchiz/cuwo
    def send_update(self):
        self.skip_index = (self.skip_index + 1) % self.config.base.reduce_skip
        for entity in self.world.entities.values():
            self.send_entity_data(entity)
        self.broadcast_packet(update_finished_packet)

        # other updates
        update_packet = self.update_packet
        for chunk in self.updated_chunks:
            chunk.on_update(update_packet)
        if not update_packet.is_empty():
            # passive_actions will be modified for each player, so we must keep a copy of the original
            old_passives = update_packet.passive_actions
            # send update to each player
            for player in self.players.values():
                # generate only passives actions which were not originally sent by this player
                update_packet.passive_actions = [x for x in old_passives 
                                                 if self.received_passives.get(x, None) != player]
                data = packets.write_packet(update_packet)
                player.send_data(data)
                
        self.received_passives.clear()
        update_packet.reset()

        # reset drop times
        for chunk in self.updated_chunks:
            chunk.on_post_update()
        self.updated_chunks.clear()

        # time update
        new_time = (self.get_time(), self.get_day())
        if new_time != self.old_time:
            time_packet.time = new_time[0]
            time_packet.day = new_time[1]
            self.broadcast_packet(time_packet)
            self.old_time = new_time
예제 #12
0
파일: mitm.py 프로젝트: lilezek/cuwo
 def on_server_packet(self, packet):
     self.transport.write(write_packet(packet))
     server_ids[packet.packet_id] += 1
     if packet.packet_id in (0, 2, 4, 5):
         return
     print 'Got server packet:', packet.packet_id
예제 #13
0
 def send_packet(self, packet):
     self.transport.write(write_packet(packet))
예제 #14
0
파일: mitm.py 프로젝트: lilezek/cuwo
 def send_chat(self, value):
     packet = ServerChatMessage()
     packet.entity_id = 0
     packet.value = value
     self.transport.write(write_packet(packet))
예제 #15
0
파일: mitm.py 프로젝트: mfgpker/cuwo
 def send_client_chat(self, value):
     packet = ClientChatMessage()
     packet.value = value
     self.relay_client.transport.write(write_packet(packet))
예제 #16
0
 def send_packet(self, packet):
     if self.disconnected:
         return
     self.transport.write(packets.write_packet(packet))
예제 #17
0
파일: server.py 프로젝트: sms-hosting/cuwo
 def broadcast_packet(self, packet):
     data = write_packet(packet)
     for player in self.players.values():
         player.transport.write(data)
예제 #18
0
파일: mitm.py 프로젝트: matpow2/cuwo
 def send_client_chat(self, value):
     packet = ClientChatMessage()
     packet.value = value
     self.relay_client.transport.write(write_packet(packet))
예제 #19
0
파일: server.py 프로젝트: Jakky89/cuwo-mitm
 def relay_packet(self, packet):
     if self.relay_client is None:
         self.relay_packets.append(write_packet(packet))
     else:
         self.relay_client.transport.write(write_packet(packet))
예제 #20
0
파일: chat.py 프로젝트: Warebr/cuwo-scripts
def create_message(message, entity_id=0):
    packet = ServerChatMessage()
    packet.entity_id = entity_id
    packet.value = message
    return write_packet(packet)
예제 #21
0
파일: server.py 프로젝트: Twistere/cuwo
 def send_packet(self, packet):
     if self.is_closing():
         return
     data = packets.write_packet(packet)
     self.transport.write(data)
예제 #22
0
파일: server.py 프로젝트: Twistere/cuwo
 def broadcast_packet(self, packet):
     data = packets.write_packet(packet)
     for player in self.players.values():
         player.send_data(data)
예제 #23
0
 def broadcast_packet(self, packet):
     data = packets.write_packet(packet)
     for player in self.players.values():
         player.transport.write(data)
예제 #24
0
파일: server.py 프로젝트: TomYaMee/cuwo
 def broadcast_packet(self, packet):
     data = write_packet(packet)
     for connection in self.connections.values():
         connection.transport.write(data)
예제 #25
0
파일: server.py 프로젝트: sms-hosting/cuwo
 def send_packet(self, packet):
     self.transport.write(write_packet(packet))
예제 #26
0
파일: server.py 프로젝트: carriercomm/cuwo
 def send_packet(self, packet):
     if self.disconnected:
         return
     self.transport.write(packets.write_packet(packet))
예제 #27
0
파일: server.py 프로젝트: matpow2/cuwo
 def send_packet(self, packet):
     if self.is_closing():
         return
     data = packets.write_packet(packet)
     self.transport.write(data)
예제 #28
0
파일: mitm.py 프로젝트: mfgpker/cuwo
 def send_chat(self, value):
     packet = ServerChatMessage()
     packet.entity_id = 0
     packet.value = value
     self.transport.write(write_packet(packet))
예제 #29
0
파일: server.py 프로젝트: matpow2/cuwo
 def broadcast_packet(self, packet):
     data = packets.write_packet(packet)
     for player in self.players.values():
         player.send_data(data)
예제 #30
0
파일: chat.py 프로젝트: MazeXD/cuwo-scripts
def create_message(message, entity_id=0):
    packet = ServerChatMessage()
    packet.entity_id = entity_id
    packet.value = message
    return write_packet(packet)