Exemplo n.º 1
0
    def _build_party_member_stats(group_member):
        player_mgr = WorldSessionStateHandler.find_player_by_guid(
            group_member.guid)
        character = None

        # If player is offline, build stats based on db information.
        if not player_mgr or not player_mgr.online:
            player_mgr = None
            character = RealmDatabaseManager.character_get_by_guid(
                group_member.guid)

        data = pack(
            '<Q2IB6I3f',
            player_mgr.guid if player_mgr else character.guid,
            player_mgr.health if player_mgr else 0,
            player_mgr.max_health if player_mgr else 0,
            player_mgr.power_type if player_mgr else 0,
            player_mgr.get_power_type_value() if player_mgr else 0,
            player_mgr.get_max_power_value() if player_mgr else 0,
            player_mgr.level if player_mgr else character.level,
            player_mgr.map_ if player_mgr else character.map,
            # Client expects an AreaNumber from AreaTable, not a zone id.
            MapManager.get_area_number_by_zone_id(
                player_mgr.zone if player_mgr else character.zone),
            player_mgr.class_ if player_mgr else character.class_,
            player_mgr.location.x if player_mgr else character.position_x,
            player_mgr.location.y if player_mgr else character.position_y,
            player_mgr.location.z if player_mgr else character.position_z,
        )

        return PacketWriter.get_packet(OpCode.SMSG_PARTY_MEMBER_STATS, data)
Exemplo n.º 2
0
    def handle(world_session, socket, reader: PacketReader) -> int:
        if world_session.player_mgr.deathbind:
            area_number = MapManager.get_area_number_by_zone_id(
                world_session.player_mgr.deathbind.deathbind_zone)
            data = pack('<2I', world_session.player_mgr.map_, area_number)
            packet = PacketWriter.get_packet(OpCode.SMSG_BINDZONEREPLY, data)
            world_session.enqueue_packet(packet)

        return 0