Entrar
Últimos assuntos
» player não consegue andarpor lovn7 Qui 21 Nov 2024, 13:33
» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22
» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31
» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23
» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49
» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58
» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36
» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36
» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33
» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51
» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28
» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18
» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08
» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10
» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16
» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40
» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01
» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45
» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34
» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28
» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48
» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54
» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14
» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50
Criando um inventário
4 participantes
Página 1 de 1
Criando um inventário
Nome: Criando um inventário
Descrição: Tutorial mostrando passo a passo de como criar um inventário.
Nível de dificuldade: Médio/Avançado
Requerimentos: O criador do tutorial(que não sou eu) testou no GM 5 e 6,mais creio que irá funcionar em outros Game Makers,já que alguns(ou todos) dos códigos utilizados neste tutorial você pode encontrar no GM 7,GM 8 e afins.
Desenvolvimento:
OBS: O tutorial a seguir não foi obra minha,eu traduzi deste site e vim postar aqui para a galera.
Introdução
Este tutorial foi criado para Game Maker 5 e 6 e assume um conhecimento básico de GML. Para este tutorial,o modo avançado precisa estar ativado. Por favor, note que existem muitos métodos de criação de um inventário e que este é apenas um método e que muito provavelmente será melhor e mais rapido do que os outros métodos disponíveis. Eu tentei fazer um tutorial tão amigável quanto possível. Sempre que há diferenças no código entre Game Maker 5 e Game Maker 6 eu coloco os dois códigos. Todos os outros códigos devem ser compatíveis com as duas versões.
Nota: Este script usa o inventário como uma variável e, portanto, não vai funcionar se você tem um objeto, sala, sprite ou qualquer outra coisa também chamado de inventário.
Como começar
Primeiro você deve pensar em si o que você quer ter no inventário. Os itens que devem estar nele. Para o tutorial eu vou usar os seguintes itens:
Temos agora de decidir quantos de cada item que você pode ter e com quantos você começa no jogo.
Para o inventário vou usar uma sala em que todos os itens são apresentados como sprites com um número no canto mostrando quais os itens que você tem. Para este inventário vou usar um array para armazenar todos os dados dentro. Nós devemos primeiro decidir quais os dados que vão ter. No nosso caso vamos armazenar os seguintes dados:
Para armazenar esses dados, vou usar um array 2D. Cada item receberá um número. Dentro de um array 2D, agora você pode armazenar para cada item várias coisas. Todas essas informações devem ser declaradas no início do jogo. Isto irá como:
Desenhando o inventário
Agora você precisa desenhar o sistema de inventário. Neste tutorial vou explicar como fazê-lo em uma room especial para o inventário, onde tudo é armazenado. Para desenhar o inventário por um objeto especial que é usado apenas quando é colocado na mesma room. Para fazer o inventário de uma boa vista eu vou ter as seguintes dimensões:
Como temos 5 itens para exibir cada 100 de largura que exige uma largura de pelo menos 100 * 5 = 500 pixels. Como a sala é de 640 de largura, podemos colocar o inventário completo em uma linha e tirar o resto da tela para a descrição dos itens. Se temos 5 itens temos 6 espaços vazios entre os itens. Assim, temos 6 pontos de largura (640-500) / 6 = 23.3 pixels de largura.
Agora vamos começar com o código de desenho. Precisamos chamar a itens um por um na tela. Nós temos cinco itens. Então, primeiro precisamos ter um laço que atrai os sprites de todos os objetos (É claro que o código de desenho vai no evento de desenho):
Game Maker 5
Este código irá chamar as cinco imagens na tela de inventário na linha de cima como mostra a imagem. No entanto, você apenas deseja que o item seja exibido se estiver em sua posse. Então você precisa usar (É claro que o código de desenho vai no evento de desenho):
Game Maker 5
Se o item não está no seu código isso vai desenhar um quadrado branco nas coordenadas em que o sprite deve ser desenhado. Uma outra coisa que você gostaria de ter é que o número de itens que você tem do objeto é exibida com a imagem. Você, todavia, só quer que, com itens que você pode ter mais de um. Portanto, use o código (É claro o código de desenho vai no evento de desenho):
Game Maker 5
Game Maker 5
Outro exemplo:
Se você perder uma vida use o seguinte código:
Criei um GMD muito básico e GM6 para mostrar como usar esse código, pegue-o aqui(Download do tutorial). Se você quiser usar múltiplas linhas de itens basta colar o código duas vezes e substituir todos os comandos com a coordenada y, com o novo.
Este tutorial foi criado originalmente por:
Simon Donkers.
Bom desenvolvimento a todos,até!
Descrição: Tutorial mostrando passo a passo de como criar um inventário.
Nível de dificuldade: Médio/Avançado
Requerimentos: O criador do tutorial(que não sou eu) testou no GM 5 e 6,mais creio que irá funcionar em outros Game Makers,já que alguns(ou todos) dos códigos utilizados neste tutorial você pode encontrar no GM 7,GM 8 e afins.
Desenvolvimento:
OBS: O tutorial a seguir não foi obra minha,eu traduzi deste site e vim postar aqui para a galera.
Introdução
Este tutorial foi criado para Game Maker 5 e 6 e assume um conhecimento básico de GML. Para este tutorial,o modo avançado precisa estar ativado. Por favor, note que existem muitos métodos de criação de um inventário e que este é apenas um método e que muito provavelmente será melhor e mais rapido do que os outros métodos disponíveis. Eu tentei fazer um tutorial tão amigável quanto possível. Sempre que há diferenças no código entre Game Maker 5 e Game Maker 6 eu coloco os dois códigos. Todos os outros códigos devem ser compatíveis com as duas versões.
Nota: Este script usa o inventário como uma variável e, portanto, não vai funcionar se você tem um objeto, sala, sprite ou qualquer outra coisa também chamado de inventário.
Como começar
Primeiro você deve pensar em si o que você quer ter no inventário. Os itens que devem estar nele. Para o tutorial eu vou usar os seguintes itens:
- vidas
- espada
- espada larga
- arco
- dinheiro
Temos agora de decidir quantos de cada item que você pode ter e com quantos você começa no jogo.
- vidas(Max. 10,começa com 3)
- espada (Max. 1,começa com 1)
- espada larga (Max. 1,começa sem)
- arco (Max. 1,começa sem)
- dinheiro (sem Max. assim que adicionar um máximo de digamos: 999999,começa com 10)
Para o inventário vou usar uma sala em que todos os itens são apresentados como sprites com um número no canto mostrando quais os itens que você tem. Para este inventário vou usar um array para armazenar todos os dados dentro. Nós devemos primeiro decidir quais os dados que vão ter. No nosso caso vamos armazenar os seguintes dados:
- Nome do item
- Descrição do item
- Sprite do item
- Quantidade máxima do item
- Quantidade atual do item
Para armazenar esses dados, vou usar um array 2D. Cada item receberá um número. Dentro de um array 2D, agora você pode armazenar para cada item várias coisas. Todas essas informações devem ser declaradas no início do jogo. Isto irá como:
- Código:
global.inventory[0,0]:='Vidas'; //Nome do item
global.inventory[0,1]:='Esta é a quantidade de vidas você tem.'; //Decrição do item
global.inventory[0,2]:=sprite_vidas; //A sprite do item
global.inventory[0,3]:=10; //O valor máximo do item
global.inventory[0,4]:=3; //O valor inicial do item
global.inventory[0,5]:='' //O código que será executado quando o item for selecionado
- Código:
global.inventory[1,0]:="Espada"; //Nome do item
global.inventory[1,1]:="Uma espada simples e barata; //Descrição do item
global.inventory[1,2]:=sprite_sword_basic; //Sprite do item
global.inventory[1,3]:=1; //O valor máximo do item
global.inventory[1,4]:=1; //O valor inicial do item
global.inventory[1,5]:="global.weapon:="sword";" //O código que será executado quando o item for selecionado
Desenhando o inventário
Agora você precisa desenhar o sistema de inventário. Neste tutorial vou explicar como fazê-lo em uma room especial para o inventário, onde tudo é armazenado. Para desenhar o inventário por um objeto especial que é usado apenas quando é colocado na mesma room. Para fazer o inventário de uma boa vista eu vou ter as seguintes dimensões:
- Todas as sprites dos itens são de 100x100
- A room é de 640x480
Como temos 5 itens para exibir cada 100 de largura que exige uma largura de pelo menos 100 * 5 = 500 pixels. Como a sala é de 640 de largura, podemos colocar o inventário completo em uma linha e tirar o resto da tela para a descrição dos itens. Se temos 5 itens temos 6 espaços vazios entre os itens. Assim, temos 6 pontos de largura (640-500) / 6 = 23.3 pixels de largura.
Agora vamos começar com o código de desenho. Precisamos chamar a itens um por um na tela. Nós temos cinco itens. Então, primeiro precisamos ter um laço que atrai os sprites de todos os objetos (É claro que o código de desenho vai no evento de desenho):
Game Maker 5
- Código:
for(i:=0; i<=4; i+=1)
{
draw_sprite(global.inventory[i,2],-1,23.3+i*(100+23.3),23.3);
}
- Código:
for(i:=0; i<=4; i+=1)
{
draw_sprite(global.inventory[i,2],-1,23.3+i*(100+23.3),23.3);
}
Este código irá chamar as cinco imagens na tela de inventário na linha de cima como mostra a imagem. No entanto, você apenas deseja que o item seja exibido se estiver em sua posse. Então você precisa usar (É claro que o código de desenho vai no evento de desenho):
Game Maker 5
- Código:
brush_style:=bs_solid;
brush_color:=c_white;
pen_size:=2;
pen_color:=c_black;
for(i:=0; i<=4; i+=1)
{
if global.inventory[i,4]>0 then
{
draw_sprite(global.inventory[i,2],-1,23.3+i*(100+23.3),23.3);
}
else
{
draw_rectangle(23.3+i*(100+23.3),23.3,23.3+i*(100+23.3)+100,123.3);
}
}
- Código:
draw_set_font(fnt_your_font); //font to use
draw_set_color(c_black);
for(i:=0; i<=4; i+=1)
{
if global.inventory[i,4]>0 then
{
draw_sprite(global.inventory[i,2],-1,23.3+i*(100+23.3),23.3);
}
else
{
draw_rectangle(23.3+i*(100+23.3),23.3,23.3+i*(100+23.3)+100,123.3,false);
}
}
Se o item não está no seu código isso vai desenhar um quadrado branco nas coordenadas em que o sprite deve ser desenhado. Uma outra coisa que você gostaria de ter é que o número de itens que você tem do objeto é exibida com a imagem. Você, todavia, só quer que, com itens que você pode ter mais de um. Portanto, use o código (É claro o código de desenho vai no evento de desenho):
Game Maker 5
- Código:
brush_style:=bs_solid;
brush_color:=c_white;
pen_size:=2;
pen_color:=c_black;
font_align:=fa_right;
font_size:=12;
font_color:=c_yellow;
for(i:=0; i<=4; i+=1)
{
if global.inventory[i,4]>0 then
{
draw_sprite( global.inventory[i,2] , -1 , 23.3 + i*(100+23.3) , 23.3);
if global.inventory[i,3]>1 then
{
draw_text(23.3 + i*(100+23.3) + 97 , 100 , global.inventory[i,4]);
}
}
else
{
draw_rectangle(23.3+i*(100+23.3),23.3,23.3+i*(100+23.3)+100,123.3);
}
}
- Código:
draw_set_font(fnt_your_font);
draw_set_halign(fa_right);
for(i:=0; i<=4; i+=1)
{
if global.inventory[i,4]>0 then
{
draw_sprite( global.inventory[i,2] , -1,23.3 + i*(100+23.3) , 23.3);
if global.inventory[i,3]>1 then
{
draw_set_color(c_yellow);
draw_text(23.3 + i*(100+23.3) + 97 , 100 , global.inventory[i,4]);
}
}
else
{
draw_set_color(c_black);
draw_rectangle(23.3 + i*(100+23.3) , 23.3 , 23.3 + i*(100+23.3) + 100 , 123.3,false);
}
}
Game Maker 5
- Código:
//se o mouse está acontecendo na altura verticar correta
if mouse_y>23.3 and mouse_y<123.3 then
{
//Checar cada item separadamente
for(i:=0; i<=4; i+=1)
{
//Se o mouse está na coordenada x correta
if mouse_x > (23.3 + i*123.3) and mouse_x < (123.3 + i*123.3) then
{
//set the font and draw the description
font_size:=14;
font_align:=fa_center;
font_color:=c_white;
draw_text_ext(320 , 140 , global.inventory[i,1] , -1 , 630);
//if you click on the item
if mouse_button=mb_left then
{
execute_string( global.inventory[i,5]);
}
}
}
}
- Código:
//se o mouse está acontecendo na altura verticar correta
if mouse_y>23.3 and mouse_y<123.3 then
{
//Checar cada item separadamente
for(i:=0; i<=4; i+=1)
{
//Se o mouse está na coordenada x correta
if mouse_x > (23.3+i*123.3) and mouse_x < (123.3+i*123.3) then
{
draw_set_font(fnt_your_font);
draw_set_halign(fa_center);
draw_set_color(c_white);
draw_text_ext(320 , 140 , global.inventory[i,1] , -1 , 630);
//if you click on the item
if mouse_button=mb_left then
{
execute_string( global.inventory[i,5]);
}
}
}
}
- Código:
//argument0 é o item que você quer adicionar
//argument1 é a quantidade que você quer adicionar
global.inventory[argument0,4]+=argument1;
if global.inventory[argument0,4]>global.inventory[argument0,3] then
{
global.inventory[argument0,4]:=global.inventory[argument0,3];
}
- Código:
add_item(4,10);
Outro exemplo:
Se você perder uma vida use o seguinte código:
- Código:
if global.inventory[0,4]>1 then
{
global.inventory[0,4]-=1;
room_restart();
}
else
{
highscore_show(score);
game_restart();
}
Criei um GMD muito básico e GM6 para mostrar como usar esse código, pegue-o aqui(Download do tutorial). Se você quiser usar múltiplas linhas de itens basta colar o código duas vezes e substituir todos os comandos com a coordenada y, com o novo.
Este tutorial foi criado originalmente por:
Simon Donkers.
Bom desenvolvimento a todos,até!
Markituh- Games Ranking :
Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios :
x 0 x 1 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Criando um inventário
legal,mas voce podia mostrar os resultados,na minha opniao.
jpaulo- Data de inscrição : 21/03/2010
Reputação : 0
Número de Mensagens : 345
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Criando um inventário
Nossa ta otimo, mas você bem que poderia postar uma engine.
______________________________________________________________
______________________________________________________________
Não entendi, na sua opinião o q?na minha opiniao.
Thiago_o_programador- Games Ranking :
Notas recebidas : D - C - D - C
Data de inscrição : 14/05/2009
Reputação : 7
Número de Mensagens : 713
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 1
x 0 x 0 x 0
Re: Criando um inventário
eu acho q ele poderia mostrar os resultados de inventario.
jpaulo- Data de inscrição : 21/03/2010
Reputação : 0
Número de Mensagens : 345
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Criando um inventário
ta legal, agora entendi, ei cara posta uma engine aí. ;)
Thiago_o_programador- Games Ranking :
Notas recebidas : D - C - D - C
Data de inscrição : 14/05/2009
Reputação : 7
Número de Mensagens : 713
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 1
x 0 x 0 x 0
Re: Criando um inventário
Bem legal o tuto! Parabéns, se continuar assim, eu vou ter que sair da equipe, porque nao vou conseguir me igualar a você desse jeito
Mas agora falando serio,
Ficou muito bom mesmo esse tutorial, parabens, se superou totalmente. Espero que esse conhecimento continue crescendo
Go EQUIPE ALFA, go!
Mas agora falando serio,
Ficou muito bom mesmo esse tutorial, parabens, se superou totalmente. Espero que esse conhecimento continue crescendo
Go EQUIPE ALFA, go!
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos