Saltar al contenido principal

Creando Misiones

webapp_banner.jpg

Ejemplo de Misión

EliteMobs viene preempaquetado con un test_quest.yml, que será analizado aquí como un formato de misión simple 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 misión 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 jefe que se muestra 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 Palillo de Magmaguy.

Creando Misiones Personalizadas

customObjectives

Establece los objetivos de la misión.

ClaveValoresPor defecto
customObjectivesEspecial [1]ninguno

Nota: Si estás usando un jefe multifase como tu objetivo, entonces el objetivo debe estar usando 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

Especial [1]

Expandir Tabla

Los Objetivos Personalizados se construyen usando los siguientes valores:

ClaveDescripción
KILL_CUSTOM / FETCH_ITEM / DIALOG / ARENASe usa para establecer el tipo de objetivo que esto representa. KILL_CUSTOM indica que la misión involucra matar un Jefe Personalizado específico, FETCH_ITEM indica que la misión involucra obtener un Objeto Personalizado específico, DIALOG indica que la misión involucra hablar con un NPC, y ARENA indica que la misión involucra completar una arena específica.
filenameSe usa para establecer el nombre del archivo del Jefe Personalizado, el Objeto Personalizado que el jugador tiene que matar / obtener, el NPC con el que tiene que hablar, o la arena que debe completar.
amountSe usa para establecer la cantidad de Jefes Personalizados que deben ser asesinados u objetos que deben ser obtenidos. 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 propósitos visuales.
itemNameSe usa solo con FETCH_ITEM – Esta configuración cambia cómo aparece el nombre del objeto en el rastreador de misiones. Te permite mostrar un nombre personalizado que es diferente del nombre real del objeto en el juego.

¡Ten en cuenta que cada campo de Objetivo Personalizado está separado con un : !


customRewards

Establece las recompensas de la misión.

ClaveValoresPor defecto
customRewardsFormato universal de botín de EliteMobsninguno
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, siempre especifica customRewards explícitamente.


questAcceptPermission

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

ClaveValoresPor defecto
questAcceptPermissionStringninguno
Ejemplo
questAcceptPermission: elitequest.my_permission

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, siempre especifica customRewards explícitamente.


questAcceptPermissions

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

ClaveValoresPor defecto
questAcceptPermissionsString Listninguno
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, lo cual los bloqueará para hacer la misión nuevamente. Si no se especifica, el permiso de bloqueo de misión se genera automáticamente como elitequest.[filename].

ClaveValoresPor defecto
questLockoutPermissionStringelitequest.[filename]
Ejemplo
questLockoutPermission: elitequest.my_quest.yml

questLockoutMinutes

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

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

name

Establece el nombre de la misión. Acepta Códigos de Color.

ClaveValoresPor defecto
nameStringninguno
Ejemplo
name: "&aMy Great Quest Name"

questLore

Establece la historia de la misión que aparecerá en el menú de misiones del juego.

ClaveValoresPor defecto
questLoreString Listninguno
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 esta configuración para asegurar que un objeto solo se dropee cuando los jugadores tienen una misión específica activa, también necesitarás configurar el Mismo Permiso en el archivo de configuración del objeto.

ClaveValoresPor defecto
temporaryPermissionsString Listninguno
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.

ClaveValoresPor defecto
questAcceptDialogString Listninguno
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.

ClaveValoresPor defecto
questCompleteMessageString Listninguno
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. Soporta marcadores de posición: $player para el nombre del jugador, y $getX, $getY, $getZ para las coordenadas de ubicación del jugador.

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

create_quest_commands.jpg


turnInNPC

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

ClaveValoresPor defecto
turnInNPCFilenameninguno
Ejemplo
turnInNPC: my_cool_quest_npc.yml

Quest Givers

Para asignar una misión a un NPC que 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/), agrega:

questFileName: my_quest.yml

Para NPCs que dan múltiples 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.

ClaveValoresPor defecto
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 qué tan desafiante será la misión. Esto no modifica de ninguna manera los niveles de jefes, objetos u otros.

ClaveValoresPor defecto
questLevelInteger0
Ejemplo
questLevel: 10

create_quest_level.jpg


questAcceptSound

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

ClaveValoresPor defecto
questAcceptSoundStringninguno
Ejemplo
questAcceptSound: entity.experience_orb.pickup

create_quest_level.jpg


questCompleteSound

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

ClaveValoresPor defecto
questCompleteSoundStringninguno
Ejemplo
questCompleteSound: entity.player.levelup

create_quest_level.jpg


Soporte de Localización

Los siguientes campos soportan localización para servidores multiidioma:

  • name
  • questLore
  • questAcceptDialog
  • questCompleteMessage

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


Permisos

Como se mencionó en las tablas anteriores, los permisos son usualmente Strings o String Lists. Pero vamos a entrar en más detalle sobre cómo los usarás para bloquear y desbloquear misiones.

Digamos 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 que terminen quest_2. Configuraríamos el archivo de misión de esta manera:

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

Al establecer questAcceptPermissions a elitequest.quest_2.yml ahora hemos evitado que los jugadores tomen quest_3.yml antes de que terminen quest_2.yml.
Al establecer questLockoutPermission a elitequest.quest_3.yml hemos evitado 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 evita 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 misión de esta manera:

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

Si quieres que los jugadores solo puedan obtener ciertos objetos cuando tienen la misión correcta activa, entonces podemos hacer eso usando temporaryPermissions. Haríamos un permiso en el archivo de misión usando temporaryPermissions y luego hacer un permiso coincidente en el archivo del objeto usando permission.

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

temporaryPermissions:
- elitequest.my_cool_item.yml

Luego abriríamos el archivo del objeto, en nuestro caso my_cool_item.yml y luego agregaríamos lo siguiente:

permission: elitequest.my_cool_item.yml

Ambos archivos ahora tienen permisos coincidentes que deberían hacer que nuestro objeto solo se dropee cuando los jugadores tienen la misión correcta activa.