Página 1 de 2

GameMaker Studio 2: Como colocar um array no objeto clone

Enviado: Sáb Out 03, 2020 12:30 pm
por GhostPower
Boa tarde
Maker,

Agora estou fazendo o inventário usando array em um objeto chamado slot.

Neste objeto(slot) tenho um codigo simples de receber o objeto(item) quando ele colidir com a item.

Olhe abaixo o codigo:

Colisao com o objeto(item)

Código: Selecionar todos

if slotEmpty
{
	slotSave[0,0] = other.item;
}
Perceba que estou usando o array de linha e colunas para fazer o inventario.

Tenho este objeto duplicado na room para adicionar cada posiçao :

slotSave = [0,0] -- Objeto(slot)
slotSave = [0,1] -- Objeto(slot) duplicado.
slotSave = [0,2] -- Objeto(slot) duplicado.
...

Assim por diante. Com faço isso sendo q nao consigo manipular as colisoes de cada objetos clonados? Tem outras formas de fazer o inventario com um unico objeto para armazenar cada posiçao?

Obs: Nao quero usar "ds_list".

Obrigado pela ajuda.

Re: GameMaker Studio 2: Como colocar um array no objeto clone

Enviado: Sáb Out 03, 2020 6:56 pm
por Chuaschinai
Não entendi muito bem, você quer ter um objeto só para gerenciar todos os slots?

Re: Re: GameMaker Studio 2: Como colocar um array no objeto clone

Enviado: Sáb Out 03, 2020 7:21 pm
por GhostPower
Boa noite
grononmc,

Isso e este objeto vou duplicar ele para cada um armazenar uma posiçao no array

Tem com fazer isso? tem outras opçoes?

Muito obrigado

Re: GameMaker Studio 2: Como colocar um array no objeto clone

Enviado: Sáb Out 03, 2020 7:39 pm
por Chuaschinai
Ta, pelo que entendi na questão de colisão do slot, seria com o mouse quando passasse por cima?, se for isso basta usar um função chamada, point_in_rectangle para checar se o mouse esta dentro deste slot.

Código: Selecionar todos

var _mouse_on_slot = point_in_rectangle(mouse_x, mouse_y, bbox_left, bbox_top, bbox_right, bbox_bottom);
if(mouse_check_button(mb_left) && _mouse_on_slot) {
    // Faz alguma coisa
}
Ele vai retornar true para a variável se o mouse estiver dentro do slot, assim você pode manipular slots duplicados.
Você pode tambem usar um Event->Mouse Enter e Mouse Leave, para saber se o mouse esta dentro do objeto.

Não sei se é realmente isso que você quer.

Re: Re: GameMaker Studio 2: Como colocar um array no objeto clone

Enviado: Dom Out 04, 2020 2:41 pm
por GhostPower
Boa tarde
grononmc,

Entao cara, a parte de colisao ja sabia fazer.

Como sao objetos duplicado nao consigo fazer isso para cada objeto na room porque nao tenho esta opçao, ou consigo?

Obrigado pela ajuda.

Re: GameMaker Studio 2: Como colocar um array no objeto clone

Enviado: Dom Out 04, 2020 4:03 pm
por Chuaschinai
No Gamemaker, cada objeto independente de ser duplicado, possui um ID único quando você cria ele, se você usar o Event->Mouse Enter(mouse entra no objeto) e Event->Mouse Leave(mouse sai do objeto), e colocar o código que necessita la, todos os objeto duplicados iram se comportar da mesma maneira, dai não precisa fazer para cada um.

Re: Re: GameMaker Studio 2: Como colocar um array no objeto clone

Enviado: Dom Out 04, 2020 5:18 pm
por GhostPower
Boa Tarde
grononmc

Entao como faço isso, ex:
...
Evento Objeto original

if colidir com o item entao
slot[0,0] = other;
fim do if


Copia do objeto
if colidir com o item entao
slot[0,1] = other;
fim do if
...
Tenho 10 copia dele, so consigo ver a colisao do original.

Ou e melhor fazer 10 objeto e ai consigo ver cada colisao? ou faço com um objeto controlador?

Qual e a melhor maneira?

Obrigado.

Re: GameMaker Studio 2: Como colocar um array no objeto clone

Enviado: Dom Out 04, 2020 6:53 pm
por Chuaschinai
Cria uma variável chamada uid nos slots, e numere eles de 0 a 9, quando colidir faça assim:

if colidir com o item entao
slot[0, uid] = other;
fim do if

Assim ele salvará com o uid respectivo do slot, pelo que entendi é isso.

Re: Re: GameMaker Studio 2: Como colocar um array no objeto clone

Enviado: Ter Out 06, 2020 8:44 pm
por GhostPower
Boa noite
grononmc,

Blz, testarei isso, mas existe um jeito do objeto controlar o inventario de uma maneira mais facil?

Obrigado pela ajuda.

Re: GameMaker Studio 2: Como colocar um array no objeto clone

Enviado: Ter Out 06, 2020 9:18 pm
por Chuaschinai
Normalmente quando faço inventário, uso um objeto de Controle, e somente desenho os slots com o Draw Gui, somente usando array, e ou ds_list, eu recomendo se for um Quick Inventory(inventário de acesso rápido), usar ds_list, pois é sempre mais fácil de manipular, e agora com a nova versão do Gamemaker é ainda mais prático de acessá-los.

Re: Re: GameMaker Studio 2: Como colocar um array no objeto clone

Enviado: Qui Out 08, 2020 7:51 pm
por GhostPower
Boa noite
grononmc,

Cara, sem colisao? Podeira mostra um exemplo simples?

Muito obrigado.

Re: GameMaker Studio 2: Como colocar um array no objeto clone

Enviado: Qui Out 08, 2020 9:16 pm
por Chuaschinai
Não entendi, você quer que o slot faça a colisão com o item?, eu estava achando que os slots eram fixos e quem colidia com os itens era o personagem, se for isso te mando um exemplo.

Re: Re: GameMaker Studio 2: Como colocar um array no objeto clone

Enviado: Sáb Out 10, 2020 7:55 am
por GhostPower
Bom dia
grononmc,

Pensei que nao existia outra forma de pegar a refencia do objeto, sem o item colidir com o objeto(slot).

Entao, um exemplo de com vc faria o seu so usando o event Draw e ds_list e etc como vc falou, apenas para comparar se mais facil ou nao.

Obrigado.

Re: GameMaker Studio 2: Como colocar um array no objeto clone

Enviado: Sáb Out 10, 2020 11:51 am
por Chuaschinai
Bom, fiz 2 exemplos bem simples, utilizando Objetos para o slot, e utilizando o Draw GUI para desenhar os slots na tela, dei um comentada no código qualquer coisa só perguntar.
Para colocar os itens nos Slots, basta arrastalos com o mouse.

Esse exemplo esta na versão 2.3 do GameMaker.
Exemplo Slot

Re: Re: GameMaker Studio 2: Como colocar um array no objeto clone

Enviado: Dom Out 11, 2020 7:23 pm
por GhostPower
Boa noite grononmc,

Vlw cara, em questao de otimizaçao, voce saberia qual consome menos recurso do pc/android: ds_list, array, etc?

Muito obrigado.

Re: GameMaker Studio 2: Como colocar um array no objeto clone

Enviado: Dom Out 11, 2020 8:18 pm
por Chuaschinai
Android não é minha área, porém depende muito da forma que você irá utilizar, creio que você nem notara a diferenças, pois normalmente não é necessário adicionar objetos a lista a todo momento, porque os problemas de performance acontece quando algo é usado por demasiado, como por exemplo adicionar milhares de dados em uma lista de uma só vez.
Arrays são sim mais rápidos não importa o sistema, a diferença entre eles e listas, é que listas são melhores manipuláveis dentro do código, e essa manipulação pode sim causar perda em performance.

Use array se preferir vai funcionar normalmente, as dicas que dou são para tomar cuidado em usar Accessors
Ex.: list[|0] = 0; é mais lento do que usar ds_list_add(list, 0)

No array tambem Ex.:
    array = [];
    array[@0] = 1;

é mais rápido fazer assim:
    array = array_create(10); Inicia um tamanho fixo
    array[@0] = 1;

É mais rápido pois você aloca o espaço na memória antes de adicionar valores ao array, em quanto opção mais lenta faz isso no momento que adiciona o valor.
No geral se precisa de performance user arrays.

Re: Re: GameMaker Studio 2: Como colocar um array no objeto clone

Enviado: Seg Out 12, 2020 11:36 am
por GhostPower
Bom dia,

Vlw grononmc, Primeiro o @ e o ponteiro no game make? Este tamanho fixo esta ligado em um array com linhas e colunas? Posso acessa assim:

array = array_create(10);
array[@var] = 0;

e para coluna:

array[@linha,@coluna] = 0;

Muito obrigado.

Re: Re: GameMaker Studio 2: Como colocar um array no objeto clone

Enviado: Seg Out 12, 2020 1:24 pm
por Chuaschinai
GhostPower escreveu:Bom dia,

Vlw grononmc, Primeiro o @ e o ponteiro no game make? Este tamanho fixo esta ligado em um array com linhas e colunas? Posso acessa assim:

array = array_create(10);
array[@var] = 0;

e para coluna:

array[@linha,@coluna] = 0;

Muito obrigado.
No caso creio que funcione assim:
array[@line, coluna], mas pode também usar de outras formas sem o @.
Ex.:
   array[line, coluna]
   array[line][coluna] <- Funcional na nova versão 2.3 do GameMaker
   ou    
   array[@line][@coluna] <- Funcional na nova versão 2.3 do GameMaker

O Accessor @, é usado como referencia, quando precisa modificar sem armazenar em outra variável como em um script.

Re: Re: GameMaker Studio 2: Como colocar um array no objeto clone

Enviado: Ter Out 13, 2020 8:54 pm
por GhostPower
Boa noite grononmc,

Vlw cara, estarei testando os exemplos.

Muito obrigado.

Re: GameMaker Studio 2: Como colocar um array no objeto clone

Enviado: Seg Nov 02, 2020 10:31 am
por GhostPower
Bom dia,

Nao consigo acessar as variaveis dos objetos clones?

Codigo Create

Código: Selecionar todos

 slot = "Vazio"
Colidi com o item

Código: Selecionar todos

 slot = "Cheio"
Mas tenho varios objeto clones dele, como faço para acessa eles?

Queria um maneira de procurar todos os slots(objeto clone) que estajam "Vazio"?

Obrigado pela ajuda.