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

Aller en bas
tonyryu
tonyryu
Membre

Nombre de messages : 902
Age : 43
Localisation : Près de Nantes
Distinction : aucune
Date d'inscription : 27/05/2010
http://www.tonyryudev.com

Script de Sanction sur zone à risque Empty 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 de Sanction sur zone à risque Sanctionquit

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 Koening
Ezekiel Koening
Membre

Nombre de messages : 413
Age : 25
Localisation : Nantes
Distinction : aucune
Date d'inscription : 17/12/2011

Script de Sanction sur zone à risque Empty 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...
zido
zido
Membre

Nombre de messages : 67
Age : 28
Localisation : France
Distinction : aucune
Date d'inscription : 19/05/2012

Script de Sanction sur zone à risque Empty Re: Script de Sanction sur zone à risque

Mer 29 Aoû 2012 - 14:50
Cataclysm 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 ?
Dans ce cas il faut laisser la fenêtre de jeu ouverte et continuer plus tard Smile

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.
Jungle
Jungle
Membre

Nombre de messages : 30
Distinction : aucune
Date d'inscription : 28/08/2012

Script de Sanction sur zone à risque Empty 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?
tonyryu
tonyryu
Membre

Nombre de messages : 902
Age : 43
Localisation : Près de Nantes
Distinction : aucune
Date d'inscription : 27/05/2010
http://www.tonyryudev.com

Script de Sanction sur zone à risque Empty 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'
Elisa'
Staffeux retraité

Nombre de messages : 2924
Age : 26
Localisation : Par là-bas !
Distinction : Mon héritière que je chéris Script de Sanction sur zone à risque 344805Script de Sanction sur zone à risque 344805
[Coco' Smile]
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

Script de Sanction sur zone à risque Empty Re: Script de Sanction sur zone à risque

Jeu 30 Aoû 2012 - 11:45
Merci, +5 points de participation Smile
Contenu sponsorisé

Script de Sanction sur zone à risque Empty Re: Script de Sanction sur zone à risque

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