Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: MaanuRP en Julio 23, 2011, 03:34:17 AM

Título: [Solucionado] Crear mas de una "tabla de highscore" para distintos puntajes.
Publicado por: MaanuRP en Julio 23, 2011, 03:34:17 AM
Hola!

Bueno mi duda es esta. Ya intente varias cosas y ninguna me funciono :/

El tema es asi:

Tengo un juego con 4 dificultades (Facil, Normal-Facil, Normal-Dificil,Dificil) y como es un juego de puzzle (Creo que se puede categorizar asi) necesito que el score se guarde en 4 distintas tablas para que cuando uno juegue en facil, no se pongan los puntajes con los de cuando jugo en dificil.

Un ejemplo: En el buscamina de Windows, depende la dificultad que elejas, es en la tabla que van a poner tu puntaje (Tiempo en este caso).

Lo que yo quiero es eso, no importa si es la tabla highscore predeterminada del GameMaker (Pero de ser asi, seria mejor, creo yo). Asi que de cualquier forma que lo sepan hacer, me ayudan!

Desde ya, muchisimas gracias!

Saludos!
Título: Re: Crear mas de una "tabla de highscore" para distintos puntajes.
Publicado por: Gabriel Moreno en Julio 23, 2011, 07:50:11 AM
http://www.comunidadgm.org/manual_GM/Tablas_de_records_htm.htm

YoPondria algo asi

nivel="dificultad"


highscore_add(nivel,"puntaje")


y nose esto :S


highscore_value(place) Devuelve el puntaje de la persona en el lugar PLACE(1-10). Esto puede ser usado para dibujar tu propia lista de puntajes.
Título: Re: Crear mas de una "tabla de highscore" para distintos puntajes.
Publicado por: MaanuRP en Julio 23, 2011, 08:32:50 AM
Pero ahi no puedo poner el nombre del jugador.

Hay alguna forma para que el jugador pueda poner su nombre pero que al final el juego agregue: " - Dificultad"

Cosa que si pongo MaanuRP y jugue en dificl salga: MaanuRP - Dificil




Pero no hay forma para hacerlo con diferentes tablas de highscore?
Título: Re: Crear mas de una "tabla de highscore" para distintos puntajes.
Publicado por: MaanuRP en Julio 23, 2011, 09:14:09 AM
Mi duda seria: Como hago para que me escriba o me dibuje (Draw) una variable y un string seguidos, por ejemplo:

draw_text(0,0,get_string(Palabra,"") && variable)

Pero si lo pones asi, te tira error en &&, como se puede arreglar esto para que funcione? Creo que se entiende lo que quiero hacer.
Título: Re: Crear mas de una "tabla de highscore" para distintos puntajes.
Publicado por: Daz en Julio 23, 2011, 03:30:01 PM
draw_text(0,0,get_string(Palabra,"")+""+variable);
Título: Re: Crear mas de una "tabla de highscore" para distintos puntajes.
Publicado por: MaanuRP en Julio 23, 2011, 06:10:50 PM
Cita de: Daz en Julio 23, 2011, 03:30:01 PM
draw_text(0,0,get_string(Palabra,"")+""+variable);

No Daz, eso no funciona:
Primero hay que ponerle comillas a "Palabra" en el get_string. Y despues de poner eso, te tira este error:

Wrong type of arguments to +.


Igual esto no soluciona mi problema, porque seguiria siendo una sola tabla de highscore, lo que yo necesito es que haya 1 tabla por cada dificultad.
Título: Re: Crear mas de una "tabla de highscore" para distintos puntajes.
Publicado por: Gabriel Moreno en Julio 23, 2011, 06:53:50 PM
scr_Leervar file, ini, section, i;

file    = argument0
section = argument1

score_count   = 10
default_name  = "nombrexd"
default_value = 0

if file_exists(file)
{
    ini_open(file)
    for(i=0;i<score_count;i+=1)
    {
        name [i] = ini_read_string(section,"name"+string(i),default_name)
        value[i] = ini_read_real(section,"val" +string(i),default_value)
    }
    ini_close()
}
else
{
   
    for(i=0;i<score_count;i+=1)
    {
        name [i] = default_name
        value[i] = default_value
    }
}


scr_escrivirvar i;
ini_open(argument0)
for(i=0;i<10;i+=1)
{
    ini_write_string(string(list_id),"name"+string(i),name[i])
    ini_write_real(string(list_id),"val" +string(i),value[i])
}
ini_close()


obj_tablapuntaje
Draw
draw_set_color(c_blue)
draw_rectangle(0,0,room_width,room_height,0)

draw_set_color(c_black)
draw_rectangle(0,0,room_width,room_height,1)

draw_set_color(c_white)
draw_text(2,0,"Highscore for " + string(list_id))

hs_txt = ""
for(i=0;i<10;i+=1)
{
    hs_txt += name[i] + "   --   " + string(value[i]) + "#"
}

draw_text(2,40,hs_txt)


obj_ex
create

current_list=1

var i;
for(i=0;i<3;i+=1)
{
    lists[i] = instance_create(0,0,high_score)
    lists[i].list_id = i+1;
    with(lists[i]){ read_values("highscore.ini",string(list_id)) }
}
current_list = lists[0]


//SI SELECCIONA FACIL
with(high_score){visible = false}
current_list = lists[0]
//SI SELECCIONA NORMAL
with(high_score){visible = false}
current_list = lists[1]
//DIFICIL
with(high_score){visible = false}
current_list = lists[2]
Título: Re: Crear mas de una "tabla de highscore" para distintos puntajes.
Publicado por: MaanuRP en Julio 23, 2011, 09:19:05 PM
Gracias Gabriel Moreno!
Aplausos para vos :D
Título: Re: Crear mas de una "tabla de highscore" para distintos puntajes.
Publicado por: Zeit en Julio 23, 2011, 11:30:24 PM
Hola, tambien puedes usar arrays:

N -> total de entradas
M -> total de dificultades
nombres[0..N-1] -> string
puntajes[0...N-1] -> real
dificultad[0...N-1] -> 0...M-1

- Dada una dificultad j en 0...M-1
- Para cada i en 0...N-1
- Si dificultad es j
- Agregar nombre y puntaje[j] a la lista de puntajes
- Dibujar la tabla de puntajes

Saludos.
Título: Re: Crear mas de una "tabla de highscore" para distintos puntajes.
Publicado por: MaanuRP en Julio 23, 2011, 11:34:19 PM
Cita de: Zeit en Julio 23, 2011, 11:30:24 PM
Hola, tambien puedes usar arrays:

N -> total de entradas
M -> total de dificultades
nombres[0..N-1] -> string
puntajes[0...N-1] -> real
dificultad[0...N-1] -> 0...M-1

- Dada una dificultad j en 0...M-1
- Para cada i en 0...N-1
- Si dificultad es j
- Agregar nombre y puntaje[j] a la lista de puntajes
- Dibujar la tabla de puntajes

Saludos.

Todavia no manejo bien los arrays, lo podrias explicar un poco mejor?
Título: Re: Crear mas de una "tabla de highscore" para distintos puntajes.
Publicado por: Metal Mario en Julio 24, 2011, 07:41:52 PM
Cita de: Gabriel Moreno en Julio 23, 2011, 06:53:50 PM
scr_Leervar file, ini, section, i;

file    = argument0
section = argument1

score_count   = 10
default_name  = "nombrexd"
default_value = 0

if file_exists(file)
{
    ini_open(file)
    for(i=0;i<score_count;i+=1)
    {
        name [i] = ini_read_string(section,"name"+string(i),default_name)
        value[i] = ini_read_real(section,"val" +string(i),default_value)
    }
    ini_close()
}
else
{
   
    for(i=0;i<score_count;i+=1)
    {
        name [i] = default_name
        value[i] = default_value
    }
}


