Saltar al contenido
  • Global

    Global

    Chatroom Rules

    • NO SE DA SOPORTE EN CHATBOX
    • NO SPAM
    • NO FLOOD

[TUTORIAL] PUERTAS AUTOMATICAS.


Publicaciones recomendadas

  • Ex-Staff
Publicado

Buenas comunidad :D

Hoy les vengo con un tutorial de como crear puertas automáticas(que se abran al acercarse)

 

Ya muchos me han preguntado como hacerlo, es por ello que vengo con este tutorial.

Bueno, comencemos:

 

Bueno, para esto hay 2 formas de hacerlo, con un marker o utilizando las coordenadas del objeto. Esta vez lo haremos con un marker. (Es casi lo mismo)

 

Primero para crear un marcador(marker) debemos utilizar la siguiente sintaxis:

variable = createMarker ( x,y,z "type", size, r, g, b, alpha )

 

 

Me detendré un momento para explicar que significa cada cosa.

variable: Es el nombre que le damos a nuestro objeto, marcador, panel etc. Y que nos servirá más adelante para poder hacer funcionar nuestro script.

x,y,z: Bueno utilizamos estas 3 letras para nombrar nuestras coordenadas; es como decir: "Largo, ancho y alto".

type: Es el tipo de marcador que queremos hacer; existen 4: cylinder, corona, arrow y chekpoint.

size: Es el tamaño que de nuestro marcador

r,g,b: Los colores de nuestro marcador, se designan mediante red, green y blue. O en español "Rojo, verde y azul".

Cada uno de estos colores van con un valor desde 0 hasta 255. La combinación de estos 3 números nos dara un color.

alpha: Es la visibilidad de nuestro objeto, marcador, vehiculo, etc.

 

 

Ya teniendo eso claro podemos seguir con nuestro script.

 

Bueno, creamos nuestro marcador con las coordenadas que queremos.

Ejemplo:

p1mkr = createMarker ( 3479.1000976563,-2013.8000488281,38.299999237061, "cylinder", 1.7, 0, 0, 0,0 )

Ahora solo necesitamos la puerta que queremos mover. para ello utilizamos lo siguiente:

Sintaxis

variable = createObject ( x,y,z,rx,ry,rz)

 

Bueno ya vimos gran parte de los elementos. Pero aparecen 3 nuevos. (rx,ry,rz)

Estos 3 son el valor de la rotación de nuestro objeto, son totalmente opcionales.

 

 

Crear nuestra puerta:

puerta1	 = createObject ( 2951, 3480.3999023438,-2013.8000488281,38.040000915527, 0, 90, 90)

Ya teniendo nuestra puerta y nuestro marcador podemos proseguir a utilizar código para que esta se mueva.

 

Para ello utilizaremos 2 funciones, una que haga que se mueva al acercarse y otra que se devuelva a su posición inicial. Estas funciones o eventos mejor dicho son: "onColShapeHit" y "onColShapeLeave".

Pero antes de esto, primero necesitamos sacar las coordenadas de nuestra puerta. Es decir. Llevar las coordenadas a una variable. ¿Para qué? Pues simple, con ellas obtendremos también la posición del jugador que se acerque a ella, y así poder accionar el evento.

Entonces utilizaremos lo siguiente:

x,y,z = getElementPosition(p1mkr) -- Obtenemos coordenadas de nuestro marcador
Zona = createColCircle(x,y,4,3) -- Creamos un radio alrededor de nuestro marcador

Ahora solo nos falta poder accionar los eventos.

-- MOVER NUESTRA PUERTA
addEventHandler("onColShapeHit",Zona,function()
moveObject(puerta1,3000,3480.5,-2011.5999755859,38) -- Establecemos nuevas coordenadas
end)
-- HACER QUE VUELVA A LA POSICION INICIAL
addEventHandler("onColShapeLeave",Zona,function()
moveObject(puerta1,3000,2951, 3480.3999023438,-2013.8000488281,38.040000915527) -- Establecemos coordenandas iniciales
end)

Bueno el código completo quedaría más o menos así:

addEventHandler("onResourceStart",getRootElement(),function()
p1mkr = createMarker ( 3479.1000976563,-2013.8000488281,38.299999237061, "cylinder", 1.7, 0, 0, 0,0 )
puerta1	 = createObject ( 2951, 3480.3999023438,-2013.8000488281,38.040000915527, 0, 90, 90)
end)

