GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Retorno da GMBR!!!
por theguitarmester Ter 19 Mar 2024, 22:38

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Mudar cor de apenas uma palavra
por lunalol Sex 01 Mar 2024, 13:42

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39

» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16

» a funçao approach ainda existe?
por PEDRINDEV Ter 26 Dez 2023, 20:05

» Inimigo ataca até por trás! >:(
por saim Sex 22 Dez 2023, 08:55

» [RESOLVIDO]Spawn após morte
por Deception_1999 Dom 17 Dez 2023, 16:39

» Remunerado $$$ - Procuro programador para ajudar a "montar" um jogo
por theguitarmester Sáb 02 Dez 2023, 16:28

» Game maker nao abre
por Cerf Dom 26 Nov 2023, 12:01


Tratamento de erros

+3
saim
Gonçalves
chicoweb
7 participantes

Ir para baixo

Tratamento de erros Empty Tratamento de erros

Mensagem por chicoweb Qui 21 Fev 2013, 11:08

Bom dia Galera,

Sobre tratamento de erros, o gm possibilita isso?

Por exemplo o código abaixo:

Código:
with ball{
    instance_destroy()
}

Se nao existir a intancia ball vai dar erro.
Eu sei que poderia usar o if instance_exists, mas aqui é só um exemplo.

como que eu pularia essa linha para o jogo não erro nem em tempo de compilação nem execução, tipo o algoritimo abaixo como teria que ser feito em gml???

Se erro = verdadeiro { continue na proxima linha }
with ball{ instance_destroy() }
if error_occurred { alerta("DEU ERRO") }


Eu sei que não é recomendável colocar isso nos códigos de nenhum programa o correto é funcionar tudo sem erro, mas tem hora que agente é meio que ogrigado por causa de prazos.

Obrigado!
chicoweb
chicoweb

Games Ranking : Nota C

Notas recebidas : B+C
Data de inscrição : 15/05/2012
Reputação : 49
Número de Mensagens : 675
Prêmios : Tratamento de erros Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Tratamento de erros Empty Re: Tratamento de erros

Mensagem por Gonçalves Qui 21 Fev 2013, 11:12

Você pode usar:

Código:
if instance_exists(ball)
{
    with(ball) instance_destroy()
}
else
{
    show_error("Instância ''ball'' não existe!", false)
}
Gonçalves
Gonçalves

Games Ranking : Nota B

Notas recebidas : B + A + C
Data de inscrição : 29/10/2010
Reputação : 79
Número de Mensagens : 1013
Prêmios : Tratamento de erros Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Tratamento de erros Empty Re: Tratamento de erros

Mensagem por saim Qui 21 Fev 2013, 11:27

Na verdade, esse código não daria erro, com ou sem instâncias...
Mas o fato é que o GM já tem, nativo, um esquema de alerta. Qualquer erro, pula uma mensagem na tela. Quer um código que dá erro pra testar? Coloque
Código:
teste += 1;
no create de algum objeto. Vai aperecer o erro "unknown variable".

Agora, funções que tratam erro NO CÓDIGO... eu achei que não existiam, mas existem sim! Smile
manual escreveu:error_occurred Indicates whether an error has occurred.
error_last String indicating the last error message.
[edit:] tem mais!
manual escreveu:show_error(str,abort) Displays a standard error message (and/or writes it to the log file). abort indicates whether the game should abort.


Pra NÃO mostrar a janelinha de erro, o manual indica uns truques que DEVEM estar em "global game settings" (mas não chequei):
manual escreveu:Display error messages
When checked, error messages are shown to the player. In the final version of the game you might want to uncheck this option.


Write error messages to file game_errors.logWhen checked all error messages are written to a file called game_errors.log in the game folder.

Abort on all error messages
Normally, certain errors are fatal while others can be ignored. When checking this option all errors are considered fatal and lead to aborting the game. In the final version of the game you distribute you might want to check this option.

Treat uninitialized variables as 0
One common error is to use a variable before a value is assigned to it. Sometimes this is difficult to avoid. When checking this option such uninitialized variables no longer report an error but are treated as value 0. Be careful though. It might mean that you don't spot typing mistakes anymore.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Tratamento de erros Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Tratamento de erros Empty Re: Tratamento de erros

Mensagem por theguitarmester Qui 21 Fev 2013, 11:35

Treat uninitialized variables as 0, Nunca use isso enquanto esta fazendo o jogo, isso dificultará MUITO o processo para achar erros.

deixe marcada essa tambem Display error messages enquanto está fazendo o jogo, a menos que você criou outra mensagem de erro.
theguitarmester
theguitarmester

Games Ranking : Nota C

Notas recebidas : B + C
Data de inscrição : 28/02/2012
Reputação : 139
Número de Mensagens : 2208
Prêmios : Tratamento de erros Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Plataformas :
  • Unity


http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Ir para o topo Ir para baixo

Tratamento de erros Empty Re: Tratamento de erros

Mensagem por chicoweb Qui 21 Fev 2013, 11:56


theguitarmester eu to ligado que isso até impossibilita de achar os problemas no jogo, é que eu to pensando em termos de prazos, por exemplo se tiver que enviar um jogo ate amanha, e tiver um erro simples, eu nao quero perder 5 horas tentando consertar. Nesse caso eu colocaria a gambiarra hoje e no outro dia consertava bonitim kkkk..

Saim eu tentei usar isso:

Eu desabilitei a primeira opção: Display error messages
Realmente ela não exibe o erro na tela.

Tentei o seguinte tratamento, não achei exemplo em lugar nenhum nem no google aff!!! Então tentei ir pela lógica:

No create de um objeto qualquer numa room qualquer:

Código:
teste += 1
// Se deu erro
if error_occurred {
    show_message("DEU ERRO NA CRIAÇÃO DO OBJETO TAL: " + error_last)
}else{
    show_message("OBJETO TAL CRIADO TRANQUILAMENTE!!!")
}

Não funcionou, não exibiu nenhum mensagem, se alguem quiser tentar ae, acho que seria uma coisa nova que vai servir pra todos.
chicoweb
chicoweb

Games Ranking : Nota C

Notas recebidas : B+C
Data de inscrição : 15/05/2012
Reputação : 49
Número de Mensagens : 675
Prêmios : Tratamento de erros Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Tratamento de erros Empty Re: Tratamento de erros

Mensagem por Gonçalves Qui 21 Fev 2013, 12:10

Na verdade, esse código não daria erro, com ou sem instâncias...
Eu testei aqui e funcionou... ¬¬'

Aliás, no error_occured, o GM já cria um alerta automaticamente, logo essa mensagem será inútil (a não ser que queira fazer um novo de sistema de alertas pro programa), o que você poderia fazer é checar mesmo que tipo de erro deu para que seja adicionado um novo "alerta de erro".

Até mais!
Gonçalves
Gonçalves

Games Ranking : Nota B

Notas recebidas : B + A + C
Data de inscrição : 29/10/2010
Reputação : 79
Número de Mensagens : 1013
Prêmios : Tratamento de erros Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Tratamento de erros Empty Re: Tratamento de erros

Mensagem por saim Qui 21 Fev 2013, 13:27

@chicoweb:
Pelo que eu tenho notado, quando acontece um erro e a gente manda ignorar, o GM ignora todo o evento. De agora pra frente, tudo que eu disser é mera suposição.
Provavelmente, quando você desabilita os erros, o GM deixa de mostrar a janelinha de erro e executa a mesma rotina de quando você clica em "ignorar". Daí, colocar um show_message depois do erro, realmente é o mesmo que nada.
Mas aí, se você reler minha mensagem acima, vai ver que eu encontrei mais uma função. Show_error!
E agora, o chute lá do outro lado do campo: pode ser que essa função seja executada dentro de um código mesmo após o erro ter acontecido e o botão de ignorar ter sido apertado.
(peraí, ISSO eu tenho como testar!)

2 minutos depois...

Não, depois de um erro, o resto do código é ignorado na maior, mesmo. Nenhuma mágica em "show_error". Parece que é uma mensagem pra ser mostrada COMO SE FOSSE uma mensagem de erro (usando a mesma janela, escrevendo no log, etc), mas seriam erros que o programa desconsidera. Tipo uma colisão acontecendo quando não deveria - o programa acha super normal a colisão acontecer a qualquer momento, mas o programador pode querer que apareça uma mensagem de erro em alguns casos.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Tratamento de erros Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Tratamento de erros Empty Re: Tratamento de erros

Mensagem por theguitarmester Qui 21 Fev 2013, 14:35

talves isto ajude, não tem tanto a ver, mas:
https://gmbr.forumeiros.com/t25797-trancado-variavel-error_occoured


outra coisa, quando acontece um erro, error_occurred volta o valor true(1), para voltar a false(0), você mesmo deve editar, tópico que mostrei tem isso.


------editado
Realmente quando acontece um erro é abortado todo o script, estava em dúvida será todo {}, mas não, é todo script.

Uma maneira que achei até agora, é colocar após um script, outro que checa se houve erro.



1111 mensagens o.O anh! Fim do mundo? do meu usuário? acho que não.
theguitarmester
theguitarmester

Games Ranking : Nota C

Notas recebidas : B + C
Data de inscrição : 28/02/2012
Reputação : 139
Número de Mensagens : 2208
Prêmios : Tratamento de erros Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Plataformas :
  • Unity


http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Ir para o topo Ir para baixo

Tratamento de erros Empty Re: Tratamento de erros

Mensagem por PedroX Qui 21 Fev 2013, 15:07

No final daquele step que o valor da variável error_ocurred vai ser true, se acontecer um erro.

Faça o teste:

Create

t+=1

Step

if (error_ocurred) show_message(error_last);

Para contornar, você pode definir um alarm para o step (alarm[x]=1) seguinte e então pegar os erros. Mas assim você teria que executar o restante do Step.

Até mais!

_________________


Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.

Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.

Aprenda a calcular a velocidade de suas animações


Entre para o Clube do Inglês:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6086
Prêmios : Tratamento de erros Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

Tratamento de erros Empty Re: Tratamento de erros

Mensagem por Kabeção Qui 21 Fev 2013, 16:27

Mas ele mostra exatamente aonde esta o erro...
Ao invés de simplesmente corrigir você vai ter que programar um tratamento para um possível. Usar esse error_ocurred não dificultaria ainda mais as coisas?
Kabeção
Kabeção

Games Ranking : Sem avaliações

Data de inscrição : 08/06/2008
Reputação : 100
Número de Mensagens : 2314
Prêmios : Tratamento de erros Empty

Medalhas x 0 Tutoriais x 7 Moedas x 0

Ouro x 3 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://blackcapapps.blogspot.com.br/

Ir para o topo Ir para baixo

Tratamento de erros Empty Re: Tratamento de erros

Mensagem por saim Qui 21 Fev 2013, 16:59

Kabeção escreveu:Usar esse error_ocurred não dificultaria ainda mais as coisas?
Parece mesmo uma redundância, mas se você colocar dentro de um "if (debug_mode == true)", aí pode começar a fazer sentido. O erro só aparece quando estiver em modo debug.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Tratamento de erros Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Tratamento de erros Empty Re: Tratamento de erros

Mensagem por GameMakerTutoriais Qui 21 Fev 2013, 18:48


Spoiler:

Spoiler:

-------- Edit --------

Ex.: http://the640kbworld.webng.com/gamemaker/gmerror.zip
Não compensa o trabalho.
avatar
GameMakerTutoriais

Data de inscrição : 29/01/2011
Reputação : 26
Número de Mensagens : 800
Prêmios : Tratamento de erros Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Tratamento de erros Empty Re: Tratamento de erros

Mensagem por chicoweb Sex 22 Fev 2013, 09:38


É Galera se a intenção é pular a linha do erro e depois continuar, infelizmente isso não vai ser útil.
Como o saim observou, ele ignora tudo que vem depois da linha que gera o erro, se estiver no mesmo script.

Uma engine aqui na prática, pra testar dando erro e sem dar erro, comentem a linha "teste += 1" do evento create.
Tem meus comentarios lá vcs vão entender, acho que miou essa rotina de tratamento de erro neh??

engine teste error
chicoweb
chicoweb

Games Ranking : Nota C

Notas recebidas : B+C
Data de inscrição : 15/05/2012
Reputação : 49
Número de Mensagens : 675
Prêmios : Tratamento de erros Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Tratamento de erros Empty Re: Tratamento de erros

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos