He sacado de un tutorial de Deviante un cursor y lo he ajustado un poco.
cursor = { img = image.load("cur.png"), x = 240, y = 136, procesa = function (yomismo) if controls.analogx() > 40 then yomismo.x = yomismo.x + 3; end if controls.analogx() < 40 then yomismo.x = yomismo.x - 3; end if controls.analogy() > 40 then yomismo.y = yomismo.y + 3; end if controls.analogy() < 40 then yomismo.y = yomismo.y - 3; end end, blit = function (yomismo) yomismo:procesa(); yomismo.img:blit(yomismo.x,yomismo.y); end }
Yo lo puedo mover para donde yo quiera con el Yoistik pero al soltar el Yoistik se sube para la esquina izquierda arriba.
¿Solución?
Edito: Nueva duda
Lo que e hecho es crear un script para las funciones del cursor:
function mouseclick(x, y, w, h) -- boolean, mouseclick(objeto: x, y, ancho, alto): Devuelve true si el cursor esta encima del objeto if mouse.x >= x and mouse.x <= x+w and mouse.y >= y and mouse.y <= y+h then return true else return false end end cursor = { img = image.load("cur.png"), x = 240, y = 136, procesa = function (yomismo) if controls.analogx() > 40 then yomismo.x = yomismo.x + 4; end if controls.analogx() < -40 then yomismo.x = yomismo.x - 4; end if controls.analogy() > 40 then yomismo.y = yomismo.y + 4; end if controls.analogy() < -40 then yomismo.y = yomismo.y - 4; end end, blit = function (yomismo) yomismo:procesa(); yomismo.img:blit(yomismo.x,yomismo.y); end }
Y otra para otras cosas:
dofile("cur.lua"); --Colores black=color.new(0,0,0) azul=color.new(0,128,192) --Cargando imagenes menu = {} menu[1] = image.load("Imagenes/log2.png") options = 1 mActual = 1 while true do controls.read() image.blit(0,0,menu[mActual]) if controls.press("up") then if mActual<=1 then mActual=1 else mActual = mActual - 1 end elseif controls.press("down") then if mActual >=1 then mActual = 1 else mActual = mActual + 1 end end -------------------------------------------------------------------------------------------------------------------------------- if mouseclick(185, 129, 110, 14) and controls.cross() then os.quit() end cursor:blit(); screen.flip() end
Pues bien al ejecutar el programa salta error:
attempt to index global mouse(a nil value)
El error debe de estar en la función mouseclick ya que antes de insertar esa funcion iba todo perfecto.
Gracias Tutos
Gracias por hacerme publicidad en cubierta jajajajaja.
Solo te recomiendo que cites la licencia.
EDITO: Haber, me da igual que me copies el código como ya he dicho más de una vez. No tengais miedo, ya que es libre. ¿Que pasaria si la gente tbiera miedo de copiar Linux? Pues que seguramente no existirian tantas distros como ahora, que es lo que consiste el software libre: Probar, Editar y Compartir
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).
Claro, por supuesto.
Claro, por supuesto.
Mmm...
Ya de paso te digo como funciona:
Si lo quieres adaptar haz esto:
Es lo mismo pero utilizando la tecnica self
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).
Entonces para que funcione
Entonces para que funcione esto:
como deberia yamarlo, porque eso no esta nombrado como función
No es así
Ahora la he incluido dentro de cursor, por lo que para llamarla se tendría que hacer así:
Es como si fuera una nueva función de la tabla anterior
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).
Pues ahora muestra error en
Pues ahora muestra error en el script del cursor.
Dice : expected (to close( at line 1) near if
Mmm...
Pues te falta algo...
Se que le falta un if ya que
Se que le falta un if ya que dice: Near If pero no se donde.
Creo que el error es
Creo que el error es éste:
XD
Es verdad, se me olvidó ponerlo como función XD
LOOOL
Ok, confirmado. Gracias a
Ok, confirmado.
Gracias a todos por vuestra ayuda
puedes
puedes ver este tuto es sobre colisiones, ya que la condicion en al cual dices que si esta en tal punto, se sale, tendra que estar en ese punto exacto, en ese mismo pixel =_= para que la condicion se cumpla
"Las cosas brillantes siempre salen de repente, como la geometría de una flor"
No lo he entendido muy bien
No lo he entendido muy bien pero no se si tengo que crear la funcion mouse asi:
O esto adaptarlo un poco:
if colision(link, objetos[i]) and link.status=="walk" then
La función de la colisión ya
La función de la colisión ya la tienes, pero es que estás usando variables que no tienes declaradas (y eso es porque estás usando codes que no entiendes como funcionan). En tu función mouseclick, en lugar de mouse.x y mouse.y prueba a poner cursor.x y cursor.y
Ahora no da error, pero voy a
Ahora no da error, pero voy a comprobar si al pulsar X en ese sitio hace eso.
nil = no existe
Entonces... tienes definida la tabla mouse, con sus entradas x,y?
Entonces la funcion
Entonces la funcion mouseclick la tendria que poner como tabla en vez de función?
No me refería a eso, sino a
No me refería a eso, sino a que en tu función mouseclick comparas números con las entradas de una tabla llamada mouse, y esa tabla no está definida en ningún lado.
Oye, pero si le añado
Oye, pero si le añado esto:
Le estarias diciendo que al pinchar X entre esas condenadas se salga de la aplicacion?
Si has creado una funcion explicita
si, sino no.
Bueno e juntado la funcion
Bueno e juntado la funcion con el Code:
Pero da errror
¿Que hay mal?
El nombre de la función
El nombre de la función mouse.on, cámbialo (o quítale el punto). Si la quieres usar tal cual, tendrías que definirla como una tabla:
Muchas gracias, ¿Como te lo
Muchas gracias, ¿Como te lo puedo agradecer?
Ya lo hiciste xD
Me conformo con ese "gracias" ;)
Saludos
Aora tengo otro error
Aora tengo otro error
Esa es la idea, pero no puedo
Esa es la idea, pero no puedo asegurar que funcione, no sé cómo tengas mouse.on
La solución es leer la
La solución es leer la documentación, porque ese code tiene errores de lógica (sigo pensando que Deviante metió los errores a posta, para darnos algo que hacer xD).
Te copio y pego de la docu lo que devuelve controls.analog: Un número del rango: (-128: izquierda/arriba, +127: derecha/abajo).
Qué significa? Que cuando el analógico está en reposo (en el centro) devuelve cero, y se cumplen las siguientes condiciones:
Por lo tanto, el puntero se mueve :P
mmm, haciendo unas pruebas e
mmm, haciendo unas pruebas e hecho esto:
Y ahora se esta quieto y no se mueve, pero a la hora de moverlo con el Joistik me da error: attempt to index global mouse(a nil value)
Eso significa que mouse no
Eso significa que mouse no está definido, o no es una tabla. Lo único que tenías que hacer era invertir un par de signos:
Y listo =/
Ok, gracias
Ok, gracias