Cuadro de selección

Started by Yawin, December 03, 2010, 11:04:38 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Yawin

En ese caso, tengo un problema. Porque la unidad accede a ppunt.x y ppunt.y muchas veces. Y puntero accede a obj.faction muchas veces. Asiq ue siempre me va a saltar error, porque siempre va a haber una antes que la otra.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

DCelso

umn, deberías cambiar entonces la lógica de uno de ellos para que no pase, no es lógico, pero tiene solución,
tienes que usar declare, hablé de ello en otro post, a ver si te lo encuentro.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/


Yawin

Y si hago una fución para sacar la facción, que la llame desde el puntero, que lo incluyo antes que la unidad, pero incluyendo la función más tarde??

Es decir, el orden de include es:
puntero.prg
unidades.prg
funciones.prg

Y la faction la saco desde la función, pero llamandola desde el puntero.

¿Funcionaría? (esque ahora no puedo probarlo xD)
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

DCelso

ni idea, habría que verlo.
Pero deja todo como lo tienes ahora y prueba a poner esto antes del proceso puntero

declare process unidad(int grafin, int veloc, int aux, int aux2, int aux3, int fact)
end
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Yawin

Nada, sigue sin ir. He puesto el declare de arriba y no va. He hecho una función aparte y no va. Os agradecería mil y una veces que le echaseis un vistazo a los códigos y me dijeseis qué tengo que hacer y por qué, porque por más que miro, no entiendo qué falla.

http://pensarescompartir.com/lahsoft/lahsoftcorp/?direc=fenix/&id=AOY.rar
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

DCelso

Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

DCelso

pues problema gordo, usas un nombre de variable reservado, es decir, no puedes usar "id" como nombre de variable ya que es una variable existente en todos los procesos que devuelve el id del proceso, así que tenías problemas de ámbito en.

function sacarfaction(guerrero id)

begin

return id.faction;
[b]aqui estabas intentando acceder al id del proceso que llamó a esta funcion (que si no recuerdo mal es puntero, así que aquí id vale el valor del identificador del proceso puntero) en vez de a tu variable de entrada que llamaste id[/b]
end

Para Splinter: no se por qué esto no da fallo, osea el sistema no te debería de dejar poner este nombre de variable de entrada ya que no hay forma de usarla, o bien debería de ocultar a la variable real id en este ámbito y usar el parámetro de entrada.

prueba con esto y verás que compila

function sacarfaction(guerrero id1)

begin

return id1.faction;

end

Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Yawin

#38
vale, por fin, ya no me da errores de compilación.
A ver si consigo acabar eso.

edit:
Ahora, lo que ocurre, es que el guerrero tiene este código:
Estoy comprobando que, efectivamente, el obj del puntero!=-1. Pero aun asi, la nave no se pone en estado=2.

Tambien he comprobado que "guerrero" ve bien el valor.


Vale, nada. Soy tonto del culo xD Me lo estaba cojiendo bien.
p.d.: Siento estar tan plasta ^__^
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

Yawin

#39
Bueno, yo sigo aquí, con mis problemas.

Esta vez, estoy haciendo una especie de bd de edificios. La idea es crear una array global de una estructura determinada. Esta:
struct edif[2]
string nombre;
int vida;
int graf;
int tipo;
int producs[2];
int tmppr;
int limitp;
end


Bien, el edificio es este (con su menú desplegable):
process edificio(int prodn,x,y,int fact)
public
int faction;
int menu,i;
bool mein=false;
bool activ=false;
end
private
cola colprod;

int limcol;
int tmprod;

end
begin
faction=fact;
limcol=edif[prodn].limitp;
tmprod=edif[prodn].tmppr;
file=fpgs[faction];
graph=edif[prodn].graf;
size=50;
ctype=C_SCROLL;
if(faction==faction_jug)
colprod=cola(limcol);
end

loop
if(collision(type puntero))
if(mouse.right && faction==faction_jug && activ!=false)
while(mouse.right)
frame;
end
menu=mdepl(prodn);
mein=true;
end
if(mouse.left && faction==faction_jug)
activ=true;
end
else
if(mouse.left && faction==faction_jug)
activ=false;
mein=false;
end
end

if(activ==true && auxiliared.tipo!=0)
for(i=0;i<limcol;i++)
if(colprod.producto[i].oc!=true)
colprod.producto[i].tipo=auxiliared.tipo;
colprod.producto[i].prod=auxiliared.prod;
colprod.producto[i].xp=x+20;
colprod.producto[i].yp=y;
colprod.producto[i].tmpP=tmprod;
colprod.producto[i].oc=true;
break;
end
end
auxiliared.tipo=0;
auxiliared.prod=0;
end
frame;
end
end


function mdepl(int ed)
private
int i,prods[10],tipo;
string cosas[10];
end
begin
x=ppunt.x;
y=ppunt.y;

tipo=edif[ed].tipo;
for(i=0;i<10;i++)
if(edif[ed].producs[i]!=-1)
cosas[i]=guer[edif[ed].producs[i]].nombre;
prods[i]=edif[ed].producs[i];
else
cosas[i]=-1;
end
end

for(i=0;i<10;i++)
if(cosas[i]!=-1)
casilla(x,y,cosas[i],prods[i],int tipo);
y+=25;
end
end
end

process casilla(x,y,string escribir,int prod,int tipo)
begin
file=fpgs[0];
graph=5;
size_x=50;
size_y=95;

write_var(0,x,y,1,escribir);
loop
if(collision(type puntero))
graph=6;
else
graph=5;
end
if(mouse.left)
if(graph==6)
auxiliared.prod=prod;
auxiliared.tipo=tipo;
end
break;
end
if(mouse.right)
break;
end
frame;
end
delete_text(0);
end


Al compilar, me sale esto:
QuoteBGDC 1.0.0 (Nov 21 2010 18:03:52)
Copyright � 2006-2010 SplinterGU (Fenix/BennuGD)
Copyright � 2002-2006 Fenix Team (Fenix)
Copyright � 1999-2002 Jos� Luis Cebri�n Pag�e (Fenix)
Bennu Game Development comes with ABSOLUTELY NO WARRANTY;
see COPYING for details

/home/yawin/Escritorio/Age of Yawin/librender:0: warning: Variable redeclared ("ALPHA_STEPS")
/home/yawin/Escritorio/Age of Yawin/libscroll:0: warning: Variable redeclared ("CTYPE")
/home/yawin/Escritorio/Age of Yawin/libscroll:0: warning: Variable redeclared ("CNUMBER")
/home/yawin/Escritorio/Age of Yawin/dll/edificios.prg:1: error: Data types not compatible with operation (1)

¿Qué hago mal?
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

DCelso

umn, nose,prueba con esto

process edificio(x,y,int prodn,int fact)
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Yawin

No va. Me estoy empezando a desesperar con estos errores que me salen.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

Drumpi

No recordaba que existiesen datos de tipo bool. Prueba a ponerlos de tipo int o byte, si así deja de fallar es posible que el prblema sea con "activ!=false" (que se podría haber puesto directamente "activ" y listo).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

no lo recordabas porque no existen... si pones bool, el compilador piensa que va a exitir un tipo de proceso bool, por consiguiente lo define como tal.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Noivern

byte es el tipo más pequeño en bennu right?