Página 1 de 1
self,other e outras coisas
Enviado: Ter Out 11, 2016 1:13 am
por Eduardo Macedo
Tenho 3 baús na room feito com um objeto
cada um foi configurado pra ter um loot diferente
quando clico ele abre o inventário contendo o que tem dentro.
uso uma variável open pra aparecer ou não o inventário de cada baú
o problema vem agora.
as condições são :
Código: Selecionar todos
se algum baú estiver aberto
{
fecha todos os baús;
abre somente o baú que foi clicado;
}
senão se estão fechados
{
abre o baú que foi clicado;
}
ja usei other, self , obj.open. mas sempre da algum tipo de bug , as vezes funciona somente com o primeiro baú , mas quando faço o teste com o resto não da certo
sempre abre vários baús.
Re: self,other e outras coisas
Enviado: Ter Out 11, 2016 2:46 am
por Drako
Cara acho que isso resolve se o clique for no objeto em questão.
Código: Selecionar todos
// Se for clicado
repeat (instance_count) {
with (object) {
other.open := false;
};
object.open := true;
};
Re: self,other e outras coisas
Enviado: Ter Out 11, 2016 11:42 am
por Superbomber
A resposta do Drako é quase perfeita...
Mas o repeat é desnecessário, o object.open não vai ter o resultado desejado e o other.open irá alterar o valor somente do objeto que executou tal código.
Passando um objeto para o with o código é executado para todas as instâncias do mesmo.
E ao definir o valor de um objeto é também definido para todas as instâncias.
Faça desta maneira:
Código: Selecionar todos
// Evento de clique do baú
obj_bau.open = false;
open = true;
Simples, não? Primeiro definimos o valor open de TODAS(inclusive esta) as instâncias para falso, e então muda open para true desta instância específica que foi clicada.
A ordem das coisas muda tudo. Algo que costumo dizer, talvez lhe ajude a raciocinar melhor sobre o assunto.
Algumas informações úteis:
https://docs.yoyogames.com/source/dadiospice/002_reference/001_gml%20language%20overview/401_18_with.html
Bye.
Re: self,other e outras coisas
Enviado: Ter Out 11, 2016 12:02 pm
por Drako
Putz! Nem percebi o que tinha escrito de fato (que gafe)!
Re: self,other e outras coisas
Enviado: Ter Out 11, 2016 4:36 pm
por Eduardo Macedo
desculpe , esqueci de mencionar que se o baú clicado esta aberto ele fecha , o problema maior é ai , eu ja tentei antes fazer dessa forma , fechando todos primeiro
mas o q ocorre é que o clicado é fechado logo após aberto novamente, por causa da condição if open == false{open = true}.
Re: self,other e outras coisas
Enviado: Ter Out 11, 2016 4:48 pm
por Superbomber
'-'
Bom, Eduardo.... Neste caso suma com esta dita condição. Dá adeus pra ela.
E usa o código:
Código: Selecionar todos
// Evento clique no baú.
if(!open) obj_bau.open = false; // Só fecha os outros baús se este estiver sendo aberto
open = !open; // Se aberto, fecha. Se fechado, abre.
Re: self,other e outras coisas
Enviado: Ter Out 11, 2016 5:12 pm
por Eduardo Macedo
Eu consegui resolver , observei suas dicas e me veio uma ideia em mente.
primeiro coloquei se quando clicasse armazenava em uma variável se o baú estava aberto ou fechado.
depois fecho todos os baús
e depois lanço a condição:
Código: Selecionar todos
a = open // variável recebe o valor de open
obj_loot.open = false // todos os baús são fechados
//verifica se antes de todos estarem fechados , o baú clicado estava aberto ou não
if a == true //se estava aberto
{
open = false // ele fecha .
}
else // se não estava aberto
{
open = true // ele abre
}
dessa forma, só um baú é aberto por vez , obrigado por ajudarem