Teleporte - zerodawnbr/zerodawntoolbox GitHub Wiki

Banner Zero Dawn

Banner do Mod

badge1 badge2 badge3 badge4 R$ 100,00

TELEPORTE

O teleporte é o processo de mover instantaneamente um jogador, objeto ou entidade de uma posição a outra dentro do mapa, sem percorrer fisicamente o espaço entre os pontos.

Em jogos como DayZ, ele é usado para transporte rápido, administração de servidores, eventos, ou sistemas de acesso restrito a locais específicos.

Menu

1. Sistema de Teleporte

O teleporte é um sistema modular projetado para definir e gerenciar múltiplos grupos de teleporte independentes no servidor.

Cada grupo possui destinos, objetos ativadores e permissões personalizados, permitindo controle granular sobre quem pode se teletransportar e para onde.

Para utilizar o teleporte, o jogador precisará de um cartão de acesso. Uma vez usado, o cartão é destruído e não poderá mais ser utilizado. Então o jogador precisar conseguir outro para continuar viajando pelo mapa usando teleporte.

Cartão para Teleportar

Principais Componentes Lógicos:

  1. Grupos (Maps): Conjuntos de destinos, objetos ativadores e permissões definidos no Config.json.
  2. Permissão (m_steamIDs): Filtra quais jogadores podem interagir com os objetos de um grupo.
  3. Ação Condicional: A ação "TELEPORTAR" só aparece se o jogador tiver permissão para o grupo exato ao qual o objeto está vinculado.
  4. Apenas uma viagem por cartão: Só é possível viajar pelo mapa utilizando cartão de viagem, porém, só funciona uma vez por viagem.

2. Arquivo de Configuração (Config.json)

O arquivo de configuração principal gerencia as configurações globais e a matriz de grupos de teleporte.

Configurações Globais

Chave Tipo Descrição Exemplo
m_isEnable int Ativa ou desativa o mod. 1 para ativo. 1
m_reloadCommands array<string> Comandos de chat para recarregar as configurações em tempo real (requer admin). ["\\telereload", "!telereload"]
m_messageCountdown string Mensagem exibida ao jogador quando de Contagem regressiva. "Aguarde:"
m_messageMaxPlayer string Mensagem exibida quando o mapa de destino atingiu o limite de jogadores. "Máximo de jogadores no mapa"
m_messageNoCard string Mensagem avisando que o jogador precisa do cartão para acionar o teleporte "Voce precisa de um cartão ZDBRCard em mãos para usar o teleporte."

Matriz Maps (Grupos de Teleporte)

Cada objeto na matriz Maps representa um grupo de teleporte completo e isolado.

Chave Tipo Descrição Exemplo
m_mapName string Nome do grupo, exibido no menu de teleporte. "Grupo 1"
m_maxPlayer int Limite de jogadores para este grupo. 10
m_useCard int Define se precisa ou não do cartão de teleporte. Se 1 = obrigatório o uso, 0 = Passe livre, desde que o atributo m_steamIDs esteja vazio ou com o Steam ID do jogador 1
m_countdown int Contagem regressiva para uso do teleporte em minutos. 30
m_active int Ativa/desativa este grupo. 1 para ativo. 1
m_originalIndex int Sequencial de grupos criados. Quando o arquivo json é criado, inicia com -1, mas deve ser alterado e inicializado com 0. Se tiver 5 grupos, inicia em 0,1,2,3,4. 0

💡 Atenção

O atributo m_originalIndex é importante na criação dos grupos de teleporte, sempre comece com 0. Não mude a ordem e não pule a sequencia.

O sequencial correto é sempre de 0 (zero) até $N-1$ (onde $N$ é o número total de mapas).

Para 10 mapas, os valores devem ser: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.


3. Componentes de um Grupo

A. m_locations (Destinos)

Define os pontos de spawn que o jogador pode selecionar no menu.

Chave Descrição
m_name Nome que aparece na lista de seleção.
m_description Descrição exibida quando o destino é selecionado no menu.
m_position Coordenadas [X, Y, Z] exatas do destino do teleporte.

B. m_Objects (Objetos Ativadores)

Define os objetos estáticos que o jogador deve interagir para abrir o menu.

Chave Descrição
m_classType Classname do objeto a ser spawnado no mundo (ex: bldr_TrailMap_Enoch).
m_position Coordenadas [X, Y, Z] de spawn do objeto ativador.
m_orientation Vetor de orientação [Pitch, Yaw, Roll] do objeto.

Lógica de Vinculação: O servidor associa o índice do grupo na matriz Maps (ex: 0 para "Grupo 1", 1 para "Grupo2") à variável ZeroDawnBRTeleporterID do objeto no mundo (BuildingBase.c e PlayerBase.c).

C. Controle de Acesso

Controla quem pode ver e usar os objetos ativadores deste grupo.

Condição Efeito
"m_steamIDs": [] Acesso Livre: O grupo está aberto a todos os jogadores.
"m_steamIDs": ["ID1", "ID2"] Acesso Restrito: O grupo está acessível somente aos jogadores cujos SteamID64 estão listados.

5. Manutenção e Comandos

  • Recarregar Configurações: Utilize os comandos de reload definidos no Config.json (ex: \telereload). Isso é essencial para aplicar alterações em m_steamIDs ou nos limites de jogadores/contagem regressiva sem reiniciar o servidor.

  • Limpeza de Permissão: Se a lista m_steamIDs de um grupo for alterada para remover o jogador, o sistema cliente/servidor é projetado para limpar a lista de mapas permitidos e remover a ação "TELEPORTAR" para esse grupo, resolvendo problemas de dessincronização após reloads.

Exemplo do arquivo de configuração

{
    "m_version": "1.2",
    "m_info": "Teleportation system used within the map.",
    "m_isEnable": 1,
    "m_reloadCommands": [
        "\\telereload",
        "!telereload"
    ],
    "Maps": [
        {
            "m_mapName": "Grupo 1",
            "m_maxPlayer": 10,
            "m_countdown": 30,
            "m_active": 1,
            "m_locations": [
                {
                    "m_name": "BALOTA",
                    "m_description": "Velha base aérea costeira, ponto de partida para muitos... e túmulo de outros tantos. Aviões caídos, destroços enferrujados e o cheiro salgado do mar criam uma atmosfera pesada. Balota é o limiar entre a esperança e o desespero.",
                    "m_position": [
                        4326.68994140625,
                        3.059999942779541,
                        2153.75
                    ]
                },
                {
                    "m_name": "NOVODIMITROVSK",
                    "m_description": "A cidade dos gigantes. Prédios imensos, ruas desertas e ecos de uma civilização perdida. Novodimitrovsk é o paraíso para quem busca loot... e o inferno para quem não sabe o que está fazendo. Um labirinto urbano onde a morte ronda a cada esquina.",
                    "m_position": [
                        11622.400390625,
                        58.119998931884769,
                        14671.900390625
                    ]
                }
            ],
            "m_Objects": [
                {
                    "m_classType": "bldr_TrailMap_Enoch",
                    "m_position": [
                        11619.91015625,
                        59.150001525878909,
                        14669.8701171875
                    ],
                    "m_orientation": [
                        140.3800048828125,
                        0.0,
                        0.0
                    ]
                },
                {
                    "m_classType": "bldr_TrailMap_Enoch",
                    "m_position": [
                        4321.259765625,
                        4.25,
                        2151.5
                    ],
                    "m_orientation": [
                        118.80000305175781,
                        0.0,
                        0.0
                    ]
                }
            ],
            "m_steamIDs": ["76561198868988101"]
        },
        {
            "m_mapName": "Grupo2",
            "m_maxPlayer": 10,
            "m_countdown": 30,
            "m_active": 1,
            "m_locations": [
                {
                    "m_name": "AIRFIELD",
                    "m_description": "O lendário Airfield, símbolo da guerra e da decadência. O som do vento ecoa pelos hangares vazios e cada sombra parece esconder uma emboscada. Recursos militares valiosos, mas cada passo aqui pode ser o último — só os ousados sobrevivem neste campo amaldiçoado.",
                    "m_position": [
                        4943.81982421875,
                        333.8699951171875,
                        10409.849609375
                    ]
                },
                {
                    "m_name": "STOROZH (ILHA DA PRISÃO)",
                    "m_description": "Antiga fortaleza transformada em prisão, agora isolada do continente. O som das ondas bate nas muralhas frias enquanto histórias de tortura e loucura ecoam nos corredores abandonados. Quem pisa aqui sente o peso do passado... e o olhar dos mortos.",
                    "m_position": [
                        2803.449951171875,
                        29.8799991607666,
                        1252.22998046875
                    ]
                }
            ],
            "m_Objects": [
                {
                    "m_classType": "bldr_TrailMap_Enoch",
                    "m_position": [
                        4942.18017578125,
                        335.0,
                        10408.740234375
                    ],
                    "m_orientation": [
                        118.80000305175781,
                        0.0,
                        0.0
                    ]
                },
                {
                    "m_classType": "bldr_TrailMap_Enoch",
                    "m_position": [
                        2794.85009765625,
                        30.780000686645509,
                        1272.3199462890626
                    ],
                    "m_orientation": [
                        -46.790000915527347,
                        0.0,
                        0.0
                    ]
                }
            ],
            "m_steamIDs": []
        }
    ],
    "m_messageCountdown": "Aguarde a próxima viagem em",
    "m_messageMaxPlayer": "Máximo de jogadores no mapa",
    "m_messageNoCard": "Voce precisa de um cartão ZDBRCard em mãos para usar o teleporte."
}
⚠️ **GitHub.com Fallback** ⚠️