Le Deal du moment :
Pokémon EV06 : où acheter le Bundle Lot ...
Voir le deal

Aller en bas
Tiroflan
Tiroflan
Membre

Nombre de messages : 14
Age : 33
Distinction : aucune
Date d'inscription : 03/01/2012

[VX-VXAce] Contrôle du nombre de pas en rencontres aléatoires Empty [VX-VXAce] Contrôle du nombre de pas en rencontres aléatoires

Mar 14 Aoû 2012 - 10:26
Un mini code qui m'est venu à la suite de rencontres aléatoires intempestives. Rien de plus rageant que d'avoir des combats aléatoires toutes les deux cases, et malheureusement le système de base de rmvx rend ce genre de désagréments possibles.

Donc, ce code propose de réduire considérablement la probabilité qu'il y ait deux combats très rapprochés en terme de pas marchés sur la carte. Si par exemple, vous avez mis rencontre tous les 10 pas en moyenne sur votre map, alors le combat aura vraisemblablement lieu entre 6 et 14 pas, alors que dans le combat de base l'intervalle serait plutôt de 2 à 18 pas.

Le code est plug&play, il suffit de le mettre au dessus de main dans l'éditeur de scripts. Cependant, il est possible d'agir vous même sur la taille des intervalles qui vous intéressent. Pour cela il faut modifier la valeur de p à la ligne 25 (par défaut à 0.5) par une valeur comprise entre 0 et 1 (et différente de 0 et de 1). Si vous vous approchez de 1, les intervalles seront serrés (par exemple, avec 0.9 on aurait l'intervalle 8-12 pas), et si vous vous approchez de 0, a contraire, l'intervalle s'élargit (auquel cas je recommande de laisser le système normal, ça aurait le même effet).

Avec quelques chiffres pour illustrer l'effet de p et l'effet du script, pour un nombre de pas moyens égal à 10 :

Système normal -> Intervalle = [2,18]
p = 0.1 -> Intervalle = [4,16]
p = 0.5 -> Intervalle = [6,14]
p = 0.9 -> Intervalle = [8,12]
L'intervalle signifie que le nombre de pas calculé a 95% de chances de se trouver à l'intérieur de cet intervalle.

Voilà, si vous avez pas du tout envie de vous embrouiller avec des chiffres, contentez vous de copier coller, et les chances d'avoir deux rencontres simultanées sur une carte avec moyenne de 10 passeront de 1/100 à 1/50000.

Code pour VX :

Code:
### Contrôle du nombre de pas en rencontres aléatoires ###
### Par Tiroflan, le 10/08/2012 ###
###########################
#
# Ce code est a destination des joueurs utilisant les rencontres aléatoires pour affronter des monstres.
# Dans le système de base, il est possible d'être attaqué 1 case à peine après le combat précédent.
# Ce script propose de modifier l'intervalle autour de la valeur du nombre de pas moyen.
# (celle qui est entrée dans l'éditeur de maps)
# Aucune configuration n'est nécessaire, cependant, si vous voulez changer la taille des intervalles, c'est possible,
# en modifiant la valeur du nombre p (ligne 25) dans le script. Si vous vous rapprochez de 1,
# vous resserez l'intervalle autour de la valeur moyenne, au contraire, vous l'élargissez en vous approchant de 0.
# Attention à ne pas entrer 0 ou 1, cela causerait une erreur !
# Se rapprocher trop près de 0 augmente le calcul inutilement, pour un effet équivalent au système normal.
# Des exemples numériques sont disponibles sur le topic de présentation du script.
#
#
# Note : la méthode make_encounter_count est réécrite. Si un autre script propose ce genre de fonctionnalité,
# il peut y avoir incompatibilité.
#
class Game_Player < Game_Character

  def make_encounter_count
    if $game_map.map_id != 0
      n = $game_map.encounter_step
      p = 0.5  # Nombre compris entre 0 et 1 (attention, différent de 0 et de 1 !)
      nb_bernouilli = (n/p)
      @encounter_count = 1 
      for i in 1...nb_bernouilli
        if rand(0)<p
          @encounter_count +=1
        end
      end
    end
  end
 
end

Le même pour Ace : (une ligne de modif dans le code source)

Code:
### Contrôle du nombre de pas en rencontres aléatoires ###
### Par Tiroflan, le 10/08/2012 ###
###########################
#
# Ce code est a destination des joueurs utilisant les rencontres aléatoires pour affronter des monstres.
# Dans le système de base, il est possible d'être attaqué 1 case à peine après le combat précédent.
# Ce script propose de modifier l'intervalle autour de la valeur du nombre de pas moyen.
# (celle qui est entrée dans l'éditeur de maps)
# Aucune configuration n'est nécessaire, cependant, si vous voulez changer la taille des intervalles, c'est possible,
# en modifiant la valeur du nombre p (ligne 25) dans le script. Si vous vous rapprochez de 1,
# vous resserez l'intervalle autour de la valeur moyenne, au contraire, vous l'élargissez en vous approchant de 0.
# Attention à ne pas entrer 0 ou 1, cela causerait une erreur !
# Se rapprocher trop près de 0 augmente le calcul inutilement, pour un effet équivalent au système normal.
# Des exemples numériques sont disponibles sur le topic de présentation du script.
#
#
# Note : la méthode make_encounter_count est réécrite. Si un autre script propose ce genre de fonctionnalité,
# il peut y avoir incompatibilité.
#
class Game_Player < Game_Character

  def make_encounter_count
      n = $game_map.encounter_step
      p = 0.5  # Nombre compris entre 0 et 1 (attention, différent de 0 et de 1 !)
      nb_bernouilli = (n/p)
      @encounter_count = 1 
      for i in 1...nb_bernouilli
        if rand(0)<p
          @encounter_count +=1
        end
      end
  end
 
end

Gummy
Gummy
Staffeux retraité

Nombre de messages : 2666
Age : 32
Localisation : Belgique
Distinction : Modérateur imprévisible

Papy Lolo' [Nabots Nimousse]


Date d'inscription : 27/01/2008

[VX-VXAce] Contrôle du nombre de pas en rencontres aléatoires Empty Re: [VX-VXAce] Contrôle du nombre de pas en rencontres aléatoires

Mar 14 Aoû 2012 - 12:20
Ah génial, moi qui trouvais aussi que parfois les rencontres étaient vraiment inégales.

+ 5pts de participation.
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum