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
» player não consegue andar
por lovn7 Qui 21 Nov 2024, 13:33

» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22

» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31

» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23

» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49

» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58

» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36

» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36

» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33

» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51

» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28

» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18

» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08

» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10

» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16

» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40

» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01

» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45

» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34

» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28

» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48

» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54

» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14

» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50


[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

- Tópicos semelhantes

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