Pular para o conteúdo principal

Criando Quests

webapp_banner.jpg

Exemplo de Quest

EliteMobs vem com um test_quest.yml pré-configurado, que será analisado aqui como um formato simples de quest a seguir.

Quests personalizadas ficam na pasta ~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

Se a interface da sua quest não se parecer com isso, você pode alterá-la para corresponder usando /em alt.

Esta quest de exemplo dará aos jogadores a tarefa de matar 1 test_boss.yml. (O nome real do boss exibido no rastreador de quests será o name: definido em test_boss.yml.) E como recompensa por completar a quest, eles serão recompensados com 1 Palito de Dente do Magmaguy.

Criando Quests Personalizadas

customObjectives

Define os objetivos da quest.

KeyValuesDefault
customObjectivesSpecial [1]none

Nota: Se você estiver usando um boss multifásico como seu objetivo, então o objetivo deve estar usando a primeira fase como alvo.

Examples

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

create_quest_objective.jpg

Special [1]

Expand Table

Objetivos personalizados são construídos usando os seguintes valores:

KeyDescription
KILL_CUSTOM / FETCH_ITEM / DIALOGUsado para definir o tipo de objetivo que isso representa. KILL_CUSTOM indica que a quest envolve matar um Boss Personalizado específico, FETCH_ITEM indica que a quest envolve obter um Item Personalizado específico e DIALOG indica que a quest envolve conversar com um NPC.
filenameUsado para definir o nome do arquivo do Boss Personalizado, do Item Personalizado que o jogador tem que matar / obter ou do NPC com quem eles têm que conversar.
amountUsado para definir a quantidade de Bosses Personalizados que devem ser mortos ou itens que devem ser obtidos.
dialogUsado para definir o diálogo do NPC com quem o jogador conversa.
nameUsado para definir o nome do objetivo da quest, seja um NPC ou um item personalizado. Apenas para fins visuais.
itemNameUsado apenas com FETCH_ITEM – Esta configuração altera como o nome do item aparece no rastreador de quests. Permite exibir um nome personalizado que é diferente do nome real do item no jogo.

Observe que cada campo de Objetivo Personalizado é separado por : !


customRewards

Define as recompensas da quest.

KeyValuesDefault
customRewardsUniversal EliteMobs loot formatnone
Example
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


questAcceptPermission

Define a permissão que o jogador deve ter para aceitar a quest.

KeyValuesDefault
questAcceptPermissionStringnone
Example
questAcceptPermission: elitequest.my_permission

questAcceptPermissions

Define as permissões que o jogador deve ter para aceitar a quest.

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

questLockoutPermission

Define a permissão que o jogador receberá ao completar a quest, o que os impedirá de fazer a quest novamente (Geralmente o Filename da quest que você está editando).

KeyValuesDefault
questLockoutPermissionStringnone
Example
questLockoutPermission: elitequest.my_quest.yml

questLockoutMinutes

Define quanto tempo, em minutos, o jogador terá que esperar antes de poder fazer a quest novamente (funciona removendo a permissão de bloqueio da quest).

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

name

Define o nome da quest. Aceita Color Codes.

KeyValuesDefault
nameStringnone
Example
name: "&aMy Great Quest Name"

questLore

Define o lore da quest que aparecerá no menu de quests do jogo.

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

create_quest_lore.jpg


temporaryPermissions

Define as permissões atribuídas ao jogador até que ele entregue a quest.

Se você estiver usando esta configuração para garantir que um item só seja dropado quando os jogadores tiverem uma quest específica ativa, você também precisará configurar a Same Permission no arquivo de configuração do item.

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

questAcceptDialog

Define o diálogo que aparece no chat ao aceitar a quest.

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

create_quest_accept.jpg


questCompleteMessage

Define o diálogo que aparece no chat ao completar a quest.

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

create_quest_complete.jpg


questCompleteCommands

Define os comandos que serão executados ao completar a quest.

KeyValuesDefault
questCompleteCommandsString Listnone
Example
questCompleteCommands:
- say $player has finished a quest!

create_quest_commands.jpg


turnInNPC

Define o nome do arquivo do NPC com quem os jogadores precisam conversar/interagir para completar a quest. Este não precisa ser o mesmo NPC que deu a quest.

KeyValuesDefault
turnInNPCFilenamenone
Example
turnInNPC: my_cool_quest_npc.yml

trackable

Define se a quest usará o rastreador de quests.

KeyValuesDefault
trackableBooleantrue
Example
trackable: true

questLevel

Define o nível da quest. Isto é apenas um guia visual para que os jogadores possam saber o quão desafiadora a quest será. Isto não modifica de forma alguma os níveis de boss, item ou outros.

KeyValuesDefault
questLevelInteger0
Example
questLevel: 10

create_quest_level.jpg


questAcceptSound

Define o som que toca quando uma quest é aceita. É possível tanto tocar sons do Minecraft quanto tocar sons de um resource pack.

KeyValuesDefault
questAcceptSoundStringnone
Example
questAcceptSound: entity.experience_orb.pickup

create_quest_level.jpg


questCompleteSound

Define o som que toca quando uma quest é completada (entregue). É possível tanto tocar sons do Minecraft quanto tocar sons de um resource pack.

KeyValuesDefault
questCompleteSoundStringnone
Example
questCompleteSound: entity.player.levelup

create_quest_level.jpg

Permissions

Como mencionado nas tabelas acima, permissões geralmente são Strings ou String Lists. Mas vamos entrar em mais detalhes sobre como você usará estas para bloquear e desbloquear quests.

Digamos que você está criando quest_3 em uma série de quests que você planejou e não quer que os jogadores possam pegar quest_3 antes de terminarem quest_2. Configuramos o arquivo de quest assim:

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

Ao definir questAcceptPermissions como elitequest.quest_2.yml, agora impedimos os jogadores de pegar quest_3.yml antes de terminarem quest_2.yml.
Ao definir questLockoutPermission como elitequest.quest_3.yml, impedimos os jogadores de poderem receber aquela quest enquanto já tiverem aquela quest em seu rastreador ou se já tiverem terminado aquela quest. Isso impede que os jogadores possam repetir a quest.

Se você quiser fazer uma quest que só se torna disponível depois que os jogadores completarem uma série de quests, então você configuraria o arquivo de quest assim:

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

Se você quiser que os jogadores só possam saquear certos itens quando tiverem a quest correta ativa, então podemos fazer isso usando temporaryPermissions. Criaríamos uma permissão no arquivo de quest usando temporaryPermissions e depois faríamos uma permission correspondente no arquivo de item usando permission.

Por exemplo, abriríamos nosso arquivo de quest e adicionaríamos o seguinte:

temporaryPermissions:
- elitequest.my_cool_item.yml

Então abriríamos o arquivo de item, no nosso caso my_cool_item.yml, e adicionaríamos o seguinte:

permission: elitequest.my_cool_item.yml

Ambos os arquivos agora têm permissões correspondentes, o que agora deve fazer nosso item só dropar quando os jogadores tiverem a quest correta ativa.