Mudar a fórmula de encontro

4 Respostas   234 Visualizações

0 Membros e 1 Visitante estão vendo este tópico.

Memories

  • *
  • Posts: 46
  • Ouros: 10
Tópico criado em: 03/03/2017 às 12:53 - Última modificação por Memories em 03/03/2017 às 15:19

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?)

Geraldo de Rívia

  • Mito
  • *
  • Posts: 4452
  • Ouros: 3887
  • O vento está sibilando.
  • Medalhas Vencedor do Protótipo Premiado Participantes do Maps Together 2
Resposta 1: 03/03/2017 às 13:35

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:

Código: [Selecionar]
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:

Código: [Selecionar]
this._encounterCount = 50;
Creio eu. Testa aí, se não resolver, faço uns testes aqui pra te dar uma resposta mais precisa.

Memories

  • *
  • Posts: 46
  • Ouros: 10
Resposta 2: 03/03/2017 às 14:09

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:

Geraldo de Rívia

  • Mito
  • *
  • Posts: 4452
  • Ouros: 3887
  • O vento está sibilando.
  • Medalhas Vencedor do Protótipo Premiado Participantes do Maps Together 2
Resposta 3: 03/03/2017 às 14:23

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

Código: [Selecionar]
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:

Código: [Selecionar]
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:

Código: [Selecionar]
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.

Memories

  • *
  • Posts: 46
  • Ouros: 10
Resposta 4: 03/03/2017 às 14:52

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: