Anuncios Google

Todas las funciones desconocidas de LUADev

Todas las funciones desconocidas de Lua Dev

por Death Bucle

 

Hola a todos ^^

Vereís. Me he dado cuenta de que ha causa de que el manual de LuaDev está desactualizado, hay funciones en LuaDev recientemente implementadas que se desconocen. Por ello, haré un listado de las funciones de LuaDev que ya conozco y que no aparecen en el manual. A ver si me podeís indicar cuales faltan y así por lo menos tener una referencia para las funciones de LuaDev que no aparecen en el manual pero que aún así también podremos utilizar con el Eboot de LUADev más moderno. Te dejo también el manual de LUADev más reciente. Tienes al final del post todos los archivos para descarga directa desde el servidor privado de Scenebeta ;)

Por si acaso lo prefieres te dejo aquí las descargas desde mi cuenta de Ubuntu One (también son de descarga directa):

Eboot más moderno de LUADev

Manual más moderno de LUADev


 

Funciones desconocidas:

 

Módulo 3D:

model.load( "ruta" ) --carga un archivo .obj con su respectivo mtl (texturas y colores)
model.position( x, y, z ) --coordenadas x, y, z
model.rotation( x, y, z ) --ángulo de rotación x, y, z en radianes (math.rad para convertir de grados a radianes)
model.blit() --blitea el modelo en pantalla (no necesita ningún parametro)

Notas:

Transparencia: Para usar modelos 3D transparentes hay que crear primero el modelo 3D con partes transparentes. Luego exportarlo desde Sketchup y añadir este código: Modelo:alpha().

Cargar un modelo: Al cargar un modelo este debe estar dentro de una carpeta, de lo contrario crashea.

Las funciones position, rotation y blit necesitan que especifiquemos el modelo sobre el que queremos trabajar. Su uso es parecido al de las funciones para imágenes, a saber:

--Cargar modelo:
modelo = model.load( "carpeta/modelo.obj" )
 
--Para usarlo:
modelo:position( x, y, z )
modelo:rotation( x, y, z )
modelo:blit()

El origen está en el centro de la pantalla de la PSP. Los sentidos positivos de cada eje son: X hacia la derecha, Y hacia arriba y Z hacia atrás (hacia fuera de la pantalla de la PSP).

Las rotaciones son respecto al eje de coordenadas original del objeto (cuando lo creamos MUCHO cuidado con esto).

Módulo Files:

files.encrypt( archivo, contraseña ) --encripta un archivo
files.decrypt( archivo, contraseña ) --desencripta un archivo

Notas:

Contraseña: Si no se especifica la contraseña, el archivo se encriptará con la contraseña interna de LUADev. Un archivo encriptado con la contraseña interna de LUADev no se puede desencriptar. Un archivo encriptado con una contraseña personalizada no se puede usar directamente en LUADev (se debe desencriptar antes de usarlo).

Módulo World:

world.lightenabled( N, ENABLED )  -- enciende apaga luz. N = 1-4. ENABLED = true / false. (4 luces)
world.lightambient( N, COLOR )  -- color de la componente "ambiental" de la luz numero N.
world.lightdiffuse( N, COLOR )  -- color de la componente "difusa" de la luz numero N.
world.lightspecular( N, COLOR )  -- color de la componente "specular" de la luz numero N.
world.lightype( N, TIPO )  -- Cambiar tipo de luz numero N. Tipos: 1, direccional. 2, punto de luz. 3, foco.
world.lightcomponent( N, COMPONENTES ) -- Cambiar componentes de luz. 1, amb + dif. 2, dif + spec. 3, desconocida.
world.lightspotlight( N, EXPONENTE, CORTE)  -- Solo focos. Cambia potencia y angulo de corte del foco.
world.lightdirection( 4, X, Y, Z )  --Direccion de la luz N. (Sólo direccional o foco). (Vector UNITARIO)
world.lightposition( N, X, Y, Z )   --Posicion de la luz N.
world.ambient( COLOR ) -- Cambia el color ambiental.
world.specular( COLOR ) -- Cambia el color specular.
world.viewat( TAB1, TAB2, TAB3 ) -- Cambia la posicion de la cámara.
world.perspective( fovy, ratio, near, far ) -- 3D Modo perspectiva (por defecto).
world.ortho( left, right, bottom, top ) -- 3D modo ortogonal.
world.fog( cerca, lejos, color ) -- Niebla.
world.update() -- actualiza cambios en las luces / otros cambios en el modul

Notas:

Vector UNITARIO quiere decir que: raiz( X^2+Y^2+Z^2 ) == 1.
TAB1 = { x, y, z } (posicion de la camara)
TAB2 = { x, y, z } (punto al que miramos)
TAB3 = { x, y, z } (donde está el techo, (rotacion de la camara)). ( Normalmente { 0, 1, 0 } ) 

Cuando salga cerca / lejos quiere decir unidades. Por ejemplo en la
niebla, cerca y lejos es donde se empieza a ver niebla, y donde no se vé
un pimiento. (y el color de la niebla claro ). Con lejos = 0, niebla
off.

Para todos los comandos, SIN argumentos (excepto los que tengan
numero de luz, que en estos, sólo se pasará el argumento N ), devolverán
el valor actual. O sease: world.fog(); devolverá 3 valores.
world.lighttype(1) devolverá el tipo de luz de la luz numero 1.
world.ambient() devolverá el color de ambiente actual.

Para jugar con el 3D hay que tener las matemáticas algo claritas...
por ejemplo, normalizar un vector... (X,Y,Z). (hacerlo unitario)

( 34.21, 224.23, 12.45 ) seria... elevamos al cuadrado... (
1170.3241, 50279.0929, 155.0025 ) ... sumando ... 51604,4195 ... raiz
cuadrada... 227,16606150567474237336239880841, dividiendo cada
componente por separado por este valor... daria:

(  0.15, 0.98, 0.05 ) <- ahora ya es un vector normalizado, apunta hacia el mismo sitio, pero tiene módulo = 1.

Módulo Math:

math.vector.polar( x, y )
math.poly.testxy()
math.poly.testlist()
math.round( número_decimal ) -- Devuelve una aproximación de un número decimal, con lo que math.round(1.2) devolvería 1 y math.round(2.8) devolvería 3.
tonumber( string ) --convierte un dato del tipo string al tipo number

Módulo Zip:

zip.extract( directorio_del_zip, directorio_a_extraer, int_recursivo )

Módulo Wlan:

wlan.connected() --devuelve true o false según si estamos conectados a una red o no
wlan.getconfigs() --devuelve una tabla con las conexiones configuradas. la tabla contiene los campos name y ssid para cada red
wlan.init() --devuelve 1 si se realizó correctamente la conexión y otro valor si falló
--[[
* Se puede llamar sin argumentos, en tal caso aparece el diálogo de selección de redes del XMB, bloqueando la ejecución del programa hasta que la conexión se realice (o surja un error xD).
* Se puede llamar con un número como argumento, en tal caso se conectaría a la red especificada (1 para la 1ra conexión, 2 para la 2da y así)  sin bloquear el ciclo del programa (digamos que es el modo avanzado de conexión).
* Por último,  se puede llamar con dos argumentos (ambos números). El 1er argumento indica la red a la que se va conectar y el 2do indica una espera máxima en segundos antes de que deje de intentar conectarse (en el XMB cuando se acaba el tiempo dice "Tiempo de espera agotado", sería algo parecido). Este modo muestra el diálogo de conexión del XMB, pero se conecta automáticamente a la red especificada (bloquea la ejecución del script)
]]--
wlan.ip() --devuelve la IP que nos asignaron
wlan.mac() --devuelve nuestra direción MAC física de la PSP
wlan.scan() --devuelve una tabla con las conexiones activas.
--[[
ssid: ssid la conexión
dtim: ??
bssid: bssid de la conexión
rate: Información de la conexión
bsstype: Tipo de conexión
rssi: intensidad de la conexión
info: información de la conexión
channel: canal por el que emite
atim: ??
localtime: ??
timestamp: ??
beacon: ??
]]--
wlan.status() --según el estado de la red devuelbe un número
--[[
0 desconectado
1 escaneando
2 conectando
3 obteniendo IP
4 conectado
5 autorizando
6 intercambiando clave
]]--
wlan.statustext() --lo mismo que wlan.status() pero en vez de devolber números devuelbe los strings de arriba
wlan.strength() --de 0 a 100 el nivel de la señal

 

Módulo String

tostring( cualquier_parametro ) --convierte un dato de cualquier tipo al tipo string

Módulo Socket:

socket	socket.connect(servidor, puerto par, puerto local) -- Crea un nuevo objeto Socket con protocolo TCP/IP. Si no se especifica el puerto local, abre un puerto aleatoriamente.
socket	socket.udp(servidor, puerto par, puerto local) -- Crea un nuevo objeto Socket con protocolo UDP. Si no se especifica el puerto local, abre un puerto aleatoriamente.
nil	socket.free(socket) -- Cierra y elimina el objeto Socket.
boolean	socket.isconnected(socket) -- Comprueba que el socket esta conectado.
number	socket.localport(socket) -- Devuelve el puerto local.
number	socket.peerport(socket) -- Devuelve el puerto par.
number	socket.packetslost(socket) -- Devuelve el número de paquetes perdidos.
string	socket.recv(socket, bytes) -- Lee los datos recibidos desde el socket. El numero de bytes es opcional
number	socket.send(socket, string) -- Envía un string mediante la conexión socket. Devuelve el numero de bytes enviados

 

Módulo OS:

os.sleep( segundos )
os.luadevsplash() --muestra el splash de LUADev
os.luasplash() --muestra el splash de LUA

Más funciones:

image.chipload() --sería un load de la imagen interna del logo de chipmunks
image.gearload() --idem de arriba, rueda que usa la sphash de LUADev
image.logoload() idem arriba logo de LUADev
image.luaload() --logo de LUA
logoload:zblit( x, y, z, angX, angY, angZ ) --blit en 3D (experimental, falla bastante)

 

Recopilación de todas las funciones del Eboot de GDP: 

 

chipmunk
	body
		mass
		new
		position
	cursor
		grab
		move
		new
		release
	init
	moment
		box
		circle
		polygon
		segment
	shape
		elasticity
		friction
		getbody
		newcircle
		newpoly
		newsegment
	space
		addbody
		addshape
		addstaticshape
		damping
		free
		gravity
		idlespeedthreshold
		iterations
		new
		pointqueryfirst
		pointqueryfirst_body
		resizeactivehash
		resizestatichash
		sleeptimethreshold
		staticbody
		step
		wiredraw
debugmode
debugprint
debugset
dump
error
fx
	add
	alpha
	color
	default
	none
	rgba
	sub
gcinfo
getfenv
getfullmodulefunction
getmetatable
iif
image
	chipload
	fastblit
	fxadd
	fxsub
	fxtint
	gearload
	logoload
	luaload
	zblit
include
ipairs
lightstation
load
loadfile
loadstring
math
	bbox
	clamp
	inrect
	int
	poly
		rotate
		testlist
		testxy
	round
	vector
		cartesian
		magnitude
		polar
model
	alpha
	buffer
	lshf
	mat
	stat
module
newproxy
next
debug
	debug
	getfenv
	gethook
	getinfo
	getlocal
	getmetatable
	getregistry
	getupvalue
	setfenv
	sethook
	setlocal
	setmetatable
	setupvalue
	traceback
particles
	blit
	count
	enabled
	free
	init
	intensity
	limit
	new
	rand
	start
	stop
socket
	connect
	free
	isconnected
	localport
	packetslost
	peerport
	recv
	send
	udp
table
	foreach
	foreachi
	getn
	setn
	sort
umd
	present
video
	free
	info
	load
wlan
	connected
	getconfigs
	init
	ip
	mac
	scan
	status
	statustext
	strength
	term
world
	ambient
	envmapcolor
	envmapfx
	fog
	lightambient
	lightattenuation
	lightcomponent
	lightdiffuse
	lightdirection
	lightenabled
	lightposition
	lights
	lightspecular
	lightspotlight
	lighttype
	lookat
	ortho
	perspective
	shademodel
	specular
	update



 

Todas las actualizaciones del post:

  1. Actualizados módulos World y Math (Gracias a xerpi) [lunes, 04 de julio de 2011]
  2. Actualizado módulo Math (Gracias a barney77) [lunes, 04 de julio de 2011]
  3. Corregido módulo Math (Gracias a cam-maker) [lunes, 04 de julio de 2011]
  4. Actualizado módulo String (Gracias a barney77) [lunes, 04 de julio de 2011]
  5. Actualizado módulo Files (Gracias a Rober Galarga) [lunes, 04 de julio de 2011]
  6. Actualizado módulo Zip, Wlan y Socket (Gracias a xerpi) [lunes, 04 de julio de 2011]
  7. Corregidos módulos Math, String, Wlan y Socket (Gracias a xerpi) [martes, 05 de julio de 2011]
  8. Corregido modulo 3D (Gracias a Rober Galarga) [martes, 05 de julio de 2011]
  9. Añadido módulo OS (Gracias a NauTiluS1) [sábado, 09 de julio de 2011]
  10. Aádidas todas las funciones LuaDEV del Eboot de GDP (Gracias a xerpi) [domingo, 10 de julio 2011]
  11. Actualizadas todas la funciones LUADev del Eboot de GDP (Gracias a xerpi) [miércoles, 13 de julio de 2011]
  12. Actualizado el módulo World (Gracias a DeViaNte) [viernes, 19 de agosto de 2011]
  13. Actualizado el módulo 3D (Gracias a Mills) [sábado, 21 de enero de 2012]
  14. Añadido el apartado Más funciones (Gracias a DeViaNte) [miércoles, 25 de enero de 2012]
  15. Actualizado el módulo Wlan (Gracias a Rober Galarga) [miércoles, 21 de marzo de 2012]
  16. Actualizado el módulo Wlan (Gracias a OoNEKERAFAoO) [martes, 1 de mayo de 2012]
  17. Actualizado el módulo OS (Gracias a RedHunter) [domingo, 17 de junio de 2012]
  18. Actualizado el post entero mejorando el orden y la organización (Gracias a TheTooxicoo) [jueves, 21 de junio de 2012]
  19. Actualizado el post en la parte de Todas las funciones (Gracias a TheTooxicoo) [jueves, 19 de julio de 2012]
  20. Actualizado el módulo Wlan (Gracias a RedHunter) [lunes, 03 de septiembre de 2012]
  21. Actualizado el módulo Math (Gracias a RedHunter) [lunes, 22 de octubre de 2012]


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de -DjB

Hay problemas todavía, cuando

Hay problemas todavía, cuando presiono "r" me dice usb activado pero en la pc no esta presente, porque sera??

Te funciona bien el USB?

Te funciona bien el USB? Si quieres puedes pasarme el código por privado (o como prefieras) y lo pruebo en la mia, haber como va...

 

PD: Tambien puede ser el CFW...

 

Saludos!

Imagen de -DjB

K.o te lo paso tengo el cfw

Aún estoy sin conectarme al USB vía mi HB, porque fuera del HB el funciona bien el USB, tampoco, puedo hacer uso del zip.extract estoy en problema desde hace tiempo desde hace tiempo.

PD: Estoy usando el LuaDev.


Nueva función!!!

Modulo OS, codificar un string en md5:

os.md5(string)

Saludos!

Imagen de m.rr

Supongo que lo has sacado de

Supongo que lo has sacado de Wifihack no? Bueno, que da igual. Que esta en la docu, en la mia al menos.

Salu2

Cierto

Es verdad, esta en la docu, en ese momento no la tenía a mano y pense que era una función nueva

Saludos!

Imagen de User170294

Entonces, si está en la

Entonces, si está en la documentación de LuaDEV no es necesario que sea añadida al post :/

Aqui hay un fallo

Aqui hay un fallo: wlan.statustext , tendría que ser: wlan.statustext()

 

Saludos!

Imagen de User170294

Gracias. Ahora lo corrijo ;)

Gracias. Ahora lo corrijo ;)

Imagen de -DjB

jejeje k.o gracias pero donde

jejeje k.o gracias pero donde va puesto dentro del while do o como funtion o afuera

En el while

pero también lo puedes ponerla en un function y al mismo llamarlo en el while

Imagen de -DjB

ok muchas gracias...

ok muchas gracias...

Imagen de -DjB

me podrian dar un ejemplo de

me podrian dar un ejemplo de zip.extract

por favor!!!!

Imagen de PerezRE

zip.extract

zip.extract (ms0:/Carpeta/Archivo.zip, ms0:/Carpeta, Contraseña) 

 

Creo que es así. Si no, por favor corriganme.

Imagen de Ayrton990

Así es nada mas te falto las comillas, cosa muy importante para evitar un error.

zip.extract ("ms0:/Carpeta/Archivo.zip", "ms0:/Carpeta")  

Salu2


Administrador de www.SceneBeta.com y Android

Imagen de -DjB

hola hoy lo intente y me da

hola hoy lo intente y me da error de que no encontro ms0:/carpeta/archivo.zip

 

por que dice eso...

Imagen de Ayrton990

Debe ser minusculo el error,

Debe ser minusculo el error, verifica que esté todo bien, la ruta como dicen, que el archivo esté bien escrito del nombre, pequeños detalles, además si has tenido multiples errores en el Lua y has reiniciado muchas veces con el botón de reinicio, sal y vuelve a intentarlo.


Administrador de www.SceneBeta.com y Android

Imagen de -DjB

si pero lo que quiero que

si pero lo que quiero que haga es que en cualquier parte que este el rar o el zip el lo extraiga y ya eso lo que quiero que haga...


Imagen de Andres_Ne

Eso es muy facil la verdad ,

Eso es muy facil la verdad , solo te las ingenias para que cuanto le des (x) en un arcivo y que si su formato es "rar" (files.ext, te serviria) entonces que tome la ruta y la pase a la funcion de extraccion la verdad es algo muy facil de hacer.

Saludos.


 

 

Imagen de NEKERAFA

Estáis seguros?

No creo que descomprima archivos rar, ya que es el módulo zip, pero a lo mejor me llevó una.sorpresa.

Imagen de Ayrton990

Pero

Si te las ingenias podrás mezclar Lua hmv7 con LuaDEV.
Salu2

Imagen de Andres_Ne

Jejejeje, si, me perdi de el

Jejejeje, si, me perdi de el contexto , es zip no rar, aunque como tu lo dices , puede que nos llevemos una sorpresa ;). 

Saludos amigos tiempo sin verte  xD


 

 

Naa...

En este caso no hay sorpresas.

Bueno, mejor se los digo directo: LuaDEV no descomprime (ni descomprimirá en un futuro cercano por sí mismo, que conste) archivos rar. La razón? Licencias. Recuerden que el formato rar no es libre.

Imagen de Andres_Ne

Pero si descomprime .zip?

Pero si descomprime .zip?

Si.

Si.

Por poder

Por poder tambien podría descomprimir .7z, si mal no lo recuerdo, ese si que es libre.

 

Saludos!

Imagen de NEKERAFA

Mmm...

Sería mejor que descomprimiera tar

Imagen de Andres_Ne

Tar? jejejejej ese es nuevo

Tar? jejejejej ese es nuevo para mi jejejejejjejejejej

Saludos amigo.

Imagen de NEKERAFA

Mmm...

Es el formato de archivo comprimido en Linux, se basa en la unión de todos los archivos en uno solo y despues la compresión del mismo, de ahí que los archivos acaben en *.tar.gz o *.tar.bzip2, que son los sistemas de compresión que utilizan.

Creo recordar que gz solo lo comprime en zip, por lo que se podría hacer una función casera para descomprimirlo y leer el archivo para descomprimir todos los demas...


NekeOS, el nuevo shell para PSP

PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.

Sony Xperia Z1 Compact con Android 5.1.1

Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).

Imagen de -DjB

podrian darme un ejemplo del

podrian darme un ejemplo del files.ext

files.ext te devuelve los

files.ext te devuelve los últimos 3 caracteres de una cadena que le pases

ruta = "ms0:/carpeta/script.lua"
if files.ext(ruta) == "lua" then
  os.message("es Lua! D:")
elseif files.ext(ruta) == "mp3" then
  os.message("es MP3! D:")
--y así... xD

Imagen de -DjB

k.o intento y te digo como me

k.o intento y te digo como me fue

EDITADO:

lo eh puesto pero cuando presiono la tecla que le dije y no funciono que puse mal miren...

ruta = "ms0:/"
 
 
 
function extraer()
 
if files.ext(ruta) == ".rar" then
 
zip.extract("ruta","ruta")
 
  end
 
end

en function y en el while 

while true do
controls.read()
if controls.press("square") then 
extraer()
end
screen.flip()
end

necesito saver que pasa que hago mal y disculpen si molesto mucho...


Editado: Crear hilos y comentarios duplicados incumple las Normas de la Comunidad, si necesita cambiar su comentario puede usar la opción de Editar. Antes de volver a postear por favor revise las Normas.| Rober Galarga


Varias cosas mal

  • Como dije ya en otro comentario, LuaDEV no descomprime archivos rar, sólo zip.
  • No es lo mismo ruta que "ruta" (sin comillas es una variable, con comillas es un string). Lo menciono por si era tu intención usar tu variable ruta en el zip.extract.
  • No das ninguna ruta a un archivo (si le das esa variable que tienes, le estarías dando una ruta vacía, no tiene caso).

Por cierto, ten cuidado. LuaDEV no descomprime carpetas dentro de los zip, por lo que si tienes sólo una carpeta dentro de tu archivo zip igualmente no te va descomprimir nada. Se comentó algo de eso aquí, debes usar archivos sueltos.

Imagen de AitorDB

By Aitor

Creo que se te ha pasado una cosa, cuando hace files.ext(...) == ".rar" debería quitar el punto, pues LuaDev no te devuelve la extensión con el punto, te lo devuelve sin él.


Sígueme en Twitter: @Aitor_db

Imagen de -DjB

oohh voy intentarlo sin el

oohh voy intentarlo sin el punto

Imagen de PerezRE

PerezRE

Verífica que este todo en orden. El código y el archivo. (Tanto las letras del code, como específicar la ruta correcta del archivo)


--[NO EXISTEN LOS LIMITES =D]--

Imagen de Jepte

Ahora que me acuerdo...

estas funciones no estan documentadas, son unas que nos paso chimecho,una ves.

No no, espera, que sí hay forma!

Existen las funciones:

imagen_destino:blit(destino_x, destino_y, imagen_origen);
imagen_destino:blit(destino_x, destino_y, imagen_origen, origen_x, origen_y, origen_w, origen_h);

Eso sirve si quieres reemplazar los píxeles de una
imagen (destino) con los píxeles de otra (origen), ya que LuaDEV por el
momento, reemplaza directamente, no es lo mismo que un blit en pantalla.

Por ejemplo, suponiendo que tienes un cuadro negro en destino, y un
cuadro blanco semistransparente en la otra, al hacer el blit de la de
origen sobre la de destino, quedará blanco y no medio gris.

 

Módulo World

Alguien me podría explicar un poco mas a detalle el Módulo World es q
quiero trabajar con objetos en 3d

Imagen de User170294

Busca en el buscador

A usuarios como Deviante o Mills.

Ellos te podrán ayudar mejor ;)

Necesito

Necesito que alguien con PSP-Go! pruebe este code:

while true do
if umd.present then screen.print(2,2,"UMD Encontrado!") else screen.print(2,2,"No hay UMD!") end
screen.flip()
end

Yo lo probé con mi PSP 1000 y con la 2000 y dice UMD Encontrado! sin ningún UMD en la bandeja...

 

Saludos y gracias!

Imagen de PerezRE

By PerezRE

intenta esto:

No sé si ya hicierón un comentario parecido a lo que haré o si ya lo resolvierón, pero es que no me actualize en el post y me da flojera leer cada comentario XD

  if not umd.present() then screen.print(2,2,"UMD no encontrado!") elseif umd.present() then screen.print(2,2,"UMD Encontrado!") end

 No sé si es con parentesis la funcion umd.present, pero por si acaso yo lo puse.

Saludos. Espero una respuesta


--[NO EXISTEN LOS LIMITES =D]--

Si lleva paréntesis, 6381 en

Si lleva paréntesis, 6381 en este comentario ya había puesto un code así ;)

Imagen de Jepte

comparacion

intenta conparandola , 

 

if umd.present==true then screen.print(2,2,"UMD Encontrado!") else screen.print(2,2,"No hay UMD!") end

Ese código siempre te va

Ese código siempre te va decir que no hay UMD, porque umd.present nunca es igual a true (es una función). La forma correcta de usarla es como dice 6381 aquí abajo.

Imagen de Jepte

si lo se , lo que pasa es que

si lo se , lo que pasa es que es un copi/paste de el codigo de arriba de rehunter, lo unico que intentaba decir es que lo comparara ya sea como funcion o como variable , por que redhunter dijo que le devolvio true haci como esta arriba,.la verdad nunca he utilisado esa funcion.

Imagen de NEKERAFA

Falso

Va a devolver true porque la umd.present existe (Es verdadero). Es por eso que de tantas dudas. Como dijo chimecho la variable existe, por lo que devuelve true, pero no porque la propia función devuelva true.


NekeOS, el nuevo shell para PSP

PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.

Sony Xperia Z1 Compact con Android 5.1.1

Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).

Imagen de Chimecho

Nap

Dije cuando se la trata como booleano, es decir, cuando haces if <variable> then, lo que él está diciendo es if <variable>==<variable> then, y está intentando comparar función con booleano, y dará false.



PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]

07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD

Recuerda: Sé el intérprete -_-

Imagen de NEKERAFA

XD

¿Y yo que dije? Si se trata como variable dará true, si se trata como función, dará algo distinto, a menos que devuelva true o algo que sea cierto.


NekeOS, el nuevo shell para PSP

PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.

Sony Xperia Z1 Compact con Android 5.1.1

Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).

Imagen de Chimecho

A ver...

Es que no es lo mismo, aquí hay 3 cosas distintas.

Declaraciones:

image = {};
function image.foo()
    return false;
end

Las 3 cosas distintas:

  1. if image.foo==true then
        print("true");
    else
        print("false");
    end
      Parecido a lo que está en este comentario al que rober contestó que siempre dirá que no hay umd, y es cierto. Probando el code que puse imprime false (ya que la variable no contiene el valor true, sino una función, lo explico aquí), y acá contestas que siempre dará true y no es así.
  2. if image.foo then
        print("true");
    else
        print("false");
    end
      Parecido a lo que está en este comentario y aquí expliqué que es porque el campo foo existe dentro de la tabla image. Esta es la explicación que estás usando erróneamente para el primer caso.
  3. if image.foo() then
        print("true");
    else
        print("false");
    end
     
    -- ó
     
    if image.foo() == true then
        print("true");
    else
        print("false");
    end
     Parecido a lo que realmente quiso hacer RedHunter, aquí lo que se ejecute depende de lo que devuelva image.foo(), en este caso es false, por lo que ejecutará lo del else.

Ahí tienes la respuesta a tu pregunta :)

Saludos!



PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]

07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD

Recuerda: Sé el intérprete -_-

Imagen de NEKERAFA

Ah!!

Yo me refería a la 2 (Porque que recuerde, en un código que hice comprobaba si existia una función de esa forma), nunca lo intenté de la primera forma porque creia que se podría eliminar el booleano dando el mismo resultado...


NekeOS, el nuevo shell para PSP

PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.

Sony Xperia Z1 Compact con Android 5.1.1

Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.