Skip to content

Chapter 6.10: Central Economy

Home | << Previous: Networking & RPC | Central Economy | Next: Mission Hooks >>


Introdução

A Central Economy (CE) é o sistema server-side do DayZ para gerenciar todas as entidades que podem spawnar no mundo: loot, veículos, infectados, animais e eventos dinâmicos. Ela é configurada inteiramente através de arquivos XML na pasta da missão. Embora a CE em si seja um sistema da engine (não diretamente scriptável), entender seus arquivos de configuração é essencial para qualquer mod de servidor. Este capítulo cobre todos os arquivos de configuração da CE, sua estrutura, parâmetros-chave e como eles interagem.


Como a CE Funciona

  1. O servidor lê types.xml para aprender o nominal (contagem alvo) e min (mínimo antes de restock) de cada item.
  2. Itens recebem flags de usage (ex: Military, Town) que mapeiam para tipos de construção/localização.
  3. Itens recebem flags de value (ex: Tier1 até Tier4) que os restringem a zonas do mapa.
  4. A CE periodicamente escaneia o mundo, conta itens existentes e spawna novos quando as contagens caem abaixo do min.
  5. Itens não tocados pelo tempo de lifetime (segundos) são limpos.
  6. Eventos dinâmicos (events.xml) spawnam veículos, quedas de helicóptero e grupos de infectados em sua própria programação.

Visão Geral dos Arquivos

Todos os arquivos da CE ficam na pasta da missão (ex: dayzOffline.chernarusplus/).

ArquivoPropósito
db/types.xmlParâmetros de cada item spawnável
db/events.xmlDefinições de eventos dinâmicos (veículos, quedas, infectados)
db/globals.xmlParâmetros globais da CE (timers, limites)
db/economy.xmlChaves de alternância de subsistemas
cfgeconomycore.xmlClasses raiz, padrões, logging da CE
cfgspawnabletypes.xmlRegras de attachment e cargo por item
cfgrandompresets.xmlPools de preset de loot aleatório
cfgeventspawns.xmlCoordenadas do mundo para posições de spawn de eventos
cfglimitsdefinition.xmlTodos os nomes válidos de flags de categoria, usage e value
cfgplayerspawnpoints.xmlLocalizações de spawn de novos jogadores

types.xml

O arquivo mais crítico da CE. Todo item que pode existir no mundo deve ter uma entrada aqui.

Estrutura

xml
<types>
    <type name="AKM">
        <nominal>10</nominal>
        <lifetime>14400</lifetime>
        <restock>0</restock>
        <min>5</min>
        <quantmin>-1</quantmin>
        <quantmax>-1</quantmax>
        <cost>100</cost>
        <flags count_in_cargo="0" count_in_hoarder="0"
               count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
        <category name="weapons"/>
        <usage name="Military"/>
        <value name="Tier3"/>
        <value name="Tier4"/>
    </type>
</types>

Parâmetros

ParâmetroDescriçãoValores Típicos
nominalContagem alvo em todo o mapa1 - 200
lifetimeSegundos antes de itens não tocados desaparecerem3600 (1h) - 14400 (4h)
restockSegundos antes da CE tentar respawnar após item ser pego0 (imediato) - 1800
minContagem mínima antes da CE spawnar maisGeralmente nominal / 2
quantminQuantidade mínima % (munição, líquidos); -1 = não aplicável-1, 0 - 100
quantmaxQuantidade máxima %; -1 = não aplicável-1, 0 - 100
costCusto de prioridade (sempre 100 no vanilla)100

Flags

FlagDescrição
count_in_cargoContar itens dentro de cargo de jogador/container para o nominal
count_in_hoarderContar itens em armazenamento (tendas, barris, esconderijos enterrados)
count_in_mapContar itens no chão e em construções
count_in_playerContar itens em personagens de jogadores
craftedItem é craftável (CE não o spawna naturalmente)
delootLoot de evento dinâmico (spawnado por eventos, não pela CE)

Category, Usage e Value

  • category: Categoria do item (ex: weapons, tools, food, clothes, containers)
  • usage: Onde o item spawna (ex: Military, Police, Town, Village, Farm, Hunting, Coast)
  • value: Restrição de tier do mapa (ex: Tier1 = costa, Tier2 = interior, Tier3 = militar, Tier4 = interior profundo)

Um item pode ter múltiplas tags <usage> e <value> para spawnar em múltiplas localizações e tiers.

Exemplo --- adicionar um item personalizado à economia:

xml
<type name="MyCustomRifle">
    <nominal>5</nominal>
    <lifetime>14400</lifetime>
    <restock>1800</restock>
    <min>2</min>
    <quantmin>-1</quantmin>
    <quantmax>-1</quantmax>
    <cost>100</cost>
    <flags count_in_cargo="0" count_in_hoarder="0"
           count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
    <category name="weapons"/>
    <usage name="Military"/>
    <value name="Tier3"/>
    <value name="Tier4"/>
</type>

globals.xml

Parâmetros globais da CE que afetam todos os itens.

xml
<variables>
    <var name="AnimalMaxCount" type="0" value="200"/>
    <var name="CleanupLifetimeDeadPlayer" type="0" value="3600"/>
    <var name="CleanupLifetimeDeadInfected" type="0" value="330"/>
    <var name="InitialSpawn" type="0" value="1200"/>
    <var name="LootDamageMax" type="0" value="2"/>
    <var name="LootDamageMin" type="0" value="0"/>
    <var name="RespawnAttempt" type="0" value="2"/>
    <var name="FlagRefreshFrequency" type="0" value="432000"/>
    <var name="TimeLogin" type="0" value="15"/>
    <var name="TimeLogout" type="0" value="15"/>
    <var name="ZombieMaxCount" type="0" value="1000"/>
</variables>

Parâmetros-Chave

VariávelDescrição
AnimalMaxCountMáximo de animais vivos simultaneamente
ZombieMaxCountMáximo de infectados vivos simultaneamente
CleanupLifetimeDeadPlayerSegundos antes do corpo de jogador morto desaparecer
CleanupLifetimeDeadInfectedSegundos antes do zumbi morto desaparecer
InitialSpawnNúmero de itens para spawnar ao iniciar o servidor
LootDamageMin / LootDamageMaxRange de dano aplicado ao loot spawnado (0-4: Prístino a Arruinado)
RespawnAttemptSegundos entre verificações de respawn
FlagRefreshFrequencyIntervalo de refresh da flag de território (segundos)
TimeLogin / TimeLogoutTimer de login/logout (segundos)

events.xml

Define eventos dinâmicos: zonas de spawn de infectados, spawns de veículos, quedas de helicóptero e outros eventos do mundo.

Estrutura

xml
<events>
    <event name="StaticHeliCrash">
        <nominal>3</nominal>
        <min>1</min>
        <max>3</max>
        <lifetime>1800</lifetime>
        <restock>0</restock>
        <saferadius>500</saferadius>
        <distanceradius>500</distanceradius>
        <cleanupradius>200</cleanupradius>
        <flags deletable="1" init_random="0" remove_damaged="1"/>
        <position>fixed</position>
        <limit>child</limit>
        <active>1</active>
        <children>
            <child lootmax="10" lootmin="5" max="3" min="1"
                   type="Wreck_Mi8_Crashed"/>
        </children>
    </event>
</events>

Parâmetros do Evento

ParâmetroDescrição
nominalNúmero alvo de eventos ativos
min / maxMínimo e máximo ativos ao mesmo tempo
lifetimeSegundos antes do evento desaparecer
saferadiusDistância mínima de jogadores ao spawnar
distanceradiusDistância mínima entre instâncias do evento
cleanupradiusRaio para verificações de limpeza
position"fixed" (de cfgeventspawns.xml) ou "player" (perto de jogadores)
active1 = habilitado, 0 = desabilitado

cfgspawnabletypes.xml

Define quais attachments e cargo spawnam com itens específicos.

xml
<spawnabletypes>
    <type name="AKM">
        <attachments chance="0.3">
            <item name="AK_WoodBttstck" chance="0.5"/>
            <item name="AK_PlasticBttstck" chance="0.3"/>
            <item name="AK_FoldingBttstck" chance="0.2"/>
        </attachments>
        <attachments chance="0.2">
            <item name="AK_WoodHndgrd" chance="0.6"/>
            <item name="AK_PlasticHndgrd" chance="0.4"/>
        </attachments>
        <cargo chance="0.15">
            <item name="Mag_AKM_30Rnd" chance="0.7"/>
            <item name="Mag_AKM_Drum75Rnd" chance="0.3"/>
        </cargo>
    </type>
</spawnabletypes>

Como Funciona

  • Cada bloco <attachments> tem uma chance (0.0 - 1.0) de ser aplicado.
  • Dentro de um bloco, itens são selecionados por seus valores individuais de chance (normalizados para 100% dentro do bloco).
  • Múltiplos blocos <attachments> permitem que diferentes slots de attachment sejam sorteados independentemente.
  • Blocos <cargo> funcionam da mesma forma para itens colocados no cargo da entidade.

Flags ECE em Script

Ao spawnar entidades por script, as flags ECE (cobertas no Capítulo 6.1) determinam como a entidade interage com a CE:

FlagComportamento da CE
ECE_NOLIFETIMEEntidade nunca vai desaparecer (não rastreada pelo lifetime da CE)
ECE_DYNAMIC_PERSISTENCYEntidade se torna persistente apenas após interação do jogador
ECE_EQUIP_ATTACHMENTSCE spawna attachments configurados de cfgspawnabletypes.xml
ECE_EQUIP_CARGOCE spawna cargo configurado de cfgspawnabletypes.xml

Exemplo --- spawnar um item que persiste para sempre:

c
int flags = ECE_PLACE_ON_SURFACE | ECE_NOLIFETIME;
Object obj = GetGame().CreateObjectEx("Barrel_Green", pos, flags);

Exemplo --- spawnar com attachments configurados pela CE:

c
int flags = ECE_PLACE_ON_SURFACE | ECE_EQUIP_ATTACHMENTS | ECE_EQUIP_CARGO;
Object obj = GetGame().CreateObjectEx("AKM", pos, flags);
// A AKM vai spawnar com attachments aleatórios conforme cfgspawnabletypes.xml

Modding da Central Economy

Adicionando Itens Personalizados

  1. Definir a classe do item no config.cpp do seu mod em CfgVehicles.
  2. Adicionar uma entrada <type> no types.xml com nominal, lifetime, flags de usage e value.
  3. Opcionalmente adicionar regras de attachment/cargo em cfgspawnabletypes.xml.
  4. Se usar novas flags de usage/value, defini-las em cfglimitsdefinition.xml.

Modificando Itens Existentes

Edite a entrada <type> no types.xml para mudar taxas de spawn, lifetimes ou restrições de localização. Mudanças entram em efeito ao reiniciar o servidor.

Desabilitando Itens

Defina nominal e min como 0:

xml
<type name="UnwantedItem">
    <nominal>0</nominal>
    <min>0</min>
    <!-- resto dos parâmetros -->
</type>

Resumo

ArquivoPropósitoParâmetros-Chave
types.xmlDefinições de spawn de itensnominal, min, lifetime, usage, value
globals.xmlVariáveis globais da CEZombieMaxCount, AnimalMaxCount, timers de cleanup
events.xmlEventos dinâmicosnominal, lifetime, position, children
cfgspawnabletypes.xmlRegras de attachment/cargo por itemattachments, cargo, chance
cfgrandompresets.xmlPools de loot reutilizáveispresets de cargo/attachments
cfgeconomycore.xmlConfiguração raiz da CEclasses, defaults, pasta da CE
cfglimitsdefinition.xmlDefinições de flags válidascategories, usageflags, valueflags
ConceitoPonto-chave
Nominal/MinCE spawna itens quando contagem cai abaixo de min, visando nominal
LifetimeSegundos antes de itens não tocados desaparecerem
Flags de usageOnde itens spawnam (Military, Town, etc.)
Flags de valueRestrição de tier do mapa (Tier1 = costa até Tier4 = interior profundo)
Flags de contagemQuais itens contam para o nominal (cargo, hoarder, map, player)
EventosSpawns dinâmicos com seu próprio ciclo de vida (quedas, veículos, infectados)
Flags ECEECE_NOLIFETIME, ECE_EQUIP para itens spawnados por script

<< Anterior: Networking & RPC | Central Economy | Início

Released under CC BY-SA 4.0 | Code examples under MIT License