Control de usuario
Patrocinadores
Estadísticas
Miembros:
334.524
Online:
1.113
Hilos:
1.380.426
Mensajes:
24.871.983
Stats

Índice de foros Otras Consolas Desarrollo

ayuda para codigo!! PSP

Dedicado al desarrollo de software casero para videoconsolas

Moderador: jiXo

botxii
Novato
 
Mensajes: 14
Registrado: 16 Feb 2011

ayuda para codigo!! PSP

Mensajepor botxii 28 May 2011 14:54

Mira, estoy haciendo un juego para psp, es como el guerrastribales, que es un juego online, i me sale un error cuando lo ejecuto en la psp con un eboot.pbp. el codigo es este:
dofile("comp.LUA")
pad = controls.read()
--contadores
comadera = Timer.new()--contador madera milisegundos
copiedra = Timer.new()--contador piedra milisegundos
cobarro = Timer.new()--contador barro milisegundos
cepp = Timer.new()-- contador edificio principal milisegundos
cuartell = Timer.new()-- contador cuartel milisegundos
cmadera = math.floor( comadera:time() / 1000 )--para conseguir en segundos madera
cpiedra = math.floor( copiedra:time() / 1000 )--para conseguir en segundos piedra
cbarro = math.floor( cobarro:time() / 1000 )--para conseguir en segundos barro
cep = math.floor( cepp:time() / 1000 )--para conseguir en segundos edificio principal
ccuart = math.floor( cuartell:time() / 1000 )--para conseguir en segundos cuartel
-----------------

function recursos()
if cmadera == tmadera then
madera = madera + 1
cmadera:reset(0)
cmadera:start
end
if cbarro == 5 then
barro = barro + 1
cbarro:reset(0)
cbarro:start
end
if cpiedra == 5 then
piedra = piedra + 1
cpiedra:reset(0)
cpiedra:start
end
if madera == almacen then
color1 = rojo
comadera:stop()
mmadera = 1
else color1 = blanco
end
if mmadera = 1 then
comadera:start()
end
if piedra == almacen then
color2 = rojo
end
if barro == almacen then
color3 = rojo
end

end
function cursosr()
if pad:up() and oldpad:up() =~ pad:up() then -- para cursor
y = y - 1
end
if pad:down() and oldpad:down() =~ pad:down() then
y = y + 1
end
if pad:left() and oldpad:left() =~ pad:left() then
x = x - 1
end
if pad:right() and oldpad:right() =~ pad:right() then
x = x + 1
end

end

while true do
screen:clear()
oldpad = controls.read()
screen:blit(0,0,fondo)
screen:blit(x,y,cursor)
screen:print(257, 44,madera, color1)
screen:print(383, 44,piedra, color2)
screen:print(321, 44,barro, color3)
screen:blit(0,262,barra)
comadera:start()--encendemos
copiedra:strat()--encendemos
cobarro:start()--encendemos
cursor()
recursos()
if pad:cross() and oldpad:cross() ~= pad:cross() and x < 100 and x > 1 and y < 38 and y > 5 then-- para entrar en el ep
ep = 1
end
if pad:cross() and oldpad:cross() ~= pad:cross() and x < 160 and x > 100 and y < 38 and y > 5 then-- para entrar en el cuartel
cuart = 1
end

-- empezamos con el edificio principal
if ep == 1 then
while true do
screen:clear()
oldpad = controls.read()
x = 240
y=172
screen:print(454,57,lvlep1,negro)
screen:print(454,118,lvlcuart1,negro)
screen:blit(0,0,iep)
screen:blit(x,y,cursor)
screen:blit(0,262,barra)
cursor()
recusos()
if pad:R() and oldpad:R() =~ pad:R() then
break
end

--construir ep
-- ¡¡CORDENADAS MAL; IMAGEN EP SIN ALGUNOS EDIFICIOS!!

if pad:cross() and oldpad:cross() ~= pad:cross() and x < 479 and x > 401 and y < 72 and y > 43 then -- para construir en ep
if lvlep = 1 and madera >= 90 and piedra >= 80 and barro >= 70 then

madera = madera - 90
piedra = piedra - 80
barro = barro - 70
cepp:reset(0)
cepp:start()
screen:print(20,268,cep,negro)
ced = 1
end
if lvlep = 2 and madera >= 113 and piedra >= 102 and barro >= 88 then
madra = madera - 113
piedra = piedra - 102
barro = barro - 88
cepp:reset(0)
cepp:start()
screen:print(20,268,cep,negro)
ced = 1
end
if lvlep = 3 and madera >= 143 and piedra >= 130 and barro >= 111 then
madra = madera - 143
piedra = piedra - 130
barro = barro - 111
cepp:reset(0)
cepp:start()
screen:print(20,268,cep,negro)
ced = 1
end
if lvlep =4 and madera >= 143 and piedra >= 130 and barro >= 111 then
madra = madera - 143
piedra = piedra - 130
barro = barro - 130
cepp:reset(0)
cepp:start()
screen:print(20,268,cep,negro)
ced = 1
end

if ced = 1
while true do
screen:clear()
oldpad = controls.read()
screen:print(454,57,lvlep1,negro)
screen:print(454,118,lvlcuart1,negro)
screen:blit(0,0,iep)
screen:blit(x,y,cursor)
screen:blit(0,262,barra)
cursor()
recusos()
if cep == 60 and acep = 0 then
completado = 0
lvlep = lvlep + 1
if completado = 0
sceen:print(240,170,completado,rojo)
cep:reset(0)
while true do
if pad:cross() and oldpad:cross() ~= pad:cross() and completado == 0 then -- para quitar completado
completado = 1
break
end
screen.flip()
screen.waitVblankStart()
end

end

end

if cep = 90 and acep = 1 then
completado = 0
lvlep = lvlep + 1
if completado = 0
sceen:print(240,170,completado,rojo)
cep:reset(0)
while true do
if pad:cross() and oldpad:cross() ~= pad:cross() and completado == 0 then -- para quitar completado
completado = 1
break
end
screen.flip()
screen.waitVblankStart()
end

end

end

if cep = 120 and acep = 2 then
completado = 0
lvlep = lvlep + 1
if completado = 0
sceen:print(240,170,completado,rojo)
cep:reset(0)
while true do
if pad:cross() and oldpad:cross() ~= pad:cross() and completado == 0 then -- para quitar completado
completado = 1
break
end
screen.flip()
screen.waitVblankStart()
end

end

end

end
ced = 0
end

end

if pad:cross() and oldpad:cross() ~= pad:cross() and x < 479 and x > 401 and y < 130 and y > 101 then -- para constuir en cuartel
if lvlcuart = 0 and lvlep = 3 and madera >= 200 and piedra >= 170 and barro >= 90 then

madera = madera - 200
piedra = piedra - 170
barro = barro - 90
cepp:reset(0)
cepp:start()
screen:print(20,268,cep,negro)
ced = 1
end

if ced = 1
while true do
if cep == 60 and acuart == 0 then
completado = 0
lvlcuart = lvlcuart + 1
if completado = 0
sceen:print(240,170,completado,rojo)
cep:reset(0)
while true do
if pad:cross() and oldpad:cross() ~= pad:cross() and completado == 0 then -- para quitar completado
completado = 1
break
end
screen.flip()
screen.waitVblankStart()
end

end

end

if cep = 90 and acuart = 1 then
completado = 0
lvlcuart = lvlcuart + 1
if completado = 0
sceen:print(240,170,completado,rojo)
cep:reset(0)
while true do
if pad:cross() and oldpad:cross() ~= pad:cross() and completado == 0 then -- para quitar completado
completado = 1
break
end
screen.flip()
screen.waitVblankStart()
end

end

end

end
ced = 0
end

end

if pad:cross() and oldpad:cross() ~= pad:cross() and x < 479 and x > 401 and y < 130 and y > 101 then -- para constuir en leñador
if lvlmad = 1 and madera >= 63 and piedra >= 77 and barro >= 50 then

madera = madera - 60
piedra = piedra - 77
barro = barro - 50
cepp:reset(0)
cepp:start()
screen:print(20,268,cep,negro)
ced = 1
end
if lvlmad = 2 and madera >= 78 and piedra >= 98 and barro >= 78 then

madera = madera - 78
piedra = piedra - 98
barro = barro - 78
cepp:reset(0)
cepp:start()
screen:print(20,268,cep,negro)
ced = 1
end

if ced = 1
while true do
if cep == 120 and amad == 1 then
completado = 0
lvlmad = lvlmad + 1
tmadera = 4
if completado = 0
sceen:print(240,170,completado,rojo)
cep:reset(0)
while true do
if pad:cross() and oldpad:cross() ~= pad:cross() and completado == 0 then -- para quitar completado
completado = 1
break
end
screen.flip()
screen.waitVblankStart()
end

end

end

if cep = 180 and amad = 2 then
completado = 0
lvlmad = lvlmad + 1
tmadera = 3
if completado = 0
sceen:print(240,170,completado,rojo)
cep:reset(0)
while true do
if pad:cross() and oldpad:cross() ~= pad:cross() and completado == 0 then -- para quitar completado
completado = 1
break
end
screen.flip()
screen.waitVblankStart()
end

end

end

end
ced = 0
end

end

end

end

--empezamos con el cuartel
if cuart == 1 then
while true do
screen:clear()
oldpad = controls.read()
screen:blit(0,0,cuart)
screen:blit(x,y,cursor)
screen:print(257, 44,madera, color1)
screen:print(383, 44,piedra, color2)
screen:print(321, 44,barro, color3)
screen:blit(0,262,barra)
cursor()
recursos()
if pad:R() and oldpad:R() =~ pad:R() then
break
end

--hacer tropas
if pad:cross() and oldpad:cross() ~= pad:cross() and x > 426 and x < 454 and y < 114 and y > 59 then -- para lanceros

if lvlcuart = 1 and madera >= 50 and piedra >= 30 and barro >= 10 then

madera = madera - 50
piedra = piedra - 30
barro = barro - 10
cuartell:reset(0)
cuartell:start()
screen:print(163,268,ccuart,negro)
cud = 1
end
if lvlcuart = 2 and madera >= 50 and piedra >= 30 and barro >= 10 then

madera = madera - 50
piedra = piedra - 30
barro = barro - 10
cuartell:reset(0)
cuartell:start()
screen:print(163,268,ccuart,negro)
cud = 1
end

if cud = 1

if ccuart == 300 and acuart == 1 then
compltado = 0
lanceros = lanceros + 1
if completado = 0
sceen:print(240,170,completado,rojo)
cep:reset(0)
while true do
if pad:cross() and oldpad:cross() ~= pad:cross() and completado == 0 then -- para quitar completado
completado = 1
break
end
screen.flip()
screen.waitVblankStart()
end

end

end
if ccuart == 270 and acuart == 2 then
compltado = 0
lanceros = lanceros + 1
if completado = 0
sceen:print(240,170,completado,rojo)
cep:reset(0)
while true do
if pad:cross() and oldpad:cross() ~= pad:cross() and completado == 0 then -- para quitar completado
completado = 1
break
end
screen.flip()
screen.waitVblankStart()
end

end

end
cud = 0
end

end

end

end

end

el error es este: function arguments expected near elseif.

si alguien me pude ayudar, gracias de antemano.

hardyx
Habitual
 
Mensajes: 77
Registrado: 30 Ago 2008

Mensajepor hardyx 31 May 2011 09:36

Junto con el mensaje de error te da el número de línea que falla, lo cual es importante. Y sin saber mucho de Lua, creo que tienes que añadir paréntesis a las expresiones complejas en los IF. Por ejemplo: if a>b and b==0 then quedaría así: if (a<b) and (b==0) then. Suerte.

LUISP13
Avatar de usuario
Adicto
 
Mensajes: 263
Registrado: 11 Feb 2010

Mensajepor LUISP13 31 May 2011 12:50

Hay lineas que las comienzas con if, pero no las acabas con then para devolver el valor en caso de coincidir la situación.

Aparte hay un par de errores en las variables de tu código, indicas compltado cuando supongo que debe ser completado ya que haces referencia también en otras lineas.
Saludos (53 61 6c 75 64 6f 73) o (01010011 01100001 01101100 01110101 01100100 01101111 01110011)

botxii
Novato
 
Mensajes: 14
Registrado: 16 Feb 2011

gracias

Mensajepor botxii 31 May 2011 17:47

gracias, mi teclado es una ....., ahora lo reviso, lo de los parentesis, lo pondre a la practica, muchas gracias

LUISP13
Avatar de usuario
Adicto
 
Mensajes: 263
Registrado: 11 Feb 2010

Re: gracias

Mensajepor LUISP13 31 May 2011 18:49

botxii escribió:gracias, mi teclado es una ....., ahora lo reviso, lo de los parentesis, lo pondre a la practica, muchas gracias


No tienes que añadir paréntesis.
Saludos (53 61 6c 75 64 6f 73) o (01010011 01100001 01101100 01110101 01100100 01101111 01110011)

botxii
Novato
 
Mensajes: 14
Registrado: 16 Feb 2011

ok

Mensajepor botxii 02 Jun 2011 13:21

esta solucionado, pero me sale que en este fregmento hay error

if cmadera == tmadera then
madera = madera + 1
cmadera:reset(0)
cmadera:start
end
especialmente dice function arguments expected near end

LUISP13
Avatar de usuario
Adicto
 
Mensajes: 263
Registrado: 11 Feb 2010

Mensajepor LUISP13 03 Jun 2011 21:10

botxii, un consejo:

No se si el programa lo tienes escrito tal y como lo has puesto en tu post, pero si es así....
Escribe el código usando tabuladores y espacios.
Molesta a la vista ;)
Tienes hasta 8 end seguidos, uno debajo de otro. Así es muy difícil revisarlo, de verdad
Debes seguir un orden, como por ejemplo:


Código: Seleccionar todo
while true do
   if pad:cross() and oldpad:cross() ~= pad:cross() and completado == 0 then -- para quitar completado
      completado = 1
      break
   end

      screen.flip()
      screen.waitVblankStart()
      end

end
Saludos (53 61 6c 75 64 6f 73) o (01010011 01100001 01101100 01110101 01100100 01101111 01110011)

botxii
Novato
 
Mensajes: 14
Registrado: 16 Feb 2011

ok

Mensajepor botxii 05 Jun 2011 09:53

ya lo ir ponieno organizadamente, y explicando que es cada end.
pero el eror prosigue, como lo soluciono?

odbo
Avatar de usuario
Habitual
 
Mensajes: 64
Registrado: 26 Abr 2007

Re: ok

Mensajepor odbo 05 Jun 2011 23:24

botxii escribió:esta solucionado, pero me sale que en este fregmento hay error

if cmadera == tmadera then
madera = madera + 1
cmadera:reset(0)
cmadera:start
end
especialmente dice function arguments expected near end


Sin conocer nada del lenguaje utilizado, es posible que aunque el método start del objeto cmadera no tenga argumentos, tengas que llamarlo de la forma "cmadera:start()"

botxii
Novato
 
Mensajes: 14
Registrado: 16 Feb 2011

TT

Mensajepor botxii 09 Jun 2011 18:33

pensareis que soy un pesado, pero ahora no sale ningun error, se queda la pantalla negra, y se para.

odio la psp ratataaaa [uzi]

Siguiente

Volver a Desarrollo

¿Quién está conectado?

Usuarios navegando por este foro: No hay usuarios registrados visitando el foro y 0 invitados