All systems Combat, events and world

Motor de eventos

Oito modos de evento — Deathmatch, Team vs Team, Capture The Flag, Battle Royale, Hunting Grounds, Party, Spoil e Fight Boss — que se agendam sozinhos, montam os times, teleportam, contam pontos e pagam as recompensas. Tudo em um arquivo: events/events.xml.

This document has not been translated yet — showing the Portuguese version.

Por que isso importa para o seu servidor

Evento é o que segura jogador em horário morto. O problema é que evento feito à mão exige GM presente, e GM presente é a coisa mais escassa de qualquer projeto — principalmente às três da tarde de uma terça.

Este motor tira o GM da equação. Você define os horários uma vez, e a partir daí o servidor abre a inscrição, espera o mínimo de jogadores, teleporta, roda, apura e paga. Se ninguém se inscreve, ele cancela e tenta no próximo horário, sem deixar nada quebrado.

Existe até um recurso para o pior cenário — servidor com pouca gente online: os jogadores simulados entram para completar o time e o evento acontece mesmo assim.

O cabeçalho: regras globais

<eventEngine enabled="true" fixedSchedule="false" increasePvp="true"
             maxLevel="86" minLevel="1" maxParticipants="200"
             participantsPerIp="0" registrationTime="1" timeBetweenEvents="1">
AtributoO que faz
enabledLiga ou desliga o motor inteiro.
fixedScheduleCom true, os eventos rodam exatamente nos horários listados. Com false, o motor tem liberdade para encaixar respeitando timeBetweenEvents.
increasePvpSe as mortes dentro do evento contam para o contador de PvP do personagem.
minLevel / maxLevelFaixa de nível aceita. Vale para todos os eventos.
maxParticipantsTeto de inscritos por evento.
participantsPerIpQuantos personagens do mesmo IP podem entrar. 0 é sem limite — suba para 1 ou 2 se quiser cortar quem entra com várias janelas para ganhar sozinho.
registrationTimeMinutos de inscrição aberta antes de começar.
timeBetweenEventsIntervalo mínimo, em minutos, entre um evento e o próximo.

Jogadores simulados

<fakePlayers count="5" enabled="false" maxPerTeam="25"
             minRealPlayers="2" onlyWhenNotFull="true" spawnDelaySeconds="0"/>

Preenchem o evento quando falta gente. minRealPlayers é a trava que importa: com 2, o evento só roda se houver pelo menos dois jogadores de verdade — os simulados completam, mas não fazem o evento sozinhos. onlyWhenNotFull="true" faz eles saírem de cena assim que jogadores reais chegam.

Vem desligado por padrão. É uma ferramenta de servidor novo, para os primeiros meses.

Troca de pontos

<pointExchange day="7" hour="14" itemId="57" rate="1"/>

Os pontos ganhos nos eventos viram item pelo comando .eventexchange. day vai de 1 (segunda) a 7 (domingo), hour de 0 a 23, rate é quantos itens saem por ponto. No exemplo, domingo às 14h o jogador troca ponto por adena, um para um.

Concentrar a troca num dia e horário cria um evento social por si só — todo mundo aparece no mesmo momento.

Um evento

<event enabled="false" id="2" type="TEAM_VS_TEAM"
       minPlayers="2" runningTime="5" winPoints="15">
    <schedule times="11:00,17:00,23:00"/>
    <teams>
        <team name="Gryffindor"><loc x="148387" y="46572" z="-3408"/></team>
        <team name="Slytherin"><loc x="150567" y="46597" z="-3408"/></team>
    </teams>
    <rewards>
        <onKill chance="5" itemId="57" max="2" min="1"/>
        <winner><reward count="2" itemId="57"/></winner>
        <draw><reward count="1" itemId="57"/></draw>
        <top1><reward count="3" itemId="57"/></top1>
    </rewards>
</event>
AtributoO que faz
enabledLiga só este evento. Os oito vêm desligados de fábrica.
idIdentificador fixo do modo. Não mude.
typeO modo: DEATHMATCH, TEAM_VS_TEAM, CAPTURE_THE_FLAG, BATTLE_ROYALE, HUNTING_GROUNDS, PARTY, SPOIL, FIGHT_BOSS.
minPlayersMínimo de inscritos para o evento acontecer. Abaixo disso ele cancela.
runningTimeDuração em minutos.
winPointsPontos dados ao vencedor, gastos depois no .eventexchange.

Agenda

<schedule times="11:00,17:00,23:00"/>

Horários separados por vírgula, formato 24h. Espalhe pelos três turnos: um evento de manhã, um à tarde e um à noite cobre fusos diferentes e dá ritmo ao dia.

Mapa

Muda conforme o modo:

  • respawnSpots com vários loc — usado no Deathmatch: o jogador renasce num ponto sorteado da lista.
  • teams com um loc cada — usado no TvT e no CTF: define onde cada time nasce.
  • doors — portas que o evento abre ou fecha durante a partida. Pode ficar vazio.

As coordenadas são x, y e z do mundo. Pegue com //loc dentro do jogo, no lugar exato onde quer o spawn.

Recompensas

TagQuando paga
onKillA cada abate. chance é a probabilidade percentual, min e max a faixa de quantidade.
winnerPara o time ou jogador vencedor.
drawEm caso de empate.
top1, top2, top3Para os melhores colocados individualmente.
winnerTopPara o topo do time vencedor.

Combinar onKill de chance baixa com prêmio de vitória alto funciona melhor do que o contrário: mantém o evento disputado até o fim, em vez de virar uma corrida por abates isolados.

Ligando o primeiro evento

  1. Escolha o modo e mude enabled para true.
  2. Ajuste schedule times para horários em que o seu servidor tem gente.
  3. Confira minPlayers — um valor alto demais faz o evento nunca acontecer.
  4. Coloque as coordenadas do mapa com //loc.
  5. Defina as recompensas.
  6. Recarregue os dados.

Comece com um evento ligado e observe uma semana. Oito eventos ativos num servidor pequeno competem entre si e nenhum enche.

Cuidados

  • participantsPerIp="0" é sem limite. Num servidor com premiação boa, isso convida a múltiplas janelas.
  • minPlayers é a diferença entre evento e frustração. Melhor cancelar por falta de gente do que rodar um TvT de 2 contra 1.
  • Coordenada errada teleporta para dentro da textura. Teste o spawn antes de abrir para o público.
  • increasePvp="true" mistura evento e ranking. Se você tem ranking de PvP com premiação, avalie deixar em false para o evento não virar o caminho fácil.

Como isso conversa com o resto da base

Os comandos .register, .leave e .eventexchange são a interface do jogador com este motor — estão documentados na aba de comandos do catálogo. Os jogadores simulados compartilham configuração com fakesettings.xml, e a premiação usa os mesmos itens do sistema de recompensas em reward/.

Talk on WhatsAppContact here