46 KiB
Guía rápida para el staff: crear y ajustar contenido desde Discord
Este documento reúne ejemplos prácticos y flujos de trabajo completos para el equipo de staff. Todo lo que ves aquí se realiza directamente con los comandos del bot (prefijo !), sin tocar código ni ejecutar scripts. Los comandos viven en src/commands/messages/admin y src/commands/messages/game, pero no necesitas abrir esos archivos: la idea es que puedas hacerlo todo desde Discord siguiendo estos pasos.
Tabla de contenidos
- Antes de empezar
- Items: creación, edición y revisión
- Crafteos y materiales ⭐ ¡Ahora con editor integrado!
- Fundición y refinado
- Mutaciones y encantamientos
- Mobs: enemigos y NPCs
- Áreas y niveles
- Misiones (Quests)
- Logros (Achievements)
- Workflows completos de ejemplo
🎯 Flujo rápido: Crear un ítem con receta de crafteo
Nuevo proceso (2025) - Todo desde Discord, sin código:
1. !item-crear iron_ingot → Crear ingrediente 1
2. !item-crear wood_plank → Crear ingrediente 2
3. !item-crear iron_sword → Crear producto
├─ Pulsar "Base" → Nombre, descripción, etc.
├─ Pulsar "Props" → Agregar {"craftable": {"enabled": true}}
├─ Pulsar "Receta" ⭐ NUEVO → Escribir: iron_ingot:3, wood_plank:1
└─ Pulsar "Guardar" → ¡Listo! Receta activa
4. !craftear iron_sword → Los jugadores pueden craftear
Antes (2024): Había que pedirle al equipo dev que ejecutara scripts de Prisma 🚫
Antes de empezar
⭐ ¡NUEVO! Ahora puedes crear y editar recetas de crafteo directamente desde Discord sin necesidad del equipo dev. Usa el botón Receta en los comandos
!item-creare!item-editar. Ver sección de Crafteos para más detalles.
- Asegúrate de tener el permiso
Manage Guildo el rol de staff configurado; varios comandos lo revisan conhasManageGuildOrStaff. - Siempre usa claves (
key) en minúsculas y sin espacios. Son únicas por servidor y no se pueden repetir. - Todos los editores funcionan con botones + modales. Si cierras la ventana o pasa más de 30 min sin responder, el editor caduca y debes reabrirlo.
- Cuando un modal pida JSON, puedes copiar los ejemplos de esta guía y ajustarlos. Si el JSON no es válido, el bot te avisará y no guardará los cambios.
Items: creación, edición y revisión
Crear un ítem nuevo — !item-crear <key>
- Escribe
!item-crear piedra_mistica(usa la key que necesites). - Pulsa Base y completa:
- Nombre y Descripción: lo que verán los jugadores.
- Categoría (opcional) para agrupar en listados (
weapon,material,consumible, etc.). - Icon URL si tienes una imagen.
- Stackable y Máx inventario en formato
true,10. Ejemplos:true,64,false,1, o deja vacío para infinito.
- Pulsa Tags y agrega etiquetas separadas por coma (
rare, evento); sirven para filtrar en!items-lista. - Pulsa Props (JSON) y pega solo lo que necesites. Ejemplo rápido para una herramienta que también cura al uso:
{
"tool": { "type": "pickaxe", "tier": 2 },
"breakable": { "enabled": true, "maxDurability": 120 },
"food": { "healHp": 25, "cooldownSeconds": 180 }
}
- Pulsa Receta (⭐ nuevo) si quieres que el ítem sea crafteable. Ver sección de Crafteos para más detalles.
- Cuando todo esté listo, pulsa Guardar. El bot confirmará con "✅ Item creado".
Editar, listar y borrar
!item-editarabre el mismo editor, pero cargando un ítem existente.!item-eliminar <key>borra la versión local (solicita confirmación).!items-listay!item-ver <key>sirven para revisar lo que ya existe.
💡 Tip: si solo quieres revisar las propiedades de un ítem, usa
!item-ver <key>; mostrará lospropsformateados en JSON.
Preparar ítems especiales
-
Consumibles: en Props agrega
"food": { "healHp": 40, "healPercent": 10, "cooldownKey": "food:pocion_epica", "cooldownSeconds": 120 }Luego prueba con
!comer pocion_epica(usa la key real) para ver el mensaje de curación y el cooldown. -
Cofres: añade
"chest": { "enabled": true, "consumeOnOpen": true, "rewards": [ { "type": "coins", "amount": 500 }, { "type": "item", "itemKey": "token_evento", "qty": 3 } ] }Después abre el cofre con
!abrir <key>. -
Armas/armaduras: usa
damage,defenseomaxHpBonus. Si quieres limitar mutaciones, agregamutationPolicy(ver sección más abajo).
Crafteos y materiales
El crafteo permite combinar materiales para crear ítems más valiosos. A diferencia de la fundición, el crafteo es instantáneo y no requiere tiempo de espera.
Cómo funciona el crafteo
- El jugador ejecuta
!craftear <productKey>. - El bot verifica que tenga todos los ingredientes.
- Si los tiene, los descuenta del inventario y entrega el producto inmediatamente.
- Las estadísticas del jugador se actualizan (
itemsCrafted).
Mutaciones y encantamientos
Las mutaciones permiten mejorar ítems agregándoles bonificaciones especiales. Son consumibles permanentes que se aplican a un ítem específico.
Crear mutaciones (requiere equipo dev)
Las mutaciones se crean directamente en la base de datos. Envía al equipo dev:
- Key: identificador único (ej.
ruby_core,sharpness_enchant) - Nombre: nombre visible
- Efectos (JSON):
{ "damageBonus": 15, "defenseBonus": 0, "maxHpBonus": 0 }
Configurar políticas de mutación en ítems
Decide qué mutaciones puede recibir cada ítem editando sus Props:
- Ejecuta
!item-editary selecciona el ítem (ej.iron_sword). - Abre Props (JSON) y agrega o modifica:
"mutationPolicy": {
"allowedKeys": ["ruby_core", "emerald_core", "sharpness_enchant"],
"deniedKeys": ["curse_weakness"]
}
allowedKeys: solo estas mutaciones se pueden aplicar (si está vacío o ausente, acepta todas excepto las denegadas).deniedKeys: estas mutaciones están prohibidas explícitamente.
Ejemplos de mutaciones por tipo de ítem
Armas (espadas, arcos, alabardas)
"mutationPolicy": {
"allowedKeys": [
"sharpness_enchant",
"fire_aspect",
"vampire_core",
"ruby_core"
],
"deniedKeys": ["defense_boost", "hp_regen"]
}
Armaduras (petos, cascos, botas)
"mutationPolicy": {
"allowedKeys": [
"defense_boost",
"hp_regen",
"emerald_core",
"thorns_enchant"
],
"deniedKeys": ["sharpness_enchant", "fire_aspect"]
}
Herramientas (picos, hachas)
"mutationPolicy": {
"allowedKeys": [
"efficiency_boost",
"unbreaking_core",
"fortune_enchant"
],
"deniedKeys": ["combat_related"]
}
Aplicar mutaciones como staff (para pruebas)
- Asegúrate de tener el ítem en tu inventario (
!inventario). - Ejecuta:
!encantar iron_sword ruby_core - El bot verificará:
- Que tienes el ítem.
- Que la mutación existe.
- Que la política del ítem lo permite.
- Si todo es correcto: "✨ Aplicada mutación
ruby_corea Espada de Hierro."
Verificar mutaciones aplicadas
- Usa
!player <@usuario>o!statspara ver bonificaciones de combate. - Las mutaciones aparecen sumadas en
damage,defenseomaxHpsegún corresponda.
Catálogo de mutaciones sugeridas
| Mutación Key | Nombre | Efectos | Tipo de Ítem |
|---|---|---|---|
ruby_core |
Núcleo de Rubí | +15 damage | Armas |
emerald_core |
Núcleo de Esmeralda | +10 defense, +20 maxHp | Armaduras |
sapphire_core |
Núcleo de Zafiro | +25 maxHp | Capas/Accesorios |
sharpness_enchant |
Filo Mejorado | +8 damage | Armas cortantes |
fire_aspect |
Aspecto ígneo | +12 damage | Armas de fuego |
defense_boost |
Refuerzo Defensivo | +7 defense | Armaduras |
hp_regen |
Regeneración | +30 maxHp | Armaduras/Capas |
efficiency_boost |
Eficiencia | (lógica custom) | Herramientas |
fortune_enchant |
Fortuna | (lógica custom) | Picos |
unbreaking_core |
Irrompible | +50% durabilidad | Herramientas |
vampire_core |
Vampirismo | +10 damage, lifesteal | Armas |
thorns_enchant |
Espinas | refleja daño | Armaduras |
💡 Tip: las mutaciones con efectos custom (como
fortune_enchantque aumenta drops) requieren lógica adicional en el código. Consulta con el equipo dev antes de anunciarlas.
Mobs: enemigos y NPCs
- Asegúrate de tener el permiso
Manage Guildo el rol de staff configurado; varios comandos lo revisan conhasManageGuildOrStaff. - Siempre usa claves (
key) en minúsculas y sin espacios. Son únicas por servidor y no se pueden repetir. - Todos los editores funcionan con botones + modales. Si cierras la ventana o pasa más de 30 min sin responder, el editor caduca y debes reabrirlo.
- Cuando un modal pida JSON, puedes copiar los ejemplos de esta guía y ajustarlos. Si el JSON no es válido, el bot te avisará y no guardará los cambios.
Items: creación, edición y revisión
Crear un ítem nuevo — !item-crear <key>
- Escribe
!item-crear piedra_mistica(usa la key que necesites). - Pulsa Base y completa:
- Nombre y Descripción: lo que verán los jugadores.
- Categoría (opcional) para agrupar en listados (
weapon,material,consumible, etc.). - Icon URL si tienes una imagen.
- Stackable y Máx inventario en formato
true,10. Ejemplos:true,64,false,1, o deja vacío para infinito.
- Pulsa Tags y agrega etiquetas separadas por coma (
rare, evento); sirven para filtrar en!items-lista. - Pulsa Props (JSON) y pega solo lo que necesites. Ejemplo rápido para una herramienta que también cura al uso:
{
"tool": { "type": "pickaxe", "tier": 2 },
"breakable": { "enabled": true, "maxDurability": 120 },
"food": { "healHp": 25, "cooldownSeconds": 180 }
}
- Cuando todo esté listo, pulsa Guardar. El bot confirmará con “✅ Item creado”.
Editar, listar y borrar
!item-editarabre el mismo editor, pero cargando un ítem existente.!item-eliminar <key>borra la versión local (solicita confirmación).!items-listay!item-ver <key>sirven para revisar lo que ya existe.
💡 Tip: si solo quieres revisar las propiedades de un ítem, usa
!item-ver <key>; mostrará lospropsformateados en JSON.
Preparar ítems especiales
-
Consumibles: en Props agrega
"food": { "healHp": 40, "healPercent": 10, "cooldownKey": "food:pocion_epica", "cooldownSeconds": 120 }Luego prueba con
!comer pocion_epica(usa la key real) para ver el mensaje de curación y el cooldown. -
Cofres: añade
"chest": { "enabled": true, "consumeOnOpen": true, "rewards": [ { "type": "coins", "amount": 500 }, { "type": "item", "itemKey": "token_evento", "qty": 3 } ] }Después abre el cofre con
!abrir <key>. -
Armas/armaduras: usa
damage,defenseomaxHpBonus. Si quieres limitar mutaciones, agregamutationPolicy(ver sección más abajo).
Crafteos y materiales
El crafteo permite combinar materiales para crear ítems más valiosos. A diferencia de la fundición, el crafteo es instantáneo y no requiere tiempo de espera.
Cómo funciona el crafteo
- El jugador ejecuta
!craftear <productKey>. - El bot verifica que tenga todos los ingredientes.
- Si los tiene, los descuenta del inventario y entrega el producto inmediatamente.
- Las estadísticas del jugador se actualizan (
itemsCrafted).
Crear nuevas recetas de crafteo (¡directo desde Discord!)
Ya NO necesitas al equipo dev para crear recetas. Ahora puedes configurarlas directamente al crear o editar un ítem.
Paso 1: Crear todos los ítems involucrados
Ejemplo: Espada de Hierro
-
Ingredientes:
!item-crear iron_ingot- Nombre: Lingote de Hierro
- Stackable: true,999
- Props:
{"craftingOnly": true}
!item-crear wood_plank- Nombre: Tablón de Madera
- Stackable: true,999
- Props:
{"craftingOnly": true}
-
Producto final con receta:
!item-crear iron_sword- Nombre: Espada de Hierro
- Descripción: Espada básica de hierro forjado
- Stackable: false,1
- Props:
{ "craftable": {"enabled": true}, "tool": {"type": "sword", "tier": 2}, "damage": 15, "breakable": {"enabled": true, "maxDurability": 200} }
Paso 2: Configurar la receta (¡NUEVO!)
Antes de guardar el ítem, pulsa el botón Receta en el editor. Aparecerá un modal como este:
┌─────────────────────────────────────────┐
│ 📝 Receta de Crafteo │
├─────────────────────────────────────────┤
│ Habilitar receta? (true/false) │
│ [ true ] │
├─────────────────────────────────────────┤
│ Cantidad que produce │
│ [ 1 ] │
├─────────────────────────────────────────┤
│ Ingredientes (itemKey:qty, ...) │
│ ┌───────────────────────────────────┐ │
│ │ iron_ingot:3, wood_plank:1 │ │
│ │ │ │
│ └───────────────────────────────────┘ │
│ │
│ [Enviar] [Cancelar] │
└─────────────────────────────────────────┘
Campos del modal:
- Habilitar receta?: escribe
truepara activar,falsepara desactivar - Cantidad que produce: cuántas unidades del producto se crean (ej.
1espada,3lingotes,10flechas) - Ingredientes: lista separada por comas en formato
itemKey:cantidad
El formato de ingredientes es: itemKey:cantidad, itemKey:cantidad, ...
Ejemplos válidos:
iron_ingot:3, wood_plank:1→ necesita 3 lingotes y 1 tablónleather:8, string:2→ necesita 8 cueros y 2 cuerdasruby:1, gold_ingot:5, magic_dust:2→ necesita 1 rubí, 5 lingotes de oro y 2 polvos mágicos
El bot automáticamente:
- ✅ Valida que las claves (
itemKey) existan en tu servidor - ✅ Convierte las claves a IDs de base de datos
- ✅ Guarda la receta junto con el ítem
- ❌ Rechaza ingredientes que no existen con mensaje de error claro
Finalmente pulsa Guardar y listo. ¡La receta ya está activa!
📋 Ejemplo JSON completo de un ítem con receta
Después de guardar, el ítem quedará estructurado así en la base de datos:
EconomyItem (iron_sword):
{
"id": "uuid-123",
"key": "iron_sword",
"guildId": "guild-456",
"name": "Espada de Hierro",
"description": "Espada básica de hierro forjado",
"stackable": false,
"maxInventory": 1,
"props": {
"craftable": {"enabled": true},
"tool": {"type": "sword", "tier": 2},
"damage": 15,
"breakable": {"enabled": true, "maxDurability": 200}
},
"tags": ["weapon", "tier2"],
"itemRecipe": {
"id": "recipe-789",
"productItemId": "uuid-123",
"productQuantity": 1,
"ingredients": [
{
"id": "ing-001",
"recipeId": "recipe-789",
"itemId": "uuid-iron-ingot",
"quantity": 3
},
{
"id": "ing-002",
"recipeId": "recipe-789",
"itemId": "uuid-wood-plank",
"quantity": 1
}
]
}
}
💡 Nota: No necesitas escribir este JSON manualmente. El editor lo crea automáticamente cuando pulsas "Receta" y guardas.
Paso 3: Editar recetas existentes
Si ya creaste un ítem y quieres agregar/modificar su receta:
!item-editar iron_sword
Pulsa Receta y edita:
- Para agregar una receta nueva: pon
truey escribe los ingredientes - Para modificar ingredientes: cambia el texto (ej.
iron_ingot:5, wood_plank:2) - Para deshabilitar la receta: pon
falseen "Habilitar receta?" - Para eliminar completamente: pon
falsey deja ingredientes vacío
Cuando guardas, el bot:
- 🔄 Actualiza la receta si cambió
- ➕ Crea la receta si es nueva
- 🗑️ Elimina la receta si la deshabilitaste
Paso 4: Probar la receta
- Asegúrate de tener los ingredientes en tu inventario.
- Ejecuta:
!craftear iron_sword - El bot responderá:
- ✅ Si tienes todo: "✨ Crafteaste Espada de Hierro x1"
- ❌ Si falta algo: "No tienes suficientes ingredientes: necesitas 3 iron_ingot, 1 wood_plank"
📦 Ejemplos de Props JSON para diferentes tipos de crafteo
Arma crafteable con durabilidad
{
"craftable": {"enabled": true},
"tool": {"type": "sword", "tier": 2},
"damage": 15,
"breakable": {
"enabled": true,
"maxDurability": 200,
"repairItem": "iron_ingot",
"repairAmount": 20
}
}
Receta sugerida: iron_ingot:3, wood_plank:1
Armadura crafteable con bonificaciones
{
"craftable": {"enabled": true},
"wearable": {
"slot": "chest",
"visual": "https://example.com/iron_chestplate.png"
},
"defense": 12,
"maxHpBonus": 20,
"breakable": {
"enabled": true,
"maxDurability": 300
}
}
Receta sugerida: iron_ingot:8, leather:2
Consumible crafteable (pociones)
{
"craftable": {"enabled": true},
"food": {
"healHp": 50,
"healPercent": 0,
"cooldownKey": "potion:health",
"cooldownSeconds": 60
},
"stackable": true,
"maxInventory": 10
}
Receta sugerida: red_herb:2, water_bottle:1, magic_dust:1
Material de crafteo (produce múltiples unidades)
{
"craftable": {"enabled": true},
"craftingOnly": true,
"description": "Material refinado usado en crafteo avanzado",
"stackable": true,
"maxInventory": 999
}
Receta sugerida: iron_ore:2, coal:1 → Produce 3 unidades (configurar en "Cantidad que produce": 3)
Herramienta con efectos especiales
{
"craftable": {"enabled": true},
"tool": {
"type": "pickaxe",
"tier": 3,
"efficiency": 1.5,
"fortune": true
},
"breakable": {
"enabled": true,
"maxDurability": 500,
"unbreaking": 2
}
}
Receta sugerida: steel_ingot:3, diamond:2, enchanted_core:1
Ítem decorativo/coleccionable
{
"craftable": {"enabled": true},
"collectible": true,
"rarity": "legendary",
"tradeable": false,
"description": "Trofeo único obtenido al craftear materiales legendarios",
"stackable": false,
"maxInventory": 1
}
Receta sugerida: mythril_ingot:10, dragon_scale:5, phoenix_feather:3
Cofre crafteable con recompensas
{
"craftable": {"enabled": true},
"chest": {
"enabled": true,
"consumeOnOpen": true,
"rewards": [
{"type": "coins", "amount": 1000},
{"type": "item", "itemKey": "rare_gem", "qty": 2}
]
}
}
Receta sugerida: wood_plank:8, iron_ingot:2, gold_ingot:1
Categorías de recetas sugeridas
🛠️ Herramientas
Pico de Hierro
- Ingredientes: 3 iron_ingot + 2 wood_plank
- Output: 1 iron_pickaxe (tier 2, 150 durabilidad)
Caña de Pescar Mejorada
- Ingredientes: 2 wood_plank + 1 string + 1 iron_ingot
- Output: 1 advanced_fishing_rod (tier 2, bonus catch rate)
Hacha de Batalla
- Ingredientes: 4 steel_ingot + 2 leather + 1 ruby
- Output: 1 battle_axe (tier 3, 20 damage)
⚔️ Armas
Daga de Bronce
- Ingredientes: 2 bronze_ingot + 1 leather
- Output: 1 bronze_dagger (10 damage, tier 1)
Espada de Acero
- Ingredientes: 5 steel_ingot + 2 leather + 1 gold_ingot
- Output: 1 steel_sword (25 damage, tier 3)
Arco Largo
- Ingredientes: 3 wood_plank + 2 string + 1 iron_ingot
- Output: 1 longbow (18 damage, tier 2)
🛡️ Armaduras
Peto de Cuero
- Ingredientes: 8 leather + 2 string
- Output: 1 leather_chestplate (5 defense, tier 1)
Casco de Hierro
- Ingredientes: 5 iron_ingot + 1 leather
- Output: 1 iron_helmet (8 defense, tier 2)
Botas de Acero
- Ingredientes: 4 steel_ingot + 2 leather
- Output: 1 steel_boots (10 defense, tier 3)
🍖 Consumibles
Poción de Curación Menor
- Ingredientes: 1 red_herb + 1 water_bottle
- Output: 1 minor_healing_potion (cura 25 HP)
Poción de Curación Mayor
- Ingredientes: 2 red_herb + 1 magic_dust + 1 glass_bottle
- Output: 1 major_healing_potion (cura 75 HP)
Pan
- Ingredientes: 3 wheat + 1 water
- Output: 5 bread (cura 15 HP cada uno)
🎨 Decorativos y Utilidad
Antorcha
- Ingredientes: 1 wood_plank + 1 coal
- Output: 8 torch
Cofre de Madera
- Ingredientes: 8 wood_plank
- Output: 1 wooden_chest (container)
Llave Maestra
- Ingredientes: 3 gold_ingot + 1 ruby + 1 magic_dust
- Output: 1 master_key (abre cofres especiales)
Árbol de progresión de crafteo
Nivel 1 (Principiante)
├─ Herramientas de Madera (wood_pickaxe, wood_axe)
├─ Armas Básicas (wooden_sword, stone_dagger)
└─ Comida Simple (bread, cooked_fish)
Nivel 2 (Aprendiz)
├─ Herramientas de Cobre/Bronce (copper_pickaxe, bronze_axe)
├─ Armadura de Cuero (leather_armor set)
├─ Armas de Hierro (iron_sword, iron_bow)
└─ Pociones Menores (minor_healing_potion)
Nivel 3 (Artesano)
├─ Herramientas de Hierro (iron_pickaxe tier 2)
├─ Armadura de Hierro (iron_armor set)
├─ Armas de Acero (steel_sword, steel_halberd)
└─ Pociones Mayores (major_healing_potion)
Nivel 4 (Maestro)
├─ Herramientas Encantadas (enchanted_pickaxe tier 3)
├─ Armadura de Acero (steel_armor set)
├─ Armas Legendarias (legendary_sword, dragon_bow)
└─ Pociones Épicas (epic_elixir, immortality_potion)
Nivel 5 (Legendario)
├─ Herramientas Míticas (mythril_pickaxe tier 4)
├─ Armadura Divina (divine_armor set)
├─ Armas Divinas (godslayer_sword, infinity_bow)
└─ Elixires Divinos (phoenix_tears, gods_blessing)
Materiales base recomendados
| Material | Key | Obtención | Uso Principal |
|---|---|---|---|
| Madera | wood_plank |
Talar árboles | Herramientas tier 1 |
| Cuero | leather |
Mobs, caza | Armaduras tier 1 |
| Cobre | copper_ingot |
Fundir copper_ore | Herramientas tier 1-2 |
| Estaño | tin_ingot |
Fundir tin_ore | Aleaciones (bronce) |
| Bronce | bronze_ingot |
Fundir copper+tin | Herramientas tier 2 |
| Hierro | iron_ingot |
Fundir iron_ore | Armas/armor tier 2 |
| Carbón | coal |
Minar | Fundición universal |
| Acero | steel_ingot |
Fundir hierro+carbón | Armas/armor tier 3 |
| Oro | gold_ingot |
Fundir gold_ore | Joyería, ítems raros |
| Rubí | ruby |
Mobs raros, cofres | Encantamientos |
| Esmeralda | emerald |
Mobs raros, cofres | Encantamientos |
| Zafiro | sapphire |
Mobs raros, cofres | Encantamientos |
| Polvo Mágico | magic_dust |
Bosses, eventos | Crafteo avanzado |
| Cristal de Lava | lava_crystal |
Área volcánica | Crafteo legendario |
| Mythril | mythril_ingot |
Fundir mythril_ore | Armas/armor tier 4 |
Verificar y solucionar problemas con recetas
Ver información de una receta
Para verificar si un ítem tiene receta activa, usa:
!item-ver iron_sword
En el editor aparecerá:
- Receta:
Habilitada (3 ingredientes → 1 unidades)← tiene receta activa - Receta:
Deshabilitada← no tiene receta o está desactivada
Errores comunes y soluciones
Error: "No se encontró el ítem xxx_ingot en este servidor"
- Causa: La clave (
itemKey) del ingrediente no existe o tiene un typo - Solución: Verifica con
!items-listaque todos los ingredientes existan. Crea los que falten con!item-crear
Error: "No tienes suficientes ingredientes"
- Causa: El jugador no tiene todos los materiales en su inventario
- Solución: Usa
!inventariopara verificar qué falta. Añade ítems con!give @usuario itemKey cantidad
Problema: La receta no se guarda
- Causa: El prop
craftable.enabledestá enfalseo falta - Solución: En Props (JSON) asegúrate de tener:
"craftable": {"enabled": true}
Problema: La receta desapareció después de editar el ítem
- Causa: No marcaste "Habilitar receta?" como
trueal editar - Solución: Vuelve a
!item-editar, pulsa Receta, pontruey reingresa los ingredientes
Workflow de debug para recetas
-
Verificar que el producto existe:
!item-ver iron_swordDebe aparecer en la lista y tener
craftable.enabled: trueen props. -
Verificar que todos los ingredientes existen:
!items-listaBusca
iron_ingotywood_planken la lista. -
Probar con admin:
- Añádete los ingredientes:
!give @tuUsuario iron_ingot 10 - Intenta craftear:
!craftear iron_sword - Si funciona: la receta está bien configurada
- Si falla: revisa los errores del bot
- Añádete los ingredientes:
-
Verificar la base de datos (solo si todo lo anterior falló):
- Pide al equipo dev que revise la tabla
ItemRecipe - Debe haber un registro con
productItemIdapuntando al ítem correcto - Los
RecipeIngredientdeben teneritemIdyquantitycorrectos
- Pide al equipo dev que revise la tabla
Cadenas de crafteo complejas
Ejemplo: Espada Legendaria
-
Recolectar materiales base:
- Minar 20 iron_ore
- Minar 15 coal
- Derrotar boss para obtener 3 magic_dust
-
Fundición (fase 1):
- Fundir iron_ore → iron_ingot (15 unidades)
- Tiempo total: ~40 minutos
-
Fundición (fase 2):
- Fundir iron_ingot + coal + carbon → steel_ingot (8 unidades)
- Tiempo total: ~60 minutos
-
Crafteo (fase 1):
- Craftear steel_ingot + leather → steel_sword_base
-
Encantamiento:
- Aplicar ruby_core al steel_sword_base (+15 damage)
-
Crafteo final:
- Craftear steel_sword_base(enchanted) + magic_dust + dragon_scale → legendary_dragon_slayer
- Resultado: Arma tier 4 con 45 damage, 300 durabilidad, efectos especiales
Marcado de ítems crafteable-only
Para materiales que solo sirven para craftear y no tienen uso directo:
{
"craftingOnly": true,
"description": "Material usado únicamente para crafteo"
}
Esto ayuda a los jugadores a entender que deben combinarlo con otros ítems para obtener valor.
💡 Tips y mejores prácticas para recetas
Organización de recetas
- Nombra consistentemente: Usa sufijos como
_ingot,_ore,_plankpara que sean fáciles de identificar - Agrupa por tier: Crea materiales tier 1, tier 2, tier 3... para facilitar progresión
- Documenta ingredientes raros: Si una receta usa ítems de eventos o bosses, menciónalo en la descripción del producto
Balance de economía
- Recetas básicas: 2-3 ingredientes, cantidades bajas (< 5 unidades)
- Recetas intermedias: 3-5 ingredientes, algunas de tier anterior
- Recetas avanzadas: 5+ ingredientes, incluyen materiales raros y crafteos previos
- Recetas legendarias: Cadenas complejas que requieren múltiples pasos de fundición y crafteo
Productividad del staff
- Crea plantillas: Guarda en un documento los props JSON comunes para copiar/pegar rápidamente
- Batch creation: Crea todos los ingredientes primero, luego todos los productos
- Usa el mismo editor: No cierres el editor entre ítems similares, solo cambia la key y ajusta valores
- Prueba inmediatamente: Después de crear una receta, añádete los ingredientes y prueba
!craftearpara validar
Errores a evitar
- ❌ No crear los ingredientes primero: Si creas el producto con receta pero los ingredientes no existen, la receta fallará
- ❌ Typos en itemKeys:
iron_ingottvsiron_ingot- el bot no encontrará el ítem - ❌ Olvidar craftable.enabled: Si el prop no está en
true, la receta no funcionará aunque esté guardada - ❌ Cantidades desbalanceadas: 100 unidades de un material común no debe producir 1 ítem legendario
Ejemplos de recetas balanceadas
| Tier | Ingredientes Típicos | Output Typical | Ejemplo |
|---|---|---|---|
| 1 (Común) | 2-3 materiales básicos x2-5 | 1-5 unidades | 3 wood + 2 stone → 1 basic_axe |
| 2 (Poco común) | 3-4 materiales, algunos refinados x3-10 | 1-3 unidades | 5 iron_ingot + 2 leather → 1 iron_sword |
| 3 (Raro) | 4-5 materiales, crafteos tier 2 x5-15 | 1-2 unidades | 8 steel_ingot + 3 ruby + 1 iron_sword → 1 steel_sword |
| 4 (Épico) | 5-7 materiales, incluye raros x10-30 | 1 unidad | 10 mythril + 5 magic_dust + 3 dragon_scale → 1 mythril_sword |
| 5 (Legendario) | 6+ materiales, cadenas complejas x20+ | 1 unidad | 15 divine_ore + 10 phoenix_feather + 1 mythril_sword → 1 godslayer |
Mutaciones y encantamientos
- Asegúrate de que existe la mutación (pide la
mutationKeyal equipo dev si aún no está en la base). - Desde
!item-editar, abre Props (JSON) y agrega:
"mutationPolicy": {
"allowedKeys": ["ruby_core", "emerald_core"],
"deniedKeys": ["curse_core"]
}
- Entrega al jugador la mutación correspondiente y pídele que use
!encantar <itemKey> <mutationKey>. - Para probarlo tú mismo, equipa el ítem y ejecuta
!encantar. Si la política lo permite, el bot responde con “✨ Aplicada mutación…”.
Fundición y refinado
La fundición es un proceso que transforma materiales crudos en recursos refinados con un tiempo de espera. Es útil para economías más realistas donde los jugadores deben planificar.
Cómo funciona la fundición
- El jugador ejecuta
!fundirespecificando inputs y output. - El bot verifica que tenga los materiales, los descuenta del inventario y crea un job con tiempo de espera.
- Cuando el tiempo expira, el jugador usa
!fundir-reclamarpara obtener el resultado.
Crear nuevas recetas de fundición
Paso 1: Crear los ítems necesarios
-
Materiales de entrada (ej. minerales crudos):
!item-crear copper_ore- Nombre: Mineral de Cobre
- Descripción: Mineral sin refinar extraído de las minas
- Stackable: true,999
- Props:
{"craftingOnly": true}
!item-crear coal- Nombre: Carbón
- Descripción: Combustible para fundición
- Stackable: true,999
-
Material de salida (ej. lingote refinado):
!item-crear copper_ingot- Nombre: Lingote de Cobre
- Descripción: Cobre puro listo para craftear
- Stackable: true,999
Paso 2: Coordinar con el equipo dev
Envía la siguiente información al equipo de desarrollo:
Receta de fundición: Lingote de Cobre
- Inputs:
copper_ore: 5 unidadescoal: 2 unidades
- Output:
copper_ingot: 2 unidades
- Duración: 300 segundos (5 minutos)
El equipo dev ejecutará:
// Ejemplo de lo que hará el dev (tú no necesitas hacerlo)
await createSmeltJob(userId, guildId,
[
{ itemKey: 'copper_ore', qty: 5 },
{ itemKey: 'coal', qty: 2 }
],
'copper_ingot',
2,
300
);
Paso 3: Probar la receta
-
Asegúrate de tener los materiales:
!inventario -
Inicia la fundición:
!fundir copper_ore:5,coal:2 copper_ingot:2 300(El comando exacto puede variar, verifica con
!help fundir) -
Espera el tiempo configurado o usa un comando de admin para acelerar (si existe).
-
Reclama el resultado:
!fundir-reclamar
Ejemplos de recetas de fundición por nivel
Nivel Básico (5-10 minutos)
| Entrada | Salida | Tiempo | Uso |
|---|---|---|---|
| 5 copper_ore + 2 coal | 2 copper_ingot | 5 min | Crafteo básico |
| 5 iron_ore + 3 coal | 2 iron_ingot | 8 min | Armas tier 1 |
| 3 sand + 1 coal | 2 glass | 3 min | Construcción |
Nivel Intermedio (15-30 minutos)
| Entrada | Salida | Tiempo | Uso |
|---|---|---|---|
| 8 iron_ore + 5 coal | 3 steel_ingot | 20 min | Armas tier 2 |
| 10 gold_ore + 5 coal | 3 gold_ingot | 25 min | Joyería |
| 5 copper_ingot + 5 tin_ingot | 8 bronze_ingot | 15 min | Aleaciones |
Nivel Avanzado (1-2 horas)
| Entrada | Salida | Tiempo | Uso |
|---|---|---|---|
| 15 iron_ingot + 10 coal + 5 carbon | 5 steel_alloy | 60 min | Armas legendarias |
| 20 mythril_ore + 10 coal + 3 magic_dust | 3 mythril_ingot | 90 min | Equipo épico |
| 10 diamond_ore + 15 coal + 5 lava_crystal | 2 diamond_refined | 120 min | Crafteo endgame |
Cadenas de producción
Puedes crear economías complejas encadenando fundiciones:
Ejemplo: Espada de Acero
- Fundir
copper_ore→copper_ingot(5 min) - Fundir
tin_ore→tin_ingot(5 min) - Fundir
copper_ingot + tin_ingot→bronze_ingot(15 min) - Fundir
iron_ore→iron_ingot(8 min) - Fundir
iron_ingot + coal + carbon→steel_ingot(20 min) - Craftear
steel_ingot + bronze_ingot + wood→steel_sword
Fundición para eventos
Ejemplo: Evento de Halloween
!item-crear pumpkin_ore
- Nombre: Mineral de Calabaza Maldita
- Props:
{"eventCurrency": {"enabled": true, "eventKey": "halloween2025"}}
Receta especial (temporal):
- Inputs: 10 pumpkin_ore + 5 coal + 1 cursed_essence
- Output: 1 halloween_legendary_sword
- Duración: 60 min
- Ventana: solo durante octubre 2025
Consejos de balance
- Fundiciones rápidas (1-5 min): para materiales básicos que se usan constantemente.
- Fundiciones medias (10-30 min): para recursos intermedios, fomenta planificación.
- Fundiciones largas (1-3 horas): para ítems raros/épicos, crea anticipación.
- Usa carbón/coal: como costo fijo universal para evitar fundiciones sin límite.
- Output menor que input: ej. 5 mineral → 2 lingotes, crea escasez y valor.
Logros (Achievements)
Crear un logro — !logro-crear <key>
-
Ejecuta el comando y completa el editor:
-
Base: Nombre, descripción, categoría, icono y puntos.
-
Requisitos: JSON con
typeyvalue. Ejemplo:{ "type": "mine_count", "value": 100 } -
Recompensas: JSON con monedas, ítems o títulos. Ejemplo:
{ "coins": 1000, "items": [{ "key": "pickaxe_mythic", "quantity": 1 }] }
-
-
Pulsa Guardar. El bot mostrará “✅ Logro creado”.
-
Usa
!logro-ver <key>y!logros-listapara revisar lo que quedó configurado.
Cuando anuncies el logro, recuerda qué acción lo desbloquea (mine_count, fish_count, craft_count, etc.).
Misiones (Quests)
Crear una misión — !mision-crear <key>
-
Completa la pestaña Base (nombre, descripción, categoría y tipo:
daily,weekly,permanentoevent). -
En Requisitos, indica el contador que debe alcanzar:
{ "type": "craft_count", "count": 3 }También puedes usar
varietycon varias condiciones. -
En Recompensas, define el premio (mismo formato que los logros).
-
Guarda y revisa con
!mision-ver <key>o!misiones-lista. -
Para pruebas,
!misionesmuestra al jugador su progreso y si puede reclamar con!mision-reclamar <key>.
Tienda y economía
-
Crear oferta —
!offer-crear-
En Base, especifica
itemKeyy si la oferta está habilitada. -
En Precio (JSON), indica monedas y/o ítems de pago:
{ "coins": 1500, "items": [{ "itemKey": "token_evento", "qty": 2 }] } -
En Ventana, puedes fijar fechas
YYYY-MM-DDo dejarlas vacías. -
En Límites, define cupo por usuario o stock global.
-
Guarda y revisa la tienda con
!tienda.
-
-
Monedas y recursos: usa
!monedas <@usuario>para revisar balances y!inventario <@usuario>para confirmar que recibieron lo esperado.
Resumen rápido de comandos útiles
| Acción | Comando | Notas |
|---|---|---|
| Crear/editar ítems | !item-crear, !item-editar, !item-eliminar |
Requiere staff. Props en JSON. |
| Revisar ítems | !items-lista, !item-ver <key> |
Incluye props y tags. |
| Consumir o probar ítems | !comer <key>, !encantar <itemKey> <mutationKey> |
Útiles para QA. |
| Ofertas de tienda | !offer-crear, !offer-editar |
Define precios, stock y ventanas. |
| Logros | !logro-crear, !logro-ver, !logros-lista, !logro-eliminar |
Requisitos y recompensas en JSON. |
| Misiones | !mision-crear, !mision-ver, !misiones-lista, !mision-eliminar |
Tipos: daily/weekly/permanent/event. |
| Progreso de jugadores | !stats, !player <@usuario>, !racha |
Ayuda a validar nuevas recompensas. |
Áreas de juego y niveles
Las áreas son lugares donde los jugadores realizan actividades (minar, pescar, pelear, plantar). Cada área tiene varios niveles, y cada nivel puede tener requisitos, recompensas y mobs específicos.
Crear un área — !area-crear <key>
- Ejecuta el comando con la key deseada (ej.
!area-crear mina_profunda). - Pulsa Base y completa:
- Nombre: Lo que verán los jugadores.
- Tipo:
MINE,LAGOON,FIGHToFARM(en mayúsculas).
- Pulsa Config (JSON) si necesitas configuración técnica adicional (raramente usado, pregunta al equipo dev).
- Pulsa Meta (JSON) para metadatos adicionales (opcional).
- Guarda. Usa
!areas-listapara verificar.
Editar un área — !area-editar
Abre un selector con todas las áreas del servidor, elige una y usa el mismo editor que en crear.
Configurar niveles de área — !area-nivel <areaKey> <level>
Cada nivel puede tener:
- Requisitos: herramienta mínima, nivel de personaje, etc.
- Recompensas: qué se obtiene al completar (monedas, ítems, XP).
- Mobs: lista de enemigos que aparecen en ese nivel.
- Ventana: fechas ISO para eventos temporales.
Ejemplo: crear el nivel 1 de una mina
!area-nivel mina_profunda 1
- Requisitos (JSON):
{
"toolType": "pickaxe",
"minToolTier": 1,
"minLevel": 1
}
- Recompensas (JSON):
{
"coins": 50,
"items": [
{ "key": "copper_ore", "quantity": 3 }
],
"xp": 10
}
- Mobs (JSON) — Aquí defines qué mobs aparecen y su peso:
{
"draws": 1,
"table": [
{ "mobKey": "slime_verde", "weight": 10 },
{ "mobKey": "murcielago", "weight": 5 }
]
}
💡 Importante: los mobs deben existir previamente. Créalos con
!mob-crearantes de referenciarlos aquí.
-
Ventana (opcional): si quieres que este nivel solo esté disponible durante un evento, agrega fechas ISO:
- Desde:
2025-12-01T00:00:00Z - Hasta:
2025-12-31T23:59:59Z
- Desde:
-
Guarda. Verifica con
!mina mina_profunda(o el comando correspondiente al tipo de área).
Borrar áreas y niveles
!area-eliminar <key>borra el área completa (solicita confirmación).- Para borrar un nivel específico, coordina con el equipo dev o edita manualmente la base de datos (por seguridad no hay comando público).
Mobs (enemigos)
Los mobs son enemigos que aparecen en áreas de tipo FIGHT o en niveles de minas/lagunas. También se pueden usar en eventos especiales.
Crear un mob — !mob-crear <key>
- Ejecuta el comando (ej.
!mob-crear slime_verde). - Pulsa Base y completa:
- Nombre: Nombre visible del mob.
- Categoría (opcional): para agrupar (ej.
slime,undead,boss).
- Pulsa Stats (JSON) y define las estadísticas:
{
"attack": 8,
"hp": 50,
"defense": 2,
"xpReward": 15
}
- Pulsa Drops (JSON) para configurar la tabla de recompensas:
{
"draws": 2,
"table": [
{ "type": "coins", "amount": 25, "weight": 10 },
{ "type": "item", "itemKey": "slime_gel", "qty": 1, "weight": 7 },
{ "type": "item", "itemKey": "healing_potion", "qty": 1, "weight": 3 }
]
}
draws: cuántos premios saca al morir.table: lista de posibles recompensas con su peso (más peso = más probable).
- Guarda y revisa con
!mobs-listao!mob-ver <key>.
Editar y borrar mobs
!mob-editarabre el mismo editor, pero cargando un mob existente.!mob-eliminar <key>borra el mob (solicita confirmación).
Probar mobs en combate
- Usa
!pelear <mobKey>para simular un combate. El bot mostrará el resultado, daño infligido, drops recibidos y XP ganado. - Ajusta
attack,hpydefensesegún el balance deseado.
Recetas de crafteo y fundición
Aunque el crafteo funciona con !craftear <productKey> y la fundición con !fundir, las recetas (itemRecipe) y los trabajos de fundición se administran desde backoffice o scripts porque involucran múltiples relaciones.
¿Cómo agrego una nueva receta de crafteo?
- Asegúrate de que el producto final y todos los ingredientes existen (créalos con
!item-crear). - Envía al equipo dev la siguiente información:
- Product Key: ej.
iron_sword - Product Quantity: cuánto entrega (normalmente 1).
- Ingredientes: lista con
itemKeyy cantidad. Ejemplo:- iron_ingot: 3 - wood_plank: 1
- Product Key: ej.
- El equipo dev ejecutará el seed o script correspondiente.
- Verifica con
!craftear iron_swordque funcione correctamente.
¿Cómo agrego una nueva receta de fundición?
- Crea los ítems de entrada (ej.
iron_ore,coal) y el de salida (ej.iron_ingot). - Coordina con el equipo dev para que configuren el
smeltJobindicando:- Inputs: lista de
itemKey+ cantidad. - Output:
itemKey+ cantidad. - Duración: segundos que tarda el proceso.
- Inputs: lista de
- Prueba con
!fundiry verifica el tiempo restante con!fundir-reclamar.
📌 Nota: si necesitas muchas recetas, considera crear un archivo JSON con todas y enviarlo al equipo dev para carga masiva.
Checklist para lanzar contenido nuevo
- El ítem tiene nombre, descripción, tags y props correctos en
!item-ver. - Hay una forma de conseguirlo (oferta, misión, logro, drop o craft).
- Si es un mob, tiene stats y drops configurados; pruébalo con
!pelear. - Si es un área con niveles, cada nivel tiene requisitos, recompensas y mobs válidos.
- Probaste el flujo como jugador (
!craftear,!fundir,!comprar,!mina,!pelear, etc.). - Los requisitos y recompensas de logros/misiones muestran JSON válido.
- Comunicaste al equipo cuándo entra y cómo se consigue.
Si algo falla, copia el mensaje de error completo y súbelo al canal de soporte interno; así el equipo de desarrollo puede ayudarte sin reproducir todo desde cero.
Comandos de consulta rápida
Estos comandos te ayudan a revisar lo que ya está configurado sin abrir editores:
| Comando | Descripción |
|---|---|
!items-lista |
Lista todos los ítems del servidor. |
!item-ver <key> |
Muestra detalles completos de un ítem (props, tags, etc.). |
!mobs-lista |
Lista todos los mobs del servidor. |
!areas-lista |
Lista todas las áreas del servidor. |
!logros-lista |
Lista todos los logros disponibles. |
!logro-ver <key> |
Muestra requisitos y recompensas de un logro. |
!misiones-lista |
Lista todas las misiones del servidor. |
!mision-ver <key> |
Muestra detalles de una misión específica. |
Ejemplos completos de flujos comunes
Ejemplo 1: Crear una zona de combate con mobs
-
Crea los mobs:
!mob-crear goblin_scout- Nombre: Goblin Explorador
- Stats:
{"attack": 10, "hp": 60, "defense": 3, "xpReward": 20} - Drops:
{"draws": 1, "table": [{"type": "coins", "amount": 30, "weight": 10}, {"type": "item", "itemKey": "goblin_ear", "qty": 1, "weight": 5}]}
-
Crea el área:
!area-crear bosque_oscuro- Nombre: Bosque Oscuro
- Tipo: FIGHT
-
Crea el nivel 1:
!area-nivel bosque_oscuro 1- Requisitos:
{"minLevel": 3} - Recompensas:
{"coins": 100, "xp": 30} - Mobs:
{"draws": 1, "table": [{"mobKey": "goblin_scout", "weight": 10}]}
- Requisitos:
-
Prueba con
!pelear bosque_oscuro(si el comando acepta áreas) o!pelear goblin_scoutdirectamente.
Ejemplo 2: Crear una misión diaria de minería
-
Asegúrate de que existe el área de mina (
!areas-lista). -
Crea la misión:
!mision-crear daily_mine_10- Nombre: Minero Diario
- Descripción: Mina 10 veces hoy
- Tipo: daily
- Categoría: mining
- Requisitos:
{"type": "mine_count", "count": 10} - Recompensas:
{"coins": 500, "items": [{"key": "mining_token", "quantity": 1}]}
-
Los jugadores verán la misión en
!misionesy podrán reclamarla con!mision-reclamar daily_mine_10cuando completen los 10 minados.
Ejemplo 3: Crear un cofre de evento
-
Crea el ítem cofre:
!item-crear event_chest_winter- Nombre: Cofre de Invierno
- Descripción: Un cofre especial lleno de sorpresas invernales
- Stackable: true,10
- Props:
{ "chest": { "enabled": true, "consumeOnOpen": true, "rewards": [ { "type": "coins", "amount": 1000 }, { "type": "item", "itemKey": "snowflake_rare", "qty": 5 }, { "type": "item", "itemKey": "ice_sword", "qty": 1 } ] } }
-
Crea una oferta para venderlo:
!offer-crear- Item Key: event_chest_winter
- Habilitada: true
- Precio:
{"coins": 2500} - Ventana: desde
2025-12-01hasta2025-12-31 - Límite por usuario: 3
-
Anuncia el cofre en el servidor y los jugadores podrán comprarlo con
!comprary abrirlo con!abrir event_chest_winter.