Sujet n°9319
Posté par Zooria le 2 Mar - 09:25 (2011)
Titre : [Script] Système de pourcentage
SYSTEME DE POURCENTAGE   
 
 
Bonjour/rebonjour,Ceci est mon premier script !
Je vous présente mon script pour faire une système qui permet au joueur de voir a quel pourcentage du jeu il est rendu !
En plus, vous pouvez mettre un commentaire suivant le pourcentage du joueur !
C'est a dire, que par exmple le joueur est a 56%, vous pouvez lui mettre le message "tu est sur la bonne voix" !

Donc ce système est constituer de trois script !
Il faut mettre les trois script dans l'ordre donner ici et au dessus du script main (tout en bas)!
C'est a dire:

-Window_Pourcent
-Window_Steps
-Scene_Menu
-Main



SCRIPT   
Script n°1 a nomé "Window_Pourcent":

Code:
#==============================================================================# ** Système de pourcentage#------------------------------------------------------------------------------# Bubblebug
# v2.0
# 01/03.2011
#==============================================================================
# Le pourcentage est définie dans la variable n°1 !
# Donc pour modifier le pourcentage, modifié la variable n°1 !
#==============================================================================
class Window_Pourcent < Window_Base
  def initialize
    super(0, 0, 160, 96)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(4, 0, 120, 32, "Avancement")
    @total_sec = $game_variables[1]
    text = $game_variables[1]
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 32, 100, 32, text.to_s, 2)
    self.contents.draw_text(4, 32, 125, 32, "%", 2)
  end
  def update
    super
    if Graphics.frame_count / Graphics.frame_rate != @total_sec
      refresh
    end
  end
end






Script n°2 a nomé "Window_Steps":

Code:
#==============================================================================# ** Système de pourcentage#------------------------------------------------------------------------------# Bubblebug
# v2.0
# 01/03.2011
#==============================================================================
# Le pourcentage est définie dans la variable n°1 !
# Donc pour modifier le pourcentage, modifié la variable n°1 !
#==============================================================================
class Window_Steps < Window_Base
  def option #Reglez comme vous voulez !
    @afficher = true #Mettre "true" pour afficher les commentaire, mettre "false" pour les masquer !
  end
  def initialize
    option
    super(0, 0, 160, 96)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
  def refresh
   if @afficher == true
    if $game_variables[1] <= 25
      commentaire = "Tu débute"
    end
    if $game_variables[1] >= 26
      if $game_variables[1] <= 50
        commentaire = "Tu es bon"
      end
    end
    if $game_variables[1] >= 51
      if $game_variables[1] <= 75
        commentaire = "Tu es fort"
      end
    end
    if $game_variables[1] >= 76
      if $game_variables[1] <= 99
        commentaire = "Tu es puissant"
      end
    end
    if $game_variables[1] == 100
      commentaire = "Tu as fini"
    end
    if $game_variables[1] < 0
      commentaire = "Erreur (-)"
    end
    if $game_variables[1] > 100
      commentaire = "Erreur (+)"
    end
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(4, 0, 120, 32, "Commentaire")
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 32, 120, 32, commentaire.to_s)
  end
  end
end






Script n°3 a nomé "Scene_Menu":

Code:
#==============================================================================# ** Système de pourcentage#------------------------------------------------------------------------------# Bubblebug
# v2.0
# 01/03.2011
#==============================================================================
# Le pourcentage est définie dans la variable n°1 !
# Donc pour modifier le pourcentage, modifié la variable n°1 !
#==============================================================================
class Scene_Menu
  def initialize(menu_index = 0)
    @menu_index = menu_index
  end
  def main
    s1 = $data_system.words.item
    s2 = $data_system.words.skill
    s3 = $data_system.words.equip
    s4 = "Statut"
    s5 = "Sauvegarder"
    s6 = "Quitter le jeu"
    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
    @command_window.index = @menu_index
    if $game_party.actors.size == 0
      @command_window.disable_item(0)
      @command_window.disable_item(1)
      @command_window.disable_item(2)
      @command_window.disable_item(3)
    end
    if $game_system.save_disabled
      @command_window.disable_item(4)
    end
    @pourcent_window = Window_Pourcent.new
    @pourcent_window.x = 0
    @pourcent_window.y = 224
    @steps_window = Window_Steps.new
    @steps_window.x = 0
    @steps_window.y = 320
    @gold_window = Window_Gold.new
    @gold_window.x = 0
    @gold_window.y = 416
    @status_window = Window_MenuStatus.new
    @status_window.x = 160
    @status_window.y = 0
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @command_window.dispose
    @pourcent_window.dispose
    @steps_window.dispose
    @gold_window.dispose
    @status_window.dispose
  end
  def update
    @command_window.update
    @pourcent_window.update
    @steps_window.update
    @gold_window.update
    @status_window.update
    if @command_window.active
      update_command
      return
    end
    if @status_window.active
      update_status
      return
    end
  end
  def update_command
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      return
    end
    if Input.trigger?(Input::C)
      if $game_party.actors.size == 0 and @command_window.index < 4
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      case @command_window.index
      when 0
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Item.new
      when 1
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 2
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 3
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 4
        if $game_system.save_disabled
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Save.new
      when 5
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_End.new
      end
      return
    end
  end
  def update_status
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window.active = true
      @status_window.active = false
      @status_window.index = -1
      return
    end
    if Input.trigger?(Input::C)
      case @command_window.index
      when 1
        if $game_party.actors[@status_window.index].restriction >= 2
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Skill.new(@status_window.index)
      when 2
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Equip.new(@status_window.index)
      when 3
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Status.new(@status_window.index)
      end
      return
    end
  end
end






Alors comment marche se système de pourcentage ?Hé bien, pour modifier le pourcentage, il suffit de modifier la variable n°1 du jeu !Par exemple, pour ajouter 1%, vous devez faire +1 à la variable 001 !

Il est maintenant possible de masquer ce qui sera marquer dans les commentaire !
Au début du script "Window_Steps", il y a "@afficher = true" !
Pour masquer il vous suffit de mettre "false" a la place de "true" !




SCREEN   
Voici une image du rendu:
Spoiler


   
 
Je ne demande pas spécialement de nom dans les crédit !Mais si vous tenez a le mettre, ce systèmeest fait par "Bubblebug" !

Posté par Tinei le 4 Mar - 17:25 (2011)
C'est intéressant de le mettre dans le menu, mais ce script existe déjà pas dans le menu et en mieux.

Zooria a écrit:

Ceci est mon premier script !
Je vous présente mon script pour faire une système qui permet au joueur de voir a quel pourcentage du jeu il est rendu !

[...]

Je ne demande pas spécialement de nom dans les crédit !Mais si vous tenez a le mettre, ce systèmeest fait par "Bubblebug" !


???

C'est toi qui l'a fait oui ou non ?

Posté par Zooria le 4 Mar - 21:13 (2011)
Ce script existe en mieu, cela est sur !
Mais j'ai poster ce script car c'est mon premier script complet, donc c'est bien moi qui l'ai fait !
Je voullai juste que l'on me dise ce que vous en pensser !
Comme ça je pourrai savoir ce qui est bien ou pas Clin d'œil foireux
Donc critiqué Imbécile heureux

Posté par Zerty le 5 Mar - 10:25 (2011)
Moi , je trouve ça plutôt ...  bien pour un débutant en script(moi je sais rien en script alors je peux parler ! Petit saligaud mal élevé

Posté par Nuri Yuri le 5 Mar - 10:32 (2011)
C'est pas mal ... (fin je ne travail jamais avec window :p)
Ce qui est un peu dommage c'est que le pourcentage est défini par une variable et qu'il n'est pas réellement tracé (avant c'était 50%, il me met 49% ... mais il a fumer ce maker, je laisse 50 42)
Après on peut pas tout faire :B
Sinon est-ce qu'il s'affiche dans le menu chargement ?
(j'ai pas lu tout les script donc je sais pas trop ... si ce n'est pas le cas met le :B)

Posté par Zooria le 5 Mar - 16:29 (2011)
Citation:
Sinon est-ce qu'il s'affiche dans le menu chargement ? 

Non, mais je le mettrais dans la prochaine version !

Citation:
Ce qui est un peu dommage c'est que le pourcentage est défini par une variable et qu'il n'est pas réellement tracé ... 

Cela permet au créateur de permette de choisir quand est ajouter le pourcentage, mais pour fait un poucentage automatique, cela doit etre dur a faire (mais faisable) !
Je ne pense pas pouvoir faire cela pour le moment !


EDIT:
Et voici a quoi ressemblera la prochaine version :
Spoiler


Spoiler


Modification de l'affichage dans le menu, avec ajout de temp et du nombre de donjon deja fait!
Et ajout du pourcentage dans le chargement de partie !
Et aussi possibilité d'enlever ce qui ne vous plait pas !

Posté par Zerty le 5 Mar - 19:14 (2011)
J'ai hâte que la nouvelle version sorte !
Je te mettrais dans les crédits  !

Posté par Zooria le 8 Mar - 18:03 (2011)
Et bien voila la nouvelle version et l'avant dernière !
La dernière version contiendra un système d'option, et sera un peumeilleur !
Voici le script à nomé comme vous le voulez :




Code:
#============================================================================== # ** Système de pourcentage
#==============================================================================
# Bubblebug# v3.0

# 05/03.2011
#==============================================================================
#                             EXPLICATION
#
# Le pourcentage est définie dans la variable n°1 !
# Donc pour modifier le pourcentage, modifié la variable n°1 !
#
# Le nombre de donjon fini est définie dans la variable n°2 !
# Donc pour modifié le nombre de donjon finie modifié la variable n°2 !
#==============================================================================
class Scene_Menu
  def initialize(menu_index = 0)
    @menu_index = menu_index
  end
  def main
    s1 = $data_system.words.item
    s2 = $data_system.words.skill
    s3 = $data_system.words.equip
    s4 = "Statut"
    s5 = "Sauvegarder"
    s6 = "Quitter le jeu"
    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
    @command_window.index = @menu_index
    if $game_party.actors.size == 0
      @command_window.disable_item(0)
      @command_window.disable_item(1)
      @command_window.disable_item(2)
      @command_window.disable_item(3)
    end
    if $game_system.save_disabled
      @command_window.disable_item(4)
    end
    @statistique_window = Statistique.new
    @statistique_window.x = 0
    @statistique_window.y = 224
    @gold_window = Window_Gold.new
    @gold_window.x = 0
    @gold_window.y = 416
    @status_window = Window_MenuStatus.new
    @status_window.x = 160
    @status_window.y = 0
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @command_window.dispose
    @statistique_window.dispose
    @gold_window.dispose
    @status_window.dispose
  end
  def update
    @command_window.update
    @statistique_window.update
    @gold_window.update
    @status_window.update
    if @command_window.active
      update_command
      return
    end
    if @status_window.active
      update_status
      return
    end
  end
  def update_command
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      return
    end
    if Input.trigger?(Input::C)
      if $game_party.actors.size == 0 and @command_window.index < 4
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      case @command_window.index
      when 0
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Item.new
      when 1
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 2
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 3
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 4
        if $game_system.save_disabled
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Save.new
      when 5
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_End.new
      end
      return
    end
  end
  def update_status
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window.active = true
      @status_window.active = false
      @status_window.index = -1
      return
    end
    if Input.trigger?(Input::C)
      case @command_window.index
      when 1
        if $game_party.actors[@status_window.index].restriction >= 2
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Skill.new(@status_window.index)
      when 2
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Equip.new(@status_window.index)
      when 3
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Status.new(@status_window.index)
      end
      return
    end
  end
end
class Statistique < Window_Base
  def initialize
    super(0, 0, 160, 192)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(0, 0, 200, 32, "Pourcentage:")
    self.contents.draw_text(100, 20, 50, 32, "%")
    self.contents.font.color = normal_color
    self.contents.draw_text(50, 20, 50, 32, $game_variables[1].to_s, 2)
    self.contents.font.color = system_color
    self.contents.draw_text(0, 50, 200, 32, "Temp de jeu:")
    @total_sec = Graphics.frame_count / Graphics.frame_rate
    hour = @total_sec / 60 / 60
    min = @total_sec / 60 % 60
    sec = @total_sec % 60
    text = sprintf("%02d:%02d:%02d", hour, min, sec)
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 70, 120, 32, text, 2)
    self.contents.font.color = system_color
    self.contents.draw_text(0, 100, 150, 32, "Donjon:")
    self.contents.font.color = normal_color
    self.contents.draw_text(80, 120, 100, 32, $game_variables[2].to_s + "/15")
  end
  def update
    super
    if Graphics.frame_count / Graphics.frame_rate != @total_sec
      refresh
    end
  end
end
class Scene_Load < Scene_File
  def initialize
    $game_temp = Game_Temp.new
    $game_temp.last_file_index = 0
    latest_time = Time.at(0)
    for i in 0..3
      filename = make_filename(i)
      if FileTest.exist?(filename)
        file = File.open(filename, "r")
        if file.mtime > latest_time
          latest_time = file.mtime
          $game_temp.last_file_index = i
        end
        file.close
      end
    end
    super("Charger quelle partie ?")
  end
  def on_decision(filename)
    unless FileTest.exist?(filename)
      $game_system.se_play($data_system.buzzer_se)
      return
    end
    $game_system.se_play($data_system.load_se)
    file = File.open(filename, "rb")
    read_save_data(file)
    file.close
    $game_system.bgm_play($game_system.playing_bgm)
    $game_system.bgs_play($game_system.playing_bgs)
    $game_map.update
    $scene = Scene_Map.new
  end
  def on_cancel
    $game_system.se_play($data_system.cancel_se)
    $scene = Scene_Title.new
  end
  def read_save_data(file)
    characters = Marshal.load(file)
    Graphics.frame_count = Marshal.load(file)
    $game_system        = Marshal.load(file)
    $game_switches      = Marshal.load(file)
    $game_variables     = Marshal.load(file)
    $game_self_switches = Marshal.load(file)
    $game_screen        = Marshal.load(file)
    $game_actors        = Marshal.load(file)
    $game_party         = Marshal.load(file)
    $game_troop         = Marshal.load(file)
    $game_map           = Marshal.load(file)
    $game_player        = Marshal.load(file)
    if $game_system.magic_number != $data_system.magic_number
      $game_map.setup($game_map.map_id)
      $game_player.center($game_player.x, $game_player.y)
    end
    $game_party.refresh
  end
end
class Window_SaveFile < Window_Base
  attr_reader   :filename
  attr_reader   :selected
  def initialize(file_index, filename)
    super(0, 64 + file_index % 4 * 104, 640, 104)
    self.contents = Bitmap.new(width - 32, height - 32)
    @file_index = file_index
    @filename = "[url=mailto:Save#{@file_index]Save#{@file_index[/url] + 1}.rxdata"
    @time_stamp = Time.at(0)
    @file_exist = FileTest.exist?(@filename)
    if @file_exist
      file = File.open(@filename, "r")
      @time_stamp = file.mtime
      @characters = Marshal.load(file)
      @frame_count = Marshal.load(file)
      @game_system = Marshal.load(file)
      @game_switches = Marshal.load(file)
      @game_variables = Marshal.load(file)
      @total_sec = @frame_count / Graphics.frame_rate
      file.close
    end
    refresh
    @selected = false
  end
  def refresh
    self.contents.clear
    self.contents.font.color = normal_color
    name = "Fichier [url=mailto:#{@file_index]#{@file_index[/url] + 1}"
    self.contents.draw_text(4, 0, 600, 32, name)
    @name_width = contents.text_size(name).width
    if @file_exist
      for i in [url=mailto:0...@characters.size]0...@characters.size[/url]
        bitmap = RPG::Cache.character(@characters[i][0], @characters[i][1])
        cw = bitmap.rect.width / 4
        ch = bitmap.rect.height / 4
        src_rect = Rect.new(0, 0, cw, ch)
        x = 300 - @characters.size * 32 + i * 64 - cw / 2
        self.contents.blt(x, 68 - ch, bitmap, src_rect)
      end
      hour = @total_sec / 60 / 60
      min = @total_sec / 60 % 60
      sec = @total_sec % 60
      time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
      self.contents.font.color = normal_color
      self.contents.draw_text(4, 18, 600, 32, time_string, 2)
      self.contents.font.color = system_color
      self.contents.draw_text(-5, -5, 600, 32, "%", 2)
      self.contents.font.color = normal_color
      self.contents.draw_text(-25, -5, 600, 32, @game_variables[1].to_s, 2)
      time_string = @time_stamp.strftime("%Y/%m/%d %H:%M")
      self.contents.draw_text(4, 45, 600, 32, time_string, 2)
    end
  end
  def selected=(selected)
    @selected = selected
    update_cursor_rect
  end
  def update_cursor_rect
    if @selected
      self.cursor_rect.set(0, 0, @name_width + 8, 32)
    else
      self.cursor_rect.empty
    end
  end
end







J'ai réuni les diffèrente partie en un seul script pour que cela soit plus pratique !Donc pour les expliquation, c'est dans le script!mais les voila quand même !
Spoiler
Le pourcentage est définie dans la variable n°1 !Donc pour modifier le pourcentage, modifié la variable n°1 !Le nombre de donjon fini est définie dans la variable n°2 !


Donc pour modifié le nombre de donjon finie modifié la variable n°2 !


Pas besoin de screen, il sont au dessus, le seul truc diffèrent par rapport au screen, c'est le chargement !
Le pourcentage se trouve au dessus du temp !

Quoi dire de plus ...
La prochaine version n'a pas de date de sortie !

Et pour les crédit, je redit que ce n'est pas obligatoir de mettre mon pseudo !
Mais si vous tenez a mettre les crédit complet, bah mettez 'bubblebug' Imbécile heureux

Posté par Tinei le 12 Mar - 13:48 (2011)
Ah ! Là c'est cool ! Merci !
D'ailleurs, je fait comment, moi, pour mon menu ?
Tu pourrais pas l'adapter pour ce menu:
http://rpgcreative.net/rpgmaker/scripts-54-menu-7.html
Et pour ce menu de sauvegarde:
http://www.sendspace.com/file/ytqazr
Merci Imbécile heureux

Posté par Zooria le 12 Mar - 19:29 (2011)
Je vai essayer de le faire   Imbécile heureux
J'editerai pour chaque chose faite pour t'es menu:


EDIT1: Pourcentage dans le menu de sauvergarde est ajouter !


EDIT2: je n'ai pas reussi a mettre cela dans le menu, désolé !
Il y a que le menu de sauvergarde auquel j'ai ajouter le pourcentage !


Posté par Tinei le 14 Mar - 16:19 (2011)
Tu l'a mis où ?
Merci, ça ira.

Posté par Zooria le 14 Mar - 18:04 (2011)
C'est un truc tout "con" !
Ajoute:
 
Code:
 self.contents.draw_text(x, y, 200, 32, $game_variables[1].to_s)
#Remplace "X" et "Y" par un emplacement, fait plusieur essait pour bien la placer comme tu le désire :D)



dans le script, au niveau des texte de la sauvergarde (script "Book - Scene File")


Et le pourcentage serai définit dans la variables n°1 Imbécile heureux


Peut pas te donner le code complet, car les balise bug :s

Posté par Tinei le 16 Mar - 22:38 (2011)
Zooria a écrit:
C'est un truc tout "con" !
Ajoute:
 
Code:
 self.contents.draw_text(x, y, 200, 32, $game_variables[1].to_s)
#Remplace "X" et "Y" par un emplacement, fait plusieur essait pour bien la placer comme tu le désire :D)



dans le script, au niveau des texte de la sauvergarde (script "Book - Scene File")


Et le pourcentage serai définit dans la variables n°1 Imbécile heureux


Peut pas te donner le code complet, car les balise bug :s

Merci Clin d'œil foireux

Posté par Elric le 25 Mar - 23:10 (2011)
C'est une bombe ce Projet ! Je suis sans voix ! C'est du pur Génie ! Le pire, c'est qu'il me dit qu'il débute XD ! Moi aussi je débute et je sais même pas me faire une Interface qui ne bug pas.