- BlockadeMembre
- Nombre de messages : 194
Age : 32
Distinction : aucune
Date d'inscription : 06/09/2008
Apprendre un sort via un objet
Sam 4 Sep 2010 - 0:36
Apprendre un sort via un objet
Auteur : Blockade
Date : 04/09/2010
Niveau : Facile
Version : 1.0
Marre de passer 3 ans à configurer les évents commun pour apprendre un sort à chaque héros qu'on peut contrôler ? Ce script est fait pour vous ! Il permet une configuration rapide dans la base de donnée, et affiche une fenêtre confirmant l'apprentissage du sort (optionnel).
Description du script :
- Permet d'apprendre à un héros un sort sans passer par en évent commun
- Affichage optionnel d'une petite fenêtre indiquant que le sort à été appris.
Screens :
Script :
- Code:
#===============================================================================
# ▼ [VX] Apprendre des sorts via les objets
#------------------------------------------------------------------------
# Blockade Script Library - Apprendre des sorts via les objets
# Date : 04/09/2010
# Niveau : Facile
# Version : 1.0
# Forum d'origine : http://rpg-maker-vx.bbactif.com/forum.htm
#
# Marre de passer 3 ans à configurer les évents commun pour apprendre un sort à chaque
# héros qu'on peut contrôler ? Ce script est fait pour vous ! Il permet une configuration rapide
# dans la base de donnée, et affiche une fenêtre confirmant l'apprentissage du sort (optionnel).
#=======================================================================
# ▼ Mises à jour
# -------------------------------------------------------------------------
# ¤ 04/09/2010 - Version 1.0 - Création du script
#=======================================================================
# ▼ Fonctionnalités
# -------------------------------------------------------------------------
# - Permet d'apprendre à un héros un sort sans passer par en évent commun
# - Affichage optionnel d'une petite fenêtre indiquant que le sort à été appris.
#=======================================================================
# ▼ Installation
# --------------------------------------------------------------------------
# Placez le au dessus de main, et en dessous de tout les scripts modifiant l'inventaire
# ou autres.
#=======================================================================
# ▼ Utilisation
# --------------------------------------------------------------------------
# Il suffit de mettre dans la note de votre objet :
# <sort appris x>
# Où x est l'ID du sort que vous voulez apprendre. Jetez un coup d'œil à la configuration
# du module pour personnaliser la fenêtre qui s'affiche.
#=======================================================================
# ▼ Alias et compatibilité
# --------------------------------------------------------------------------
# ► Alias méthodes :
# > Scene_Item : start
# > Scene_Item : update
# > Scene_Item : determine_target
# > Scene_Item : terminate
#===============================================================================
module BSL
module LSO
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# AFFICHER_FENETRE - Afficher la fenêtre de confirmation
#-------------------------------------------------
# Niveau : Facile
# Mettez true si vous voulez faire apparaitre une fenêtre qui confirmera l'apprentissage du
# sort. Si vous n'en voulez pas mettez juste false.
# /!\ Attention : Il est inutile de modifier les autres constantes si vous n'utilisez pas la
# fenêtre.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
AFFICHER_FENETRE = true
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# SOUND_X - Le son quand un sort est appris
#-------------------------------------------------
# Niveau : Facile
# Vous pouvez modifier le son, qui est joué lorsqu'un nouveau sort est appris, ainsi
# que son tempo, et son volume.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Le chemin d'accès au son (Défaut : Audio/SE/Chime2)
SOUND_PATH = "Audio/SE/Chime2"
# Le volume du son joué (Défaut : 80)
SOUND_VOLUME = 80
# Le tempo du son joué (Défaut : 100)
SOUND_TEMPO = 100
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# TAILLE_FENETRE_X - La taille de la fenêtre
#-------------------------------------------------
# Niveau : Moyen
# La fenêtre s'adapte automatiquement à la taille du texte. Si par hasard vous trouvez
# qu'elle est trop petite vous pouvez modifier les valeurs suivantes.
# La formule pour la taille de la fenêtre est :
# (nombre de caractères * TAILLE_FENETRE_GROS) + TAILLE_FENETRE_PETIT
# TAILLE_FENETRE_GROS modifiera clairement la taille, tandis que
# TAILLE_FENETRE_PETIT permettra un réglage plus précis.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Modifier cette valeur pour un réglage grossier (Défaut : 9)
TAILLE_FENETRE_GROS = 9
# Modifier cette valeur pour un réglage précis (Défaut : 10)
TAILLE_FENETRE_PETIT = 10
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# TIME_WAIT - Le temps d'affichage de la fenêtre
#-------------------------------------------------
# Niveau : Facile
# C'est le temps en frame (rapel : 60 frames = 1 seconde), que la fenêtre restera
# affichée. Le décompte se fait quand la fenêtre est pleinement affichée, et donc
# ne tiens pas en compte l'animation de transparence. Quand il est fini, l'animation
# de disparition se met en place.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Le temps d'affichage de la fenêtre (Défaut : 60)
TIME_WAIT = 60
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# TEXT_X - Les textes affichés
#-------------------------------------------------
# Niveau : Facile
# Ce sont les textes affichés dans la fenêtre. Vous pouvez utilisez des tag particuliers
# pour faire apparaitre certaines données :
# /cible : affiche le nom du héros ciblé par l'objet
# /sort : affiche le nom du sort que l'objet apprend
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Texte qui s'affiche si la cible à appris le sort (Défaut : "/cible à appris /sort !")
TEXT_APPRIS = "/cible à appris /sort !"
# Texte qui s'affiche si la cible à déjà appris le sort (Défaut : "/cible connaît déjà /sort.")
TEXT_DEJA_APPRIS = "/cible connaît déjà /sort."
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# VITESSE_TRANSPARENCE - La vitesse de l'appartion/disparition de la fênetre
#-------------------------------------------------
# Niveau : Facile
# Pour l'affichage de la fenêtre, il part de 0, puis ajoute VITESSE_TRANSPARENCE
# toute les frames. Une fois arrivé à 255 ou plus, il s'arrête et la fenêtre est affichée.
# Alors le compte à rebours commence (TIME_WAIT), et à la fin ce celui-ci il retire
# VITESSE_TRANSPARENCE à 255, et une fois arrivé à 0 la fenêtre à disparu.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# La vitesse d'affichage (Défaut : 15)
VITESSE_TRANSPARENCE = 15
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# TAG_X
#-------------------------------------------------
# /!\ Ne touchez qu'a cette section si vous êtes familiers avec les regxp
# Niveau : Avancé
# Ici vous pourrez changer les tags qui récupèrent les données dans la partie note
# de l'armure. Je vous déconseille vivement de modifier cette partie.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Tag pour détecter que c'est un objet qui apprend un sort. (Défaut : /<(?:sort appris)[ ]*(\d+)>/i)
TAG_SORT = /<(?:sort appris)[ ]*(\d+)>/i
end
end
#==============================================================================
# ** Scene_Item
#------------------------------------------------------------------------------
# Cette class gère le menu d'inventaire.
#==============================================================================
class Scene_Item < Scene_Base
include BSL::LSO
#--------------------------------------------------------------------------
# * alias_method : start
#--------------------------------------------------------------------------
alias bsl_lso_start start
def start
@info_skill_window = Window_InfoSkill_LSO.new
bsl_lso_start
end
#--------------------------------------------------------------------------
# * alias_method : terminate
#--------------------------------------------------------------------------
alias bsl_lso_terminate terminate
def terminate
bsl_lso_terminate
@info_skill_window.dispose
end
#--------------------------------------------------------------------------
# * alias_method : update
#--------------------------------------------------------------------------
alias bsl_lso_update update
def update
if @info_skill_window.visible && AFFICHER_FENETRE # Si on décide d'afficher la fenêtre et que le sort est appris
@info_skill_window.update
@timer -= 1 unless @timer.nil?
if @info_skill_window.opacity != 255 && @timer.nil?
@info_skill_window.opacity += VITESSE_TRANSPARENCE
@info_skill_window.contents_opacity += VITESSE_TRANSPARENCE
@timer = TIME_WAIT if @info_skill_window.opacity == 255
end
if @info_skill_window.opacity != 0 && !@timer.nil? && @timer < 0
@info_skill_window.opacity -= VITESSE_TRANSPARENCE
@info_skill_window.contents_opacity -= VITESSE_TRANSPARENCE
if @info_skill_window.opacity == 0
@info_skill_window.visible = false
@timer = nil
end
end
else # Sinon on update normalement.
bsl_lso_update
end
end
#--------------------------------------------------------------------------
# * alias_method : determine_target
#--------------------------------------------------------------------------
alias bsl_lso_determine_target determine_target
def determine_target
#Si l'item apprend un sort
if @item.id_skill != 0
target = $game_party.members[@target_window.index]
sort = $data_skills[@item.id_skill]
unless target.skills.include?(sort) # S'il ne connait déjà pas le sort
$game_party.consume_item(@item)
@item_window.draw_item(@item_window.index)
target.learn_skill(@item.id_skill)
text = TEXT_APPRIS
Audio.se_play(SOUND_PATH, SOUND_VOLUME, SOUND_TEMPO)
else
text = TEXT_DEJA_APPRIS
Sound.play_buzzer
end
# On affiche le texte si on affiche la fenêtre
if AFFICHER_FENETRE
text = text.sub("/cible",target.name)
text = text.sub("/sort",sort.name)
@info_skill_window.width = (text.length * TAILLE_FENETRE_GROS) + TAILLE_FENETRE_PETIT
@info_skill_window.create_contents
@info_skill_window.set_text(text)
@info_skill_window.visible = true
end
else
bsl_lso_determine_target
end #end alias
end # End determine_target
end # End Class
#==============================================================================
# **Window_InfoSkill_LSO
#------------------------------------------------------------------------------
# Gère la fenêtre d'information d'apprentissage du sort.
#==============================================================================
class Window_InfoSkill_LSO < Window_Base
#--------------------------------------------------------------------------
# * Initialize
#--------------------------------------------------------------------------
def initialize
super(0,0,300,56)
self.x = (Graphics.width - self.width) / 2
self.y = (Graphics.height - self.height) / 2
self.visible = false
self.opacity = 0
self.contents_opacity =0
self.z = 100000
end
#--------------------------------------------------------------------------
# * Affiche du texte dans la fenêtre, en centré
#--------------------------------------------------------------------------
def set_text(text)
self.contents.draw_text(0,0,contents.width,WLH,text,1)
end
end
#==============================================================================
# **RPG::Item
#------------------------------------------------------------------------------
# Gère toute la BBD, les objets en particuliers
#==============================================================================
class RPG::Item
include BSL::LSO
#--------------------------------------------------------------------------
# * Renvoie l'ID du sort appris
#--------------------------------------------------------------------------
def id_skill
id_sort = 0
@note.split(/[\r\n]+/).each { |line|
case line
when TAG_SORT
id_sort = $1.to_i
end}
return id_sort
end
end
Installation :
Placez le au dessus de main, et en dessous de tout les scripts modifiant l'inventaire ou autres.
Utilisation :
- Code:
Il suffit de mettre dans la note de votre objet :
# <sort appris x>
# Où x est l'ID du sort que vous voulez apprendre. Jetez un coup d'œil à la configuration
# du module pour personnaliser la fenêtre qui s'affiche.
Enjoy =)
- Shadow of LifeMembre
- Nombre de messages : 870
Age : 28
Localisation : Joyeux. Comment ça c'est pas la bonne case ?
Distinction : Artiste de la flagornerie.
Porte parole du Ô grand Voilà voilà.
Président du club des masochistes du forum
Fake Gentleman
Soumis ^^
Date d'inscription : 13/09/2009
Re: Apprendre un sort via un objet
Sam 4 Sep 2010 - 11:15
Wahooo !
Et personne ne l'a vu celui-là ? Oo
C'est un petit bijou !
Si il marche bien évidemment ...
Merci pour ce script Blockade ! =D
Et personne ne l'a vu celui-là ? Oo
C'est un petit bijou !
Si il marche bien évidemment ...
Merci pour ce script Blockade ! =D
- Dudu'Staffeux retraité
- Nombre de messages : 2060
Age : 33
Distinction : Apprenti KGB-boy en avenir
[Coco' ]
Hamsterphile de service ^^
[Balby' le Fake]
Grand prof de la MA
[Skillo]
Ce grand programmateur, mon coeur, ma vie ! [Hamu']
Date d'inscription : 22/06/2009
Re: Apprendre un sort via un objet
Sam 4 Sep 2010 - 11:39
très joli p'tit script
bien jouer Blockade
mais j'ai trouver un bug^^
tu as oublier de mettre ton alias dans la méthode
bien jouer Blockade
mais j'ai trouver un bug^^
Blocade a écrit:
- Code:
#--------------------------------------------------------------------------
# * alias_method : terminate
#--------------------------------------------------------------------------
alias bsl_lso_terminate terminate
def terminate
@info_skill_window.dispose
end
tu as oublier de mettre ton alias dans la méthode
- Code:
#--------------------------------------------------------------------------
# * alias_method : terminate
#--------------------------------------------------------------------------
alias bsl_lso_terminate terminate
def terminate
bsl_lso_terminat
@info_skill_window.dispose
end
- BlockadeMembre
- Nombre de messages : 194
Age : 32
Distinction : aucune
Date d'inscription : 06/09/2008
Re: Apprendre un sort via un objet
Sam 4 Sep 2010 - 11:44
Oh m***e la c***e xD
Merci ! =)
Merci ! =)
- JessStaffeux retraité
- Nombre de messages : 855
Age : 33
Localisation : Ma drums ou mon ordi !
Distinction : Dieu de Kipatord
Date d'inscription : 04/05/2008
Re: Apprendre un sort via un objet
Sam 4 Sep 2010 - 12:15
Bah justement je sais pas si tu as testé Kipatord au temps où la demo était encore dispo, mais j'ai eu beaucoup de joueurs/testeurs qui m'ont rapporté des bugs par apport au système d'apprentissage de compétence.
Parce que c'est vrai qu'à la longue, tout configurer soi-même ça plombe grave le temps et le projet au final ! Donc merci beaucoup pour cette création et son partage ! S'il était arrivé plus tôt j'aurais déjà fini mon projet si ça s'trouve. XD
Merci
Parce que c'est vrai qu'à la longue, tout configurer soi-même ça plombe grave le temps et le projet au final ! Donc merci beaucoup pour cette création et son partage ! S'il était arrivé plus tôt j'aurais déjà fini mon projet si ça s'trouve. XD
Merci
- Black'Membre
- Nombre de messages : 351
Localisation : Far, far away
Distinction : aucune
Date d'inscription : 19/04/2010
Re: Apprendre un sort via un objet
Sam 4 Sep 2010 - 13:00
Superbe script !! Justement ce qu'il fallait à Kirby !! Merci du partage,
- SkilloStaffeux retraité
- Nombre de messages : 526
Age : 35
Localisation : Rennes
Distinction : J'aime ce gars
(by Coco')
Scripteur apprenti, futur Berka !
(par Tretian)
Membre anonyme de la communauté, caché derrière son PC
(???)
super prof de script
[Dudu']
Résident permanent de la Chat Box
[Autoproclamé]
Adepte du XDDD [Yak' ]
Fanatique hystérique de Raymond le français [Un connu]
Date d'inscription : 19/01/2008
Re: Apprendre un sort via un objet
Sam 4 Sep 2010 - 22:45
J'adore c'est vraiment pratique et ça me fais pensé qu'un jour faudrait que j'apprenne a faire ce genre d'expression :
Car avec les notes on peut faire vraiment plein de choses.
@note.split(/[\r\n]+/).each { |line|
case line
when TAG_SORT
id_sort = $1.to_i
end}
Car avec les notes on peut faire vraiment plein de choses.
- BlockadeMembre
- Nombre de messages : 194
Age : 32
Distinction : aucune
Date d'inscription : 06/09/2008
Re: Apprendre un sort via un objet
Dim 5 Sep 2010 - 14:58
Ouais mais y'a plus simple pour récupérer les infos de la note ! (Regarde dans mon script d'invocations v2 par exemple !) Mais ca marche que pour récuperer une info/ligne, après ca deviens le bordel.
Sinon pour apprendre les regxp j'ai ca qui traine dans mes marques-pages :
https://rpgmakervx.1fr1.net/problemes-resolus-et-problemes-inactifs-f53/résolu-aide-pour-comprendre-ruby-t7668.htm
J'ai appris comme ca et en regardant les script de KGC et Yanfly =) Bon courage !
Sinon pour apprendre les regxp j'ai ca qui traine dans mes marques-pages :
https://rpgmakervx.1fr1.net/problemes-resolus-et-problemes-inactifs-f53/résolu-aide-pour-comprendre-ruby-t7668.htm
J'ai appris comme ca et en regardant les script de KGC et Yanfly =) Bon courage !
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum