- La MecheMembre
- Nombre de messages : 44
Age : 30
Localisation : Dans une contrée fort fort lointaine...
Distinction : aucune
Date d'inscription : 19/08/2008
Amélioration de sorts
Jeu 14 Jan 2010 - 20:11
Par La Meche
Description du script :
- Permet la gestion de niveau pour les Sorts
Screen :
script :
Description du script :
- Permet la gestion de niveau pour les Sorts
Screen :
script :
- Code:
#===============================================================
# ● [VX] ◦ Ameliroation de Sorts
#--------------------------------------------------------------
# ◦ Par La Meche, d'une requête
# ◦ http://rpg-maker-vx.bbactif.com/forum.htm
# ◦ Crée le 14/01/2010
# ◦ Version 1.0
# ◦ Remerciment à ASKHA
#===============================================================
#===============================================================
# Notes de version
#---------------------------------------------------------------
# Version 1.0
# > script initial
#===============================================================
#===============================================================
# Enduits :: Début du Module de configuration
#===============================================================
module LaM
module Skill_Up
#--------------------------------------------------------------------------
# Incorporation dans le menu ?
# Si vous voulez ne pas mettre dans le menu mais
# dans un PNJ par exemple, il suffit de choisir appeller un script puis
# $scene = Scene_Amelioration.new(ID, false)
# où ID est l'ID de l'actor pour qui l'on va ameliorer les sors
#--------------------------------------------------------------------------
Incorpor_Menu = true
#--------------------------------------------------------------------------
# Si utilisation du menu de moghunter : true
# Sinon false
# /!\ Ne marche que si Incorpor_menu = true
# /!\ Pour que ca marche, le script de Moghunter doit être placé au dessus de ce script
#--------------------------------------------------------------------------
Menu_Moghunter = false
#--------------------------------------------------------------------------
# Nom de l'onglet dans le menu
#--------------------------------------------------------------------------
Nom_Menu = "Skill Up"
#--------------------------------------------------------------------------
# Nombre de points de skill lorsque l'on commence le jeu
#--------------------------------------------------------------------------
Point_Depart = 5
#--------------------------------------------------------------------------
# Nombre de point gagné lors d'un Level Up
#--------------------------------------------------------------------------
Point_Level_Up = 1
#--------------------------------------------------------------------------
# Nom des points de skill
#--------------------------------------------------------------------------
Name = "Skill Pts"
#--------------------------------------------------------------------------
# Amelioration des Sors
# Doit être créer sur le model suivant :
# ID => [],
# où ID est l'ID du sors dans la base de donnée
# Pour rajouter un niveau au sors et donc une amélioration
# Rajouter ceci dans les [ ]
# [type, nbr]
# où type =
# 1 = Dégats
# 2 = Variation
# 3 = Influence Physique
# 4 = Influence Magique
# 5 = Coût MP
# 6 = Ajout d'altération d'état
# 7 = Retrait d'altération d'état
# et où nbr est le chiffre d'augmentation
# /!\ SI type = 6 ou 7 alors nbr est l'ID de l'etat dans la base de donnée
# Exemple :
# 3 => [ [1, 5], [3, 2], [6, 2] ],
# Au niveau 2 les dégats du sors seront augmenter de 5
# Au niveau 3 l'influence physique du sors sera augmenter de 2
# Au niveau 4 le sors causera l'etat d'ID 2
#--------------------------------------------------------------------------
Skill_Niv = {
1 => [ [1, 3], [1, 3], [1, 3] ], # Autre exemple, peut être modifié
} # /!\ A ne pas supprimer
#--------------------------------------------------------------------------
# Index des icones représentant les différentes
# modification possible lors d'une augmentation
# /!\ Attention à ne pas oublier de mettre une virgule après le chiffre
#--------------------------------------------------------------------------
Icon = {
1 => 110, # Degats
2 => 131, # Variation
3 => 129, # Influence Physique
4 => 130, # Influence Magique
5 => 133, # Coût MP
6 => 142, # Ajout d'altération d'état
7 => 143, # Retrait d'altération d'état
}
end
end
#===============================================================
# Enduits :: Fin du Module de configuration
#===============================================================
#==============================================================================
# * * Window_Skill_Status
#------------------------------------------------------------------------------
# Affiche l'amélioration du sors.
#==============================================================================
class Window_Skill_Status < Window_Base
include LaM::Skill_Up
#--------------------------------------------------------------------------
# * Initialize
#--------------------------------------------------------------------------
def initialize(skill)
super(384, 56, 160, 56)
refresh(skill)
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh(skill)
self.contents.clear
self.contents.draw_text(0, 0, 128, 24, "-", 1) if skill == nil or skill.niv == skill.niv_max
return if skill == nil or skill.niv == skill.niv_max
for i in Icon.keys
if i == Skill_Niv[skill.id][skill.niv-1][0]
draw_icon(Icon[i], 0, 0)
if Skill_Niv[skill.id][skill.niv-1][0] == 6 or Skill_Niv[skill.id][skill.niv-1][0] == 7
self.contents.draw_text(32, 0, 96, 24, "#{$data_states[Skill_Niv[skill.id][skill.niv-1][1]].name}")
else
signe = Skill_Niv[skill.id][skill.niv-1][1] < 0 ? "" : "+"
self.contents.draw_text(32, 0, 96, 24, "#{signe}#{Skill_Niv[skill.id][skill.niv-1][1]}")
end
end
end
end
end
#==============================================================================
# * * Window_Skill_Up
#------------------------------------------------------------------------------
# Affiche les différents sorts de l'acteur
#==============================================================================
class Window_Skill_Up < Window_Selectable
#--------------------------------------------------------------------------
# * Initialize
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 56, 384, 360)
@actor = actor
self.index = 0
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
@data = []
for skill in @actor.skills
@data.push(skill) if LaM::Skill_Up::Skill_Niv[skill.id] != nil
end
@item_max = @data.size
create_contents
for i in 0...@item_max
draw_item(i)
end
end
#--------------------------------------------------------------------------
# * Draw Item
#--------------------------------------------------------------------------
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
skill = @data[index]
if skill != nil
rect.width -= 4
enable = skill.niv == skill.niv_max ? false : true
draw_item_name(skill, rect.x, rect.y, enable)
self.contents.draw_text(rect, "Niv #{skill.niv}/#{skill.niv_max}", 2)
end
end
#--------------------------------------------------------------------------
# * Retourne le skill selectionner
#--------------------------------------------------------------------------
def skill
return @data[self.index]
end
#--------------------------------------------------------------------------
# * Update Help Text
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(skill == nil ? "" : skill.description)
end
end
#==============================================================================
# * * Window_Points
#------------------------------------------------------------------------------
# Affiche les nombres de points de sorts possédé
#==============================================================================
class Window_Points < Window_Base
#--------------------------------------------------------------------------
# * Initialize
#--------------------------------------------------------------------------
def initialize(actor)
super(384, 112, 160, 56)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.draw_text(0, 0, 128, 24, "#{@actor.skill_pts}")
self.contents.font.color = system_color
self.contents.draw_text(0, 0, 128, 24, "#{LaM::Skill_Up::Name}", 2)
self.contents.font.color = normal_color
end
end
#==============================================================================
# * * Scene_Amelioration
#------------------------------------------------------------------------------
# Scene de l'amélioration des sorts
#==============================================================================
class Scene_Amelioration < Scene_Base
include LaM::Skill_Up
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(actor_index, carte = true)
@actor_index = actor_index
@carte = carte
end
#--------------------------------------------------------------------------
# * Start Processing
#--------------------------------------------------------------------------
def start
create_menu_background
@actor = $game_party.members[@actor_index]
@help_window = Window_Help.new
@skill_window = Window_Skill_Up.new(@actor)
@skill_window.help_window = @help_window
@status_window = Window_Skill_Status.new(@skill_window.skill)
@points_window = Window_Points.new(@actor)
@index = @skill_window.index
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
def terminate
dispose_menu_background
@help_window.dispose
@skill_window.dispose
@status_window.dispose
@points_window.dispose
end
#--------------------------------------------------------------------------
# * Return to Original Screen
#--------------------------------------------------------------------------
def return_scene
if not @carte
$scene = Scene_Map.new
else
$scene = Scene_Menu.new(4)
end
end
#--------------------------------------------------------------------------
# * Update Frame
#--------------------------------------------------------------------------
def update
update_menu_background
@help_window.update
@skill_window.update
if @index != @skill_window.index
@status_window.refresh(@skill_window.skill)
@index = @skill_window.index
end
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
end
if Input.trigger?(Input::C)
input_c
end
end
#--------------------------------------------------------------------------
# * Input C
#--------------------------------------------------------------------------
def input_c
skill = @skill_window.skill
if @actor.skill_pts == 0 or skill == nil or skill.niv == skill.niv_max
Sound.play_buzzer
else
Sound.play_decision
add = Skill_Niv[skill.id][skill.niv-1][1]
case Skill_Niv[skill.id][skill.niv-1][0]
when 1
skill.base_damage += add
when 2
skill.variation += add
when 3
skill.atk_f += add
when 4
skill.spi_f += add
when 5
skill.mp_cost += add
when 6
skill.plus_state_set.push($data_states[Skill_Niv[skill.id][skill.niv-1][1]])
when 7
skill.minus_state_set.push($data_states[Skill_Niv[skill.id][skill.niv-1][1]])
end
@actor.skill_pts -= 1
skill.niv += 1
@skill_window.refresh
@status_window.refresh(@skill_window.skill)
@points_window.refresh
end
end
end
if LaM::Skill_Up::Incorpor_Menu == true
class Scene_Menu < Scene_Base
#--------------------------------------------------------------------------
# * Create Command Window
#--------------------------------------------------------------------------
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = LaM::Skill_Up::Nom_Menu
s6 = Vocab::save
s7 = Vocab::game_end
if LaM::Skill_Up::Menu_Moghunter == false
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6,s7])
else
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6,s7],column_max = 1, row_max = 6)
end
@command_window.index = @menu_index
if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable skill
@command_window.draw_item(2, false) # Disable equipment
@command_window.draw_item(3, false) # Disable status
@command_window.draw_item(4, false)
end
if $game_system.save_disabled # If save is forbidden
@command_window.draw_item(5, false) # Disable save
end
end
#--------------------------------------------------------------------------
# * Update Command Selection
#--------------------------------------------------------------------------
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
if $game_party.members.size == 0 and @command_window.index < 4
Sound.play_buzzer
return
elsif $game_system.save_disabled and @command_window.index == 5
Sound.play_buzzer
return
end
Sound.play_decision
case @command_window.index
when 0 # Item
$scene = Scene_Item.new
when 1,2,3,4 # Skill, equipment, status, skill up
start_actor_selection
when 5 # Save
$scene = Scene_File.new(true, false, false)
when 6 # End Game
$scene = Scene_End.new
end
end
end
#--------------------------------------------------------------------------
# * Update Actor Selection
#--------------------------------------------------------------------------
def update_actor_selection
if Input.trigger?(Input::B)
Sound.play_cancel
end_actor_selection
elsif Input.trigger?(Input::C)
$game_party.last_actor_index = @status_window.index
Sound.play_decision
case @command_window.index
when 1 # skill
$scene = Scene_Skill.new(@status_window.index)
when 2 # equipment
$scene = Scene_Equip.new(@status_window.index)
when 3 # status
$scene = Scene_Status.new(@status_window.index)
when 4 # skill up
$scene = Scene_Amelioration.new(@status_window.index)
end
end
end
end
class Scene_File
def return_scene
if @from_title
$scene = Scene_Title.new
elsif @from_event
$scene = Scene_Map.new
else
$scene = Scene_Menu.new(5)
end
end
end
class Scene_End
def return_scene
$scene = Scene_Menu.new(6)
end
end
end
#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
# This class handles actors. It's used within the Game_Actors class
# ($game_actors) and referenced by the Game_Party class ($game_party).
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :skill_pts
#--------------------------------------------------------------------------
# * Setup
# actor_id : actor ID
#--------------------------------------------------------------------------
alias add_setup setup
def setup(actor_id)
add_setup(actor_id)
@skill_pts = LaM::Skill_Up::Point_Depart
end
#--------------------------------------------------------------------------
# * Level Up
#--------------------------------------------------------------------------
alias add_level_up level_up
def level_up
add_level_up
@skill_pts += LaM::Skill_Up::Point_Level_Up
end
end
class Scene_Title < Scene_Base
#--------------------------------------------------------------------------
# * Load Database
#--------------------------------------------------------------------------
alias add_load_database load_database
def load_database
add_load_database
for skill in 1...$data_skills.size
$data_skills[skill].initialize_niv
end
end
end
#==============================================================================
# ** Scene_File
#------------------------------------------------------------------------------
# This class performs the save and load screen processing.
#==============================================================================
class Scene_File < Scene_Base
#--------------------------------------------------------------------------
# * Write Save Data
# file : write file object (opened)
#--------------------------------------------------------------------------
alias add_write_save_data write_save_data
def write_save_data(file)
add_write_save_data(file)
Marshal.dump($data_skills, file)
end
#--------------------------------------------------------------------------
# * Read Save Data
# file : file object for reading (opened)
#--------------------------------------------------------------------------
alias add_read_save_data read_save_data
def read_save_data(file)
add_read_save_data(file)
$data_skills = Marshal.load(file)
end
end
module RPG
class Skill < UsableItem
attr_accessor :niv
#--------------------------------------------------------------------------
# * Initialise le niveau à 1
#--------------------------------------------------------------------------
def initialize_niv
@niv = 1
end
#--------------------------------------------------------------------------
# * Permet de connaître le niveau max du sort
#--------------------------------------------------------------------------
def niv_max
niv_max = LaM::Skill_Up::Skill_Niv[@id].size + 1
end
end
end
class Window_Command < Window_Selectable
#-----------------------------------------------------------------------------------------
# * Redéfinition pour afficher correctement les choix d'en dessous
#-----------------------------------------------------------------------------------------
def refresh
self.contents.clear
create_contents # A ajouter
for i in 0...@item_max
draw_item(i)
end
end
end
- DjidaneMembre
- Nombre de messages : 1444
Age : 31
Localisation : Paris
Distinction : Héritier d'Alexdream (mais on l'aime quand même).
Lèche cul professionnel
et il aime ça!!!
Date d'inscription : 30/12/2008
Re: Amélioration de sorts
Jeu 14 Jan 2010 - 21:59
Merci du partage la mèche
Même si je ne pense pas m'en servir , sa rendra service à beaucoups de maker
Même si je ne pense pas m'en servir , sa rendra service à beaucoups de maker
- kamasMembre
- Nombre de messages : 41
Distinction : Ce n'est pas un "bon", mais un "bon" débutant
[Coco' ]
Date d'inscription : 13/09/2009
Re: Amélioration de sorts
Sam 16 Jan 2010 - 15:16
tu peux mieux expliquer comment on ajoute les sorts de notre choix (écrit une formule d'exemple d'un sort " soin " et ou placer tout ça... Merci
- ZangtherOldMembre
- Nombre de messages : 1711
Date d'inscription : 07/08/2009
Re: Amélioration de sorts
Sam 16 Jan 2010 - 15:50
Tout est marqué au début du script...
- Code:
#--------------------------------------------------------------------------
# Incorporation dans le menu ?
# Si vous voulez ne pas mettre dans le menu mais
# dans un PNJ par exemple, il suffit de choisir appeller un script puis
# $scene = Scene_Amelioration.new(ID, false)
# où ID est l'ID de l'actor pour qui l'on va ameliorer les sors
#--------------------------------------------------------------------------
Incorpor_Menu = true
#--------------------------------------------------------------------------
# Si utilisation du menu de moghunter : true
# Sinon false
# /!\ Ne marche que si Incorpor_menu = true
# /!\ Pour que ca marche, le script de Moghunter doit être placé au dessus de ce script
#--------------------------------------------------------------------------
Menu_Moghunter = false
#--------------------------------------------------------------------------
# Nom de l'onglet dans le menu
#--------------------------------------------------------------------------
Nom_Menu = "Skill Up"
#--------------------------------------------------------------------------
# Nombre de points de skill lorsque l'on commence le jeu
#--------------------------------------------------------------------------
Point_Depart = 5
#--------------------------------------------------------------------------
# Nombre de point gagné lors d'un Level Up
#--------------------------------------------------------------------------
Point_Level_Up = 1
#--------------------------------------------------------------------------
# Nom des points de skill
#--------------------------------------------------------------------------
Name = "Skill Pts"
#--------------------------------------------------------------------------
# Amelioration des Sors
# Doit être créer sur le model suivant :
# ID => [],
# où ID est l'ID du sors dans la base de donnée
# Pour rajouter un niveau au sors et donc une amélioration
# Rajouter ceci dans les [ ]
# [type, nbr]
# où type =
# 1 = Dégats
# 2 = Variation
# 3 = Influence Physique
# 4 = Influence Magique
# 5 = Coût MP
# 6 = Ajout d'altération d'état
# 7 = Retrait d'altération d'état
# et où nbr est le chiffre d'augmentation
# /!\ SI type = 6 ou 7 alors nbr est l'ID de l'etat dans la base de donnée
# Exemple :
# 3 => [ [1, 5], [3, 2], [6, 2] ],
# Au niveau 2 les dégats du sors seront augmenter de 5
# Au niveau 3 l'influence physique du sors sera augmenter de 2
# Au niveau 4 le sors causera l'etat d'ID 2
#--------------------------------------------------------------------------
Skill_Niv = {
1 => [ [1, 3], [1, 3], [1, 3] ], # Autre exemple, peut être modifié
} # /!\ A ne pas supprimer
#--------------------------------------------------------------------------
# Index des icones représentant les différentes
# modification possible lors d'une augmentation
# /!\ Attention à ne pas oublier de mettre une virgule après le chiffre
#--------------------------------------------------------------------------
Icon = {
1 => 110, # Degats
2 => 131, # Variation
3 => 129, # Influence Physique
4 => 130, # Influence Magique
5 => 133, # Coût MP
6 => 142, # Ajout d'altération d'état
7 => 143, # Retrait d'altération d'état
}
- JakartaMembre
- Nombre de messages : 40
Age : 28
Localisation : Midi-Pyrénées
Distinction : aucune
Date d'inscription : 05/02/2009
Re: Amélioration de sorts
Sam 16 Jan 2010 - 17:10
Bonjour y aurait il un moyen de pouvoir ajouter des points de sorts via un evenement ? Merci d'avance !
- La MecheMembre
- Nombre de messages : 44
Age : 30
Localisation : Dans une contrée fort fort lointaine...
Distinction : aucune
Date d'inscription : 19/08/2008
Re: Amélioration de sorts
Sam 16 Jan 2010 - 17:51
Bonjour y aurait il un moyen de pouvoir ajouter des points de sorts via un evenement ?
- Code:
$game_actors[ID].skill_pts += nbr
nbr : nombre de points que tu veux ajouter
- kamasMembre
- Nombre de messages : 41
Distinction : Ce n'est pas un "bon", mais un "bon" débutant
[Coco' ]
Date d'inscription : 13/09/2009
Re: Amélioration de sorts
Sam 16 Jan 2010 - 18:16
oui j'avais vu -_- mais il faudrait un truc simple car là, on y comprend rien^^
(ou mettre les sorts ajouter ?)
(ou mettre les sorts ajouter ?)
- La MecheMembre
- Nombre de messages : 44
Age : 30
Localisation : Dans une contrée fort fort lointaine...
Distinction : aucune
Date d'inscription : 19/08/2008
Re: Amélioration de sorts
Sam 16 Jan 2010 - 18:20
Tu veux quand même pas qu'on fasse ton jeu -_-'mais il faudrait un truc simple car là, on y comprend rien^^
J'ai déjà mit un exemple...
Si tu veux rajouter un sort tu saute une ligne en l'exemple et la } et tu fais comme le modèle...
Je peux pas être plus clair désolé
- kamasMembre
- Nombre de messages : 41
Distinction : Ce n'est pas un "bon", mais un "bon" débutant
[Coco' ]
Date d'inscription : 13/09/2009
Re: Amélioration de sorts
Sam 16 Jan 2010 - 19:02
Ca donne sa ?
1 => [1, 5]
et Normalment ça doit augmenter le premier sort de +5 de dommage au niveau 2
et je le place en dessous de coi ? s'il vous plaît
1 => [1, 5]
et Normalment ça doit augmenter le premier sort de +5 de dommage au niveau 2
et je le place en dessous de coi ? s'il vous plaît
- La MecheMembre
- Nombre de messages : 44
Age : 30
Localisation : Dans une contrée fort fort lointaine...
Distinction : aucune
Date d'inscription : 19/08/2008
Re: Amélioration de sorts
Sam 16 Jan 2010 - 21:38
Nan c'est pas ça...
Sa serait plutôt
Et tu le place entre l'exemple
Sa serait plutôt
- Code:
1 => [[1, 5]], # Avec une virgule c'est mieux !
Et tu le place entre l'exemple
- Code:
1 => [ [1, 3], [1, 3], [1, 3] ],
- Code:
} # L'accolade
- kamasMembre
- Nombre de messages : 41
Distinction : Ce n'est pas un "bon", mais un "bon" débutant
[Coco' ]
Date d'inscription : 13/09/2009
Re: Amélioration de sorts
Lun 18 Jan 2010 - 19:16
J'ai tout fait, mais je voudrais changer le cout des sorts en point (pour passer 1 niveau il faut utiliser 5 points)..
- lecode234Membre
- Nombre de messages : 10
Distinction : aucune
Date d'inscription : 31/01/2010
Re: Amélioration de sorts
Dim 31 Jan 2010 - 13:02
C'est impossible.
Sauf si LaM fait une nouvelle version^^
Sauf si LaM fait une nouvelle version^^
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum