GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» Como ajustar velocidade de cada frame da animação no game maker
por Ralphed Qui 18 Abr 2024, 18:28

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39


[Resolvido]Essas 2 problemas é pra quem é bom...

3 participantes

Ir para baixo

[Resolvido]Essas 2 problemas é pra quem é bom... Empty [Resolvido]Essas 2 problemas é pra quem é bom...

Mensagem por Convidad Qui 19 maio 2011, 11:33

E ai galera!!!!!!!!!!!

Então, ando com 2 problemas que andam me encomodando bastate no meu jogo de cartas:

1° Problema>

Código:
if n < 6
{instance_create(140+(90*n),240,ds_list_find_value(deck,random(ds_list_size(deck))))
 instance_create(140+(90*n),240,brilho)
 n+=1}

Quero quando ele criar a carta e tirar da ds_list, mas não consigo fazer isso acontecer

2° Problema>

Código:
if clic = 1 && mouse_check_button_pressed(mb_left) && position_meeting(mouse_x,mouse_y,other)

{{global.bonus = addata
with(other)
{if noc = 0{exit}
if noc = 1{ataque += global.bonus  global.ata +=global.bonus}
break}}
with(self){instance_destroy()}}

Aki eu quero verificar se o obj "other" e uma carta senao, o ataque sera add em um outro obj qualquer que não e uma carta, dando erro no jogo


Ajude-me senão não conseguirei continuar meu jogo, qualquer coisa avisem se não entenderem a pergunta

FLW GALERA!!!!!!!!!!! Happy


Última edição por makerloko em Sex 20 maio 2011, 13:54, editado 1 vez(es)
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

[Resolvido]Essas 2 problemas é pra quem é bom... Empty Re: [Resolvido]Essas 2 problemas é pra quem é bom...

Mensagem por saim Qui 19 maio 2011, 11:49

1º:
Código:
if n < 6
{pos=random(ds_list_size(deck))
instance_create(140+(90*n),240,ds_list_find_value(deck,pos))
ds_list_delete(deck, pos)
 instance_create(140+(90*n),240,brilho)
 n+=1}
, mas eu acho que seria mais fácil usar ds_list_shuffle(deck), no começo do jogo e tirar as cartas na ordem.

2º:
Código:
carta=instance_position(mouse_x, mouse_y, obj_carta)
if clic = 1 && mouse_check_button_pressed(mb_left) && carta>=0

{{global.bonus = addata
with(carta)
{if noc = 0{exit}
if noc = 1{ataque += global.bonus  global.ata +=global.bonus}
break}}
instance_destroy()}
não tem sentido usar with(self) pra destruir a instância. Só se usa o with pra se referir a outras instâncias.
Edit: relendo o código, notei que a instância será destruída de qualquer forma, mesmo se o "if" retornar falso. Está assim no código original, só mantive a lógica como estava. Cabe a você decidir se é isso mesmo o que você quer.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [Resolvido]Essas 2 problemas é pra quem é bom... Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Essas 2 problemas é pra quem é bom... Empty Re: [Resolvido]Essas 2 problemas é pra quem é bom...

Mensagem por Convidad Qui 19 maio 2011, 13:00

@saim

Obrigado por responder!!!



eu nao sei oque ta acontencendo mas o "deck" e esse

Código:
ds_list_add(deck,a)
ds_list_add(deck,w)
ds_list_add(deck,h)
ds_list_add(deck,e)
ds_list_add(deck,e)
ds_list_add(deck,e)

entao era pra criar 1 carta "a", 1 carta "w", 1 carta "h" e 3 1 cartas "e" ne???
mas ta criando 1 ou 2 cartas "a" a mais



É que no jogo vai ter varias cartas entao so o "obj_carta" n vai adiantar, tinha que ser tipo o jogo verifica se o obj e uma carta e ai addiciona o ATK

Obrigado mais uma vez
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

[Resolvido]Essas 2 problemas é pra quem é bom... Empty Re: [Resolvido]Essas 2 problemas é pra quem é bom...

Mensagem por saim Qui 19 maio 2011, 13:30

makerloko escreveu:


eu nao sei oque ta acontencendo mas o "deck" e esse

Código:
ds_list_add(deck,a)
ds_list_add(deck,w)
ds_list_add(deck,h)
ds_list_add(deck,e)
ds_list_add(deck,e)
ds_list_add(deck,e)

entao era pra criar 1 carta "a", 1 carta "w", 1 carta "h" e 3 1 cartas "e" ne???
mas ta criando 1 ou 2 cartas "a" a mais
só 3 cartas "e", mas sim, só uma carta "a". Talvez você esteja criando mais cartas "a" em algum outro evento ou não esteja deletando a carta correta. Seu deck tem sempre 6 cartas?

makerloko escreveu:

É que no jogo vai ter varias cartas entao so o "obj_carta" n vai adiantar, tinha que ser tipo o jogo verifica se o obj e uma carta e ai addiciona o ATK
obj_carta_parent?
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [Resolvido]Essas 2 problemas é pra quem é bom... Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Essas 2 problemas é pra quem é bom... Empty Re: [Resolvido]Essas 2 problemas é pra quem é bom...

Mensagem por Convidad Qui 19 maio 2011, 14:50



nao tem outro obj adicionando cartas, acho que é nao ta sendo deletado direito



nao entendi obj_carta_parent, ele e pra funcionar nos parents do obj_carta? se ser isso acho que n vai funcionar pq eu n uso as cartas com parents
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

[Resolvido]Essas 2 problemas é pra quem é bom... Empty Re: [Resolvido]Essas 2 problemas é pra quem é bom...

Mensagem por PedroX Qui 19 maio 2011, 15:26

Vamos por partes.

Primeiro problema:
if n < 6
{instance_create(140+(90*n),240,ds_list_find_value(deck,random(ds_list_size(deck))))
instance_create(140+(90*n),240,brilho)
n+=1}

Possivel motivo do problema:
Você não esta usando um laço. Não importa se você está somando '1' para a variavel. Ele só faz uma vez e sai.

Resolução do problema:
n=0;
while (n < 6)
{
instance_create(140+(90*n),240,ds_list_find_value(deck,irandom(ds_list_size(deck)-1))
instance_create(140+(90*n),240,brilho)
n+=1
}

Se resolver posta aqui.
O segundo problema eu tento resolver depois.

Até mais!

_________________


Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.

Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.

Aprenda a calcular a velocidade de suas animações


Entre para o Clube do Inglês:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6087
Prêmios : [Resolvido]Essas 2 problemas é pra quem é bom... Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

[Resolvido]Essas 2 problemas é pra quem é bom... Empty Re: [Resolvido]Essas 2 problemas é pra quem é bom...

Mensagem por Convidad Qui 19 maio 2011, 15:33

@Pedro Henrique

Obrigado por reponder!!!

É que na verdade o problema e que quero que a carta criada seja excluida da ds_list, e com a soluçao proposto pelo saim acho que nao ta sendo excluida
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

[Resolvido]Essas 2 problemas é pra quem é bom... Empty Re: [Resolvido]Essas 2 problemas é pra quem é bom...

Mensagem por saim Qui 19 maio 2011, 15:34


Talvez outro evento dentro do mesmo objeto? Fiz um teste aqui, faça o mesmo pra ver:
>create<
Código:
a=10
w=20
h=30
e=5 //eu sei que no seu caso são objetos, mas é só pra entender
deck=ds_list_create()
ds_list_add(deck,a)
ds_list_add(deck,w)
ds_list_add(deck,h)
ds_list_add(deck,e)
ds_list_add(deck,e)
ds_list_add(deck,e)
>step<
Código:
if keyboard_check_pressed(vk_enter){
   pos=floor(random(ds_list_size(deck)))
   ds_list_delete(deck, pos)
   }
>draw<
Código:
for (i=0; i<ds_list_size(deck); i+=1)
   draw_text(x+20*i, y, string(ds_list_find_value(deck, i)))
Viu como os objetos valores são deletados corretamente? Significa que usar "pos=floor(random(ds_list_size(deck)))" funciona. Mostre seu código atual.

EDIT: Ah, vi o erro! eu não tinha falado pra usar o floor, no random! É importante, use floor.


Não dá pra criar um objeto só pra ser o parent? Você cria ele e define ele como parent em todas as cartas. Senão o teste, pra ver se tem alguma carta na posição do mouse seria imenso:
Código:
if instance_position(mouse_x, mouse_y, obj_carta_1) or instance_position(mouse_x, mouse_y, obj_carta_2) or instance_position(mouse_x, mouse_y, obj_carta_3) or...
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [Resolvido]Essas 2 problemas é pra quem é bom... Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Essas 2 problemas é pra quem é bom... Empty Re: [Resolvido]Essas 2 problemas é pra quem é bom...

Mensagem por Convidad Qui 19 maio 2011, 16:24

@saim



acho que resolvi oque tava dando errado, eu tava criando mais cartas do que tinha no "deck", mas porque criava a carta "a" (primeira carta) se não era pra ter nenhuma no "deck"? nao era pra dar algum erro de vez criar a carta "a"?



eu queria saber se tem tipo alguma funçao que busque no obj se existe uma variavel com um valor, tipo:

if existir ("existir" seria a funçao que quero saber se existe)
tipo = carta{
instance_destroy()}

senao como se usa a funçao com o parent???

obrigado novamente!
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

[Resolvido]Essas 2 problemas é pra quem é bom... Empty Re: [Resolvido]Essas 2 problemas é pra quem é bom...

Mensagem por saim Qui 19 maio 2011, 16:59

1º - Talvez você queira dizer que estava criando mais cartas do que DEVERIA ter no deck. Mas eu acho que o problema era aquilo que eu falei no edit: eu me enganei e não te pedi pra definir a posição usando floor. random(número) te retorna um valor qualquer, dificilmente um inteiro. Daí, na hora de criar uma instância, o game maker parece arredondar o valor, mas na hora de deletar, só deleta se você der a ele um valor inteiro - e nós estávamos dando um decimal.
Edit: Não, parece que ele arredonda pra deletar, também... A principal diferença é que ele parece arredondar pro inteiro mais próximo, o que permitiria um arredondamento pra fora da list, de modo que o valor deletado não está na list. Só que isso não explica porque estavam sendo criadas varias cartas "a". Como você resolveu?

2º instance_position(x, y, obj) te retorna a id da instância do objeto "obj" na posição (x,y) ou -4 (noone) se não houver alguma instância naquela posição. Por isso te sugeri usar ela. Daí, como você tem diversos objetos diferentes pra serem cartas, não dá pra fazer tudo de uma vez só, a menos que exista um objeto que seja parent de todas as cartas. Você procura pelo parent e a função te retornará a id da instância de qualquer "child", ou seja, qualquer objeto que tenha o objeto "parent" como... bom, como parent.
O parent não precisa ter nenhum sprite, nenhum, código, nenhum nada. Basta criar o objeto, dar um nome a ele e, isso sim dá trabalho, ir em uma-por-uma das cartas e definir esse objeto como parent.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [Resolvido]Essas 2 problemas é pra quem é bom... Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Essas 2 problemas é pra quem é bom... Empty Re: [Resolvido]Essas 2 problemas é pra quem é bom...

Mensagem por Convidad Qui 19 maio 2011, 19:00

@saim

Desculpe minha noobise mas eu nao consegui entender a soluçao para o 2° problema e como se usa o parent pra resolver isso

obrigado pela paciencia!
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

[Resolvido]Essas 2 problemas é pra quem é bom... Empty Re: [Resolvido]Essas 2 problemas é pra quem é bom...

Mensagem por PedroX Qui 19 maio 2011, 19:09

Está meio complicado de entender o que você quer.
Talvez postando a engine, poderemos resolver.
Ou então, poste os códigos usados.

Até mais!

_________________


Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.

Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.

Aprenda a calcular a velocidade de suas animações


Entre para o Clube do Inglês:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6087
Prêmios : [Resolvido]Essas 2 problemas é pra quem é bom... Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

[Resolvido]Essas 2 problemas é pra quem é bom... Empty Re: [Resolvido]Essas 2 problemas é pra quem é bom...

Mensagem por Convidad Qui 19 maio 2011, 21:16

@saim

resolvi assim:

Código:
if n < 6
{pos=floor(random(ds_list_size(deck)))
instance_create(140+(90*n),240,ds_list_find_value(deck,pos))
ds_list_delete(deck,pos)
instance_create(140+(90*n),240,brilho)
n+=1
}

e tendo as 6 cartas pra ser criadas, ai nao cria cartas "a" a mais Smile

@Pedro Henrique

eu quero quando que clicar na carta ela adicione o ataque, mas tem varias cartas e obj e nao sei como fazer isso to usando esse codigo aki mas ele adiciona somente para carta "a":

Código:
if clic = 1 && mouse_check_button_pressed(mb_left) && position_meeting(mouse_x,mouse_y,a)

{{global.bonus = addata
with(a)
{if noc = 0{exit}
if noc = 1{ataque += global.bonus  global.ata +=global.bonus}
break
}}with(self){instance_destroy()}}

obrigado saim e Pedro Henrique
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

[Resolvido]Essas 2 problemas é pra quem é bom... Empty Re: [Resolvido]Essas 2 problemas é pra quem é bom...

Mensagem por saim Qui 19 maio 2011, 22:52

1º: É, era isso o que eu tinha pensado mesmo. Estranho, não deveria ter acontecido aquele erro. Bom, está resolvido, então tudo bem. Me avise se acontecer qualquer coisa.
Ah, como o Pedro Henrique disse, esse código tira apenas uma carta a cada evento (se for o evento step, isso será bem rápido, mas não instantâneo). É isso mesmo que você quer, certo?

2º: Pra entender a solução, você precisa entender o que são parents. Parents são objetos que... Deixa eu traduzir, "parents" significa "pais". Os objetos "pais" são tipo o tronco de uma árvore e os filhos, os galhos. As instâncias seriam... as folhas! Um galho pode ter seus movimentos diferentes dos da árvore, mas se a árvore muda de casa, o galho vai junto.
Calma, eu chego no seu problema, só mais um pouco de metáfora.
Bom, pra saber se uma folha é de bananeira ou de rosa, o game maker te permite olhar o tronco, por exemplo. Claro, você pode olhar se a folha pertence a um-por-um dos galhos, mas olhar se ela pertence ao tronco é mais rápido. Pelo menos em programação. Na vida real, o mais fácil é olhar o tamanho da folha, portanto chega de metáfora.
Bom, o que você quer é saber se:
- sob o mouse existe a instância de algum objeto
- havendo, quer saber se essa instância é uma carta.
Se todas as cartas (galhos) tiverem um pai (tronco), basta verificar se a instância (folha) pertence ao objeto parent. Se elas não tiverem um tronco, se forem galhos soltos, você tem que verificar se a instância pertence a cada um dos objetos. A folha pertence ao galho "carta de ataque"? A folha pertence ao galho "carta de defesa"? A folha pertence ao galho "carta de..." etc.
Ok, agora chega de metáfora MESMO.
Então você tem diversos objetos-que-são-cartas, certo? Faça um objeto e chame ele de obj_carta_parent. Vá em cada um dos objetos-que-são-cartas e defina o parent deles como obj_carta_parent. Agora, se eu perguntar às instâncias de cada um dos objetos-que-são-cartas se elas são instâncias do obj_carta_parent, elas responderão que sim. É mais simples que definir uma variável em cada um deles, certo?
Agora, voltando à função instance_position. Como eu disse, ela retorna a id de uma instância. position_meeting te retorna apenas se a instância está ali, o que não é o que você quer, você quer saber QUEM está ali. Porque? Porque a partir daí, você pode fazer o que quiser com a carta em questão. Você coloca "carta_escolhida=instance_position(mouse_x, mouse_y, obj_carta_parent)" e "carta_escolhida" passa a armazenar a INSTÂNCIA sob o mouse. Quando você escrever "with(carta_escolhida)", o código a seguir acontecerá naquela instância, seja ela qual for (desde que haja alguma instância ali, claro).

Caramba, falei muito! Espero que tenha explicado mais do que complicado.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [Resolvido]Essas 2 problemas é pra quem é bom... Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido]Essas 2 problemas é pra quem é bom... Empty Re: [Resolvido]Essas 2 problemas é pra quem é bom...

Mensagem por Convidad Sex 20 maio 2011, 13:53

@saim



eu quero que aconteça isso mesmo, é como eu queria Smile



agora sim conseguir resolver!!! botei o obj_parent nas cartas e no evento pra adicionar o ataque eu funfo direitinho!

Vlw mesmo saim e Pedro Henrique por me ajudarem, pode trancar o topico
avatar
Convidad
Convidado


Ir para o topo Ir para baixo

[Resolvido]Essas 2 problemas é pra quem é bom... Empty Re: [Resolvido]Essas 2 problemas é pra quem é bom...

Mensagem por Grotle Sáb 21 maio 2011, 17:14

Topico resolvido.
Trancado.
Se o autor quiser reabrir o tópico envie MP para algum administrador ou moderador.

Flws!
Grotle
Grotle

Games Ranking : Nota B

Notas recebidas : B-B
Data de inscrição : 28/02/2010
Reputação : 12
Número de Mensagens : 559
Prêmios : [Resolvido]Essas 2 problemas é pra quem é bom... Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://gsogaming.blogspot.com/

Ir para o topo Ir para baixo

[Resolvido]Essas 2 problemas é pra quem é bom... Empty Re: [Resolvido]Essas 2 problemas é pra quem é bom...

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo


 
Permissões neste sub-fórum
Não podes responder a tópicos