Buenas. Queria sugerir la inclusion de estas funciones. Serian otra opcion para compensar la existencia de procesos huerfanos ademas de signal(0,señal).Saludos
Son variables locales.
Puedes usar father=get_id(id_proceso); o son=get_id(id_proceso);
Testeado en 0.93a, no lo he mirado en bennu.
[Editado]
En Bennu, igual :)
Si podes cambiar el valor de las variables pero nose como funciona signal. Mira este codigo:
Con la "p" cambias el padre del ultimo cuadrado.. con la k matas el arbol de procesos a partir del segnudo.
[code language="bennu"]Program DataBase;
private
Paused;
proc;
end
begin
set_fps(24,1);
set_mode(640,480,16);
pr1();
repeat
if(exists(type pr2) && key(_k))
signal(type pr2,s_kill_tree);
end
frame;
until(key(_esc))
let_me_alone();
end
process pr1();
begin
x = 100;
y = 200;
graph = new_map(64,64,16);
map_clear(file,graph,rgb(255,255,255));
pr2();
loop
frame;
end
end
process pr2();
begin
graph = new_map(64,64,16);
map_clear(file,graph,rgb(204,255,255));
pr3();
loop
x = father.x+50;
y = father.y+50;
frame;
end
end
process pr3();
begin
graph = new_map(64,64,16);
map_clear(file,graph,rgb(153,255,255));
loop
if(key(_p));
father = father.father;
break;
end
x = father.x+100;
y = father.y+100;
frame;
end
loop
x = father.x+100;
y = father.y+100;
frame;
end
end[/code]
No digo que no se pueda hacer con variables (la verdad no lo se).. pero evidentemente hay que cambiar algo mas que que el valor de father, por eso seria comoda una funcion.Saludos
Ya veo... Me supongo que los árboles de procesos estarán por otro lado y no funcionan cambiando father y son.
Na, a ver si pasa Splinter por aquí y le da luz al asunto :)
yo sugiero no hacer eso, ya que es de uso interno... se supone que son de lectura... pero si insisten en querer tocarlos... no solo estan los padres, tambien estan los hermanos menores y mayores... resumiendo...
1) actualizar "father"...
2) actualizar "son" en "father" nuevo... (si corresponde)
3) actualizar "bigbro" y "smallbro"... (segun corresponda)
4) actualizar "bigbro" y/o "smalbro" en el "smallbro" y/o "bigbro" (segun corresponda) de mi anterior "father"
5) actualizar "father" en todos mis hermanos (mayores y menores)
6) actualizar "bigbro" y/o "smallbro" en el mas joven y en el mas viejo de mis hermanos (si corresponde)
esto era lo que se hacia antes... e imagino que se daran cuenta porque se elimino...
En una de esas comienzo a hacer una funcion asi.. ¿se puede acceder de alguna forma a las variables locales o globales de bennu desde una dll?(sin pasar como parametro un puntero por cada variable)
a que te referis?
La verdad es que no se practicamente nada acerca de la programacion de dlls. ¿Hay alguna forma de pasar como parametro a una funcion de una dll el id un proceso y solo con eso acceder a sus variables locales?
¿son accesibles las variables globales declaradas en bennu desde una dll?
claro que si, cada funcion de dll, tiene 2 parametros default...
1) puntero a la estructura de instancia del proceso llamador... INSTANCE *
2) un array de enteros con los parametros pasados a la funcion
Si, claro que se pueden acceder a las variables globales y a las locales, no se puede a las privadas, ni a las publicas... (o si se puede, pero no es recomendable, y no se da facilidades para su acceso, ya que se supone no es seguro...)
busca en la seccion de documentacion como hacer dlls, hay unos pequeños cambios al sistema actual (final) pero la base esta perfectamente descripta, luego lo demas son cosas muy simples de tocar...
Gracias. Dejo el codigo de adopt_tree por si a alguien le sirve.. voy a ver si lo puedo convertir en dll.
[code language="bennu"]function adopt_tree(dad,child)
begin
if(child.father)
if(child.smallbro && child.bigbro)
child.bigbro.smallbro = child.smallbro;
child.smallbro.bigbro = child.bigbro;
elseif(child.smallbro)
child.smallbro.bigbro = 0;
elseif(child.bigbro)
child.bigbro.smallbro = 0;
else
child.father.son = 0;
end
end
child.father = dad;
child.smallbro = 0;
child.bigbro = dad.son;
dad.son = child;
child.bigbro.smallbro = child;
end[/code]
no se si te falta algo, pero tene en cuenta que esta funcion la tenes que llamar por cada uno de los hijos huerfanos...
La idea de la funcion es adoptar el arbol. Edito el nombre..