Creation Code

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

Resolvido Creation Code

Mensagem por Bazukero em Sab 19 Mar 2011, 12:44

Eae galera... sou novo aqui no site e sou novo no game maker também.
Então estava fazendo algumas modificações em alguns jogos para ir aprendendo.

Em um certo jogo eu coloquei o seguinte código no "Creation code" da primeira room... e deixei persistent... para caso voltasse para essa room as variaveis nao mudasem.
Código:
{
global.level = 1
global.xp = 0
global.max_xp = 100
global.points = 0
}

Então... eu preciso atribuir esses valores a outras variáveis no início de cada room para que, caso o player morra, os valores voltem ao que estavam no início da room.
Então eu botei o seguinte código no create event do objeto que eu uso para controlar a room:
Código:
room_xp = global.xp
room_level = global.level
room_max_xp = global.max_xp
room_points = global.points

Acontece que da um erro no início do jogo dizendo que não reconhece a variável global.xp que é declarado no creation code da room.
Pesquisando um pouco... descobri que o create event dos objetos da room acontece antes mesmo do creation code da room, portanto, quando vou atribuir os valores... aquelas variáveis globais não existem ainda.
Já tentei várias coisas mas o erro continua la.
Tentei até colocar no creation code da room, para o objeto que controla a room ser criado após as varíaveis serem declaradas... mas isso também não deu certo e eu não entendo o porque <<< se alguém pudesse me explicar isso também ficaria grato.

Agradeço desde já.
Até mais.



--EDIT--
Problema Resolvido.. Obrigado a todos!!
Podem fechar o tópico.


Última edição por Bazukero em Sab 19 Mar 2011, 23:25, editado 1 vez(es)

Bazukero

Número de Mensagens : 3
Data de inscrição : 07/10/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Creation Code

Mensagem por Carlos L. em Sab 19 Mar 2011, 14:05

Opa amigo beleza, primeiramente bem vindo ao fórum.
Se eu entendi bem faça o seguinte: Crie dois objetos onde um vai ser seu player e o outro que controlará sua vars.
No que controlará suas vars coloque o seguinte.

global.level = 1;
global.xp = 0;
global.max_xp = 100;
global.points = 0;
global.morto = false; // Irá checar se o player morreu


Agora no step do seu player coloque.
if (global.morto = true) then
{
room_xp = global.xp;
room_level = global.level;
room_max_xp = global.max_xp;
room_points = global.points;
global.morto = false;
}


Agora quando você criar o health do player coloque a seguinte checagem.
if (global.max_xp >= 100)
{
global.morto = false;
global.max_xp = 100;
}
if (global.max_xp <= 0)
{
global.morto = true;
global.max_xp = 0;
room_restart(); // Reiniciará a room

Pronto é isso ai.

OBS .: Não esqueça de colocar o objeto que vai controlar as vars em todas as rooms. flw

Carlos L.

Ranking : Nota C
Número de Mensagens : 270
Data de inscrição : 26/09/2010
Notas recebidas : C
Reputação : 8
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Creation Code

Mensagem por Markituh em Sab 19 Mar 2011, 14:25

Hmmm... Carlos, você não explicou o porque de acontecer. Amigo, testei aqui no meu, declarei uma variável chamada global.algo e dei um valor a ela. Depois no Draw de um objeto desenhei essa variável, e retornou normalmente. Lembrando que, uma variável declarada, seja aonde for, só irá funcionar em outro objeto se for global.

Para resolver o problema, simplesmente defina as variáveis com o auxílio de um alarm. No Create do objeto desejado, defina um alarm daqui a 5 steps.
Código:
alarm[0]=5
Agora crie um evento de alarm, e nesse evento coloque as variáveis.
Código:
room_xp = global.xp
room_level = global.level
room_max_xp = global.max_xp
room_points = global.points
Veja se dá certo agora.

___________

"Não deixe para amanhã o que se pode fazer hoje"

Links úteis:
Índice de Tutoriais
Manual online do GMS

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Creation Code

Mensagem por Bazukero em Sab 19 Mar 2011, 21:01

Obrigado!
A idéia do alarm eu tentei mas continuou dando o mesmo erro.
A idéia do carlos eu vou tentar depois porque envolve um pouco mais de trabalho... então eu edito para dizer se funcionou.
Só uma pergunta Carlos... ... eu preciso marcar a opção persistent para que os valores das variaveis nao voltem aos iniciais certo?
Pois eu quero que quando mude as rooms a xp e o level e tudo mais sejam preservados entende?

Bazukero

Número de Mensagens : 3
Data de inscrição : 07/10/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Creation Code

Mensagem por CRP-Max em Sab 19 Mar 2011, 23:07

Me parece que seria mais fácil se você definisse estas variáveis em Game Start, assim nem haveria a necessidade de criar outras, pois elas só sumiriam caso você fechasse o jogo.
Cria um novo objeto chamado de controle, vai em Add Event, Other, Game start.
Agora você pode criar suas variaveis e neste caso sendo globais, você pode usa-las sempre e altera-las conforme a necessidade no jogo, e caso o jogo tenha sido salvo as variáveis continuam...

CRP-Max

Ranking : Nota C
Número de Mensagens : 819
Idade : 41
Data de inscrição : 28/10/2008
Notas recebidas : C
Reputação : 29
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Creation Code

Mensagem por Bazukero em Sab 19 Mar 2011, 23:19

Hmmm... vou tentar isso CRP... Mas voce sabe se o evento game start acontece antes do evento create dos objetos?
Creio que sim... vou tentar aqui e aviso se deu certo

--EDIT--
Continua dando o mesmo erro.

Código:
ERROR in
action number 3
of Create Event
for object controller_room:

Error in code at line 1:
  room_xp = global.xp
                  ^
at position 18: Unknown variable xp

Pois o event create (onde eu atribuo variáveis aos valores atuais de xp lvl etc)
Acontece antes que o evento onde eu de fato declaro as variáveis de xp e tudo mais.

--EDIT 2--
Resolvido com a idéia do alarme. Não tinha funcionado antes pois eu tinha tentado declarar as variáveis em outro objeto e quando não deu certo eu esqueci de desfazer a modificação.

Obrigado a todos que me ajudaram... isso não seria necessário se eu tivesse feito um menu antes de iniciar o jogo.. mas como disse sou iniciante e ainda estou aprendendo e tudo mais.
Obrigado de novo. Até mais


Bazukero

Número de Mensagens : 3
Data de inscrição : 07/10/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: Creation Code

Mensagem por CRP-Max em Sab 19 Mar 2011, 23:27

Bazukero escreveu:Hmmm... vou tentar isso CRP... Mas voce sabe se o evento game start acontece antes do evento create dos objetos?
Creio que sim... vou tentar aqui e aviso se deu certo

--EDIT--
Continua dando o mesmo erro.

Código:
ERROR in
action number 3
of Create Event
for object controller_room:

Error in code at line 1:
  room_xp = global.xp
                  ^
at position 18: Unknown variable xp

Pois o event create (onde eu atribuo variáveis aos valores atuais de xp lvl etc)
Acontece antes que o evento onde eu de fato declaro as variáveis de xp e tudo mais.

Você não precisa mais definir outra variável, use as globais mesmo, elas estarão disponíveis em todo o jogo, seus valores podem ser alterados e mesmo que o player morra elas continuam até você fechar o jogo, quanto ao erro tenta chamar o objeto controle já na tela inicial do jogo, outra coisa interessante, é que dependendo de onde você coloca o objeto na room, ele é chamado primeiro, então coloca bem no inicio da room o objeto controle e depois os outros e veja se muda de situação.

-EDIT-
Pelo que eu estou entendendo você está usando no mesmo objeto a definição destas variáveis, certo? Se for isso tenta criar em outro objeto, blz?

CRP-Max

Ranking : Nota C
Número de Mensagens : 819
Idade : 41
Data de inscrição : 28/10/2008
Notas recebidas : C
Reputação : 29
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Creation Code

Mensagem por Conteúdo patrocinado Hoje à(s) 07:46


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