Kingdom maker : Le royaume du Making

Le site du making avec les meilleurs ressources, scripts, download et tutoriels
 
AccueilLe sitePortailFAQRechercherS'enregistrerGroupesMembresConnexion

Partagez | 
 

 [Script] Système de PHS

Aller en bas 
AuteurMessage
[DoE] Cylosis
Administrateur fondateur
Administrateur fondateur
avatar

Masculin Nombre de messages : 281
Age : 23
Date d'inscription : 09/06/2007

Mon niveau de Making
Niveau Script:
14/20  (14/20)
Niveau construction de MAP:
15/20  (15/20)
Niveau Base de donnée:
19/20  (19/20)

MessageSujet: [Script] Système de PHS   Dim 10 Juin - 15:43

1)Ouvrez l'editeur de script.

Après « Window_DebugRight » et avant « Arrow_Base » insérez un nouveau script.

Nommez-le « Window_SwitchParty » et insérez-y le code suivant :


QUOTE
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 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

# 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, "Mandatory", 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


--------------------------------------------------------------------------------


2) Insérez maintenant un nouveau script entre « Window_SwitchParty » et avant « Arrow_Base ». Nommez-le “Window_SwitchReserve” et insérez-y le code suivant :


QUOTE
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 > 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



3) Insérez un nouveau script aprés « Window_SwitchReserve » et avant « Arrow_Base ».
Appellez-le "Window_SwitchStatus" et insérez le code suivant dans celle-ci.


QUOTE
#==============================================================================
# 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)

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_graphic(actor, 24, 56)

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

end

end



4) Insérez une nouvelle section entre“Scene_Debug” et avant “Main”. Appellez-la "Scene_Switch" et insérez-y le code suivant :


QUOTE
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 s/he 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::
# 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::
# 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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://kingdommaker.1fr1.net
[DoE] Cylosis
Administrateur fondateur
Administrateur fondateur
avatar

Masculin Nombre de messages : 281
Age : 23
Date d'inscription : 09/06/2007

Mon niveau de Making
Niveau Script:
14/20  (14/20)
Niveau construction de MAP:
15/20  (15/20)
Niveau Base de donnée:
19/20  (19/20)

MessageSujet: Re: [Script] Système de PHS   Dim 10 Juin - 15:43

5) Maintenant, quelques modifications à faire dans des scripts existants :

Dans la section ” Game_Actor”, Ajoutez ceci juste après la ligne "class Game_Actor [...]" au début :


QUOTE
Code:
attr_reader :actor_id
attr_accessor :mandatory
attr_accessor :unavailable




Encore dans “Game_Actor”, n’importe où dans le “method setup” (qui commence après la ligne "def setup(actor_id)" et au dessus du "end), ajoutez :


QUOTE
Code:
mandatory = false
unavailable = false



Dans le “Game_Actors” (avec un S cette fois), ajoutez juste après la ligne "class Game_Actors [...]" au début :


QUOTE
Code:
attr_accessor :data



dans la section “Game_Party”, changez la ligne "attr_reader :actors" par:



Code:
attr_accessor :actors




--------------------------------------------------------------------------------



Ensuite, pour appeler le script, tu fait un nouvel objet appelé PHS, qui active un interrupteur.

Tu crée un événement commun en procéssus paralléle qui se déclenchera une fois que l'interrupteur PHS sera activé et vous mettez dedans :

Appeler un scrïpt :
Code:

[i]$game_actor.actors[nombre de personnages].mandatory = true

Puis désactiver l'interrupteur : PHS



Et voilà, j'espére qu'il marche ce script car je ne l'ai pas testé !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://kingdommaker.1fr1.net
 
[Script] Système de PHS
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Appeler un script/ une page PHP?
» Quel votre système d'exploitation ?
» [résolu] demande d'aide à l'optimisation
» COMMENT installer et utiliser le systeme de bataille XAS?
» Pb pour configurer mon système numérique

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Kingdom maker : Le royaume du Making :: A propos de RPG Maker :: Les scripts-
Sauter vers: