- NewMakerMembre
- Nombre de messages : 42
Localisation : Lunéville/Lorraine/France/Europe/Terre/Système Solaire
Distinction : aucune
Date d'inscription : 18/12/2014
[NMScript]: Skill_Mastery v1
Mer 31 Déc 2014 - 3:02
Coucou,
Auteur: NewMaker
Nom du script: Skill_Mastery
Version: 1.6
Description: Voilà un petit script qui permet d'avoir un niveau de maîtrise sur ses compétences.
Une fois qu'un skill est complètement maîtrisé le transforme en un autre:
Crédits:
-Joke (c'est lui le patron)
-Celestiel
-Zangther
Voilà, voilà; bon making.
+5 Points
Auteur: NewMaker
Nom du script: Skill_Mastery
Version: 1.6
Description: Voilà un petit script qui permet d'avoir un niveau de maîtrise sur ses compétences.
Une fois qu'un skill est complètement maîtrisé le transforme en un autre:
Crédits:
-Joke (c'est lui le patron)
-Celestiel
-Zangther
- Code:
# ==============================================================================
# Skill_Mastery
#
# Auteur: NewMaker
# Version: 1.6
# Description: Permet d'ajouter un attribut aux compétence (le niveau de
# maîtrise de la compétence).
#
# Crédits:
# - Joke (qui a énormément aidé)
# - Celestiel (pour quelques infos utiles)
# - Zangther (pour quelques infos utiles)
# ==============================================================================
module SkillsToUpgrade
SKILL_LIST = Hash.new(0)
SKILL_LIST = {
26 => [[27], 2],
27 => [[28], 2]
}
end
# ------------------------------------------------------
# Ne rien mettre entre les guillemets de nsm, si vous voulez que
# rien ne s'affiche quand une compétence ne demande pas de points de maîtrise.
# ------------------------------------------------------
module Vocab
def self.sm; "SM"; end
def self.nsm; "-/-"; end
end
module BattleManager
class << self
# ------------------------------------------------------
# alias
# ------------------------------------------------------
alias :old_gain_exp :gain_exp
alias :old_process_abort :process_abort
# ------------------------------------------------------
# appel d'update_skills après la victoire
# ------------------------------------------------------
def gain_exp
update_skills
old_gain_exp
end
# ------------------------------------------------------
# appel d'update_skills après la fuite
# ------------------------------------------------------
def process_abort
update_skills
old_process_abort
end
# ------------------------------------------------------
# méthode update_skills pour tous les membres de l'équipe
# ------------------------------------------------------
def update_skills
$game_party.all_members.each do |actor|
actor.upgrade_skills
end
wait_for_message
end
end
end
class Game_Actor
include SkillsToUpgrade
# ------------------------------------------------------
# Alias et accesseurs
# ------------------------------------------------------
attr_accessor :skill_mastery
alias :old_init_skills :init_skills
alias :old_learn_skill :learn_skill
alias :old_forget_skill :forget_skill
# ------------------------------------------------------
# méthode pour l'utilisation d'une compétence
# ------------------------------------------------------
def use_item(item)
super
if item.is_a?(RPG::Skill)
upgrade_skill_mastery(item.id) if SceneManager.scene_is?(Scene_Battle)
end
end
# ------------------------------------------------------
# initialisation du Hash
# ------------------------------------------------------
def init_skills
@skill_mastery = Hash.new(0)
old_init_skills
end
# ------------------------------------------------------
# la nouvelle compétence prend 0 en niveau de maitrise
# ------------------------------------------------------
def learn_skill(skill_id)
unless skill_learn?($data_skills[skill_id])
@skill_mastery[skill_id] = 0
end
old_learn_skill(skill_id)
end
# ------------------------------------------------------
# suppresion de la clé de l'ancienne compétence
# ------------------------------------------------------
def forget_skill(skill_id)
@skill_mastery.delete(skill_id)
old_forget_skill(skill_id)
end
# ------------------------------------------------------
# permet d'augmenter de 1 la maitrise d'une compétence
# ------------------------------------------------------
def upgrade_skill_mastery(skill_id)
if SKILL_LIST[skill_id]
if @skill_mastery[skill_id] < SKILL_LIST[skill_id][1]
@skill_mastery[skill_id] += 1
end
end
end
# ------------------------------------------------------
# permet d'évoluer une compétence
# ------------------------------------------------------
def upgrade_skill(old_skill_id, new_skills_id)
forget_skill(old_skill_id)
$game_message.new_page
new_skills_id.each do |skill_id|
learn_skill(skill_id)
$game_message.add(sprintf(Vocab::ObtainSkill,
$data_skills[skill_id].name))
end
end
# ------------------------------------------------------
# évolue les compétences
# ------------------------------------------------------
def upgrade_skills
SKILL_LIST.each do |skill, upgrade|
if @skill_mastery[skill] && @skill_mastery[skill] >= upgrade[1]
upgrade_skill(skill, upgrade[0])
end
end
end
end
class Window_SkillList
include SkillsToUpgrade
alias :old_initialize :initialize
def initialize(x, y, width, height)
@mastery_or_cost = false
old_initialize(x, y, width, height)
end
# ------------------------------------------------------
# affichage des stats
# ------------------------------------------------------
def draw_skill_cost(rect, skill)
if @mastery_or_cost
change_color(crisis_color, enable?(skill))
if SKILL_LIST[skill.id]
if @actor.skill_tp_cost(skill) > 0
draw_text(rect, "#{Vocab.sm}: #{@actor.skill_mastery[skill.id]}/\
#{SKILL_LIST[skill.id][1]}", 2)
elsif @actor.skill_mp_cost(skill) > 0
draw_text(rect, "#{Vocab.sm}: #{@actor.skill_mastery[skill.id]}/\
#{SKILL_LIST[skill.id][1]}", 2)
end
else
draw_text(rect, "#{Vocab.nsm}", 2)
end
else
if @actor.skill_tp_cost(skill) > 0
change_color(tp_cost_color, enable?(skill))
draw_text(rect, "#{@actor.skill_tp_cost(skill)}", 2)
elsif @actor.skill_mp_cost(skill) > 0
change_color(mp_cost_color, enable?(skill))
draw_text(rect, "#{@actor.skill_mp_cost(skill)}", 2)
end
end
end
# ------------------------------------------------------
# changement de l'affichage si la touche majuscule est pressée
# ------------------------------------------------------
def process_handling
super
return process_costormastery if Input.trigger?(:SHIFT) && self.visible
end
# ------------------------------------------------------
# change l'affichage points de maitrise ou cout en mana
# ------------------------------------------------------
def process_costormastery
Sound.play_cursor; Input.update
@mastery_or_cost ? @mastery_or_cost = false : @mastery_or_cost = true
refresh
end
end
Voilà, voilà; bon making.
+5 Points
- HeavenStaffeux retraité
- Nombre de messages : 2441
Age : 23
Localisation : Alpes-Maritimes VIRILITÉ OLALA
Distinction : Aucune
Date d'inscription : 18/10/2012
Re: [NMScript]: Skill_Mastery v1
Mer 31 Déc 2014 - 10:35
Merci du partage, +5 points^^
Heav'n
Heav'n
- NérylisMembre
- Nombre de messages : 615
Age : 36
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: [NMScript]: Skill_Mastery v1
Mer 31 Déc 2014 - 16:45
Comme dit dans mon sujet, c'est pas mal comme script mais il faudrait pouvoir avoir un nombre de points différent à avoir pour apprendre de nouveaux skills.
Une autre chose aussi : serait-il possible d'avoir un message en fin de combat nous informant que notre skill a été upgradé ?
Une autre chose aussi : serait-il possible d'avoir un message en fin de combat nous informant que notre skill a été upgradé ?
- NewMakerMembre
- Nombre de messages : 42
Localisation : Lunéville/Lorraine/France/Europe/Terre/Système Solaire
Distinction : aucune
Date d'inscription : 18/12/2014
Re: [NMScript]: Skill_Mastery v1
Jeu 1 Jan 2015 - 0:02
Script mis à jour.
On peut maintenant définir à partir de combien de points de maîtrise on évolue la compétence.
J'ai mis le message en fin de combat. S'il y a encore des bugs merci de me prévenir.
Je compte ajouter toute une interface pour suivre l'évolution de ses compétences (activable ou non)
Bonne année les gens.
On peut maintenant définir à partir de combien de points de maîtrise on évolue la compétence.
J'ai mis le message en fin de combat. S'il y a encore des bugs merci de me prévenir.
Je compte ajouter toute une interface pour suivre l'évolution de ses compétences (activable ou non)
Bonne année les gens.
- NérylisMembre
- Nombre de messages : 615
Age : 36
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: [NMScript]: Skill_Mastery v1
Jeu 1 Jan 2015 - 18:53
Une petite interface serait intéressante effectivement. En tout cas, j'ai testé ton script, ça marche à merveille.
Bonne année à toi aussi !
Bonne année à toi aussi !
- NérylisMembre
- Nombre de messages : 615
Age : 36
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: [NMScript]: Skill_Mastery v1
Sam 3 Jan 2015 - 13:36
Re, petit souci : j'ai voulu me faire en quelque sorte un arbre de skill. J'ai voulu faire en sorte qu'un skill puisse être upgradé et également débloquer un nouveau skill. En gros, une fois que mon skill 1 (Niv1) a été utilisé 20 fois, il débloque skill 1 (Niv2) et skill 2 (Niv1). Sauf que ça marche pas. Ton script ne prend en compte que la ligne la plus bas su Skill list.
- NewMakerMembre
- Nombre de messages : 42
Localisation : Lunéville/Lorraine/France/Europe/Terre/Système Solaire
Distinction : aucune
Date d'inscription : 18/12/2014
Re: [NMScript]: Skill_Mastery v1
Sam 3 Jan 2015 - 16:23
Non, c'est normal; étant donné que le script fait la chose suivante.
Une fois que le skill A a été maîtrisé; ça "l'enlève" et "ajoute" un autre skill à la place.
Donc quand tu met une deuxième commande ça va prendre la plus basse.
Je vais essayer d'y remédier.
Edit: Code modifié, tu peux maintenant apprendre plusieurs compétences à partir d'une
compétence maîtrisée.
Une fois que le skill A a été maîtrisé; ça "l'enlève" et "ajoute" un autre skill à la place.
Donc quand tu met une deuxième commande ça va prendre la plus basse.
Je vais essayer d'y remédier.
Edit: Code modifié, tu peux maintenant apprendre plusieurs compétences à partir d'une
compétence maîtrisée.
- NérylisMembre
- Nombre de messages : 615
Age : 36
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: [NMScript]: Skill_Mastery v1
Sam 3 Jan 2015 - 20:29
J'ai testé, pour apprendre 2 ou 3 nouveaux skills, ça marche.
Encore un truc, tu vas dire que je suis chiant mais bon.^^
J'aimerai apprendre deux nouveaux skills mais à des moments différents.
Exemple : J'ai un skill A. Lorsque je l'utilise 10 fois, je débloque un nouveau skill B. Et quand le skill A a été utilisé 20 fois, je débloque un nouveau skill C (sachant que si ce dernier skill C est un upgrade du skill A, on peut supprimer le skill A).
Encore un truc, tu vas dire que je suis chiant mais bon.^^
J'aimerai apprendre deux nouveaux skills mais à des moments différents.
Exemple : J'ai un skill A. Lorsque je l'utilise 10 fois, je débloque un nouveau skill B. Et quand le skill A a été utilisé 20 fois, je débloque un nouveau skill C (sachant que si ce dernier skill C est un upgrade du skill A, on peut supprimer le skill A).
- NewMakerMembre
- Nombre de messages : 42
Localisation : Lunéville/Lorraine/France/Europe/Terre/Système Solaire
Distinction : aucune
Date d'inscription : 18/12/2014
Re: [NMScript]: Skill_Mastery v1
Sam 3 Jan 2015 - 22:00
Compris, j'ajouterai ça aux options. en attendant voilà la version 1.4 qui corrige un bug.
Quand tu utilise une compétences tu augmente la maîtrise de cette dernière; mais s'il
arrivait de fuir un combat l'évolution ne se faisait pas.
Je vais essayer de voir aussi si les compétences comme soin peuvent ne pas être améliorées
depuis le menu des skills.
Edit: j'ai fait une erreur; là on peut apprendre deux compétences en même temps à partir
d'une seule mais on peut pas les apprendre à intervalle différent. Je vais voir ce que je peux faire.
Edit2: Je retire ce que j'ai dit, il y a même pas besoin de modifier le script sur ce coup là.
Exemple: Je veux que soin donne soin 2 quand c'est à 10 points de maîtrise et soin 3 quand c'est à 20 points de maîtrise.
Je copie la compétence soin dans la bdd pour en avoir deux et j'écris dans le script
SKILL_LIST = {
26 => [[127, 27], 10], # quand soin sera à 10 ça va apprendre la copie de soin (127) et soin 2 (27)
127 => [[28], 10] # quand la copie de soin sera à 10 ça va apprendre soin 3 (28)
}
Me reste plus qu'à modifier le fait qu'on puisse utiliser les compétences comme soin depuis le menu.
Quand tu utilise une compétences tu augmente la maîtrise de cette dernière; mais s'il
arrivait de fuir un combat l'évolution ne se faisait pas.
Je vais essayer de voir aussi si les compétences comme soin peuvent ne pas être améliorées
depuis le menu des skills.
Edit: j'ai fait une erreur; là on peut apprendre deux compétences en même temps à partir
d'une seule mais on peut pas les apprendre à intervalle différent. Je vais voir ce que je peux faire.
Edit2: Je retire ce que j'ai dit, il y a même pas besoin de modifier le script sur ce coup là.
Exemple: Je veux que soin donne soin 2 quand c'est à 10 points de maîtrise et soin 3 quand c'est à 20 points de maîtrise.
Je copie la compétence soin dans la bdd pour en avoir deux et j'écris dans le script
SKILL_LIST = {
26 => [[127, 27], 10], # quand soin sera à 10 ça va apprendre la copie de soin (127) et soin 2 (27)
127 => [[28], 10] # quand la copie de soin sera à 10 ça va apprendre soin 3 (28)
}
Me reste plus qu'à modifier le fait qu'on puisse utiliser les compétences comme soin depuis le menu.
- NérylisMembre
- Nombre de messages : 615
Age : 36
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: [NMScript]: Skill_Mastery v1
Dim 4 Jan 2015 - 22:04
Bien vu, je n'avais pas pensé à ça.
- BrandobscureMembre
- Nombre de messages : 528
Age : 28
Localisation : Belgique
Distinction : aucune
Date d'inscription : 03/01/2011
Re: [NMScript]: Skill_Mastery v1
Jeu 8 Jan 2015 - 21:05
Ah c'est intéressant ça, j'en aie un pour La Princesse Oubliée de Formar'
mais il ne prévient pas quand un skill à UP où combien de fois on l'a utilisé,
je pense peut-être prendre le tien du coup.
Merci !
mais il ne prévient pas quand un skill à UP où combien de fois on l'a utilisé,
je pense peut-être prendre le tien du coup.
Merci !
- NewMakerMembre
- Nombre de messages : 42
Localisation : Lunéville/Lorraine/France/Europe/Terre/Système Solaire
Distinction : aucune
Date d'inscription : 18/12/2014
Re: [NMScript]: Skill_Mastery v1
Jeu 8 Jan 2015 - 23:29
Coucou;
Ça y est j'ai ajouté deux trois lignes. On ne peut plus augmenter les compétences
comme soin depuis le menu par exemple.
Dans le menu des compétences il suffit d'appuyer sur shift pour afficher les points
de maîtrise. Si tu vois d'autres choses à modifier n'hésite pas.
De rien brandobscure, c'est fait pour ça.
Ça y est j'ai ajouté deux trois lignes. On ne peut plus augmenter les compétences
comme soin depuis le menu par exemple.
Dans le menu des compétences il suffit d'appuyer sur shift pour afficher les points
de maîtrise. Si tu vois d'autres choses à modifier n'hésite pas.
De rien brandobscure, c'est fait pour ça.
- NérylisMembre
- Nombre de messages : 615
Age : 36
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: [NMScript]: Skill_Mastery v1
Ven 9 Jan 2015 - 15:19
Je viens de tester, il y a des soucis.
- J'ai essayé ta technique pour apprendre plusieurs skills à partir d'un skill (l'Edit 2 de ton message ci-dessus). Cela cause un problème au niveau de ton script (ligne 140 je crois de tête).
- Le fait que les sorts comme Soin ne soient pas améliorables via le menu n'est pas logique (après, les sorts sont bel et bien utilisés). Je n'avais pas testé ça à l'époque mais est-il possible de faire quelque chose à ce sujet ?
- Le texte qui apparaît avec les MP que coûtent les skills dans le menu Compétences est-il nécessaire ? Je préfèrerai que cela reste tel que c'était à l'origine (juste le nombre de MP) et garder ce que tu as fait pour afficher le nombre de points nécessaires pour avoir l'upgrade des skills.
- J'ai essayé ta technique pour apprendre plusieurs skills à partir d'un skill (l'Edit 2 de ton message ci-dessus). Cela cause un problème au niveau de ton script (ligne 140 je crois de tête).
- Le fait que les sorts comme Soin ne soient pas améliorables via le menu n'est pas logique (après, les sorts sont bel et bien utilisés). Je n'avais pas testé ça à l'époque mais est-il possible de faire quelque chose à ce sujet ?
- Le texte qui apparaît avec les MP que coûtent les skills dans le menu Compétences est-il nécessaire ? Je préfèrerai que cela reste tel que c'était à l'origine (juste le nombre de MP) et garder ce que tu as fait pour afficher le nombre de points nécessaires pour avoir l'upgrade des skills.
- MehukattiMembre
- Nombre de messages : 8
Age : 31
Localisation : Belgique
Distinction : aucune
Date d'inscription : 26/12/2012
Re: [NMScript]: Skill_Mastery v1
Ven 9 Jan 2015 - 17:29
Hellow !
J'ai un petit souci concernant le mod, j'utilise le script "MOG_Battle_Result" et lorsque j'utilise deux la compétence (Ce que j'ai préciser dans le script), ma compétence n'évoluent pas, même après plusieurs tentatives et changement dans le script.
Et je me demandais si ce n'étais pas dû à mon script de "Battle résult" que mes compétences n'évoluent pas.
Si oui, y a-t-il une solution ? Si non, d'où vient le problème ?
D'avance, merci.
J'ai un petit souci concernant le mod, j'utilise le script "MOG_Battle_Result" et lorsque j'utilise deux la compétence (Ce que j'ai préciser dans le script), ma compétence n'évoluent pas, même après plusieurs tentatives et changement dans le script.
Et je me demandais si ce n'étais pas dû à mon script de "Battle résult" que mes compétences n'évoluent pas.
Si oui, y a-t-il une solution ? Si non, d'où vient le problème ?
D'avance, merci.
- NewMakerMembre
- Nombre de messages : 42
Localisation : Lunéville/Lorraine/France/Europe/Terre/Système Solaire
Distinction : aucune
Date d'inscription : 18/12/2014
Re: [NMScript]: Skill_Mastery v1
Sam 10 Jan 2015 - 4:29
Salut,
J'ai vérifié et non le script n'est pas compatible. Le problème viens qu'il modifie la méthode
process_victory du module BattleManager sans utiliser d'alias alors que je m'en sers aussi
indirectement. J'appelle la méthode gain_exp qui elle même est appelée dans process_victory.
J'ai vérifié et non le script n'est pas compatible. Le problème viens qu'il modifie la méthode
process_victory du module BattleManager sans utiliser d'alias alors que je m'en sers aussi
indirectement. J'appelle la méthode gain_exp qui elle même est appelée dans process_victory.
- ZangtherMembre
- Nombre de messages : 913
Distinction : aucune
Date d'inscription : 06/02/2013
Re: [NMScript]: Skill_Mastery v1
Sam 10 Jan 2015 - 10:52
Hum, peut être en mettant ce script là après le script tout pourri de MOG ?
Normalement, ça devrait mieux marcher.
Normalement, ça devrait mieux marcher.
- NérylisMembre
- Nombre de messages : 615
Age : 36
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: [NMScript]: Skill_Mastery v1
Mer 14 Jan 2015 - 18:30
Je rebondis sur ce point :
Le problème, c'est qu'on va avoir le message comme quoi on apprend un sort qu'on a déjà (la copie du sort). C'est un peu gênant.
NewMaker a écrit:
Edit2: Je retire ce que j'ai dit, il y a même pas besoin de modifier le script sur ce coup là.
Exemple: Je veux que soin donne soin 2 quand c'est à 10 points de maîtrise et soin 3 quand c'est à 20 points de maîtrise.
Je copie la compétence soin dans la bdd pour en avoir deux et j'écris dans le script
SKILL_LIST = {
26 => [[127, 27], 10], # quand soin sera à 10 ça va apprendre la copie de soin (127) et soin 2 (27)
127 => [[28], 10] # quand la copie de soin sera à 10 ça va apprendre soin 3 (28)
}
Me reste plus qu'à modifier le fait qu'on puisse utiliser les compétences comme soin depuis le menu.
Le problème, c'est qu'on va avoir le message comme quoi on apprend un sort qu'on a déjà (la copie du sort). C'est un peu gênant.
- NérylisMembre
- Nombre de messages : 615
Age : 36
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: [NMScript]: Skill_Mastery v1
Mar 20 Jan 2015 - 19:51
Up
- NérylisMembre
- Nombre de messages : 615
Age : 36
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: [NMScript]: Skill_Mastery v1
Lun 26 Jan 2015 - 22:17
Script modifié par vincent26 que je remercie encore une fois.
On peut à présent apprendre plusieurs skills à partir d'un seul existant.
Fonctionnement de la configuration :
XX => [[YY, ZZ, true or false]],
XX = ID du skill à améliorer
YY = ID du skill à obtenir à partir du skill XX
ZZ = Nombre de fois que le skill XX doit être utilisé avant de débloquer le skill YY
true or false = true : le skill XX sera supprimé une fois le skill YY obtenu, false : le skill XX sera conservé une fois le skill YY obtenu
Exemple :
module SkillsToUpgrade
SKILL_LIST = Hash.new(0)
SKILL_LIST = {
26 => [[27, 10, false],[28, 30, true]]
}
Soin + (ID 27) appris une fois Soin (ID 26) lancé 10 fois (ce skill est conservé)
Soin Max (ID 28) appris une fois Soin (ID 26) lancé 30 fois (ce skill sera supprimé)
A noter que le nombre de points ne se remet pas à 0 si vous avez passé la première étape. Pour reprendre l'exemple ci-dessus, une fois le skill Soin lancé 10 fois, il sera noté 10/30 pour apprendre Soin Max.
Pour les skills qu'on peut lancer depuis le menu, l'incrémentation ne se fait pas (cela n'est pas très logique mais ça évite d'avoir des skills qui montent trop rapidement).
- Code:
# ==============================================================================
# Skill_Mastery
#
# Auteur: NewMaker
# Version: 1.6
# Description: Permet d'ajouter un attribut aux compétence (le niveau de
# maîtrise de la compétence).
#
# Crédits:
# - Joke (qui a énormément aidé)
# - Celestiel (pour quelques infos utiles)
# - Zangther (pour quelques infos utiles)
# - Vincent26 (pour la mise à jour du script)
# ==============================================================================
module SkillsToUpgrade
SKILL_LIST = Hash.new(0)
SKILL_LIST = {
53 => [[77, 2,false],[78,4,true]],
27 => [[28, 2, true]]
}
end
# ------------------------------------------------------
# Ne rien mettre entre les guillemets de nsm, si vous voulez que
# rien ne s'affiche quand une compétence ne demande pas de points de maîtrise.
# ------------------------------------------------------
module Vocab
def self.sm; "SM"; end
def self.nsm; "-/-"; end
end
module BattleManager
class << self
# ------------------------------------------------------
# alias
# ------------------------------------------------------
alias :old_gain_exp :gain_exp
alias :old_process_abort :process_abort
# ------------------------------------------------------
# appel d'update_skills après la victoire
# ------------------------------------------------------
def gain_exp
update_skills
old_gain_exp
end
# ------------------------------------------------------
# appel d'update_skills après la fuite
# ------------------------------------------------------
def process_abort
update_skills
old_process_abort
end
# ------------------------------------------------------
# méthode update_skills pour tous les membres de l'équipe
# ------------------------------------------------------
def update_skills
$game_party.all_members.each do |actor|
actor.upgrade_skills
end
wait_for_message
end
end
end
class Game_Actor
include SkillsToUpgrade
# ------------------------------------------------------
# Alias et accesseurs
# ------------------------------------------------------
attr_accessor :skill_mastery
alias :old_init_skills :init_skills
alias :old_learn_skill :learn_skill
alias :old_forget_skill :forget_skill
# ------------------------------------------------------
# méthode pour l'utilisation d'une compétence
# ------------------------------------------------------
def use_item(item)
super
if item.is_a?(RPG::Skill)
upgrade_skill_mastery(item.id) if SceneManager.scene_is?(Scene_Battle)
end
end
# ------------------------------------------------------
# initialisation du Hash
# ------------------------------------------------------
def init_skills
@skill_mastery = Hash.new(0)
old_init_skills
end
# ------------------------------------------------------
# la nouvelle compétence prend 0 en niveau de maitrise
# ------------------------------------------------------
def learn_skill(skill_id)
unless skill_learn?($data_skills[skill_id])
@skill_mastery[skill_id] = 0
end
old_learn_skill(skill_id)
end
# ------------------------------------------------------
# suppresion de la clé de l'ancienne compétence
# ------------------------------------------------------
def forget_skill(skill_id)
@skill_mastery.delete(skill_id)
old_forget_skill(skill_id)
end
# ------------------------------------------------------
# permet d'augmenter de 1 la maitrise d'une compétence
# ------------------------------------------------------
def upgrade_skill_mastery(skill_id)
if SKILL_LIST[skill_id]
value = 0
for up in SKILL_LIST[skill_id]
value = up[1] if up[1] > value
end
if @skill_mastery[skill_id] < value
@skill_mastery[skill_id] += 1
end
end
end
# ------------------------------------------------------
# permet d'évoluer une compétence
# ------------------------------------------------------
def upgrade_skill(old_skill_id, new_skills_id,forget)
forget_skill(old_skill_id) if forget
$game_message.new_page
new_skills_id.each do |skill_id|
learn_skill(skill_id)
$game_message.add(sprintf(Vocab::ObtainSkill,
$data_skills[skill_id].name))
end
end
# ------------------------------------------------------
# évolue les compétences
# ------------------------------------------------------
def upgrade_skills
SKILL_LIST.each do |skill, upgrade|
ok = false
result = []
for up in upgrade
if @skill_mastery[skill] && @skill_mastery[skill] >= up[1] && !skill_learn?($data_skills[up[0]])
result.push(up[0])
ok = true if up[2]
end
end
upgrade_skill(skill, result,ok) if result != []
end
end
end
class Window_SkillList
include SkillsToUpgrade
alias :old_initialize :initialize
def initialize(x, y, width, height)
@mastery_or_cost = false
old_initialize(x, y, width, height)
end
# ------------------------------------------------------
# affichage des stats
# ------------------------------------------------------
def draw_skill_cost(rect, skill)
if @mastery_or_cost
change_color(crisis_color, enable?(skill))
if SKILL_LIST[skill.id]
if @actor.skill_tp_cost(skill) > 0
value = @actor.skill_mastery[skill.id]
for up in SKILL_LIST[skill.id]
if value < up[1]
value = up[1]
break
end
end
draw_text(rect, "#{Vocab.sm}: #{@actor.skill_mastery[skill.id]}/\
#{value}", 2)
elsif @actor.skill_mp_cost(skill) > 0
value = @actor.skill_mastery[skill.id]
for up in SKILL_LIST[skill.id]
if value < up[1]
value = up[1]
break
end
end
draw_text(rect, "#{Vocab.sm}: #{@actor.skill_mastery[skill.id]}/\
#{value}", 2)
end
else
draw_text(rect, "#{Vocab.nsm}", 2)
end
else
if @actor.skill_tp_cost(skill) > 0
change_color(tp_cost_color, enable?(skill))
draw_text(rect, "#{@actor.skill_tp_cost(skill)}", 2)
elsif @actor.skill_mp_cost(skill) > 0
change_color(mp_cost_color, enable?(skill))
draw_text(rect, "#{@actor.skill_mp_cost(skill)}", 2)
end
end
end
# ------------------------------------------------------
# changement de l'affichage si la touche majuscule est pressée
# ------------------------------------------------------
def process_handling
super
return process_costormastery if Input.trigger?(:SHIFT) && self.visible
end
# ------------------------------------------------------
# change l'affichage points de maitrise ou cout en mana
# ------------------------------------------------------
def process_costormastery
Sound.play_cursor; Input.update
@mastery_or_cost ? @mastery_or_cost = false : @mastery_or_cost = true
refresh
end
end
On peut à présent apprendre plusieurs skills à partir d'un seul existant.
Fonctionnement de la configuration :
XX => [[YY, ZZ, true or false]],
XX = ID du skill à améliorer
YY = ID du skill à obtenir à partir du skill XX
ZZ = Nombre de fois que le skill XX doit être utilisé avant de débloquer le skill YY
true or false = true : le skill XX sera supprimé une fois le skill YY obtenu, false : le skill XX sera conservé une fois le skill YY obtenu
Exemple :
module SkillsToUpgrade
SKILL_LIST = Hash.new(0)
SKILL_LIST = {
26 => [[27, 10, false],[28, 30, true]]
}
Soin + (ID 27) appris une fois Soin (ID 26) lancé 10 fois (ce skill est conservé)
Soin Max (ID 28) appris une fois Soin (ID 26) lancé 30 fois (ce skill sera supprimé)
A noter que le nombre de points ne se remet pas à 0 si vous avez passé la première étape. Pour reprendre l'exemple ci-dessus, une fois le skill Soin lancé 10 fois, il sera noté 10/30 pour apprendre Soin Max.
Pour les skills qu'on peut lancer depuis le menu, l'incrémentation ne se fait pas (cela n'est pas très logique mais ça évite d'avoir des skills qui montent trop rapidement).
- reveurducielMembre
- Nombre de messages : 197
Date d'inscription : 18/12/2014
Re: [NMScript]: Skill_Mastery v1
Jeu 12 Fév 2015 - 0:44
Ça m'a l'air très bien ce script, je vais faire un essai
- NoobMembre
- Nombre de messages : 44
Age : 30
Distinction : aucune
Date d'inscription : 07/02/2015
Re: [NMScript]: Skill_Mastery v1
Jeu 12 Fév 2015 - 18:56
Je le conseille c'est plutôt pas mal.
Manque plus le script plus je tape plus je gagne en force
plus je fait de la magie plus je gagne de la magie
plus je perds des hp plus je gagne en hp
a la ffII quoi.
édit : je t'ai envoyé un mp pour des demandes de modifications
Manque plus le script plus je tape plus je gagne en force
plus je fait de la magie plus je gagne de la magie
plus je perds des hp plus je gagne en hp
a la ffII quoi.
édit : je t'ai envoyé un mp pour des demandes de modifications
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|