buenos dias chicos, e visto muuuuucho esto por aqui, pero nadie consigue resolverlo o si es asi yo no lo e visto,
es relacionado a que seguen selecciones un jugador te aparedca uno u otro en el juego, lo unico que e conseguido ver esque dicen que crees varias room,
y que en cada una pongas un player diferente... para mi eso no serviria.. pues voi a querer acer mi juego online, y si ago eso... en una room solo me aparecera
los magos en otra los guerreros etc etc...
se me a ocurrido hacer esto:
crear una variable global llamada: global.player=0 (por ejemplo campesino)
luego por ejemplo si selecciono ser mago.... pues que fuera... global.player=1... guerrero global.player=2 etc etc...
despues por ejemplo para cuando se mueva.. seria algo...
global.player
case 0 = draw_sprite(blablabla sprite del player0)
case 1 = draw_sprite( blablabla sprite del player1)
y asi con las diferentes cosas que podrian variar con los diferentes players...
esta bien o mi idea esta totalmente equivocada?
tengo un obj_player creado... con los sprites un ataque basico que aun tengo que pulir etc.. etc.. menciono todo esto porque quiero
que mis enemigo me ataquen elija el aspecto que elija... i no tener que crear ciento y la madre de codigos...
cada raza(mago etc.. etc..) tiene sus caracteristicas, mas ataque etc.. por eso lo de cambiar de sprite no me serviria...
y por poner un ejemplo... mi enemigo("obj_abeja") tiene esto para que me ataque:

if ataque=0
{
global.vida-=1
instance_create(obj_player.x,obj_player.y,obj_ataquebasico)
ataque=1;
    {alarm[0]=20;}
}

hay podeis ver a lo que me refiero... crea la animacion del ataque en el obj_player, si eligiera otro personaje ya me daria error.
y una duda que tengo... es..  si hago mi juego online... la variable global"global.vida" solo me afectara al player que controlo?
o a todos los jugadores que esten jugando? esque no quiero que me ataque un enemigo, y que otra persona pierda vida...
espero averme esplicado bien y que me podais ayudar, gracias chicos!
El limite lo pone nuestra imaginacion

Yo lo he hecho pero no dare el secreto... juaaajaja. Nah es broma.-

Mira en vez de colocar el player en el room creas y colocas una instancia de un object  que se llame player1.
En el event create de ese object habra el siguiente codigo.

instance_create(x,y,global.selecc1);
instance_destroy();
//osea crea la instancia del jugador segun lo almacenado en la variable global global.selecc1 y luego se destruye el creador por que ya no hace falta.


ahora en el room de seleccion del jugador creas un simple codigo.
event create del object que crearas para este menu de seleccion.-
global.selecc1=0;
seleccion1=0;
//te lo pondre de un player escogiendo ya que para el player 2 es casi lo mismo.

ahora event key presed left (suponiendo es el teclado para seleccionar o pones el tuyo)
if (seleccion1 > 0) then {seleccion1 -=1;}
//para restar a la variable.

ahora event pressed Right (es una referencia cambialo por lo que usas tu)
if (seleccion1 < (aqui va el maximo de personajes a seleccionar si son 12 colocas 11 por que recuerda que el 0 se cuenta)) then {seleccion1 +=1;}
//para sumar a la variable

Ahora event Enter (o el boton que usas para ya escoger al personaje)
switch(seleccion1)
{
case 0: global.selecc1 == obj_montruo; break;
case 1: global.selecc1 == obj_Asesino; break;
case 2: global.selecc1 == obj_Policia; break;
//y sigues asi hasta completar todos los personajes
}

//ya con esto se selecciono al personaje, para aspecto grafico y estetico haces algo parecido en el event draw

Event draw
switch(seleccion1)
{
case 0: draw_sprite(x,y, spr_montruo) break;
case 1: draw_sprite(x,y, spr__Asesino); break;
case 2: draw_sprite(x,y, spr__Policia); break;
//y sigues asi hasta completar todos los personajes
}

no te doy coordenadas x,y por que eso es tu rollo segun tu ubicaciones.

aaaaaaaaa vale!! entonces hago esto...
creo el obj_player con el evento create y ese codigo....
porque despues ira todo en el evento de la seleccion del personaje.... y para atacar etc etc.. hago que lo enemigo ataque al obj:player que contiene el evento create no?
El limite lo pone nuestra imaginacion

gracias!! jejeje e echo lo siguiente:

crear un: objeto llamado (player1)
evento create:
instance_create(234,243,global.selecc1);
instance_destroy();

crear: objeto llamado (controlador)
evento create:
global.selecc1=0;
seleccion1=0;

Draw gui:
switch(seleccion1)
{
case 0: draw_sprite(sprite315,seleccion1,100,100,);break; //el sprite "315" es una secuencia de imagenes, con los 4 players (4 asesinos hombre y mujeres) este se
va cambiando y dejando en un color mas oscuro a los que NO estan seleccionados.
case 1: draw_sprite(sprite315,seleccion1,100,100,); break;
case 2: draw_sprite(sprite315,seleccion1,100,100,); break;
case 3: draw_sprite(sprite315,seleccion1,100,100,); break;
}

key pres enter:
switch(seleccion1)
{
case 0: global.selecc1 = pmago; break;                  //no e usado los sprite de los asesinos, pues simplemente era para probar.
case 1: global.selecc1 = obj_player; break;
case 2: global.selecc1 = ppaladin; break;
case 3: global.selecc1 = passasin; break;
}

[roms] diferent room (nivel1)

press left:
if (seleccion1 > 0) then {seleccion1 -=1;}

press right:
if (seleccion1 < 3) then {seleccion1 +=1;}


y ahora te comento un poquito las dudas o lo que me sucede, pues te comento...
consigo acceder con el personaje que quiero  justo donde lo quiero pero... no me aparece su vida ni su mana ni nada, como si no lo hubiera puesto.
lo tenia antes en un objeto yamado "obj_estadisticas" y pense que podria ser porque no estaba en el player, asique pase ese code a los player, pero
sigue sin aparecerme, que debo hacer? poner las variables globales, vida etc etc todo al "player1" que contiene el evento create con el global.seleccion1?
lo pregunto porque los enemigos no se si me atacaran o no,  esque tengo varias room, y la camara tampoco me sigue al player, esa es mi gran duda, porque nose
si tengo que acer que ataquen al player"vacio" con el global.seleccion1 o como...
perdona si me lio solo, y gracias de nuevo
El limite lo pone nuestra imaginacion

yo ise un tema tambien en el que creaba un objeto y lo ponia en todas las room, y en el menu podias elegir ente 3 personajes y este objeto que habia creado transformaba al hacer click en una de las 3 imagenes al personaje que habia creado en todas las room un usuario me ayudo y quedo perfecto, pero no se como ver los temas que yo e echo fijate si vos podes y lo encontras


pero el mio no seria transformarse, seria totalmente diferente, vida atributos ataques etc etc
El limite lo pone nuestra imaginacion

#7 Junio 22, 2014, 11:04:37 AM Ultima modificación: Junio 22, 2014, 11:08:44 AM por elviskelley
Mira si queires guardar estadisticas de un personaje y luego al convocar ese personaje vuelva tal como estaba antes.... Lo mejor es que uses archivo .ini para que todas sus vid se guarden ahi...
Te digo como supongamos que solo quiero guardar el score... Creo dos scripts
scrConfigIni

//si no existe el archivo .ini lo va a crear , pero ya tu deberias haberlo creado.
if !file_exists(data.ini)
{
file_bin_open(data.ini,2);
file_bin_close(data.ini);
}

//abre el ini y escribe los nuevos datos
{
ini_open('data.ini');
ini_write_real('Hiscore','escore',score);
ini_close();
}



Ahora el segundo script.
scrCargarData

//Para cargar las opciones que luego usaría el siguiente código:
//osea carga los datos guardados en el ini
{
ini_open('data.ini');
score = ini_read_real('Hiscore',"escore",escore);
ini_close();
}


Ahora crea un object y en su Event Create

score=0;
escore=0;
//declaro las variables de score

//ahora cargare el valor que tienen en el documento para actualizarlo.
scrCargarData();


En su event step
score+=(1/room_speed);
//puse que se sume score a cada segundo.

/*aqui agregare que se guarde los datos del nuevo score cuando pase de 1000*/
if score > 1000
{scrConfigIni();}
//ESto para que abra el ini si alcanso un hiscore


Event Draw

draw_text(x,y,"Score "+string(":")+string(score))
//Esto es solo para mostrar el score.


No me molesto en explicartelo por que no es la gran cosa, solo realiza este ejemplo fuera de lo que estas creando y asi entiendes de que va y como usarlo.
Te dejo una cita del manual en asuntos de estos osea de lso .ini.
Citarini_open(name) Abre el archivo de INI con el nombre dado ¡El archivo INI se debe almacenar en la misma carpeta que el juego!
ini_close()Cierra el archivo INI actualmente abierto.
ini_read_string(section,key,default) Lee el valor (una cadena de texto) de la llave indicada con key de la sección indicada como section.  Cuando no existe la llave o la sección se devuelve el valor especificado por default.
ini_read_real(section,key,default) Lee el valor real de la llave indicada con key de la sección indicada como section.  Cuando no existe la llave o la sección se devuelve el valor especificado por default.
ini_write_string(section,key,value) Escribe el valor value (una cadena de texto) en la llave indicada con key en la sección indicada con section.
ini_write_real(section,key,value) Escribe el valor real value en la llave indicada con key en la sección indicada con section.
ini_key_exists(section,key) Devuelve si la llave indicada existe en la sección indicada.
ini_section_exists(section) Devuelve si existe la sección indicada.
ini_key_delete(section,key) Elimina la llave indicada de la sección indicada.
ini_section_delete(section) Elimina la sección indicada.