Pular para o conteúdo

KingOfTheHill ​

Descrição ​

O KingOfTheHill cria eventos de captura. O servidor escolhe um local configurado, cria um mastro e criaturas e entrega saque ao jogador que completa a captura.

Os jogadores participam entrando na área do evento a pé e permanecendo dentro do raio menor de captura. O HUD aparece automaticamente e mostra o progresso individual e a quantidade de jogadores na área do evento. Cada jogador acumula seu próprio progresso; outros jogadores na área não interrompem a captura. Sair da área ou entrar em um veículo pausa o progresso sem zerá-lo. Uma nova localização de evento reinicia o progresso.

Configuração ​

Configuração padrão ​

KingOfTheHill.json
json
{
  "m_Enable": 0,
  "m_Logging": 1,
  "m_ShowOnMap": 1,
  "m_TimeStartMin": 300,
  "m_TimeStartMax": 600,
  "m_CaptureTime": 1600,
  "m_EventTimeout": 1600,
  "m_TimeInterval": 600,
  "m_MinPlayerCount": 10,
  "m_Locations": [
    {
      "m_Position": {
        "m_N": "Nort-West Airfield",
        "m_X": 4497.51,
        "m_Y": 10351.19
      },
      "m_EventRadius": 100,
      "m_CaptureRadius": 20,
      "m_RewardPools": [
        "supplies",
        "weapons"
      ],
      "m_Infecteds": [
        "ZmbM_CitizenASkinny_Blue",
        "ZmbM_CitizenASkinny_Blue",
        "ZmbM_CitizenASkinny_Blue",
        "ZmbM_CitizenASkinny_Brown",
        "ZmbM_CitizenASkinny_Brown",
        "ZmbM_CitizenASkinny_Brown",
        "ZmbM_CitizenASkinny_Grey",
        "ZmbM_CitizenASkinny_Grey",
        "ZmbM_CitizenASkinny_Grey",
        "ZmbM_CitizenASkinny_Red",
        "ZmbM_CitizenASkinny_Red",
        "ZmbM_CitizenASkinny_Red",
        "Animal_UrsusArctos",
        "Animal_CanisLupus_White",
        "Animal_CanisLupus_White",
        "Animal_CanisLupus_Grey",
        "Animal_CanisLupus_Grey",
        "Animal_CanisLupus_Grey"
      ]
    },
    {
      "m_Position": {
        "m_N": "Tisy Military",
        "m_X": 1564.15,
        "m_Y": 14064.82
      },
      "m_EventRadius": 100,
      "m_CaptureRadius": 10,
      "m_RewardPools": [
        "weapons"
      ],
      "m_Infecteds": [
        "ZmbM_CitizenASkinny_Blue",
        "ZmbM_CitizenASkinny_Blue",
        "ZmbM_CitizenASkinny_Blue",
        "ZmbM_CitizenASkinny_Brown",
        "ZmbM_CitizenASkinny_Brown",
        "ZmbM_CitizenASkinny_Brown",
        "ZmbM_CitizenASkinny_Grey",
        "ZmbM_CitizenASkinny_Grey",
        "ZmbM_CitizenASkinny_Grey",
        "ZmbM_CitizenASkinny_Red",
        "ZmbM_CitizenASkinny_Red",
        "ZmbM_CitizenASkinny_Red",
        "Animal_UrsusArctos",
        "Animal_CanisLupus_White",
        "Animal_CanisLupus_White",
        "Animal_CanisLupus_Grey",
        "Animal_CanisLupus_Grey",
        "Animal_CanisLupus_Grey"
      ]
    },
    {
      "m_Position": {
        "m_N": "Krasno Airfield",
        "m_X": 12166.42,
        "m_Y": 12644.65
      },
      "m_EventRadius": 150,
      "m_CaptureRadius": 30,
      "m_RewardPools": [
        "weapons"
      ],
      "m_Infecteds": [
        "ZmbM_CitizenASkinny_Blue",
        "ZmbM_CitizenASkinny_Blue",
        "ZmbM_CitizenASkinny_Blue",
        "ZmbM_CitizenASkinny_Brown",
        "ZmbM_CitizenASkinny_Brown",
        "ZmbM_CitizenASkinny_Brown",
        "ZmbM_CitizenASkinny_Grey",
        "ZmbM_CitizenASkinny_Grey",
        "ZmbM_CitizenASkinny_Grey",
        "ZmbM_CitizenASkinny_Red",
        "ZmbM_CitizenASkinny_Red",
        "ZmbM_CitizenASkinny_Red",
        "Animal_UrsusArctos",
        "Animal_CanisLupus_White",
        "Animal_CanisLupus_White",
        "Animal_CanisLupus_Grey",
        "Animal_CanisLupus_Grey",
        "Animal_CanisLupus_Grey"
      ]
    },
    {
      "m_Position": {
        "m_N": "Chernogorsk",
        "m_X": 7196.87,
        "m_Y": 3548.71
      },
      "m_EventRadius": 150,
      "m_CaptureRadius": 30,
      "m_RewardPools": [
        "supplies"
      ],
      "m_Infecteds": [
        "ZmbM_CitizenASkinny_Blue",
        "ZmbM_CitizenASkinny_Blue",
        "ZmbM_CitizenASkinny_Blue",
        "ZmbM_CitizenASkinny_Brown",
        "ZmbM_CitizenASkinny_Brown",
        "ZmbM_CitizenASkinny_Brown",
        "ZmbM_CitizenASkinny_Grey",
        "ZmbM_CitizenASkinny_Grey",
        "ZmbM_CitizenASkinny_Grey",
        "ZmbM_CitizenASkinny_Red",
        "ZmbM_CitizenASkinny_Red",
        "ZmbM_CitizenASkinny_Red",
        "Animal_UrsusArctos",
        "Animal_CanisLupus_White",
        "Animal_CanisLupus_White",
        "Animal_CanisLupus_Grey",
        "Animal_CanisLupus_Grey",
        "Animal_CanisLupus_Grey"
      ]
    }
  ],
  "m_RewardPools": [
    {
      "m_Name": "supplies",
      "m_Container": "AC_KingOfTheHill_SeaChest",
      "m_QuantityMax": 20,
      "m_Items": [
        {
          "m_Class": "Apple",
          "m_Chance": 50,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 2,
          "m_Attachments": []
        },
        {
          "m_Class": "BandageDressing",
          "m_Chance": 50,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 2,
          "m_Attachments": []
        },
        {
          "m_Class": "WaterBottle",
          "m_Chance": 50,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 3,
          "m_Attachments": []
        },
        {
          "m_Class": "VitaminBottle",
          "m_Chance": 50,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 3,
          "m_Attachments": []
        },
        {
          "m_Class": "Tomato",
          "m_Chance": 50,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 2,
          "m_Attachments": []
        },
        {
          "m_Class": "PainkillerTablets",
          "m_Chance": 50,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 2,
          "m_Attachments": []
        },
        {
          "m_Class": "FirstAidKit",
          "m_Chance": 50,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 2,
          "m_Attachments": []
        },
        {
          "m_Class": "Rice",
          "m_Chance": 50,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 3,
          "m_Attachments": []
        },
        {
          "m_Class": "CharcoalTablets",
          "m_Chance": 50,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 2,
          "m_Attachments": []
        },
        {
          "m_Class": "SpaghettiCan",
          "m_Chance": 50,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 2,
          "m_Attachments": []
        },
        {
          "m_Class": "Canteen",
          "m_Chance": 50,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 4,
          "m_Attachments": []
        },
        {
          "m_Class": "TetracyclineAntibiotics",
          "m_Chance": 50,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 2,
          "m_Attachments": []
        },
        {
          "m_Class": "BakedBeansCan",
          "m_Chance": 50,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 2,
          "m_Attachments": []
        },
        {
          "m_Class": "Heatpack",
          "m_Chance": 50,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 2,
          "m_Attachments": []
        },
        {
          "m_Class": "TacticalBaconCan",
          "m_Chance": 50,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 1,
          "m_Attachments": []
        }
      ]
    },
    {
      "m_Name": "weapons",
      "m_Container": "AC_KingOfTheHill_SeaChest",
      "m_QuantityMax": 20,
      "m_Items": [
        {
          "m_Class": "Battery9V",
          "m_Chance": 90,
          "m_StackMin": 75,
          "m_StackMax": 100,
          "m_QuantityMax": 1,
          "m_Attachments": []
        },
        {
          "m_Class": "M68Optic",
          "m_Chance": 50,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 1,
          "m_Attachments": []
        },
        {
          "m_Class": "M68Optic",
          "m_Chance": 25,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 1,
          "m_Attachments": [
            "Battery9V"
          ]
        },
        {
          "m_Class": "Mag_STANAG_30Rnd",
          "m_Chance": 75,
          "m_StackMin": 50,
          "m_StackMax": 100,
          "m_QuantityMax": 3,
          "m_Attachments": []
        },
        {
          "m_Class": "Mag_AKM_30Rnd",
          "m_Chance": 75,
          "m_StackMin": 50,
          "m_StackMax": 100,
          "m_QuantityMax": 3,
          "m_Attachments": []
        },
        {
          "m_Class": "Mag_FAL_20Rnd",
          "m_Chance": 75,
          "m_StackMin": 50,
          "m_StackMax": 100,
          "m_QuantityMax": 3,
          "m_Attachments": []
        },
        {
          "m_Class": "M4_RISHndgrd",
          "m_Chance": 75,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 5,
          "m_Attachments": []
        },
        {
          "m_Class": "AK_WoodHndgrd",
          "m_Chance": 75,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 5,
          "m_Attachments": []
        },
        {
          "m_Class": "M4_OEBttstck",
          "m_Chance": 75,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 5,
          "m_Attachments": []
        },
        {
          "m_Class": "AK_WoodBttstck",
          "m_Chance": 75,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 5,
          "m_Attachments": []
        },
        {
          "m_Class": "Fal_FoldingBttstck",
          "m_Chance": 75,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 5,
          "m_Attachments": []
        },
        {
          "m_Class": "M4_Suppressor",
          "m_Chance": 50,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 5,
          "m_Attachments": []
        },
        {
          "m_Class": "AK_Suppressor",
          "m_Chance": 50,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 5,
          "m_Attachments": []
        },
        {
          "m_Class": "M4A1",
          "m_Chance": 40,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 1,
          "m_Attachments": []
        },
        {
          "m_Class": "AKM",
          "m_Chance": 30,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 1,
          "m_Attachments": []
        },
        {
          "m_Class": "FAL",
          "m_Chance": 20,
          "m_StackMin": 0,
          "m_StackMax": 100,
          "m_QuantityMax": 1,
          "m_Attachments": []
        }
      ]
    }
  ],
  "m_Messages": {
    "m_Before": "New event will start in %TimeMinutes% minutes.",
    "m_After": "Event has been started at %LocationName%.",
    "m_Count": "Event not started due to lack of players.",
    "m_Claimed": "The event is at more than %PercentProgress%% of progress.",
    "m_Winner": "Player %PlayerName% completed the %LocationName% event.",
    "m_Failed": "Event ended with no player victorious."
  },
  "m_NotificationTime": 10,
  "m_NotificationInterval": 300,
  "m_NotificationClaimedInChat": 0,
  "m_Webhook": ""
}

Opções ​

Os tempos são expressos em segundos e os raios em metros. Revise as coordenadas de Chernarus para o mapa do servidor. Use valores positivos de captura, timeout e intervalo, limite máximo de início maior que o mínimo e listas de locais e recompensas não vazias.

OpçãoTipoDescrição
m_EnableboolCom 1, habilita eventos, HUD e comandos do módulo. Com 0, desabilita esses recursos.
m_LoggingboolCom 1, registra o início dos eventos e as reivindicações de recompensa nos logs. Com 0, desativa esses registros do módulo.
m_ShowOnMapboolCom 1, publica a área do evento em Events no AC Map. Com 0, não publica. O marcador é removido quando o evento ativo termina.
m_TimeStartMinintLimite mínimo inclusivo do atraso aleatório entre o anúncio prévio e a verificação automática de população.
m_TimeStartMaxintLimite máximo exclusivo desse atraso aleatório.
m_CaptureTimeintTempo base para completar o progresso individual permanecendo dentro do raio de captura. Deve ser positivo para o progresso aumentar.
m_EventTimeoutintTempo sem atualizações de presença de jogadores na área do evento. Essas atualizações renovam o temporizador; não é uma duração máxima fixa do evento.
m_TimeIntervalintEspera antes de agendar o primeiro anúncio automático e antes do ciclo seguinte após conclusão, falha ou falta de jogadores. O atraso aleatório de início ocorre depois dessa espera.
m_MinPlayerCountintNúmero mínimo de jogadores conectados verificado após o atraso automático de início. Se atendido, o evento é inicializado cerca de 2 segundos depois; caso contrário, outro ciclo é agendado. A ação manual set ignora essa verificação.
m_Locationsarray<object>Locais disponíveis para os eventos. Um é escolhido aleatoriamente ao inicializar um evento.
m_RewardPoolsarray<object>Grupos de recompensas definidos na configuração deste módulo, com seus contêineres e listas de itens.
m_MessagesobjectModelos de anúncios públicos, detalhados abaixo.
m_NotificationTimeintDuração de exibição das notificações na tela. A exibição depende do módulo Notification.
m_NotificationIntervalintIntervalo entre anúncios de progresso após detectar presença na área do evento. Com 0, desativa esses anúncios periódicos.
m_NotificationClaimedInChatboolCom 1, envia os anúncios de progresso pelo Chat; com 0, exibe como notificações. Os demais anúncios continuam como notificações.
m_WebhookstringURL do webhook Discord para os anúncios públicos não vazios. Deixe vazia para desativar o envio externo.

