Jump to content

Teleportes


Recommended Posts

Oi, gostaria de saber apenas como posso randomizar um teleporte.

Exemplo: /arena e nesse mesmo comando ele ter a chance de spawnar em outros lugares da mesma arena.

Obrigado quem puder auxiliar.

A parte do código dos teleportes: 

 

Config = {
    Teleports = { 
        [1] = {"Arena 3", "arena3", -129.77224731445, -613.18872070312, 1710.6343994141, -81.91251373291, -609.57904052734, 1710.6343994141, "Você foi teleportado para o lobby.", 255,255,255, true, false, true}; -- Nome, comando, x, y, z, Mensagem, r,g,b, Respawn, fuzil, armas
        [2] = {"Loja 01", "loja1", 1313.0408935547,-935.4755859375,38.255577087402, "Você foi teleportado para a loja 1. ", 255,255,255, true, false, true}; -- Nome, comando, x, y, z, Mensagem, r,g,b, Respawn
        [3] = {"Ammunation 01", "ammu1", 2384.2463378906,-1971.1379394531,13.382837295532, "Você foi teleportado para a Ammunation. ", 255,255,255, true, false, true}; -- Nome, comando, x, y, z, Mensagem, r,g,b, Respawn
        [4] = {"Ammunation 02", "ammu2", 2537.7153320312,2045.2351074219,10.815614700317, "Você foi teleportado para a Ammunation. ", 255,255,255, true, false, true}; -- Nome, comando, x, y, z, Mensagem, r,g,b, Respawn
        [5] = {"Navio Ponta 1", "navio1", -2308.7834472656,1544.5867919922,18.7734375, "Você foi teleportado para o navio.", 255,255,255, true, false, true}; -- Nome, comando, x, y, z, Mensagem, r,g,b, Respawn
        [6] = {"Navio Ponta 2", "navio2", -2471.9772949219,1546.6630859375,23.6484375, "Você foi teleportado para o navio.", 255,255,255, true, false, true}; -- Nome, comando, x, y, z, Mensagem, r,g,b, Respawn

 

Link to comment
  • Other Languages Moderators

Primeiro é melhor você separar os tipos de dados em sub-tabelas e usar o comando do teleporte como índice.

Spoiler
Config = {
    Teleports = {
        ["arena3"] = {
            ["nome"] = "Arena 3",
            ["position"] = {
                [1] = {-129.77224731445, -613.18872070312, 1710.6343994141},
                [2] = {-81.91251373291, -609.57904052734, 1710.6343994141},
            },
            ["mensagem"] = "Você foi teleportado para o lobby.",
            ["cor"] = {255, 255, 255},
            ["respawn"] = true,
            ["fuzil"] = false,
            ["armas"] = true
        },
        ["loja1"] = {
            ["nome"] = "Loja 01",
            ["position"] = {
                [1] = {1313.0408935547, -935.4755859375, 38.255577087402},
            },
            ["mensagem"] = "Você foi teleportado para a loja 1.",
            ["cor"] = {255, 255, 255},
            ["respawn"] = true,
            ["fuzil"] = false,
            ["armas"] = true
        },
        ["ammu1"] = {
            ["nome"] = "Ammunation 01",
            ["position"] = {
                [1] = {2384.2463378906, -1971.1379394531, 13.382837295532},
            },
            ["mensagem"] = "Você foi teleportado para a Ammunation.",
            ["cor"] = {255, 255, 255},
            ["respawn"] = true,
            ["fuzil"] = false,
            ["armas"] = true
        },
        ["ammu2"] = {
            ["nome"] = "Ammunation 02",
            ["position"] = {
                [1] = {2537.7153320312, 2045.2351074219, 10.815614700317},
            },
            ["mensagem"] = "Você foi teleportado para a Ammunation.",
            ["cor"] = {255, 255, 255},
            ["respawn"] = true,
            ["fuzil"] = false,
            ["armas"] = true
        },
        ["navio1"] = {
            ["nome"] = "Navio Ponta 1",
            ["position"] = {
                [1] = {-2308.7834472656, 1544.5867919922, 18.7734375},
            },
            ["mensagem"] = "Você foi teleportado para o navio.",
            ["cor"] = {255, 255, 255},
            ["respawn"] = true,
            ["fuzil"] = false,
            ["armas"] = true
        },
        ["navio2"] = {
            ["nome"] = "Navio Ponta 2",
            ["position"] = {
                [1] = {-2471.9772949219, 1546.6630859375, 23.6484375},
            },
            ["mensagem"] = "Você foi teleportado para o navio.",
            ["cor"] = {255, 255, 255},
            ["respawn"] = true,
            ["fuzil"] = false,
            ["armas"] = true
        },
    }
}

function teleportar (thePlayer, cmd)
    if Config.Teleports[cmd] then
        local aleatorio = math.random(#Config.Teleports[cmd]["position"]) -- Gera um número inteiro aleatório entre 1 e tamanho da lista position.
        local x, y, z = unpack(Config.Teleports[cmd]["position"][aleatorio]) -- Obtém as posições X, Y, Z de um item aleatório da tabela position.
        local r, g, b = unpack(Config.Teleports[cmd]["cor"]) -- Obtém os valores RGB da tabela cor.
        local respawn = Config.Teleports[cmd]["respawn"]
        local fuzil = Config.Teleports[cmd]["fuzil"] -- Demais variaveis que você pode usar no script.
        local armas = Config.Teleports[cmd]["armas"]
        
        setElementPosition (thePlayer, x, y, z, true) -- Teleporta o player para a posição X, Y, Z.
        outputChatBox(Config.Teleports[cmd]["mensagem"], thePlayer, r, g, b) -- Manda a mensagem no chat dele com a cor específica.
    end
end

for cmd,infos in pairs (Config.Teleports) do -- Adiciona todos os commandHandlers da tabela de teleportes.
    addCommandHandler (cmd, teleportar)
end

 

 

Edited by Lord Henry
Link to comment
  • 2 weeks later...

Para criar um comando em que o jogador possa se teletransportar para vários lugares aleatórios com um único comando, você pode seguir os seguintes passos:

  1. Crie uma tabela que contenha a posição dos marcadores que você deseja usar para teletransportar o jogador
local teleportMarkers = {
  {x = 100, y = 200, z = 10},
  {x = 300, y = 400, z = 20},
  {x = 500, y = 600, z = 30},
}

Neste exemplo, a tabela teleportMarkers é criada com três posições de marcadores diferentes.

 

  1. Crie uma função que escolha aleatoriamente uma posição de marcador da tabela teleportMarkers.
function getRandomTeleportPosition()
  local index = math.random(1, #teleportMarkers)
  return teleportMarkers[index]
end

Neste exemplo, a função getRandomTeleportPosition é criada. Ela escolhe aleatoriamente um índice da tabela teleportMarkers usando a função math.random. A posição do marcador correspondente é retornada pela função.

 

  1. Crie um manipulador de evento para o evento "onPlayerCommand". Esse manipulador será usado para detectar quando um jogador digitou o comando para se teletransportar para um lugar aleatório.
addEventHandler("onPlayerCommand", root, function(command)
  if command == "arena" then
    local player = source
    local teleportPosition = getRandomTeleportPosition()
    setElementPosition(player, teleportPosition.x, teleportPosition.y, teleportPosition.z)
  end
end)

Neste exemplo, um manipulador de evento é adicionado ao evento "onPlayerCommand". A função anônima que será chamada quando o evento for acionado verifica se o jogador digitou o comando "arena". Em seguida, a função getRandomTeleportPosition é usada para obter uma posição de marcador aleatória. A posição do jogador é definida como a posição do marcador usando a função setElementPosition.

 

  1. Adicione o comando "arena" ao arquivo ACL.xml do seu servidor MTA para que apenas jogadores com as permissões adequadas possam executá-lo.
<ACL>
  <right name="arena" access="true" />
</ACL>

Neste exemplo, o comando "arena" é adicionado ao arquivo ACL.xml. A permissão "arena" é concedida a todos os jogadores. Você pode alterar as permissões de acordo com suas necessidades.

Com esses passos, você criou um comando que permite que os jogadores se teletransportem para uma posição de marcador aleatória digitando o comando "arena". Lembre-se de que esse recurso pode afetar o equilíbrio do jogo, então é importante ter um sistema de permissões apropriado para garantir que apenas jogadores autorizados possam usá-lo.

Link to comment
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...