Saltar al contenido principal

Crear Misiones

webapp_banner.jpg

Misión de Ejemplo

EliteMobs viene preempaquetado con un test_quest.yml, que se analizará aquí como un formato de misión sencillo a seguir.

¡Las Misiones Personalizadas están en la carpeta ~plugins/EliteMobs/customquests!

test_quest.yml

isEnabled: true
customObjectives:
Objective1:
amount: '1'
filename: test_boss.yml
objectiveType: KILL_CUSTOM
customRewards:
- filename=magmaguys_toothpick.yml:amount=1:chance=1
name: "&aKill the Test Boss"
questLore:
- "&cEnd the test boss'' reign of terror!"

create_quest_quest.jpg

Si tu interfaz de misiones no se ve así, puedes cambiarla para que coincida usando /em alt.

Esta misión de ejemplo dará a los jugadores la tarea de matar 1 test_boss.yml. (El nombre real del boss mostrado en el rastreador de misiones será el name: establecido en test_boss.yml.) Y como recompensa por completar la misión serán recompensados con 1 Magmaguy's Toothpick.

Crear Misiones Personalizadas

isEnabled

Establece si la misión está habilitada.

KeyValuesDefault
isEnabledBooleantrue
Ejemplo
isEnabled: true

customObjectives

Establece los objetivos de la misión.

KeyValuesDefault
customObjectivesSpecial [1]none

Nota: Si usas un boss multifase como tu objetivo, entonces el objetivo debería usar la primera fase como objetivo.

Ejemplos

KILL_CUSTOM:

customObjectives:
Objective1:
amount: '1'
filename: my_cool_boss.yml
objectiveType: KILL_CUSTOM

DIALOG:

customObjectives:
Objective1:
dialog:
- "&a[Dialog NPC] &fCome here often?"
- "&7&oI should eat more apples."
filename: dialog_npc.yml
npcName: Dialog NPC
location: at dialog location.
objectiveType: DIALOG

FETCH_ITEM:

customObjectives:
Objective1:
amount: '99'
itemName: Red Apples
filename: my_quest_item_red_apples.yml
objectiveType: FETCH_ITEM

ARENA:

customObjectives:
Objective1:
objectiveType: ARENA
filename: my_arena.yml
name: "Complete the Arena"

create_quest_objective.jpg

Special [1]

Expandir Tabla

Los Objetivos Personalizados se construyen usando los siguientes valores:

KeyDescripción
KILL_CUSTOM / FETCH_ITEM / DIALOG / ARENASe usa para establecer el tipo de objetivo que representa. KILL_CUSTOM indica que la misión implica matar a un Boss Personalizado específico, FETCH_ITEM indica que la misión implica conseguir un Objeto Personalizado específico, DIALOG indica que la misión implica hablar con un NPC, y ARENA indica que la misión implica completar una arena específica.
filenameSe usa para establecer el nombre de archivo del Boss Personalizado, del Objeto Personalizado que el jugador tiene que matar / obtener, del NPC con el que tienen que hablar, o de la arena que deben completar.
amountSe usa para establecer la cantidad de Bosses Personalizados que deben matarse o de objetos que deben obtenerse. Por defecto es 1 si no se especifica.
dialogSe usa para establecer el diálogo del NPC con el que habla el jugador.
nameSe usa para establecer el nombre del objetivo de la misión, ya sea un NPC, un objeto personalizado o una arena. Solo con fines visuales.
itemNameSe usa solo con FETCH_ITEM – Este ajuste cambia cómo aparece el nombre del objeto en el rastreador de misiones. Te permite mostrar un nombre personalizado que sea diferente del nombre real del objeto en el juego.

¡Ten en cuenta que cada campo de Objetivo Personalizado se separa con un :!


customRewards

Establece las recompensas de la misión.

KeyValuesDefault
customRewardsFormato universal de botín de EliteMobsnone
Ejemplo
customRewards:
- currencyAmount=50:amount=1:chance=0.05
- material=COOKED_COD:amount=3:chance=1.0
- filename=magmaguys_toothpick.yml:amount=1:chance=1.0

create_quest_rewards.jpg

Nota: Si no especificas customRewards, el sistema de misiones generará automáticamente recompensas basadas en el nivel de la misión. La calidad de la recompensa escala con la dificultad de la misión e incluye tanto moneda como objetos. Para un control preciso sobre las recompensas, especifica siempre customRewards de forma explícita.


questAcceptPermission

Establece el permiso que el jugador debe tener para poder aceptar la misión.

KeyValuesDefault
questAcceptPermissionStringnone
Ejemplo
questAcceptPermission: elitequest.my_permission

questAcceptPermissions

Establece los permisos que el jugador debe tener para poder aceptar la misión.

KeyValuesDefault
questAcceptPermissionsString Listnone
Ejemplo
questAcceptPermissions: 
- elitequest.my_previous_quest_one.yml
- elitequest.my_previous_quest_two.yml

questLockoutPermission

Establece el permiso que el jugador obtendrá al completar la misión, que le impedirá hacer la misión de nuevo. Si no se especifica, el permiso de bloqueo de misión se genera automáticamente como elitequest.[filename].

KeyValuesDefault
questLockoutPermissionStringelitequest.[filename]
Ejemplo
questLockoutPermission: elitequest.my_quest.yml

questLockoutMinutes

Establece cuánto tiempo, en minutos, tendrá que esperar el jugador antes de poder hacer la misión de nuevo (funciona eliminando el permiso de bloqueo de misión).

KeyValuesDefault
questLockoutMinutesInteger-1(nunca se repetirá)
Ejemplo
questLockoutMinutes: 60

name

Establece el nombre de la misión. Acepta Color Codes.

KeyValuesDefault
nameString[filename]
Ejemplo
name: "&aMy Great Quest Name"

questLore

Establece la descripción (lore) de la misión que aparecerá en el menú de misiones del juego.

KeyValuesDefault
questLoreString Listnone
Ejemplo
questLore:
- "Interesting lore sentence."
- "Yet another interesting lore sentence."

create_quest_lore.jpg


temporaryPermissions

Establece los permisos asignados al jugador hasta que entregue la misión.

Si estás usando este ajuste para asegurarte de que un objeto solo caiga cuando los jugadores tengan una misión específica activa, también tendrás que configurar el mismo permiso en el archivo de configuración del objeto.

KeyValuesDefault
temporaryPermissionsString Listnone
Ejemplo
temporaryPermissions:
- elitequest.item_that_should_drop_only_during_quest.yml

questAcceptDialog

Establece el diálogo que aparece en el chat al aceptar la misión.

KeyValuesDefault
questAcceptDialogString Listnone
Ejemplo
questAcceptDialog:
- "My hero! You are so helpful!"
- "I wish you the best of luck!"

create_quest_accept.jpg


questCompleteMessage

Establece el diálogo que aparece en el chat al completar la misión.

KeyValuesDefault
questCompleteMessageString Listnone
Ejemplo
questCompleteMessage:
- "My hero! You have completed my difficult quest!"
- "As a reward you can have this loaf of bread!"

create_quest_complete.jpg


questCompleteCommands

Establece los comandos que se ejecutarán al completar la misión. Admite marcadores de posición: $player para el nombre del jugador, y $getX, $getY, $getZ para las coordenadas de la ubicación del jugador.

KeyValuesDefault
questCompleteCommandsString Listnone
Ejemplo
questCompleteCommands:
- say $player has finished a quest at $getX, $getY, $getZ!
- give $player diamond 1

create_quest_commands.jpg


turnInNPC

Establece el nombre de archivo del NPC con el que los jugadores tienen que hablar/interactuar para completar la misión. Este no tiene que ser el mismo NPC que entregó la misión.

KeyValuesDefault
turnInNPCFilenamenone
Ejemplo
turnInNPC: my_cool_quest_npc.yml

Dadores de Misiones

Para asignar una misión a un NPC que se la dará a los jugadores, necesitas configurar el archivo del NPC, no el archivo de la misión.

En tu archivo de configuración del NPC (~/plugins/EliteMobs/npcs/), añade:

questFileName: my_quest.yml

Para NPCs que dan varias misiones:

questFileName:
- quest_one.yml
- quest_two.yml

Consulta la documentación de creación de NPCs para más información sobre cómo configurar NPCs.


trackable

Establece si la misión usará el rastreador de misiones.

KeyValuesDefault
trackableBooleantrue
Ejemplo
trackable: true

questLevel

Establece el nivel de la misión. Esto es solo una guía visual para que los jugadores puedan saber lo desafiante que será la misión. Esto no modifica de ninguna manera los niveles de boss, objetos u otros.

KeyValuesDefault
questLevelInteger0
Ejemplo
questLevel: 10

create_quest_level.jpg


questAcceptSound

Establece el sonido que se reproduce cuando se acepta una misión. Es posible reproducir tanto sonidos de Minecraft como sonidos de un paquete de recursos.

KeyValuesDefault
questAcceptSoundStringnone
Ejemplo
questAcceptSound: entity.experience_orb.pickup

create_quest_level.jpg


questCompleteSound

Establece el sonido que se reproduce cuando se completa (se entrega) una misión. Es posible reproducir tanto sonidos de Minecraft como sonidos de un paquete de recursos.

KeyValuesDefault
questCompleteSoundStringnone
Ejemplo
questCompleteSound: entity.player.levelup

create_quest_level.jpg


Soporte de Localización

Los siguientes campos admiten localización para servidores multilingües:

  • name
  • questLore
  • questAcceptDialog
  • questCompleteMessage

Esto te permite proporcionar traducciones para distintos idiomas en tu servidor.


Permisos

Como se mencionó en las tablas anteriores, los permisos suelen ser Strings o String Lists. Pero veamos con más detalle cómo los usarás para bloquear y desbloquear misiones.

Supongamos que estás haciendo quest_3 en una serie de misiones que has planeado y no quieres que los jugadores puedan tomar quest_3 antes de terminar quest_2. Configuraríamos el archivo de la misión así:

questAcceptPermission: elitequest.quest_2.yml
questLockoutPermission: elitequest.quest_3.yml

Al establecer questAcceptPermissions en elitequest.quest_2.yml ahora hemos impedido que los jugadores tomen quest_3.yml antes de terminar quest_2.yml.
Al establecer questLockoutPermission en elitequest.quest_3.yml hemos impedido que los jugadores puedan recibir esa misión mientras ya tengan esa misión en su rastreador o si ya terminaron esa misión. Esto impide que los jugadores puedan repetir la misión.

Si quieres hacer una misión que solo esté disponible después de que los jugadores hayan completado una serie de misiones, entonces configurarías el archivo de la misión así:

questAcceptPermissions: 
- elitequest.quest_2.yml
- elitequest.quest_3.yml
- elitequest.quest_4.yml

Si quieres que los jugadores solo puedan saquear ciertos objetos cuando tengan la misión correcta activa, podemos hacerlo usando temporaryPermissions. Crearíamos un permiso en el archivo de la misión usando temporaryPermissions y luego crearíamos un permiso coincidente en el archivo del objeto usando permission.

Por ejemplo, abriríamos nuestro archivo de misión y añadiríamos lo siguiente:

temporaryPermissions: 
- elitequest.my_cool_item.yml

Luego abriríamos el archivo del objeto, en nuestro caso my_cool_item.yml, y añadiríamos lo siguiente:

permission: elitequest.my_cool_item.yml

Ahora ambos archivos tienen permisos coincidentes, lo que debería hacer que nuestro objeto solo caiga cuando los jugadores tengan la misión correcta activa.

Misiones Dinámicas

Las Misiones Dinámicas son misiones generadas procedimentalmente que EliteMobs crea y actualiza automáticamente. A diferencia de las misiones personalizadas definidas en archivos de configuración, las misiones dinámicas no requieren ninguna configuración manual y se adaptan a la progresión de cada jugador.

Cómo Funcionan

  • Nivel de misión (Quest Tier): El nivel de misión dinámica de un jugador se deriva de su nivel de combate: tier = combatLevel / 5, limitado a un rango de 1 a 20. Por ejemplo, un jugador con nivel de combate 45 recibirá misiones dinámicas de nivel 9. Las misiones en sí (y sus recompensas) se escalan al nivel de combate real del jugador, que se limita a un rango de 1 a 100.
  • 3 Misiones Por Nivel: Para cada uno de los 20 niveles de misión, el sistema genera exactamente 3 objetivos de misión aleatorios a la vez. A los jugadores se les ofrecen las 3 misiones que coinciden con su nivel actual.
  • Ciclo de Actualización Automática: El conjunto de objetivos de misión dinámica se regenera cada 60 segundos (cada 1200 ticks). Cuando el conjunto se actualiza, los nuevos objetivos reemplazan a los antiguos, dando a los jugadores una selección rotativa de tareas.
  • Adaptación a Mazmorras Dinámicas: Cuando un jugador entra en una mazmorra dinámica con una selección de nivel específica, todas sus misiones dinámicas activas se adaptan para coincidir con el nivel de los mobs de la mazmorra. El nivel de la misión, los objetivos y el nombre mostrado se actualizan en consecuencia para que las misiones sigan siendo relevantes para el contenido de la mazmorra.