Septiembre 10, 2010, 11:46:56 PM Ultima modificación: Septiembre 15, 2010, 02:05:16 AM por wako91
Buenas, como puedo organizar el comportamiento de un personaje de un juego de gesti?n? (un ciudadano)

Hab?a pensado en un Step donde esta preestablecida su rutina que va llamando a distintas acciones.

Ej. trabajar=1 (tiempo X) trabajar=0; domir=1 (tiempoX) dormir=0 ...

?Alg?n consejo?

C?mo podr?a asignar a cada ciudadano generado por el juego un hogar distinto?

podrias usar alarmas
por ejemplo:
en el objeto pers, en el evento create pon:
hora=0
alarm[0]=1


en el evento alarm[0]:
if hora=11
hora=0
else
hora+=1
alarm[0]=60*room_speed

esto lo que hace es que la alarma se llame a si misma cada minuto y le vaya sumando 1 a la variable tiempo, y se reinicia al llegar a la hora 12

en evento step:

if hora=6//despierta
{
<codigo>
}
else if hora=8//trabajar
{
<codigo>
}
else if hora=12//descansar
{
<codigo>
}
else if hora=13//trabajar
{
<codigo>
}
else if hora=16//ir a casa
{
<codigo>
}
else if hora=22//dormir
{
<codigo>
}

en si aqui es donde se determina que debe hacer pers segun la hora
es bastante basico pero espero que te sirva, suerte :)

Eso es lo que he he hecho aunque sin alarma, se la a?adir? a ver que tal.

?Y a lo de asignar una casa (o un trabajo) a un ciudadano sin uno de ellos?

He conseguido que buscaran casa. Se encuentran buscando y cuando est?n cerca de una "entran" pero inmediatamente aparecen en una casa com?n (la primera que coloco supongo) en vez de la que han tocado. A parte esta el tema de como hacer que aparezca como ocupada.? En fin que l?o! xDD

hola, bueno yo primero buscaria sprites RPG, peque?os o charsets, debes hacer el mismo mecanismo que los fantasmitas de pacman o el juego "Treasure" que aparece en GM, es decir, que depende la direccion que vaya cambia su sprite..voy a ver si te hago un ejemplo...

Lo mas dif?cil es que esa ser? SU casa por lo que el ciudadano deber? "memorizarla". Si no logro hacer funcionar este sistema optar? por otro pero espero poder conseguirlo.

pues guarda la id de esta casa en una variable que inicialmente est? en false.
As?, si la variable casa=false empieza a buscar una casa hasta que la encuentra, y la id de esa casa se deposita en la variable casa del habitante... y pues supongo que poniendo una variable m?s en la casa que indique si est? ocupada o disponible se arregla de que solo escogan una casa desocupada. :-[

wako91 creo que puedo ayudarte,
en el room donde esten las casas, manten pulsao CONTROL y en haz click derecho en cada objeto casa, y le das a "create code" o algo asi, entonces te sale para escribir codigo. Asi las numeras, en ese codigo pones "casa=1" y en la siguiente "casa=2"

Luego, el ciudadano ha de tener una variable "micasa=1" y al elegir casa (supongo que al chocar con ella) pones micasa=other.casa y asi se le asigna la casa numerada

Es una idea mira ver si te sirve

Si claro cualquier aportaci?n sirve lo que pasa que las casas no est?n en ninguna room, existe un men? en el que el jugador selecciona el edificio a colocar. ?Se puede hacer de todas formas?

En estos momentos te estoy haciendo un engine o ejemplo de lo que quieres, claro, debes esperar un poco porque, ahora colocaste:

Cita de: wako91 en Septiembre 11, 2010, 08:18:49 PM
las casas no est?n en ninguna room, existe un men? en el que el jugador selecciona el edificio a colocar. ?Se puede hacer de todas formas?

se paciente, estoy trabajando en eso...

Hac? lo que dijo Knd.
Código (Create de Casa) [Seleccionar]
ocupada=false;
Código (Create de Persona) [Seleccionar]
casa=noone;
Código (Colisi?n Persona con Casa) [Seleccionar]
if(casa==noone && !other.ocupada){
    casa=other.id;
    other.ocupada=true;
}

En el objeto persona vas a tener la variable casa, la cual si es noone significa que la persona no tiene casa, de lo contrario pod?s acceder a las variables de su casa (tales como x e y) as?: casa.variable.
Por ejemplo, para hacer que el ciudadano vaya a su casa:
if(casa!=noone){ // Si es que tiene una casa...
    move_towards_point(casa.x,casa.y,3); // Se mueve en direcci?n a ella a una velocidad de 3.
}


Es lo mismo que dijo sbs pero mejor y m?s f?cil.
Vim.

??ooopa muchas gracias!!


Por curiosidad, una pregunta: ?En Argentina gramaticalmente es correcto escribir hac? o solo es una manera de escribirlo fon?ticamente? como escribir "x" = "por" o "porke" = "porque" y esas cosas.

De nada :).

Decir "hac?" es 100% correcto en Argentina y en cualquier lado: http://buscon.rae.es/draeI/SrvltConsulta?TIPO_BUS=3&LEMA=hacer
En Uruguay tambi?n se dice as? (yo soy uruguayo).
Vim.

#12 Septiembre 13, 2010, 03:26:20 PM Ultima modificación: Septiembre 13, 2010, 04:59:32 PM por wako91
si si ya lo se xD pero no me has entendido, me refer?a a si escribirlo as? "hac?" en vez de "hacer" se consideraba correcto. Y perdona cre?a que "hac?" escrito as? era cosa de argentinos :P

Es que lo he visto muchas veces y tenia curiosidad por preguntarlo.

Pero bueno que no me quiero desviar del tema... Y para buscar el objeto m?s pr?ximo? y decirse por uno (si hay 2 o mas)

Porque arriba casa hace referencia a una variable no? no a un objeto llamado "casa"

S?, hab?a entendido bien y s?, se considera correcto como dije y en la p?gina que puse se puede comprobar haciendo click en conjugar (http://buscon.rae.es/draeI/SrvltGUIVerbos?origen=RAE&IDVERBO=6909).

Ac? est? el c?digo completo que ir?a en Step:
Código (Step) [Seleccionar]
if(casa!=noone){ // Si es que tiene una casa...
   move_towards_point(casa.x,casa.y,3); // Se mueve en direcci?n a ella a una velocidad de 3.
}else{ // Si NO tiene casa...
   with(objCasa){ // Desactivamos todas las casas ocupadas
       if(ocupada){
           instance_deactivate_object(id);
       }
   }
   if(!instance_exists(objCasa)){ // Si no hay casas desocupadas...
       // Hacemos algo.
   }else{ // Si las hay...
       var c;
       c=instance_nearest(x,y,objCasa);
       move_towards_object(c.x,c.y,3); // Nos movemos a la que quede m?s cercana a una velocidad de 3
   }
   instance_activate_all(); // Y posteriormente volvemos a activar todas las casas
}

Ten?s que reemplazar los objCasa por el nombre del objeto casa.
Vim.

?opa eso no lo vi! :P bueno gracias por el c?digo!!