Onde as mentes criativas se encontram!


 
GhostPower
Novato
Novato
Autor
Mensagens: 16
Registrado em: Qui Fev 01, 2018 10:38 am
Karma: 16

Duvida sobre Game Maker

Qui Fev 01, 2018 11:51 am

Bom dia,

Sou novo aqui no fórum e no game maker mas já tenho algumas duvidas sobre o game maker.

1- Estou tentando fazer um jogo de rpg em tempo real sei fazer ele mostrar o numero do dano em um inimigo, mas quando e mais de um eu não sei. pq ele mostra o mesmo dano nos dois inimigos.

Como to fazendo:
Crio um novo objeto que pega todos os inimigos na room e se o inimigo esta com a Target true ele recebe o dano.

Obs: O hp de cada inimigo esta funcionado certinho. 

Olha o script:
if Target = "Target"{
instance_create(self.x,self.y,obj_damage);

e no objeto dano:

damage = global.playerAttack - global.playerTarget.enenyDefend;

crio um objeto temporário para saber qual e o inimigo, mas quando e mais de um inimigo ai ele mostra o mesmo dano.Sei que a logica esta errada. 

2- A segunda duvida como faço para equipar um item ou arma no player usando um objeto slot?(quando pego o item e coloco no slot do item(que e um objeto) ele equipa e quando tiro ele desequipa).

Obs: estou usando o sistema de drag and drop nos itens e nao to usando ds.

E ai alguém sabe me ajuda com essa duvida.

Desde já agradeço.

Tags:
 
Avatar do usuário
theguitarmester
Membro
Membro
Mensagens: 21
Registrado em: Sáb Ago 22, 2015 12:32 am
Karma: 11

Contato:

Re: Duvida sobre Game Maker

Sáb Fev 03, 2018 1:45 am

Bem vindo @Ghots

Não entendi muito bem, isso fica no objeto dano?
damage = global.playerAttack - global.playerTarget.enenyDefend;

Tinha escrito mais coisas, mas achei que tava complicado, vou deixar resumido.

utilizando o evento colisão do dano, tu pode fazer a redução de dano utilizando o other:
damage = global.playerAttack - other.enenyDefend;

Mas fiquei em dúvida do que realmente queria fazer, usei como base que tu queria que ao player tocar o poder, esse dano irá ver quem está sofrendo o dano, e calculará o dano adequado para aquele inimigo.



2 - cria variavel para cada slot, ou, um vetor:
slot1=0; slot2=0 ;slot3=0;..
ou, que é melhor:
slot[];

daí pode colocar coisas como:
if slot[1] == "inSeto Kaiba" habilidadeDeRoubar = 100;
if slot[2] == "Coração das Cartas" habilidadeDeRoubar = 10000;
....melhor seria colocar um switch ao invés de if, no exemplo.
 
GhostPower
Novato
Novato
Autor
Mensagens: 16
Registrado em: Qui Fev 01, 2018 10:38 am
Karma: 16

Re: Duvida sobre Game Maker

Sáb Fev 03, 2018 2:31 pm

Blz cara,
theguitarmester

Olha quando target true o inimigo recebe o dano. 

Então tenho um exemplo na room tenho 3 mostro, certo, quando eu ataco um inimigo e criado um objeto dano para mostra o dano do inimigo,(no objeto dano esta assim:
 damage = global.playerAttack - global.playerTarget.enenyDefend;)

Se eu atacar em área,(que tenha mais de um inimigo) este numero q sobe em cima do inimigo e igual ao primeiro inimigo que foi atacado, entendeu? (este sistema de dano e igual do jogos tipo terraria, FINAL FANTASY ou qualquer rpg que mostra o dano no inimigo). A duvida e pq ele nao mostra o dano de cada inimigo sendo q cada um tem uma defesa diferente?

Cara, tentei usar o damage = global.playerAttack - other.enenyDefend, mas o game maker fala quenão reconhece avariável other.enenyDefend.

2 - Eu já fiz o sistema drag and drop no item, só quero fazer ele equipa,  assim quando coloco o item(objeto) no slot item(outro objeto) ele equipa.
 
Avatar do usuário
theguitarmester
Membro
Membro
Mensagens: 21
Registrado em: Sáb Ago 22, 2015 12:32 am
Karma: 11

Contato:

Re: Duvida sobre Game Maker

Sáb Fev 03, 2018 5:08 pm

Agora entendi o que ser esse dano hehe, ele para mostrar na tela o dano que foi causado, apenas um draw.

É uma questão de lógica mesmo, crie o dano vinculado a cada inimigo.
Se a criação do dano parte do inimigo, grave a ID do inimigo no dano, para ele saber qual é a instância /inimigo que esse dano está se referenciando, algo como
Inimigo:
//Ao tomar o dano, ele cria o obj que mostra o dano:


var objdano = instance_create(x,y-32, obj_dano);
objdano.idDoInimigoQueEuEstouMostrandoODano = instance_id; //Não lembro se de fato é instance_id a função pra pegar o id da instancia atual, this deve dar também.


Então em algum lugar do dano:
damage = global.playerAttack - idDoInimigoQueEuEstouMostrandoODano.enenyDefend;

Cuidado só ao colocar no create neste meu exemplo, porque o idDoInimigoQueEuEstouMostrandoODano inicia como zero, o create é(pelo menos até o GMS1, pelo que lembro) executado logo após a intância ser criada, logo, a linha abaixo no inimigo que seta o ID, acontece depois do create do objdano.

Mas eu acho que o melhor modo não era criar o dano dessa forma, porém essa funciona, enfim, é isso.
 
GhostPower
Novato
Novato
Autor
Mensagens: 16
Registrado em: Qui Fev 01, 2018 10:38 am
Karma: 16

Re: Duvida sobre Game Maker

Sáb Fev 03, 2018 6:45 pm

Blz theguitarmester

Então o problema e que quando e em área eu pego somente o id do inimigo selecionado,o q estou tentando fazer e ataca todos inimigo que tiver a target true.Pode ser dois,três ou quatro sei la todos q tiver a target true.(o sistema de target do inimigo funciona). Como faço se ele atacar dois(ou mais inimigo)?

Obrigado pela ajuda, isso de pega o id do inimigo ja tinha feito, aqui: global.playerTarget.????, esta em uma variável global.
 
Avatar do usuário
theguitarmester
Membro
Membro
Mensagens: 21
Registrado em: Sáb Ago 22, 2015 12:32 am
Karma: 11

Contato:

Re: Duvida sobre Game Maker

Ter Fev 06, 2018 9:07 pm

Dê uma olhada no comando "with" e em como ele funciona

"Então o problema e que quando e em área eu pego somente o id do inimigo selecionado"
Como tu tá fazendo essa captura?

tu pode criar algo assim:

InimigosNaMira[0];
totalNaMira=0;
with inimigos {if target=true {other.inimigosNaMira[totalNaMira]=id; other.totalNaMira+=1;}}

Tu tá usando uma variável só, tu só vai "conseguir" guardar um inimigo.

Caso não entendeste, mostra os códigos que tu está usando para marcar os inimigos, e para fazer danos neles.
 
GhostPower
Novato
Novato
Autor
Mensagens: 16
Registrado em: Qui Fev 01, 2018 10:38 am
Karma: 16

Re: Duvida sobre Game Maker

Qua Fev 07, 2018 9:41 am

Blz theguitarmester

Vou deixar o código para vc então, pq isso de guardar mais de um inimigo eu entendi, mas o q tenho q mudar no objeto dano não tenho ideia.

Abaixo o código que estou usando:

Colisão com inimigo:

if enemyTarget = "Target"{

instance_create(self.x,self.y,obj_player_damage);
}

Objeto dano:
Create:

damage = global.playerAttack - global.playerTarget.enenyDefend;


Obrigado por sua ajuda. 
 
Avatar do usuário
theguitarmester
Membro
Membro
Mensagens: 21
Registrado em: Sáb Ago 22, 2015 12:32 am
Karma: 11

Contato:

Re: Duvida sobre Game Maker

Sáb Fev 10, 2018 2:20 am

GhostPower:O que poderia você fazer:

Colisão com inimigo:
if enemyTarget = "Target"{

var dano = instance_create(self.x,self.y,obj_player_damage);
dano.enenyDefend = enenyDefend;
}

Objeto dano:
Create:
enenyDefend = 0;
alarm[9] = 1;
damage=0;

Alarm 0:
damage = global.playerAttack - enenyDefend;



Essa é uma forma de fazer, tive que colocar o alarm(que foi só para não fazer a definição do damage no create) porque quando tu cria uma nova instância, o evento CREATE dela é chamado imediatamente, e então, o valor de enenyDefend estaria como 0.
De nada!
 
GhostPower
Novato
Novato
Autor
Mensagens: 16
Registrado em: Qui Fev 01, 2018 10:38 am
Karma: 16

Re: Duvida sobre Game Maker

Sáb Fev 10, 2018 1:06 pm

Bom dia theguitarmester,

Cara testei as modificações q tu disse, mas continua na mesma.
Não sei o pq, pensei q ia funciona agora.

Obs.: Não sei se falei, mas os inimigos são herança. Não tem um jeito de fazer isso usando o Draw de cada inimigo ?  


Vlw pela tentativa.
 
Avatar do usuário
SirPug
Novato
Novato
Mensagens: 15
Registrado em: Sáb Fev 10, 2018 12:31 am
Karma: 16

Re: Duvida sobre Game Maker

Sáb Fev 10, 2018 10:39 pm

Pensei um pouco aqui e pensei o seguinte:
A função que mostra o dano ser no inimigo já que você cria a global de dano do jogador pode acessar ela dentro dos códigos do inimigo, basicamente da seguinte forma: Quando o inimigo estiver na área do ataque do jogador ele mostra o dano a partir do inimigo

Em relação ao equipamento pode criar um objeto de cada item do jogo com atributos padrão, por exemplo ATAQUE e DEFESA.
Quando o jogador arrastar o item até o slot você acessa o item que foi equipado pelo id e coloca ele dentro da lista de slots.
Depois quando for calcular a defesa do jogador soma a defesa de cada item que está equipado nos slots acessando o atributo de defesa de cada item pelo id.

Espero ter ajudado!
Linguagens que já programei / programo:
C#, HTML, PHP, MySQL, Python e C.

Minhas paixões:
Programação, Pixel Art, Música, Design em geral.

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante