2 résultats trouvés pour -------------------------------------------------------------------------------
- Aujourd'hui
- le Dim 14 Juin 2020 - 16:01
- Rechercher dans: Ace
- Sujet: Banque de Tim
- Réponses: 0
- Vues: 743
Banque de Tim
Bonjour tout le monde !!!Voici un petit script perso pour créer une banque.
Actuellement la première version du script permet de créer une banque un compte épargne où on peut déposer et retirer de l'argent.
Le compte permet aussi d'avoir des intérêts automatiquement ajoutés en fonction de la durée de jeu, pas besoin d'avoir un système de gestion du temps, le script fonctionne en autonomie de ce côté là .
Et bien entendu, j'ai rajouté la possibilité d'avoir des frais bancaires lors de chaque dépôt.
Je suis preneur de toutes remarques ou suggestions d'amélioration sachant que j'ai déjà quelques petites idées pour créer une nouvelle version.
- script de banque:
- =begin
--------------------------------------------------------------------------------
***********
* ------- *
* BANQUE Â *
* ------- *
***********
AUTEUR : Tim
VERSION : 1
DATE : 13/06/2020
--------------------------------------------------------------------------------
Objectif :
Créer une banque personnalisable qui permet le dépôt (avec ou sans frais bancaire), le retrait d'espèces et le calcul d'intêret autmotique à chaque passage à la banque en fonction du temps de jeu
--------------------------------------------------------------------------------
Utilisation :
_ Copier le script dans l'onglet materials
_ Initiliser les variables $banque_or_possede $banque_derniere_visite $banque_interets_totaux à zéro avant le premier lancement de la scène
_ Personnaliser les constantes presentes dans le module Module_Banque
_ Faites un appel de script a partir d'un evenement du jeu
SceneManager.call(Tim_Scene_Banque)
--------------------------------------------------------------------------------
Personnalisations supplementaires en modifiant le script manuellement :
_ Modifier le vocable
> Remplacer les termes a modifier dans 3)3) "Taux d'intérêt horaire : ", "Frais bancaire : " et " % par dépôt"
> Remplacer les termes a modifier dans 3)4) "En dépôt : " et "Intérêts totaux : "
> Remplacer les termes a modifier dans 3)5) "Déposer", "Retirer" et "Sortir"
--------------------------------------------------------------------------------
Restrictions :
_ resolution native 544*416
_ rendre obligatoirement persistante les variables $banque_or_possede $banque_derniere_visite et $banque_interets_totaux en les intégrant à la sauvegarde du jeu
_ usage de 4 variables globales $banque_montant et $banque_or_possede $banque_derniere_visite $banque_interets_totaux
--------------------------------------------------------------------------------
Appels de script :
SceneManager.call(Tim_Scene_Banque)
--------------------------------------------------------------------------------
Descriptif des constantes personnalisables :
BANQUE_NOM == nom de la banque identique pour toutes les agences (40 caractères maximum)
BANQUE_NOM_COMPTE == nom du compte bancaire unique (20 caractères maximum)
BANQUE_TAUX == taux d'intérêt fourni toutes les heures - 0 signifie aucun intérêt Â
BANQUE_FRAIS == pourcentage des frais prélevé sur chaque dépôt
--------------------------------------------------------------------------------
Version 1
_ Script d'origine
--------------------------------------------------------------------------------
Squelette du script :
1) Introduction
1) Titre - Auteur - Version - Date de creation
2) Objectif
3) Utilisation
4) Personnalisations supplementaires dans le corps du script
5) Restrictions
6) Appel de script
7) Descritif des variables
Historique des versions
9) Squelette du script
2) Creation du module contenant toutes les constantes personnalisable
3) Creation des classes de fenetres
1) Classe creation fenetre pour le nom de la banque
2) Classe creation fenetre pour afficher l'or possede sur soi
3) Classe creation fenetre pour afficher le nom de compte et le taux d'interet horaire
4) Classe creation fenetre pour afficher l'or en dépôt et les intérêts accumulés
5) Classe creation fenetre pour déposer ou retirer de l'or et quitter
6) Classe creation fenetre pour choisir le montant
4) Creation de la scene qui gere la banque
--------------------------------------------------------------------------------
=end
#-------------------------------------------------------------------------------
#
# 2) Creation du module contenant tous les parametres personnalisables
#
#-------------------------------------------------------------------------------
module Module_Banque
BANQUE_NOM = "Nom de la banque" # 40 caracteres maximum
BANQUE_NOM_COMPTE = "Nom du compte bancaire" # 20 caracteres maximum
BANQUE_TAUX = 3 # pourcentage sans le signe %
BANQUE_FRAIS = 1 # pourcentage sans le signe % (doit être strictement inférieur à 100)
end
#-------------------------------------------------------------------------------
#
# 3) Creation des classes pour les differentes fenetres de la banque (resolution 544*416)
#
#-------------------------------------------------------------------------------
# 3) 1) Classe creation fenetre pour le nom de la banque
#-------------------------------------------------------------------------------
class Window_Banque_Nom < Window_Base
def initialize
super(0, 0, 544, 100) # x, y, largeur, hauteur
nom_banque
end
def nom_banque
contents.clear
contents.draw_text(100, 0, 374, 80, Module_Banque::BANQUE_NOM) # x, y ,largeur du texte, hauteur, texte a afficher)
end
end
#-------------------------------------------------------------------------------
# 3) 2) Classe creation fenetre pour afficher l'or possede sur soi
#-------------------------------------------------------------------------------
class Window_Banque_Gold < Window_Base
# Initialise la class
def initialize
super(272, 316, 272, 100) # x, y, largeur, hauteur
refresh
end
# Renvoi l'or detenu
def refresh
contents.clear # Supprime le contenu
draw_currency_value($game_party.gold , Vocab::currency_unit, 4, 16, contents.width - 90) # affiche l'or detenu
end
# Utilise le vocable pour les PO
def currency_unit
Vocab::currency_unit
end
end
#-------------------------------------------------------------------------------
# 3) 3) Classe creation fenetre pour afficher le nom de compte et le taux d'interet horaire
#-------------------------------------------------------------------------------
class Window_Banque_Compte_courant < Window_Base
# Initialise la class
def initialize
super(0, 100, 272, 216) # x, y, largeur, hauteur
refresh
end
#Renvoi l'affichage textuel
def refresh
contents.clear # Supprime le contenu
contents.draw_text(27, 0, 218, 72, Module_Banque::BANQUE_NOM_COMPTE) # x, y ,largeur du texte, hauteur, texte a afficher)
contents.draw_text(27, 72, 218, 72, "Taux d'intérêt horaire : " + Module_Banque::BANQUE_TAUX.to_s + " %")
  contents.draw_text(27, 144, 218, 72, "Frais bancaire : " + Module_Banque::BANQUE_FRAIS.to_s + " % par dépôt")
end
end
#-------------------------------------------------------------------------------
# 3) 4) Classe creation fenetre pour afficher l'or en dépôt et les intérêts accumulés
#-------------------------------------------------------------------------------
class Window_Banque_Description_Avoirs < Window_Base
# Initialise la class
def initialize
super(272, 100, 272, 216) # x, y, largeur, hauteur
refresh
end
# Renvoi l'affichage textuel
def refresh
arrondir_affichage
contents.clear # Supprime le contenu
contents.draw_text(27, 0, 218, 108, "En dépôt : " + @banque_or_possede.to_s + " " + Vocab::currency_unit) # x, y ,largeur du texte, hauteur, texte a afficher)
contents.draw_text(27, 108, 218, 108, "Intérêts totaux : " + @banque_interets_totaux.to_s + " " + Vocab::currency_unit)
end
# Permet d'arrondir les valeur uniquement pour l'affichage mais maintien les valeurs réelles en mémoire
def arrondir_affichage
@banque_or_possede = $banque_or_possede.round
@banque_interets_totaux = $banque_interets_totaux.round
end
end
#-------------------------------------------------------------------------------
# 3) 5) Classe creation fenetre pour déposer ou retirer de l'or et quitter
#-------------------------------------------------------------------------------
class Window_Banque_choix < Window_Command
# Initialise la classe
def initialize
super(0, 316) # (x, y)
end
# Definis la largeur de la fenetre
def window_width
return 272
end
# Definis la hauteur de la fenetre
def window_height
return 100
end
# Menu de confirmation
def make_command_list
add_command("Déposer", :banque_dépôt)
add_command("Retirer", :banque_retrait)
add_command("Sortir", :banque_sortir)
end
end
#-------------------------------------------------------------------------------
# 3) 6) Classe creation fenetre pour choisir le montant
#-------------------------------------------------------------------------------
class Windows_Banque_montant < Window_Selectable
# Initialise la classe
def initialize(montant_max)
super(0, 316,272,100)
@montant_max = montant_max
$banque_montant = @montant_max / 2
$banque_montant = $banque_montant.round
refresh
end
def update
super
refresh
end
def refresh
contents.clear
contents.draw_text(50, 0, 136, 100, $banque_montant,1)
$banque_montant = $banque_montant + 1 if Input.trigger?(:UP) && $banque_montant < @montant_max
$banque_montant = $banque_montant - 1 if Input.trigger?(:DOWN) && $banque_montant > 0
$banque_montant = $banque_montant - 100 if Input.trigger?(:LEFT) && $banque_montant > 100
$banque_montant = $banque_montant + 100 if Input.trigger?(:RIGHT) && $banque_montant < (@montant_max - 99)
end
end
#-------------------------------------------------------------------------------
#
# 4) Creation de la scene qui gere la banque
#
#-------------------------------------------------------------------------------
class Tim_Scene_Banque < Scene_MenuBase
# Initialise la scene
def start
super
ajout_interet
creation_fenetre_banque
end
# Calcule et ajoute les interets
def ajout_interet
@duree_ecoulee = $game_system.playtime - $banque_derniere_visite
@interet = $banque_or_possede * @duree_ecoulee / 3600 * Module_Banque::BANQUE_TAUX / 100
$banque_or_possede += @interet
$banque_interets_totaux += @interet
$banque_derniere_visite = $game_system.playtime
end
# Cree les fenetres de la banque
def creation_fenetre_banque
@fenetre_nom_banque = Window_Banque_Nom.new
@fenetre_or_possede = Window_Banque_Gold.new
@fenetre_compte = Window_Banque_Compte_courant.new
@fenetre_avoirs = Window_Banque_Description_Avoirs.new
@fenetre_choix = Window_Banque_choix.new
@fenetre_choix.set_handler(:banque_dépôt, method(:command_banque_depot))
@fenetre_choix.set_handler(:banque_retrait, method(:command_banque_retrait))
@fenetre_choix.set_handler(:banque_sortir, method(:command_banque_sortir))
end
# Permet de quitter la banque
def command_banque_sortir
return_scene
end
# Cree les actions en cas de choix de faire un dépôt
def command_banque_depot
@fenetre_montant = Windows_Banque_montant.new($game_party.gold)
@fenetre_montant.viewport = @viewport
@fenetre_montant.set_handler(:ok, method(:depot))
@fenetre_montant.set_handler(:cancel, method(:return_scene))
@fenetre_montant.activate
end
# Creer les action après avoir validé le montant du dépot
def depot
@fenetre_montant.close
$banque_or_possede = $banque_or_possede + $banque_montant * ( 1 - Module_Banque::BANQUE_FRAIS / 100)
$game_party.lose_gold($banque_montant)
command_banque_sortir
end
# Cree les actions en cas de choix de faire un retrait
def command_banque_retrait
@fenetre_montant = Windows_Banque_montant.new($banque_or_possede)
@fenetre_montant.viewport = @viewport
@fenetre_montant.set_handler(:ok, method(:retrait))
@fenetre_montant.set_handler(:cancel, method(:return_scene))
@fenetre_montant.activate
end
# Creer les action après avoir validé le montant du retrait
def retrait
@fenetre_montant.close
$banque_or_possede -= $banque_montant
$game_party.gain_gold($banque_montant)
command_banque_sortir
end
end
Il vous faudra aussi un petit script pour rendre persistantes et sauvegardables certaines variables.
Je vous laisse ci-dessous un script qui permet d'ajouter des variables à vos sauvegardes
- script données persistantes:
- module DataManager
#--------------------------------------------------------------------------
# * Create Game Objects
#--------------------------------------------------------------------------
class << self
alias create_game_objects_tablelist_base create_game_objects
end
def self.create_game_objects
create_game_objects_tablelist_base
$banque_or_possede
$banque_derniere_visite
$banque_interets_totaux
end
#--------------------------------------------------------------------------
# * Create Save Contents
#--------------------------------------------------------------------------
class << self
alias make_save_contents_tablelist_base make_save_contents
end
def self.make_save_contents
contents = make_save_contents_tablelist_base
contents[0] = $banque_or_possede
contents[1] = $banque_derniere_visite
contents[2] = $banque_interets_totaux
contents
end
#--------------------------------------------------------------------------
# * Extract Save Contents
#--------------------------------------------------------------------------
class << self
alias extract_save_contents_tablelist_base extract_save_contents
end
def self.extract_save_contents(contents)
extract_save_contents_tablelist_base(contents)
$banque_or_possede = contents[0]
$banque_derniere_visite = contents[1]
$banque_interets_totaux = contents[2]
end
end
- le Mer 3 Juin 2020 - 15:05
- Rechercher dans: Ace
- Sujet: Auberge de Tim
- Réponses: 6
- Vues: 1176
Auberge de Tim
EDIT : Version 3 à jour ci dessousAprès quelques années voici la mise à jour de mon script car je me suis lancé dans un nouveau projet.
Je viens de le passé en version 3.
Principale nouveauté : la possibilité de créer autant d'auberge personnalisée que l'on souhaite avec un seul et même script.
Il est encore optimisable mais j'en suis plutôt fier.
- Spoiler:
=begin
--------------------------------------------------------------------------------
***********
* ------- *
* AUBERGE *
* ------- *
***********
AUTEUR : Tim
VERSION : 3
DATE : 29/05/2020
--------------------------------------------------------------------------------
Objectif : creer une auberge personnalisable avec la possibilite de choisir
4 types de chambres differentes avec chacune leur prix et leur catégorie de soin,
des valeurs sont deja indiquees par defaut
--------------------------------------------------------------------------------
Utilisation :
_ Copier le script dans l'onglet materials
_ Choisir une variable IG temporaire qui permettra de renvoyer une valeur en sortie de script
_ Personnaliser les constantes presentes dans le module Module_Auberge
_ Faites un appel de script a partir d'un evenement du jeu pour l'auberge avec index_auberge correspond au rang de votre auberge dans le tableau des auberge (attention commence par 0)
SceneManager.call(Tim_Scene_Auberge)
SceneManager.scene.indexation_auberge(index_auberge)
_ Le script renvoi à la fin du jeu une valeur stockee dans la variable IG que vous aurez precise
_ Renvoi 0 en cas d'annulation
_ Renvoi 1 en cas de nuitee dans la chambre 1
_ Renvoi 2 en cas de nuitee dans la chambre 2
_ Renvoi 3 en cas de nuitee dans la chambre 3
_ Renvoi 4 en cas de nuitee dans la chambre 4
_ Effectuer les actions de teleportation, son, dialogue ou ce que vous voulez en fonction de la
valeur renvoyee a la suite de l'evenement qui a appele le script (facultatif)
--------------------------------------------------------------------------------
Personnalisations supplementaires en modifiant le script manuellement:
_ Avoir plusieurs auberges differentes :
> Créer une entré supplémentaire dans chaque tableau du module auberge en 2)
_ Modifier le vocable prix et description
> Remplacer les termes a modifier dans 3)3) auberge_chambre_selectionnee(chambre) sur chaque ligne ou il apparait
_ Modifier le vocable sortir de l'auberge
> Remplacer la phrase a modifier dans liste_commande 3)4)
_ Modifier le vocable je dors ici et annuler
> Remplacer les phrases a modifier dans liste_commande 3)5)
--------------------------------------------------------------------------------
Restrictions :
_ resolution native 544*416
_ verifier les restrictions concernant les nombres de caracteres dans les parametres
_ tous les nombres doivent etre des entiers sans unite et sans signe
_ vous devez obligatoirement dediee une variable IG pour le script tout du moins temporairement, attention cette variable sera ecrasee a chaque debut d'appel de script
--------------------------------------------------------------------------------
Appels de script :
SceneManager.call(Tim_Scene_Auberge)
SceneManager.scene.indexation_auberge(index_auberge)
--------------------------------------------------------------------------------
Descriptif des constantes personnalisables :
auberge_nom == nom de l'auberge ( 21 caracteres maximum)
auberge_prix_chambre_1 == prix de la chambre 1 (mettre le prix sans l'unité 10 PO/gils/euros s'ecrit 10 le script utilise la monnaie inscrite dans votre vocab)
auberge_prix_chambre_2 == prix de la chambre 2
auberge_prix_chambre_3 == prix de la chambre 3
auberge_prix_chambre_4 == prix de la chambre 4
auberge_recup_1 == pourcentage de sante et magie recuperee dans la chambre 1 10% s'ecrit 10
auberge_recup_2 == pourcentage de sante et magie recuperee dans la chambre 2
auberge_recup_3 == pourcentage de sante et magie recuperee dans la chambre 3
auberge_recup_4 == pourcentage de sante et magie recuperee dans la chambre 4
auberge_chambre_1 == nom de la chambre 1 (40 caracteres maximum)
auberge_chambre_2 == nom de la chambre 2
auberge_chambre_3 == nom de la chambre 3
auberge_chambre_4 == nom de la chambre 4
auberge_description_chambre_1_L1 == description de la chambre 1 première ligne (39 caractères maximum par ligne)
auberge_description_chambre_1_L2 == description de la chambre 1 deuxième ligne (39 caractères maximum par ligne)
auberge_description_chambre_2_L1 == description de la chambre 2
auberge_description_chambre_2_L2 == description de la chambre 2
auberge_description_chambre_3_L1 == description de la chambre 3
auberge_description_chambre_3_L2 == description de la chambre 3
auberge_description_chambre_4_L1 == description de la chambre 4
auberge_description_chambre_4_L2 == description de la chambre 4
nombre_heros == nombre de heros maximum dans votre jeu
index_temp == numero d'une variable IG qui servira de variable temporaire
--------------------------------------------------------------------------------
Version 1
_ Scirpt d'origine
Version 1.1 (remerciement a tonyryu):
_ Optimisation : class Window_Auberge_Gold avec la methode refresh
_ Optimisation : class Window_Description_Auberge avec la methode refresh
_ Optimisation : scene Tim_Scene_Auberge
_ Remplacement d'une variable par un appel de method getChambe
Version 2
_ Nouvelle foctionnalité : desactivation des chambres dans l'appel de script
_ Optimisation : class Window_Chambre_Auberge suppression method liste_commande
_ Optimisation : class Window_Validation_Nuitee_Auberge suppression method liste_commande
_ Correction orthographique
Version 2.1
_ Correction mise en page
Version 3
_ Nouvelle fonctionnalité : Création de plusieurs auberges différentes dans le même script
--------------------------------------------------------------------------------
Squelette du script :
1) Introduction
1) Titre - Auteur - Version - Date de creation
2) Objectif
3) Utilisation
4) Personnalisations supplementaires dans le corps du script
5) Restrictions
6) Appel de script
7) Descritif des variables
 Historique des versions
9) Squelette du script
2) Creation du module contenant toutes les constantes personnalisable
3) Creation des classes de fenetres
1) Classe creation fenetre pour le nom de l'auberge
2) Classe creation fenetre pour afficher l'or possedee
3) Classe creation fenetre pour la description de la chambre
4) Classe creation fenetre pour le choix de la chambre
5) Classe creation fenetre pour valider ou annuler la nuitee
4) Creation de la scene qui gere auberge
--------------------------------------------------------------------------------
=end
#-------------------------------------------------------------------------------
#
# 2) Creation du module contenant tous les parametres personnalisables
#
#-------------------------------------------------------------------------------
module Module_Auberge
AUBERGE_NOM = ["Auberge du soleil", "Auberge de la lune"] #"Nom de l'auberge" # 21 caracteres maximum
AUBERGE_PRIX_CHAMBRE_1 = [100, 1000] # entier uniquement sans le symbole de la monnaie (100 correspond a 10O PO,gil,euros,... )
AUBERGE_PRIX_CHAMBRE_2 = [150, 1500]
AUBERGE_PRIX_CHAMBRE_3 = [200, 2000]
AUBERGE_PRIX_CHAMBRE_4 = [250, 2500]
AUBERGE_RECUP_1 = [0, 70] # entier uniquement, pourcentage compris entre 1 et 100 sans le symbole % ( 25 correspond a 25% ) - 0 signifie chambre non disponible
AUBERGE_RECUP_2 = [50, 80]
AUBERGE_RECUP_3 = [75, 90]
AUBERGE_RECUP_4 = [100, 100]
AUBERGE_CHAMBRE_1 = ["chambre 1", "chambre test1"] # 40 caracteres maximum
AUBERGE_CHAMBRE_2 = ["chambre 2", "chambre test2"]
AUBERGE_CHAMBRE_3 = ["chambre 3", "chambre test3"]
AUBERGE_CHAMBRE_4 = ["chambre 4", "chambre test4"]
AUBERGE_DESCRIPTION_CHAMBRE_1_L1 = ["description chambre 1 ligne 1","description chambre 1 ligne 1"] # 39 caractères maximum par ligne
AUBERGE_DESCRIPTION_CHAMBRE_1_L2 = ["description chambre 1 ligne 2","description chambre 1 ligne 1"]
AUBERGE_DESCRIPTION_CHAMBRE_2_L1 = ["description chambre 2 ligne 1","description chambre 1 ligne 1"]
AUBERGE_DESCRIPTION_CHAMBRE_2_L2 = ["description chambre 2 ligne 2","description chambre 1 ligne 1"]
AUBERGE_DESCRIPTION_CHAMBRE_3_L1 = ["description chambre 3 ligne 1","description chambre 1 ligne 1"]
AUBERGE_DESCRIPTION_CHAMBRE_3_L2 = ["description chambre 3 ligne 2","description chambre 1 ligne 1"]
AUBERGE_DESCRIPTION_CHAMBRE_4_L1 = ["description chambre 4 ligne 1","description chambre 1 ligne 1"]
AUBERGE_DESCRIPTION_CHAMBRE_4_L2 = ["description chambre 4 ligne 2","description chambre 1 ligne 1"]
AUBERGE_NOMBRE_HEROS = 8 # entier uniquement
AUBERGE_INDEX_TEMP = 1 # entier uniquement qui correspond au numero d'index de la variable IG
end
#-------------------------------------------------------------------------------
#
# 3) Creation des classes pour les differentes fenetres de l'auberge (resolution 544*416)
#
#-------------------------------------------------------------------------------
# 3) 1) Classe creation fenetre pour le nom de l'auberge
#-------------------------------------------------------------------------------
class Window_Nom_Auberge < Window_Base
def initialize(index_auberge)
super(0, 0, 363, 83) # x, y, largeur, hauteur
@index_auberge = index_auberge
auberge_titre
end
def auberge_titre
contents.clear
contents.draw_text(116, 10, 130, 42, Module_Auberge::AUBERGE_NOM[@index_auberge]) # x, y ,largeur du texte, hauteur, texte a afficher)
end
end
#-------------------------------------------------------------------------------
# 3) 2) Classe creation fenetre pour afficher l'or possedee
#-------------------------------------------------------------------------------
class Window_Auberge_Gold < Window_Base
# Initialise la class
def initialize
super(363, 0, 181, 83)
refresh
end
# Renvoi l'or detenu
def refresh
contents.clear # Supprime le contenu
draw_currency_value($game_party.gold , Vocab::currency_unit, 4, 16, contents.width - Â # affiche l'or detenu
end
# Utilise le vocable pour les PO
def currency_unit
Vocab::currency_unit
end
end
#-------------------------------------------------------------------------------
# 3) 3) Classe creation fenetre pour la description de la chambre
#-------------------------------------------------------------------------------
class Window_Description_Auberge < Window_Base
# Initialise la class avec le parametre chambre qui permet de savoir quelle chambre a ete selectionnee
def initialize(index_auberge)
@index_auberge = index_auberge
super(272, 83, 272, 249) # (x, y, largeur, hauteur)
self.visible = false # Rend invisible la fenetre de description
@chambre = 0 # Initialise le numero de la chambre choisie
end
# Affiche le prix et la description en fonction de la chambre selectionnee
def auberge_chambre_selectionnee(chambre)
@chambre = chambre # Affecte le numero de la chambre choisie
refresh
end
def refresh
contents.clear
self.visible = true # Rend invisible la fenetre de description apres selection de la chambre
tabDescription = [] # creer un tableau vide qui contiendra la description complete des chambres
tabDescription[0] = [Module_AubergeAUBERGE_PRIX_CHAMBRE_1[@index_auberge].to_s, Module_Auberge::AUBERGE_DESCRIPTION_CHAMBRE_1_L1[@index_auberge], Module_Auberge::AUBERGE_DESCRIPTION_CHAMBRE_1_L2[@index_auberge]] # Description complete de la chambre 1
tabDescription[1] = [Module_AubergeAUBERGE_PRIX_CHAMBRE_2[@index_auberge].to_s, Module_Auberge::AUBERGE_DESCRIPTION_CHAMBRE_2_L1[@index_auberge], Module_Auberge::AUBERGE_DESCRIPTION_CHAMBRE_2_L2[@index_auberge]] # Description complete de la chambre 2
tabDescription[2] = [Module_AubergeAUBERGE_PRIX_CHAMBRE_3[@index_auberge].to_s, Module_Auberge::AUBERGE_DESCRIPTION_CHAMBRE_3_L1[@index_auberge], Module_Auberge::AUBERGE_DESCRIPTION_CHAMBRE_3_L2[@index_auberge]] # Description complete de la chambre 3
tabDescription[3] = [Module_AubergeAUBERGE_PRIX_CHAMBRE_4[@index_auberge].to_s, Module_Auberge::AUBERGE_DESCRIPTION_CHAMBRE_4_L1[@index_auberge], Module_Auberge::AUBERGE_DESCRIPTION_CHAMBRE_4_L2[@index_auberge]] # Description complete de la chambre 4
contents.draw_text(10, 10, 130, 42, "Prix : " + tabDescription[(@chambre - 1)][0] + " " + Vocab::currency_unit) # x, y ,largeur du texte, hauteur, texte a afficher (afiche le prix de la chambre selectionnee)
contents.draw_text(10, 62, 130, 42, "Description : ") # x, y ,largeur du texte, hauteur, texte a afficher
contents.draw_text(10, 108, 252, 42, tabDescription[@chambre - 1][1]) # x, y ,largeur du texte, hauteur, texte a afficher ( premiere ligne description)
contents.draw_text(10, 150, 252, 42, tabDescription[@chambre - 1][2]) # x, y ,largeur du texte, hauteur, texte a afficher ( deuxieme ligne description)
end
# Retourne la chambre selectionnee ou 0 si aucune chambre selectionnee
def getChambre
return @chambre
end
end
#-------------------------------------------------------------------------------
# 3) 4) Classe creation fenetre pour le choix de la chambre
#-------------------------------------------------------------------------------
class Window_Chambre_Auberge < Window_Command
# Initialise la classe
def initialize(index_auberge)
@index_auberge = index_auberge
verifiaction_chambre_dispo(index_auberge)
super(0, 83) # (x, y)
end
# Definis la largeur de la fenetre
def window_width
return 272
end
# Definis la hauteur de la fenetre
def window_height
return 333
end
# Vérifie si la chambre est disponible dans l'auberge
def verifiaction_chambre_dispo(index_auberge)
if Module_Auberge::AUBERGE_RECUP_1[index_auberge] > 0
@chambre1_dispo = true
else
@chambre1_dispo = false
end
if Module_Auberge::AUBERGE_RECUP_2[index_auberge] > 0
@chambre2_dispo = true
else
@chambre2_dispo = false
end
if Module_Auberge::AUBERGE_RECUP_3[index_auberge] > 0
@chambre3_dispo = true
else
@chambre3_dispo = false
end
if Module_Auberge::AUBERGE_RECUP_4[index_auberge] > 0
@chambre4_dispo = true
else
@chambre4_dispo = false
end
end
# Active ou desactive les chambre dans le menu
def make_command_list
add_command(Module_Auberge::AUBERGE_CHAMBRE_1[@index_auberge], :auberge_chambre_1, @chambre1_dispo)
add_command(Module_Auberge::AUBERGE_CHAMBRE_2[@index_auberge], :auberge_chambre_2, @chambre2_dispo)
add_command(Module_Auberge::AUBERGE_CHAMBRE_3[@index_auberge], :auberge_chambre_3, @chambre3_dispo)
add_command(Module_Auberge::AUBERGE_CHAMBRE_4[@index_auberge], :auberge_chambre_4, @chambre4_dispo)
add_command("Sortir de l'auberge", :auberge_sortir)
end
end
#-------------------------------------------------------------------------------
# 3) 5) Classe creation fenetre pour valider ou annuler la nuitee
#-------------------------------------------------------------------------------
class Window_Validation_Nuitee_Auberge < Window_Command
# Initialise la classe
def initialize
super(272, 332) # (x, y)
end
# Definis la largeur de la fenetre
def window_width
return 272
end
# Definis la hauteur de la fenetre
def window_height
return 84
end
# Menu de confirmation
def make_command_list
add_command("Je dors ici", :auberge_nuitee_validee)
add_command("Annuler", :auberge_nuitee_annulee)
end
end
#-------------------------------------------------------------------------------
#
# 4) Creation de la scene qui gere auberge
#
#-------------------------------------------------------------------------------
class Tim_Scene_Auberge < Scene_MenuBase
# Initialise la scene
def start
super
$game_variables[Module_AubergeAUBERGE_INDEX_TEMP] = 0 # Ne pas toucher, initialise la valeur de la variable IG
creation_fenetre_auberge
end
#Attribution de l'index pour choisir l'auberge
def indexation_auberge(index_auberge)
@index_auberge = index_auberge
end
# Cree les fenetres de l'auberge
def creation_fenetre_auberge
@fenetre_nom_auberge = Window_Nom_Auberge.new(@index_auberge)
@fenetre_or_possede = Window_Auberge_Gold.new
@fenetre_chambre = Window_Chambre_Auberge.new(@index_auberge)
@fenetre_chambre.set_handler(:auberge_chambre_1, method(:command_auberge_chambre_1))
@fenetre_chambre.set_handler(:auberge_chambre_2, method(:command_auberge_chambre_2))
@fenetre_chambre.set_handler(:auberge_chambre_3, method(:command_auberge_chambre_3))
@fenetre_chambre.set_handler(:auberge_chambre_4, method(:command_auberge_chambre_4))
@fenetre_chambre.set_handler(:auberge_sortir, method(:command_auberge_sortir))
@fenetre_description_auberge = Window_Description_Auberge.new(@index_auberge)
@fenetre_validation_auberge = Window_Validation_Nuitee_Auberge.new
@fenetre_validation_auberge.hide
@fenetre_validation_auberge.set_handler(:auberge_nuitee_validee, method(:command_auberge_nuitee_validee))
@fenetre_validation_auberge.set_handler(:auberge_nuitee_annulee, method(:command_auberge_nuitee_annulee))
end
# Permet de quitter l'auberge
def command_auberge_sortir
return_scene
end
# Cree les actions en cas de choix de la chambre 1
def command_auberge_chambre_1
@fenetre_description_auberge.auberge_chambre_selectionnee(1)
@fenetre_validation_auberge.show
end
# Creer les actions en cas de choix de la chambre 2
def command_auberge_chambre_2
@fenetre_description_auberge.auberge_chambre_selectionnee(2)
@fenetre_validation_auberge.show
end
# Creer les actions en cas de choix de la chambre 3
def command_auberge_chambre_3
@fenetre_description_auberge.auberge_chambre_selectionnee(3)
@fenetre_validation_auberge.show
end
# Creer les actions en cas de choix de la chambre 4
def command_auberge_chambre_4
@fenetre_description_auberge.auberge_chambre_selectionnee(4)
@fenetre_validation_auberge.show
end
# Demande une confirmation pour validee ou pas la nuitee
def demande_validation_nuitee
@fenetre_validation_auberge.set_handler(:auberge_nuitee_validee, method(:command_auberge_nuitee_validee))
@fenetre_validation_auberge.set_handler(:auberge_nuitee_annulee, method(:command_auberge_nuitee_annulee))
end
# Fais la verification de l'or, execute les soin et quitte le menu auberge
def command_auberge_nuitee_validee
if verification_or_possede
modification_variable_retour_IG
paiement_chambre
restauration_hp_mp
return_scene
else
command_auberge_nuitee_annulee
end
end
# Ferme toutes les fenetres et lance la reinitialisation de la scene
def command_auberge_nuitee_annulee
@fenetre_validation_auberge.dispose
@fenetre_description_auberge.dispose
@fenetre_chambre.dispose
@fenetre_nom_auberge.dispose
start
end
# Verifie si suffisament d'or pour payer la nuitee
def verification_or_possede
case @fenetre_description_auberge.getChambre
when 1
return $game_party.gold >= Module_Auberge::AUBERGE_PRIX_CHAMBRE_1[@index_auberge]
when 2
return $game_party.gold >= Module_Auberge::AUBERGE_PRIX_CHAMBRE_2[@index_auberge]
when 3
return $game_party.gold >= Module_Auberge::AUBERGE_PRIX_CHAMBRE_3[@index_auberge]
when 4
return $game_party.gold >= Module_Auberge::AUBERGE_PRIX_CHAMBRE_4[@index_auberge]
end
end
# Modifie la variable IG temporaire
def modification_variable_retour_IG
$game_variables[Module_AubergeAUBERGE_INDEX_TEMP] =
@fenetre_description_auberge.getChambre
end
# Fais payer la chambre
def paiement_chambre
case @fenetre_description_auberge.getChambre
when 1
$game_party.lose_gold(Module_Auberge::AUBERGE_PRIX_CHAMBRE_1[@index_auberge])
when 2
$game_party.lose_gold(Module_Auberge::AUBERGE_PRIX_CHAMBRE_2[@index_auberge])
when 3
$game_party.lose_gold(Module_Auberge::AUBERGE_PRIX_CHAMBRE_3[@index_auberge])
when 4
$game_party.lose_gold(Module_Auberge::AUBERGE_PRIX_CHAMBRE_4[@index_auberge])
end
end
# Restauration HP et MP en fonction du HP max du groupe et du MP max du groupe et de la chambre choisi
def restauration_hp_mp
local = 1 # Ne pas toucher, c'est une variable de calcul qui initialise la boucle while
@max_hp = 1 # Ne pas toucher, c'est une variable de calcul qui initialise les HP a recuperer
@max_mp = 1 # Ne pas toucher, c'est une variable de calcul qui initialise les MP a recuperer
while ( local <= Module_Auberge::AUBERGE_NOMBRE_HEROS) # boucle permettant de connaitre le hp et le mp le plus eleve des heros
if @max_hp < $game_actors[local].mhp
@max_hp = $game_actors[local].mhp
end
if @max_mp < $game_actors[local].mmp
@max_mp = $game_actors[local].mmp
end
local +=1 # Ne pas toucher, c'est une variable qui permet de sortir de la boucle while
end
local = 1 # Ne pas toucher, c'est une variable de calcul qui initialise la boucle while
while ( local <= Module_Auberge::AUBERGE_NOMBRE_HEROS) # boucle qui permet de restaurer tous les heros
case @fenetre_description_auberge.getChambre
when 1
$game_actors[local].hp += @max_hp * Module_Auberge::AUBERGE_RECUP_1[@index_auberge] / 100 # rajoute les HP
$game_actors[local].mp += @max_mp * Module_Auberge::AUBERGE_RECUP_1[@index_auberge] / 100 # rajoute les MP
when 2
$game_actors[local].hp += @max_hp * Module_Auberge::AUBERGE_RECUP_2[@index_auberge] / 100 # rajoute les HP
$game_actors[local].mp += @max_mp * Module_Auberge::AUBERGE_RECUP_2[@index_auberge] / 100 # rajoute les MP
when 3
$game_actors[local].hp += @max_hp * Module_Auberge::AUBERGE_RECUP_3[@index_auberge] / 100 # rajoute les HP
$game_actors[local].mp += @max_mp * Module_Auberge::AUBERGE_RECUP_3[@index_auberge] / 100 # rajoute les MP
when 4
$game_actors[local].hp += @max_hp * Module_Auberge::AUBERGE_RECUP_4[@index_auberge] / 100 # rajoute les HP
$game_actors[local].mp += @max_mp * Module_Auberge::AUBERGE_RECUP_4[@index_auberge] / 100 # rajoute les MP
end
local += 1 # Ne pas toucher, c'est une variable qui permet de sortir de la boucle while
end
end
end