Sujet n°10972
Posté par Conan Edogawa le 19 Fév - 12:46 (2012)
Titre : Aide Script Réputation
Bonjour,
Aujourd'hui, j'ai installé un script permetant d'afficher une réputation.
Malheuresement, quand j'ajoute une valeur, cela fait cela:

Au lieu de faire cela:

Comment corriger ce bug?
Merci d'avance

Posté par Sphinx le 19 Fév - 12:59 (2012)
Bonjour,

^^" Tu aurais des screens taille réelle plutôt ? (c'est surement lié à mon vénérable age, mais je n'arrive pas à voir le bug, je n'arrive pas à lire ^^")

Posté par Conan Edogawa le 19 Fév - 13:08 (2012)
J'ai pas plus gros
C'est ecrit Maitre pokémon Héros
Au lieu de:
Maitre pokémon débutant
et j'ai oublié le script :gloups: :

Spoiler
Code:
#   Kio's Reputation System v1.2
#==============================================================

class Game_System
    attr_accessor :fac_rep
    attr_accessor :fac_active
 
  alias rep_initialize initialize
  def initialize
    rep_initialize
    @fac_rep=[]
    @fac_active=[]
  end
end

class Scene_Title
 alias cng command_new_game
 def command_new_game
  cng
  #Determine the initial settings for the faction's reputations here
  $game_system.fac_rep = [50, 44, 75, 24, 9, 56, 100]
  #Determine the inital factions you can see here.
  $game_system.fac_active = ["active", "active", "active", "active", "active", nil, nil]
 end
end

class Scene_Reputation
  def main
    @status_window = Window_Reputation.new
    @sprite = Spriteset_Map.new
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @status_window.dispose
    @sprite.dispose
  end

  def update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      return
    end
  end
end

class Window_Reputation < Window_Base
    attr_accessor :factions
    attr_accessor :fac_rep
    attr_accessor :reptypes
    attr_accessor :fac_active

  def initialize
    super(0, 0, 640, 480)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "Tahoma"
    self.contents.font.size = 22
    self.contents.font.color = text_color(0)
    self.back_opacity = 120
    @factions = ["Maitre Pokémon", "Adoré", "Naze", "Stupide", "0 BP", "Ordre Blanc", "Crestguarde"]
    @rep = ["Héros", "Héros", "Amical", "Débutant", "Détesté", "Intelligent", "9999 BP"]
    refresh
  end
 
  def draw_repbar(x, y, width, height, current, max)
    x -= 10
    for i in 0..(height+2)
      self.contents.fill_rect(x-3+i, y - 1 + i, width+5, 1, Color.new(255, 255, 255, 255))
    end
    for i in 0..height
      self.contents.fill_rect(x+i, y+i, width+1, 1, Color.new(0, 0, 0, 255))
    end
    for i in 0..height
      for j in 0..current
        self.contents.fill_rect(x+j+i, y+i, 1, 1, Color.new(0, 0 + (1.25*j), 255 - (1.25*j), 255 - (5*i)))
      end
    end
  end

  def refresh
    self.contents.clear
    self.contents.font.color = normal_color
    self.contents.font.size = 32
    self.contents.draw_text(20, 40, 184, 32, "Réputation", 2)
    self.contents.font.size = $fontsize
    for i in 0... @factions.size
      y = 80 + (i * 70)
      x = -30
      if i > 4
        x = 280
        y = 80 + ((i - 5) * 70)
      end
      if $game_system.fac_rep[i] > 100
        $game_system.fac_rep[i] = 100
      end
      if $game_system.fac_rep[i] < 0
        $game_system.fac_rep[i] = 0
      end
      if $game_system.fac_active[i] == "active"
        draw_fac(x, y, i)
      end
      self.contents.font.color = normal_color
    end
  end
 
  def draw_fac(x, y, i)
    self.contents.draw_text(x+40, y, 160, 32, @factions[i], 0)
    draw_repbar(x+90, y+32,  200, 14, 2 * $game_system.fac_rep[i], 100)
    self.contents.font.color = system_color
    if $game_system.fac_rep[i] >= 90
      self.contents.draw_text(x+210, y, 96, 32, @rep[0], 2)
    elsif $game_system.fac_rep[i] >= 75
      self.contents.draw_text(x+210, y, 96, 32, @rep[1], 2)
    elsif $game_system.fac_rep[i] >= 55
      self.contents.draw_text(x+210, y, 96, 32, @rep[2], 2)
    elsif $game_system.fac_rep[i] >= 45
      self.contents.draw_text(x+210, y, 96, 32, @rep[3], 2)
    elsif $game_system.fac_rep[i] >= 25
      self.contents.draw_text(x+210, y, 96, 32, @rep[4], 2)
    elsif $game_system.fac_rep[i] >= 10
      self.contents.draw_text(x+210, y, 96, 32, @rep[5], 2)
    else
      self.contents.draw_text(x+210, y, 96, 32, @rep[6], 2)
    end
  end

Posté par Ле́нин le 19 Fév - 17:17 (2012)
Mais non c'est parce que tu upload tes maps comme des fichiers. Utilise le bouton "image" plutôt.

Posté par Conan Edogawa le 19 Fév - 17:48 (2012)
En fait, les textes sont lisibles, il faut cliquer.

Posté par Ле́нин le 19 Fév - 18:00 (2012)
Si tu cliques tu DL, parce que c'est un fichier. Et c'est désagréable d'avoir à DL des captures d'écran. Personne ne le fera en tout cas, même pour t'aider.

Posté par Conan Edogawa le 19 Fév - 18:05 (2012)
Nan j'ai changer les balises

Posté par Sphinx le 19 Fév - 20:25 (2012)
Lordork a écrit:
Si tu cliques tu DL, parce que c'est un fichier. Et c'est désagréable d'avoir à DL des captures d'écran. Personne ne le fera en tout cas, même pour t'aider.

Ce sont bien des images ^o^ Ceci dit, plutôt que les vignettes illisibles qui obligent à cliquer pour consulter le screen taille normale (auquel je n'avais pas accès à mon premier message, je précise) j'aurais plutôt directement mis les screens taille réelle dans le message

=> par contre je suis désolé, mais je n'ai pas bien compris ton système de réputation Mollasse enragé Que signifient ces barres, ainsi que les textes affichés au dessus ? ^^"

Posté par Conan Edogawa le 19 Fév - 20:52 (2012)
Une barre indique un niveau du héros dans un domaine.
Par exemple:Quand il finit un combat la barre en haut va se vider petit a petit jusqu'a se quelle soit vide, quand il sera maitre pkmn.
La derniere sert a afficher le nombre de Battle points
Voila

Posté par Billie Preks le 20 Fév - 17:25 (2012)
Je ne sais pas coder en Ruby, mais j'ai toujours (ou presque) su regler mes problemes par logique. Je te conseille donc de remplacer la ligne 68 de ton code: 
Code:
     @rep = ["Héros", "Héros", "Amical", "Débutant", "Détesté", "Intelligent", "9999 BP"] 

par ceci:

 
Code:
     @rep = ["Debutant", "Débutant", "Amical", "Débutant", "Détesté", "Intelligent", "9999 BP"] 

Je n'ai pas testé ce que cela peut donner (flemme d'installer ce script puis de le corriger Petit saligaud mal élevé ), donc dis-moi le resultat que tu obtiens.
(Si cela ne marche pas, donne moi le lien pour le script vierge, avant que tu ne le modifies)

Posté par Conan Edogawa le 20 Fév - 21:06 (2012)
Ca marche pas:
Voila
Code:
#==============================================================
#   Kio's Reputation System v1.2
#==============================================================

class Game_System
    attr_accessor :fac_rep
    attr_accessor :fac_active
 
  alias rep_initialize initialize
  def initialize
    rep_initialize
    @fac_rep=[]
    @fac_active=[]
  end
end

class Scene_Title
 alias cng command_new_game
 def command_new_game
  cng
  #Determine the initial settings for the faction's reputations here
  $game_system.fac_rep = [50, 44, 75, 24, 9, 56, 100]
  #Determine the inital factions you can see here.
  $game_system.fac_active = ["active", "active", "active", "active", "active", nil, nil]
 end
end

class Scene_Reputation
  def main
    @status_window = Window_Reputation.new
    @sprite = Spriteset_Map.new
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @status_window.dispose
    @sprite.dispose
  end

  def update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Menu.new(5)
      return
    end
  end
end

class Window_Reputation < Window_Base
    attr_accessor :factions
    attr_accessor :fac_rep
    attr_accessor :reptypes
    attr_accessor :fac_active

  def initialize
    super(0, 0, 640, 480)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "Tahoma"
    self.contents.font.size = 22
    self.contents.font.color = text_color(0)
    self.back_opacity = 120
    @factions = ["Famille Royale", "Église d' Avelius", "Nobles", "Paysans", "Étrangers", "Ordre Blanc", "Crestguarde"]
    @rep = ["Heroique", "Honoré", "Amical", "Neutre", "Froid", "Détesté", "Horripilé"]
    refresh
  end
 
  def draw_repbar(x, y, width, height, current, max)
    x -= 10
    for i in 0..(height+2)
      self.contents.fill_rect(x-3+i, y - 1 + i, width+5, 1, Color.new(255, 255, 255, 255))
    end
    for i in 0..height
      self.contents.fill_rect(x+i, y+i, width+1, 1, Color.new(0, 0, 0, 255))
    end
    for i in 0..height
      for j in 0..current
        self.contents.fill_rect(x+j+i, y+i, 1, 1, Color.new(0, 0 + (1.25*j), 255 - (1.25*j), 255 - (5*i)))
      end
    end
  end

  def refresh
    self.contents.clear
    self.contents.font.color = normal_color
    self.contents.font.size = 32
    self.contents.draw_text(20, 40, 184, 32, "Réputation", 2)
    self.contents.font.size = $fontsize
    for i in 0... @factions.size
      y = 80 + (i * 70)
      x = -30
      if i > 4
        x = 280
        y = 80 + ((i - 5) * 70)
      end
      if $game_system.fac_rep[i] > 100
        $game_system.fac_rep[i] = 100
      end
      if $game_system.fac_rep[i] < 0
        $game_system.fac_rep[i] = 0
      end
      if $game_system.fac_active[i] == "active"
        draw_fac(x, y, i)
      end
      self.contents.font.color = normal_color
    end
  end
 
  def draw_fac(x, y, i)
    self.contents.draw_text(x+40, y, 160, 32, @factions[i], 0)
    draw_repbar(x+90, y+32,  200, 14, 2 * $game_system.fac_rep[i], 100)
    self.contents.font.color = system_color
    if $game_system.fac_rep[i] >= 90
      self.contents.draw_text(x+210, y, 96, 32, @rep[0], 2)
    elsif $game_system.fac_rep[i] >= 75
      self.contents.draw_text(x+210, y, 96, 32, @rep[1], 2)
    elsif $game_system.fac_rep[i] >= 55
      self.contents.draw_text(x+210, y, 96, 32, @rep[2], 2)
    elsif $game_system.fac_rep[i] >= 45
      self.contents.draw_text(x+210, y, 96, 32, @rep[3], 2)
    elsif $game_system.fac_rep[i] >= 25
      self.contents.draw_text(x+210, y, 96, 32, @rep[4], 2)
    elsif $game_system.fac_rep[i] >= 10
      self.contents.draw_text(x+210, y, 96, 32, @rep[5], 2)
    else
      self.contents.draw_text(x+210, y, 96, 32, @rep[6], 2)
    end
  end
end

Posté par Billie Preks le 21 Fév - 07:28 (2012)
AH, autant pour moi, je viens de regarder de plus près ton script, je n'avais pas parfaitement compris son utilité. Peux-tu me decrire son fonctionnement, comment augmenter la reputation, etc...

Posté par Miasmax40 le 21 Fév - 07:29 (2012)
et pourquoi pas faire ca avec des évènements et des variables ? tu t'embêterais moins ! parce que ton script, c'est pas demain que ca marchera :banana: :banana: