Partagez
Aller en bas
avatar
Komor
Membre

Nombre de messages : 26
Age : 22
Localisation : Dans ma grotte
Distinction : aucune
Date d'inscription : 08/10/2012

RPG Maker VX Ace Système de réputation

le Mar 9 Oct 2012 - 22:46
Bonjours amis Makers,


Tout d'abord, On créé une Variable Réputation. (Sans blagues ! ! !, il faut créer une variable réputation !)

Ensuite on peut faire par exemple un panneau (ou une affiche, une PNJ qui nous le dit, une feuille sur la table de la maison, ...) qui Vous dira à quel point vous en êtes.

Exemple :(Pour l'affiche) =

Exemple :(Pour PNJ) =
Puis :
(désolé du double lien du PNJ, j'avais la flemme de trafiquer mes captures ^^)

Maintenant pour modifier votre réputation vous faites comme bon vous semble, avec des quêtes par exemple, vous rajoutez juste Modifier une variable, Réputation, puis vous ajouter ce qu'il vous plaît.

Après libre à vous de les modifier comme bon vous semble, moi par exemple J'ai fait une réputation qui va Sous le seuil de zéro, avec les gens qui t'insultent ou qui te fuient à la fin.

Merci de m'informer si l'un d'entre vous n'a pas bien saisie une notion, je me ferais une joie de réécrire une partie en développent l'explication


Voila l'essentiel, ceci est mon tout premier Tuto, donc je prendrais bien des remarques pour m'améliorer sur les suivants.
Mais comme je viens de le dire, c'est mon premier Tuto donc ne vous lâchez pas trop sur les menaces de morts  lol!


Dernière édition par Tino212 le Ven 16 Nov 2012 - 22:45, édité 1 fois
avatar
ribozyme
Membre

Nombre de messages : 5
Distinction : aucune
Date d'inscription : 09/10/2012

RPG Maker VX Ace Re: Système de réputation

le Ven 12 Oct 2012 - 14:40
Très bonne idée !

Mais as-tu une idée pour pouvoir afficher une modification en temps réel ? (comme red dead redemption)
avatar
LightNox
Membre

Nombre de messages : 1759
Age : 28
Localisation : Chez Moi ^^
Date d'inscription : 10/04/2008

RPG Maker VX Ace Re: Système de réputation

le Ven 12 Oct 2012 - 14:52
Ou sinon je viens de sortir un script de réputation ^^
ici : http://www.rpgmakervx-fr.com/t13076-ln-reputationex

Mais pour ceux qui font du full event custom c'est un bon tuto bravo Wink
avatar
Komor
Membre

Nombre de messages : 26
Age : 22
Localisation : Dans ma grotte
Distinction : aucune
Date d'inscription : 08/10/2012

RPG Maker VX Ace Re: Système de réputation

le Ven 12 Oct 2012 - 16:21
Merci à vous,

Ribozyme, je n'est pas bien compris ta question, tu voudrais que l'évolution soit notée à l'écran dans une fenêtre?
Si c'est le cas, je dois t'avouer que je n'ai pas cherché, quelqu'un pourrait le faire en script, mais pas moi (je n'y connais rien en script ^^).
J'essai dès maintenant, et je te dis si je trouve une solution.
avatar
stribiliounou
Membre

Nombre de messages : 212
Age : 21
Localisation : Trou perdu
Distinction : aucune
Date d'inscription : 14/07/2012

RPG Maker VX Ace Re: Système de réputation

le Ven 12 Oct 2012 - 17:13
J'ai essayé avec mes trèèès maigres connaissances en scripting de faire un p'tit script pour afficher la valeur de la variable.
Le voilà :
Code:
module WindowVocab
  REPUTATION="Réputation"
end
#-------------------------------------------------------------------------------
class Window_Reputation < Window_Base
#------------------------------------------------------------------------------- 
  def initialize
    super(75, 110, 160, 75)
    refresh
  end
#------------------------------------------------------------------------------- 
  def refresh
    def value
      draw_text(50, 20, 30, 50, $game_variables [1])
  end
    def currency_unit
      WindowVocab::REPUTATION
    end
    self.contents.clear
        bitmap = Cache.system("Iconset")
    icon_index = 375
    rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
    contents.blt(0, 0, bitmap, rect)
    draw_currency_value(value, currency_unit, 4, 0, contents.width - 8)
  end
end

class Scene_Menu < Scene_MenuBase
  alias start_a start
  def start
        start_a
        create_reputation_window
  end

  def create_reputation_window
        @reputation_window = Window_Reputation.new
        @reputation_window.x = 0
        @reputation_window.y = (Graphics.height - @reputation_window.height) - 50
  end
#-------------------------------------------------------------------------------
end

C'est pas génial mais j'suis content d'être parvenu à faire ça !
Ce script doit être placé sous Materials, et si tu veux modifier l'icône tu n'as qu'à changer ceci :
icon_index = 375
en remplaçant 375 par l'emplacement de l'icône que tu veux mettre dans l'iconset.
Tu peux aussi changer la taille de la fenêtre içi :
super(75, 110, 160, 75)
(160 étant la largeur, le dernier 75, la hauteur, le premier 75 la position X et 110 la position Y !

En espérant avoir aidé ! Smile

EDIT : J'ai oublié de présicer que mon code marche dans la mesure ou ta variable réputation est ta variable 1.
Si ce n'est pas le cas, modifie ceci :
draw_text(50, 20, 30, 50, $game_variables [1])
et plus précisément le chiffre entre parenthèses par l'ID de ta variable !
avatar
Komor
Membre

Nombre de messages : 26
Age : 22
Localisation : Dans ma grotte
Distinction : aucune
Date d'inscription : 08/10/2012

RPG Maker VX Ace Re: Système de réputation

le Ven 12 Oct 2012 - 18:05
Merci beaucoup stribiliounou,

J'ai fait des recherches sur d'autres scripts, et je suis tombé sur quelque chose qui m'a pas mal aidé, je l'ai trafiqué un peu et voila le résultat :

Code:
VARIABLE  =  1  #  change:  ici  on  affiche  la  variable  1
INTERRUPTEUR  =  10  #si  l'interrupteur  10  est  activé,  on  affiche  la  fenetre
class  Window_Variables  <  Window_Base
def  initialize
super(0,  0,  200,  64)  #  tu  peux  changer  la  position  de  la  fenetre,  en  modifiant  ces  valeurs  (x,  y,  longueur,  hauteur)
self.contents  =  Bitmap.new(width-32,  height-32)
self.opacity  =  0
refresh
end
def  refresh
self.contents.clear
self.contents.draw_text(4,  0,  150,  32,  $game_variables[VARIABLE].to_s+" Points de réputation")  if  $game_switches[ INTERRUPTEUR]
end
  def update
refresh  if  $game_variables[VARIABLE]  !=  self
end
end #Pensez à mettre Lifa, Berka et Tino 212 dans vos crédits

L'inconvénient c'est qu'il faut actionner un interrupteur (ici le 10).

Pour que le tout fonctionne, il faut remplacer le script Scène_map(créé par défaut) par ça:
Code:
#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
#  This class performs the map screen processing.
#==============================================================================

class Scene_Map < Scene_Base
  #--------------------------------------------------------------------------
  # * Start processing
  #--------------------------------------------------------------------------
  def start
    super
    $game_map.refresh
    @spriteset = Spriteset_Map.new
    @message_window = Window_Message.new
    @variables = Window_Variables.new
    end
  #--------------------------------------------------------------------------
  # * Execute Transition
  #--------------------------------------------------------------------------
  def perform_transition
    if Graphics.brightness == 0      # After battle or loading, etc.
      fadein(30)
    else                              # Restoration from menu, etc.
      Graphics.transition(15)
    end
  end
  #--------------------------------------------------------------------------
  # * Termination Processing
  #--------------------------------------------------------------------------
  def terminate
    super
    if $scene.is_a?(Scene_Battle)    # If switching to battle screen
      @spriteset.dispose_characters  # Hide characters for background creation
    end
    snapshot_for_background
    @spriteset.dispose
    @message_window.dispose
    @variables.dispose
    if $scene.is_a?(Scene_Battle)    # If switching to battle screen
      perform_battle_transition      # Execute pre-battle transition
    end
  end
  #--------------------------------------------------------------------------
  # * Basic Update Processing
  #--------------------------------------------------------------------------
  def update_basic
    Graphics.update                  # Update game screen
    Input.update                      # Update input information
    $game_map.update                  # Update map
    @spriteset.update                # Update sprite set
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    $game_map.interpreter.update      # Update interpreter
    $game_map.update                  # Update map
    $game_player.update              # Update player
    $game_system.update              # Update timer
    @spriteset.update                # Update sprite set
    @message_window.update            # Update message window
    @variables.update
    unless $game_message.visible      # Unless displaying a message
      update_transfer_player
      update_encounter
      update_call_menu
      update_call_debug
      update_scene_change
    end
  end
  #--------------------------------------------------------------------------
  # * Fade In Screen
  #    duration : time
  #    If you use Graphics.fadeout directly on the map screen, a number of
  #    problems can occur, such as weather effects and parallax  scrolling
  #    being stopped. So instead, perform a dynamic fade-in.
  #--------------------------------------------------------------------------
  def fadein(duration)
    Graphics.transition(0)
    for i in 0..duration-1
      Graphics.brightness = 255 * i / duration
      update_basic
    end
    Graphics.brightness = 255
  end
  #--------------------------------------------------------------------------
  # * Fade Out Screen
  #    duration : time
  #    As with the fadein above, Graphics.fadein is not used directly.
  #--------------------------------------------------------------------------
  def fadeout(duration)
    Graphics.transition(0)
    for i in 0..duration-1
      Graphics.brightness = 255 - 255 * i / duration
      update_basic
    end
    Graphics.brightness = 0
  end
  #--------------------------------------------------------------------------
  # * Player Transfer  Processing
  #--------------------------------------------------------------------------
  def update_transfer_player
    return unless $game_player.transfer?
    fade = (Graphics.brightness > 0)
    fadeout(30) if fade
    @spriteset.dispose              # Dispose of sprite set
    $game_player.perform_transfer  # Execute player transfer
    $game_map.autoplay              # Automatically switch BGM and BGS
    $game_map.update
    Graphics.wait(15)
    @spriteset = Spriteset_Map.new  # Recreate sprite set
    fadein(30) if fade
    Input.update
  end
  #--------------------------------------------------------------------------
  # * Encounter Processing
  #--------------------------------------------------------------------------
  def update_encounter
    return if $game_player.encounter_count > 0        # Check steps
    return if $game_map.interpreter.running?          # Event being executed?
    return if $game_system.encounter_disabled        # Encounters forbidden?
    troop_id = $game_player.make_encounter_troop_id  # Determine troop
    return if $data_troops[troop_id] == nil          # Troop is invalid?
    $game_troop.setup(troop_id)
    $game_troop.can_escape = true
    $game_temp.battle_proc = nil
    $game_temp.next_scene = "battle"
    preemptive_or_surprise
  end
  #--------------------------------------------------------------------------
  # * Determine Preemptive Strike and Surprise Attack Chance
  #--------------------------------------------------------------------------
  def preemptive_or_surprise
    actors_agi = $game_party.average_agi
    enemies_agi = $game_troop.average_agi
    if actors_agi >= enemies_agi
      percent_preemptive = 5
      percent_surprise = 3
    else
      percent_preemptive = 3
      percent_surprise = 5
    end
    if rand(100) < percent_preemptive
      $game_troop.preemptive = true
    elsif rand(100) < percent_surprise
      $game_troop.surprise = true
    end
  end
  #--------------------------------------------------------------------------
  # * Determine if Menu is Called due to Cancel Button
  #--------------------------------------------------------------------------
  def update_call_menu
    if Input.trigger?(Input::B)
      return if $game_map.interpreter.running?        # Event being executed?
      return if $game_system.menu_disabled            # Menu forbidden?
      $game_temp.menu_beep = true                    # Set SE play flag
      $game_temp.next_scene = "menu"
    end
  end
  #--------------------------------------------------------------------------
  # * Determine Bug Call Due to F9 key
  #--------------------------------------------------------------------------
  def update_call_debug
    if $TEST and Input.press?(Input::F9)    # F9 key during test play
      $game_temp.next_scene = "debug"
    end
  end
  #--------------------------------------------------------------------------
  # * Execute Screen Switch
  #--------------------------------------------------------------------------
  def update_scene_change
    return if $game_player.moving?    # Is player moving?
    case $game_temp.next_scene
    when "battle"
      call_battle
    when "shop"
      call_shop
    when "name"
      call_name
    when "menu"
      call_menu
    when "save"
      call_save
    when "debug"
      call_debug
    when "gameover"
      call_gameover
    when "title"
      call_title
    else
      $game_temp.next_scene = nil
    end
  end
  #--------------------------------------------------------------------------
  # * Switch to Battle Screen
  #--------------------------------------------------------------------------
  def call_battle
    @spriteset.update
    Graphics.update
    $game_player.make_encounter_count
    $game_player.straighten
    $game_temp.map_bgm = RPG::BGM.last
    $game_temp.map_bgs = RPG::BGS.last
    RPG::BGM.stop
    RPG::BGS.stop
    Sound.play_battle_start
    $game_system.battle_bgm.play
    $game_temp.next_scene = nil
    $scene = Scene_Battle.new
  end
  #--------------------------------------------------------------------------
  # * Switch to Shop Screen
  #--------------------------------------------------------------------------
  def call_shop
    $game_temp.next_scene = nil
    $scene = Scene_Shop.new
  end
  #--------------------------------------------------------------------------
  # * Switch to Name Input Screen
  #--------------------------------------------------------------------------
  def call_name
    $game_temp.next_scene = nil
    $scene = Scene_Name.new
  end
  #--------------------------------------------------------------------------
  # * Switch to Menu Screen
  #--------------------------------------------------------------------------
  def call_menu
    if $game_temp.menu_beep
      Sound.play_decision
      $game_temp.menu_beep = false
    end
    $game_temp.next_scene = nil
    $scene = Scene_Menu.new
  end
  #--------------------------------------------------------------------------
  # * Switch to Save Screen
  #--------------------------------------------------------------------------
  def call_save
    $game_temp.next_scene = nil
    $scene = Scene_File.new(true, false, true)
  end
  #--------------------------------------------------------------------------
  # * Switch to Debug Screen
  #--------------------------------------------------------------------------
  def call_debug
    Sound.play_decision
    $game_temp.next_scene = nil
    $scene = Scene_Debug.new
  end
  #--------------------------------------------------------------------------
  # * Switch to Game Over Screen
  #--------------------------------------------------------------------------
  def call_gameover
    $game_temp.next_scene = nil
    $scene = Scene_Gameover.new
  end
  #--------------------------------------------------------------------------
  # * Switch to Title Screen
  #--------------------------------------------------------------------------
  def call_title
    $game_temp.next_scene = nil
    $scene = Scene_Title.new
    fadeout(60)
  end
  #--------------------------------------------------------------------------
  # * Execute Pre-battle Transition
  #--------------------------------------------------------------------------
  def perform_battle_transition
    Graphics.transition(80, "Graphics/System/BattleStart", 80)
    Graphics.freeze
  end
end
avatar
LightNox
Membre

Nombre de messages : 1759
Age : 28
Localisation : Chez Moi ^^
Date d'inscription : 10/04/2008

RPG Maker VX Ace Re: Système de réputation

le Ven 12 Oct 2012 - 18:43
Je viens d'en faire un de systeme de reputation j'ai mis le lien plus haut si sa vous interesse ^^
avatar
Komor
Membre

Nombre de messages : 26
Age : 22
Localisation : Dans ma grotte
Distinction : aucune
Date d'inscription : 08/10/2012

RPG Maker VX Ace Re: Système de réputation

le Ven 12 Oct 2012 - 18:47
Oui, Merci LightNox Very Happy
J'avais pas fais attention
avatar
stribiliounou
Membre

Nombre de messages : 212
Age : 21
Localisation : Trou perdu
Distinction : aucune
Date d'inscription : 14/07/2012

RPG Maker VX Ace Re: Système de réputation

le Ven 12 Oct 2012 - 19:17
C'est vrai mais je voulais quand même tenter ^^
Contenu sponsorisé

RPG Maker VX Ace Re: Système de réputation

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum