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.txtunknown
python
2 years ago
3.1 kB
13
Indexable
import 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}")
Editor is loading...
Leave a Comment