Dúvida: Sistema de Recordes

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Dúvida: Sistema de Recordes

Mensagem por DUDU951 em Sex 04 Jul 2014, 19:13

Olá, eu encontrei um sistema de recordes aqui no fórum, mas eu não consegui entender ele, então resolvi criar o meu próprio sistema.

Porém, ele não está funcionando do jeito que eu queria D:
preciso de ajuda para entender o porquê!

Se o meu sistema estiver muito ruim, eu agradeço se fizer um pra mim!(Ou então que pelo menos dê dicas de como fazer direito)

Info:
Eu devo ter complicado um pouco, feito coisas desnecessários nos códigos, mas foi o jeito que eu consegui para conseguir organizar na minha mente tudo o que eu tava fazendo.
Tem 3 colocações, do recorde 1 ao 3, sendo que o 1 é o maior/melhor
Eu criei variáveis globais e também um arquivo .ini:
ini_open("savegame.ini")
global.recorde_um = ini_read_real("Recordes","Um","ZERO")
global.recorde_dois = ini_read_real("Recordes","Dois","ZERO")
global.recorde_tres = ini_read_real("Recordes","Tres","ZERO")

global._score = 0
e a cada segundo do jogo aumenta 1 (certeza que está funcionando)

obj_GameOver:
Info:
Código:
Este objeto aparece quando o jogo acaba, e dependendo do score, ele atualiza os recordes, atualizando primeiro o terceiro lugar, depois o segundo, e por último o primeiro
Create:(atualiza o terceiro recorde)
Código:
ini_open("savegame.ini")//Abre meu arquivo .ini
if global._score >= global.recorde_um //Caso o score atingido for maior que o recorde 1, primeiramente:
ini_write_real("Recordes","Tres",global.recorde_dois)//O novo valor do recorde 3 é = ao antigo valor do recorde 2)
else if global._score >= global.recorde_dois//Caso o score atingido for maior que o recorde 2, primeiramente:
ini_write_real("Recordes","Tres",global.recorde_dois) //O novo valor do recorde 3 é = ao antigo valor do recorde 2
//Eu sei, foi desnecessário o primeiro código, afinal, se o score for maior que o recorde 2 automaticamente ele é maior que o 1, mas eu fiz mesmo assim para que eu conseguisse organizar o código facilmente na minha mente

else if global._score >= global.recorde_tres//Caso o score atingido seja amior que o recorde 3
ini_write_real("Recordes","Tres",global._score)//O score atingido substitui o antigo valor do recorde 3
ini_close()
Begin Step(atualiza o segundo Recorde)
Código:
  {
    if global._score >= recorde_um//Caso o score atingido for maior que o recorde 1, segundamente:
ini_write_real("Recordes","Dois",global.recorde_um)//O novo valor do recorde 2 = antigo valor do recorde 1
else if global._score >= global.recorde_dois//Caso o score atingido for  maior que o recorde 2, segundamente:
ini_write_real("Recordes","Dois",global._score)}//O score atingido substitui o antigo valor do recorde 2
Step(Atualiza o primeiro Recorde)
Código:
  if global._score >= global.recorde_um//Caso o score atingido for maior que o recorde 1, terceiramente:
    ini_write_real("Recordes","Um",global._score)//O score atingido substitui o antigo valor do recorde 1

End Step
Código:
if global.score >= global.recorde_tres
room_goto(Records)
else
room_goto(Menu)

Os obj_recorde estão na room dos Recordes, e tem a função de mostrar os melhores Scores alcançados:

obj_1recorde:
Create:
Código:
global.recorde_um = ini_read_real("Recordes","Um","ZERO");
global.recorde_dois = ini_read_real("Recordes","Dois","ZERO");
global.recorde_tres = ini_read_real("Recordes","Tres","ZERO");//atualiza os valores do recordes
Draw
Código:
draw_set_font(obj_1recorde)
draw_text(x,y,"Score: "+string(global.recorde_um))

obj_2recorde:
Draw
Código:
draw_set_font(obj_2recorde)
draw_text(x,y,"Score: "+string(global.recorde_dois))

obj_3recorde:
draw_set_font(obj_3recorde)
draw_text(x,y,"Score: "+string(global.recorde_tres))

Problema: Quando o score atingido é maior que o recorde 3, vai para o Room de Recordes como eu queria.Porém, percebi que só o 1 recorde é atualizado, mas os outros recordes nunca saem do 0..
Se eu faço um recorde menor que o 1, mas maior que 0, ele não substitui o recorde 2, ou melhor, não substitui nenhum, não acontece nada!


Última edição por DUDU951 em Ter 08 Jul 2014, 21:43, editado 1 vez(es)

DUDU951

Número de Mensagens : 90
Idade : 16
Data de inscrição : 24/06/2014
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida: Sistema de Recordes

Mensagem por Witen em Sex 04 Jul 2014, 22:12

Muito mal organizado, tantos objetos variáveis desnecessárias, mas vamos la Happy
1- você só precisa de um objeto
2- guarde todos os valores em uma ds_list ou array
3- você abriu varias vezes os arquivo ini mas não o fechou.
4- draw_set_font(obj_1recorde) você esta usando um objeto como fonte kkkkkk organize bem seus projetos, se você fizer um jogo grande verá a bagunça que fica.
5- Não use comentários para explicar coisas simples,ou no caso tudo que fizer, use apenas para te guiar em algo que certamente não lembraria.

Eu vou criar um sistema novo aqui edito e posto aqui, se não de para postar(porque já estou de saida) posto amanhã cedo.

EDIT
Pronto aqui está, qualquer problema ou duvida pode falar Happy
Código:
//-------------------------------carregando dados(Create)-----------------------------//
_List = ds_list_create()
ini_open("savegame.ini")
ds_list_add(_List,ini_read_real("Recordes","P1",0))
ds_list_add(_List,ini_read_real("Recordes","P2",0))
ds_list_add(_List,ini_read_real("Recordes","P3",0))
ini_close()
//------------------------------adicionando pontos(Step)------------------------------//
score+=1;
//Adicionando valor(Antes de salvar o arquivo)---------------------------------------//
for(_Pos=-1;_Pos<=3;_Pos+=1){if score>ds_list_find_value(_List,_Pos){ds_list_insert(_List,_Pos,score)break}}
//Salvando no arquivo(qualquer evento que queira que encadeia a ação, por exemplo fim do jogo)
ini_open("savegame.ini")
ini_write_real("Recordes","P1",ds_list_find_value(_List,0))
ini_write_real("Recordes","P2",ds_list_find_value(_List,1))
ini_write_real("Recordes","P3",ds_list_find_value(_List,2))
ini_close()


Última edição por Witen em Sab 05 Jul 2014, 15:04, editado 1 vez(es)

Witen

Ranking : Sem avaliações
Número de Mensagens : 515
Idade : 17
Data de inscrição : 23/05/2012
Reputação : 36
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.wibix.webs.com

Voltar ao Topo Ir em baixo

Re: Dúvida: Sistema de Recordes

Mensagem por DUDU951 em Sex 04 Jul 2014, 22:48

Muuuito obrigado cara!

Algumas dúvidas:

O que é _list e _pos?

isso de usar objeto como fonte não fui eu que inventei, eu vi alguém fazer e copiei! ushaushauhsua
É só eu tirar essa parte do código do objeto?

DUDU951

Número de Mensagens : 90
Idade : 16
Data de inscrição : 24/06/2014
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida: Sistema de Recordes

Mensagem por Witen em Sab 05 Jul 2014, 10:39

Eu ando com a mania estranha de sair respondendo todas as perguntas que posso e acabo esquecendo de checar se a pessoa conseguiu tirar sua duvida ><"
Todos os meus códigos eu organizo as variáveis com "_" seguido de uma letra maiúscula.
_List é a lista que darda as posições Happy"
_Pos é somente uma variável que pega a posição de quantas vezes o for já foi executado é a mesma variável i que qualquer programador usa mas eu prefiro nomear assim Happy
"isso de usar objeto como fonte não fui eu que inventei, eu vi alguém fazer e copiei! ushaushauhsua"
isso da um erro unexpect miserável por isso e bom nomear objetos com Obj na frente, fontes Fnt, sprites Spt e assim vai, é meio bobo e chato de se fazer mas ajuda muuiiittooo na organização.

Witen

Ranking : Sem avaliações
Número de Mensagens : 515
Idade : 17
Data de inscrição : 23/05/2012
Reputação : 36
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.wibix.webs.com

Voltar ao Topo Ir em baixo

Re: Dúvida: Sistema de Recordes

Mensagem por DUDU951 em Sab 05 Jul 2014, 12:19

Mas espera aí, esse código grava 3 recordes totalmente "independentes" um do outro?

Por que eu queria fazer como um ranking, sendo o recorde um o maior, e o tres o menor, de forma que caso o recorde um fosse ultrapassado, os recordes 2 e 3 também fossem atualizados.

DUDU951

Número de Mensagens : 90
Idade : 16
Data de inscrição : 24/06/2014
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida: Sistema de Recordes

Mensagem por Witen em Sab 05 Jul 2014, 13:42

DUDU951 escreveu:Mas espera aí, esse código grava 3 recordes totalmente "independentes" um do outro?

Por que eu queria fazer como um ranking, sendo o recorde um o maior, e o tres o menor, de forma que caso o recorde um fosse ultrapassado, os recordes 2 e 3 também fossem atualizados.
Não entendi o que quis dizer com: 3 recordes totalmente "independentes". ele abre os 3 recordes salva em uma lista, a condição for checa se o score e maior do que a pontuação do primeiro, se for maior é adicionado o novo score naquela posição, se não for ela vai checar a 2 e a 3°.

Witen

Ranking : Sem avaliações
Número de Mensagens : 515
Idade : 17
Data de inscrição : 23/05/2012
Reputação : 36
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.wibix.webs.com

Voltar ao Topo Ir em baixo

Re: Dúvida: Sistema de Recordes

Mensagem por DUDU951 em Sab 05 Jul 2014, 14:17

Witen escreveu:
DUDU951 escreveu:Mas espera aí, esse código grava 3 recordes totalmente "independentes" um do outro?

Por que eu queria fazer como um ranking, sendo o recorde um o maior, e o tres o menor, de forma que caso o recorde um fosse ultrapassado, os recordes 2 e 3 também fossem atualizados.
Não entendi o que quis dizer com: 3 recordes totalmente "independentes". ele abre os 3 recordes salva em uma lista, a condição for checa se o score e maior do que a pontuação do primeiro, se for maior é adicionado o novo score naquela posição, se não for ela vai checar a 2 e a 3°.

Eu quero que seja como um ranking.

Se os recordes estiverem assim por exemplo: 1¹ = 10 // 2² = 5 // 3³ = 2
Caso uma pessoa fique com o score = 15

Eu quero que fique assim: 1¹ = 15 // 2² = 10 // 3³ = 5

E não assim: 1¹ = 15 // 2² = 5 // 3³ = 2

DUDU951

Número de Mensagens : 90
Idade : 16
Data de inscrição : 24/06/2014
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida: Sistema de Recordes

Mensagem por Witen em Sab 05 Jul 2014, 15:02

DUDU951 escreveu:
Eu quero que seja como um ranking.
Se os recordes estiverem assim por exemplo: 1¹ = 10  //   2² = 5   // 3³ = 2
Caso uma pessoa fique com o score = 15
Eu quero que fique assim: 1¹ = 15  //   2² = 10   // 3³ = 5
E não assim: 1¹ = 15  //   2² = 5   // 3³ = 2
A amigo foi mau eu errei em uma parte do script, porque achei que o primeiro valor era na posição 1, mas não é na 0. O que acontece
Código:
valor1,valor2,valor3
quando insiro um valor todos os outros valores depois deles se deslocam uma posição quando adicionava um novo valor na posição 1
Código:
valor1,Novo_valor,valor2,valor3
é isso que estava acontecendo vou da um edit la no code. Happy

Witen

Ranking : Sem avaliações
Número de Mensagens : 515
Idade : 17
Data de inscrição : 23/05/2012
Reputação : 36
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.wibix.webs.com

Voltar ao Topo Ir em baixo

Re: Dúvida: Sistema de Recordes

Mensagem por DUDU951 em Sab 05 Jul 2014, 18:12

############################################################################################
FATAL ERROR in
action number 1
of Create Event
for object obj_GameOver:

Push :: Execution Error - Variable Get -1._List(100009, -1)
at gml_Object_obj_Recorde_Over_Create_0 (line 5) - for(_Pos=-1;_Pos<=3;_Pos+=1){if global.score>ds_list_find_value(_List,_Pos){ds_list_insert(_List,_Pos,global.score)break}}
############################################################################################

:

DUDU951

Número de Mensagens : 90
Idade : 16
Data de inscrição : 24/06/2014
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida: Sistema de Recordes

Mensagem por Witen em Sab 05 Jul 2014, 19:29

DUDU951 escreveu:############################################################################################
FATAL ERROR in
action number 1
of Create Event
for object obj_GameOver:

Push :: Execution Error - Variable Get -1._List(100009, -1)
at gml_Object_obj_Recorde_Over_Create_0 (line 5) - for(_Pos=-1;_Pos<=3;_Pos+=1){if global.score>ds_list_find_value(_List,_Pos){ds_list_insert(_List,_Pos,global.score)break}}
############################################################################################

:
Ainda expliquei aonde por cada parte do código a parte de carregar arquivos e criar a lista fica em primeiro junto com a criação do objeto. Não da para modificar algo que ainda não foi criado. Você não pode modificar uma variável local em outro objeto porque ela é só daquele objeto, somente daquele lugar. apenas variáveis globais podem ser modificadas em qualquer lugar, ate mesmo em um code de uma room, existe um modo de modificar variáveis locais mas antes e preciso declarar o id do objeto em que ela esta com with(id) ou id.variavel_qualquer.
Sé não entendeu pergunte de novo, se não entendeu bulhufas me adiciona no face que eu te explico Witened.

Witen

Ranking : Sem avaliações
Número de Mensagens : 515
Idade : 17
Data de inscrição : 23/05/2012
Reputação : 36
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.wibix.webs.com

Voltar ao Topo Ir em baixo

Re: Dúvida: Sistema de Recordes

Mensagem por DUDU951 em Sab 05 Jul 2014, 20:21

Não está mais dando erros, mas na room dos Recordes sempre só aparece "Score: 0"

Códigos:
obj_TMP (é criado logo que o jogo começa)
Create
Código:
global.score=0
alarm[0] = room_speed;

ini_open("savegame.ini")
global._List = ds_list_create()
ds_list_add(global._List,ini_read_real("Recordes","Um","ZERO"))
ds_list_add(global._List,ini_read_real("Recordes","Dois","ZERO"))
ds_list_add(global._List,ini_read_real("Recordes","Tres","ZERO"))

for(global._Pos=-1;global._Pos<=3;global._Pos+=1){if global.score>ds_list_find_value(global._List,global._Pos){ds_list_insert(global._List,global._Pos,global.score)break}}
Alarm[0]
Código:
global.score+=1
alarm[0]= room_speed;
Draw
Código:
draw_text(230,10,"Score: "+string(global.score))

obj_GameOver (É criado quando o jogo acaba)
Create
Código:
ini_open("savegame.ini")
ini_write_real("Recordes","Um",ds_list_find_value(global._List,0))
ini_write_real("Recordes","Dois",ds_list_find_value(global._List,1))
ini_write_real("Recordes","Tres",ds_list_find_value(global._List,2))
ini_close()

obj_recordes (É criado na room dos recordes)
Create
Código:
ini_open("savegame.ini")    
global.recorde_um = ini_read_real("Recordes","Um","ZERO");
global.recorde_dois = ini_read_real("Recordes","Dois","ZERO");
global.recorde_tres = ini_read_real("Recordes","Tres","ZERO");
ini_close()
Draw
Código:
draw_text(50,50,"Score: "+string(global.recorde_um))
draw_text(100,100,"Score: "+string(global.recorde_dois))
draw_text(150,150,"Score: "+string(global.recorde_tres))

DUDU951

Número de Mensagens : 90
Idade : 16
Data de inscrição : 24/06/2014
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida: Sistema de Recordes

Mensagem por WellingtonBecker em Sab 05 Jul 2014, 21:25

DUDU951 escreveu:Não está mais dando erros, mas na room dos Recordes sempre só aparece "Score: 0"

Códigos:
obj_TMP (é criado logo que o jogo começa)
Create
Código:
global.score=0
alarm[0] = room_speed;

ini_open("savegame.ini")
global._List = ds_list_create()
ds_list_add(global._List,ini_read_real("Recordes","Um","ZERO"))
ds_list_add(global._List,ini_read_real("Recordes","Dois","ZERO"))
ds_list_add(global._List,ini_read_real("Recordes","Tres","ZERO"))

for(global._Pos=-1;global._Pos<=3;global._Pos+=1){if global.score>ds_list_find_value(global._List,global._Pos){ds_list_insert(global._List,global._Pos,global.score)break}}
Alarm[0]
Código:
global.score+=1
alarm[0]= room_speed;
Draw
Código:
draw_text(230,10,"Score: "+string(global.score))

obj_GameOver (É criado quando o jogo acaba)
Create
Código:
ini_open("savegame.ini")
ini_write_real("Recordes","Um",ds_list_find_value(global._List,0))
ini_write_real("Recordes","Dois",ds_list_find_value(global._List,1))
ini_write_real("Recordes","Tres",ds_list_find_value(global._List,2))
ini_close()

obj_recordes (É criado na room dos recordes)
Create
Código:
ini_open("savegame.ini")    
global.recorde_um = ini_read_real("Recordes","Um","ZERO");
global.recorde_dois = ini_read_real("Recordes","Dois","ZERO");
global.recorde_tres = ini_read_real("Recordes","Tres","ZERO");
ini_close()
Draw
Código:
draw_text(50,50,"Score: "+string(global.recorde_um))
draw_text(100,100,"Score: "+string(global.recorde_dois))
draw_text(150,150,"Score: "+string(global.recorde_tres))

Amigo, global.score +=1 deve estar no STEP.

WellingtonBecker

Ranking : Nota D
Número de Mensagens : 820
Idade : 35
Data de inscrição : 09/05/2013
Notas recebidas : D
Reputação : 105
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Dúvida: Sistema de Recordes

Mensagem por DUDU951 em Sab 05 Jul 2014, 21:40

O score está aumentando do jeito que eu quero(dá pra ver por causa do draw), é mesmo necessário trocar do alarme pro step?

DUDU951

Número de Mensagens : 90
Idade : 16
Data de inscrição : 24/06/2014
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida: Sistema de Recordes

Mensagem por Witen em Sab 05 Jul 2014, 21:48

o score tem que esta em um evento continuo como step. ainda da para da uma otimizada:
Códigos:
obj_TMP (é criado logo que o jogo começa)
Create
Código:
global.score=0
ini_open("savegame.ini")
global._List = ds_list_create()
global.recorde_um = ini_read_real("Recordes","Um","ZERO");
global.recorde_dois = ini_read_real("Recordes","Dois","ZERO");
global.recorde_tres = ini_read_real("Recordes","Tres","ZERO");
ds_list_add(global._List,global.recorde_um))
ds_list_add(global._List,global.recorde_dois)
ds_list_add(global._List,global.recorde_tres)

for(global._Pos=-1;global._Pos<=3;global._Pos+=1){if global.score>ds_list_find_value(global._List,global._Pos){ds_list_insert(global._List,global._Pos,global.score)break}}
Step
Código:
global.score+=1;
Draw
Código:
draw_text(230,10,"Score: "+string(global.score))
obj_GameOver (É criado quando o jogo acaba)
Create
Código:
ini_open("savegame.ini")
ini_write_real("Recordes","Um",ds_list_find_value(global._List,0))
ini_write_real("Recordes","Dois",ds_list_find_value(global._List,1))
ini_write_real("Recordes","Tres",ds_list_find_value(global._List,2))
ini_close()
obj_recordes (É criado na room dos recordes)
Draw
Código:
draw_text(50,50,"Score: "+string(global.recorde_um))
draw_text(100,100,"Score: "+string(global.recorde_dois))
draw_text(150,150,"Score: "+string(global.recorde_tres))

Reparei que você esta usando objetos para executar uma função, ao invés disto você poderia criar script, o nomeando como quiser.
Código:
instance_create(1,1,obj_GameOver)
No caso ficaria:
Código:
Scpt_GameOver()

Witen

Ranking : Sem avaliações
Número de Mensagens : 515
Idade : 17
Data de inscrição : 23/05/2012
Reputação : 36
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.wibix.webs.com

Voltar ao Topo Ir em baixo

Re: Dúvida: Sistema de Recordes

Mensagem por DUDU951 em Sab 05 Jul 2014, 22:20

ok, como não quero número grandes, coloquei no evento step assim:

Código:
{tempov+=1
if tempov=30
global.score+=1
if tempov=31
tempov=1}

mas na room de recordes continua só aparecendo "Score: 0"
lembrando que durante o jogo, o Score está aparecendo e aumentando normalmente

Sobre usar scripts eu ainda uso drag and drop, e também tenho dificuldade em lembrar como adicionar eventos nos códigos, daí colocar nos objetos é muitas vezes mais fácil, então vou começar primeiro usando scripts só para desenhar na tela

DUDU951

Número de Mensagens : 90
Idade : 16
Data de inscrição : 24/06/2014
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida: Sistema de Recordes

