Hola! hace unas semanas estoy haciendo un mod con un par de personas, e estado mirando la API de minetest pero no se como detectar un objeto tirado cerca de "X" bloque, también me gustaría saber como almacenar datos individuales en un bloque, por ejemplo si un bloque se pudiera cargar con "energía" donde se almacenaría y como?
también como se podría acceder desde otro bloque a la variable que almacena el valor.
Gracias de antemano por leerme :D
PD:Conforme surjan dudas o encuentre soluciones intentare ir actualizando el post para que finalmente quede por si alguien le surjan las mismas dudas :D
PD2: Si te interesa el proyecto y sabes algo de programacion (como minimo una base) enviame un MP y te cuento de que va el proyecto
Dudas varias (sobre la programacion y el API)
- kaeza
- Moderator
- Posts: 2162
- Joined: Thu Oct 18, 2012 05:00
- GitHub: kaeza
- IRC: kaeza diemartin blaaaaargh
- In-game: kaeza
- Location: Montevideo, Uruguay
- Contact:
Re: Dudas varias (sobre la programacion y el API)
Hola.
Para saber si un objeto está cerca de alguna posición, debes usar `minetest.get_objects_inside_radius`:
Para almacenar datos en un bloque, usa `minetest.get_meta`:
Espero sirva de ayuda. Cualquier duda, pregunta.
Para saber si un objeto está cerca de alguna posición, debes usar `minetest.get_objects_inside_radius`:
Code: Select all
local objetos = minetest.get_objects_inside_radius(posicion, radio)
for _, objeto in ipairs(objetos) do
-- Obtener referencia a una "entidad Lua" (o "Lua entity")
local entidad = objeto.get_luaentity and objeto:get_luaentity()
if entidad then
-- El objeto es una entidad programada en Lua.
if entidad.name == "__builtin:item" then
-- El objeto es un objeto soltado por un jugador
-- Hacer algo con él aquí.
-- Podemos acceder a las variables del objeto:
print(entidad.variable)
-- O hacer algo con el objeto:
objeto:remove()
elseif entidad.name == "algunmod:algunnombre" then
-- ...
else
-- No reconocemos el objeto.
end
elseif objeto:is_player() then
-- El objeto es un jugador.
-- Hacer algo con él aquí si es necesario
print(objeto:get_player_name())
end
end
Code: Select all
local meta = minetest.get_meta(posicion_del_bloque)
-- Trata de usar el nombre de tu mod como prefijo
-- para evitar choques con variables usadas por
-- otros mods.
meta:set_int("mimod:energia", 9001)
meta:set_string("mimod:mensaje", "Hola, mundo!")
-- Hay campos "especiales" que son usados por Minetest:
-- Si "formspec" está definido, se muestra un formulario
-- al hacer clic derecho:
meta:set_string("formspec", "size[4,3]button[1,1;2,1;Hola!]")
-- Si "infotext" está definido, el mensaje se muestra al
-- apuntar al objeto (de ésta manera se implementan los
-- mensajes para los cofres/cajones/hornos/etc.):
meta:set_string("infotext", "Hola, mundo!")
Your signature is not the place for a blog post. Please keep it as concise as possible. Thank you!
Check out my stuff! | Donations greatly appreciated! PayPal
Check out my stuff! | Donations greatly appreciated! PayPal
-
- Member
- Posts: 14
- Joined: Tue Aug 19, 2014 09:54
- In-game: libahunt
- Location: Barcelona
- Contact:
Re: Dudas varias (sobre la programacion y el API)
Hola! gracias por responder !
ahora estoy probando con lo que me as comentado de minetest.get_objects_inside_radius, en un rato actualizare mi comentario (este) con el resultado o en su defecto el error o el problema que encuentre. en cuanto a esta parte:
te refieres a las variables que definen el objeto? aviso que aun no e llegado a hacer los objetos que quiero detectar así que no e entrado a programarlos aun xD (solo están "diseñados" en mi libreta de apuntes)
también en cuanto a almacenar variables como "energía" que puse en el ejemplo, podrías ponerme un pequeño ejemplo de como meter la variable y como acceder a ella? (si no es mucha molestia, no querría ser pesado xD)
y de nuevo gracias por leerme :D
ahora estoy probando con lo que me as comentado de minetest.get_objects_inside_radius, en un rato actualizare mi comentario (este) con el resultado o en su defecto el error o el problema que encuentre. en cuanto a esta parte:
Code: Select all
if entidad.name == "__builtin:item" then
-- El objeto es un objeto soltado por un jugador
-- Hacer algo con él aquí.
-- Podemos acceder a las variables del objeto:
print(entidad.variable)
-- O hacer algo con el objeto:
objeto:remove()
también en cuanto a almacenar variables como "energía" que puse en el ejemplo, podrías ponerme un pequeño ejemplo de como meter la variable y como acceder a ella? (si no es mucha molestia, no querría ser pesado xD)
y de nuevo gracias por leerme :D
Who is online
Users browsing this forum: No registered users and 3 guests