Buenas, estoy intentando hacer un jueguillo multijugador para PSP en LuaDev y cuando empiezo con el ad-hoc parece que no soporta esas funciones. Se puede meter alguna libreria o algo?? si no es el caso tendria que hacerlo con el Lua player? es que soy un poco novato en esto....
Os dejo el codigo de todas formas, si me puedierais explicar que debo hacer para que funcione os lo agredeceria mucho ^^
link = {} link["stay"]={} link["walk"]={} link["stay"]["up"] = image.load("sprites/link_stay_up.png") link["stay"]["down"] = image.load("sprites/link_stay_down.png") link["stay"]["right"] = image.load("sprites/link_stay_right.png") link["stay"]["left"] = image.load("sprites/link_stay_left.png") link["walk"]["up"] = image.loadsprite("sprites/link_walk_up.png",22,27) link["walk"]["down"] = image.loadsprite("sprites/link_walk_down.png",22,27) link["walk"]["right"] = image.loadsprite("sprites/link_walk_right.png",22,27) link["walk"]["left"] = image.loadsprite("sprites/link_walk_left.png",22,27) link.status = "stay" link.direction = "down" link.x = 10 link.y = 10 link.w = 22 link.h = 27 link.anim = 0 link2 = {} link2["stay"]={} link2["walk"]={} link2["stay"]["up"] = image.load("sprites/j2_stay_up.png") link2["stay"]["down"] = image.load("sprites/j2_stay_down.png") link2["stay"]["right"] = image.load("sprites/j2_stay_right.png") link2["stay"]["left"] = image.load("sprites/j2_stay_left.png") link2["walk"]["up"] = image.loadsprite("sprites/j2_walk_up.png",22,27) link2["walk"]["down"] = image.loadsprite("sprites/j2_walk_down.png",22,27) link2["walk"]["right"] = image.loadsprite("sprites/j2_walk_right.png",22,27) link2["walk"]["left"] = image.loadsprite("sprites/j2_walk_left.png",22,27) link2.status = "stay" link2.direction = "up" link2.x = 458 link2.y = 245 link2.w = 22 link2.h = 27 link2.anim = 0 blanco = color.new(255,255,255) fondo = image.load("sprites/back.jpg") winner = image.load("sprites/win.png") coin = image.load("sprites/money.png") mensaje_recibido = "" mensaje_enviado = "" ultimo_mensaje_recibido = "" ultimo_mensaje_enviado = "" mensaje = 65 caracter = "A" fin_espera = true objetos = {} function generar_objetos() -- una función para generar los objetos cada que queramos objetos[1] = {} -- cada objeto, es una tabla con ciertas propiedades: objetos[1].w =(6) objetos[1].h =(8) objetos[1].x = math.random(0,480-objetos[1].w) -- ahora, cada objeto tiene una posicion en pantalla, en X, va de 0 a 480, pero! el objeto tiene ancho, entonces, para que no se salga de pantalla el límite será 480 - el ancho del objeto (objetos[i].w) objetos[1].y = math.random(0,272-objetos[1].h) -- lo mismo que arriba, en Y el límite sería 272, pero el objeto tiene alto (objetos[i].h) end jugador = {} function generar_jug() for k=1,2 do jugador[k] = {} jugador[k].m = 5 jugador[k].p = 0 end end function colision(obj1, obj2) -- esta función, verifica si hay colisión o no entre dos objetos, notar que, DENTRO de la función se usan los parámetros que recibe, más adelante, veremos como se usa if obj1.x+obj1.w>obj2.x -- borde derecho obj1 > borde izquierdo obj2 and obj1.x<obj2.x+obj2.w -- borde izquierdo obj1 < borde derecho obj2 and obj1.y+obj1.h>obj2.y -- borde inferior obj1 > borde superior obj2 and obj1.y<obj2.y+obj2.h then -- borde superior obj1 < borde inferior obj2 return true -- retorna verdadero si hay colisión end return false -- si el if no se cumple, viene a esta línea y retorna false, es decir, no hay colisión end function transmite_datos_seguro() fin_espera = false repeat Adhoc.send(mensaje_enviado) System.sleep(8) for espera = 1, 5 do mensaje_recibido = Adhoc.recv() if string.sub( mensaje_recibido, 1, 1) == string.char(mensaje) then fin_espera = true ; break end if mensaje_recibido == ultimo_mensaje_recibido then Adhoc.send(ultimo_mensaje_enviado); System.sleep(8) end System.sleep(8) end until fin_espera ultimo_mensaje_recibido = mensaje_recibido ultimo_mensaje_enviado = mensaje_enviado mensaje = mensaje + 1 if mensaje > 122 then mensaje = 65 end end sound.load("Guile.mp3") sound.loop("Guile.mp3") generar_objetos() generar_jug() while true do while pcall ( Adhoc.init ) == false do --Aqui da el error screen.print( 130, 116, "CONECTA EL INTERRUPTOR WLAN" , blanco ) screen.print( 130, 126, " PULSA X " , blanco ) screen.flip() fin_espera = true while fin_espera do System.sleep(50) if controls.press("cross") then fin_espera = false end end end while jugador[1].p==1000 do image.blit(0,0,winner) if controls.start() then os.exit() end screen.flip() end image.blit(0,0,fondo) controls.read() -- código de movimiento de la animación if controls.up() or controls.down() or controls.left() or controls.right() then link.anim = link.anim + 0.2 link.status = "walk" if math.floor(link.anim)>9 then link.anim = 0 end else link.anim = 0 link.status = "stay" end -- código de desplazamiento mensaje_enviado = string.char(mensaje) if controls.up() then link.y=link.y-1 link.direction = "up" mensaje_enviado = mensaje_enviado .. "U" elseif controls.down() then link.y=link.y+1 link.direction = "down" mensaje_enviado = mensaje_enviado .. "D" elseif controls.right() then link.x=link.x+1 link.direction = "right" mensaje_enviado = mensaje_enviado .. "R" elseif controls.left() then link.x=link.x-1 link.direction = "left" mensaje_enviado = mensaje_enviado .. "L" else mensaje_enviado = mensaje_enviado .. "N" end if link.status=="walk" then link[link.status][link.direction]:setframe(link.anim) end image.blit(objetos[1].x,objetos[1].y,coin) if colision(link, objetos[1]) and link.status=="walk" then generar_objetos() jugador[1].p = jugador[1].p+100 end if controls.press("cross") then -- si presionamos X if jugador[1].m > 0 then generar_objetos() -- generamos de nuevo los objetos jugador[1].m=jugador[1].m-1 end end transmite_datos_seguro() if string.sub( mensaje_recibido, 1, 1)== "U" or string.sub( mensaje_recibido, 1, 1)== "D" or string.sub( mensaje_recibido, 1, 1)== "R" or string.sub( mensaje_recibido, 1, 1)== "L" then link2.anim = link2.anim + 0.2 link2.status = "walk" if math.floor(link2.anim)>9 then link2.anim = 0 end else link2.anim = 0 link2.status = "stay" end if string.sub( mensaje_recibido, 1, 1)== "U" then link2.y=link.y-1 link2.direction = "up" elseif string.sub( mensaje_recibido, 1, 1)== "D" then link2.y=link.y+1 link2.direction = "down" elseif string.sub( mensaje_recibido, 1, 1)== "R" then link2.x=link.x+1 link2.direction = "right" elseif string.sub( mensaje_recibido, 1, 1)== "L" then link2.x=link.x-1 link2.direction = "left" end if link2.status=="walk" then -- si no está quieto link2[link2.status][link2.direction]:setframe(link2.anim) -- que pueda caminar end link.x = math.min(math.max(0,link.x), 480-link.w) -- límite en X dentro de la pantalla link.y = math.min(math.max(0,link.y), 272-link.h) -- límite en Y dentro de la pantalla link2.x = math.min(math.max(0,link2.x), 480-link2.w) -- límite en X dentro de la pantalla link2.y = math.min(math.max(0,link2.y), 272-link2.h) -- límite en Y dentro de la pantalla link[link.status][link.direction]:blit(link.x,link.y) -- mostrar a link! (al fin xD) link2[link2.status][link2.direction]:blit(link2.x,link2.y) -- mostrar a link! (al fin xD) screen.print(10,10,"Magias "..jugador[1].m.." Puntuacion "..jugador[1].p.." /1000",blanco) screen.flip() -- mostrar cambios en pantalla end
Me parece....
Me parece que en luadev aun no se han pueto las funciones ad-hoc habra que esperar a que deviante lo saque ...
Y si quisiera usarlo con el
Y si quisiera usarlo con el Lua player o algo, tendria que cambiar mucho? esque me gustaria probarlo de alguna manera, y pronto a ser posible.Gracias ^^
Se puede pero....
mejor esperar con luadev
.
Cierto no eres el único que espera...