Mensagem por Witen em Dom 06 Jul 2014, 10:22

DUDU951 escreveu:ok, como não quero número grandes, coloquei no evento step assim:

Código:
{tempov+=1
if tempov=30
global.score+=1
if tempov=31
tempov=1}

mas na room de recordes continua só aparecendo "Score: 0"
lembrando que durante o jogo, o Score está aparecendo e aumentando normalmente

Sobre usar scripts eu ainda uso drag and drop, e também tenho dificuldade em lembrar como adicionar eventos nos códigos, daí colocar nos objetos é muitas vezes mais fácil, então vou começar primeiro usando scripts só para desenhar na tela

Ah você quer que a cada um segundo o scorer adicione 1 ponto, você pode usar alarme mesmo então:
Create
Código:
alarm[0] = room_speed;
Alarme 0
Código:
global.score+=1;
alarm[0] = room_speed;

"mas na room de recordes continua só aparecendo "Score: 0"
lembrando que durante o jogo, o Score está aparecendo e aumentando normalmente"
A variável reseta quando você muda de room man. mude o global.score para global._Score, acho que isso acontece porque score é uma variável pre definida do GM...

Witen

Ranking : Sem avaliações
Número de Mensagens : 515
Idade : 17
Data de inscrição : 23/05/2012
Reputação : 36
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.wibix.webs.com

Voltar ao Topo Ir em baixo

Re: Dúvida: Sistema de Recordes

Mensagem por DUDU951 em Dom 06 Jul 2014, 12:24

Witen escreveu:Ah você quer que a cada um segundo o scorer adicione 1 ponto, você pode usar alarme mesmo então:
Create
Código:
alarm[0] = room_speed;
Alarme 0
Código:
global.score+=1;
alarm[0] = room_speed;

"mas na room de recordes continua só aparecendo "Score: 0"
lembrando que durante o jogo, o Score está aparecendo e aumentando normalmente"
A variável reseta quando você muda de room man. mude o global.score para global._Score, acho que isso acontece porque score é uma variável pre definida do GM...

mudei para global._score, mas ainda continua só aparecendo "Score: 0" na room dos Recordes..
Acho que mesmo que resetasse o score quando mudasse de room não iria ter problema, já que ele é salvo na ini antes disso acontecer.

Códigos:
obj_TMP2 (É criado logo quando o jogo começa)
Create
Código:
global._score=0
alarm[0] = room_speed

ini_open("savegame.ini")
global._List = ds_list_create()
global.recorde_um = ini_read_real("Recordes","Um","ZERO");
global.recorde_dois = ini_read_real("Recordes","Dois","ZERO");
global.recorde_tres = ini_read_real("Recordes","Tres","ZERO");
ds_list_add(global._List,global.recorde_um)
ds_list_add(global._List,global.recorde_dois)
ds_list_add(global._List,global.recorde_tres)

for(global._Pos=-1;global._Pos<=3;global._Pos+=1){if global._score>ds_list_find_value(global._List,global._Pos){ds_list_insert(global._List,global._Pos,global._score)break}}
Alarm[0]
Código:
global._score+=1
alarm[0]= room_speed
Draw
Código:
draw_text(230,10,"Score: "+string(global._score))

obj_GameOver (É criado quando o jogo acaba, antes de mudar de room)
Create
Código:
ini_open("savegame.ini")
ini_write_real("Recordes","Um",ds_list_find_value(global._List,0))
ini_write_real("Recordes","Dois",ds_list_find_value(global._List,1))
ini_write_real("Recordes","Tres",ds_list_find_value(global._List,2))
ini_close()

obj_recordes (É criado na room dos recordes)
Create
Código:
ini_open("savegame.ini")   
global.recorde_um = ini_read_real("Recordes","Um","ZERO");
global.recorde_dois = ini_read_real("Recordes","Dois","ZERO");
global.recorde_tres = ini_read_real("Recordes","Tres","ZERO");
ini_close()
Draw
Código:
draw_text(50,50,"Score: "+string(global.recorde_um))
draw_text(100,100,"Score: "+string(global.recorde_dois))
draw_text(150,150,"Score: "+string(global.recorde_tres))

DUDU951

Número de Mensagens : 90
Idade : 16
Data de inscrição : 24/06/2014
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida: Sistema de Recordes

Mensagem por Witen em Dom 06 Jul 2014, 12:54

Ué não vejo nada de errado, só algumas coisas desessenciarias
Olhe, abra o arquivo onde esta salvo o score e veja se o valores dos 3 ranks estão igual a zero (se tiverem lascou tudo).

Witen

Ranking : Sem avaliações
Número de Mensagens : 515
Idade : 17
Data de inscrição : 23/05/2012
Reputação : 36
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.wibix.webs.com

Voltar ao Topo Ir em baixo

Re: Dúvida: Sistema de Recordes

Mensagem por DUDU951 em Seg 07 Jul 2014, 15:14

Sim, no arquivo está assim D:

Código:
[Recordes]
Um=0.000000
Dois=0.000000
Tres=0.000000

EDIT:
O que faz quando lasca tudo?
Volto a tentar fazer com aquele meu código bagunçado?

DUDU951

Número de Mensagens : 90
Idade : 16
Data de inscrição : 24/06/2014
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida: Sistema de Recordes

Mensagem por WellingtonBecker em Seg 07 Jul 2014, 19:54

DUDU951 escreveu:Sim, no arquivo está assim D:

Código:
[Recordes]
Um=0.000000
Dois=0.000000
Tres=0.000000

EDIT:
O que faz quando lasca tudo?
Volto a tentar fazer com aquele meu código bagunçado?

Te aconselho a refazer o trabalho mas agora de forma mais organizada . Procure criar o menor numero de objetos para isso.

WellingtonBecker

Ranking : Nota D
Número de Mensagens : 820
Idade : 35
Data de inscrição : 09/05/2013
Notas recebidas : D
Reputação : 105
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Dúvida: Sistema de Recordes

Mensagem por DUDU951 em Ter 08 Jul 2014, 20:40

WellingtonBecker escreveu:
DUDU951 escreveu:Sim, no arquivo está assim D:

Código:
[Recordes]
Um=0.000000
Dois=0.000000
Tres=0.000000

EDIT:
O que faz quando lasca tudo?
Volto a tentar fazer com aquele meu código bagunçado?

Te aconselho a refazer o trabalho mas agora de forma mais organizada . Procure criar o menor numero de objetos para isso.
[?]

Ok, eu reorganizei meu projeto, agora está bem mais fácil de encontrar um objeto para colocar na room!

Mas agora eu preciso de alguma forma de salvar os recordes, alguém ajuda?

Por que o código do Witen não funcionou?

Por que meu código só atualiza o primeiro recorde, e o segundo e terceiro ficam sempre no "Score: 0"?

DUDU951

Número de Mensagens : 90
Idade : 16
Data de inscrição : 24/06/2014
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida: Sistema de Recordes

Mensagem por WellingtonBecker em Ter 08 Jul 2014, 22:11

DUDU951 escreveu:
WellingtonBecker escreveu:
DUDU951 escreveu:Sim, no arquivo está assim D:

Código:
[Recordes]
Um=0.000000
Dois=0.000000
Tres=0.000000

EDIT:
O que faz quando lasca tudo?
Volto a tentar fazer com aquele meu código bagunçado?

Te aconselho a refazer o trabalho mas agora de forma mais organizada . Procure criar o menor numero de objetos para isso.
[?]

Ok, eu reorganizei meu projeto, agora está bem mais fácil de encontrar um objeto para colocar na room!

Mas agora eu preciso de alguma forma de salvar os recordes, alguém ajuda?

Por que o código do Witen não funcionou?

Por que meu código só atualiza o primeiro recorde, e o segundo e terceiro ficam sempre no "Score: 0"?

Já tinha lhe passado esse excelente tutorial no qual já usei e funciona realmente pois testei ela num jogo. Mas para seu jogo que possui um mecanismo de tempo e pontos, será necessário modifica-lo.

http://gmbr.forumeiros.com/t20860-tutorial-sistema-de-recordes-com-arquivo-ini

WellingtonBecker

Ranking : Nota D
Número de Mensagens : 820
Idade : 35
Data de inscrição : 09/05/2013
Notas recebidas : D
Reputação : 105
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Dúvida: Sistema de Recordes

Mensagem por DUDU951 em Qua 09 Jul 2014, 01:40

Ok, muito obrigado.
Vou ler mais uns tutoriais, porque to com muita dificuldade de entender esse sistema xD

DUDU951

Número de Mensagens : 90
Idade : 16
Data de inscrição : 24/06/2014
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida: Sistema de Recordes

Mensagem por Conteúdo patrocinado Hoje à(s) 09:06


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum