13 KiB
📖 Guía del Sistema de Juegos - Amayo Bot
Índice
- Introducción
- Estructura del Sistema
- Creación de Items
- Sistema de Tienda
- Áreas de Juego
- Mobs (Enemigos)
- Sistema de Crafteo
- Sistema de Fundición
- Variables del Sistema
Introducción
Este sistema de juegos permite crear y gestionar un RPG completo dentro de Discord, con items, tienda, combate, crafteo, y más.
Características Principales
- ✅ Sistema de economía con múltiples monedas
- ✅ Inventario por usuario y servidor
- ✅ Tienda con ofertas temporales y límites
- ✅ Sistema de crafteo con recetas
- ✅ Áreas explorables con niveles
- ✅ Enemigos (mobs) con drops
- ✅ Sistema de fundición para procesar items
- ✅ Mutaciones de items (mejoras/transformaciones)
Estructura del Sistema
Directorios Principales
/src/commands/messages/game/
├── itemCreate.ts # Crear items
├── itemEdit.ts # Editar items existentes
├── offerCreate.ts # Crear ofertas de tienda
├── offerEdit.ts # Editar ofertas
├── areaCreate.ts # Crear áreas de juego
├── areaEdit.ts # Editar áreas
├── areaNivel.ts # Gestionar niveles de área
├── mobEdit.ts # Crear/editar mobs
├── craftear.ts # Sistema de crafteo
├── comprar.ts # Comprar en la tienda
├── abrir.ts # Abrir items consumibles
└── ...
/src/game/
├── economy/ # Sistema de economía
│ ├── service.ts
│ └── types.ts
├── combat/ # Sistema de combate
│ ├── equipmentService.ts
│ └── attacksWorker.ts
├── consumables/ # Items consumibles
│ └── service.ts
├── cooldowns/ # Sistema de cooldowns
│ └── service.ts
├── minigames/ # Minijuegos
│ ├── service.ts
│ ├── types.ts
│ └── seed.ts
├── mutations/ # Mutaciones de items
│ └── service.ts
└── smelting/ # Sistema de fundición
└── service.ts
Creación de Items
Comando Base
!item-crear <key>
Ejemplo Práctico
1. Crear un item básico (Poción de Vida)
!item-crear pocion_vida
Esto abrirá un editor interactivo con los siguientes botones:
📝 Base - Información básica del item
- Key:
pocion_vida(identificador único) - Name:
Poción de Vida - Description:
Restaura 50 HP al usuario - Type:
consumable(otros:material,equipment,key_item,currency) - Rarity:
common(otros:uncommon,rare,epic,legendary,mythic) - Stackable:
true(si se puede apilar en el inventario) - Max Stack:
99(cantidad máxima por stack)
💎 Valor Base
Define el valor del item en el sistema económico:
{
"coins": 50,
"gems": 0
}
🎯 Metadatos
Información adicional para items especiales:
Para consumibles:
{
"effect": "heal",
"amount": 50,
"duration": 0
}
Para equipamiento:
{
"slot": "weapon",
"attack": 10,
"defense": 0,
"speed": 5,
"level_req": 1
}
Para materiales de crafteo:
{
"craftable": true,
"tier": 1
}
🖼️ Icono/Emoji
Emoji que representa el item: 🧪 o emoji personalizado <:potion:123456789>
Tipos de Items Comunes
1. Consumibles (consumable)
Items que se usan y desaparecen:
- Pociones de vida/maná
- Comida
- Buffs temporales
- Pergaminos de teletransporte
Ejemplo:
{
"type": "consumable",
"metadata": {
"effect": "heal_hp",
"amount": 100,
"cooldown": 30
}
}
2. Materiales (material)
Recursos para crafteo:
- Minerales
- Madera
- Hierbas
- Partes de mobs
Ejemplo:
{
"type": "material",
"metadata": {
"tier": 1,
"craftable": true
}
}
3. Equipamiento (equipment)
Items equipables:
- Armas
- Armaduras
- Accesorios
Ejemplo:
{
"type": "equipment",
"metadata": {
"slot": "weapon",
"attack": 25,
"defense": 0,
"speed": 10,
"level_req": 5,
"durability": 100
}
}
4. Items Clave (key_item)
Items importantes de quest:
- Llaves
- Documentos
- Objetos de misión
5. Moneda (currency)
Items que actúan como moneda:
- Monedas alternativas
- Tokens de eventos
- Puntos de tienda
Sistema de Tienda
Crear una Oferta
!offer-crear
Estructura de una Oferta
📦 Base
- Item Key:
pocion_vida(el item que se vende) - Enabled:
true(si la oferta está activa)
💰 Precio (JSON)
Define cuánto cuesta el item:
{
"coins": 100,
"gems": 0,
"items": {
"hierro": 5,
"madera": 10
}
}
Puedes combinar:
coins: Moneda basegems: Gemas premiumitems: Otros items como pago (sistema de trueque)
🕒 Ventana Temporal
Define cuándo está disponible la oferta:
- Inicio (ISO):
2025-10-05T00:00:00Z(opcional) - Fin (ISO):
2025-10-31T23:59:59Z(opcional)
Si no se especifica, la oferta está disponible siempre.
🎯 Límites
Control de compras:
- Límite por usuario:
5(cada usuario puede comprar máximo 5) - Stock global:
100(solo hay 100 unidades disponibles en total)
Dejar vacío = sin límite
📝 Metadata (JSON)
Información adicional:
{
"featured": true,
"discount": 20,
"bundle": ["pocion_vida", "pocion_mana"],
"event": "halloween_2025"
}
Ejemplo Completo: Oferta de Halloween
Item: pocion_halloween
Precio: { "coins": 50, "items": { "calabaza": 3 } }
Ventana: 2025-10-01 hasta 2025-10-31
Límite por usuario: 10
Stock global: 500
Metadata: { "event": "halloween_2025", "featured": true }
Áreas de Juego
Crear un Área
!area-crear <areaKey>
Estructura de un Área
📍 Base
- Key:
bosque_inicial(identificador único) - Name:
Bosque Inicial - Description:
Un bosque tranquilo perfecto para principiantes - Image URL: URL de imagen del área (opcional)
🎮 Configuración
{
"minLevel": 1,
"maxLevel": 5,
"danger": "low",
"biome": "forest"
}
Niveles de Área
Cada área puede tener múltiples niveles con diferentes enemigos:
!area-nivel <areaKey>
Ejemplo de configuración de nivel:
{
"level": 1,
"mobs": ["lobo_joven", "jabali_salvaje"],
"weights": [60, 40],
"bossKey": null,
"requirements": {
"minPlayerLevel": 1
}
}
- mobs: Lista de keys de mobs que aparecen
- weights: Probabilidad de aparición (en porcentaje)
- bossKey: Mob especial de jefe (opcional)
- requirements: Requisitos para acceder
Mobs (Enemigos)
Crear/Editar un Mob
!mob-editar <mobKey>
Estructura de un Mob
🎯 Base
{
"key": "lobo_joven",
"name": "Lobo Joven",
"description": "Un lobo joven vagando por el bosque",
"image": "🐺",
"level": 2
}
⚔️ Stats
{
"hp": 50,
"attack": 8,
"defense": 3,
"speed": 12,
"exp": 15
}
🎁 Drops (Recompensas)
{
"coins": { "min": 5, "max": 15 },
"items": {
"piel_lobo": { "chance": 0.3, "min": 1, "max": 2 },
"colmillo": { "chance": 0.15, "min": 1, "max": 1 },
"carne_cruda": { "chance": 0.5, "min": 1, "max": 3 }
}
}
- coins: Rango de monedas que dropea
- items: Items con probabilidad de drop
chance: Probabilidad (0.3 = 30%)min/max: Cantidad que dropea
🧬 Comportamiento
{
"aggressive": true,
"pack": false,
"flee_threshold": 0.2,
"abilities": ["howl", "bite"]
}
Sistema de Crafteo
Crear Items Crafteables
Para que un item se pueda craftear, define su receta en los metadatos:
Ejemplo: Espada de Hierro
{
"type": "equipment",
"metadata": {
"slot": "weapon",
"attack": 15,
"craftable": true,
"recipe": {
"hierro": 5,
"madera": 2,
"cuero": 1
},
"crafting_time": 60,
"success_rate": 0.95,
"level_req": 3
}
}
Usar el Sistema de Crafteo
!craftear <itemKey>
El bot verificará:
- ✅ Que tengas los materiales necesarios
- ✅ Que cumplas el nivel requerido
- ✅ Calculará el éxito basado en
success_rate - ✅ Consumirá los materiales
- ✅ Te dará el item (si tiene éxito)
Sistema de Fundición
Procesa materiales crudos en refinados:
Configuración de Items Fundibles
Ejemplo: Hierro Crudo → Lingote de Hierro
Item: hierro_crudo
{
"type": "material",
"metadata": {
"smeltable": true,
"smelts_into": "lingote_hierro",
"smelting_time": 30,
"fuel_cost": 1
}
}
Usar el Sistema
!fundir <itemKey> <cantidad>
Ejemplo:
!fundir hierro_crudo 10
Esto iniciará un trabajo de fundición que se completará después del tiempo especificado.
Sistema de Mutaciones
Transforma items en versiones mejoradas:
Configurar Mutaciones
Ejemplo: Espada de Hierro → Espada de Acero
{
"from_item": "espada_hierro",
"to_item": "espada_acero",
"requirements": {
"items": {
"carbon": 3,
"polvo_magico": 1
},
"coins": 500,
"level": 10
},
"success_rate": 0.8,
"keep_on_fail": false
}
- keep_on_fail: Si
false, pierdes el item si falla - success_rate: Probabilidad de éxito
Variables del Sistema
Puedes usar variables dinámicas en descripciones y nombres:
Variables de Usuario
{user}- Nombre del usuario{user.id}- ID del usuario{user.mention}- Mención del usuario{user.tag}- Usuario#1234{user.level}- Nivel del jugador{user.exp}- Experiencia del jugador{user.coins}- Monedas del jugador{user.gems}- Gemas del jugador
Variables de Servidor
{guild}- Nombre del servidor{guild.id}- ID del servidor{guild.members}- Cantidad de miembros{guild.owner}- Dueño del servidor
Variables de Item
{item.name}- Nombre del item{item.count}- Cantidad en inventario{item.value}- Valor del item
Ejemplo de Uso
Descripción dinámica:
"¡{user}, has encontrado {item.name}! Ahora tienes {item.count} en tu inventario."
Resultado:
"¡Shni, has encontrado Poción de Vida! Ahora tienes 15 en tu inventario."
Comandos Útiles
Gestión de Items
!item-crear <key>- Crear nuevo item!item-editar <key>- Editar item existente!inventario- Ver tu inventario!usar <item>- Usar un item consumible
Economía
!monedas- Ver tus monedas!daily- Recompensa diaria!dar <@user> <item> <cantidad>- Dar items a otro usuario
Tienda
!tienda- Ver la tienda!comprar <item> [cantidad]- Comprar items!offer-crear- Crear oferta (admin)!offer-editar <id>- Editar oferta (admin)
Combate
!explorar <area>- Explorar un área!atacar- Atacar al mob actual!huir- Intentar huir del combate!equipar <item>- Equipar un item
Crafteo
!craftear <item>- Craftear un item!receta <item>- Ver la receta de un item!fundir <item> <cantidad>- Fundir materiales
Áreas
!area-crear <key>- Crear área (admin)!area-editar <key>- Editar área (admin)!area-nivel <key>- Configurar niveles (admin)!areas- Ver áreas disponibles
Tips y Mejores Prácticas
1. Nomenclatura de Keys
Usa nombres descriptivos y sin espacios:
- ✅
pocion_vida_grande - ✅
espada_hierro_t2 - ❌
Poción de Vida Grande(evitar espacios y mayúsculas)
2. Balance Económico
- Items comunes: 10-100 coins
- Items raros: 100-1000 coins
- Items épicos: 1000-10000 coins
- Items legendarios: 10000+ coins
3. Drop Rates Recomendados
- Comunes: 50-80%
- Raros: 20-30%
- Épicos: 5-10%
- Legendarios: 1-3%
- Míticos: <1%
4. Organización de Áreas
Crea áreas progresivas:
- Área Inicial (Nivel 1-5): Mobs fáciles, drops básicos
- Área Intermedia (Nivel 6-15): Mobs moderados, mejores drops
- Área Avanzada (Nivel 16-30): Mobs difíciles, drops raros
- Área End-Game (Nivel 31+): Jefes, drops legendarios
5. Testing
Antes de lanzar al público:
- ✅ Prueba todas las recetas de crafteo
- ✅ Verifica que los precios sean balanceados
- ✅ Asegúrate de que los mobs no sean muy fáciles/difíciles
- ✅ Revisa que todos los items tengan iconos
- ✅ Prueba las ofertas temporales
Solución de Problemas
"Item no encontrado"
- Verifica que la key esté escrita correctamente
- Asegúrate de que el item exista en la base de datos
- Revisa si el item es específico del servidor
"No tienes suficientes materiales"
- Usa
!inventariopara verificar tus items - Asegúrate de tener todos los materiales de la receta
"No tienes nivel suficiente"
- Usa
!perfilpara ver tu nivel actual - Combate más mobs para ganar experiencia
"La oferta no está disponible"
- Verifica las fechas de la ventana temporal
- Asegúrate de que la oferta esté habilitada
- Revisa si alcanzaste el límite de compras
Créditos
Sistema creado para Amayo Bot
Documentación actualizada: Octubre 2025
Para soporte adicional, contacta a los administradores del servidor.