Saltar para o conteúdo principal

EliteScript

webapp_banner.jpg

EliteScript é um sistema de scripting abrangente para os plugins do MagmaGuy, fornecendo opções de personalização avançadas para criar comportamentos dinâmicos para bosses e outras entidades no Minecraft.

EliteScript ou Lua?

O EliteMobs tem dois sistemas de scripting e ambos são totalmente suportados. O EliteScript não está descontinuado.

  • EliteScript (esta página e as suas irmãs) — YAML declarativo. Melhor quando o seu poder é "neste evento, executar estas ações sobre estes alvos". Nada aqui foi removido ou substituído.
  • Poderes Lua — ficheiros .lua na mesma pasta powers. Melhor quando precisa de variáveis, ciclos, ramificação aleatória, estado por boss ou ações posteriores agendadas. A maioria dos poderes incluídos está escrita em Lua; alguns poderes YAML continuam incluídos.

Não são rivais: a API context.script do Lua é um invólucro fino em torno do motor do EliteScript. Quando escreve context.script:target({...}) ou context.script:zone({...}) em Lua, a tabela que passa é entregue exatamente ao mesmo código de alvos/zonas/vetores relativos/partículas documentado nestas páginas, pelo que todos os nomes de campos abaixo se aplicam literalmente. Aprender EliteScript não é esforço desperdiçado se mais tarde passar para Lua.

Uma consequência prática: se um poder .lua e um poder .yml partilharem o mesmo nome base, uma entrada da lista powers: de um boss que aponte para o .yml resolve para o ficheiro .lua. Foi assim que os poderes incluídos foram migrados sem quebrar as configurações de bosses existentes.

Visão geral​

EliteScript permite que administradores de servidores criem comportamentos baseados em eventos para bosses e mobs personalizados. O sistema de scripting tem seis componentes principais:

  • Events: Gatilhos que iniciam a execução do script (dano, surgimento, morte, etc.)
  • Conditions: Requisitos que têm de ser cumpridos para que as ações sejam executadas
  • Actions: Os comportamentos a serem executados (dano, teletransporte, gerar partículas, etc.)
  • Targets: Quais entidades ou localizações as ações afetam
  • Zones: Áreas definidas no mundo para seleção de alvos e deteção
  • Cooldowns: Restrições de tempo para prevenir spam de scripts

Os Elite Scripts podem ser adicionados como ficheiros de poder independentes ou diretamente nos ficheiros de configuração de bosses personalizados.

Quando um boss contém vários scripts, um script malformado é ignorado com uma mensagem na consola que identifica o script e o ficheiro do boss. Os restantes scripts válidos podem continuar a carregar. Conditions e Cooldowns devem conter mapas de chaves e valores, não listas YAML. Números inválidos também fazem o script ser ignorado: um decimal onde se espera um número inteiro, como duration: 1.5, um intervalo invertido como 5~1, ou texto que não seja um número. Corrija o script indicado e recarregue para repor o seu comportamento.

Exemplo de início rápido​

Aqui está um EliteScript simples que faz um boss lançar raios nos jogadores quando sofre dano:

eliteScript:
LightningStrike:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: STRIKE_LIGHTNING
Target:
targetType: DIRECT_TARGET
repeatEvery: 20
times: 3
Cooldowns:
local: 60
global: 20

Este script é ativado quando um jogador causa dano ao boss e mostra raios na posição do jogador 3 vezes (uma vez por segundo), com um tempo de recarga de 60 ticks antes da próxima ativação. STRIKE_LIGHTNING é apenas visual; acrescente uma ação DAMAGE se o poder deve causar dano ao jogador.

Componentes do script​

EliteScript fornece ampla personalização através do seu sistema de componentes. Para informações detalhadas sobre cada componente, consulte as seguintes páginas:

Componentes principais​

  • Events - 13 tipos de eventos incluindo dano, morte, surgimento, combate e gatilhos baseados em zonas
  • Actions - 35 tipos de ações para criar comportamentos complexos
  • Targets - 17 tipos de alvos para selecionar entidades e localizações
  • Conditions - Condições de filtragem e bloqueio com múltiplos tipos de verificação
  • Zones - 8 formas de zona (esferas, cilindros, cuboides, raios, cones, etc.)
  • Cooldowns - Sistemas de tempo de recarga local e global
  • Vetores relativos - Posicionamento e movimento avançado

Casos de uso comuns​

EliteScript é normalmente usado para:

  • Lutas de boss baseadas em fases: Diferentes padrões de ataque em diferentes percentagens de vida
  • Mecânicas de arena: Dano baseado em zonas, melhorias ou surgimentos em áreas específicas
  • Ataques personalizados: Efeitos de partículas únicos, projéteis e ataques em área
  • Perigos ambientais: Raios periódicos, blocos caindo ou fogo
  • Mecânicas interativas: Teletransporte, geração de mobs e modificação do mundo
  • Comunicação com jogadores: Mensagens, títulos, barras de ação e barras de boss
  • Comportamentos condicionais: Diferentes ações baseadas na contagem de jogadores, localização ou estado do boss

Implementação​

Os scripts podem ser implementados de duas maneiras:

  1. Ficheiros de poder: Crie ficheiros .yml independentes em ~/plugins/EliteMobs/powers/
  2. Ficheiros de boss personalizado: Adicione secções eliteScript: diretamente às configurações de bosses personalizados

Para instruções detalhadas sobre a criação de poderes e bosses personalizados, consulte:

Considerações de desempenho​

Ao criar scripts, tenha estas melhores práticas em mente:

  • Use tempos de recarga para prevenir problemas de desempenho com scripts de ativação rápida
  • Eventos baseados em zonas (ZoneEnterEvent, ZoneLeaveEvent) são computacionalmente caros - use zonas pequenas e tempos de recarga apropriados
  • Use condições de filtragem para reduzir verificações desnecessárias
  • Teste os scripts por completo antes de os implementar em servidores de produção

Próximos passos​

Para começar a criar os seus próprios EliteScripts:

  1. Revise a página de Events para entender o que pode ativar scripts
  2. Explore a página de Actions para ver quais os comportamentos que pode criar
  3. Aprenda sobre Targets para controlar o que as suas ações afetam
  4. Estude os exemplos em cada página de componentes
  5. Comece com scripts simples e aumente gradualmente a complexidade