scr_escrivirvar i;
ini_open(argument0)
for(i=0;i<10;i+=1)
{
    ini_write_string(string(list_id),"name"+string(i),name[i])
    ini_write_real(string(list_id),"val" +string(i),value[i])
}
ini_close()


obj_tablapuntaje
Draw
draw_set_color(c_blue)
draw_rectangle(0,0,room_width,room_height,0)

draw_set_color(c_black)
draw_rectangle(0,0,room_width,room_height,1)

draw_set_color(c_white)
draw_text(2,0,"Highscore for " + string(list_id))

hs_txt = ""
for(i=0;i<10;i+=1)
{
    hs_txt += name[i] + "   --   " + string(value[i]) + "#"
}

draw_text(2,40,hs_txt)


obj_ex
create

current_list=1

var i;
for(i=0;i<3;i+=1)
{
    lists[i] = instance_create(0,0,high_score)
    lists[i].list_id = i+1;
    with(lists[i]){ read_values("highscore.ini",string(list_id)) }
}
current_list = lists[0]


//SI SELECCIONA FACIL
with(high_score){visible = false}
current_list = lists[0]
//SI SELECCIONA NORMAL
with(high_score){visible = false}
current_list = lists[1]
//DIFICIL
with(high_score){visible = false}
current_list = lists[2]

Puedo usar este tambi?n??? Te dar? credito. Lo usar? para un juego en el que estoy trabajando, claro si tu me permites usar este codigo.
Saludos. :D
Título: Re: Crear mas de una "tabla de highscore" para distintos puntajes.
Publicado por: Gabriel Moreno en Julio 24, 2011, 11:19:26 PM
;) No Eiste Necesidad De Creditos ;)
Título: Re:[Solucionado] Crear mas de una "tabla de highscore" para distintos puntajes.
Publicado por: Cerez0 en Abril 01, 2014, 08:55:09 PM
Hola ya se que el tema es antiguo.. pero aver si me podeis ayudar porque tengo el mismo problema y nose muy bien como va el codigo que abeis puesto.

yo en principio tenia 1 nivel con una puntuacion y hasta hay todo bien.. pero luego desarrollando mas el juego e querido implementar mas niveles con mas dificultad y quiero poner el mejor record de cada uno de los niveles en tu correspondiente
room de record ejemplo record de el nivel 1 que salga en la room_record del nivel 1 y asi con los 3 niveles que tengo..

e intentado hacer varias cosas con lo que ya tenia del nivel 1 que me funciona perfectamente pero por mas que intento me  salen el record del nivel 1 este donde este o no coge la mayor puntuacion del nivel.. vamos que por mas que cambio cosas y intento hacer cada 1 por separado no puedo

gracias y un saludo!
Título: Re:[Solucionado] Crear mas de una "tabla de highscore" para distintos puntajes.
Publicado por: ivn_eze en Abril 01, 2014, 09:03:16 PM
busca informacion sobre archivos ini.
Título: Re:[Solucionado] Crear mas de una "tabla de highscore" para distintos puntajes.
Publicado por: Cerez0 en Abril 01, 2014, 09:27:21 PM
Cita de: ivn_eze en Abril 01, 2014, 09:03:16 PM
busca informacion sobre archivos ini.

Gracias.. pero creo que explicandome un poco el codigo de arriba tendria suficiente con decirme que es obj_ex y suponiendo que escribir es guardar y leer cargar.

Un saludo
Título: Re:[Solucionado] Crear mas de una "tabla de highscore" para distintos puntajes.
Publicado por: ivn_eze en Abril 01, 2014, 11:08:04 PM
es un tema muy viejo que fue echo para gm8.1 y vos tenes el studio.
hay cientos de cosas que cambiaron.
te recomiendo que abras un nuevo tema sobre esto pero en base a studio.