O AC Map é usado quando m_ShowOnMap=1, e o Chat é usado para comandos administrativos e anúncios de progresso configurados para chat. Configure o webhook somente quando precisar do envio externo.

m_Locations[] ​

OpçãoTipoDescrição
m_PositionobjectNome e coordenadas horizontais do centro do evento.
m_EventRadiusintRaio usado para o HUD, a contagem de jogadores, as atualizações de presença e a criação de criaturas.
m_CaptureRadiusintRaio ao redor do centro em que o progresso individual de captura aumenta. Mantenha-o dentro do raio do evento.
m_RewardPoolsarray<string>Nomes dos grupos de recompensas deste módulo. Um nome é sorteado; se a lista estiver vazia ou esse nome não for encontrado, o módulo sorteia entre todos os grupos configurados.
m_Infectedsarray<string>Classes de criaturas criadas para o evento, incluindo infectados ou animais. Cada entrada cria uma criatura em posição aleatória dentro do raio do evento; nomes repetidos criam criaturas adicionais.

O centro do local determina a posição do mastro no terreno. A presença dentro do raio maior do evento pode mantê-lo ativo mesmo sem jogador capturando. O anúncio de progresso usa o maior percentual individual informado ao servidor durante o evento.

m_Locations[].m_Position ​

OpçãoTipoDescrição
m_NstringNome do local usado nos anúncios do evento.
m_XfloatCoordenada horizontal X.
m_YfloatSegunda coordenada horizontal, correspondente ao eixo Z do DayZ. A altura é obtida do terreno.

m_RewardPools[] ​

OpçãoTipoDescrição
m_NamestringIdentificador do grupo referenciado em m_Locations[].m_RewardPools. Use nomes únicos.
m_ContainerstringClasse do item criado para conter a recompensa. A configuração distribuída usa AC_KingOfTheHill_SeaChest, com inventário de 10 × 100.
m_QuantityMaxintLimite total positivo de seleções de itens em uma recompensa. Uma entrada sorteada consome cota mesmo se a criação do item falhar.
m_Itemsarray<object>Itens, chances, limites individuais, conteúdo das pilhas e acessórios desse grupo.

As recompensas são definidas aqui, em vez de usar nomes do catálogo separado do Rewards. O contêiner é criado próximo ao centro do local, e o jogador deve recolher seu conteúdo. O início do próximo evento automático exclui o contêiner anterior rastreado e seu conteúdo restante. A recarga do módulo também exclui o mastro e o contêiner atualmente rastreados.

m_RewardPools[].m_Items[] ​

OpçãoTipoDescrição
m_ClassstringClasse existente de item, arma, munição ou carregador a criar.
m_ChanceintChance percentual por tentativa, de 0 a 100.
m_StackMinintConteúdo mínimo em percentual da quantidade máxima do item. Use de 0 a 100, sem exceder m_StackMax.
m_StackMaxintPercentual máximo de conteúdo, entre m_StackMin e 100. Aplica-se à munição ou quantidade do item, não à vida do item.
m_QuantityMaxintNúmero máximo de seleções dessa entrada por recompensa; 0 a exclui do sorteio.
m_Attachmentsarray<string>Classes de acessórios a criar no item sorteado, conforme os espaços compatíveis. Use [] para nenhum.

O gerador usa uma cópia da lista de itens, então as cotas são renovadas a cada recompensa. As entradas são tentadas na ordem da lista em múltiplas passagens; chances baixas e falhas de criação podem gerar menos itens que o limite total. Itens cuja quantidade máxima é um não recebem ajuste de pilha.

m_Messages ​

Um modelo vazio suprime o anúncio correspondente e seu envio pelo webhook.

OpçãoTipoDescrição
m_BeforestringAnúncio da espera aleatória antes da verificação automática de população.
m_AfterstringEvento inicializado no local escolhido.
m_CountstringInício automático recusado por quantidade insuficiente de jogadores conectados.
m_ClaimedstringAnúncio periódico de progresso controlado por m_NotificationInterval.
m_WinnerstringJogador que concluiu o evento.
m_FailedstringEvento encerrado após o timeout de atualizações de presença.
PlaceholderValor
%LocationName%Nome do local enquanto há uma localização ativa, como nos anúncios de início, progresso e vencedor.
%PlayerName%Nome do vencedor em m_Winner.
%TimeMinutes%Espera expressa em minutos em m_Before.
%PercentProgress%Maior percentual individual informado em m_Claimed; preserve o % seguinte no modelo para exibir o símbolo de porcentagem.

Classes de configuração ​

O evento cria os objetos abaixo automaticamente. Eles não são campos selecionáveis no JSON e não devem ser incluídos no spawn comum de saque.

ClasseFinalidade
AC_KingOfTheHill_PoleMastro do evento e indicador de fumaça.
AC_KingOfTheHill_FlagBandeira criada automaticamente no mastro do evento.

Tipos ​

O baú de recompensa é criado pelo evento. Fora desse fluxo, um baú não associado à missão é excluído automaticamente após cerca de 10 segundos; uma entrada na economia sozinha não o torna persistente.

types.xml
xml
<type name="AC_KingOfTheHill_SeaChest">
    <lifetime>3888000</lifetime>
    <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0" />
</type>

Comandos ​

O módulo registra /kingofthehill, /king e /koth quando habilitado. Os três aceitam as mesmas ações. O Chat consulta a permissão do alias utilizado: command.kingofthehill, command.king ou command.koth; root concede os três acessos.

/kingofthehill start ​

Encerra um evento ativo e agenda outro ciclo após m_TimeInterval, seguido do atraso aleatório de início e da verificação de população. Se não houver evento ativo, essa ação não cria um novo agendamento nem reinicia um evento interrompido antes com stop; use set para um evento imediato ou recarregue o módulo.

  • Sintaxe: /kingofthehill start
  • Argumentos: ação start obrigatória.
  • Permissão: command.kingofthehill ou root. Com /king start ou /koth start, use a permissão do alias correspondente.
  • Exemplo: /kingofthehill start

/kingofthehill set ​

Cancela as chamadas automáticas pendentes e inicializa um evento imediatamente em um local configurado aleatório, ignorando o mínimo de jogadores e o atraso de início. O nome opcional mostrado na mensagem de erro do comando não é utilizado pela implementação; ele não seleciona um local.

  • Sintaxe: /kingofthehill set
  • Argumentos: ação set obrigatória; não há argumento de local implementado para seleção.
  • Permissão: command.kingofthehill ou root. Com /king set ou /koth set, use a permissão do alias correspondente.
  • Exemplo: /kingofthehill set

Essa ação não exclui os mastros ou contêineres de recompensa anteriores antes de criar o novo evento. Evite o uso repetido enquanto ainda houver objetos de um evento anterior.

/kingofthehill stop ​

Interrompe a captura ativa e cancela as chamadas automáticas pendentes. O marcador do evento é removido e a fumaça do mastro atual é interrompida. Essa ação mantém o mastro, o contêiner de recompensa e as criaturas no mundo; ela não agenda o próximo evento.

  • Sintaxe: /kingofthehill stop
  • Argumentos: ação stop obrigatória.
  • Permissão: command.kingofthehill ou root. Com /king stop ou /koth stop, use a permissão do alias correspondente.
  • Exemplo: /kingofthehill stop

/reload kingofthehill ​

Recarrega a configuração pelo módulo Commands, remove o mastro e o contêiner de recompensa atualmente rastreados com seu conteúdo restante e reinicia o ciclo de eventos. As criaturas criadas anteriormente não são removidas por essa rotina de recarga.

  • Sintaxe: /reload kingofthehill
  • Argumentos: kingofthehill identifica o módulo a recarregar.
  • Permissão: command.reload ou root.
  • Exemplo: /reload kingofthehill

Permissões ​

Configure os grupos administrativos conforme Permissões. Cada alias tem sua própria permissão de chat, e cada uma dessas permissões libera as três ações para aquele alias.

PermissãoAção
command.kingofthehillUsar start, set e stop por /kingofthehill.
command.kingUsar as mesmas ações por /king.
command.kothUsar as mesmas ações por /koth.
command.reloadRecarregar o módulo por /reload kingofthehill.
rootSatisfazer todas as consultas de permissão acima.

Distribuído sob a licença MIT.