Minimapa
Crear carpeta Mapas y setear el disco donde dice D: por el suyo pegar el mapa por ejemplo 006 - arena.xml y saca los spots y los pone en un archivo txt que despues lo pegas en el minimap.txtimport os import xml.etree.ElementTree as ET import re # Define el directorio donde se encuentran los archivos XML directory = 'D:\\mapas' # Función para analizar el archivo XML y obtener las coordenadas de los spots def parse_xml(file_path): tree = ET.parse(file_path) root = tree.getroot() spots = [] for spot in root.findall(".//SPOT/Config"): x = spot.get('BeginPosX') y = spot.get('BeginPosY') if x and y: # Asegurarse de que ambos valores X e Y están presentes spots.append((x, y)) return spots # Función para crear la línea de texto para el archivo minimap.txt def create_minimap_line(map_number, x, y): return f"{map_number}\t1\t1\t{x}\t{y}\t\"SPOT\"\n" # Función para extraer el número y el nombre de mapa del nombre del archivo def extract_map_info(file_name): match = re.match(r"(\d+) - (.+)\.xml", file_name) return (match.group(1), match.group(2)) if match else (None, None) # Crear/abrir el archivo minimap.txt en modo de agregar minimap_file_path = os.path.join(directory, 'minimap.txt') # Asegurarse de que el archivo minimap.txt exista o crear uno nuevo si no existe if not os.path.exists(minimap_file_path): with open(minimap_file_path, 'w'): pass # Diccionario para rastrear si ya se agregó el comentario del mapa map_comment_added = {} with open(minimap_file_path, 'a+') as minimap_file: # Leer el contenido actual del archivo minimap.txt para evitar duplicados minimap_file.seek(0) existing_lines = minimap_file.readlines() existing_coords = set([tuple(line.split('\t')[3:5]) for line in existing_lines if not line.startswith('//')]) # Iterar sobre todos los archivos en el directorio for file in os.listdir(directory): if file.endswith(".xml") and re.match(r"\d+ -", file): map_number, map_name = extract_map_info(file) if map_number and map_name: # Solo procesar si el archivo tiene un número de mapa y nombre válidos print(f"Procesando mapa {map_number} - {map_name}") # Imprimir el mapa que se está procesando file_path = os.path.join(directory, file) spots = parse_xml(file_path) if not spots: print(f"No se encontraron spots para el mapa {map_number} - {map_name}") for x, y in spots: if (x, y) not in existing_coords: # Solo agregar si el spot no existe ya if map_number not in map_comment_added: # Agregar comentario si es la primera vez minimap_file.write(f"// {map_name}\n") map_comment_added[map_number] = True minimap_line = create_minimap_line(map_number, x, y) minimap_file.write(minimap_line) existing_coords.add((x, y)) # Añadir a los coords existentes para evitar futuros duplicados else: print(f"El spot {x}, {y} ya existe en el mapa {map_number} - {map_name}")
Leave a Comment