Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

Combinar itens no inventario

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
Rouca_SG
Membro
Membro
Reações: 0
Mensagens: 22

Combinar itens no inventario

Mensagem por Rouca_SG » Seg Out 17, 2016 6:10 pm

Oi gente!
boa tarde \o/

Voltei aqui para falar de inventario (de novo) kk
Não liguem por eu ser noob por favor kkk

Eu consegui fazer um obj_inventario com o que eu tenho aprendido aqui no forum, mas me veio a ideia maluca de combinar itens no meu jogo haha

A minha ideia foi simples. Criar um inventario a parte, onde eu posso enviar os item e quando estes puderem ser combinados iria aparecer a opção de combinar e o novo item seria criado
Exemplo: item_A + item_B = item_C

Então usei o mesmo codigo para criar um novo inventario que chamei de "obj_combinar"
Eu consigo transportar itens do obj_inventario para o obj_combinar sem problemas, mas eu descobri que não consigo fazer uma relação entre os itens que estão lá :(

Imagem

Quero dizer, pesquisei varias formas, testei varias maneiras, mas cada slot é independente e não conversa com o outro.
Assim, não da para saber se tem item_A, item_B ou item_C no inventario para poder ser combinado

Esse é o codigo dos 2 scripts usados para fazer o inventario que eu estou usando e que quero adaptar para fazer um obj_combinar

Código: Selecionar todos

///scr_criar_slots

//maximo por slot
max_slot = argument1;

//---------------------
var spr   atual;
atual = 1;

spr = sprite_index;
sprite_index = spr_slot;
for(Y = 0 Y < ceil( sqrt(  slots)* sprite_height)    Y += sprite_height){
for(X = 0 X < floor( sqrt(  slots)* sprite_height) X += sprite_width){
//criar slots-----------------
if(atual <= slots){
slot[atual] = instance_create(x + X, y + Y,obj_slot);
slot[atual].item = 0;
slot[atual].quantidade = 0;
slot[atual].X = X;
slot[atual].Y = Y;
slot[atual].pai = id;
//---------------------
atual += 1;
}
}
}






///scr_item

var slot; slot = 1;
while(slot <= instance_number(obj_slot)){


if(obj_inventario.slot[slot].quantidade < obj_inventario.max_slot
 and obj_inventario.slot[slot].item = argument0)
or
(obj_inventario.slot[slot].quantidade = 0)
  {
obj_inventario.slot[slot].item = argument0;
obj_inventario.slot[slot].quantidade += 1;
instance_destroy();
exit
}
else
{
slot += 1;
}
}

Outros códigos importantes:

Código: Selecionar todos

// no evento draw do obj_slot
image_index = item;
x=pai.x + X;
y=pai.y + Y;
draw_sprite (sprite_index,image_index,x,y);
draw_test(x+20,y+20,quantidade);

//colisão do jogador com o item
scr_item(1) // adiciona o item 1 no inventario. cada item tem um numero que muda a sprite no slot

//como os itens são utilizados
if (slot_ID.quantidade >0){
if (slot_ID.item=1){ 
slot_ID.quantidade -=1;} /// aqui tambem é onde é posto o efeito que o item tratar no jogador.
}

//item enviado para os slots de combinação
scr_combinar_itens(1) // ao selecionar a opção 'combinar' nas opçoes. diminui a quantidade do item no inventario comum e acrescenta para o obj_combinar, e vice e versa caso use a opçõa voltar



Eu não sei se dá para fazer um sistema de combinação de itens a partir daqui ou se é melhor eu encontra algum outro codigo especifico para isso.
Alguem poderia me dar uma luz? ou indicar a direção certa?


obs: Editei a publicação colocando um gif do inventario para ficar mais fácil de entender o que estou tentando fazer =)
Tambem acrescentei outros codigos para exemplificar como as coisas funcionam 
Se tudo der certo logo disponibilizarei a engine desse sistema combinando cores :D
Editado pela última vez por Rouca_SG em Qua Out 19, 2016 4:35 pm, em um total de 2 vezes.

Avatar do usuário
Rodrigo Santiago
Colaborador
Colaborador
Reações: 0
Mensagens: 273

Re: Combinar itens no inventario

Mensagem por Rodrigo Santiago » Qua Out 19, 2016 2:02 pm

Bem, você pode percorrer o array :

Este script pode Verificar se é possivel(caso vc queira mostrar na tela antes de fazer a operação) :

Código: Selecionar todos

///verificarCombinacao(itemA,itemB)
var temA, temB;
for(var i = 0; i < array_length_1d(slot); i += 1){
  if(slot[i].item == argument0){
     temA = true;
  }
  if(slot[i].item == argument1){
     temB = true;
  }
}
return temA && temB;
Agora nesse outro script você pode executar a operação :

Código: Selecionar todos

///combinar(itemA,itemB, itemC)
var posA, posB;
posA = -1;
posB = -1;
for(var i = 0; i < array_length_1d(slot); i += 1){
  if(slot[i].item == argument0){
     posA = i;
     if (posB != -1) // caso ja tenha achado B tbm sai do loop
       break;
  }
  if(slot[i].item == argument1){
     posB = i;
     if(posA  != -1) 
       break;
  }
}
if(posA!= -1 && posB != -1){
  //tirar do slot o A (eu nao sei como vc faz)
  slot[posA] <--- usa assim pra chegar no itemA
  slot[posB] <--- usa assim pra chegar no itemB
  //agora basta adicionar o item c !
}

Avatar do usuário
Rouca_SG
Membro
Membro
Reações: 0
Mensagens: 22

Re: Combinar itens no inventario

Mensagem por Rouca_SG » Qua Out 19, 2016 2:59 pm

Oi :)
Obrigada por responder \o/

Vou testar o código agora mesmo, mas pode me tirar umas duvidas?
Esse script é usado separado e mencionado no slot (ou outro objeto ou outro script) ou devo adapta-lo junto do script de inventario que eu tenho?

E sobre essa array_length_1d(slot)? o que ela faz? 
É que o gamemaker acusou como função desconhecida... também escrevi ID maiúsculo, com espaço, sem espaço e continuou acusando erro kkk
O que isso faz?

São só umas duvidas mesmo, já to pesquisando a respeito tambem :D

obrigada novamente por me responder :)

Avatar do usuário
Rodrigo Santiago
Colaborador
Colaborador
Reações: 0
Mensagens: 273

Re: Combinar itens no inventario

Mensagem por Rodrigo Santiago » Qua Out 19, 2016 3:19 pm

Essa função é para o GMS(game maker studio), eu não sei como ela era no Gm8.
Ela retorna o tamanho do array, se vc ja souber o tamanho vc pode por o numero direto ali

Esse script tem q ser executado no objeto q possuir a variavel 'slot'

Avatar do usuário
Rouca_SG
Membro
Membro
Reações: 0
Mensagens: 22

Re: Combinar itens no inventario

Mensagem por Rouca_SG » Qua Out 19, 2016 3:41 pm

Agora sim entendi, parece bem mais fácil do que pensei.

Vou testar aqui e voltar aos meus estudos 
Se der certo logo trarei o resultado :D

***Editando ***

Não funcionou... Não sei que sou eu que sou noob de mais pra fazer certo ou se é problema do meu código.
De qualquer forma, vou editar o texto do tópico acima, colocando alguns outros códigos que podem ajudar, e outros detalhes a mais que seriam interessantes

Obrigada, valeu a tentativa Rodrigo :(

Responder

Quem está online

Usuários navegando neste fórum: Semrush [Bot] e 2 visitantes