[RESOLVIDO] Variaveis locais persistentes para um unico objeto

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

[RESOLVIDO] Variaveis locais persistentes para um unico objeto

Mensagem por Zero. em Qua 16 Fev 2011, 15:18

Olá,
estou fazendo um jogo de treinamento de monstros estou com alguns problemas.
EX1 ( problema 1 exemplo oO ) :

Tenho um obj_monstro1 e um obj_monstro2 e um obj_poder1
ao apertar a tecla " A " o obj_monstro1 irá soltar o obj_poder1 e se o obj_poder1 colidir com obj_monstro2 o obj_monstro2 perdera o dano final - a defesa dele em 10% ( para cada ponto de defesa) de hp, sendo assim como não sei muito seria muito complicado pq cada monstro tem os seus pontos de VITALIDADE, FORÇA, RESISTENCIA, ENERGIA, AURA e VELOCIDADE. entao como fazer para o monstro 1 tomar o dano mas como se o dano fosse uma coisa global: ex1: se tivesse 2 monstro monstro2 e 3 e batesse no 2 e tirasse x e batesse no 3 e tirasse y, o real problema é de como calcular o dano do monstro que vc ta usando ( que pode ser qualquer um) contra a defesa do outro monstro.
Quero saber como fazer uma relação entre
MONSTRO QUE VC ESTA CONTROLANDO > PODER SOLTADO PELO SEU MONSTRO > E MONSTRO QUE ESTA RECEBENDO O PODER.
Eu uso other mas o other so funciona com o obj que esta colidindo ex:
Monstro 2 recebe o poder Mordida e ai o dano que monstro 2 vai receber é em relação a força do monstro 1 (monstro que soltou o poder) e o poder mordida tem sua força ( força do golpe) e isso influencia no dano total do ataque , e qndo eu digo que no obj_monstro2: other.dano_final(do monstro 1)-defesa(do monstro2)/10*dano_final(do monstro1), isso é uma relaçao tipo é defesa final menos 10% pq a defesa do bixo2 é 1
entao mas o problema ta ai pq quem colide com o bixo2 é o poder mordida e não o bixo1
entao fiz uma variavel para o monstro1 tipo: global.monstro1=true
entao no create de mordida tem : if global.monstro1=true {aqui todas as informações basicas do bixo1 ( vit,for e etc...)} mas ai o codigo fica muito extenso eu queria uma relaçao mais simples entre o monstro que solta o poder ,o poder e o monstro que recebe o poder.

Problema 2:
Os monstro sao soltados por uma bola ( tipo pokemon ) ai o bixo tem uma vida e tudo mais e se ele perder vida e eu retorna-lo pra bola e quizer soltar de novo ( o objeto vai nascer de novo entao seu create será reiniciado e ele voltara com 100% da vida) então quero que fique persistence que ele volte com a vida que ele tem - a vida que ele tinha perdido.

Ajuda ´por favor! obrigado


Última edição por kiklin123 em Sab 12 Mar 2011, 13:51, editado 1 vez(es)

Zero.

Número de Mensagens : 1295
Idade : 20
Data de inscrição : 19/08/2010
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO] Variaveis locais persistentes para um unico objeto

Mensagem por saim em Qua 16 Fev 2011, 17:33

Problema 1:
Passe para o poder as variáveis de quem está criando o poder. Numa declaração "with", você pode usar o objeto "other" pra se referir à instância que chamou a declaração. Exemplo:
Código:
with (instance_create(x,y,obj_poder)){
 forca=other.forca
 energia=other.energia*2
 }
Daí, colidindo ou não, o poder vai ter as características que você julgar importantes do mostro que o soltou.

ou, mais fácil ainda, marca no poder o id do cara que criou ele:
code]with (instance_create(x,y,obj_poder)){
me_criou=other.id
}[/code]
Daí, contanto que o monstro que criou o poder ainda esteja na tela, você pode chamar as dados dele: me_criou.forca, me_criou.energia, etc.

Problema 2:
Você precisa gravar esses dados em algum lugar. Ou faça um arquivo externo, ou use uma array global ou crie objetos persistentes e dê um jeito deles sumirem quando o montro voltar pra bola.
Recomendo usar uma array global de 2 dimensões, daí o primeiro índice pode ser o status do monstro (0=vida, 1=velocidade, 2=experiência, etc) e o segundo índice seria o tipo do monstro (0=monstro0, 1=monstro1, etc).

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO] Variaveis locais persistentes para um unico objeto

Mensagem por Zero. em Qua 16 Fev 2011, 18:17

O 1º problema ta resolvido mas o 2º nãoi entendi ,
tipo não sei criar arquivos externos que se liguem ao jogo nem sei usar arrays e naum achei um tuto para isso se poder ajudar em relação a isso agradeço!

uma perguntinha no 1º problema o codigo

with (instance_create(x,y,obj_poder)){
forca=other.forca
energia=other.energia*2
}

poed ser assim?

with (instance_create(x,y,self)){
forca=other.forca
energia=other.energia*2
}

e pq energia *2?

Pq to na lan chego em casa so mais tarde =P vlw

Zero.

Número de Mensagens : 1295
Idade : 20
Data de inscrição : 19/08/2010
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO] Variaveis locais persistentes para um unico objeto

Mensagem por saim em Qua 16 Fev 2011, 23:30

tirando a parte do "self", tá ok. "self" é uma variável que deveria ser riscada do mapa, esqueça que ela existe. Use "id" no lugar dela, que faz muito mais sentido e pode ser usada em mais situações.
Mas não nesse caso. Nesse caso, você realmente precisa trocar a "self" pelo poder que está criando. Você chama a declaração "with" ao mesmo tempo em que cria o poder, entendeu? Em tradução livre, você estaria dizendo ao jogo "crie uma instância do objeto poder e faça com que ele tenha as seguintes variáveis: forca=minha forca, energia=o dobro da minha energia"
Coloquei o *2 mais pra te mostrar que o valor da variável no poder não precisa ser exatamente o mesmo valor da variável do monstro, que pode ser só baseada nela. Obviamente, fica a seu critério.

Quanto à tutorial sobre arrays, vai ter que ficar pra amanhã, que meu olho tá fechando sozinho. Se você souber inglês, tenho uma prontinha pra te mandar. De outra forma, vou ter que traduzir ela toda. Na verdade, é muito simples, mas precisa de um ou dois exercícios pra você realmente entender a coisa.

Edit: cara, fiz um tutorialzinho "rápido" e acabei postando ele na parte de tutoriais. Aqui o link dele. No seu caso, você vai precisar de um indice da array pra armazenar os dados do monstro e de outro índice pra armazenar de que monstro você está falando. Seria o equivalente, no tutorial, a usar o monstro no lugar da arma e o dado do monstro no lugar da característica da arma. Ou seja:
Código:
status_do_monstro[caracteristica,tipo_de_monstro]=valor

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO] Variaveis locais persistentes para um unico objeto

Mensagem por Zero. em Qui 17 Fev 2011, 17:29

Saim,
olha qndo coloko o id do bixo la eu coloko:
with (instance_create(x,y,obj_bite))
eu=other.id
beast=true // atk de energia
level=other.level
vit=eu.vit
atk=eu.atk
def=eu.def
ene=eu.ene
aur=eu.aur
spd=eu.spd
dnf=0
dft=0
dnb=10*other.level*other.atk
dng=0.5
dbg=dnb*dng

ai cara tipo o poder qndo ele nasce sai um som de mordida, ai qndo eu atacko tem um problema, acontece como se criasee um monste de bites pq sai um monte de som

Zero.

Número de Mensagens : 1295
Idade : 20
Data de inscrição : 19/08/2010
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO] Variaveis locais persistentes para um unico objeto

Mensagem por saim em Sex 18 Fev 2011, 09:25

Certeza que não dá nenhum erro? Deveria, porque você não colocou o "with" entre colchetes, então só a primeira linha da declaração é considerara parte dela, o resto do código fica no montro mesmo.
Outra coisa, que não está errada, mas não sei se você está com dúvida: você grava a id do monstro na variável "eu". Depois, você puxa as variáveis do monstro, hora usando essa variável (eu) hora usando "other". Funciona sim, não tem erro nenhum, mas dá a impressão que você está na dúvida quanto a qual variável usar. Já que você criou a variável "eu", pode usar ela a torto e à direita. Se ela só for útil na criação da mordida, pode deixar ela de lado e economizar uma linha. Na prática, "eu" e "other" querem dizer a mesma coisa, nesse caso.

Quanto à sua dúvida, não faço idéia do que está acontecendo, porque não sei quando o som entra nem quando o "with" é chamado. Aparentemente, algum desses eventos está se repetindo indefinidamente. Meu chute é que você cria o obj_bite enquanto uma tecla está pressionada, não apenas do ato de pressionar (tipo, você usa keyboard_check ao invés de keyboard_check_pressed), mas até você postar a parte que executa o som, é só um chute.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO] Variaveis locais persistentes para um unico objeto

Mensagem por Zero. em Seg 21 Fev 2011, 14:41

VO por o with wm colchetes.
e eu uso keyboard_check_pressed =P

Zero.

Número de Mensagens : 1295
Idade : 20
Data de inscrição : 19/08/2010
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO] Variaveis locais persistentes para um unico objeto

Mensagem por saim em Seg 21 Fev 2011, 14:46

Uma possibilidade a menos, então... mas motra pra gente quando que o "with" é chamado e o que faz o som tocar. Sem essas informações, não dá pra dizer porque o som fica repetindo.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO] Variaveis locais persistentes para um unico objeto

Mensagem por Zero. em Seg 21 Fev 2011, 17:40

ao apertar a tecla "a"
instance_create(x+20.y.obj_bite) obs: finjam que "." (ponto) é virgula --'
ai o obj_bite aparece e faz o som de bite
so isso *---*

Zero.

Número de Mensagens : 1295
Idade : 20
Data de inscrição : 19/08/2010
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO] Variaveis locais persistentes para um unico objeto

Mensagem por saim em Seg 21 Fev 2011, 22:53

Ok, deixa eu explicar melhor.
Você me falou que tem um monte de sons de bite tocando ao mesmo tempo. Eu preciso ver você mandando o som tocar. Porque tem várias formas desse erro acontecer. Eu não tenho como adivinhar qual o problema. Eu consigo pensar em duas possibilidades pra isso:
- você está criando um monte de obj_bite, um atrás do outro
- você está mandando o som tocar no step event do obj_bite
A primeira possibilidade está meio que descartada, porque você já disse que cria o obj_bite no step event do monstro, usando keyboard_check_pressed e não keyboard_check.
Resta ainda a segunda hipótese, ou seja, você realmente cria só um objbite, mas ele fica chamando o som em cada step, de modo que fica uma barulheira louca.
E, claro, pode ser alguma coisa que eu não tenha pensado ainda.
Por isso te peço pra copiar todo o evento em que você colocou "sound_play(snd_bite)" e colar aqui, indicando que evento é a que objeto ele pertence.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO] Variaveis locais persistentes para um unico objeto

Mensagem por Zero. em Qua 23 Fev 2011, 14:03

Cara assim,
não tem nada a ver com o som que sai qndo cria o obj bite e sim o seguinte:
{with (instance_create(x,y,obj_bite))
eu=other.id
beast=true // atk de energia
level=other.level
vit=eu.vit
atk=eu.atk
def=eu.def
ene=eu.ene
aur=eu.aur
spd=eu.spd
dnf=0
dft=0
dnb=10*other.level*other.atk
dng=0.5
dbg=dnb*dng}
Tipo assim na 1° linha deste evento ta saindo o seguinte:
{with (instance_create(x,y,obj_bite)...}
ta criando obj_bite's e não checando seu valor asendo assim ao obj_bite criar outro obj_bite eles vao ficar criando uns os outros e assim varios sons sairam entendeu?
;D

Zero.

Número de Mensagens : 1295
Idade : 20
Data de inscrição : 19/08/2010
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO] Variaveis locais persistentes para um unico objeto

Mensagem por saim em Qua 23 Fev 2011, 16:19

kiklin123 escreveu:Tipo assim na 1° linha deste evento ta saindo o seguinte:
{with (instance_create(x,y,obj_bite)...}
ta criando obj_bite's e não checando seu valor asendo assim ao obj_bite criar outro obj_bite eles vao ficar criando uns os outros e assim varios sons sairam entendeu?
;D
Mais ou menos. Ainda não entendi como isso faz um objeto criar outro (e, se isso acontecesse, você deveria era travar o jogo por entrar num loop infinito, não criar um objeto a cada step). Mas deu pra ver que você fez uma confusão quando eu pedi pra colocar os colchetes. O ideal seria abrir os colchetes DEPOIS da declaração with.
Código:
with (instance_create(x,y,obj_bite)){
eu=other.id
beast=true // atk de energia
level=other.level
vit=eu.vit
atk=eu.atk
def=eu.def
ene=eu.ene
aur=eu.aur
spd=eu.spd
dnf=0
dft=0
dnb=10*other.level*other.atk
dng=0.5
dbg=dnb*dng}
NÃO acho que seja esse o problema, mas isso certamente há de resolver alguma outra coisa.

Faz o seguinte: cria uma variável no objeto monstro (ou algum controller) e, no step, atribua a ela o número de obj_bite (teste=instance_number(obj_bite)). Daí, rode o jogo no debug e cheque o valor dessa variável. Se for mesmo maior que o número de vezes que você apertou o botão de criar a variável, é mesmo o número de mordidas que está errado.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO] Variaveis locais persistentes para um unico objeto

Mensagem por Zero. em Qui 24 Fev 2011, 14:01

Tah vou testar, mas cara qndo cria os bite o jogo trava e sai sozinho =D!

Zero.

Número de Mensagens : 1295
Idade : 20
Data de inscrição : 19/08/2010
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO] Variaveis locais persistentes para um unico objeto

Mensagem por saim em Qui 24 Fev 2011, 15:01

Ah, então tem mesmo alguma coisa criando infinitos bites, e não um som ininterrupto!
Ou algum loop infinito ou algo como você disse, mas no evento de criação do obj_bite.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO] Variaveis locais persistentes para um unico objeto

Mensagem por Zero. em Qui 24 Fev 2011, 15:20

sim acho q é pq estou usando o with errado chegando em casa vou dar uma testada ah e vou me aprimorar em arrays se não vai ficar dificiul fazer o jogo =/. VLW depois digo se funcionou"

Zero.

Número de Mensagens : 1295
Idade : 20
Data de inscrição : 19/08/2010
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO] Variaveis locais persistentes para um unico objeto

Mensagem por Zero. em Qua 02 Mar 2011, 13:35

Ops continua o msm problema esta criando vários e travando o jogo e consequentemente fechando! =/
da uma testada ai parecida com meu jogo pra ajudar blz?
ai vc me diz como fez. VLW

Zero.

Número de Mensagens : 1295
Idade : 20
Data de inscrição : 19/08/2010
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO] Variaveis locais persistentes para um unico objeto

Mensagem por saim em Qua 02 Mar 2011, 16:06

Só que eu não faço idéia de como você está fazendo, impossível fazer algo parecido. Se você me mandar as informações dos dois objetos ou o arquivo .gmk, posso te ajudar mais.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO] Variaveis locais persistentes para um unico objeto

Mensagem por Zero. em Ter 08 Mar 2011, 19:59

Ei saim eu enviei uma engine do gmk pra vc!
olha la

Zero.

Número de Mensagens : 1295
Idade : 20
Data de inscrição : 19/08/2010
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO] Variaveis locais persistentes para um unico objeto

Mensagem por Conteúdo patrocinado Hoje à(s) 00:58


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum