Sujet n°12905
Posté par TouzaxA le 6 Juil - 15:38 (2013)
Titre : Variables et interrupteurs illimités
Bonjour à tous.
Je vous livre aujourd'hui deux astuces simples afin d'augmenter considérablement le nombre de variables et d'interrupteurs disponibles.
Je pense qu'il est inutile de dire qu'il ne faut pas dépasser certaines limites. (Enfin si, je le dis parce que c'est pas si inutile que ça, connaissant certains membres. XD Rameric après manger )
Ouvrez le gestionnaire de scripts, et le script Game_Variables. Remplacez 5000 par la valeur de votre choix, comme ceci par exemple:
Code:
#==============================================================================
# ■ Game_Variables
#------------------------------------------------------------------------------
#  変数を扱うクラスです。組み込みクラス Array のラッパーです。このクラスのイ
# ンスタンスは $game_variables で参照されます。
#==============================================================================

class Game_Variables
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    @data = []
  end
  #--------------------------------------------------------------------------
  # ● 変数の取得
  #     variable_id : 変数 ID
  #--------------------------------------------------------------------------
  def [](variable_id)
    if variable_id <= 6000 and @data[variable_id] != nil
      return @data[variable_id]
    else
      return 0
    end
  end
  #--------------------------------------------------------------------------
  # ● 変数の設定
  #     variable_id : 変数 ID
  #     value       : 変数の値
  #--------------------------------------------------------------------------
  def []=(variable_id, value)
    if variable_id <= 6000
      @data[variable_id] = value
    end
  end
end

Il est obligatoire de modifier les deux.

Vous pouvez faire la même chose pour les interrupteurs, dans le script Game_Switches.

Pour les utiliser, on ne peut pas utiliser le mode assisté: on doit passer par des scripts.

Pour assigner une variable, tapez dans un script inséré le code suivant:
Code:
$game_variables[NumeroDeVariable] = Valeur

Il faut bien entendu que le NumeroDeVariable soit égal ou inférieur à celui entré dans le script.
Pour assigner un interrupteur, tapez dans un script inséré le code suivant:
Code:
$game_switches[NumeroDInterrupteur] = true/false


On peut bien sur les utiliser dans les conditions (dernier panneau, et script). Attention, pour tester une égalité:
Code:
$game_variable[NumeroDeVariable] == Valeur

Pensez donc bien à mettre deux signes égal.

Pour les messages, rien ne change: \V[NumeroDeVariable].

Voilà, j'espère que ça en aidera certains, qui sont gros consommateurs de variables, ou qui souhaitent les ranger de façon ordonnée. (Groupes de 100 par exemple)

Posté par Girakoth le 6 Juil - 17:57 (2013)
Sympa, c'est vrai que ça peut toujours servir.

Merci pour l'astuce!

Posté par TouzaxA le 6 Juil - 18:00 (2013)
Il y a une façon de rendre complètement illimité, mais se fixer une limite raisonnable est préférable je pense. Si ça intéresse vraiment, je peux éventuellement la poster.

Posté par Gold le 6 Juil - 18:46 (2013)
Après, l'autre question qui se pose est : "A-t-on réellement besoin d'autant d'interrupteurs ?"

Mais en effet, si le besoin se fait ressentir, go pour ça ! Merci donc !

Posté par TouzaxA le 6 Juil - 18:49 (2013)
C'est aussi pour des histoires d'organisation, les ranger par centaines, etc.

Posté par Pαlвσlѕку le 7 Juil - 21:55 (2013)
Je me demande surtout si l'interface de RMXP est conçu pour dépasser 5000 interrupteurs et variables.
Je n'ai pas testé donc je ne peux pas vous dire ce que ça fait. Imbécile heureux

Posté par TouzaxA le 8 Juil - 08:54 (2013)
Ça fonctionne parfaitement, mais comme je l'ai précisé, il faut passer par la commande Insérer un script...

Posté par Nuri Yuri le 8 Juil - 12:40 (2013)
Et $game_variables[0xFFFFFFFF]=5 fonctionne ?
Plus sérieusement, avoir les switches illimités ou autre est une idée complètement stupide. C'est comme la variable 5000 de PSP 4G+ qui fait consommer de la mémoire inutile car entre 1000 et 4999 il y a que du vide soit 4ko inutilisés en mémoire. Un bon jeu peut fonctionner avec moins 5000 variables alors chercher à en avoir une quantité illimité n'est pas très utile... (Sinon, ça se résume à une ligne de code, d'ailleurs, je sais plus si cette astuce était pas déjà dans un sujet bien spécifique...)

Posté par Zohran le 8 Juil - 12:50 (2013)
Tout à fait d'accord avec Yuri, mieux vaut quelques lignes de script que des milliers de variables et interrupteurs. Mieux vaut apprendre un peu de ruby que d'en arriver à ça.

Posté par TouzaxA le 8 Juil - 13:06 (2013)
Je crois avoir précisé dans les limites du raisonnable...
Si on se rend compte qu'il manque quelques variables ou interrupteurs, c'est utile. Ça peut aussi être utilisé pour optimiser son jeu, et réduire le nombre de variables et d'interrupteurs.

Posté par Nuri Yuri le 8 Juil - 13:28 (2013)
Il est impossible de me raisonner :/ *fuit*
Certes mais à moins d'être un très mauvais Maker il faut le faire pour atteindre la limite imposée par le logiciel au niveau des variables et interrupteurs.
On a besoins d'une vingtaine de variable temporaire et d'interrupteurs temporaires puis le reste sert au scénario principale, encore que, les switchs locaux font l'affaire dans bien des cas. (Surtout dans les scénar' linéaire à la Pokémon.)

Enfin, ça reste une bonne information pour ceux qui le savent pas.

Posté par TouzaxA le 8 Juil - 13:36 (2013)
Ça dépend du scénario. Le mien est un scénario évolutif, qui prend en compte la moindre des actions du joueur pour élaborer un scénario. Même si je n'aurais sans doute pas besoin d'autant de variables et d'interrupteurs, on ne sait jamais. ^^