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:
- Iniciar HaRepacker y cargar el archivo Character.wz mediante el menú "Archivo" → "Abrir"
- Navegar a la ruta de recursos capilares:
Character.wz/Hair/000020.img - Exportar la secuencia de imágenes original: clic derecho → "Exportar" → seleccionar directorio
- Modificar las imágenes en software como Photoshop, manteniendo las dimensiones originales
- Importar las imágenes modificadas: clic derecho en el nodo original → "Importar"
- 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:
- Abrir HaCreator con el archivo de mapa objetivo (.map)
- Seleccionar la categoría "Mecánica" en la biblioteca de objetos
- Arrastrar el elemento de engranaje al área de edición y ajustar posición y tamaño
- Configurar propiedades básicas: velocidad de rotación 15°/frame, estado inicial, área de colisión
- Añadir disparador de interacción mediante menú contextual
- Establecer condiciones de activación y acciones de respuesta
- 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:
- Abrir Skill.wz e Item.wz en HaRepacker
- Duplicar un nodo de habilidad冰 existente
- Editar atributos básicos: daño, tiempo de reutilización, consumo de MP
- Importar secuencia de efectos personalizada en el nodo "effect"
- Configurar vinculación con atributos mediante el editor de scripts (F7)
- 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:
- Crear un nuevo proyecto de biblioteca de clases referenciando los archivos DLL principales
- Implementar la interfaz IPlugin, sobrescribiendo métodos OnLoad y OnUnload
- Compilar y размещение el archivo DLL en el directorio Plugins
- 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.