Como fazer item ir para inventario

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

Como fazer item ir para inventario

Mensagem por adams3do em Qua 04 Jul 2012, 11:57

É o seguinte fiz varios testes com meu inventario de 1 slot mas não consegui muitas coisas mas já compreendi +- o que tenho que fazer so não sei exatamente como.
ja tenho o inventario(com alguns codigos)
ja tenho o slot(sem codigos ou variaveis)
Player com codigos
poção (sem codigos)
O que eu quero fazer:
o player chega perto da poção e aperta z e o item vai para o slot vazio
O que eu sei fazer:
Evento de colisão na poção e o codigo if keyboard_check_press (ord('Z') {

intance_destroy()}
(so que não sei como fazer o item ir para o slot)
Obs:lembrando que meu slot não tem nenhum codigo ou variavel falando que ele está cheio o vazio.

adams3do

Número de Mensagens : 24
Data de inscrição : 27/06/2012
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Como fazer item ir para inventario

Mensagem por Markituh em Qua 04 Jul 2012, 12:32

Primeiramente você precisaria de uma variável (pode ser uma comum, já que só tem um slot) para armazenar os dados deste objeto. Numa linguagem de programação convencional, uma estrutura que contenha estes dados seria uma mão na roda. Mas para um exemplo simples, a variável contendo a sprite do objeto já basta (apesar de o método para criar o objeto no jogo precisar ser mais trabalhado).

Ao pressionar Z, defina essa variável do inventário para a sprite do objeto (usando a pseudo-variável sprite_index), e então destrua a instância. Agora no Draw do inventário, você vai usar a função draw_sprite para desenhar o conteúdo dessa variável. Mas para evitar quaisquer erros, precisamos verificar se a variável não está "vazia" - no GM há uma keyword chamada noone, que é usada para identificar recursos "vazios", não existentes. Assim, no Create de seu inventário, defina a variável para noone.

Agora, no evento de desenho, cheque se a variável não é igual a noone, e por fim desenhe a mesma usando a função que te disse antes. Mas obviamente, antes desta porção de código você deve desenhar o inventário em si.
Código:
if (var_do_obj != noone)
{
    // Sprite | index da sprite | x | y
    // Desenha a sprite nas coordenadas do inventário (acrescente uns valores no lugar do zero para alinhar ao slot)
    draw_sprite(var_do_obj, 0, x+0, y+0);
}
Agora para criar, você pode fazer o seguinte:
Código:
i = 0; // Define uma variável de iteração
obj = noone // Nosso objeto a ser criado

while (object_exists(i)) // Enquanto o objeto existir (afinal não há uma função pra determinar o número de objetos)
{
    if (object_get_sprite(i) == var_do_obj) // Checamos se a sprite do obj é a que está na variável
    {
        // É esse o nosso objeto. Yay! =D
        obj = i;
        break; // Quebra o loop while
    }
}
Isso dá certo porque cada recurso de determinado tipo no Game Maker tem seu próprio número de identificação. Assim, só é usar a variável obj e criar uma instância usando instance_create(). O código para posicionar (provavelmente usando o mouse) agorá é com você ;)

Bom desenvolvimento. Abraços!

___________

"Não deixe para amanhã o que se pode fazer hoje"

Links úteis:
Índice de Tutoriais
Manual online do GMS

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Como fazer item ir para inventario

Mensagem por adams3do em Qua 04 Jul 2012, 16:45

Deu erro e não compreendi o segundo codigo aqui o erro e porque o draw do inventario tenho que colocar akele codigo la ele nao deveria ser no slot (o slot que ta vazio nao o inventario)
utilizo o obj inv e o obj slot
me explique um pouco mais sobre esse codigo. e me fale em que eu errei.
Código:


___________________________________________
ERROR in
action number 1
of  Step Event
for object obj_poçao:

Error in code at line 6:
      if (object_get_sprite(i) == var_do_obj) // Checamos se a sprite do obj é a que está na variável
                                  ^
at position 34: Unknown variable var_do_obj

adams3do

Número de Mensagens : 24
Data de inscrição : 27/06/2012
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Como fazer item ir para inventario

Mensagem por Gonçalves em Qua 04 Jul 2012, 16:55

Crie a var var_do_obj no Create ou vá em Global Game Settings > Errors e ative a opção Treat unintialized variables as 0 (Que dá valor 0 à todas as variáveis não iniciadas).

Gonçalves

Ranking : Nota B
Número de Mensagens : 1013
Data de inscrição : 29/10/2010
Notas recebidas : B + A + C
Reputação : 79
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Como fazer item ir para inventario

Mensagem por adams3do em Qua 04 Jul 2012, 18:55

com isso meu projeto fico travado e nao movia nada ai tive q finalizar e perdi o codigo a variavel que fez isso?ou o valor da variavel?

adams3do

Número de Mensagens : 24
Data de inscrição : 27/06/2012
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Como fazer item ir para inventario

Mensagem por Zero. em Sex 06 Jul 2012, 10:59

Cara, faz 2 items, um para o slot e um pra ser pego, pq controlar 1 só é mais dificiul.

Vc coloca no item do slot pra ele ter x=posx (posição x) e y=posy. ai no create dele vc põe uma var define , e na colisão com o obj_slot e adquirir a posição x e y do slot e define=false. Pronto só isso .

E no seu código quando aperta Z o obj é destruido e tem que criar o obj do slot no proximo slot vazio. Isso vc pode trabalhar com array, na minha engine tem isso pronto.

Zero.

Número de Mensagens : 1295
Idade : 20
Data de inscrição : 19/08/2010
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Como fazer item ir para inventario

Mensagem por adams3do em Dom 15 Jul 2012, 00:34

vi sua engine : http://gmbr.forumeiros.com/t22920-engine-inventario-barra-de-vida-personalizada-pop-up-message
como você fez para aparecer todos inventarios fui procurar no draw so tinha uma sprite a ser desenhada ,e ainda nao compreendi como mandar o item para o inventario suas linhas de programação sao muito complexas.help me plis

adams3do

Número de Mensagens : 24
Data de inscrição : 27/06/2012
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Como fazer item ir para inventario

Mensagem por Zero. em Dom 15 Jul 2012, 18:56

olha lá .
Perceba que quando vc abre o inventário, no obj_aba_item, Cria-se um loop.
é esse loop que vai definir qual slot vai ser o obj_slot, e vai criar um slot de 36 em 36 pixeis de diferença .

Zero.

Número de Mensagens : 1295
Idade : 20
Data de inscrição : 19/08/2010
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Como fazer item ir para inventario

Mensagem por adams3do em Seg 16 Jul 2012, 18:44

eu tava olhando o seu e notei que seu nivel de programação e super mega ulta power evoluido mas to pensando em decretar variaveis da seginte forma
create(plyaer)
poção=0
colisão com poção
destoyer blabla
poção +1
isso ainda não testei mas pode vir a funcionar!
no caso teria como fazer o que falei para fazer um inventario e qual seria a diferença dele para o seu me responsa se possivel.(se quizer explico mais detalhadamente).

adams3do

Número de Mensagens : 24
Data de inscrição : 27/06/2012
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Como fazer item ir para inventario

Mensagem por Conteúdo patrocinado Hoje à(s) 18:04


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