Chuaschinai
Colaborador
Colaborador
Mensagens: 148
Registrado em: Dom Fev 14, 2016 9:19 pm
Karma: 908

Re: GS 2: Como troca o objeto usando DragAndDrop

Sáb Jan 16, 2021 7:41 pm

Creio que o problema esteja aqui, não sei bem o que esta ocorrendo, mas:
GhostPower escreveu:
global.ItemMouse.x = mouse_x;
global.ItemMouse.y = mouse_y;
if(mouse_check_button_pressed(mb_left)) {
    if slotItem != noone // Ele nao verifica se esta em cima do slot?
    {
        var itemTemp = itemDrag; // Salva o item
        itemDrag = global.ItemMouse; // Troca o item
        global.ItemMouse = itemTemp; // Muda o item
        mouse_clear(mb_left);
    }
}
 



O itemDrag é um variável temporária, e você esta usando essa variável para "tentar" armazenar o global.ItemMouse, deveria ser o slotItem.item = global.ItemMouse.
1
 
Avatar do usuário
GhostPower
Membro
Membro
Autor
Mensagens: 90
Registrado em: Qui Fev 01, 2018 10:38 am
Karma: 429

Re: GS 2: Como troca o objeto usando DragAndDrop

Sáb Jan 23, 2021 11:26 am

Bom dia
Chuaschinai,

Nao entendi, pq tenho que usa uma varivel(item)? O que acontece no game maker?

Tentei assim mais ainda nao funcionou:

if mouse_check_button_pressed(mb_left) && slotItem != noone 
       {
      var itemTemp = itemDrag;
       slotItem.slotItem = global.ItemMouse;//itemDrag = global.ItemMouse;
       global.ItemMouse = itemTemp;
      mouse_clear(mb_left);
      }


Muito obrigado pela ajuda.
1
 
Chuaschinai
Colaborador
Colaborador
Mensagens: 148
Registrado em: Dom Fev 14, 2016 9:19 pm
Karma: 908

Re: GS 2: Como troca o objeto usando DragAndDrop

Dom Jan 24, 2021 12:38 pm

Na variável item, foi o que coloquei como exemplo, seria uma variável dentro do obj_slot que armazenaria o item que você pôs lá.

O problema que pode estar havendo é o slotItem.slotItem, desde que o obj_slot tenha um variável chamada slotItem não há problema algum.

Não funcionou como? deu erro ou só não fez a troca?
1
 
Avatar do usuário
GhostPower
Membro
Membro
Autor
Mensagens: 90
Registrado em: Qui Fev 01, 2018 10:38 am
Karma: 429

Re: GS 2: Como troca o objeto usando DragAndDrop

Dom Jan 24, 2021 4:47 pm

Boa tarde
Chuaschinai,

Entao nao estao trocando os itens, mas nao da erro nenhum.

Codigo:

if mouse_check_button_pressed(mb_left) && slotItem != noone 
       {
      var itemTemp = itemDrag;
       objSlot.slotItem = global.ItemMouse;//itemDrag = global.ItemMouse;
       global.ItemMouse = itemTemp;
      mouse_clear(mb_left);
      }


Obs: Troquei o nome slotItem para objSlot para ser mais entendivel.

Tenho a variavel slotItem no objeto (slot), declarado assim:

create: slotItem = noone;


O que esta errado nisso?


Muito obrigado pela ajuda.
 
Chuaschinai
Colaborador
Colaborador
Mensagens: 148
Registrado em: Dom Fev 14, 2016 9:19 pm
Karma: 908

Re: GS 2: Como troca o objeto usando DragAndDrop

Ter Jan 26, 2021 4:23 pm

O problema deve estar aqui:
objSlot.slotItem = global.ItemMouse;//itemDrag = global.ItemMouse;

objSlot seria a variável que checa se o mouse esta em cima do objeto slot?

Tente usar assim:
slotItem.slotItem = global.ItemMouse;//itemDrag = global.ItemMouse;
1
 
Avatar do usuário
GhostPower
Membro
Membro
Autor
Mensagens: 90
Registrado em: Qui Fev 01, 2018 10:38 am
Karma: 429

Re: GS 2: Como troca o objeto usando DragAndDrop

Sáb Jan 30, 2021 12:02 pm

Bom dia
Chuaschinai,

Entao funcionou com o este codigo:

if mouse_check_button_pressed(mb_left) && slotItem != noone 
       {
       var itemTemp = itemDrag;
       slotItem.slotItem = global.ItemMouse;//itemDrag = global.ItemMouse;
       global.ItemMouse = itemTemp;
      mouse_clear(mb_left);
      }


O problema e que as vezes ele troca dependendo do item ou da posiçao do mouse. As veses ele so arasta um pouco.

Os dois estao com a colisao full image.

O que sera isso?
1
 
Chuaschinai
Colaborador
Colaborador
Mensagens: 148
Registrado em: Dom Fev 14, 2016 9:19 pm
Karma: 908

Re: GS 2: Como troca o objeto usando DragAndDrop

Dom Jan 31, 2021 4:15 pm

Tenta só trocar o itemTemp para item do slot como no código abaixa e veja o que acontece.
if mouse_check_button_pressed(mb_left) && slotItem != noone 
{
    var itemTemp = slotItem.slotItem;
    slotItem.slotItem = global.ItemMouse;//itemDrag = global.ItemMouse;
    global.ItemMouse = itemTemp;
    mouse_clear(mb_left);
}


Foi mal pela demora em responder.
1
 
Avatar do usuário
GhostPower
Membro
Membro
Autor
Mensagens: 90
Registrado em: Qui Fev 01, 2018 10:38 am
Karma: 429

Re: GS 2: Como troca o objeto usando DragAndDrop

Seg Fev 01, 2021 7:32 pm

Boa noite
Chuaschinai,

Troquei, mas agora ele cria um clone no lugar dele isso se o objeto tiver outro na room ou troca as vezes.

Vlw por todas as suas respostas.

Muito obrigado pela ajuda.