Script de Sanction sur zone à risque
Mer 29 Aoû 2012 - 12:15
Sanction_Quit
Auteur : Tonyryu
Version du script : 1.00
Principe du script : Le script permet de marquer la sauvegarde utilisée avec une sanction qui sera appliqué si celle-ci n'est pas levé. Cela à pour objectif de punir un joueur qui voudrait quitterle jeu pendant un combat, ou bien après un choix de scenar qu'il n'accepterai pas.
Installation : Copie dans la section Materials
Instructions : Pour ajouter une sanction, ajouter une commande script dans un évènement contenant ce code :
- Code:
DataManager.ajouter_sanction({:exp => 2000})
Les différentes sansctions sont :
- :exp : pertes d'expériences
- :level : pertes de niveaux
- :gold : pertes d'argent
En utilisant la valeur -1 pour une sanction, la totalité des gains de celle-ci sont perdu, exemple pour perdre l'intégralité de l'argent
- Code:
DataManager.ajouter_sanction({:gold => -1})
Pour mettre plusieurs sanctions, faite comme cela :
- Code:
DataManager.ajouter_sanction({:exp => 2000, :gold => 3000})
Pour annuler la sanction après la section critique :
- Code:
DataManager.annuler_sanction
Screens :
Script :
- Code:
#==============================================================================
# ■ Systeme de gestion de sanction lors d'une fermeture sans sauvegare
#------------------------------------------------------------------------------
# Ce script a pour but de sanctionner le joueur quittant la partie sans avoir sauvegarder normalement
#
# Version Date Auteur Commentaires
# 1.00 28/08/2012 Tonyryu Première release
#
# Attention : Ce script est ma propriété en tant que création et il est donc
# soumis au droit de la propriété intellectuelle.
# En aucun cas, il ne doit être copié ou publié vers un autre forum sans en
# avoir reçu mon accord au préalable.
#
#==============================================================================
#==============================================================================
# ■ Game_System
#------------------------------------------------------------------------------
# Ajout de d'une nouvelle propriété permettant de stocker la sanction
#
# Version Date Auteur Commentaires
# 1.00 28/08/2012 Tonyryu Création
#
#==============================================================================
class Game_System
attr_accessor :sanctions
#--------------------------------------------------------------------------
# * Constructeur (surcharge)
#--------------------------------------------------------------------------
alias sanction_initialize initialize
def initialize
sanction_initialize
@sanctions = {}
end
end
#==============================================================================
# ■ DataManager
#------------------------------------------------------------------------------
# Ajout de méthodes permettant d'ajouter ou retirer une sanction à la sauvegarde
#
# Version Date Auteur Commentaires
# 1.00 28/08/2012 Tonyryu Création
#
#==============================================================================
module DataManager
#--------------------------------------------------------------------------
# ● modifier_sauvegarde
#--------------------------------------------------------------------------
def self.modifier_sauvegarde(pSanctions = {})
if $game_system.save_count > 0
header = {}
contents = {}
File.open(make_filename(last_savefile_index), "rb") do |file|
header = Marshal.load(file)
contents = Marshal.load(file)
end
contents[:system].sanctions = pSanctions
File.open(make_filename(last_savefile_index), "wb") do |file|
Marshal.dump(header, file)
Marshal.dump(contents, file)
end
end
end
#--------------------------------------------------------------------------
# ● ajouter_sanction
#--------------------------------------------------------------------------
def self.ajouter_sanction(pSanctions)
modifier_sauvegarde(pSanctions)
end
#--------------------------------------------------------------------------
# ● annuler_sanction
#--------------------------------------------------------------------------
def self.annuler_sanction
modifier_sauvegarde
end
end
#==============================================================================
# ■ Scene_Load
#------------------------------------------------------------------------------
# Modification de la sortie de Scene_Load lors de la réussite du chargement de la sauvegarde
#
# Version Date Auteur Commentaires
# 1.00 28/08/2012 Tonyryu Création
#
#==============================================================================
class Scene_Load
#--------------------------------------------------------------------------
# * on_load_success (Surcharge)
#--------------------------------------------------------------------------
alias sanction_load_success on_load_success
def on_load_success
sanction_load_success
if $game_system.sanctions.size > 0
SceneManager.goto(Scene_Sanction)
end
end
end
#==============================================================================
# ■ Sanction_Window
#------------------------------------------------------------------------------
# Fenêtre d'affichage de la sanction
#
# Version Date Auteur Commentaires
# 1.00 28/08/2012 Tonyryu Création
#
#==============================================================================
class Sanction_Window < Window_Base
#--------------------------------------------------------------------------
# ● initialize
#--------------------------------------------------------------------------
def initialize
super(0, (Graphics.height / 2) - 150, Graphics.width, 300)
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
contents.clear
texte = "Vous avez quitté le jeu lors d'une section à risque\n"+
"Voici la liste des pertes que vous subissez :\n\n"
$game_system.sanctions.each do |key,value|
case key
when :exp
if value == -1
texte += "Expérience" + " => " + "Tout" + "\n"
else
texte += "Expérience" + " => " + value.to_s + "\n"
end
when :gold
if value == -1
texte += Vocab::currency_unit + " => " + "Tout" + "\n"
else
texte += Vocab::currency_unit + " => " + value.to_s + "\n"
end
when :level
if value == -1
texte += Vocab::level + " => " + "Tous" + "\n"
else
texte += Vocab::level + " => " + value.to_s + "\n"
end
end
end
tabLigne = texte.split("\n")
idxLigne = -1
tabLigne.each do |ligne|
idxLigne += 1
contents.draw_text(0,32 * idxLigne,contents.width, 30, ligne,1)
end
end
end
#==============================================================================
# ■ Scene_Sanction
#------------------------------------------------------------------------------
# Modification de la sortie de Scene_Load lors de la réussite du chargement de la sauvegarde
#
# Version Date Auteur Commentaires
# 1.00 28/08/2012 Tonyryu Création
#
#==============================================================================
class Scene_Sanction < Scene_MenuBase
#--------------------------------------------------------------------------
# * Start Processing
#--------------------------------------------------------------------------
def start
super
SceneManager.clear
@sanction_window = Sanction_Window.new
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
goto_map if Input.trigger?(:C)
end
#--------------------------------------------------------------------------
# * Input [OK]
#--------------------------------------------------------------------------
def goto_map
$game_system.sanctions.each do |key,value|
case key
when :exp
$game_party.members.each do |actor|
if value == -1
value = actor.exp
end
actor.change_exp(actor.exp - value, false)
end
when :gold
if value == -1
value = $game_party.gold
end
$game_party.lose_gold(value)
when :level
$game_party.members.each do |actor|
if value == -1
value = actor.level + 1
end
actor.change_level([1,actor.level-value].max, false)
end
end
end
$game_system.sanctions.clear
SceneManager.goto(Scene_Map)
end
end
+5 points de participation
- Ezekiel KoeningMembre
- Nombre de messages : 413
Age : 26
Localisation : Nantes
Distinction : aucune
Date d'inscription : 17/12/2011
Re: Script de Sanction sur zone à risque
Mer 29 Aoû 2012 - 14:25
Sympa xD ! Perso, je trouve que c'est très accessoire comme script, et que si tu veux énerver le joueur, y'a pas mieux xD ! Bon, après sa peut être drôle pour des jeux humoristiques, m'enfin bon...
Imagine qu'IRL tes parents te demandent l'ordi, tu es pleins combat, et ils ont pas la patiente de t'écouter expliquer que ce combat est très important. tes obliger de fermer le jeu ! Et tu perdrais tout ton argent juste parce que tes parents t'ont demandé l'ordi ? Perso je mettrais pas ce script dans mon jeu...
M'enfin bon, je dis ça, mais je sais que tu es un très bon scripteur ^^ ! Et puis il y a peut être des gens que ça intéresse, après tout...
Imagine qu'IRL tes parents te demandent l'ordi, tu es pleins combat, et ils ont pas la patiente de t'écouter expliquer que ce combat est très important. tes obliger de fermer le jeu ! Et tu perdrais tout ton argent juste parce que tes parents t'ont demandé l'ordi ? Perso je mettrais pas ce script dans mon jeu...
M'enfin bon, je dis ça, mais je sais que tu es un très bon scripteur ^^ ! Et puis il y a peut être des gens que ça intéresse, après tout...
- zidoMembre
- Nombre de messages : 67
Age : 29
Localisation : France
Distinction : aucune
Date d'inscription : 19/05/2012
Re: Script de Sanction sur zone à risque
Mer 29 Aoû 2012 - 14:50
Dans ce cas il faut laisser la fenêtre de jeu ouverte et continuer plus tardCataclysm a écrit: Imagine qu'IRL tes parents te demandent l'ordi, tu es pleins combat, et ils ont pas la patiente de t'écouter expliquer que ce combat est très important. tes obliger de fermer le jeu ! Et tu perdrais tout ton argent juste parce que tes parents t'ont demandé l'ordi ?
Personnellement je le trouve bien utile ce script pour éviter les tricheries du genre je recharge ma partie pour réessayer un combat à l'infini alors qu'on est sur le point de perdre.
- JungleMembre
- Nombre de messages : 30
Distinction : aucune
Date d'inscription : 28/08/2012
Re: Script de Sanction sur zone à risque
Mer 29 Aoû 2012 - 16:06
Si le joueur ne veut pas être sanctioné, mais qu'il veut quitter le jeu à ce moment précis, il sauvegarde, et il peut utiliser alt + f4 non?
Re: Script de Sanction sur zone à risque
Mer 29 Aoû 2012 - 17:07
Dès que le joueur utilise une sauvegarde, la sanction enregistré dans la sauvegarde est écrasé par une sanction null. Ce sytème permet de dissuader un joueur à revenir sur un choix de scenar qu'il n'aurait pas souhaité, ou bien de quitter violemment après avoir perdu un combat important.
- Elisa'Staffeux retraité
- Nombre de messages : 2924
Age : 26
Localisation : Par là-bas !
Distinction : Mon héritière que je chéris
[Coco' ]
Plus que 2 ans avant d'épouser Coco' ! Compte à rebours lancé !
[Auto-distinction]
Adepte du "Je le savais" alors qu'elle le savait pas.
Date d'inscription : 30/05/2009
Re: Script de Sanction sur zone à risque
Jeu 30 Aoû 2012 - 11:45
Merci, +5 points de participation
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum