[mini-tuto] Instance Creation Code

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

[mini-tuto] Instance Creation Code

Mensagem por PedroX em Ter 17 Jan 2012, 16:04

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.

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: [mini-tuto] Instance Creation Code

Mensagem por Pit Bull 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 *-*)?

Pit Bull

Número de Mensagens : 630
Idade : 21
Data de inscrição : 31/08/2010
Reputação : 15
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://leninja.com.br

Voltar ao Topo Ir em baixo

Re: [mini-tuto] Instance Creation Code

Mensagem por Davichococat 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

Davichococat

Número de Mensagens : 182
Data de inscrição : 29/12/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.google.com

Voltar ao Topo Ir em baixo

Re: [mini-tuto] Instance Creation Code

Mensagem por Klior 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..

Klior

Número de Mensagens : 426
Idade : 25
Data de inscrição : 07/03/2010
Reputação : 13
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [mini-tuto] Instance Creation Code

Mensagem por Pit Bull 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/

Pit Bull

Número de Mensagens : 630
Idade : 21
Data de inscrição : 31/08/2010
Reputação : 15
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://leninja.com.br

Voltar ao Topo Ir em baixo

Re: [mini-tuto] Instance Creation Code

Mensagem por Mr.Brum 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.

Mr.Brum

Ranking : Nota C
Número de Mensagens : 913
Idade : 25
Data de inscrição : 28/04/2011
Notas recebidas : D + D + C + C + D + B
Reputação : 41
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://mrbrumgames.blogspot.com/

Voltar ao Topo Ir em baixo

Re: [mini-tuto] Instance Creation Code

Mensagem por PedroX 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.

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: [mini-tuto] Instance Creation Code

Mensagem por TRFN 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.

TRFN

Ranking : Nota C
Número de Mensagens : 970
Idade : 21
Data de inscrição : 16/01/2012
Notas recebidas : C
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

http://trfnsite.com

Voltar ao Topo Ir em baixo

Re: [mini-tuto] Instance Creation Code

Mensagem por Tiago Lima 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.

Tiago Lima

Ranking : Nota C
Número de Mensagens : 199
Data de inscrição : 14/07/2008
Notas recebidas : C
Reputação : 17
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.youtube.com/user/CanalNexteLevel

Voltar ao Topo Ir em baixo

Re: [mini-tuto] Instance Creation Code

Mensagem por GameMakerTutoriais 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!!

GameMakerTutoriais

Número de Mensagens : 800
Data de inscrição : 29/01/2011
Reputação : 26
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [mini-tuto] Instance Creation Code

Mensagem por PedroX 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.

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: [mini-tuto] Instance Creation Code

Mensagem por GameMakerTutoriais 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".

GameMakerTutoriais

Número de Mensagens : 800
Data de inscrição : 29/01/2011
Reputação : 26
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [mini-tuto] Instance Creation Code

Mensagem por Super Maker 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!

Super Maker

Número de Mensagens : 646
Idade : 33
Data de inscrição : 09/07/2011
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [mini-tuto] Instance Creation Code

Mensagem por Willy 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.-

___________


Engines, tutoriais e projetos? Clique no banner!



Atenção:
Comporte-se, senão você vai levar a cintada do Willy no meio da bunda! bravo


Willy

Ranking : Nota A
Número de Mensagens : 1812
Idade : 23
Data de inscrição : 08/06/2009
Notas recebidas : C + B + A + A
Reputação : 245
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://willy-gmbr.blogspot.com/

Voltar ao Topo Ir em baixo

Re: [mini-tuto] Instance Creation Code

Mensagem por Kabeção 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)

Kabeção

Ranking : Sem avaliações
Número de Mensagens : 2314
Data de inscrição : 08/06/2008
Reputação : 100
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 0
   : 1

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

Voltar ao Topo Ir em baixo

Re: [mini-tuto] Instance Creation Code

Mensagem por henriquebr 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

henriquebr

Ranking : Nota D
Número de Mensagens : 421
Data de inscrição : 03/10/2011
Notas recebidas : D+B+D
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [mini-tuto] Instance Creation Code

Mensagem por The Wizard 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

The Wizard

Ranking : Nota B
Número de Mensagens : 1129
Idade : 18
Data de inscrição : 24/03/2010
Notas recebidas : B
Reputação : 17
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 1

http://awesomewizards.deviantart.com/

Voltar ao Topo Ir em baixo

Re: [mini-tuto] Instance Creation Code

Mensagem por Black Studio 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

Black Studio

Ranking : Nota C
Número de Mensagens : 337
Idade : 18
Data de inscrição : 19/10/2011
Notas recebidas : C + C
Reputação : 9
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: [mini-tuto] Instance Creation Code

Mensagem por theguitarmester 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)

theguitarmester

Ranking : Sem avaliações
Número de Mensagens : 1908
Idade : 21
Data de inscrição : 28/02/2012
Notas recebidas : B
Reputação : 80
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Prêmios
   : 2
   : 2
   : 1

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

Voltar ao Topo Ir em baixo

Re: [mini-tuto] Instance Creation Code

Mensagem por luiz_eldorado 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.

luiz_eldorado

Ranking : Nota C
Número de Mensagens : 928
Idade : 17
Data de inscrição : 30/07/2011
Notas recebidas : C
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 1

http://luizpontes.tk/

Voltar ao Topo Ir em baixo

Re: [mini-tuto] Instance Creation Code

Mensagem por peixoto em Dom 15 Abr 2012, 21:01

Otimo tutorial cara!

Mas,nao me foi la muito util, ja que nao mecho muito com esse codigo :\

peixoto

Ranking : Nota D
Número de Mensagens : 911
Idade : 21
Data de inscrição : 14/02/2010
Notas recebidas : D
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [mini-tuto] Instance Creation Code

Mensagem por PedroX em Dom 15 Abr 2012, 22:29

@saim
Acho que você está falando de:

http://gmc.yoyogames.com/index.php?showtopic=394983

Também tem:
http://wiki.yoyogames.com/index.php/Order_of_events

Um super completo:
http://www.gmlscripts.com/forums/viewtopic.php?id=138

@topic
Que bom que gostaram.
Peixoto, se você não viu uma utilidade, esse tutorial acabou sendo útil para você, porque abriu uma possibilidade.

Até mais!

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: [mini-tuto] Instance Creation Code

Mensagem por Conteúdo patrocinado Hoje à(s) 02:44


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