x,y,z = getElementPosition(p1mkr)
Zona = createColCircle(x,y,4,3)

addEventHandler("onColShapeHit",Zona,function ()
moveObject(puerta1,3000,3480.5,-2011.5999755859,38)
end)
addEventHandler("onColShapeLeave",Zona,function()
moveObject(puerta1,3000,3480.3999023438,-2013.8000488281,38.040000915527)
end)

Cabe destacar que el archivo debe ser colocado en nuestro archivo meta.xml como tipo "server".

Ejemplo:

 

 

<meta>

<info author="TuNombre" name="Puerta automatica" version="1.0"description="Pueta autmatica" type="script"/>

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

</meta>
 

 

 

  • Usuario
Publicado

Acá otra ayudita ...

 

Para saber las coordenadas, subí este script : https://mega.co.nz/#!xJBlQI4J!R-gr7mUoqmnSj9seKz1Ap0nDD_gy6pfx8kxKdD6t50U

 

Lo instalan en : C:\Archivos de programa\MTA San Andreas 1.3\server\mods\deathmatch\resources

 

Cuando este en el servidor escriben el comando "/pos" (sin comillas obvio) y copian todo lo que esta en letras naranjas (es mas fácil con f8, seleccionan y copian con Ctrl+C /Ctrl+V)

 

  • Ex-Staff
Publicado
addEventHandler("onResourceStart",getRootElement(),function()
puerta1	 = createObject ( 2951, 3480.3999023438,-2013.8000488281,38.040000915527, 0, 90, 90)
end)
addCommandHandler("abrir",function()
moveObject(puerta1,3000,3480.5,-2011.5999755859,38) -- NUEVA POSICION
end)
addCommandHandler("cerrar",function()
moveObject(puerta1,3000,3480.3999023438,-2013.8000488281,38.040000915527) -- POSICION INICAL
end)

Para ello no es necesario crear el marcador. solo crear la puerta y establecer las nuevas coordanadas ;)

  • Ex-Staff
Publicado

Sabes hacer puertas que se puedan abrir mediante comandos? es para un miniserver de prueba que tengo

Eso ya lo contesté más arriba.

addEventHandler("onResourceStart",getRootElement(),function()
puerta1	 = createObject ( 2951, 3480.3999023438,-2013.8000488281,38.040000915527, 0, 90, 90)
end)
addCommandHandler("abrir",function()
moveObject(puerta1,3000,3480.5,-2011.5999755859,38) -- NUEVA POSICION
end)
addCommandHandler("cerrar",function()
moveObject(puerta1,3000,3480.3999023438,-2013.8000488281,38.040000915527) -- POSICION INICAL
end)

algien e ayuda a aser tiendas porfavor no c nada

:blush: :blush: :blush: :blush: :blush:

Eso ya es un poco más complicado, puesto que para ello debemos trabajar con GUI o paneles, como gusten decirle. Tal vez más adelante enseñe algo básico sobre eso. Si estás desesperado háblame por interno.

  • 5 months later...
  • Usuario
Publicado

Saxi ya hice servir el script para mis puertas :D

objeto1 = createObject ( 2929, 211.8, 1875, 14, 0, 0, 0 )
objeto2 = createObject ( 2929, 215.9, 1875, 14, 0, 0, 0)
col = createColCircle( 214, 1875, 6, 6 )

addEventHandler( "onColShapeHit", col, function ()
moveObject ( objeto1, 2000, 208, 1875, 14 )
moveObject ( objeto2, 2000, 219.8, 1875, 14 )
end)

addEventHandler( "onColShapeLeave", col, function()
moveObject ( objeto1, 2000, 211.8, 1875, 14 )
moveObject ( objeto2, 2000, 215.9, 1875, 14 )
end)

gracias, me sirvio tu aporte

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invitado
Responder a este tema...

×   Pegar como texto enriquecido.   Pegar como texto sin formato

  Only 75 emoji are allowed.

×   Tu enlace se ha incrustado automáticamente..   Mostrar como un enlace en su lugar

×   Se ha restaurado el contenido anterior.   Limpiar editor

×   No se pueden pegar imágenes directamente. Carga o inserta imágenes desde la URL.

  • Explorando recientemente   0 miembros

    • No hay usuarios registrados viendo esta página.
×
×
  • Crear nuevo...