Le Deal du moment :
Cdiscount : -30€ dès 300€ ...
Voir le deal

Aller en bas
tim
tim
Membre

Nombre de messages : 40
Distinction : aucune
Date d'inscription : 11/12/2015

RPG Maker VX Ace Voler le héros

Sam 29 Mai 2021 - 18:32
Bonjour aux anciens qui utilisent encore VX ace !

Aujourd'hui, je vous partage un petit script  que j'ai crée afin de voler de l'or au héros.

Ce script vous permettra de dérober les pièces d'or avec plusieurs critères :
_ en fonction de la richesse de votre héros, avec un pourcentage variable (fonction la plus intéressante)
_ un montant fixe
_ un pourcentage fixe.

Bien entendu, je ne suis pas cruel, et j'ai mis une petite sécurité, vous pouvez choisir un montant minimal en dessous duquel le vol échouera systématiquement.

Le script vous permet de classer selon 4 niveaux, insuffisant/minimal/intermédiaire/maximal la richesse du héros.

A partir de là, le héros se verra voler un pourcentage différent en fonction de sa richesse.

L'utilité du script est intéressante pour créer des brigands et inciter les héros à dépenser leur or ou à le mettre dans une banque.

Le vol peut s'effectuer durant un combat mais aussi sur la carte avec un simple évènement.

Il est totalement fonctionnel.

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.

Code:

=begin
--------------------------------------------------------------------------------
***********
* --- *
* VOL *
* --- *
***********
AUTEUR : Tim
VERSION : 1
DATE : 28/05/2021
--------------------------------------------------------------------------------
Objectif : Permettre à un ennemi de voler l'or des héros en fonction de l'or qu'ils possèdent avec plusieurs pourcentage (minimal, intermediaire et maximum) de vol possible
--------------------------------------------------------------------------------
Utilisation :
_ Copier le script dans l'onglet materials
_ Personnaliser les constantes presentes dans le module Module_Vol
Il y a 4 possibilités d'usage :
1) Directement dans les évènements du groupe ennemis (RECOMMANDE pour une meilleure personnalisation)
_ Ajouter les appels de script (en remplaçant les 2 variables)
SceneManager.call(Tim_Scene_Vol)
SceneManager.scene.personnalisation_vol(montant, pourcentage)
2) Via un évènement commun rattaché à un groupe d'ennemi
_ Crer un évenement commun "Vol" (peut importe le nom)
_ Ajouter dans l'évènement commmun les appels de script (en remplaçant les 2 variables)
SceneManager.call(Tim_Scene_Vol)
SceneManager.scene.personnalisation_vol(montant, pourcentage)
_ Appeler l'évènement commun dans les évènements du groupe ennemi
3) Via un évènement commun rattaché à une compétence
_ Crer un évenement commun "Vol" (peut importe le nom)
_ Ajouter dans l'évènement commmun les appels de script (en remplaçant les 2 variables)
SceneManager.call(Tim_Scene_Vol)
SceneManager.scene.personnalisation_vol(montant, pourcentage)
_ Créer une compétence "Vol" (peut importe le nom)
_ Appeler l'évènement commun comme effet de la compétence
_ Affecter cette compétence à un ennemi
4) Via un évènement
_ Ajouter dans l'évènement les appels de script (en remplaçant les 2 variables)
SceneManager.call(Tim_Scene_Vol)
SceneManager.scene.personnalisation_vol(montant, pourcentage)
--------------------------------------------------------------------------------
Personnalisations supplementaires en modifiant le script manuellement :
_ Modifier le vocable
> Remplacer les termes a modifier dans 3) "Vous avez été volé de "+ @montant_a_affiche.to_s + " " + Vocab::currency_unit
> Remplacer les termes a modifier dans 3) "Le vol a échoué !"
_ Redimensionner la fenêtre dans 3) def initialize(montant_vole)
_ Redimensionner le texte dans 3) def message_montant_vol
--------------------------------------------------------------------------------
Restrictions :
_ créer un message comme si le combat était réinitialisé alors qu'il ne fait que continuer, à ne pas tenir compte
_ la vitesse d'apparition du message est rapide
_ peut causer une incompatibilité en cas d'usage conjoint de multimonnaie car usage de la constante Vocab::currency_unit
--------------------------------------------------------------------------------
Appels de script :
SceneManager.call(Tim_Scene_Vol)
SceneManager.scene.personnalisation_vol(montant, pourcentage)
--------------------------------------------------------------------------------
Descriptif des variables d'entrées :
montant == montant minimum que doit posséder le héros pour être voler
pourcentage == pourcentage minimum volé dans le cas ou le héros possède le montant minimal (ci-dessus)
--------------------------------------------------------------------------------
Descriptif des constantes personnalisables :
FACTEUR_MONTANT_INTERMEDIAIRE == facteur multiplicateur effectué sur le montant minimum afin de pouvoir savoir si la richesse du héros est dite intermédiaire
FACTEUR_MONTANT_MAXIMUM == facteur multiplicateur effectué sur le montant minimum afin de pouvoir savoir si la richesse du héros est dite maximale
FACTEUR_POURCENTAGE_INTERMEDIAIRE == facteur multiplicateur du pourcentage d'or volé dans le cas où le héros aurait une richesse intermédiaire
FACTEUR_POURCENTAGE_MAXIMUM == facteur multiplicateur du pourcentage d'or volé dans le cas où le héros aurait une richesse maximale
--------------------------------------------------------------------------------
Exemple :
montant = 1000
pourcentage = 1
FACTEUR_MONTANT_INTERMEDIAIRE = 5
FACTEUR_MONTANT_MAXIMUM = 10
FACTEUR_POURCENTAGE_INTERMEDIAIRE = 2
FACTEUR_POURCENTAGE_MAXIMUM = 3
Si le héros a moins de 1000 pièces d'or, il ne se fait pas voler
S'il a entre 1000 et 5000 (1000 * 5) pièces d'or, il sera considéré comme ayant la richesse minimale et se fera voler 1% de ses pièces
S'il a entre 5000 et 10000 (1000 * 5 et 1000 * 10) pièces d'or, il sera considéré comme ayant la richesse intermédiaire et se fera voler 2% (1 * 2) de ses pièces
S'il a plus de 10000 (1000 * 10) pièces d'or, il sera considéré comme ayant la richesse maximale et se fera voler 3% (1 * 3) de ses pièces
--------------------------------------------------------------------------------
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) Descriptif des variables d'entrées
  Descritif des constantes personnalisables
 9) Exemple
 10) Historique des versions
 11) Squelette du script
2) Creation du module contenant toutes les constantes personnalisable
3) Creation classe creation fenetre pour les messages
4) Creation de la scene qui gere le vol
--------------------------------------------------------------------------------
=end
#-------------------------------------------------------------------------------
#
# 2) Creation du module contenant tous les parametres personnalisables
#
#-------------------------------------------------------------------------------
module Module_Vol
FACTEUR_MONTANT_INTERMEDIAIRE = 2 # mettre un chiffre (attention, ce chiffre sera factorisé, donc veillez à ne pas le mettre trop élevé)
FACTEUR_MONTANT_MAXIMUM = 3 # mettre un chiffre (attention, ce chiffre sera factorisé, donc veillez à ne pas le mettre trop élevé)
FACTEUR_POURCENTAGE_INTERMEDIAIRE = 2 # mettre un chiffre (attention, ce chiffre sera factorisé, donc veillez à ne pas le mettre trop élevé sinon tout l'or sera volé)
FACTEUR_POURCENTAGE_MAXIMUM = 3 # mettre un chiffre (attention, ce chiffre sera factorisé, donc veillez à ne pas le mettre trop élevé sinon tout l'or sera volé)
end


#-------------------------------------------------------------------------------
#
# 3) Creation classe creation fenetre pour les messages
#
#-------------------------------------------------------------------------------
class Window_Vol_message < Window_Base

# Initialise la fenetre
def initialize(montant_vole)
super(0, 0, 544, 100) # x, y, largeur, hauteur
@montant_a_affiche = montant_vole
message_montant_vol
end

# Fenetre du message
def message_montant_vol
contents.clear
if (@montant_a_affiche > 0)
contents.draw_text(100, 0, 374, 80, "Vous avez été volé de "+ @montant_a_affiche.to_s + " " + Vocab::currency_unit) # x, y ,largeur du texte, hauteur, texte a afficher)
else
contents.draw_text(100, 0, 374, 80, "Le vol a échoué !") # x, y ,largeur du texte, hauteur, texte a afficher)
end
end

end

#-------------------------------------------------------------------------------
#
# 4) Creation de la scene qui gere le vol
#
#-------------------------------------------------------------------------------

class Tim_Scene_Vol < Scene_Base
  
# Initialise la scene
def start
super
voler
return_scene
end

#Utilisation des variables entrées dans l'appel de script
def personnalisation_vol(montant, pourcentage)
@montant_minimun = montant
@pourcentage_minimum = pourcentage
end

#Description de l'algorithme
def voler
if verification_montant_possede
choix_pourcentage_a_voler
vol_effectif
creation_fenetre_message_vol
end
end

#Verification du montant possede
def verification_montant_possede
return $game_party.gold >= @montant_minimun
end

#Choisi le bon pourcentage de vol
def choix_pourcentage_a_voler
if $game_party.gold <= (@montant_minimun * Module_Vol::FACTEUR_MONTANT_INTERMEDIAIRE)
@pourcentage_vol = 1 # entre montant minimum et montant intermediaire
else
if $game_party.gold <= (@montant_minimun * Module_Vol::FACTEUR_MONTANT_MAXIMUM)
@pourcentage_vol = 2 # entre montant intermediaire et montant maximum
else
@pourcentage_vol = 3 # au dela du montant maximum
end
end
end

# Reduction de l'or possédé par le heros suite au vol
def vol_effectif
case @pourcentage_vol
when 1
@montant_vole = ($game_party.gold*@pourcentage_minimum/100)
$game_party.lose_gold(@montant_vole)
when 2
@montant_vole = ($game_party.gold*@pourcentage_minimum*Module_Vol::FACTEUR_POURCENTAGE_INTERMEDIAIRE/100)
$game_party.lose_gold(@montant_vole)
when 3
@montant_vole = ($game_party.gold*@pourcentage_minimum*Module_Vol::FACTEUR_POURCENTAGE_MAXIMUM/100)
$game_party.lose_gold(@montant_vole)
end
end

# Creer la fenetre de message
def creation_fenetre_message_vol
@fenetre_message_vol = Window_Vol_message.new(@montant_vole)
end

end







MIS A JOUR VERSION 1.1

Code:
=begin
--------------------------------------------------------------------------------
***********
* --- *
* VOL *
* --- *
***********
AUTEUR : Tim
VERSION : 1.1
DATE : 18/06/2021
--------------------------------------------------------------------------------
Objectif : Permettre à un ennemi de voler l'or des héros en fonction de l'or qu'ils possèdent avec plusieurs pourcentage (minimal, intermediaire et maximum) de vol possible
--------------------------------------------------------------------------------
Utilisation :
_ Copier le script dans l'onglet materials
_ Personnaliser les constantes presentes dans le module Module_Vol
_ (facultatif) Ecrire un message en utilisant le contenu de la variable IG personnalisé en VARIG_MONTANT_TEMP
Il y a 4 possibilités d'usage :
1) Directement dans les évènements du groupe ennemis (RECOMMANDE pour une meilleure personnalisation)
_ Ajouter les appels de script (en remplaçant les 2 variables)
SceneManager.call(Tim_Scene_Vol)
SceneManager.scene.personnalisation_vol(montant, pourcentage)
2) Via un évènement commun rattaché à un groupe d'ennemi
_ Crer un évenement commun "Vol" (peut importe le nom)
_ Ajouter dans l'évènement commmun les appels de script (en remplaçant les 2 variables)
SceneManager.call(Tim_Scene_Vol)
SceneManager.scene.personnalisation_vol(montant, pourcentage)
_ Appeler l'évènement commun dans les évènements du groupe ennemi
3) Via un évènement commun rattaché à une compétence
_ Crer un évenement commun "Vol" (peut importe le nom)
_ Ajouter dans l'évènement commmun les appels de script (en remplaçant les 2 variables)
SceneManager.call(Tim_Scene_Vol)
SceneManager.scene.personnalisation_vol(montant, pourcentage)
_ Créer une compétence "Vol" (peut importe le nom)
_ Appeler l'évènement commun comme effet de la compétence
_ Affecter cette compétence à un ennemi
4) Via un évènement
_ Ajouter dans l'évènement les appels de script (valeurs par défaut si on supprime les parenthèse ou en remplaçant les 2 variables)
SceneManager.call(Tim_Scene_Vol)
SceneManager.scene.personnalisation_vol(montant, pourcentage)
--------------------------------------------------------------------------------
Personnalisations supplementaires en modifiant le script manuellement :
_ Modification de la valeur par défaut des valeurs d'entrée en 3) ligne def personnalisation_vol(montant = 1000, pourcentage = 2)
--------------------------------------------------------------------------------
Restrictions :
_ créer un flash noir comme si le combat était réinitialisé alors qu'il ne fait que continuer, à ne pas tenir compte (en cours de résolution)
_ peut causer une incompatibilité en cas d'usage conjoint de multimonnaie car usage de la constante Vocab::currency_unit
--------------------------------------------------------------------------------
Appels de script :
SceneManager.call(Tim_Scene_Vol)
SceneManager.scene.personnalisation_vol(montant, pourcentage)
--------------------------------------------------------------------------------
Descriptif des variables d'entrées :
montant == montant minimum que doit posséder le héros pour être voler
pourcentage == pourcentage minimum volé dans le cas ou le héros possède le montant minimal (ci-dessus)
--------------------------------------------------------------------------------
Descriptif des constantes personnalisables :
FACTEUR_MONTANT_INTERMEDIAIRE == facteur multiplicateur effectué sur le montant minimum afin de pouvoir savoir si la richesse du héros est dite intermédiaire
FACTEUR_MONTANT_MAXIMUM == facteur multiplicateur effectué sur le montant minimum afin de pouvoir savoir si la richesse du héros est dite maximale
FACTEUR_POURCENTAGE_INTERMEDIAIRE == facteur multiplicateur du pourcentage d'or volé dans le cas où le héros aurait une richesse intermédiaire
FACTEUR_POURCENTAGE_MAXIMUM == facteur multiplicateur du pourcentage d'or volé dans le cas où le héros aurait une richesse maximale
VARIG_MONTANT_TEMP == numero d'une variable IG qui servira de variable temporaire pour un éventuel message d'information sur le montant volé
--------------------------------------------------------------------------------
Exemple :
montant = 1000
pourcentage = 2
FACTEUR_MONTANT_INTERMEDIAIRE = 5
FACTEUR_MONTANT_MAXIMUM = 10
FACTEUR_POURCENTAGE_INTERMEDIAIRE = 2
FACTEUR_POURCENTAGE_MAXIMUM = 3
Si le héros a moins de 1000 pièces d'or, il ne se fait pas voler
S'il a entre 1000 et 5000 (1000 * 5) pièces d'or, il sera considéré comme ayant la richesse minimale et se fera voler 2% de ses pièces
S'il a entre 5000 et 10000 (1000 * 5 et 1000 * 10) pièces d'or, il sera considéré comme ayant la richesse intermédiaire et se fera voler 4% (2 * 2) de ses pièces
S'il a plus de 10000 (1000 * 10) pièces d'or, il sera considéré comme ayant la richesse maximale et se fera voler 6% (2 * 3) de ses pièces
--------------------------------------------------------------------------------
Version 1
_ Script d'origine
Version 1.1
_ Suppression du message indiquant le montant du vol dans le script
_ Modification d'une variable IG permettant d'indiquer par un message le montant volé
_ Ajout d'une valeur par défaut pour les 2 variables d'entrée
_ Ajout d'un controle pour que le héros ne perdent jamais plus d'or qu'il n'en a sur lui
--------------------------------------------------------------------------------
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) Descriptif des variables d'entrées
  Descritif des constantes personnalisables
 9) Exemple
 10) Historique des versions
 11) Squelette du script
2) Creation du module contenant toutes les constantes personnalisable
3) Creation de la scene qui gere le vol
--------------------------------------------------------------------------------
=end
#-------------------------------------------------------------------------------
#
# 2) Creation du module contenant tous les parametres personnalisables
#
#-------------------------------------------------------------------------------
module Module_Vol
FACTEUR_MONTANT_INTERMEDIAIRE = 5 # mettre un chiffre (attention, ce chiffre sera factorisé, donc veillez à ne pas le mettre trop élevé)
FACTEUR_MONTANT_MAXIMUM = 10 # mettre un chiffre (attention, ce chiffre sera factorisé, donc veillez à ne pas le mettre trop élevé)
FACTEUR_POURCENTAGE_INTERMEDIAIRE = 2 # mettre un chiffre (attention, ce chiffre sera factorisé, donc veillez à ne pas le mettre trop élevé sinon tout l'or sera volé)
FACTEUR_POURCENTAGE_MAXIMUM = 3 # mettre un chiffre (attention, ce chiffre sera factorisé, donc veillez à ne pas le mettre trop élevé sinon tout l'or sera volé)
VARIG_MONTANT_TEMP = 3 #numero d'une variable IG qui servira de variable temporaire pour un éventuel message d'information sur le montant volé
end


#-------------------------------------------------------------------------------
#
# 3) Creation de la scene qui gere le vol
#
#-------------------------------------------------------------------------------

class Tim_Scene_Vol < Scene_Base
  
# Initialise la scene
def start
super
voler
return_scene
end

#Utilisation des variables entrées dans l'appel de script
def personnalisation_vol(montant = 1000, pourcentage = 2)
@montant_minimun = montant
@pourcentage_minimum = pourcentage
end

#Description de l'algorithme
def voler
$game_variables[Module_VolVARIG_MONTANT_TEMP] = 0 # initialise la variable IG utilisé pour un éventuel message
if verification_montant_possede
choix_pourcentage_a_voler
vol_effectif
montant_vol_variable
end
end

#Verification du montant possede
def verification_montant_possede
return $game_party.gold >= @montant_minimun
end

#Choisi le bon pourcentage de vol
def choix_pourcentage_a_voler
if $game_party.gold <= (@montant_minimun * Module_Vol::FACTEUR_MONTANT_INTERMEDIAIRE)
@pourcentage_vol = 1 # entre montant minimum et montant intermediaire
else
if $game_party.gold <= (@montant_minimun * Module_Vol::FACTEUR_MONTANT_MAXIMUM)
@pourcentage_vol = 2 # entre montant intermediaire et montant maximum
else
@pourcentage_vol = 3 # au dela du montant maximum
end
end
end

# Reduction de l'or possédé par le heros suite au vol
def vol_effectif
case @pourcentage_vol
when 1
@montant_vole = [($game_party.gold*@pourcentage_minimum/100),$game_party.gold].min
$game_party.lose_gold(@montant_vole)
when 2
@montant_vole = [($game_party.gold*@pourcentage_minimum*Module_Vol::FACTEUR_POURCENTAGE_INTERMEDIAIRE/100),$game_party.gold].min
$game_party.lose_gold(@montant_vole)
when 3
@montant_vole = [($game_party.gold*@pourcentage_minimum*Module_Vol::FACTEUR_POURCENTAGE_MAXIMUM/100),$game_party.gold].min
$game_party.lose_gold(@montant_vole)
end
end

# Modifie la variable IG temporaire utilisé pour un éventuel message
def montant_vol_variable
$game_variables[Module_VolVARIG_MONTANT_TEMP] = @montant_vole
end

end






MIS A JOUR VERSION 2

Code:

=begin
--------------------------------------------------------------------------------
***********
* --- *
* VOL *
* --- *
***********
AUTEUR : Tim
VERSION : 2
DATE : 24/06/2021
--------------------------------------------------------------------------------
Objectif : Permettre à un ennemi de voler l'or des héros en fonction de l'or qu'ils possèdent avec plusieurs pourcentage (minimal, intermediaire et maximum) de vol possible ou de tout simplement voler un montant fixe d'or ou un pourcentage fixe
--------------------------------------------------------------------------------
Utilisation :
_ Copier le script dans l'onglet materials
_ Personnaliser les constantes presentes dans le module Module_Vol
Il y a 4 possibilités d'usage :
1) Directement dans les évènements du groupe ennemis (RECOMMANDE pour une meilleure personnalisation)
_ Ajouter l'appel de script
2) Via un évènement commun rattaché à un groupe d'ennemi
_ Crer un évenement commun "Vol" (peu importe le nom)
_ Ajouter dans l'évènement commmun l'appel de script
_ Appeler l'évènement commun dans les évènements du groupe ennemi
3) Via un évènement commun rattaché à une compétence
_ Crer un évenement commun "Vol" (peu importe le nom)
_ Ajouter dans l'évènement commmun l'appel de script
_ Créer une compétence "Vol" (peut importe le nom)
_ Appeler l'évènement commun comme effet de la compétence
_ Affecter cette compétence à un ennemi
4) Via un évènement
_ Ajouter dans l'évènement l'appels de script
--------------------------------------------------------------------------------
Personnalisations supplementaires en modifiant le script manuellement :
_ Modification de la valeur par défaut des valeurs d'entrée en 3) ligne def personnalisation_vol(montant = 1000, pourcentage = 2)
_ Modification de la valeur par défaut des valeurs d'entrée en 3) ligne def voler_montant_fixe(montant=1000, montant_vole=10)
_ Modification de la valeur par défaut des valeurs d'entrée en 3) ligne def voler_montant_pourcentage(montant=1000, pourcentage=6)
_ Modification du message par défaut en 3) ligne $game_message.add("Vous avez été dépouillé de " + @montant_vole.to_s + Vocab::currency_unit + "!" )
--------------------------------------------------------------------------------
Restriction :
_ peut causer une incompatibilité en cas d'usage conjoint de multimonnaie car usage de la constante Vocab::currency_unit
--------------------------------------------------------------------------------
Appels de script :
$Tim_Class_Vol.configuration(montant, pourcentage) == pour un vol dépendant de la richesse
$Tim_Class_Vol.voler_montant_fixe(montant, montant_vole ) == pour un montant volé fixe si le héros possède le montant minimum
$Tim_Class_Vol.voler_montant_pourcentage(montant, pourcentage) == pour un pourcentage fixe volé si le héros possède le montant minimum
--------------------------------------------------------------------------------
Descriptif des variables d'entrées :
montant == montant minimum que doit posséder le héros pour être voler
pourcentage == pourcentage minimum volé dans le cas ou le héros possède le montant minimal (ci-dessus)
--------------------------------------------------------------------------------
Descriptif des constantes personnalisables :
FACTEUR_MONTANT_INTERMEDIAIRE == facteur multiplicateur effectué sur le montant minimum afin de pouvoir savoir si la richesse du héros est dite intermédiaire
FACTEUR_MONTANT_MAXIMUM == facteur multiplicateur effectué sur le montant minimum afin de pouvoir savoir si la richesse du héros est dite maximale
FACTEUR_POURCENTAGE_INTERMEDIAIRE == facteur multiplicateur du pourcentage d'or volé dans le cas où le héros aurait une richesse intermédiaire
FACTEUR_POURCENTAGE_MAXIMUM == facteur multiplicateur du pourcentage d'or volé dans le cas où le héros aurait une richesse maximale
--------------------------------------------------------------------------------
Exemples :
_ $Tim_Class_Vol.configuration(montant, pourcentage)
montant = 1000
pourcentage = 2
FACTEUR_MONTANT_INTERMEDIAIRE = 5
FACTEUR_MONTANT_MAXIMUM = 10
FACTEUR_POURCENTAGE_INTERMEDIAIRE = 2
FACTEUR_POURCENTAGE_MAXIMUM = 3
Si le héros a moins de 1000 pièces d'or, il ne se fait pas voler
S'il a entre 1000 et 5000 (1000 * 5) pièces d'or, il sera considéré comme ayant la richesse minimale et se fera voler 2% de ses pièces
S'il a entre 5000 et 10000 (1000 * 5 et 1000 * 10) pièces d'or, il sera considéré comme ayant la richesse intermédiaire et se fera voler 4% (2 * 2) de ses pièces
S'il a plus de 10000 (1000 * 10) pièces d'or, il sera considéré comme ayant la richesse maximale et se fera voler 6% (2 * 3) de ses pièces
_ $Tim_Class_Vol.voler_montant_fixe(montant, montant_vole )
montant = 1000
montant_vole = 10
Si le héros a 1000 pièces d'or ou plus, il se fait vole 10 pièces (montant fixe peu importe sa richesse)
_ $Tim_Class_Vol.voler_montant_pourcentage(montant, pourcentage)
montant = 1000
pourcentage = 6
Si le héros a 1000 pièces d'or ou plus, il se fait vole 6% de ses pièces (pourcentage fixe peu importe sa richesse)
--------------------------------------------------------------------------------
Version 1
_ Script d'origine
Version 1.1
_ Suppression du message indiquant le montant du vol dans le script
_ Modification d'une variable IG permettant d'indiquer par un message le montant volé
_ Ajout d'une valeur par défaut pour les 2 variables d'entrée
_ Ajout d'un controle pour que le héros ne perdent jamais plus d'or qu'il n'en a sur lui
Version 2
_ Réintroduction message indiquant le montant du vol dans le script
_ Supression de la scene Tim_Scene_Vol
_ Création de la class Tim_Class_Vol
_ Supression de la constante VARIG_MONTANT_TEMP
_ Optimisation de la fonction vol_effectif
_ Modification de l'appel de script
_ Ajout d'un appel de script pour voler un montant fixe
_ Ajout d'un appel de script pour voler un pourcentage fixe
--------------------------------------------------------------------------------
Remerciement à Dany pour son aide et ses explications
--------------------------------------------------------------------------------
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) Descriptif des variables d'entrées
   Cool Descritif des constantes personnalisables
   9) Exemple
   10) Historique des versions
   11) Remerciement
   12) Squelette du script
2) Creation du module contenant toutes les constantes personnalisables
3) Creation de la class qui gere le vol
--------------------------------------------------------------------------------
=end
#-------------------------------------------------------------------------------
#
# 2) Creation du module contenant tous les parametres personnalisables
#
#-------------------------------------------------------------------------------
module Module_Vol
FACTEUR_MONTANT_INTERMEDIAIRE = 5 # mettre un chiffre (attention, ce chiffre sera factorisé, donc veillez à ne pas le mettre trop élevé)
FACTEUR_MONTANT_MAXIMUM = 10 # mettre un chiffre (attention, ce chiffre sera factorisé, donc veillez à ne pas le mettre trop élevé)
FACTEUR_POURCENTAGE_INTERMEDIAIRE = 2 # mettre un chiffre (attention, ce chiffre sera factorisé, donc veillez à ne pas le mettre trop élevé sinon tout l'or sera volé)
FACTEUR_POURCENTAGE_MAXIMUM = 3 # mettre un chiffre (attention, ce chiffre sera factorisé, donc veillez à ne pas le mettre trop élevé sinon tout l'or sera volé)
end

#-------------------------------------------------------------------------------
#
# 3) Creation d'un alias pour la création
#
#-------------------------------------------------------------------------------

class << DataManager

    alias :alias_call_create_game_objects :create_game_objects
    def create_game_objects
        alias_call_create_game_objects
        $Tim_Class_Vol = Tim_Class_Vol.new #Ajout la variable qui contient les données de la class Tim_Class_Vol
    end
end
#-------------------------------------------------------------------------------
#
# 4) Creation de la classe qui gere le vol
#
#-------------------------------------------------------------------------------

class Tim_Class_Vol

# Permet de configurer le montant minimum de richesse et le pourcentage minimum à voler
def configuration(montant=1000, pourcentage=2)
@montant_minimun = montant
@pourcentage_minimum = pourcentage
voler
end


#Description de l'algorithme de vol avec configuration
def voler
if verification_montant_possede
choix_pourcentage_a_voler
vol_effectif
message_vol
end
end

#Description de l'algorithme de vol d'un montant fixe
def voler_montant_fixe(montant=1000, montant_vole=10)
@montant_minimun = montant
if verification_montant_possede
@montant_vole = montant_vole
@pourcentage_vol = 4 # montant fixe
vol_effectif
message_vol
end
end

#Description de l'algorithme de vol d'un pourcentage fixe
def voler_montant_pourcentage(montant=1000, pourcentage=6)
@montant_minimun = montant
if verification_montant_possede
@pourcentage_vol = 1
@pourcentage_minimum = pourcentage
vol_effectif
message_vol
end
end



#Verification du montant possede
def verification_montant_possede
return $game_party.gold >= @montant_minimun
end

#Choisi le bon pourcentage de vol
def choix_pourcentage_a_voler
if $game_party.gold <= (@montant_minimun * Module_Vol::FACTEUR_MONTANT_INTERMEDIAIRE)
@pourcentage_vol = 1 # entre montant minimum et montant intermediaire
else
if $game_party.gold <= (@montant_minimun * Module_Vol::FACTEUR_MONTANT_MAXIMUM)
@pourcentage_vol = 2 # entre montant intermediaire et montant maximum
else
@pourcentage_vol = 3 # au dela du montant maximum
end
end
end

# Reduction de l'or possédé par le heros suite au vol avec configuration
def vol_effectif
case @pourcentage_vol
when 1 # richesse minimum ET pourcentage fixe
@montant_vole = [($game_party.gold*@pourcentage_minimum/100),$game_party.gold].min
when 2 # richesse intermediaire
@montant_vole = [($game_party.gold*@pourcentage_minimum*Module_Vol::FACTEUR_POURCENTAGE_INTERMEDIAIRE/100),$game_party.gold].min
when 3 # richesse maximum
@montant_vole = [($game_party.gold*@pourcentage_minimum*Module_Vol::FACTEUR_POURCENTAGE_MAXIMUM/100),$game_party.gold].min
when 4 # montant fixe
@montant_vole = [@montant_vole,$game_party.gold].min
end
$game_party.lose_gold(@montant_vole)
end


# Affiche un message sur la somme volée
def message_vol
$game_message.add("Vous avez été dépouillé de " + @montant_vole.to_s + Vocab::currency_unit + "!" )
end

end








Dernière édition par tim le Jeu 24 Juin 2021 - 18:02, édité 3 fois
Kingdommangas
Kingdommangas
Membre

Nombre de messages : 1401
Localisation : Ma tête
Distinction : Débrouillarde notoire é_è [Mist']
Ou celle qui partageait plus vite que son ombre [Gel']
Poisson 2017 [Amal]
Grâce à elle, tout le forum appelle Yamashi "Mamashi" [Yama]
Entraide d'Or
Règne dans l'ombre de la commu'
Youtubeuse beauté reconvertie dans le gaming [Amal']
Date d'inscription : 05/05/2015
https://www.youtube.com/channel/UCqGFuGrzm7jim1o5QJ4lKvg

RPG Maker VX Ace Re: Voler le héros

Mar 1 Juin 2021 - 0:05
J'ai mis le lien de ton tuto sur discord pour plus de visibilité ^^
tim
tim
Membre

Nombre de messages : 40
Distinction : aucune
Date d'inscription : 11/12/2015

RPG Maker VX Ace Re: Voler le héros

Mar 1 Juin 2021 - 19:33
Aucun problème.
J'ignorai qu'il y avait un discord sur vx ace
Dany
Dany
Membre

Nombre de messages : 784
Age : 27
Distinction : aucune
Date d'inscription : 16/11/2010
http://gamers-studio.forumofficiel.fr/

RPG Maker VX Ace Re: Voler le héros

Mar 1 Juin 2021 - 22:05
Salut !
Je viens de tester ton script, cela ne fonctionne pas si bien que cela !
Dès qu'ont le lance, il s'affiche et disparaît très rapidement.
De plus, si il ne vole rien aucun message pour avertir !
Essaie de ne pas modifier directement la Scene comme ça :

SceneManager.scene.personnalisation_vol(montant, pourcentage)

Tu peux éviter de créer une fenêtre simplement d'utiliser la commande d'afficher un message.
Je te laisse regarder ça, sa te corrigera le problème d'affichage.

Si tu veux des conseils n'hésite pas, vient sur discord, bon courage !
Hâte de voir la prochaine version ! Wink
tim
tim
Membre

Nombre de messages : 40
Distinction : aucune
Date d'inscription : 11/12/2015

RPG Maker VX Ace Re: Voler le héros

Ven 18 Juin 2021 - 16:23
Mis à jour avec la version 1.1

_ Suppression du message indiquant le montant du vol dans le script
_ Modification d'une variable IG permettant d'indiquer par un message le montant volé
_ Ajout d'une valeur par défaut pour les 2 variables d'entrée
_ Ajout d'un controle pour que le héros ne perdent jamais plus d'or qu'il n'en a sur lui

Pour supprimer le bug d'affichage du message, j'ai tout simplement supprimer les lignes de codes s'y référent, dorénavent, si on veut indiquer par un message le vol, il suffira d'ajouter une ligne de message dans l'évènement du groupe ennemi (ou dans l'évènement commun).

Dany a écrit:Essaie de ne pas modifier directement la Scene comme ça :

SceneManager.scene.personnalisation_vol(montant, pourcentage)

Je suis un peu débutant, et je ne vois pas comment faire mon script si je ne le met pas dans une scene manager ?

Le script fonctionne, il y a juste un leger bug d'affichage avec un écran noir qui apparait une demi seconde, sûrement en lieu avec la remarque que tu m'as faite Dany.



Code:
=begin
--------------------------------------------------------------------------------
***********
* --- *
* VOL *
* --- *
***********
AUTEUR : Tim
VERSION : 1.1
DATE : 18/06/2021
--------------------------------------------------------------------------------
Objectif : Permettre à un ennemi de voler l'or des héros en fonction de l'or qu'ils possèdent avec plusieurs pourcentage (minimal, intermediaire et maximum) de vol possible
--------------------------------------------------------------------------------
Utilisation :
_ Copier le script dans l'onglet materials
_ Personnaliser les constantes presentes dans le module Module_Vol
_ (facultatif) Ecrire un message en utilisant le contenu de la variable IG personnalisé en VARIG_MONTANT_TEMP
Il y a 4 possibilités d'usage :
1) Directement dans les évènements du groupe ennemis (RECOMMANDE pour une meilleure personnalisation)
_ Ajouter les appels de script (en remplaçant les 2 variables)
SceneManager.call(Tim_Scene_Vol)
SceneManager.scene.personnalisation_vol(montant, pourcentage)
2) Via un évènement commun rattaché à un groupe d'ennemi
_ Crer un évenement commun "Vol" (peut importe le nom)
_ Ajouter dans l'évènement commmun les appels de script (en remplaçant les 2 variables)
SceneManager.call(Tim_Scene_Vol)
SceneManager.scene.personnalisation_vol(montant, pourcentage)
_ Appeler l'évènement commun dans les évènements du groupe ennemi
3) Via un évènement commun rattaché à une compétence
_ Crer un évenement commun "Vol" (peut importe le nom)
_ Ajouter dans l'évènement commmun les appels de script (en remplaçant les 2 variables)
SceneManager.call(Tim_Scene_Vol)
SceneManager.scene.personnalisation_vol(montant, pourcentage)
_ Créer une compétence "Vol" (peut importe le nom)
_ Appeler l'évènement commun comme effet de la compétence
_ Affecter cette compétence à un ennemi
4) Via un évènement
_ Ajouter dans l'évènement les appels de script (valeurs par défaut si on supprime les parenthèse ou en remplaçant les 2 variables)
SceneManager.call(Tim_Scene_Vol)
SceneManager.scene.personnalisation_vol(montant, pourcentage)
--------------------------------------------------------------------------------
Personnalisations supplementaires en modifiant le script manuellement :
_ Modification de la valeur par défaut des valeurs d'entrée en 3) ligne def personnalisation_vol(montant = 1000, pourcentage = 2)
--------------------------------------------------------------------------------
Restrictions :
_ créer un flash noir comme si le combat était réinitialisé alors qu'il ne fait que continuer, à ne pas tenir compte (en cours de résolution)
_ peut causer une incompatibilité en cas d'usage conjoint de multimonnaie car usage de la constante Vocab::currency_unit
--------------------------------------------------------------------------------
Appels de script :
SceneManager.call(Tim_Scene_Vol)
SceneManager.scene.personnalisation_vol(montant, pourcentage)
--------------------------------------------------------------------------------
Descriptif des variables d'entrées :
montant == montant minimum que doit posséder le héros pour être voler
pourcentage == pourcentage minimum volé dans le cas ou le héros possède le montant minimal (ci-dessus)
--------------------------------------------------------------------------------
Descriptif des constantes personnalisables :
FACTEUR_MONTANT_INTERMEDIAIRE == facteur multiplicateur effectué sur le montant minimum afin de pouvoir savoir si la richesse du héros est dite intermédiaire
FACTEUR_MONTANT_MAXIMUM == facteur multiplicateur effectué sur le montant minimum afin de pouvoir savoir si la richesse du héros est dite maximale
FACTEUR_POURCENTAGE_INTERMEDIAIRE == facteur multiplicateur du pourcentage d'or volé dans le cas où le héros aurait une richesse intermédiaire
FACTEUR_POURCENTAGE_MAXIMUM == facteur multiplicateur du pourcentage d'or volé dans le cas où le héros aurait une richesse maximale
VARIG_MONTANT_TEMP == numero d'une variable IG qui servira de variable temporaire pour un éventuel message d'information sur le montant volé
--------------------------------------------------------------------------------
Exemple :
montant = 1000
pourcentage = 2
FACTEUR_MONTANT_INTERMEDIAIRE = 5
FACTEUR_MONTANT_MAXIMUM = 10
FACTEUR_POURCENTAGE_INTERMEDIAIRE = 2
FACTEUR_POURCENTAGE_MAXIMUM = 3
Si le héros a moins de 1000 pièces d'or, il ne se fait pas voler
S'il a entre 1000 et 5000 (1000 * 5) pièces d'or, il sera considéré comme ayant la richesse minimale et se fera voler 2% de ses pièces
S'il a entre 5000 et 10000 (1000 * 5 et 1000 * 10) pièces d'or, il sera considéré comme ayant la richesse intermédiaire et se fera voler 4% (2 * 2) de ses pièces
S'il a plus de 10000 (1000 * 10) pièces d'or, il sera considéré comme ayant la richesse maximale et se fera voler 6% (2 * 3) de ses pièces
--------------------------------------------------------------------------------
Version 1
_ Script d'origine
Version 1.1
_ Suppression du message indiquant le montant du vol dans le script
_ Modification d'une variable IG permettant d'indiquer par un message le montant volé
_ Ajout d'une valeur par défaut pour les 2 variables d'entrée
_ Ajout d'un controle pour que le héros ne perdent jamais plus d'or qu'il n'en a sur lui
--------------------------------------------------------------------------------
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) Descriptif des variables d'entrées
   Cool Descritif des constantes personnalisables
   9) Exemple
   10) Historique des versions
   11) Squelette du script
2) Creation du module contenant toutes les constantes personnalisable
3) Creation de la scene qui gere le vol
--------------------------------------------------------------------------------
=end
#-------------------------------------------------------------------------------
#
# 2) Creation du module contenant tous les parametres personnalisables
#
#-------------------------------------------------------------------------------
module Module_Vol
FACTEUR_MONTANT_INTERMEDIAIRE = 5 # mettre un chiffre (attention, ce chiffre sera factorisé, donc veillez à ne pas le mettre trop élevé)
FACTEUR_MONTANT_MAXIMUM = 10 # mettre un chiffre (attention, ce chiffre sera factorisé, donc veillez à ne pas le mettre trop élevé)
FACTEUR_POURCENTAGE_INTERMEDIAIRE = 2 # mettre un chiffre (attention, ce chiffre sera factorisé, donc veillez à ne pas le mettre trop élevé sinon tout l'or sera volé)
FACTEUR_POURCENTAGE_MAXIMUM = 3 # mettre un chiffre (attention, ce chiffre sera factorisé, donc veillez à ne pas le mettre trop élevé sinon tout l'or sera volé)
VARIG_MONTANT_TEMP = 3 #numero d'une variable IG qui servira de variable temporaire pour un éventuel message d'information sur le montant volé
end


#-------------------------------------------------------------------------------
#
# 3) Creation de la scene qui gere le vol
#
#-------------------------------------------------------------------------------

class Tim_Scene_Vol < Scene_Base
 
# Initialise la scene
def start
super
voler
return_scene
end

#Utilisation des variables entrées dans l'appel de script
def personnalisation_vol(montant = 1000, pourcentage = 2)
@montant_minimun = montant
@pourcentage_minimum = pourcentage
end

#Description de l'algorithme
def voler
$game_variables[Module_Vol::VARIG_MONTANT_TEMP] = 0 # initialise la variable IG utilisé pour un éventuel message
if verification_montant_possede
choix_pourcentage_a_voler
vol_effectif
montant_vol_variable
end
end

#Verification du montant possede
def verification_montant_possede
return $game_party.gold >= @montant_minimun
end

#Choisi le bon pourcentage de vol
def choix_pourcentage_a_voler
if $game_party.gold <= (@montant_minimun * Module_Vol::FACTEUR_MONTANT_INTERMEDIAIRE)
@pourcentage_vol = 1 # entre montant minimum et montant intermediaire
else
if $game_party.gold <= (@montant_minimun * Module_Vol::FACTEUR_MONTANT_MAXIMUM)
@pourcentage_vol = 2 # entre montant intermediaire et montant maximum
else
@pourcentage_vol = 3 # au dela du montant maximum
end
end
end

# Reduction de l'or possédé par le heros suite au vol
def vol_effectif
case @pourcentage_vol
when 1
@montant_vole = [($game_party.gold*@pourcentage_minimum/100),$game_party.gold].min
$game_party.lose_gold(@montant_vole)
when 2
@montant_vole = [($game_party.gold*@pourcentage_minimum*Module_Vol::FACTEUR_POURCENTAGE_INTERMEDIAIRE/100),$game_party.gold].min
$game_party.lose_gold(@montant_vole)
when 3
@montant_vole = [($game_party.gold*@pourcentage_minimum*Module_Vol::FACTEUR_POURCENTAGE_MAXIMUM/100),$game_party.gold].min
$game_party.lose_gold(@montant_vole)
end
end

# Modifie la variable IG temporaire utilisé pour un éventuel message
def montant_vol_variable
$game_variables[Module_Vol::VARIG_MONTANT_TEMP] = @montant_vole
end

end





Dany
Dany
Membre

Nombre de messages : 784
Age : 27
Distinction : aucune
Date d'inscription : 16/11/2010
http://gamers-studio.forumofficiel.fr/

RPG Maker VX Ace Re: Voler le héros

Dim 20 Juin 2021 - 23:47
Quand j'ai voulu tester, je me suis dit pourquoi sa affiche pas le message... avant de voir ceci :
tim a écrit:_ Suppression du message indiquant le montant du vol dans le script

J'ai refais, de mon côté, ton code et cela fonctionne très bien.
Juste quelques appels :

Code:
$game_volsystem.config(montant, pourcentage)
$game_volsystem.montant(montant)
$game_volsystem.pourcentage(pourcentage)
$game_volsystem.openMessage

tim a écrit:Je suis un peu débutant, et je ne vois pas comment faire mon script si je ne le met pas dans une scene manager ?

Tu peux utiliser la scene manager, mais pour ton système il ne touche pas la map.
Si on utilise la scene manager, c'est plus pour ce que contient la map. (tilesets, sprites)
L'affichage du message, est une classe globale, accès a tout.
Dans ton premier script tu refais une fenêtre pour faire un affichage de texte, autant utiliser celui qui est déjà programmer.

Pour afficher un message sur la map, juste ce code :
Code:
$game_message.add("On vous a voler " + @montant_vole.to_s + " d'argent !")
Tu peux le tester en appel de script dans les évents.
Bien sur en enlevant la variable @montant_vole sinon tu aura une erreur de variable non définie.

Code:
SceneManager.call(Tim_Scene_Vol)
SceneManager.scene.personnalisation_vol(montant, pourcentage)
Avec ce code de ta version 1.0. Il a des inconvénients, car la map se mettra plus a jour, et de plus dans ton code tu retourne direct sur la scene_map.
Donc, on a pas le temps de voir le message.
D'où le problème écran noir, et/ou l'apparition rapide du message.

Le mieux c'est de créer une class globale accès partout.
En utilisant la class DataManager.
Tu aura accès dans les appels de script, ou dans les scripts lui-même :

Code:
#==============================================================================
# ** DataManager
#------------------------------------------------------------------------------
#  This module handles the game and database objects used in game.
# Almost all global variables are initialized on this module
#==============================================================================
 
class << DataManager
    #--------------------------------------------------------------------------
    # * Alias method: create_game_objects
    #--------------------------------------------------------------------------
    alias :alias_call_create_game_objects :create_game_objects
    def create_game_objects
        alias_call_create_game_objects
        $game_volsystem = Game_VolSystem.new #Ajout la variable qui contient les données de la class Game_VolSystem
    end
end

Exemple de la class Game_VolSystem
Code:
class Game_VolSystem
  #Variable dans la classe
  attr_accessor :variable #Créer une variable globale dans la class, en l'appelant @variable
  
  #Initilize a l'appel de Game_VolSystem.new
  def initialize
    @variable = 1 #La variable sera égale à 1 automatiquement
  end
end

Dans cette class, tu pourra ouvrir le message, gérer les variables etc...
Tout ça dans une seule et unique class.
Vue que ton système n'est pas si "complexe" une class suffit.
Dans mon code j'ai garder le module Module_Vol, et juste mis dans la class global deux variables:
-montant
-pourcentage

Je te laisse avec ses infos, n'hésite pas a venir sur le discord et me demander des conseils.
J'espère que je t'ai pas perdu dans tout ça.
Bonne chance, et une fois que tu aura réussi, tu aura plus de connaissance dans le scripting.
tim
tim
Membre

Nombre de messages : 40
Distinction : aucune
Date d'inscription : 11/12/2015

RPG Maker VX Ace Re: Voler le héros

Jeu 24 Juin 2021 - 18:07
Je te remercie pour ton aide précieuse Dany.

Le script est maintenant totalement opérationnel et sans aucun bug.

Mis à jour en version 2

_ Réintroduction du message indiquant le montant du vol dans le script
_ Modification de l'appel de script et ajout de 2 nouveaux appels de scripts
_ Ajout de nouvelles fonctionnalités (vol avec un montant fixe et vol avec un pourcentage fixe, toujours à condition d'avoir un montant minimum d'or sur soi paramétrable)

Code:

=begin
--------------------------------------------------------------------------------
***********
* --- *
* VOL *
* --- *
***********
AUTEUR : Tim
VERSION : 2
DATE : 24/06/2021
--------------------------------------------------------------------------------
Objectif : Permettre à un ennemi de voler l'or des héros en fonction de l'or qu'ils possèdent avec plusieurs pourcentage (minimal, intermediaire et maximum) de vol possible ou de tout simplement voler un montant fixe d'or ou un pourcentage fixe
--------------------------------------------------------------------------------
Utilisation :
_ Copier le script dans l'onglet materials
_ Personnaliser les constantes presentes dans le module Module_Vol
Il y a 4 possibilités d'usage :
1) Directement dans les évènements du groupe ennemis (RECOMMANDE pour une meilleure personnalisation)
_ Ajouter l'appel de script
2) Via un évènement commun rattaché à un groupe d'ennemi
_ Crer un évenement commun "Vol" (peu importe le nom)
_ Ajouter dans l'évènement commmun l'appel de script
_ Appeler l'évènement commun dans les évènements du groupe ennemi
3) Via un évènement commun rattaché à une compétence
_ Crer un évenement commun "Vol" (peu importe le nom)
_ Ajouter dans l'évènement commmun l'appel de script
_ Créer une compétence "Vol" (peut importe le nom)
_ Appeler l'évènement commun comme effet de la compétence
_ Affecter cette compétence à un ennemi
4) Via un évènement
_ Ajouter dans l'évènement l'appels de script
--------------------------------------------------------------------------------
Personnalisations supplementaires en modifiant le script manuellement :
_ Modification de la valeur par défaut des valeurs d'entrée en 3) ligne def personnalisation_vol(montant = 1000, pourcentage = 2)
_ Modification de la valeur par défaut des valeurs d'entrée en 3) ligne def voler_montant_fixe(montant=1000, montant_vole=10)
_ Modification de la valeur par défaut des valeurs d'entrée en 3) ligne def voler_montant_pourcentage(montant=1000, pourcentage=6)
_ Modification du message par défaut en 3) ligne $game_message.add("Vous avez été dépouillé de " + @montant_vole.to_s + Vocab::currency_unit + "!" )
--------------------------------------------------------------------------------
Restriction :
_ peut causer une incompatibilité en cas d'usage conjoint de multimonnaie car usage de la constante Vocab::currency_unit
--------------------------------------------------------------------------------
Appels de script :
$Tim_Class_Vol.configuration(montant, pourcentage) == pour un vol dépendant de la richesse
$Tim_Class_Vol.voler_montant_fixe(montant, montant_vole ) == pour un montant volé fixe si le héros possède le montant minimum
$Tim_Class_Vol.voler_montant_pourcentage(montant, pourcentage) == pour un pourcentage fixe volé si le héros possède le montant minimum
--------------------------------------------------------------------------------
Descriptif des variables d'entrées :
montant == montant minimum que doit posséder le héros pour être voler
pourcentage == pourcentage minimum volé dans le cas ou le héros possède le montant minimal (ci-dessus)
--------------------------------------------------------------------------------
Descriptif des constantes personnalisables :
FACTEUR_MONTANT_INTERMEDIAIRE == facteur multiplicateur effectué sur le montant minimum afin de pouvoir savoir si la richesse du héros est dite intermédiaire
FACTEUR_MONTANT_MAXIMUM == facteur multiplicateur effectué sur le montant minimum afin de pouvoir savoir si la richesse du héros est dite maximale
FACTEUR_POURCENTAGE_INTERMEDIAIRE == facteur multiplicateur du pourcentage d'or volé dans le cas où le héros aurait une richesse intermédiaire
FACTEUR_POURCENTAGE_MAXIMUM == facteur multiplicateur du pourcentage d'or volé dans le cas où le héros aurait une richesse maximale
--------------------------------------------------------------------------------
Exemples :
_ $Tim_Class_Vol.configuration(montant, pourcentage)
montant = 1000
pourcentage = 2
FACTEUR_MONTANT_INTERMEDIAIRE = 5
FACTEUR_MONTANT_MAXIMUM = 10
FACTEUR_POURCENTAGE_INTERMEDIAIRE = 2
FACTEUR_POURCENTAGE_MAXIMUM = 3
Si le héros a moins de 1000 pièces d'or, il ne se fait pas voler
S'il a entre 1000 et 5000 (1000 * 5) pièces d'or, il sera considéré comme ayant la richesse minimale et se fera voler 2% de ses pièces
S'il a entre 5000 et 10000 (1000 * 5 et 1000 * 10) pièces d'or, il sera considéré comme ayant la richesse intermédiaire et se fera voler 4% (2 * 2) de ses pièces
S'il a plus de 10000 (1000 * 10) pièces d'or, il sera considéré comme ayant la richesse maximale et se fera voler 6% (2 * 3) de ses pièces
_ $Tim_Class_Vol.voler_montant_fixe(montant, montant_vole )
montant = 1000
montant_vole = 10
Si le héros a 1000 pièces d'or ou plus, il se fait vole 10 pièces (montant fixe peu importe sa richesse)
_ $Tim_Class_Vol.voler_montant_pourcentage(montant, pourcentage)
montant = 1000
pourcentage = 6
Si le héros a 1000 pièces d'or ou plus, il se fait vole 6% de ses pièces (pourcentage fixe peu importe sa richesse)
--------------------------------------------------------------------------------
Version 1
_ Script d'origine
Version 1.1
_ Suppression du message indiquant le montant du vol dans le script
_ Modification d'une variable IG permettant d'indiquer par un message le montant volé
_ Ajout d'une valeur par défaut pour les 2 variables d'entrée
_ Ajout d'un controle pour que le héros ne perdent jamais plus d'or qu'il n'en a sur lui
Version 2
_ Réintroduction message indiquant le montant du vol dans le script
_ Supression de la scene Tim_Scene_Vol
_ Création de la class Tim_Class_Vol
_ Supression de la constante VARIG_MONTANT_TEMP
_ Optimisation de la fonction vol_effectif
_ Modification de l'appel de script
_ Ajout d'un appel de script pour voler un montant fixe
_ Ajout d'un appel de script pour voler un pourcentage fixe
--------------------------------------------------------------------------------
Remerciement à Dany pour son aide et ses explications
--------------------------------------------------------------------------------
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) Descriptif des variables d'entrées
  Descritif des constantes personnalisables
 9) Exemple
 10) Historique des versions
 11) Remerciement
 12) Squelette du script
2) Creation du module contenant toutes les constantes personnalisables
3) Creation de la class qui gere le vol
--------------------------------------------------------------------------------
=end
#-------------------------------------------------------------------------------
#
# 2) Creation du module contenant tous les parametres personnalisables
#
#-------------------------------------------------------------------------------
module Module_Vol
FACTEUR_MONTANT_INTERMEDIAIRE = 5 # mettre un chiffre (attention, ce chiffre sera factorisé, donc veillez à ne pas le mettre trop élevé)
FACTEUR_MONTANT_MAXIMUM = 10 # mettre un chiffre (attention, ce chiffre sera factorisé, donc veillez à ne pas le mettre trop élevé)
FACTEUR_POURCENTAGE_INTERMEDIAIRE = 2 # mettre un chiffre (attention, ce chiffre sera factorisé, donc veillez à ne pas le mettre trop élevé sinon tout l'or sera volé)
FACTEUR_POURCENTAGE_MAXIMUM = 3 # mettre un chiffre (attention, ce chiffre sera factorisé, donc veillez à ne pas le mettre trop élevé sinon tout l'or sera volé)
end

#-------------------------------------------------------------------------------
#
# 3) Creation d'un alias pour la création
#
#-------------------------------------------------------------------------------

class << DataManager

    alias :alias_call_create_game_objects :create_game_objects
    def create_game_objects
        alias_call_create_game_objects
        $Tim_Class_Vol = Tim_Class_Vol.new #Ajout la variable qui contient les données de la class Tim_Class_Vol
    end
end
#-------------------------------------------------------------------------------
#
# 4) Creation de la classe qui gere le vol
#
#-------------------------------------------------------------------------------

class Tim_Class_Vol

# Permet de configurer le montant minimum de richesse et le pourcentage minimum à voler
def configuration(montant=1000, pourcentage=2)
@montant_minimun = montant
@pourcentage_minimum = pourcentage
voler
end


#Description de l'algorithme de vol avec configuration
def voler
if verification_montant_possede
choix_pourcentage_a_voler
vol_effectif
message_vol
end
end

#Description de l'algorithme de vol d'un montant fixe
def voler_montant_fixe(montant=1000, montant_vole=10)
@montant_minimun = montant
if verification_montant_possede
@montant_vole = montant_vole
@pourcentage_vol = 4 # montant fixe
vol_effectif
message_vol
end
end

#Description de l'algorithme de vol d'un pourcentage fixe
def voler_montant_pourcentage(montant=1000, pourcentage=6)
@montant_minimun = montant
if verification_montant_possede
@pourcentage_vol = 1
@pourcentage_minimum = pourcentage
vol_effectif
message_vol
end
end



#Verification du montant possede
def verification_montant_possede
return $game_party.gold >= @montant_minimun
end

#Choisi le bon pourcentage de vol
def choix_pourcentage_a_voler
if $game_party.gold <= (@montant_minimun * Module_Vol::FACTEUR_MONTANT_INTERMEDIAIRE)
@pourcentage_vol = 1 # entre montant minimum et montant intermediaire
else
if $game_party.gold <= (@montant_minimun * Module_Vol::FACTEUR_MONTANT_MAXIMUM)
@pourcentage_vol = 2 # entre montant intermediaire et montant maximum
else
@pourcentage_vol = 3 # au dela du montant maximum
end
end
end

# Reduction de l'or possédé par le heros suite au vol avec configuration
def vol_effectif
case @pourcentage_vol
when 1 # richesse minimum ET pourcentage fixe
@montant_vole = [($game_party.gold*@pourcentage_minimum/100),$game_party.gold].min
when 2 # richesse intermediaire
@montant_vole = [($game_party.gold*@pourcentage_minimum*Module_Vol::FACTEUR_POURCENTAGE_INTERMEDIAIRE/100),$game_party.gold].min
when 3 # richesse maximum
@montant_vole = [($game_party.gold*@pourcentage_minimum*Module_Vol::FACTEUR_POURCENTAGE_MAXIMUM/100),$game_party.gold].min
when 4 # montant fixe
@montant_vole = [@montant_vole,$game_party.gold].min
end
$game_party.lose_gold(@montant_vole)
end


# Affiche un message sur la somme volée
def message_vol
$game_message.add("Vous avez été dépouillé de " + @montant_vole.to_s + Vocab::currency_unit + "!" )
end

end






Contenu sponsorisé

RPG Maker VX Ace Re: Voler le héros

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum