O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Mudar a fórmula de encontro

Iniciado por Memories, 03/03/2017 às 12:53

03/03/2017 às 12:53 Última edição: 03/03/2017 às 15:19 por Memories
Oi galera, beleza?
Eu uso o sistema de encontros no meu jogo. Na verdade não gosto do sistema padrão do RPG Maker porque é muito randomico.
Em alguns momentos, em um mapa com 50 passos, eu dou 10 ou menos, e começa uma batalha, várias vezes seguida. Eu queria que, se eu colocar 50 passos, as batalhas aconteçam sempre a cada 50 paços. Assim consigo facilmente balancear o encontro em cada mapa.
Eu encontrei esse formula em Game_Player.prototype.makeEncounterCount:

this._encounterCount = Math.randomInt(n) + Math.randomInt(n) + 1;

Porém não faço a mínima ideia de como mudar a fórmula para o jeito que quero. Alguém pode dar uma ajudinha?

(Edit: postei na seção errada, me desculpem! Eu estou cansado porque acabei de voltar da universidade, então me distraí. Alguem pode mover pra área de plug ins, por favor?)

Calma, tu não postou em um lugar tãaao errado assim. É um suporte ao MV, de qualquer modo mesmo.

Quanto à sua dúvida, o n da expressão deve ser o valor que tu define nas propriedades do mapa, que
é enviado para essa função. Sendo assim, se tu colocar:

this._encounterCount = n;


Deve fazer com que o número de passos entre batalhas seja exatamente o que tu definir nas propriedades
do mapa respectivo. Agora, se tu quer colocar esse intervalo como 50, em todos os mapas, pode deixar:

this._encounterCount = 50;


Creio eu. Testa aí, se não resolver, faço uns testes aqui pra te dar uma resposta mais precisa.

Eu mudei para n, mas mesmo assim não está sendo exatamente 50 passos.
Foram 40, 39, 51, 38.
Não entendi... n seria o numero de passos? Pq se for, era pra ter dado certo.  :O_O:

A função é essa abaixo, certo? Linha 7570 do rpg_objects.

Game_Player.prototype.makeEncounterCount = function() {
    var n = $gameMap.encounterStep();
    this._encounterCount = Math.randomInt(n) + Math.randomInt(n) + 1;
};


Essa função é chamada ao iniciar uma batalha ou um novo mapa. Primeiramente, ela colhe o valor de passos definido na
propriedade do mapa e seta n para esse valor. Em seguida, a variável _encounterCount é calculada da seguinte forma:

Número inteiro aleatório entre 0 e n + Número inteiro aleatório entre 0 e n + 1;


Ou seja, a próxima batalha pode ser daqui a 1 passo (mínimo), ou daqui a 2n + 1 (máximo) em passos. A cada passo dado,
1 é diminuído do valor dessa variável, até que ela chegue a 0 e assim inicie a batalha. Colocando n no lugar da expressão,
você faria com que a quantidade de passos necessária seja igual ao definido lá. Poderia ser algo tipo assim:

Game_Player.prototype.makeEncounterCount = function() {
    this._encounterCount = $gameMap.encounterStep();
};


Eu testei aqui com 10 passos e funcionou. Tive seis batalhas sucessivas após 10 passos de intervalo.

Funcionou <3

Essa minha função está na linha 7535.
Eu coloquei sua formula e funcionou para 50 passos certinho. Se com 10 também deu então está tudo certinho!
E vlw pela explicação da função, eu realmente não entendia como os encontros funcionavam.

Obrigado pela ajuda!  :ok: