Welcome Guest: S’enregistrer | Connexion
 
Portail  | FAQ | Rechercher | Membres | Groupes
 
[Script] Switch Party ( genre PHS de FF7 )
 
Poster un nouveau sujet   Répondre au sujet
RPG Community Index du Forum -> RPG Maker -> Scripts RPG Maker XP Aller à la page: 1, 2, 3  >
Sujet précédent :: Sujet suivant  
Auteur Message
TeNRô
Apprenti
Apprenti

Hors ligne

Inscrit le: 07 Jan 2006
Messages: 74
Points RPG Community: 1
Moyenne de points: 0,01

MessagePosté le: 08/01/2006 22:04:49
MessageSujet du message: [Script] Switch Party ( genre PHS de FF7 )
Répondre en citant

Je tiens a précisez que ça fai longtemps que j'ai pas utiliser ce script mais je me souvient qu'il marchait très bien ( pour moi en tout cas ) donc faite quand mm attention au erreur d'imcompatibilité entre certain script ( surtout que j'ai bidouiller quelque truc a certain endroit )

Alors voici un script qui fera des heureux Very Happy l'installation sera assez longue et l'utilisation légèrement compliqué mais je vais essayer au mieu d'éxpliquer la démarche à suivre 8)
Surtout lisez attentivement TOUT le post !!!! ( enfin pas besoin non plus de lire lettre par lettre les 1000 et quelques lignes de code lol ) J'indiquerai tout à la fin du Tuto comment utilisez le script !

PARTIE I-Installation des scripts de base.



vous aurez 4 script de base à installer dans votre éditeur de scripts:

Au-dessus de main crée un script nommé Scene_Switch :

Code:
#==============================================================================
# Scene_Switch class definition
#------------------------------------------------------------------------------
# This class represents the party switching sub-screen. It allows the player
# to switch in and out characters from the party. Characters that are not in
# the party but that are available are said 'in reserve'.
#
# Characters available are those that exist in Game_Actors::data and whose
# property unavailable is set to false. In the default scrîpt, an actor is
# loaded in Game_Actors::data when s/he is added for the very first time in the
# party and is never deleted, unless it's done explicitly with scrîpts.
#
# This scrîpt requires you to create 2 additional attributes for the Game_Actor
# class: mandatory and unavailable. Both are boolean values.
#
# Mandatory is a boolean variable that, when set to true, means that the actor
# can't be switched out of the party. This is useful for main characters, that
# are in many RPGs required most of the time, if not always. The switch screen
# will display the word "Mandatory" in red above an actor that can't be put out
# of the party.
#
# Unavailable is another boolean variable that, when set to true, means that
# although the actor is defined in Game_Actors::data, won't appear in the
# reserve window. This is useful when a character leaves the party in the
# story, but you don't want to reset his stats and name when she comes back.
#
# Usage of this scrîpt requires the 3 other files: Window_SwitchParty,
# Window_SwitchReserve and Window_SwitchStatus, as well as a few modifications
# of the default scrîpts:
#
# 1 - In Game_Actor, add in the class definition (under "class Game_Actor
# [...]"):
# attr_reader :actor_id
# attr_accessor :mandatory
# attr_accessor :unavailable
#
# 2 - Again, in Game_Actor, add in the setup method (under "def setup"):
# mandatory = false
# unavailable = false
#
# 3 - In Game_Actors (with an "s"!) add in the class definition:
# attr_accessor :data
#
# 4 - In Game_Party, change:
# attr_reader :actors
# for
# attr_accessor :actors
#
# By exseiken, October 04, 2004
#==============================================================================

class Scene_Switch


#----------------------------------------------------------------------------
# Initialize the sub-screen. If it was called from the menu, it will return
# to the main menu when closed, otherwise, it will return to the map.
#
# Parameters:
# from_menu: Determines whether or not the scene was called from
# the menu or not [true|false]
# min_size: The minimum amount of characters that the new party
# must have [1; 4]
# max_size: The maximum amount of characters that the new party
# must have [min_size; 4]
#----------------------------------------------------------------------------
def initialize(from_menu, min_size = 1, max_size = 4)
# store the data telling whether or not the scene was called from the menu
@from_menu = from_menu

# store the array bounds for the max_size and min_size
@min_size = [[min_size, 1].max, 4].min
@max_size = [[max_size, @min_size].max, 4].min

end


#----------------------------------------------------------------------------
# The main routine, controlling the life of the object.
#----------------------------------------------------------------------------
def main
# create the window containing the current party members
@party_window = Window_SwitchParty.new

# create the window containing all available party members
@reserve_window = Window_SwitchReserve.new(10)

# create the window showing information about the selected character, be it
# from the party window or from the reserve window
@status_window = Window_SwitchStatus.new

# if the party is empty, the active window is reserve_window, otherwise
# it's the party window
if $game_party.actors.size == 0
@party_window.active = false

else
@reserve_window.active = false

end

# set this status window as the two other windows' help window
@party_window.help_window = @status_window
@reserve_window.help_window = @status_window

# display the transition
Graphics.transition

# enter the main loop
loop do
# flip the screen
Graphics.update

# get the buttons pressed
Input.update

# update the sub-screen
update

# if the scene has changed, return
if $scene != self
break

end

end

# stop drawing graphics
Graphics.freeze

# destroy the sub-windows
@status_window.dispose
@reserve_window.dispose
@party_window.dispose

end


#----------------------------------------------------------------------------
# Method called on every frame: update the contents of the scene (the 3,
# windows) and read on the keyboard.
#----------------------------------------------------------------------------
def update
# update all sub-windows
@party_window.update
@reserve_window.update
@status_window.update

# if the active screen is party_window, update it, else update the reserve
# window
if @party_window.active
update_party
return

else
update_reserve
return

end

end


#----------------------------------------------------------------------------
# Called when the focus is on the party window. Read on the keyboard and
# update the state of the scene according to the buttons pressed. If the
# played pressed B while this mode is on, the new party will be set and
# the scene will close.
#----------------------------------------------------------------------------
def update_party
# if the B (back) button was pressed, return to the preceeding screen
if Input.trigger?(Input::B)
# remove all holes in the party
new_party = @party_window.new_party.compact

# get the number of party members
n = new_party.size

# if the party doesn't have an acceptable amount of party members, don't
# allow quitting the sub-screen
if n < @min_size or n > @max_size
# play the buzzer and exit
$game_system.se_play($data_system.buzzer_se)
return

end

# play the confirm sound
$game_system.se_play($data_system.decision_se)

# set the new party
$game_party.actors = new_party

# return to the calling scene
if @from_menu
$scene = Scene_Menu.new(5)

else
$scene = Scene_Map.new

end

# refresh the player's sprite
$game_player.refresh

# skip (optimizing)
return

# if the C (confirm) button was pressed, switch the control to the reserve
# window
elsif Input.trigger?(Input::C)
# if the selected character is not nil, and is unavailable, play the buzzer
if(@party_window.actor != nil and @party_window.actor.mandatory)
# play the buzzer
$game_system.se_play($data_system.buzzer_se)

else
# play the decision sound
$game_system.se_play($data_system.decision_se)

# unactivate the party window
@party_window.active = false

# activate the reserve window
@reserve_window.active = true

end

end

end


#----------------------------------------------------------------------------
# Called when the focus is on the reserve window. Read on the keyboard and
# update the state of the scene according to the buttons pressed.
#----------------------------------------------------------------------------
def update_reserve
# if the B (back) button was pressed, give back the focus to the party
# window
if Input.trigger?(Input::B)
# play the cancel sound
$game_system.se_play($data_system.decision_se)

# unactivate the reserve window
@reserve_window.active = false

# activate the party window
@party_window.active = true

# skip
return

# if the C (confirm) button was pressed, switch the party member in reserve
# with the one selected in the party
elsif Input.trigger?(Input::C)
# play the confirm sound
$game_system.se_play($data_system.decision_se)

# swap the 2 party members
@party_window.change_selection(@reserve_window.swap_characters(@party_window.actor))

# unactivate the reserve window
@reserve_window.active = false

# activate the party window
@party_window.active = true

end

end

end


Une fois ceci fait vous devez créer les 3 scripts suivant entre Window_Dataset et Arrow_base, c'est très important, créez-les dans cette ordre :

Window_Dataset
Window_SwitchParty
Window_SwitchReserve
Window_SwitchStatus

Arrow_Base

Maintenant les 3 codes :

Window_SwitchParty

Code:
#==============================================================================
# Window_SwitchParty class definition
#------------------------------------------------------------------------------
# A window that displays all 4 character slots in the party, and offers a
# cursor to modify it.
#
# By exseiken, October 04, 2004
#==============================================================================
class Window_SwitchParty < Window_Selectable

#----------------------------------------------------------------------------
# Create public access variables
#----------------------------------------------------------------------------
attr_reader :new_party # The party shown in the window [R-O]


#----------------------------------------------------------------------------
# Window's constructor. Create the window's contents, makes a copy of the
# current party, then stocks it into member variable new_party, for later
# use.
#----------------------------------------------------------------------------
def initialize()
# create the window and its contents
super(0, 0, 256, 480)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize

# copy the party
@new_party = $game_party.actors.clone

# always 4 party members
@item_max = 4

# select the first character
if @new_party.size > 0
@index = @new_party.index(@new_party.first )

else
@index = 0

end

# draw the window's contents
refresh

# update the cursor rectangle
update_cursor_rect

end


#----------------------------------------------------------------------------
# Return the actor currently selected.
#----------------------------------------------------------------------------
def actor
# return the selected actor, or nil if none
@new_party[@index]

end


#----------------------------------------------------------------------------
# Update the contents of the window: clear the contents bitmap, then rebuild
# it.
#----------------------------------------------------------------------------
def refresh
# clear the contents of the bitmap
self.contents.clear

# draw each non-null party member
for i in 0..@new_party.size - 1
# get the actor
actor = @new_party[i]

# if the actor is valid, draw it on the screen
if actor != nil
# calculate the y coordinate
y = 116 * i

# draw the actor's graphic
draw_actor_graphic(actor, 24, y + 80)

# draw the actor's name
draw_actor_name(actor, 64, y + 32)

# if the actor is not available, write in red "can't select"
if actor.mandatory
self.contents.font.color = Color.new(255, 0, 0, 255)
self.contents.draw_text(0, y, 224, 32, "Inamovible", 1)

end

end

end

end


#----------------------------------------------------------------------------
# Update the position rectangle of the cursor.
#----------------------------------------------------------------------------
def update_cursor_rect
# reset the cursor rectangle
self.cursor_rect.set(0, 116 * @index, width - 32, 96)

end


#----------------------------------------------------------------------------
# Change the actor selected for another, then redraw the entire window.
#
# Parameters:
# actors: The actor that will replace the selected one
#----------------------------------------------------------------------------
def change_selection(actor)
# change the actor (can be nil to remove it)
@new_party[@index] = actor

# redraw the window
refresh

end


#----------------------------------------------------------------------------
# Update the help window. (Here, the help window is really the actor status
# window.)
#----------------------------------------------------------------------------
def update_help
# draw the selected actor's name, level, status conditions and stats
@help_window.draw_actor_status(@new_party[@index])

end

end


Window_SwitchReserve

Code:
#==============================================================================
# Window_SwitchReserve class definition
#------------------------------------------------------------------------------
# A window that displays all characters available to pick in the party. Offers
# a cursor to select them
#
# By exseiken, October 04, 2004
#==============================================================================

class Window_SwitchReserve < Window_Selectable

#----------------------------------------------------------------------------
# Window constructor. Create the contents bitmap and fill it with all
# characters that are not into the party, but that are loaded in the data
# member of the Game_Actors global object.
#
# Parameters:
# max_size: The maximum of characters that can fit into that
# window
#----------------------------------------------------------------------------
def initialize(max_size)
# initialize the window and its contents
super(256, 128, 384, 352)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize

# initialize the list for the first time
@actor_list = $game_actors.data.clone

# remove currently active party members
$game_party.actors.each do |actor|
@actor_list[actor.actor_id] = nil

end

# remove all actors that are unavailable
$game_actors.data.each do |actor|
if actor != nil and actor.unavailable
@actor_list[actor.actor_id] = nil

end

end

# remove all holes in the list
@actor_list.compact!

# set the maximum of characters the list can contain
@item_max = max_size

# 2 columns, 5 rows
@column_max = 2
@row_max = 5

# select the first item
@index = 0

# default: unactive
self.active = false

# draw the window's contents
refresh

# draw the cursor rectangle
update_cursor_rect

end


#----------------------------------------------------------------------------
# Update the contents of the window: clear the contents bitmap, then rebuild
# it.
#----------------------------------------------------------------------------
def refresh
# clear the contents of the bitmap
self.contents.clear

# display all actors
for i in 0..@actor_list.size
# get the concerned actor
actor = @actor_list[i]

# if the actor is non-nil, draw it
if actor != nil
# get the coordinates
x = (i & 0x01) == 1 ? 176 : 0
y = (i >> 0x01) * 64

# draw the actor's sprite
draw_actor_graphic(actor, x + 24, y + 48)

# draw the actor's name
draw_actor_name(actor, x + 64, y + 16)

end

end

end


#----------------------------------------------------------------------------
# Update the position rectangle of the cursor.
#----------------------------------------------------------------------------
def update_cursor_rect
# if the screen is not active, don't display the cursor
if not active
self.cursor_rect.empty

# otherwise, display it
else
self.cursor_rect.set((@index & 0x01) == 1 ? 176 : 0, (@index >> 0x01) * 64, 176, 64)

end

end


#----------------------------------------------------------------------------
# Takes a character, put in into the list at the selected position, and
# returns the character that was presently there. If there was no
# character, returns nil.
#
# Parameters:
# actor_to_switch: The character to put at the selected position
#----------------------------------------------------------------------------
def swap_characters(actor_to_switch)
# store the old actor (needed for swapping)
old_actor = @actor_list[@index]

# put the new actor at the place
@actor_list[@index] = actor_to_switch

# redraw the window
refresh

# return the old actor
return old_actor

end


#----------------------------------------------------------------------------
# Update the help window. (Here, the help window is really the actor status
# window.)
#----------------------------------------------------------------------------
def update_help
# draw the selected actor's name, level, status conditions and stats
@help_window.draw_actor_status(@actor_list[@index])

end

end


Window_SwitchStatus

Code:
#==============================================================================
# Window_SwitchStatus class definition
#------------------------------------------------------------------------------
# A window that displays the status of a character being selected.
#
# By exseiken, October 04, 2004
#==============================================================================

class Window_SwitchStatus < Window_Base


#----------------------------------------------------------------------------
# Construct the window: create the contents bitmap.
#----------------------------------------------------------------------------
def initialize
# create the window and initialize its contents
super(256, 0, 384, 128)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize

end


#----------------------------------------------------------------------------
# Draw the status on an actor on the window's contents.
#
# Parameters:
# actor: The actor to put on the screen
#----------------------------------------------------------------------------
def draw_actor_status(actor)
# clear the contents of the bitmap
self.contents.clear

# if the actor to draw is nil, leave the window empty
if actor == nil
return

end

# draw the actor's graphic
draw_actor_face(actor, x - 200, y + 80)

# draw the actor's name, level
draw_actor_name(actor, 114, 0)
draw_actor_level(actor, 188, 0)
draw_actor_hp_meter_line(actor, x + -145, y + 50, width = 133, height = 8)
draw_actor_hp(actor, 114, 32)
draw_actor_sp_meter_line(actor, x + -145, y + 80, width = 133, height = 8)
draw_actor_sp(actor, 114, 64)

 



end

end


Maintenant que ces 4 scripts ont été rajouté vous devez modifier des scripts déjà existants :

Dans le script Game_Actor ( sans le "s" ) Juste en dessous de : " class Game_Actor < Game_Battler "

Ajoutez les lignes :

Code:

    attr_reader  :actor_id                # ID of the actor (hero) ID [R-O]
  attr_accessor :mandatory                # If the actor can be moved in or out for the switching screen
  attr_accessor :unavailable              # If the actor appears in switch


Toujours dans Game_actor en dessous de : " def setup(actor_id) " ajoutez :
Code:

    @mandatory = false
    @unavailable = false


Dans le script Game_Actors ( avec le "s" ) ajouter en dessous de " class Game_Actors " ceci :

Code:
  attr_accessor :actors                    # the array containing the actors


Dans le script Game_Party juste en dessous de " class Game_Party " remplacez "attr_reader :actors'' par :

Code:
  attr_accessor :data                    # the array containing the actors


Maintenant allez dans Scene_menu et remplacez le script par :

Code:
#==============================================================================
# ■ Scene_Menu
#------------------------------------------------------------------------------
#  メニュー画面の処理を行うクラスです。
#==============================================================================

class Scene_Menu
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     menu_index : コマンドのカーソル初期位置
  #--------------------------------------------------------------------------
  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 = "État"
   s5 = "Réserve"
   s6 = "Sauvegarder"
   s7 = "Quitter"
    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6,s7])
    @command_window.index = @menu_index
    # パーティ人数が 0 人の場合
    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
    # プレイ時間ウィンドウを作成
    @playtime_window = Window_PlayTime.new
    @playtime_window.x = 0
    @playtime_window.y = 254
    # 歩数ウィンドウを作成
    @steps_window = Window_Steps.new
    @steps_window.x = 0
    @steps_window.y = 333
    # ゴールドウィンドウを作成
    @gold_window = Window_Gold.new
    @gold_window.x = 0
    @gold_window.y = 418
    # ステータスウィンドウを作成
    @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
    @playtime_window.dispose
    @steps_window.dispose
    @gold_window.dispose
    @status_window.dispose
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    # ウィンドウを更新
    @command_window.update
    @playtime_window.update
    @steps_window.update
    @gold_window.update
    @status_window.update
    # コマンドウィンドウがアクティブの場合: update_command を呼ぶ
    if @command_window.active
      update_command
      return
    end
    # ステータスウィンドウがアクティブの場合: update_status を呼ぶ
    if @status_window.active
      update_status
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (コマンドウィンドウがアクティブの場合)
  #--------------------------------------------------------------------------
 def update_command
 # B ボタンが押された場合
 if Input.trigger?(Input::B)
   # キャンセル SE を演奏
   $game_system.se_play($data_system.cancel_se)
   # マップ画面に切り替え
   $scene = Scene_Map.new
   return
 end
 # C ボタンが押された場合
 if Input.trigger?(Input::C)
   # パーティ人数が 0 人で、セーブ、ゲーム終了以外のコマンドの場合
   if $game_party.actors.size == 0 and @command_window.index < 4
     # ブザー SE を演奏
     $game_system.se_play($data_system.buzzer_se)
     return
   end
   # コマンドウィンドウのカーソル位置で分岐
   case @command_window.index
   when 0  # アイテム
     # 決定  SE を演奏
     $game_system.se_play($data_system.decision_se)
     # アイテム画面に切り替え
     $scene = Scene_Item.new
   when 1  # スキル
     # 決定 SE を演奏
     $game_system.se_play($data_system.decision_se)
     # ステータスウィンドウをアクティブにする
     @command_window.active = false
     @status_window.active = true
     @status_window.index = 0
   when 2  # 装備
     # 決定 SE を演奏
     $game_system.se_play($data_system.decision_se)
     # ステータスウィンドウをアクティブにする
     @command_window.active = false
     @status_window.active = true
     @status_window.index = 0
   when 3  # ステータス
     # 決定 SE を演奏
     $game_system.se_play($data_system.decision_se)
     # ステータスウィンドウをアクティブにする
     @command_window.active = false
     @status_window.active = true
     @status_window.index = 0
   when 4  # ゲーム終了
     # 決定 SE を演奏
     $game_system.se_play($data_system.decision_se)
     # ゲーム終了画面に切り替え
     $scene = Scene_Switch.new(@status_window.index)
   when 5  # セーブ
     # セーブ禁止の場合
     if $game_system.save_disabled
       # ブザー SE を演奏
       $game_system.se_play($data_system.buzzer_se)
       return
     end
     # 決定 SE を演奏
     $game_system.se_play($data_system.decision_se)
     # セーブ画面に切り替え
     $scene = Scene_Save.new
   when 6  # ゲーム終了
     # 決定 SE を演奏
     $game_system.se_play($data_system.decision_se)
     # ゲーム終了画面に切り替え
     $scene = Scene_End.new
   end
   return
 end
end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (ステータスウィンドウがアクティブの場合)
  #--------------------------------------------------------------------------
  def update_status
    # B ボタンが押された場合
    if Input.trigger?(Input::B)
      # キャンセル SE を演奏
      $game_system.se_play($data_system.cancel_se)
      # コマンドウィンドウをアクティブにする
      @command_window.active = true
      @status_window.active = false
      @status_window.index = -1
      return
    end
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # コマンドウィンドウのカーソル位置で分岐
      case @command_window.index
      when 1  # スキル
        # このアクターの行動制限が 2 以上の場合
        if $game_party.actors[@status_window.index].restriction >= 2
          # ブザー SE を演奏
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # スキル画面に切り替え
        $scene = Scene_Skill.new(@status_window.index)
      when 2  # 装備
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # 装備画面に切り替え
        $scene = Scene_Equip.new(@status_window.index)
      when 3  # ステータス
        # 決定 SE を演奏
        $game_system.se_play($data_system.decision_se)
        # ステータス画面に切り替え
        $scene = Scene_Status.new(@status_window.index)
      end
      return
    end
  end
end


Et voilà !!!! vous obtenez normalement une "réserve" ( si vous désirez changer le nom de cette option allez à la ligne 25 de Scene_Menu et remplacez " réserve " par ce que vous voulez mais n'oubliez pas les guillemet !! )

II-Bonus ( Facultatif )

Avant d'entamer cette partie je tiens à signaler que c'est du "Bidouillage" bref si vous avez peur d'obtenir un bug sans savoir d'où il vient je vous conseil d'effectuer tout ça sur un projet test qui possède EXCTEMENT les même script que votre projet initial. ( voir si il y a des incompatibilité ^^ )

mais normalement c'est pas méchant Wink

Bon bref j'ai bidouiller cette parti pour avoir les barre pv/mp du script "new battle" dans la fenêtre "réserve" ( j'ai trouver que ça faisai + jolie ) mais cette parti n'est pas éssentiel au fonctionnement du script de base vous pouvez donc la sauté et aller directe a la fin Smile

Barres Mp et Pv des personnages.

Voilà comment faire appraitre les barre de Pv et Mp dans ces menu !

Si vous avez le script New_Battle

Sinon Avant de commencez vous n'avez pas le script New_Battle et que vous ne désirez pas l'avoir crée un script nommé Pv_Mp_Barres( le nom a peu d'importance ) et copier dedans :

Code:
#=====================
# ¡ Window_Base
#=====================
class Window_Base < Window
#--------------------------------------------------------------------------
# œ HPƒ[ƒ^[ ‚Ì•`‰æ
#--------------------------------------------------------------------------
def draw_actor_hp_meter_line(actor, x, y, width = 156, height = 4)
w = width * actor.hp / actor.maxhp
hp_color_1 = Color.new(255, 0, 0, 192)
hp_color_2 = Color.new(255, 255, 0, 192)
self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
x -= 1
y += (height/4).floor
self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
x -= 1
y += (height/4).ceil
self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
x -= 1
y += (height/4).ceil
self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
end
#--------------------------------------------------------------------------
# œ SPƒ[ƒ^[ ‚Ì•`‰æ
#--------------------------------------------------------------------------
def draw_actor_sp_meter_line(actor, x, y, width = 156, height = 4)
w = width * actor.sp / actor.maxsp
hp_color_1 = Color.new( 0, 0, 255, 192)
hp_color_2 = Color.new( 0, 255, 255, 192)
self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
x -= 1
y += (height/4).floor
self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
x -= 1
y += (height/4).ceil
self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
x -= 1
y += (height/4).ceil
self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
end
#--------------------------------------------------------------------------
# œ –¼‘O‚Ì•`‰æ
#--------------------------------------------------------------------------
alias xrxs_bp7_draw_actor_name draw_actor_name
def draw_actor_name(actor, x, y)
xrxs_bp7_draw_actor_name(actor, x, y) if @draw_ban != true
end
#--------------------------------------------------------------------------
# œ ƒXƒe[ƒg‚Ì•`‰æ
#--------------------------------------------------------------------------
alias xrxs_bp7_draw_actor_state draw_actor_state
def draw_actor_state(actor, x, y, width = 120)
xrxs_bp7_draw_actor_state(actor, x, y, width) if @draw_ban != true
end
#--------------------------------------------------------------------------
# œ HP ‚Ì•`‰æ
#--------------------------------------------------------------------------
alias xrxs_bp7_draw_actor_hp draw_actor_hp
def draw_actor_hp(actor, x, y, width = 144)
xrxs_bp7_draw_actor_hp(actor, x, y, width) if @draw_ban != true
end
#--------------------------------------------------------------------------
# œ SP ‚Ì•`‰æ
#--------------------------------------------------------------------------
alias xrxs_bp7_draw_actor_sp draw_actor_sp
def draw_actor_sp(actor, x, y, width = 144)
xrxs_bp7_draw_actor_sp(actor, x, y, width) if @draw_ban != true
end
end
#=====================
# ž ŠO•”ƒ‰ƒCƒuƒ‰ƒŠ
#=====================
class Window_Base
#--------------------------------------------------------------------------
# œ ƒ‰ƒCƒ“•`‰æ by ÷‰ë Ý“y
#--------------------------------------------------------------------------
def draw_line(start_x, start_y, end_x, end_y, start_color, width = 1, end_color = start_color)
# •`ŽÊ‹——£‚ÌŒvŽZB‘å‚«‚ß‚É’¼ŠpŽž‚Ì’·‚³B
distance = (start_x - end_x).abs + (start_y - end_y).abs
# •`ŽÊŠJŽn
if end_color == start_color
for i in 1..distance
x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
self.contents.fill_rect(x, y, width, width, start_color)
end
else
for i in 1..distance
x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
r = start_color.red * (distance-i)/distance + end_color.red * i/distance
g = start_color.green * (distance-i)/distance + end_color.green * i/distance
b = start_color.blue * (distance-i)/distance + end_color.blue * i/distance
a = start_color.alpha * (distance-i)/distance + end_color.alpha * i/distance
self.contents.fill_rect(x, y, width, width, Color.new(r, g, b, a))
end
end
end

#--------------------------------------------------------------------------
# œ ‰e•¶Žš•`‰æ by TOMY
#--------------------------------------------------------------------------
def draw_shadow_text(x, y, width, height, string, align = 0)
# Œ³‚̐F‚ð•Û‘¶‚µ‚Ä‚¨‚­
color = self.contents.font.color.dup
# •Žš‚ʼne•`‰æ
self.contents.font.color = Color.new(0, 0, 0)
self.contents.draw_text(x + 2, y + 2, width, height, string, align)
# Œ³‚̐F‚É–ß‚µ‚Ä•`‰æ
self.contents.font.color = color
self.contents.draw_text(x, y, width, height, string, align)
end
end


Si vous ne l'avez pas déjà fait Ajoutez ceci à la fin du script Window_Base :

Code:
#--------------------------------------------------------------------------
 # Barre PV dans le menu
 #--------------------------------------------------------------------------
 def draw_actor_hp_meter_line(actor, x, y, width = 156, height = 4)
   w = width * actor.hp / actor.maxhp
   hp_color_1 = Color.new(255,   0,   0, 192)
   hp_color_2 = Color.new(255, 255,   0, 192)
   self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
   draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
   x -= 1
   y += (height/4).floor
   self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
   draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
   x -= 1
   y += (height/4).ceil
   self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
   draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
   x -= 1
   y += (height/4).ceil
   self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
   draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
 end
 #--------------------------------------------------------------------------
 # Barre PM dans le menu
 #--------------------------------------------------------------------------
 def draw_actor_sp_meter_line(actor, x, y, width = 156, height = 4)
   w = width * actor.sp / actor.maxsp
   hp_color_1 = Color.new(  0,   0, 255, 192)
   hp_color_2 = Color.new(  0, 255, 255, 192)
   self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
   draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
   x -= 1
   y += (height/4).floor
   self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
   draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
   x -= 1
   y += (height/4).ceil
   self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
   draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
   x -= 1
   y += (height/4).ceil
   self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
   draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
 end
 #--------------------------------------------------------------------------
 # Barre Exp dans le menu
 #--------------------------------------------------------------------------
  def draw_actor_exp_meter_line(actor, x, y, width = 144)
  self.contents.font.color = system_color
  self.contents.fill_rect(x-1, y+27, width+2,6, Color.new(0,0,0, 255))
  if actor.level <99
    self.contents.fill_rect(x, y+28, width * actor.exp / actor.next_exp_s.to_f,4,Color.new(68, 162, 46, 255))
  end
end


c'est le script utiliser pour faire apparaitre les barres dans le menu il servira c'est jamais perdu.

Maintenant dans le script Switch_Statut

Vous avez ligne 44 :
Code:

# draw the actor's name, level
draw_actor_name(actor, 114, 0)
draw_actor_level(actor, 188, 0)
draw_actor_hp(actor, 114, 32)
draw_actor_sp(actor, 114, 64)


Remplacez le par :

Code:
# draw the actor's name, level
draw_actor_name(actor, 114, 0)
draw_actor_level(actor, 188, 0)
draw_actor_hp_meter_line(actor, x + -145, y + 50, width = 133, height = 8)
draw_actor_hp(actor, 114, 32)
draw_actor_sp_meter_line(actor, x + -145, y + 80, width = 133, height = 8)
draw_actor_sp(actor, 114, 64)


Et voilà vous avez vos barres dans le menu de votre réserve ! ( Normalement ^^ )


-------------------UTILISATION-----------------

Bon concentrez-vous pour comprendre parce que contrairement a ce qu'il y a au dessus ce n'est pas du copier/coller !!!

Comme vous pouvez le constatez vous pouvez maintenant changer les personnage de votre équipe via une réserve ! mais certain perso ne doivent pas se comportez comme les autres ( le perso principal par exemple ! lui ne doit pas pouvoir etre changer )

je vais vous écrire les commandes, ces commandes doivent être inscrit dans un évènement ! ( inséré un script )

Pour vérouiillé le héros dans l'équipe ( le perso à la place 1 ) inséré comme script :

Code:
$game_party.actors[0].mandatory = true


Pour débloqué le héros inséré :

Code:
$game_party.actors[0].mandatory = nil


Pour les code suivant vous devrez remplacez le X par l'ID de votre perso !!! ( dans la base de donné sir votre perso est 002 alors noté 2 à la place de X ! si il est 014 noté 14 )

Pour vérouillé un autre perso que le héros :

Code:
$game_actors.data[X].mandatory = true


Pour débloqué un autre perso que le héros inséré :

Code:
$game_actors.data[X].mandatory = nil


Pour qu'un perso disparaisse de la réserve ( exemple : un perso meurt dans votre histoire, il faut qu'il disparaisse de la réserve )
NB: il est important que le personnage que vous faite disparaitre de la parti soit dans la réserve au moment où le script est lancez !!! ( retiré le de l'équipe avec la commande " modifier équipe" et il sera directement envoyer dans la réserve et activé votre script après )

Pour qu'il disparraisse :

Code:
$game_actors.data[X].unavailable = true


et pour qu'il réaparaisse :
Code:

$game_actors.data[2].unavailable = nil


Le script, comme il est donné, accepte 10 perso dans la réserve ! si vous en désiré plus il suffit d'allez dans Scene_Menu à la ligne

Code:
@reserve_window = Window_SwitchReserve.new(10)


et de changer 10 par le nombre que vous souhaitez !!! seulement ce script ne gère pas le défilement ..... donc ça sert a rien d'augmenter Very Happy si quelqu'un sais cmt arrangé ça qu'il se prononce

Voilàààààà c'est fini !!!!! j'espère que ce script vous sera utile Laughing
Si vous avez des question ou un problème postez !


Dernière édition par TeNRô le 25/01/2006 20:35:10; édité 1 fois
Revenir en haut
Publicité






MessagePosté le: 08/01/2006 22:04:49
MessageSujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
Yojimbo
Seigneur tout puissant
Seigneur tout puissant

Hors ligne

Inscrit le: 04 Jan 2006
Messages: 805
Localisation: Grotte du priant volé.
Points RPG Community: 587
Moyenne de points: 0,73

MessagePosté le: 08/01/2006 22:43:07
MessageSujet du message: [Script] Switch Party ( genre PHS de FF7 )
Répondre en citant

j'ai déjà vu ce post sur un forum Content!.
Revenir en haut
Visiter le site web du posteur
TeNRô
Apprenti
Apprenti

Hors ligne

Inscrit le: 07 Jan 2006
Messages: 74
Points RPG Community: 1
Moyenne de points: 0,01

MessagePosté le: 08/01/2006 22:46:06
MessageSujet du message: [Script] Switch Party ( genre PHS de FF7 )
Répondre en citant

ui je l'ai déjà poster sur un autr forum où je suis ^^

après le script lui mm il est sur de nombreux forum Smile
Revenir en haut
Siegh Hart
Noble
Noble

Hors ligne

Inscrit le: 08 Jan 2006
Messages: 300
Points RPG Community: -64
Moyenne de points: -0,21

MessagePosté le: 13/01/2006 08:36:52
MessageSujet du message: [Script] Switch Party ( genre PHS de FF7 )
Répondre en citant

Excuse moi mais peut tu préciser à quoi sert ce script ? ( je ne sait pas ce qu' est le phs Rolling Eyes )
_________________
http://www.raml.com/ http://www.Kirano.com/
http://www.Musica.com/ http://www.Darkline.com/ http://www.Yojimbo.com/ http://www.Haku.com/ http://www.Mi.com/ http://www.Tenro.com/
http://www.Sieghart.com/ http://www.Aonewingedangel.com/
Revenir en haut
Seb076
Soldat
Soldat

Hors ligne

Inscrit le: 12 Jan 2006
Messages: 220
Localisation: quelque part dans les terres oublier des highland
Points RPG Community: 5
Moyenne de points: 0,02

MessagePosté le: 13/01/2006 10:36:38
MessageSujet du message: [Script] Switch Party ( genre PHS de FF7 )
Répondre en citant

Ahhh( Non compri dsl )

Shocked

Ennuyé le pauvre
_________________


Revenir en haut
Lilkij
Paysan
Paysan

Hors ligne

Inscrit le: 13 Jan 2006
Messages: 43
Localisation: Konoha
Points RPG Community: 0
Moyenne de points: 0,00

MessagePosté le: 13/01/2006 17:10:23
MessageSujet du message: [Script] Switch Party ( genre PHS de FF7 )
Répondre en citant

re aaaaarhhhhhhhhhhhhhhhhhhhhhhhhhgggggggggggggggggg

Non compri dsl
Non compri dsl
Revenir en haut
TeNRô
Apprenti
Apprenti

Hors ligne

Inscrit le: 07 Jan 2006
Messages: 74
Points RPG Community: 1
Moyenne de points: 0,01

MessagePosté le: 13/01/2006 17:32:24
MessageSujet du message: [Script] Switch Party ( genre PHS de FF7 )
Répondre en citant

Imagine que ta une équipe de 3 ... et hop tu gagne aun 4è perso, tu va le mettre où ? ^^

bah en faite t'aura dans le menu un endroit où tu pourra changer les perso de l'équipe titulaire !

donc en faite c'est simplement là où tu di "qui est dans l'équipe" et "qui n'y ai pas"

bref c'est classique dans les RPG ( chrono cross, final fantasy, breath of fire, etc ... )

je vois pas ct vraiment expliquer :s j'espère que ta compris ^^
Revenir en haut
Lilkij
Paysan
Paysan

Hors ligne

Inscrit le: 13 Jan 2006
Messages: 43
Localisation: Konoha
Points RPG Community: 0
Moyenne de points: 0,00

MessagePosté le: 13/01/2006 17:45:02
MessageSujet du message: [Script] Switch Party ( genre PHS de FF7 )
Répondre en citant

ouais javais compris le systeme de phs genre ff7 mais c'est ce script que j'ai rien compris...
c'est pour rpg maker xp ?????????
Revenir en haut
Yojimbo
Seigneur tout puissant
Seigneur tout puissant

Hors ligne

Inscrit le: 04 Jan 2006
Messages: 805
Localisation: Grotte du priant volé.
Points RPG Community: 587
Moyenne de points: 0,73

MessagePosté le: 13/01/2006 19:30:49
MessageSujet du message: [Script] Switch Party ( genre PHS de FF7 )
Répondre en citant

Les scripts ne sont que sur RPG Maker XP...
Revenir en haut
Visiter le site web du posteur
TeNRô
Apprenti
Apprenti

Hors ligne

Inscrit le: 07 Jan 2006
Messages: 74
Points RPG Community: 1
Moyenne de points: 0,01

MessagePosté le: 13/01/2006 19:31:41
MessageSujet du message: [Script] Switch Party ( genre PHS de FF7 )
Répondre en citant

Concernant le script j'ai expliquer cmt l'installer, je ne peux pas t'aider +

fouille un peu par toi mm pour savoir cmt rajouter le script, si il te semble trop difficile a mettr en place alors laisse tomber pcq l'utiliser c'est encore pire.

et je répondais a la question de Siegh Hart Smile
Revenir en haut
Siegh Hart
Noble
Noble

Hors ligne

Inscrit le: 08 Jan 2006
Messages: 300
Points RPG Community: -64
Moyenne de points: -0,21

MessagePosté le: 14/01/2006 21:26:06
MessageSujet du message: [Script] Switch Party ( genre PHS de FF7 )
Répondre en citant

Aaaaaaaaah ! c'est clair merci bien ! voilà un script qui va en aider plus d' un Wink !
_________________
http://www.raml.com/ http://www.Kirano.com/
http://www.Musica.com/ http://www.Darkline.com/ http://www.Yojimbo.com/ http://www.Haku.com/ http://www.Mi.com/ http://www.Tenro.com/
http://www.Sieghart.com/ http://www.Aonewingedangel.com/
Revenir en haut
Lilkij
Paysan
Paysan

Hors ligne

Inscrit le: 13 Jan 2006
Messages: 43
Localisation: Konoha
Points RPG Community: 0
Moyenne de points: 0,00

MessagePosté le: 16/01/2006 12:18:58
MessageSujet du message: [Script] Switch Party ( genre PHS de FF7 )
Répondre en citant

super c'est pour rmk xp mais moi j'ai l'ancienne version sans script rmk03 boosté seulement ca veut dire kil fo ke je me mette à jour? ou jpe garder celui la?
Revenir en haut
Seb076
Soldat
Soldat

Hors ligne

Inscrit le: 12 Jan 2006
Messages: 220
Localisation: quelque part dans les terres oublier des highland
Points RPG Community: 5
Moyenne de points: 0,02

MessagePosté le: 16/01/2006 15:03:37
MessageSujet du message: [Script] Switch Party ( genre PHS de FF7 )
Répondre en citant

Je crois pas que ca marche avec rmk03
_________________


Revenir en haut
TeNRô
Apprenti
Apprenti

Hors ligne

Inscrit le: 07 Jan 2006
Messages: 74
Points RPG Community: 1
Moyenne de points: 0,01

MessagePosté le: 16/01/2006 20:20:10
MessageSujet du message: [Script] Switch Party ( genre PHS de FF7 )
Répondre en citant

Je crois, et arreter moi si je me trompe, que les script n'éxiste que pour XP !

entre autre dès que vous voyez "rpg maker script" ça veut dire que c'est pour RPG Maker XP !

ça veut dire que si vous voulez un script l seul moyen de l'utiliser c'est d'êtr sur rmkxp.
Revenir en haut
Seb076
Soldat
Soldat

Hors ligne

Inscrit le: 12 Jan 2006
Messages: 220
Localisation: quelque part dans les terres oublier des highland
Points RPG Community: 5
Moyenne de points: 0,02

MessagePosté le: 17/01/2006 16:46:38
MessageSujet du message: [Script] Switch Party ( genre PHS de FF7 )
Répondre en citant

[quote]Dans le script Game_party juste en dessous de " class Game_Actors " remplacez "attr_reader :actors'' par :

Code:
Citation:
attr_accessor :data # the array containing the actors



écrire son livre

ya pas class game_actors !
_________________


Revenir en haut
Contenu Sponsorisé






MessagePosté le: 10/12/2016 05:03:48
MessageSujet du message: [Script] Switch Party ( genre PHS de FF7 )

Revenir en haut
Montrer les messages depuis:   
RPG Community Index du Forum -> RPG Maker -> Scripts RPG Maker XP Toutes les heures sont au format GMT + 2 Heures
Poster un nouveau sujet   Répondre au sujet Aller à la page: 1, 2, 3  >
Page 1 sur 3
Sauter vers:  

 

Portail | Index | Panneau d’administration | Créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
phpBB
Template by BMan1
Traduction par : phpBB-fr.com