Conectar-se
Quem está conectado
23 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 23 Visitantes

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
Ranking : Nota C
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6037
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 288

Prêmios
   :
   :
   :
Ver perfil do usuário

[mini-tuto] Instance Creation Code

em Ter 17 Jan 2012, 16:04
Reputação da mensagem: 100% (1 votos)
Instance Creation Code

Descrição: Um pequeno tutorial tratando de uma possibilidade escondida.

Plataforma: GM6 GM7 GM8

Existe no Game Maker uma possibilidade que eu fui encontrar faz uma semana. Depois de tanto tempo, fui achar só agora. É muito útil essa possibilidade.

Para acessá-la, entre em alguma room e clique, com o botão CTRL pressionado, em alguma instância com o botão direito do mouse. Agora seleciona a opção Creation Code.

O que podemos fazer com isso?

Primeiro lembremos a ordem básica dos eventos:

1- Instance Creation Code

2- Create (serve para todas as instâncias desse objeto)

3- Game Start

4- Room - Creation code

5- Room Start

E então?

Suponhamos que você está lá fazendo um jogo ao estilo Worlds Hardest Game, quer que uma armadilha vá para um lado e a outra vá para o outro. Ai você pensa, vou colocar:
(id_de_uma).hspeed=5
(id_de_outra).hspeed=-5

No entanto, você pode colocar no Creation Code de cada uma sua velocidade.

Como esse código vem antes do Create, você pode colocar na instância uma variável que defina de que tipo ela é, e no Create mover de acordo com o tipo. Há várias possibilidades.

Fim.
avatar
Data de inscrição : 31/08/2010
Número de Mensagens : 630
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 15

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://leninja.com.br

Re: [mini-tuto] Instance Creation Code

em Ter 17 Jan 2012, 16:14
O legal e que tem como travar o objeto,assim você não pode exclui-lo sem querer.

@tutorial:gostei dele ser primeiro que o create,mais fiquei com uma duvida,como faço para colocar isso nos instances criados depois que o jogo foi executado(preciso disso *-*)?
avatar
Data de inscrição : 29/12/2011
Número de Mensagens : 182
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 1

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://www.google.com

Re: [mini-tuto] Instance Creation Code

em Ter 17 Jan 2012, 16:18
surpreso
Como não descobri isso antes? Shocked
Vai ser muito útil. Obrigado por compartilhar a descoberta. É uma pena que a maioria dos meus objetos sejam gerados por códigos e não usando o layout da room. Mas já tive várias ideias de como usar o "Instance Creation Code".

Mas ainda me pergunto porque o Room Creation Code e o Instance Creation Code estão tão escondidos. Vai entender o Game Maker Laughing
avatar
Data de inscrição : 07/03/2010
Número de Mensagens : 426
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 13

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: [mini-tuto] Instance Creation Code

em Ter 17 Jan 2012, 16:33
Hmmm, interessante isso, também não conhecia essa possibilidade
pelo que entendi esse Instance Creation Code

é o mesmo evento quando você faz dessa forma:
ii = instance_create(x, y, obj);
ii.a = 1;//Inicio do Instance Creation Code
ii.b = 2;
ii.c = 3;//Fim do Instance Creation Code

Isso evita ter que criar um criador de objetos, no caso de objetos fixos, com características diferentes..
avatar
Data de inscrição : 31/08/2010
Número de Mensagens : 630
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 15

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://leninja.com.br

Re: [mini-tuto] Instance Creation Code

em Ter 17 Jan 2012, 16:36
@Klior escreveu:Hmmm, interessante isso, também não conhecia essa possibilidade
pelo que entendi esse Instance Creation Code

é o mesmo evento quando você faz dessa forma:
ii = instance_create(x, y, obj);
ii.a = 1;//Inicio do Instance Creation Code
ii.b = 2;
ii.c = 3;//Fim do Instance Creation Code

Isso evita ter que criar um criador de objetos, no caso de objetos fixos, com características diferentes..
Então e por isso que eu colocava isso dae e a variavel que eu mudava não tinha efeito pois no create do objeto tinha o a=0(exemplo),fazendo a variavel ganhar esse valor.

Muito obrigado cara,você e o pedro me ensinaram algo hoje o/
avatar
Ranking : Nota C
Notas recebidas : D + D + C + C + D + B
Data de inscrição : 28/04/2011
Número de Mensagens : 913
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 41

Prêmios
   : 1
   : 0
   : 0
Ver perfil do usuáriohttp://mrbrumgames.blogspot.com/

Re: [mini-tuto] Instance Creation Code

em Ter 17 Jan 2012, 16:56
@tutorial:gostei dele ser primeiro que o create,mais fiquei com uma duvida,como faço para colocar isso nos instances criados depois que o jogo foi executado(preciso disso *-*)?
Você precisa primeiro colher o id do da instância desejada.
Depois use o mecanismo do "." para setar a variável no lugar desejado.

Exemplo do klior:
Código:
ii = instance_create(x, y, obj); //capturou o id da instancia criada,através  da var ii.
ii.a = 1;//setou uma var local na instancia colhida,logo após criá-la.
ii.b = 2;//setou uma var local na instancia colhida,logo após criá-la.
ii.c = 3;//setou uma var local na instancia colhida,logo após criá-la.
Ranking : Nota C
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6037
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 288

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: [mini-tuto] Instance Creation Code

em Qua 18 Jan 2012, 11:20
Que bom que gostaram.
Dá para fazer muita coisa sem complicar.
No caso Klior, o ICC é mais prático, pois você pode colocar qualquer código.
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 16/01/2012
Número de Mensagens : 970
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 33

Prêmios
   : 1
   : 0
   : 2
Ver perfil do usuáriohttp://trfnsite.com

Re: [mini-tuto] Instance Creation Code

em Qua 18 Jan 2012, 11:28
Hum,bem interessante.
Inclusive já até conhecia este metodo,mas não sabia que este faria tanta diferença(digo,pensava que era uma coisa que a maioria sabia).
Inclusive tem um pequeno detalhe que,quando a instancia tem um código deste tipo,e vocÊ passa o mouse por cima dela,aparece em baixo o x e y do mouse e um escrito "Has Code"...Observem depois...
O bom e que com este metodo não e preciso criar um milhão de instancias apenas para fazer um sistema de moedas-bonus para fazes de games por exemplo.
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 14/07/2008
Número de Mensagens : 199
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 17
Ver perfil do usuáriohttp://www.youtube.com/user/CanalNexteLevel

Re: [mini-tuto] Instance Creation Code

em Qua 18 Jan 2012, 13:28
Legal essa dica.

Semana passada eu estava utilizando o Instance Creation Code para dar uma ID personalizada de zero a dez as instancias de um certo objeto para sincroniza-los a um array e passei a tarde toda até me tocar desse detalhe da ordem dos eventos, eu pensava que tinha que declarar as variáveis no Create do objeto primeiro e na verdade eu estava era redefinindo elas Laughing
Que vacilo yes

EDIT_________
TRFN, no game maker 8.1 se você pressionar C as instancias que tem código ficam iluminadas e se você posicionar o mouse em cima da instancia aparece o código.
Data de inscrição : 29/01/2011
Número de Mensagens : 800
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 26

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: [mini-tuto] Instance Creation Code

em Sab 14 Abr 2012, 11:21
Que fino heim! Sabia disso não! Aprendi mais uma. Very Happy Legal também é que esse popup dá opção pra trancar cada instância separadamente, aí sim, trancar instância fica útil!

Valeu!!
Ranking : Nota C
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6037
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 288

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: [mini-tuto] Instance Creation Code

em Sab 14 Abr 2012, 11:42
A instância é trancada para evitar erros, como apagar ou mover?

O evento poupa várias coisas: criar outros objetos do mesmo tipo só para fazer algo diferente (como menus ou inimigos), ir na room e pegar o id só para aplicar o código naquela instância (sendo que se apagar o id vai mudar e vai dar o mesmo trabalho), além de que você já vê onde estará sua instância e fica mais fácil programá-la.
Data de inscrição : 29/01/2011
Número de Mensagens : 800
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 26

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: [mini-tuto] Instance Creation Code

em Sab 14 Abr 2012, 11:57

Eu uso pra isso. Pra evitar de apagar o que está por baixo. Acho melhor que o desmarcar o "delete underlying".
avatar
Data de inscrição : 09/07/2011
Número de Mensagens : 646
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 6

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: [mini-tuto] Instance Creation Code

em Sab 14 Abr 2012, 14:01
Eu já tinha visto isso, mas como não sabia pra que serve, não procurei nenhum tuto.
Agora me dou conta que é um evento que pode ajudar bastante em certos momentos.
Valeu Pedro!
avatar
Ranking : Nota A
Notas recebidas : C + B + A + A
Data de inscrição : 08/06/2009
Número de Mensagens : 1846
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 254

Prêmios
   : 2
   : 1
   : 1
Ver perfil do usuáriohttp://willy-gmbr.blogspot.com/

Re: [mini-tuto] Instance Creation Code

em Sab 14 Abr 2012, 16:04
Caramba, quase 4 anos de Game Maker e eu não sabia disso. --\'

Eu fazia um sistema parecido com esse pra facilitar a criação de armadilhas (como você citou), mas eu criava vários objetos invisíveis, que, ao colidir-se com um objeto especifico, alterava os valores dele (é o que eu chamo de "complicar para facilitar").

Sério cara, isso vai mudar MUITA coisa daqui pra frente... o.-
avatar
Ranking : Sem avaliações
Data de inscrição : 08/06/2008
Número de Mensagens : 2314
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 100

Prêmios
   : 3
   : 0
   : 1
Ver perfil do usuáriohttp://blackcapapps.blogspot.com.br/

Re: [mini-tuto] Instance Creation Code

em Sab 14 Abr 2012, 18:43
Estranho, não imaginava que isso era dão desconhecido assim. Razz

Uma técnica que sempre uso o instance creation code junto com variable_local_exists.
O jogo que estou trabalhando agora, por exemplo, tem portais ligados entre si. No creation code eu coloco a id do objeto a qual o portal esta ligado (o outro portal) e se ele esta ativado.
Código:
obj = 100123;
ativado = true;
Ai no evento Create uso variable_local_exists para definir valores padrão e evitar bugs ou poupar trabalho se não precisar especificar um valor no instance creation code.
Código:
if !variable_local_exists('obj') obj = noone;
if !variable_local_exists('ativado') ativado = false;
Portas normais também, no creation code eu defino qual room e posição vão enviar o jogador ai um único objeto pode ter configurações diferentes para cada instancia.

Outra coisa que faço muito também é num objeto de botão no creation code eu defino scripts com code_on, code_step e code_off e execute_string para executa-los.
Exemplo:
Código:
code_on = 'player.dinheiro -= 200;portal.ativado=true;sound_loop(alarme)';        // quando ativar o botão
code_step = 'lampada.cor_piscar = choose(c_red,c_yellow);';  // enquanto estiver ativado
code_off = 'portal.ativado=false;sound_stop(alarme)';  // quando for desativado

É um recurso bem útil.


Última edição por Kabeção em Sab 14 Abr 2012, 18:57, editado 1 vez(es)
avatar
Ranking : Nota D
Notas recebidas : D+B+D
Data de inscrição : 03/10/2011
Número de Mensagens : 421
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 1
Ver perfil do usuário

Re: [mini-tuto] Instance Creation Code

em Sab 14 Abr 2012, 18:54
Hooo, eu ja conhecia essa possibilidade, so nao sabi que quase ninguem daqui sabia :O

muinto legal o tuto, eu sabia disso, mas nao sabia como usar :p
avatar
Ranking : Nota B
Notas recebidas : B
Data de inscrição : 24/03/2010
Número de Mensagens : 1129
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 17

Prêmios
   : 0
   : 0
   : 1
Ver perfil do usuáriohttp://awesomewizards.deviantart.com/

Re: [mini-tuto] Instance Creation Code

em Sab 14 Abr 2012, 19:23
desconhecia essa possibilidade,adorei o tuto,aprendi a usar perfeitamente,essa possibilidade nem consta no manual do Game Maker,ótima colaboração,amei o mini-tuto
avatar
Ranking : Nota C
Notas recebidas : C + C
Data de inscrição : 19/10/2011
Número de Mensagens : 337
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 9

Prêmios
   : 0
   : 1
   : 0
Ver perfil do usuário

Re: [mini-tuto] Instance Creation Code

em Sab 14 Abr 2012, 23:33
Hm, eu conheci está função fuçando o GM Smile
Ela tem várias utilidades mesmo, eu por exemplo usei elas, para colocar diferentes carros estáticos na rua, apenas mudando a image_index dela.

Mas eu não sabia que está função é tão desconhecida, mas mesmo assim, fica a dica pessoal Happy

Até! flw
avatar
Ranking : Sem avaliações
Notas recebidas : B
Data de inscrição : 28/02/2012
Número de Mensagens : 1908
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 1
Reputação : 80

Prêmios
   : 2
   : 2
   : 1
Ver perfil do usuáriohttp://guitarmester.no.comunidades.net/index.php?pagina=19362978

Re: [mini-tuto] Instance Creation Code

em Dom 15 Abr 2012, 01:15
é como o Kabeção Falou!

eu já uso isto há algum tempo mas só que por Burrice colocava no variable_local_exists(variavel) a variavel sem as aspas, e daí dava pane(erro), dizia que a variavel não existia!eu o uso principalmente para definir o lado que algo vai começar, EX:
inimigo
Código:
ld=1
no step dele:
Código:
if ld=0 sprite_index=spr_direita
if ld=1 sprite_index=spr_esquerda
¨¨¨¨¨¨¨¨¨¨
mas isto é só um Exemplo, por que geralmente não uso 2 sprite para fazer o lado direito e esquerdo(é só usar o MIRROR HORIZONTARy, mas só sei fazer por D&D)
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 30/07/2011
Número de Mensagens : 928
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 47

Prêmios
   : 0
   : 0
   : 1
Ver perfil do usuáriohttp://luizpontes.tk/

Re: [mini-tuto] Instance Creation Code

em Dom 15 Abr 2012, 19:41
Nooosa, só por causa da minha pergunta eu destruí ajudei a vida de muita gente. Mas o Pedro disse na minha pergunta que "variable_local_exists" é lento. Mas acho que não tem problema pois isso só será executado na criação do objeto, e como tem Creation Code, já esta na room, dando a pequena lentidão no começo da room.
Conteúdo patrocinado

Re: [mini-tuto] Instance Creation Code

Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum