Harepacker-resurrected: Guía completa para editar recursos de MapleStory de manera eficiente

Preparación del entorno de desarrollo

La configuración inicial del entorno de trabajo puede completarse en aproximadamente 20 minutos siguiendo estos pasos:

# Clonar el repositorio del proyecto
git clone https://gitcode.com/gh_mirrors/ha/Harepacker-resurrected
cd Harepacker-resurrected

# Restaurar las dependencias del proyecto
dotnet restore MapleHaSuite.sln

# Compilar la solución en modo Debug
dotnet build MapleHaSuite.sln -c Debug

Requisitos previos: Es indispensable contar con .NET 8.0 SDK o una versión superior instalada. Se puede verificar mediante el comando dotnet --list-sdks. Durante el proceso de compilación se descargarán varias dependencias, por lo que se recomienda mantener una conexión a internet estable. Una vez completada la compilación, los archivos ejecutables se encontrarán en el directorio HaRepacker/bin/Debug.

Características principales del editor

Harepacker-resurrected ofrece un flujo de trabajo completo que abarca desde la解析 de archivos hasta la vista previa de modificaciones, proporcionando tres ventajas fundamentales:

  • Solución integrada: Combina desencriptado de archivos, edición de recursos y preview de resultados en una única aplicación
  • Compatibilidad con versiones: Adaptación automática a los diferentes formatos WZ de las distintas versiones de MapleStory
  • Interfaz visual intuitiva: Reduce la barrera de entrada mediante controles gráficos, aunque mantiene APIs para automatización

Arquitectura del sistema

Módulos principales

La aplicación se estructura en tres componentes fundamentales que trabajan en conjunto:

Motor de解析 de archivos: Localizado en el directorio HaRepacker/, este módulo maneja la desencriptación, análisis y reencriptación de archivos WZ. La clase principle WzNode.cs implements la gestión jerárquica de nodos, mientras que UndoRedoManager.cs proporciona soporte para deshacer y rehacer operaciones, garantizando un entorno de edición seguro.

Herramientas de edición visual: Desarrolladas principalmente en HaCreator/, incluyen controles personalizados y paneles de edición. La estructura de árbol permite navegar por el contenido de los archivos WZ, facilitando la importación/exportación de recursos gráficos y el ajuste de parámetros.

Sistema de预览 en tiempo real: El módulo HaCreator/MapSimulator/ ofrece previsualización inmediata de las modificaciones, eliminando la necesidad de iniciar el juego para verificar cambios.

Sistema de encrpitación de archivos WZ

Los archivos WZ utilizan algoritmos basados en XOR para su encriptación, con diferentes claves según la versión del juego. Harepacker-resurrected implementa técnicas de fuerza bruta para claves en el archivo HaRepacker/GUI/WzKeyBruteforceForm.cs, permitiendo la identificación automática del método de encriptación en la mayoría de casos. El proceso de desencriptado utiliza mapeo en memoria para proteger los archivos originales.

Versión del juego Método de encriptación Estado de soporte Configuración especial
GMS v62-v83 XOR tradicional Soporte completo Sin configuración adicional
GMS v83-v117 XOR mejorado Soporte completo Cargar claves de versión
KMS última versión Encriptación avanzada Soporte parcial Actualizar archivo de claves
Servidor internacional Encriptación personalizada Soporte experimental Importar configuración específica

Aplicaciones prácticas

Personalización de apariencia de personaje

Para modificar el peinado y color del cabello de un personaje:

  1. Iniciar HaRepacker y cargar el archivo Character.wz mediante el menú "Archivo" → "Abrir"
  2. Navegar a la ruta de recursos capilares: Character.wz/Hair/000020.img
  3. Exportar la secuencia de imágenes original: clic derecho → "Exportar" → seleccionar directorio
  4. Modificar las imágenes en software como Photoshop, manteniendo las dimensiones originales
  5. Importar las imágenes modificadas: clic derecho en el nodo original → "Importar"
  6. Guardar los cambios usando el botón de la barra de herramientas

Consideración importante: Las imágenes deben estar en formato PNG de 32 bits con canal Alpha. Se recomienda utilizar la función de preview para verificar que la secuencia de animación sea fluida.

Diseño de elementos interactivos en mapas

Para agregar un engranaje interactivo en un mapa temático:

  1. Abrir HaCreator con el archivo de mapa objetivo (.map)
  2. Seleccionar la categoría "Mecánica" en la biblioteca de objetos
  3. Arrastrar el elemento de engranaje al área de edición y ajustar posición y tamaño
  4. Configurar propiedades básicas: velocidad de rotación 15°/frame, estado inicial, área de colisión
  5. Añadir disparador de interacción mediante menú contextual
  6. Establecer condiciones de activación y acciones de respuesta
  7. Probar la interacción mediante el simulador de mapas

La siguiente implementación muestra cómo personalizar el comportamiento físico del engranaje:

// Personalización de aceleración rotacional
public void UpdateRotationalVelocity(float deltaTime)
{
    if (playerInRange)
    {
        angularVelocity += accelerationForce * deltaTime;
        // Limitar velocidad máxima
        angularVelocity = Math.Min(angularVelocity, MAX_ANGULAR_SPEED);
    }
    else
    {
        // Efecto de desaceleración natural
        angularVelocity *= frictionCoefficient;
    }
}

Creación de habilidades con efectos dinámicos

Para diseñar una habilidad冰 cuyo efecto visual varíe según atributos del personaje:

  1. Abrir Skill.wz e Item.wz en HaRepacker
  2. Duplicar un nodo de habilidad冰 existente
  3. Editar atributos básicos: daño, tiempo de reutilización, consumo de MP
  4. Importar secuencia de efectos personalizada en el nodo "effect"
  5. Configurar vinculación con atributos mediante el editor de scripts (F7)
  6. Probar con diferentes valores de atributo en MapSimulator

El sistema de efectos de habilidad implementa animaciones de fotogramas y sistemas de partículas, controlados mediante clases utilitarias en HaRepacker/AnimationBuilder.cs.

Técnicas avanzadas

Procesamiento por lotes

Para modificar múltiples recursos similares, el procesamiento por lotes incrementa significativamente la eficiencia:

// Ajuste masivo de propiedades de armas
foreach (var elemento in archivoWz.ObtenerNodos("Item.wz/0100.img/*"))
{
    // Filtrar elementos de tipo arma
    if (elemento.ObtenerPropiedad("tipo").Valor == "arma")
    {
        var danio = elemento.ObtenerPropiedad("damage");
        if (danio != null) danio.Valor = (int)danio.Valor * 1.15;
        
        // Añadir etiqueta de efecto especial
        elemento.AgregarPropiedad("efectoEspecial", "hielo");
    }
}
archivoWz.Guardar();

Desarrollo de plugins personalizados

Harepacker-resurrected permite extender funcionalidades mediante plugins:

  1. Crear un nuevo proyecto de biblioteca de clases referenciando los archivos DLL principales
  2. Implementar la interfaz IPlugin, sobrescribiendo métodos OnLoad y OnUnload
  3. Compilar y размещение el archivo DLL en el directorio Plugins
  4. Reiniciar la aplicación y habilitar el plugin desde "Herramientas" → "Plugins"

Diagnóstico de problemas frecuentes

El juego no inicia tras modificaciones: Verificar integridad del archivo usando "Herramientas" → "Reparar archivo WZ" para recalcular sumas de verificación.

Anomalías en visualización de imágenes: Confirmar que el formato sea PNG de 32 bits, con dimensiones idénticas al original y canal transparente correctamente procesado.

Animaciones entrecortadas: Revisar completitud de la secuencia de fotogramas y ajustar intervalos mediante el editor de animaciones.

Recursos de aprendizaje

La documentación completa se encuentra en el directorio docs/, mientras que la referencia de API está disponible en los comentarios del código de HaSharedLibrary/. El directorio UnitTest_WzFile/Assets/Images/ contiene ejemplos prácticos de efectos y elementos de interfaz.

Publicado el 7-9 22:18