Jump to content

Teleport


Recommended Posts

Bom dia pessoal, tudo bem?

Sou leigo no assunto "ainda", por isso venho pedir um script de teleport/teletransporte, daqueles para entrar numa casa. Sei que preciso mudar só as coordenadas para o personagem conseguir ser transportado de fora da casa para dentor da casa, encostando no icone do lado de fora da porta.

Procurei em resource aqui no site, mais não achei este e sei que ele é o mais simples, pelo menos é o que dizem.

Link to comment
  • Moderators
createMarker 
setElementPosition -- Ou define as coordenadas do teleport na função abaixo 
setElementInterior 

Coloque dentro do evento: onMarkerHit (server-side) (Parâmentros do evento: hitElement, matchingDimension).

Leia sobre as funções citadas no MTA Wiki. Tente fazer o script, qualquer problema que tiver, basta pedir ajuda aqui.

Link to comment

como DNL291 disse, você pode criar marker e usa o evento onMarkerhit. para checar quando o jogador entra no marker, depois use setElementPosition e setElementInterior (para fazer o jogador "entrar" na casa) e para sair você pode criar outro marker dentro da casa(interior) e usa novamente onMarkerHit para o jogador sair da casa (setElementPosition e setElementInterior).

bom é apenas uma sugestão.

boa sorte!

Link to comment
  • Moderators

Defina a posição: x, y e z das coordenadas onde será criada a marca para o teleporte para a casa. E a posição x, y e z da marca que vai teleportar o jogador para fora da casa.

local marker = createMarker(x, y, z, "cylinder", 2, 0, 0, 255) -- Teleporte para dentro da casa 
local houseMarker = createMarker(x, y, z, "cylinder", 2, 0, 0, 255) -- Teleporte para fora da casa 
  
addEventHandler("onMarkerHit", root,  
    function (hitPlayer, matchingDimension) 
        if getElementType(hitPlayer) == "player" then 
            if source == marker then 
                setElementInterior(hitPlayer, int, x, y, z) 
            elseif source == houseMarker then 
                setElementInterior(hitPlayer, 0, x, y, z) 
            end 
        end 
    end 
) 

Na função setElementInterior, coloque no argumento int o id do seu interior, e a posição do interior.

Na outra, coloque apenas as coordenadas do teleporte de fora da casa.

Salve o arquivo com o nome server.lua. E o código abaixo, salve com o nome meta.xml e coloque os 2 arquivos em uma pasta.

<meta> 
    <script type="server" src="server.lua" /> 
</meta> 

Link to comment

Muito obrigado Brother!

Vou tentar agora mesmo, estou ansioso!

Não respondi antes, pois trabalho a noite, mas hoje estou de folga, acordei agora a pouco, kkk.

Qualquer dúvida volto aqui.

► Qual é esse editor que vocês usam para fazer script? Ele fica numerado:

1.

2.

3.

4.

...

► Isso dá certo no bloco de notas?

Link to comment
  • Moderators

Na função createMarker, as coordenadas x,y,z são nos primeiros argumentos, não onde você destacou na imagem.

Esses que você destacou são: tamanhoDaMarca, red (cor), green (cor), respectivamente.

As cores são os 3 últimos argumentos. Se você quiser mudar a visibilidade (alpha) da marca, adicione mais 1 argumento.

Na função setElementInterior, no argumento int, você coloca o ID do interior, isso apenas na função da linha 8. Nessa mesma, você coloca as coordenadas do teleporte de dentro da casa.

Na função da linha 10, você coloca apenas as coordenadas do teleporte para fora da casa.

Link to comment

Humm, verdade, errei feio no x, y, z :lol:

901teleport_duvida.jpg

Segundo este site que acabo de conhecer pesquisando ID´s

http://weedarr.wikidot.com/interior

A ID da casa do CJ é 3 e as coordenadas/x, y, z são: 2496.049804, -1695.238159,1014.742187, usei essas.

Já aprendi salvar em LUA e Meta conforme vcs ensinaram. Obrigado!

Más disseram para eu colocar os dois arquivos numa pasta! Em qual? Na do mapa que estou criando ou dentro da pasta onde está a pasta do meu mapa e outras pastas (Arq. e programas/ MTA SanAndreas 1.3/server/mods/DeathMach/Resources)?

O nome "Cylinder" é de outro objeto. Eu usei o objeto Arow amarelo, devo alterar o nome no script também?

Link to comment
  • Moderators
901teleport_duvida.jpg

Não, a marca que tem a variável 'marker' definida, fica fora da casa, a outra marca que será dentro da casa.

A 1° teleporta para dentro da casa, a 2°(houseMarker), é a que ficará dentro da casa para o teleporte para fora. Como você pode ver nos comentários que eu deixei no código.

Não repita a mesma coordenada nos argumentos x,y,z da função setElementInterior, porque ele será teleportado para a marca, então ele automaticamente será teleportado de novo.

Coloque uma coordenada que ele esteja a frente da marca.

Veja o MTA Wiki para ver os ID's de todos interiores: https://wiki.multitheftauto.com/wiki/Interior_IDs

Sempre que precisar de algo como ID de, veículos, skins, blips, armas, etc, Vá no MTA Wiki: https://wiki.multitheftauto.com/wiki/Main_Page

Coloque o meta.xml e o script em uma pasta, coloque essa pasta no diretório: "MTA San Andreas 1.3\server\mods\deathmatch\resources"

O nome "Cylinder" é de outro objeto. Eu usei o objeto Arow amarelo, devo alterar o nome no script também?

Isso tanto faz, nomeie o script da forma correta acima de tudo. Se está se referindo as variáveis e coisas que estão no código não precisa, porque marker já quer dizer que é qualquer coisa do tipo, como cylinder, arrow, etc.

Link to comment

Pronto! Fiz tudo conforme explicou. Más quando entro em Host Game para testar não aparece o arrow na frente da porta.

No Host Game aparece o nome da pasta do meu mapa e o nome da pasta onde esta o teleport, ja entrei nos dois e não apareceu o arrow amarelo em frente a porta. Ou seja, não consegui usar o teleport :(

Obs:

* O portão automático com comando eu consegui e eu que configurei.

* Amanhã eu deleto tudo e tento tudo de novo!

* Mapas antigos que já apaguei as pastas la da resource do MTA, percebi que no Host Game o nome delas (antigos mapas) ainda aparecem e consigo entrar neles, más com as coisas do mapa atual que estou fazendo.

Tem como deletar todos de todos os lugares.

Link to comment

Guia Você iniciou o recurso?

RE: Sim, iniciei o recourse pelo Host Game, digitei / debugscript 3 e apareceu no chat a mensagem: ACL: Access danied for "debugscript"

Ou mostre o código que você está tentando.

RE: A imagem abaixo é o que fiz e salvei como LUA, joguei dentro da pasta junto com meta.xml

505minhas_conig..jpg

* Editei:

Estou pensando aqui acho que sei em uma coisa que errei e mesmo se tiver errado na parte que vou dizer, sei que isso não influência na não aparição do objeto "arrow" do lado de fora em frente a porta.

É, os dois objetos arrow (interno e externo) eu coloquei no mapa e peguei as coordenadas deles no mapa. Até o interno, no lado escuro de dentro da casa. :lol:

Acredito que o objeto arrow interno eu teria que ter posto dentro do objeto/grafico interno da casa do CJ e ter pego as coordenadas de lá e não da casa no mapa.

O pedaço da imagem acima que cortou:

583minhas_conig._1.jpg

Eu deixei com seu comentário.

Edited by Guest
Link to comment
  • Moderators

Da para perceber que você colocou coordenadas quase iguais em ambas as funções, certifique-se que as coordenadas das marcas e do teleporte estão corretas.

Coloque a marca que você está criando dentro da casa no mesmo interior. Use setElementInterior(houseMarker, 3)

Link to comment

:lol::lol:

hum, esta igual o começo né?

Talvez tenha ficado assim, quando eu fui inverter para arrumar, pois as coordenadas de dentro estava para fora e vice versa. Devo ter copiado e colado a mesma em ambos o lugares sem querer.

Preciso ir dormir, hoje de tarde eu retorno aqui. Vou apagar tudo que fiz(pastas) e fazer do zero, seguindo as mesmas informações deste tópico. Ai posto aqui se consegui, ok.

Muito obrigado pela atenção, :D

Editei essa ultima postagem para acrescentar a imagem e dúvidas abaixo = 27/03/2013

Seu eu fizer (ainda não fiz) como na imagem abaixo fica certo?

999Script_TELEPORT_editad.jpg

Link to comment

Nossa! Mesmo assim não deu certo! :(

Eu não salvei o objeto/cylinder dentro do mapa e nem dentro da casa, é necessário salva-los como parte do mapa?

Pois portões automáticos não são salvos no mapa, só é feito o script e acrescentado a pasta recourse e quando abre host game funciona.

Com objetos "fixos/que não se movimentam igual portões automáticos" o cylinder por exemplo, tem que salvar no mapa?

Link to comment
  • Moderators

Na imagem editada por você, está tudo correto, apenas a função setElementInterior da linha 10 que tem as coordenadas incorretas. Nesse, você coloca as coordenadas de fora da casa (quando o jogador teleportar-se para fora da casa).

Que seria na porta da casa ou por perto, apenas não coloque dentro da marca.

O que você diz com 'mapa'? não estou entendendo.

Link to comment

Entendi...

Más as coordenadas da linha 10 eu coloquei o x, y, z do interno da casa pouca coisa na frente da marca/cylinder como vc disse nessa postagem:

901teleport_duvida.jpg

Não repita a mesma coordenada nos argumentos x,y,z da função setElementInterior, porque ele será teleportado para a marca, então ele automaticamente será teleportado de novo.

Coloque uma coordenada que ele esteja a frente da marca.

Sobre Mapa?

Quando estou montando o mapa, colocando grades, arvores, coisas fixas eu salvo e fica gravado no mapa. Coisas que tem movimento como portões automáticos, scripts para acontecer alguma função eu não salvo no mapa.

Por exemplo, o objeto cylinder eu não salvo ele no mapa, só coloco no mapa para pegar as coordenadas.

Fiz assim:

253meu_teleport_duvida.jpg

186arrow_interno_cj.jpg

753arrow_externo_cj.jpg

Link to comment
  • Moderators

Isso deve funcionar. Defina o interior da marca para o mesmo da casa, como eu já disse.

Assim:

local marker = createMarker(x, y, z, "cylinder", 2, 0, 0, 255) -- Teleporte para dentro da casa 
local houseMarker = createMarker(x, y, z, "cylinder", 2, 0, 0, 255) -- Teleporte para fora da casa 
setElementInterior(houseMarker, 3) 
  
addEventHandler("onMarkerHit", root, 
    function (hitPlayer, matchingDimension) 
        if getElementType(hitPlayer) == "player" then 
            if source == marker then 
                setElementInterior(hitPlayer, int, x, y, z) 
            elseif source == houseMarker then 
                setElementInterior(hitPlayer, 0, x, y, z) 
            end 
        end 
    end 
) 

Por favor, use a tag lua com seu código dentro (basta clicar no botão lua quando for escrever uma mensagem).

Link to comment

Conforme esta imagem vc falou que está certo, menos as coordenadas da linha 10:

840ULTIMA.jpg

Na imagem editada por você, está tudo correto, apenas a função setElementInterior da linha 10 que tem as coordenadas incorretas. Nesse, você coloca as coordenadas de fora da casa (quando o jogador teleportar-se para fora da casa).

Que seria na porta da casa ou por perto, apenas não coloque dentro da marca.

Abaixo é como esta meu script segundo vc me ensinou. Más este é o mesmo da imagem na minha ultima postagens, onde só a linha 10 esta com as coordenadas erradas. Não editei ainda, vou trabalhar daqui a pouco, depois edito:

local marker = createMarker(2495.3999023438, -1691, 15.300000190735, "cylinder", 2, 0, 0, 255) -- Teleporte para dentro da casa 
local houseMarker = createMarker(2496, -1692.1999511719, 1015.299987793, "cylinder", 2, 0, 0, 255) -- Teleporte para fora da casa 
  
addEventHandler("onMarkerHit", root, 
    function (hitPlayer, matchingDimension) 
        if getElementType(hitPlayer) == "player" then 
            if source == marker then 
                setElementInterior(hitPlayer, 3, 2496.05, -1692.73, 1013.75) 
            elseif source == houseMarker then 
                setElementInterior(hitPlayer, 0, 2497, -1693, 1015) 
            end 
        end 
    end 
) 
  

Se eu fizer isso na linha 10: "coloca as coordenadas de fora da casa (quando o jogador teleportar-se para fora da casa).

Que seria na porta da casa ou por perto, apenas não coloque dentro da marca." não precisarei acrescentar mais uma linha no script para poder colocar o X, Y, Z do lado de dentro da casa um pouco a frente da marca interna?

Pois assim como para sair pra fora não pode ser dentro da marca, para dentro da casa também não poderia ser dentro da marca onde teleporta pra fora, entendeu?

Ou assim que ele é teleportado para dentro da casa, ele já aparece a frente da marca sem precisar por um X, Y, Z de um lugar interno que não seja dentro da marca interna?

Edited by Guest
Link to comment
  • Moderators

Eu fiz o teleport para você, aqui está:

  
local marker = createMarker(2495.3631, -1690.7507, 13.8656, "cylinder", 1.1, 0, 0, 255) -- Teleporte para dentro da casa 
local houseMarker = createMarker(2495.9631, -1692.3035, 1013.7421, "cylinder", 1.1, 0, 0, 255) -- Teleporte para fora da casa 
setElementInterior(houseMarker, 3) 
  
addEventHandler("onMarkerHit", root, 
    function (hitPlayer, matchingDimension) 
        if getElementType(hitPlayer) == "player" then 
            if source == marker then 
                setElementInterior(hitPlayer, 3, 2496.1767, -1693.7388, 1014.7421) 
            elseif source == houseMarker then 
                setElementInterior(hitPlayer, 0, 2495.2780, -1688.3967, 13.7803) 
            end 
        end 
    end 
) 
  

Acho que você entendeu tudo o que eu disse, mas teve dificuldade para faze-lo.

Link to comment
  • Moderators

Eu coloquei as coordenadas da casa do CJ (coordenadas da marca e quando sai da casa) para testar. Deixe as suas coordenadas nos locais que eu citei.

Portanto, segundo seu código fica assim:

local marker = createMarker(2495.3999023438, -1691, 15.300000190735, "cylinder", 1.1, 0, 0, 255) -- Teleporte para dentro da casa 
local houseMarker = createMarker(2495.9631, -1692.3035, 1013.7421, "cylinder", 1.1, 0, 0, 255) -- Teleporte para fora da casa 
setElementInterior(houseMarker, 3) 
  
addEventHandler("onMarkerHit", root, 
    function (hitPlayer, matchingDimension) 
        if getElementType(hitPlayer) == "player" then 
            if source == marker then 
                setElementInterior(hitPlayer, 3, 2496.1767, -1693.7388, 1014.7421) 
            elseif source == houseMarker then 
                setElementInterior(hitPlayer, 0, 2497, -1693, 1015) 
            end 
        end 
    end 
) 

Veja se este código funciona. Se algo der errado certamente foi a coordenada da marca para o teleporte ou a coordenada da saída da casa.

A propósito, tem um resource na community chamado house_system. Com ele você pode criar cassas por meio de um painel. Ele utiliza sistema de SQLite para salvar as casas.

Link to comment

Acabo de tentar também, mesmo assim quando entro em HostGame a marca para teleportar para dentro da casa não aparece.

Não sei mais o que fazer :cry:

Antes de eu tentar esse que vc postou agora, eu tinha apagado tudo de novo, desinstalei e instalei o mta de novo, criei um novo mapa e mesmo assim nada.

Vou dá uma olhada nesse house_system ai, mais pelo que ja estou lendo dele aqui, ele é aqueles systemas de comprar casa. Eu queria mesmo, primeiro, era criar e fazer funcionar o teleport comum.

Tipo o do jogo off, só encostar na marca amarela e automaticamente ser transportado para dentro da casa.

O site não permite e gente se add no raidcall para conversar pelo chat mais rapido né? Por ele dá para printar as imagens e ir enviado para mostrar como estou fazendo.

Tenho certeza que fiz perfeito nessas ultimas tentativas.

Outros:

1.1, 0, 0, 255) -- Teleporte para dentro da casa 
1.1, 0, 0, 255) -- Teleporte para fora da casa 

Esse 1.1 não seria a versão do meu MTA 1.3? Tbm já tentei e não deu em nada :lol:

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

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