Página 1 de 1
Duvida sobre Game Maker
Enviado: Qui Fev 01, 2018 11:51 am
por GhostPower
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.
Re: Duvida sobre Game Maker
Enviado: Sáb Fev 03, 2018 1:45 am
por theguitarmester
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.
Re: Duvida sobre Game Maker
Enviado: Sáb Fev 03, 2018 2:31 pm
por GhostPower
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.
Re: Duvida sobre Game Maker
Enviado: Sáb Fev 03, 2018 5:08 pm
por theguitarmester
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:
Código: Selecionar todos
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.
Re: Duvida sobre Game Maker
Enviado: Sáb Fev 03, 2018 6:45 pm
por GhostPower
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.
Re: Duvida sobre Game Maker
Enviado: Ter Fev 06, 2018 9:07 pm
por theguitarmester
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:
Código: Selecionar todos
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.
Re: Duvida sobre Game Maker
Enviado: Qua Fev 07, 2018 9:41 am
por GhostPower
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:
Código: Selecionar todos
if enemyTarget = "Target"{
instance_create(self.x,self.y,obj_player_damage);
}
Objeto dano:
Código: Selecionar todos
Create:
damage = global.playerAttack - global.playerTarget.enenyDefend;
Obrigado por sua ajuda.
Re: Duvida sobre Game Maker
Enviado: Sáb Fev 10, 2018 2:20 am
por theguitarmester
GhostPower:O que poderia você fazer:
Colisão com inimigo:
Código: Selecionar todos
if enemyTarget = "Target"{
var dano = instance_create(self.x,self.y,obj_player_damage);
dano.enenyDefend = enenyDefend;
}
Objeto dano:
Código: Selecionar todos
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!
Re: Duvida sobre Game Maker
Enviado: Sáb Fev 10, 2018 1:06 pm
por GhostPower
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.
Re: Duvida sobre Game Maker
Enviado: Sáb Fev 10, 2018 10:39 pm
por SirPug
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!
Re: Duvida sobre Game Maker
Enviado: Dom Fev 11, 2018 7:14 am
por SnowPi
Vou tentar ajudar com o primeiro problema, depois pensamos no segundo o/
Sinceramente, tentar montar seu código sem ter acesso a ele seria muito difícil, então me dei ao luxo de criar um do 0 e te passar pra você se basear nele, caso queira.
Aqui está o link pra baixar o projeto.
Exemplo do "sistema":
Basicamente, quando o jogador(quadrado verde) ataca, caso tenha um inimigo na frente dele ele marca esse inimigo como um alvo(sei que não é exatamente o que você quer, mas foi um exemplo pra você adaptar).
Ao marcar esse inimigo como um alvo, o oManager vai criar o objeto de dano(quadrado azul) em cima dele.
Todos os monstros dentro do objeto de dano vão ser atingidos por ele.
Você pode mudar a ordem que as coisas acontecem pra ter resultados diferentes. Por exemplo criar o objeto de dano ao atacar e caso ele acerte alguém você marca esse alguém como alvo(e ai você tira vida ou alguma outra coisa).
Algo que eu queria deixar comentado aqui é esse trecho do oManager:
Código: Selecionar todos
// Checar se existe algum inimigo
if(instance_exists(oRed)) {
// Cria array com todos inimigos
i = 0; repeat(instance_number(oRed)) {
Enemy[i] = instance_find(oRed, i);
i++
}
// Pega cada inimigo no mapa pra poder manipular
i = 0; repeat(array_length_1d(Enemy)) {
with(Enemy[i]) {
// Checa se ele é alvo e está vivo
if(Target && isAlive) {
// Cria objeto de dano em cima dele
instance_create(x, y, oDamage);
}
}
i++
}
}
[/left]
Essa é a parte importante pra você poder separar quem esta sendo alvo e quem não está.
Na verdade essa é a parte mais importante pra você lidar com os inimigos, hehe...
Enfim, espero que o código te ajude o/
See ya.
Re: Duvida sobre Game Maker
Enviado: Dom Fev 11, 2018 10:51 am
por GhostPower
Blz
SnowPi
Vamos la cara:
Primeiramente obrigado pela sua ajuda a segunda duvida eu consegui fazer uma maneira de equipar e desequipar um item pelo objeto(ate agora esta funcionando).
Então o meu maior problema esta no objeto dano, pq não sei o que fazer para criar um objeto dano e ele calcular os danos em diferentes inimigos de uma só
vez.
Se vc poder usar uma teoria ou um código
no objeto dano e mostrar, eu agradeceria.
Obs.
: O HP do inimigo funciona (mesmo em área, ele calcular o dano de cada inimigo mesmo com a defesa ou atributo diferente), até sugeri
em usar o events Draw para mostra o dano, pq ai eu eliminaria este objeto dano.
Deixo meu muito obrigado pela sua atenção e disposição.
Re: Duvida sobre Game Maker
Enviado: Dom Fev 11, 2018 6:13 pm
por SnowPi
O calculo do dano depende do teu sistema de batalha. Não tenho como simular um aqui porque a forma como você fez pode divergir muito da forma como eu faria...
Anyway, você pode, por exemplo, usar o código que eu deixei na minha última resposta DENTRO do objeto dano pra pegar todos os inimigos acertados(só precisaria mudar algumas coisas no código), depois disso você calcularia os danos e absorções...
Re: Duvida sobre Game Maker
Enviado: Ter Fev 13, 2018 10:18 am
por GhostPower
Blz
SnowPi,
Então vc poderia mostra o seu jeito de fazer? Ou sua ideia?
Obrigado pela ajuda, cara infelizmente não tenho ideia de como fazer isso.
Re: Duvida sobre Game Maker
Enviado: Qua Fev 14, 2018 6:26 pm
por SnowPi
Eu tinha escrito uma resposta legal aqui mas o fórum me deslogou e eu perdi tudo e infelizmente não tenho mais tempo pra refazer ela, mas eu deixei esse código aqui, basicamente:
Código: Selecionar todos
// Checar se existe algum inimigo
if(instance_exists(oRed)) {
// Cria array com todos inimigos
i = 0; repeat(instance_number(oRed)) {
Enemy[i] = instance_find(oRed, i);
i++
}
// Pega cada inimigo no mapa pra poder manipular
i = 0; repeat(array_length_1d(Enemy)) {
with(Enemy[i]) {
if(place_meeting(x, y, oDano)) {
// Tá colidindo com o dano
Enemy[i].hp -= (oDano.dano - Enemy[i].defesa)
}
}
i++
}
}
Exemplo de aplicação:
Caso o objeto dano fosse criado colidindo com 2 inimigos:
Goblin:
HP = 20
Defesa = 5
Ogro:
HP = 20
Defesa = 20
Se o dano for 25, o Goblin vai morrer(25 do ataque - 5 da defesa = 20 de dano) e o Ogro vai sobreviver(25 do ataque - 20 da defesa = 5 de dano).
Agora, pra não ter que colocar todo o calculo ali(talvez seu jogo tenha buffs e estados específicos, chance de acertar ou de dar crítico e etc...) eu criaria um script pra cuidar de tudo isso.
Re: Duvida sobre Game Maker
Enviado: Qui Fev 15, 2018 4:44 pm
por GhostPower
Vlw
SnowPi
Vou tentar usar este código no meu jogo, mas digo se tiver mais algumas ideia sobre isso estou a disposição.
Obrigado pela ajuda.
Re: Duvida sobre Game Maker
Enviado: Qua Mar 21, 2018 10:04 am
por GhostPower
Bom dia
SirPug,
Então cara obrigado pela sua ajuda, mais já consegui resolver as duas duvidas.
Se quiserem podem ate fechar/encerrar esta duvida com resolvida.
Agradeço a todos pela a ajuda.