Lov7 Posted February 5, 2023 Share Posted February 5, 2023 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 Lord Henry Posted February 6, 2023 Other Languages Moderators Share Posted February 6, 2023 (edited) 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 February 6, 2023 by Lord Henry Link to comment
Sx666 Posted February 18, 2023 Share Posted February 18, 2023 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: 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. 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. 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. 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
Recommended Posts