Armería/Armory: buscador, ficha de personaje con equipo y visor 3D
Nueva sección Armería (menú Jugadores del header, pública). Migra la idea del módulo armory de FusionCMS a Next, ajustada al diseño del sitio y en ES/EN. DATOS (verificado antes de construir): item_template no existe en 3.4.3, pero los datos de ítem ya están en MySQL (django_wow.item_data, 44.873 filas con nombre es/en, calidad, item_level, inventory_type y display_id). El equipo del personaje sale de acore_characters (character_inventory + item_instance, con transmog) y se resuelve contra item_data en dos pasos (sin joins entre esquemas). lib/armory.ts + lib/wow-data.ts (razas/clases/slots ES/EN y colores de clase). RUTAS: - /armory: buscador con pestañas personajes/ítems/hermandades (SSR por searchParams), ítems con tooltip/color/icono de wowhead. - /armory/character/[guid]: identidad, equipo (tooltips wowhead, color por calidad) y visor 3D. - /armory/guild/[guid]: miembros con enlace a su ficha. VISOR 3D (components/ArmoryModel3D): usa la librería wow-model-viewer (generateModels) con jQuery + ZamModelViewer de wowhead cargados bajo demanda, alimentado con raza+género+display_ids del equipo (transmog si lo hay). Es integración cliente que depende del CDN de zamimg y NO se puede verificar sin navegador: va todo en try/catch con temporizador de reserva y aviso si no carga, para no romper la ficha. Verificado en producción (salvo el render 3D): buscador, ficha con equipo real («Camisa de acólito»/«Acolyte's Shirt»), tooltips de wowhead y página de hermandad, en ES y EN. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2000,5 +2000,38 @@
|
||||
"errConfirm": "The target character name does not match the confirmation.",
|
||||
"successMsg": "Gift sent to {character}! They will receive it in their in-game mail."
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
"armory": "Armory"
|
||||
},
|
||||
"Armory": {
|
||||
"title": "Armory",
|
||||
"searchPlaceholder": "Search character, item or guild…",
|
||||
"search": "Search",
|
||||
"tabCharacters": "Characters",
|
||||
"tabItems": "Items",
|
||||
"tabGuilds": "Guilds",
|
||||
"noResults": "No results.",
|
||||
"searchHint": "Type at least 3 characters.",
|
||||
"level": "Level",
|
||||
"itemLevel": "Item level",
|
||||
"members": "Members",
|
||||
"equipment": "Equipment",
|
||||
"guild": "Guild",
|
||||
"race": "Race",
|
||||
"class": "Class",
|
||||
"faction": "Faction",
|
||||
"alliance": "Alliance",
|
||||
"horde": "Horde",
|
||||
"online": "Online",
|
||||
"offline": "Offline",
|
||||
"viewProfile": "View profile",
|
||||
"model3d": "3D model",
|
||||
"modelLoading": "Loading model…",
|
||||
"modelUnavailable": "The 3D model is not available.",
|
||||
"rank": "Rank",
|
||||
"leader": "Leader",
|
||||
"noEquipment": "No visible equipment.",
|
||||
"backToArmory": "Back to armory"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2000,5 +2000,38 @@
|
||||
"errConfirm": "El nombre del personaje destino no coincide con la confirmación.",
|
||||
"successMsg": "¡Regalo enviado a {character}! Lo recibirá en su correo del juego."
|
||||
}
|
||||
},
|
||||
"header": {
|
||||
"armory": "Armería"
|
||||
},
|
||||
"Armory": {
|
||||
"title": "Armería",
|
||||
"searchPlaceholder": "Buscar personaje, ítem o hermandad…",
|
||||
"search": "Buscar",
|
||||
"tabCharacters": "Personajes",
|
||||
"tabItems": "Ítems",
|
||||
"tabGuilds": "Hermandades",
|
||||
"noResults": "Sin resultados.",
|
||||
"searchHint": "Escribe al menos 3 caracteres.",
|
||||
"level": "Nivel",
|
||||
"itemLevel": "Nivel de objeto",
|
||||
"members": "Miembros",
|
||||
"equipment": "Equipo",
|
||||
"guild": "Hermandad",
|
||||
"race": "Raza",
|
||||
"class": "Clase",
|
||||
"faction": "Facción",
|
||||
"alliance": "Alianza",
|
||||
"horde": "Horda",
|
||||
"online": "Conectado",
|
||||
"offline": "Desconectado",
|
||||
"viewProfile": "Ver ficha",
|
||||
"model3d": "Modelo 3D",
|
||||
"modelLoading": "Cargando modelo…",
|
||||
"modelUnavailable": "El modelo 3D no está disponible.",
|
||||
"rank": "Rango",
|
||||
"leader": "Líder",
|
||||
"noEquipment": "Sin equipo visible.",
|
||||
"backToArmory": "Volver a la armería"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user