InformationsCe script tout simple, basé sur ceux de changement de nom, permet au joueur de changer le nom d'une classe.
Comme c'est le nom de la classe qui change, cela s'applique à tous les personnages de cette classe (logique).
J'en suis l'auteur, pas besoin de crédit car j'ai juste modifié un script de base.
Script testé et fonctionnel sous RPG Maker XP.
ScriptsIl y a deux scripts à copier, au dessus de main avec le nom que vous voulez (autant reprendre les noms des classes, c'est à dire respectivement
Scene_Class_Name et
Window_Class_NameEdit).
- Code: Tout sélectionner
#==============================================================================
# ** Scene_Class_Name
# Par Bahamut 1.2 aka Morphine (01/03/2011)
#==============================================================================
class Scene_Class_Name
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def initialize(class_id)
@class_id = class_id
end
def main
# Make windows
@edit_window = Window_Class_NameEdit.new(@class_id, 12)
@input_window = Window_NameInput.new
# Execute transition
Graphics.transition
# Main loop
loop do
# Update game screen
Graphics.update
# Update input information
Input.update
# Frame update
update
# Abort loop if screen is changed
if $scene != self
break
end
end
# Prepare for transition
Graphics.freeze
# Dispose of windows
@edit_window.dispose
@input_window.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# Update windows
@edit_window.update
@input_window.update
# If B button was pressed
if Input.repeat?(Input::B)
# If cursor position is at 0
if @edit_window.index == 0
return
end
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Delete text
@edit_window.back
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# If cursor position is at [OK]
if @input_window.character == nil
# If name is empty
if @edit_window.class_name == ""
# Return to default name
@edit_window.restore_default
# If name is empty
if @edit_window.class_name == ""
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# Play decision SE
$game_system.se_play($data_system.decision_se)
return
end
# Change actor name
$data_classes[@class_id].name = @edit_window.class_name
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Switch to map screen
$scene = Scene_Map.new
return
end
# If cursor position is at maximum
if @edit_window.index == 12
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# If text character is empty
if @input_window.character == ""
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Add text character
@edit_window.add(@input_window.character)
return
end
end
end
- Code: Tout sélectionner
#==============================================================================
# ** Window_Class_NameEdit
#==============================================================================
class Window_Class_NameEdit < Window_Base
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_reader :class_name # name
attr_reader :index # cursor position
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
# max_char : maximum number of characters
#--------------------------------------------------------------------------
def initialize(class_id, max_char)
super(0, 0, 640, 128)
self.contents = Bitmap.new(width - 32, height - 32)
@class_name = $data_classes[class_id].name
@max_char = max_char
# Fit name within maximum number of characters
name_array = @class_name.split(//)[0...@max_char]
@class_name = ""
for i in 0...name_array.size
@class_name += name_array[i]
end
@default_name = @class_name
@index = name_array.size
refresh
update_cursor_rect
end
#--------------------------------------------------------------------------
# * Return to Default Name
#--------------------------------------------------------------------------
def restore_default
@class_name = @default_name
@index = @class_name.split(//).size
refresh
update_cursor_rect
end
#--------------------------------------------------------------------------
# * Add Character
# character : text character to be added
#--------------------------------------------------------------------------
def add(character)
if @index < @max_char and character != ""
@class_name += character
@index += 1
refresh
update_cursor_rect
end
end
#--------------------------------------------------------------------------
# * Delete Character
#--------------------------------------------------------------------------
def back
if @index > 0
# Delete 1 text character
name_array = @class_name.split(//)
@class_name = ""
for i in 0...name_array.size-1
@class_name += name_array[i]
end
@index -= 1
refresh
update_cursor_rect
end
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
# Draw name
name_array = @class_name.split(//)
for i in 0...@max_char
c = name_array[i]
if c == nil
c = "_"
end
x = 320 - @max_char * 14 + i * 28
self.contents.draw_text(x, 32, 28, 32, c, 1)
end
end
#--------------------------------------------------------------------------
# * Cursor Rectangle Update
#--------------------------------------------------------------------------
def update_cursor_rect
x = 320 - @max_char * 14 + @index * 28
self.cursor_rect.set(x, 32, 28, 32)
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
update_cursor_rect
end
end
Instructions d'utilisationUtilisez simplement la commande d'événement pour insérer un script, avec le code suivant :
- Code: Tout sélectionner
$scene = Scene_Class_Name.new(X)
En remplaçant
X par l'id de la classe que vous voulez modifier (visible dans la base de données [F9])
Ou pour changer le nom de la classe dont l'id est contenu dans une variable Y :
- Code: Tout sélectionner
$scene = Scene_Class_Name.new($game_variables[Y])
Enfin, pour changer le nom de la classe du perso dont la place dans l'équipe est Z :
- Code: Tout sélectionner
$scene = Scene_Class_Name.new($game_party.actors[Z].class_id)
Attention, on compte à partir de zéro dans ce cas, donc
$game_party.actors[1] correspond au deuxième personnage de l'équipe.
Tout ça ce sont des exemples, vous pouvez passer n'importe quelle variable ; attention tout de même les erreurs ne sont pas gérées donc si vous mettez une variable égale à zero par exemple, le jeu plantera.