1 [Tutorial]Criando um inventário (POR JV JUSTINO) 20/11/11, 09:00 am
HenRyqUéè
Administrador
Avaliador
Helper
Nome: Criando um inventário
Requerimentos: GM8 Lite/Pro
Descrição: Como criar um inventário usando Arrays
Nível de Dificuldade: Intermediário/Avançado
Olá a todos!
Neste tutorial, será ensinado a criar um tutorial usando Arrays e o loop For.
Para entender o tutorial, será preciso ter conhecimento sobre Arrays e o loop For.
Vamos Começar!
Para fazer o nosso inventário, usaremos alguns simples itens.
Para isso, crie uma sprite de nome spr_items. Carregue nela, respectivamente, as imagens:
E coloque como primeira sub-imagem um espaço vazio. Logo será explicado o porquê.
Aqui é onde tudo começa. Nosso inventário terá 32 slots, ou seja, os espaços onde serão armazenados os itens.
Crie um objeto chamado obj_inv. Nele coloque o seguinte código:
A variável global.inv é uma array bi-dimensional. O primeiro índice define o slot que será criado/alterado. Foram criados 32 slots, mas você pode colocar mais slots também. O segundo índice define os atributos do slot. Eles são
Agora no evento Step, vamos colocar este pequeno código:
Quando apertar para cima ou para baixo, o selecionador irá se mover.
Agora vamos desenhar o inventário. No evento Draw coloque:
Seu inventário já está pronto!
O inventário já foi criado, mas não configurado. Mesmo que um item fosse adicionado um item ao inventário, ele não teria nome, imagem e nem descrição.
Para configurar tudo isso, será usado um script, chamado scr_inv_items. Nele será colocado o seguinte código:
E no evento Step coloque:
Agora tudo foi configurado. Sempre que for adicionado um item no slot, ele receberá nome, descrição e imagem.
Agora que tudo já foi preparado, vamos fazer os itens que serão armazenados.
Crie um objeto e chame-o de obj_items. No evento Create coloque:
O objeto terá a sprite a sprite spr_items, não será animado, e sua sub-imagem é a número 1.
Agora no evento Key Press > Digits > 1 coloque:
Assim que for pressionada a tecla 1, ele checará se há um slot vazio, ou um slot ocupado pelo mesmo item. Se houver, será quebrado o loop e o item será adicionado ao slot, e a quantidade será aumentada.
Teste o jogo. Pressione a tecla 1 e verá que o item é adicionado ao slot, e quando selecionado, desenha a sua imagem e sua descrição.
Podem ser feitos mais itens. Para isso, cole os códigos, seguindo o spoiler:
E este tutorial acaba por aqui. Como devem ter visto, ele está bem simples. Caso queira ver algo mais completo, veja minha Engine de RPG, que utiliza o sistema aqui ensinado.
Qualquer dúvida, crítica ou sugestão, é só falar!
さよぅなら!
Requerimentos: GM8 Lite/Pro
Descrição: Como criar um inventário usando Arrays
Nível de Dificuldade: Intermediário/Avançado
Olá a todos!
Neste tutorial, será ensinado a criar um tutorial usando Arrays e o loop For.
Para entender o tutorial, será preciso ter conhecimento sobre Arrays e o loop For.
Vamos Começar!
1- Preparando o Conteúdo
Para fazer o nosso inventário, usaremos alguns simples itens.
Para isso, crie uma sprite de nome spr_items. Carregue nela, respectivamente, as imagens:
E coloque como primeira sub-imagem um espaço vazio. Logo será explicado o porquê.
2- Criando o Inventário
Aqui é onde tudo começa. Nosso inventário terá 32 slots, ou seja, os espaços onde serão armazenados os itens.
Crie um objeto chamado obj_inv. Nele coloque o seguinte código:
- Código:
for(i=1;i<=32;i+=1)
{
global.inv[i,0]=0;
global.inv[i,1]='-';
global.inv[i,2]=0;
global.inv[i,3]=0;
global.inv[i,4]='';
}
selector=1;
A variável global.inv é uma array bi-dimensional. O primeiro índice define o slot que será criado/alterado. Foram criados 32 slots, mas você pode colocar mais slots também. O segundo índice define os atributos do slot. Eles são
- 0- É a identificação do slot. Cada item tem um número de identificação. Quando o seu valor é 0, o slot ficará vazio
- 1- É o nome do item.
- 2- É a quantidade de itens no slot. Quando se tem mais de um item do mesmo tipo no inventário, eles podem ocupar o mesmo slot.
- 3- É a sprite do item. Como a sprite dos itens é única, este índice definirá a sub-imagem de cada item. E quando não há nenhum item no slot, não será desenhado nada. Por isso foi colocada a sub-imagem em branco.
- 4- É a descrição do item. Uma breve descrição sobre o item do slot, dizendo o que é e o que faz.
Agora no evento Step, vamos colocar este pequeno código:
- Código:
if(keyboard_check_pressed(vk_up) && selector!=1)
{
selector-=1;
}
if(keyboard_check_pressed(vk_down) && selector!=32)
{
selector+=1;
}
Quando apertar para cima ou para baixo, o selecionador irá se mover.
Agora vamos desenhar o inventário. No evento Draw coloque:
- Código:
for(i=1;i<=16;i+=1)
{
draw_set_color(c_black)
draw_text(112,128+i*14,string(global.inv[i,1]))
draw_text(352,128+i*14,string(global.inv[i+16,1]))
draw_text(288,128+i*14,'x'+string(global.inv[i,2]))
draw_text(512,128+i*14,'x'+string(global.inv[i+16,2]))
}
draw_sprite(spr_items,global.inv[selector,3],96,80)
draw_set_color(c_black)
draw_text(160,80,string(global.inv[selector,4]))
if(selector<=16)
draw_sprite(spr_arrow,0,96,128+selector*14);
else
draw_sprite(spr_arrow,0,336,-96+selector*14);
Seu inventário já está pronto!
3- Configurando os Slots
O inventário já foi criado, mas não configurado. Mesmo que um item fosse adicionado um item ao inventário, ele não teria nome, imagem e nem descrição.
Para configurar tudo isso, será usado um script, chamado scr_inv_items. Nele será colocado o seguinte código:
- Código:
for(i=1;i<=32;i+=1)
{
if global.inv[i,0]=1
{
global.inv[i,1]='Tônico'
global.inv[i,3]=1
global.inv[i,4]='Recupera 50 HP de um#aliado'
}
if global.inv[i,0]=2
{
global.inv[i,1]='Tônico Médio'
global.inv[i,3]=2
global.inv[i,4]='Recupera 200 HP de um#aliado'
}
if global.inv[i,0]=3
{
global.inv[i,1]='Tônico Completo'
global.inv[i,3]=3
global.inv[i,4]='Recupera todo HP de um#aliado'
}
if global.inv[i,0]=4
{
global.inv[i,1]='Poção Simples'
global.inv[i,3]=4
global.inv[i,4]='Recupera 20 MP de um#aliado'
}
if global.inv[i,0]=5
{
global.inv[i,1]='Poção Mágica'
global.inv[i,3]=5
global.inv[i,4]='Recupera 50 MP de um#aliado'
}
if global.inv[i,0]=6
{
global.inv[i,1]='Mega Poção'
global.inv[i,3]=6
global.inv[i,4]='Recupera todo o MP de#um aliado'
}
if global.inv[i,0]=7
{
global.inv[i,1]='Elixir'
global.inv[i,3]=7
global.inv[i,4]='Recupera todo o HP e#MP de um aliado'
}
if global.inv[i,0]=8
{
global.inv[i,1]='Ultra Elixir'
global.inv[i,3]=8
global.inv[i,4]='Recupera todo o HP e#MP de todos os#aliados'
}
if global.inv[i,0]=9
{
global.inv[i,1]='Cura'
global.inv[i,3]=9
global.inv[i,4]='Cura o status de um#aliado'
}
if global.inv[i,0]=10
{
global.inv[i,1]='Revive'
global.inv[i,3]=10
global.inv[i,4]='Revive um aliado com#metade do HP'
}
}
E no evento Step coloque:
- Código:
scr_inv_items()
Agora tudo foi configurado. Sempre que for adicionado um item no slot, ele receberá nome, descrição e imagem.
4- Armazenando Itens
Agora que tudo já foi preparado, vamos fazer os itens que serão armazenados.
Crie um objeto e chame-o de obj_items. No evento Create coloque:
- Código:
sprite_index=spr_items;
image_speed=0;
image_index=1;
O objeto terá a sprite a sprite spr_items, não será animado, e sua sub-imagem é a número 1.
Agora no evento Key Press > Digits > 1 coloque:
- Código:
for(i=1;i<=32;i+=1)
{
if global.inv[i,0]=0
{
global.inv[i,0]=1;
global.inv[i,2]=1;
break;
}
if global.inv[i,0]=1 and global.inv[i,2]<99
{
global.inv[i,2]+=1;
break;
}
}
Assim que for pressionada a tecla 1, ele checará se há um slot vazio, ou um slot ocupado pelo mesmo item. Se houver, será quebrado o loop e o item será adicionado ao slot, e a quantidade será aumentada.
Teste o jogo. Pressione a tecla 1 e verá que o item é adicionado ao slot, e quando selecionado, desenha a sua imagem e sua descrição.
Podem ser feitos mais itens. Para isso, cole os códigos, seguindo o spoiler:
- Clique aqui para ver os códigos:
- No evento Key Press > Digits > 2 coloque:
- Código:
for(i=1;i<=32;i+=1)
{
if global.inv[i,0]=0
{
global.inv[i,0]=2;
global.inv[i,2]=1;
break;
}
if global.inv[i,0]=2 and global.inv[i,2]<99
{
global.inv[i,2]+=1;
break;
}
}
- Código:
for(i=1;i<=32;i+=1)
{
if global.inv[i,0]=0
{
global.inv[i,0]=3;
global.inv[i,2]=1;
break;
}
if global.inv[i,0]=3 and global.inv[i,2]<99
{
global.inv[i,2]+=1;
break;
}
}
- Código:
for(i=1;i<=32;i+=1)
{
if global.inv[i,0]=0
{
global.inv[i,0]=4;
global.inv[i,2]=1;
break;
}
if global.inv[i,0]=4 and global.inv[i,2]<99
{
global.inv[i,2]+=1;
break;
}
}
- Código:
for(i=1;i<=32;i+=1)
{
if global.inv[i,0]=0
{
global.inv[i,0]=5;
global.inv[i,2]=1;
break;
}
if global.inv[i,0]=5 and global.inv[i,2]<99
{
global.inv[i,2]+=1;
break;
}
}
- Código:
for(i=1;i<=32;i+=1)
{
if global.inv[i,0]=0
{
global.inv[i,0]=6;
global.inv[i,2]=1;
break;
}
if global.inv[i,0]=6 and global.inv[i,2]<99
{
global.inv[i,2]+=1;
break;
}
}
- Código:
for(i=1;i<=32;i+=1)
{
if global.inv[i,0]=0
{
global.inv[i,0]=7;
global.inv[i,2]=1;
break;
}
if global.inv[i,0]=7 and global.inv[i,2]<99
{
global.inv[i,2]+=1;
break;
}
}
- Código:
for(i=1;i<=32;i+=1)
{
if global.inv[i,0]=0
{
global.inv[i,0]=8;
global.inv[i,2]=1;
break;
}
if global.inv[i,0]=8 and global.inv[i,2]<99
{
global.inv[i,2]+=1;
break;
}
}
- Código:
for(i=1;i<=32;i+=1)
{
if global.inv[i,0]=0
{
global.inv[i,0]=9;
global.inv[i,2]=1;
break;
}
if global.inv[i,0]=9 and global.inv[i,2]<99
{
global.inv[i,2]+=1;
break;
}
}
- Código:
for(i=1;i<=32;i+=1)
{
if global.inv[i,0]=0
{
global.inv[i,0]=10;
global.inv[i,2]=1;
break;
}
if global.inv[i,0]=10 and global.inv[i,2]<99
{
global.inv[i,2]+=1;
break;
}
}
E este tutorial acaba por aqui. Como devem ter visto, ele está bem simples. Caso queira ver algo mais completo, veja minha Engine de RPG, que utiliza o sistema aqui ensinado.
Qualquer dúvida, crítica ou sugestão, é só falar!
さよぅなら!