Partagez
Aller en bas
Skillo
Skillo
Staffeux retraité

Nombre de messages : 526
Age : 30
Localisation : Rennes
Distinction : J'aime ce gars :P
(by Coco')
Scripteur apprenti, futur Berka !
(par Tretian)
Membre anonyme de la communauté, caché derrière son PC
(???)
super prof de script
[Dudu']
Résident permanent de la Chat Box
[Autoproclamé]
Adepte du XDDD [Yak' Very Happy]
Fanatique hystérique de Raymond le français [Un connu]
Date d'inscription : 19/01/2008

[Script] Script de Quête Empty [Script] Script de Quête

le Lun 17 Mai 2010 - 2:17
Voilà un script de Breadlord que j'ai modifié pour Varkan je le poste pour que tout le monde en profite.

Voici le script en question:
Quest à coller au dessus de main
Spoiler:

Code:

=begin
########################## Breadlord's Quets Script Modifié par Skillo ############################
Ceci est un script pour quête vous permettant d'avoir une large description des quêtes et de multiples tâches
(entend par là plusieurs à truc à faire pour la même quête hein).
Tu met les quêtes sous forme d'evenement c'est à dire sous ce format :

$quests['nom de la quête'] = Quest.new([' ligne de description 1', 'ligne de description 2, ...],
['tâche 1 description', 'tâche 2 description',...])

Dans ce format 'nom de la quête' correspond au nom de la quête,
'ligne de description N' est la N ème ligne de la description de la quête et
'tâche N description' est la description de la N eme tâche

Pour completer une tâche dans un evenement utilisez $quests['nom de la quête'].complete_sub('tâche description'),
et pour échouer une tâche utilisez $quests['nom de la quête'].fail_sub('tâche description').
Si toutes les tâches sont complétées/échouées alors le status de la quête deviendra complétée/échouée.
Pour mettre une quête en complétée utilisez $quests['nom de la quête'].complete_all,
et échouée utilisez $quests['nom de la quête'].fail_all

Pour vérifier si une quête est complétée utilisez $quests['nom de la quête'].complete?,
et pour vérifier si elle est échouée utilisez $quests['nom de la quête'].failed?.
Pour vérifier si une tâche est complétée utilisez $quests['nom de la quête'].sub_complete?('tâche description')
et pour vérifier si elle est échouée utilisez $quests['nom de la quête'].sub_failed?('tâche description')

Pour definir une quete secondaire il suffit de rajouter true  après les taches :
$quests['nom de la quête'] = Quest.new([' ligne de description 1', 'ligne de description 2, ...],
['tâche 1 description', 'tâche 2 description',...], true)

Enfin pour vérifier que la quête existe utilisez $quests['nom de la quête'] != nil
Pour appeler le menu de quête utilisez $scene = Scene_Quest.new
Et pour lancer le menu quête sur un onglet précis il suffit de $scene = Scene_Quest.new(index de l'onglet)
0<= index de l'onglet <= 3



################################################################################
################################################################################
=end
module QUEST_CONFIG
 
  # Ici seront defini les 3 icones correspondant aux tri des quêtes
  # QUEST_ICONS = [icone des quetes en cours, icone des quetes complétées, icone des quete echouées]
  QUEST_ICONS =  [188, 189, 150, 112] 
 
  # Ici sera defini l'image apparaissant dans le menu
  # QUEST_PICTURE = "nom de l'image"
  QUEST_PICTURE = "Quest"
 
  # Ici sera defini la hauteur des fenêtre et par consequence la place laisser à l'image
  # QUEST_WINDOWHEIGHT = hauteur
  QUEST_WINDOWHEIGHT =  293  # 293
 
  # Ici sera defini l'image apparaissant lorsqu'une quête est completée
  # QUEST_COMPLETE = "nom de l'image"
  QUEST_COMPLETE = "Complete"
 
  # Ici sera defini l'image apparaissant lorsqu'une quête est échouée
  # QUEST_FAILED = "nom de l'image"
  QUEST_FAILED =  "Failed"
 
  # Ici sera defini le message apparaissant dans la fenetre de description lors d'une quête secondaire
  # QUEST_SECOND = "message"
  QUEST_SECOND = "Quête secondaire"
 
  # Ici seront defini les 3 icones correspondant aux états des quêtes et des tâches principales
  # VALIDATEICONS = [icone des taches en cours, icone des taches complétées, icone des taches echouées]
  VALIDATEICONS =  [96, 101, 99] 
 
  # Ici seront defini les 3 icones correspondant aux états des quêtes et des tâches secondaires
  # VALIDATEICONS = [icone des taches en cours, icone des taches complétées, icone des taches echouées]
  VALIDATESECONDICONS =  [98, 100, 103] 
 
  #Ici sera defini le nom apparaissant dans le menu de base
  # MENUNAME = nom du menu
  MENUNAME = 'Quêtes'
 
  #Ici sera defini le nom apparaissant dans la description de l'onglet  des quêtes principales
  # QUEST_NAMEPRINCIP = nom
  QUEST_NAMEPRINCIP = "Quêtes Principales"
 
  #Ici sera defini le nom apparaissant dans la description de l'onglet  des quêtes secondaires
  # QUEST_NAMESECOND = nom 
  QUEST_NAMESECOND = "Quêtes Secondaires"
 
  #Ici sera defini le nom apparaissant dans la description de l'onglet  des quêtes réussies
  # QUEST_NAMECOMP = nom   
  QUEST_NAMECOMP = "Quêtes Réussies"

  #Ici sera defini le nom apparaissant dans la description de l'onglet  des quêtes échouées
  # QUEST_NAMEFAIL = nom
  QUEST_NAMEFAIL  =  "Quêtes Ratés"
 
  # Ici sera defini à titre indicatif le numero du menu quête dans le menu de base (comptez à partir de 0)
  # cela n'aura aucune influance sur sa position.
  # MENU_NUMBER = umero du menu quête dans le menu de base
  MENU_NUMBER = 4
 
  # Ici sera defini l'interrupteur definissant si un tache échoué fais echoué la quête ou non.
  # FAILSUB_FAILCOMPLETE = true/false
  FAILSUB_FAILCOMPLETE = true
 
end

#==============================================================================
# ** Quest
#------------------------------------------------------------------------------
#  Cette classe permet de definir des quêtes
#  Elle est appelée par $quests
#==============================================================================
class Quest

attr_accessor :desc, :sub, :comp, :sub_text, :pic

  #--------------------------------------------------------------------------
  # * Quête Initialization
  #    desc    : tableau des descriptions
  #    sub      : tableau des tâches
  #    pic  : window width
  #--------------------------------------------------------------------------
  def initialize(desc = [''], sub = [''], second = false)
    @desc = desc
    @sub = {}
    @second = second
    for i in 0..sub.size - 1  # pour chaque tache
      @sub[sub[i]] = 'prog'      #construit une clef du nom de la tache avec la valeur prog
    end
    @comp = 'prog'
    @sub_text = []
    for i in 0..sub.size - 1
      @sub_text.push(sub[i]) # pour chaque tache
    end
  end
 
  #--------------------------------------------------------------------------
  # * Completer une Tâche
  #    sub      :  tâche
  #--------------------------------------------------------------------------
  def second?
  return @second
  end
  #--------------------------------------------------------------------------
  # * Completer une Tâche
  #    sub      :  tâche
  #--------------------------------------------------------------------------
  def complete_sub(sub)
    @sub[sub] = 'comp'
    test_complete
  end
  #--------------------------------------------------------------------------
  # * Tester si la Quête est devenue complete
  #    sub      :  tâche
  #--------------------------------------------------------------------------
  def test_complete
    @a = true
    for i in 0..@sub.keys.size - 1
      if @sub[@sub.keys[i]] == 'comp'
        @a = (@a and true)
      else
        @a =  (@a and false)
      end
    end
    if @a == true
      complete_all
    end
  end
  #--------------------------------------------------------------------------
  # * Echouer une  Tâche
  #    sub      :  tâche
  #--------------------------------------------------------------------------
  def fail_sub(sub)
    if QUEST_CONFIG::FAILSUB_FAILCOMPLETE
      fail_all
    else
      @sub[sub] = 'fail'
    end
  end

 
  #--------------------------------------------------------------------------
  # *Compeleter toutes les Tâches
  #--------------------------------------------------------------------------
  def complete_all
    @comp = 'comp'
    for i in @sub.keys
      @sub[i] = 'comp'
    end
  end

  #--------------------------------------------------------------------------
  # *Echouer à toutes les Tâches
  #--------------------------------------------------------------------------
  def fail_all
    @comp = 'fail'
    for i in @sub.keys
      @sub[i] = 'fail'
    end
  end

  #--------------------------------------------------------------------------
  # *Tester si une  Tâches est complete
  #--------------------------------------------------------------------------
  def sub_complete?(sub)
    return @sub[sub] == 'comp'? true : false
  end

  #--------------------------------------------------------------------------
  # *Tester si une Quête est complete
  #--------------------------------------------------------------------------
  def complete?
    return @comp == 'comp'? true : false
  end

  #--------------------------------------------------------------------------
  # *Tester si une  Tâches est échouée
  #--------------------------------------------------------------------------
  def sub_failed?(sub)
    return @sub[sub] == 'fail'? true : false
  end

  #--------------------------------------------------------------------------
  # *Tester si une Quête est échouée
  #--------------------------------------------------------------------------
  def failed?
    return @comp == 'fail'? true : false
  end
end


#==============================================================================
# ** Window_Quest_Type
#------------------------------------------------------------------------------
#  Cette fenetre affiche les differents états des quêtes.
#==============================================================================
class Window_Quest_Type < Window_Selectable

attr_accessor :active, :index
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0,352 - QUEST_CONFIG::QUEST_WINDOWHEIGHT,160,64)
    @column_max = 4
    @index = 0
    @icons =  QUEST_CONFIG::QUEST_ICONS
    @spacing = 14
    refresh
  end

  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    @item_max = @icons.size
    create_contents
    for i in 0...@item_max
      rect = item_rect(i)
      rect.x -= 2
      icon = @icons[i]
      draw_icon(icon, rect.x, rect.y)
    end
  end
end

#==============================================================================
# ** Window_Quest_Title
#------------------------------------------------------------------------------
#  Cette fenetre affiche les descriptions des quêtes.
#==============================================================================
class Window_Quest_Title < Window_Base

  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(index = QUEST_CONFIG::MENUNAME)
    super( 160, 352 - QUEST_CONFIG::QUEST_WINDOWHEIGHT, 384, 64)
      @pic_title = Sprite.new
      @pic_title.bitmap = Cache.picture(QUEST_CONFIG::QUEST_PICTURE)
      self.contents.draw_text(0, 0, self.width - 40, WLH, index, 1)
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  def dispose
    super
    @pic_title.dispose
  end
end

#==============================================================================
# ** Window_Quest_Desc
#------------------------------------------------------------------------------
#  Cette fenetre affiche lee contenue des quêtes.
#==============================================================================
class Window_Quest_Desc < Window_Base

  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(index = nil)
    super( 160, 416 - QUEST_CONFIG::QUEST_WINDOWHEIGHT, 384, QUEST_CONFIG::QUEST_WINDOWHEIGHT)
    @status = Sprite.new
    if index != nil
      if $quests[index].complete?
        @status.bitmap = Cache.picture(QUEST_CONFIG::QUEST_COMPLETE)
      elsif $quests[index].failed?
        @status.bitmap = Cache.picture(QUEST_CONFIG::QUEST_FAILED)
      end
      @status.z = 201
      for i in 0..$quests[index].desc.size - 1
        a = $quests[index].desc[i]
        self.contents.draw_text(0, WLH*i, self.width - 40, WLH, a, 1)
      end
      a = $quests[index].sub_text
      for i in 0..a.size - 1
        b = a[i]
        if $quests[index].sub[b] == 'prog'
          if $quests[index].second?
            ic =  QUEST_CONFIG::VALIDATESECONDICONS[0]
          else
            ic =  QUEST_CONFIG::VALIDATEICONS[0]
          end
        elsif $quests[index].sub[b] == 'comp'
          if $quests[index].second?
            ic =  QUEST_CONFIG::VALIDATESECONDICONS[1]
          else
            ic =  QUEST_CONFIG::VALIDATEICONS[1]
          end
        else
          if $quests[index].second?
            ic =  QUEST_CONFIG::VALIDATESECONDICONS[2]
          else
            ic =  QUEST_CONFIG::VALIDATEICONS[2]
          end
        end
        draw_icon(ic, 4, WLH*(i + $quests[index].desc.size + 1))
        self.contents.draw_text(0, WLH*(i + $quests[index].desc.size + 1), self.width - 40, WLH, b, 1)
      end
      if $quests[index].second?
        self.contents.draw_text(0, QUEST_CONFIG::QUEST_WINDOWHEIGHT - 3*WLH, self.width - 40, WLH, QUEST_CONFIG::QUEST_SECOND, 1)
      end 
    end
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  def dispose
    super
    @status.dispose
  end
end

#==============================================================================
# ** Window_Quest_Type
#------------------------------------------------------------------------------
#  Cette fenetre affiche lee contenue des quêtes.
#==============================================================================
class Window_Select_Quest < Window_Selectable
 
attr_accessor :c_items

  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(type = 1)
    super(0, 416 - QUEST_CONFIG::QUEST_WINDOWHEIGHT, 160, QUEST_CONFIG::QUEST_WINDOWHEIGHT)
    @type = type
    self.index = 0
    self.active = false
    @items = $quests.keys
    create_contents
    a = @items
    @c_items = []
    for it in 0...@items.size
      if include?(a[it])
        @c_items.push(a[it])
      end
    end
    for it in 0...@c_items.size
      draw_opt(it)
    end
  end
 
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    super
    @data = @c_items
    @item_max = @data.size
  end
 
  #--------------------------------------------------------------------------
  # * Include ?
  #  key  : nom d'une quête
  #--------------------------------------------------------------------------
  def include?(key)
    case @type
    when 1
      if !$quests[key].complete? and !$quests[key].failed? and !$quests[key].second?
        return true
      end
    when 2
      unless $quests[key].complete? or $quests[key].failed?
        return $quests[key].second?
      end
    when 3
      return $quests[key].complete?
    when 4
      return $quests[key].failed?
    end
  end

  #--------------------------------------------------------------------------
  # * Draw Opt
  #  itemm  :  quête
  #--------------------------------------------------------------------------
  def draw_opt(itemm)
    a = @c_items
    rect = item_rect(itemm)
    self.contents.clear_rect(rect)
    if $quests[@c_items[itemm]].complete?
      if $quests[@c_items[itemm]].second?
        draw_icon(QUEST_CONFIG::VALIDATESECONDICONS[1],rect.x, rect.y)
      else
        draw_icon(QUEST_CONFIG::VALIDATEICONS[1],rect.x, rect.y)
      end
    elsif $quests[@c_items[itemm]].failed?
      if $quests[@c_items[itemm]].second?
        draw_icon(QUEST_CONFIG::VALIDATESECONDICONS[2],rect.x, rect.y)
      else
        draw_icon(QUEST_CONFIG::VALIDATEICONS[2],rect.x, rect.y)
      end
    else
      if $quests[@c_items[itemm]].second?
        draw_icon(QUEST_CONFIG::VALIDATESECONDICONS[0],rect.x, rect.y)
      else
        draw_icon(QUEST_CONFIG::VALIDATEICONS[0],rect.x , rect.y)
      end
    end
    string = @c_items[itemm]
    rect.width -= 4
    self.contents.draw_text(rect.x, rect.y, rect.width, WLH, string, 2)
  end
end


#==============================================================================
# ** Scene_Quest
#------------------------------------------------------------------------------
#  Cette classe fere le menu de quêtes
#==============================================================================
class Scene_Quest < Scene_Base
 
  #--------------------------------------------------------------------------
  # * Object Initialization
  #   
  #--------------------------------------------------------------------------
  def initialize(index = 0, menu = false)
    @menu = menu
    @index = index
  end
 
  #--------------------------------------------------------------------------
  # * Start processing
  #--------------------------------------------------------------------------
  def start
    super
    create_menu_background
    @type = Window_Quest_Type.new
    @type.visible = true
    @type.active = true
    @type.index = @index
    @quests = Window_Select_Quest.new(@index +1)
    @quests.active = false
    @quests.index = -1
    @desc_window = Window_Quest_Desc.new
    @title = Window_Quest_Title.new
    update_desc
  end
 
  #--------------------------------------------------------------------------
  # * Return to Original Screen
  #--------------------------------------------------------------------------
  def return_scene
    if @menu
      $scene = Scene_Menu.new(QUEST_CONFIG::MENU_NUMBER)
    else
      $scene = Scene_Map.new
    end
  end
 
  #--------------------------------------------------------------------------
  # * Terminate
  #--------------------------------------------------------------------------
  def terminate
    dispose_menu_background
    @type.dispose
    @quests.dispose
    @title.dispose
    @desc_window.dispose
  end

  #--------------------------------------------------------------------------
  # * Update Frame
  #--------------------------------------------------------------------------
  def update
    super
    update_menu_background
    @type.update
    @quests.update
    if @type.active
      update_type_selection
    elsif @quests.active
      update_quests_selection
    else
      update_desc_selection
    end
    if Input.trigger?(Input::A)
      Sound.play_cancel
      return_scene
    end
  end

  #--------------------------------------------------------------------------
  # * Update Type Selection
  #--------------------------------------------------------------------------
  def update_type_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      return_scene
    elsif Input.trigger?(Input::C)
      a = @type.index
      Sound.play_cursor
      @type.active = false
      @quests.dispose
      @quests = Window_Select_Quest.new(a + 1)
      @quests.active = true
      @quests.index = 0
    elsif Input.trigger?(Input::LEFT) or  Input.trigger?(Input::RIGHT)
        a = @type.index
        @quests.dispose
        @quests = Window_Select_Quest.new(a + 1)
        @quests.index = -1
        update_desc
    end
  end
 
  #--------------------------------------------------------------------------
  # * Update Quests Decription
  #--------------------------------------------------------------------------
  def update_desc
    case @type.index
    when 0
      @title.dispose
      @title = Window_Quest_Title.new(QUEST_CONFIG::QUEST_NAMEPRINCIP)
    when 1
      @title.dispose
      @title = Window_Quest_Title.new(QUEST_CONFIG::QUEST_NAMESECOND)
    when 2
      @title.dispose
      @title = Window_Quest_Title.new(QUEST_CONFIG::QUEST_NAMECOMP)
    when 3
      @title.dispose
      @title = Window_Quest_Title.new(QUEST_CONFIG::QUEST_NAMEFAIL)
    end
  end
  #--------------------------------------------------------------------------
  # * Update Quests Selection
  #--------------------------------------------------------------------------
  def update_quests_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      Sound.play_cursor
      @type.active = true
      @quests.active = false
      @quests.index = -1
      update_desc
      @desc_window.dispose
      @desc_window = Window_Quest_Desc.new
    elsif Input.trigger?(Input::C)
      if @quests.c_items[@quests.index] == nil
        Sound.play_buzzer
      else
        Sound.play_decision
        @desc_window.dispose
        @desc_window = Window_Quest_Desc.new(@quests.c_items[@quests.index])
        @title.dispose
        @title = Window_Quest_Title.new(@quests.c_items[@quests.index])
        @quests.active = false
        @type.active = false
      end
    end
  end
 
  #--------------------------------------------------------------------------
  # * Update Desc Selection
  #--------------------------------------------------------------------------
  def update_desc_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      Sound.play_cursor
      @quests.active = true
      update_desc
      @desc_window.dispose
      @desc_window = Window_Quest_Desc.new
    end
  end
end



#==============================================================================
# ** Scene_Title
#------------------------------------------------------------------------------
#  This class performs the title screen processing.
#==============================================================================
class Scene_Title < Scene_Base
 
  alias startupquest command_new_game
  #--------------------------------------------------------------------------
  # * Command: New Game
  #--------------------------------------------------------------------------
  def command_new_game
    startupquest
    $quests = {}
  end
end

#==============================================================================
# ** Scene_File
#------------------------------------------------------------------------------
#  This class performs the save and load screen processing.
#==============================================================================
class Scene_File < Scene_Base
 
  alias savequest write_save_data
  #--------------------------------------------------------------------------
  # * Write Save Data
  #    file : write file object (opened)
  #--------------------------------------------------------------------------
  def write_save_data(file)
    savequest(file)
    Marshal.dump($quests, file)
  end
 
  alias loadquest read_save_data
  #--------------------------------------------------------------------------
  # * Read Save Data
  #    file : file object for reading (opened)
  #--------------------------------------------------------------------------
  def read_save_data(file)
    $quests = Marshal.load(file)
    loadquest(file)
  end
end

Voici les image par à mettre dans le dossier Pictures de votre projet:
Spoiler:

[Script] Script de Quête Complete
[Script] Script de Quête Failed
[Script] Script de Quête Quest

Voici le script pour l'inclure au menu de base:
Quest_Menu à placer en dessous de Quest et au dessus de main
Spoiler:

Code:

#==============================================================================
# ** Quest Script dans le menu par  Skillo
#==============================================================================

#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#  This class performs the menu screen processing.
#==============================================================================

class Scene_Menu < Scene_Base

  #--------------------------------------------------------------------------
  # * Create Command Window
  #--------------------------------------------------------------------------
  def create_command_window
    s1 = Vocab::item
    s2 = Vocab::skill
    s3 = Vocab::equip
    s4 = Vocab::status
    s5 = QUEST_CONFIG::MENUNAME
    s6 = Vocab::save
    s7 = Vocab::game_end
    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
    @command_window.index = @menu_index
    if $game_party.members.size == 0          # If number of party members is 0
      @command_window.draw_item(0, false)    # Disable item
      @command_window.draw_item(1, false)    # Disable skill
      @command_window.draw_item(2, false)    # Disable equipment
      @command_window.draw_item(3, false)    # Disable status
    end
    if $game_system.save_disabled            # If save is forbidden
      @command_window.draw_item(5, false)    # Disable save
    end
  end
  #--------------------------------------------------------------------------
  # * Update Command Selection
  #--------------------------------------------------------------------------
  def update_command_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      $scene = Scene_Map.new
    elsif Input.trigger?(Input::C)
      if $game_party.members.size == 0 and @command_window.index < 4
        Sound.play_buzzer
        return
      elsif $game_system.save_disabled and @command_window.index == 4
        Sound.play_buzzer
        return
      end
      Sound.play_decision
      case @command_window.index
      when 0      # Item
        $scene = Scene_Item.new
      when 1,2,3  # Skill, equipment, status
        start_actor_selection
      when 4
        $scene = Scene_Quest.new(0, true)
      when 5      # Save
        $scene = Scene_File.new(true, false, false)
      when 6      # End Game
        $scene = Scene_End.new
      end
    end
  end
end

#==============================================================================
# ** Scene_File
#------------------------------------------------------------------------------
#  This class performs the save and load screen processing.
#==============================================================================

class Scene_File < Scene_Base
  #--------------------------------------------------------------------------
  # * Return to Original Screen
  #--------------------------------------------------------------------------
  def return_scene
    if @from_title
      $scene = Scene_Title.new
    elsif @from_event
      $scene = Scene_Map.new
    else
      $scene = Scene_Menu.new(5)
    end
  end
end

#==============================================================================
# ** Scene_End
#------------------------------------------------------------------------------
#  This class performs game end screen processing.
#==============================================================================

class Scene_End < Scene_Base
    #--------------------------------------------------------------------------
  # * Return to Original Screen
  #--------------------------------------------------------------------------
  def return_scene
    $scene = Scene_Menu.new(6)
  end
end

Et pour couronner le tout une petite démo:
http://www.mediafire.com/?iidozfdyg3g

Voilà laissez vos commentaires!


Dernière édition par Skillo le Sam 4 Sep 2010 - 22:39, édité 1 fois
Coco'
Coco'
Staffeux retraité

Nombre de messages : 6577
Age : 26
Localisation : Nord/Douai
Distinction : EL DICTATOR COCO'
Coco-Dieu en puissance

[Script] Script de Quête Magikarpe Grand gourou suppléant de la secte des MAGIKARP
Leader charismatique des 2beStaffieux

N°1 du forum
Président, vice-présidents et membres honoraires de la cour suprême du forum
Président de l'association des grosses distinctions CMB
Date d'inscription : 02/07/2008
https://www.rpgmakervx-fr.com

[Script] Script de Quête Empty Re: [Script] Script de Quête

le Mar 18 Mai 2010 - 17:33
Déplacé dans les scripts//ressources réservées.

Merci du partage, Skillo le grand scripteur ;D
dricc
dricc
Membre

Nombre de messages : 2757
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

[Script] Script de Quête Empty Re: [Script] Script de Quête

le Mar 25 Mai 2010 - 18:57
skillo ,

Pourrait-tu corriger la fin ?

def write_save_data(file)
savequest(file)
Marshal.dump($quests, file)
end

alias loadquest read_save_data
#--------------------------------------------------------------------------
# * Read Save Data
# file : file object for reading (opened)
#--------------------------------------------------------------------------
def read_save_data(file)
loadquest(file)
$quests = Marshal.load(file)
end

@modos : Je viens de voir qu'il y a des scripts de quete à la fois dans "menu" et dans "divers" . Pour moi , c'est plutot dans menu que ça devrait etre .
giratina1
giratina1
Membre

Nombre de messages : 242
Age : 26
Localisation : Ardèche
Distinction : aucune
Date d'inscription : 01/03/2010

[Script] Script de Quête Empty Re: [Script] Script de Quête

le Mar 25 Mai 2010 - 20:00
Tiens, tiens j'avais pas remarquer ce joli petit script, merci Skillo je cherchais justement un bon système de quêtes pour mon projet !
Natrix87
Natrix87
Membre

Nombre de messages : 16
Age : 24
Localisation : Limoges
Distinction : aucune
Date d'inscription : 14/08/2010

[Script] Script de Quête Empty Re: [Script] Script de Quête

le Sam 14 Aoû 2010 - 23:50
Moi sa bug quand je sauvegarde, puis comment on active une quêtes pourrez tu en dire plus ?
johantnjl
johantnjl
Membre

Nombre de messages : 3
Distinction : aucune
Date d'inscription : 28/12/2009

[Script] Script de Quête Empty Re: [Script] Script de Quête

le Sam 28 Aoû 2010 - 12:22
c'est vrai pourrait t-on cooriger le bug de la sauvegarde siouplait.
@natrix 87 Tout est expliqué ds le script 6non ya toujours la demo dont tu peut t'inspirer
Anonymous
Invité
Invité

[Script] Script de Quête Empty Re: [Script] Script de Quête

le Sam 28 Aoû 2010 - 12:24
Va te présenter d'abord
Arkhanos
Arkhanos
Membre

Nombre de messages : 66
Age : 25
Localisation : Derrière toi!
Distinction : aucune
Date d'inscription : 25/08/2010

[Script] Script de Quête Empty Re: [Script] Script de Quête

le Sam 28 Aoû 2010 - 18:58
Super script, vraiment très pratique, merci beaucoup! Very Happy
Seul petit bémol, il entre en conflit avec le script qui affiche temps de jeu+localisation dans le menu, mais c'est pas bien grave Smile
Note: Je viens de pas mal galérer avec ça avant de me rendre compte de mon étourderie alors je tiens quand même à la dire [Script] Script de Quête 339251 Ne mettez surtout pas d'apostrophes dans les énoncés des quêtes, ou le script plante ^^ (Par exemple: vous ne pouvez pas utiliser 'À l'aide' ou 'J'ai faim', etc)
Skillo
Skillo
Staffeux retraité

Nombre de messages : 526
Age : 30
Localisation : Rennes
Distinction : J'aime ce gars :P
(by Coco')
Scripteur apprenti, futur Berka !
(par Tretian)
Membre anonyme de la communauté, caché derrière son PC
(???)
super prof de script
[Dudu']
Résident permanent de la Chat Box
[Autoproclamé]
Adepte du XDDD [Yak' Very Happy]
Fanatique hystérique de Raymond le français [Un connu]
Date d'inscription : 19/01/2008

[Script] Script de Quête Empty Re: [Script] Script de Quête

le Dim 29 Aoû 2010 - 2:23
Correction, on peut mettre des apostrophes mais du coup faut mettre "À l'aide" au lieu de 'À l'aide'. Et oui c'est aussi simple que ça ^^


Dernière édition par Skillo le Dim 29 Aoû 2010 - 14:26, édité 1 fois
Balbereith
Balbereith
Staffeux retraité

Nombre de messages : 4129
Age : 27
Localisation : dans l'ombre...
Distinction : Péripatéticienne à temps perdu
Helly n°666 [Coco' ;D]
mon ptit balbounet p'tit jardinier en herbe(les râteaux ça le connait) [tonton Adurna]
Cultivateur professionnel de la commu' (il a de bons outils en de nombreux exemplaires [Script] Script de Quête 522164 ) [Coco' Smile]
Date d'inscription : 13/05/2009

[Script] Script de Quête Empty Re: [Script] Script de Quête

le Dim 29 Aoû 2010 - 14:14
C'est pour savoir... si on veut faire un système de vie, je m'explique, si par exemple je joue il fait jour, j'active une série de quète en suite je décide 'en faire une ou deux sur les quatres activés je vais au plumard pour finir la journée, est ce que les quête peuvent être désactiver tous en restant dans le menu en compléter, et ainsi les refaires plus tards selon un cicle ?
Arkhanos
Arkhanos
Membre

Nombre de messages : 66
Age : 25
Localisation : Derrière toi!
Distinction : aucune
Date d'inscription : 25/08/2010

[Script] Script de Quête Empty Re: [Script] Script de Quête

le Dim 29 Aoû 2010 - 23:53
Ha merci de l'info Skillo Very Happy
Je suis un boulet, mais je me soigne hm [Script] Script de Quête 522164

Balby >> Tu parles d'un système de quêtes répétables ou alors j'ai pas compris ? scratch
Balbereith
Balbereith
Staffeux retraité

Nombre de messages : 4129
Age : 27
Localisation : dans l'ombre...
Distinction : Péripatéticienne à temps perdu
Helly n°666 [Coco' ;D]
mon ptit balbounet p'tit jardinier en herbe(les râteaux ça le connait) [tonton Adurna]
Cultivateur professionnel de la commu' (il a de bons outils en de nombreux exemplaires [Script] Script de Quête 522164 ) [Coco' Smile]
Date d'inscription : 13/05/2009

[Script] Script de Quête Empty Re: [Script] Script de Quête

le Lun 30 Aoû 2010 - 9:22
exact Arkhanos ^^, c'est vrai que pour des quêtes secondaires avec une récompense spécifique, se serait sympa de la faire plusieurs fois, avec un certains temps entre les deux ^^
Arkhanos
Arkhanos
Membre

Nombre de messages : 66
Age : 25
Localisation : Derrière toi!
Distinction : aucune
Date d'inscription : 25/08/2010

[Script] Script de Quête Empty Re: [Script] Script de Quête

le Lun 30 Aoû 2010 - 13:07
J'ai testé: quand tu as une quête accomplie, si tu donnes une autre quête identique, alors celle-ci disparaît de l'onglet 'Quêtes accomplies' et revient dans le 'Quêtes en cours'. Pour le laps de temps entre le moment où tu l'as finis et celle où tu peux la refaire, ça doit être gérable par events...
J'espère avoir répondu à ta question tongue
Balbereith
Balbereith
Staffeux retraité

Nombre de messages : 4129
Age : 27
Localisation : dans l'ombre...
Distinction : Péripatéticienne à temps perdu
Helly n°666 [Coco' ;D]
mon ptit balbounet p'tit jardinier en herbe(les râteaux ça le connait) [tonton Adurna]
Cultivateur professionnel de la commu' (il a de bons outils en de nombreux exemplaires [Script] Script de Quête 522164 ) [Coco' Smile]
Date d'inscription : 13/05/2009

[Script] Script de Quête Empty Re: [Script] Script de Quête

le Lun 30 Aoû 2010 - 13:12
Ok merci Arkhanos ^^
xavioo
xavioo
Membre

Nombre de messages : 136
Age : 22
Localisation : Montreal
Date d'inscription : 23/06/2010

[Script] Script de Quête Empty Re: [Script] Script de Quête

le Sam 4 Sep 2010 - 1:57
SOS help!

j'ai un probleme que je n'arrive pas a regler

voila une demo j'espere que vous pouvez m'aidez

http://www.megaupload.com/?d=AQUQ3H9U
Darky Face
Darky Face
Membre

Nombre de messages : 741
Age : 23
Localisation : Dans un tigre.
Distinction : Champion mondial paralympique au 100 m. roulettes
Grosse CMB (Grosse Contusion des Membres, Ballot)
Adepte de Chatroulette.
Adjuvant-chef du club masochiste de la commu'.
Date d'inscription : 22/07/2008

[Script] Script de Quête Empty Re: [Script] Script de Quête

le Sam 4 Sep 2010 - 2:08
Pour ça, il faut aller dans Entraide.
Une simple démo ne suffit pas, explique !
Skillo
Skillo
Staffeux retraité

Nombre de messages : 526
Age : 30
Localisation : Rennes
Distinction : J'aime ce gars :P
(by Coco')
Scripteur apprenti, futur Berka !
(par Tretian)
Membre anonyme de la communauté, caché derrière son PC
(???)
super prof de script
[Dudu']
Résident permanent de la Chat Box
[Autoproclamé]
Adepte du XDDD [Yak' Very Happy]
Fanatique hystérique de Raymond le français [Un connu]
Date d'inscription : 19/01/2008

[Script] Script de Quête Empty Re: [Script] Script de Quête

le Sam 4 Sep 2010 - 22:40
Si c'est un problème avec les sauvegarde il suffit juste de prendre le script qui est dans le post et pas celui de la démo, je n'ai pas encore pris le temps de la remplacée.
xavioo
xavioo
Membre

Nombre de messages : 136
Age : 22
Localisation : Montreal
Date d'inscription : 23/06/2010

[Script] Script de Quête Empty Re: [Script] Script de Quête

le Dim 5 Sep 2010 - 15:54
Merci Skillo ca marche bien pour sauvegarder mais pour charger c'est une toutes autre affaire

ca t'envoie a ce script de base (Scene_File) ligne 231


Code:
#==============================================================================
# ** Scene_File
#------------------------------------------------------------------------------
#  This class performs the save and load screen processing.
#==============================================================================

class Scene_File < Scene_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #    saving    : save flag (if false, load screen)
  #    from_title : flag: it was called from "Continue" on the title screen
  #    from_event : flag: it was called from the "Call Save Screen" event
  #--------------------------------------------------------------------------
  def initialize(saving, from_title, from_event)
    @saving = saving
    @from_title = from_title
    @from_event = from_event
  end
  #--------------------------------------------------------------------------
  # * Start processing
  #--------------------------------------------------------------------------
  def start
    super
    create_menu_background
    @help_window = Window_Help.new
    create_savefile_windows
    if @saving
      @index = $game_temp.last_file_index
      @help_window.set_text(Vocab::SaveMessage)
    else
      @index = self.latest_file_index
      @help_window.set_text(Vocab::LoadMessage)
    end
    @savefile_windows[@index].selected = true
  end
  #--------------------------------------------------------------------------
  # * Termination Processing
  #--------------------------------------------------------------------------
  def terminate
    super
    dispose_menu_background
    @help_window.dispose
    dispose_item_windows
  end
  #--------------------------------------------------------------------------
  # * Return to Original Screen
  #--------------------------------------------------------------------------
  def return_scene
    if @from_title
      $scene = Scene_Title.new
    elsif @from_event
      $scene = Scene_Map.new
    else
      $scene = Scene_Menu.new(4)
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    update_menu_background
    @help_window.update
    update_savefile_windows
    update_savefile_selection
  end
  #--------------------------------------------------------------------------
  # * Create Save File Window
  #--------------------------------------------------------------------------
  def create_savefile_windows
    @savefile_windows = []
    for i in 0..3
      @savefile_windows.push(Window_SaveFile.new(i, make_filename(i)))
    end
    @item_max = 4
  end
  #--------------------------------------------------------------------------
  # * Dispose of Save File Window
  #--------------------------------------------------------------------------
  def dispose_item_windows
    for window in @savefile_windows
      window.dispose
    end
  end
  #--------------------------------------------------------------------------
  # * Update Save File Window
  #--------------------------------------------------------------------------
  def update_savefile_windows
    for window in @savefile_windows
      window.update
    end
  end
  #--------------------------------------------------------------------------
  # * Update Save File Selection
  #--------------------------------------------------------------------------
  def update_savefile_selection
    if Input.trigger?(Input::C)
      determine_savefile
    elsif Input.trigger?(Input::B)
      Sound.play_cancel
      return_scene
    else
      last_index = @index
      if Input.repeat?(Input::DOWN)
        cursor_down(Input.trigger?(Input::DOWN))
      end
      if Input.repeat?(Input::UP)
        cursor_up(Input.trigger?(Input::UP))
      end
      if @index != last_index
        Sound.play_cursor
        @savefile_windows[last_index].selected = false
        @savefile_windows[@index].selected = true
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Confirm Save File
  #--------------------------------------------------------------------------
  def determine_savefile
    if @saving
      Sound.play_save
      do_save
    else
      if @savefile_windows[@index].file_exist
        Sound.play_load
        do_load
      else
        Sound.play_buzzer
        return
      end
    end
    $game_temp.last_file_index = @index
  end
  #--------------------------------------------------------------------------
  # * Move cursor down
  #    wrap : Wraparound allowed
  #--------------------------------------------------------------------------
  def cursor_down(wrap)
    if @index < @item_max - 1 or wrap
      @index = (@index + 1) % @item_max
    end
  end
  #--------------------------------------------------------------------------
  # * Move cursor up
  #    wrap : Wraparound allowed
  #--------------------------------------------------------------------------
  def cursor_up(wrap)
    if @index > 0 or wrap
      @index = (@index - 1 + @item_max) % @item_max
    end
  end
  #--------------------------------------------------------------------------
  # * Create Filename
  #    file_index : save file index (0-3)
  #--------------------------------------------------------------------------
  def make_filename(file_index)
    return "Save#{file_index + 1}.rvdata"
  end
  #--------------------------------------------------------------------------
  # * Select File With Newest Timestamp
  #--------------------------------------------------------------------------
  def latest_file_index
    index = 0
    latest_time = Time.at(0)
    for i in 0...@savefile_windows.size
      if @savefile_windows[i].time_stamp > latest_time
        latest_time = @savefile_windows[i].time_stamp
        index = i
      end
    end
    return index
  end
  #--------------------------------------------------------------------------
  # * Execute Save
  #--------------------------------------------------------------------------
  def do_save
    file = File.open(@savefile_windows[@index].filename, "wb")
    write_save_data(file)
    file.close
    return_scene
  end
  #--------------------------------------------------------------------------
  # * Execute Load
  #--------------------------------------------------------------------------
  def do_load
    file = File.open(@savefile_windows[@index].filename, "rb")
    read_save_data(file)
    file.close
    $scene = Scene_Map.new
    RPG::BGM.fade(1500)
    Graphics.fadeout(60)
    Graphics.wait(40)
    @last_bgm.play
    @last_bgs.play
  end
  #--------------------------------------------------------------------------
  # * Write Save Data
  #    file : write file object (opened)
  #--------------------------------------------------------------------------
  def write_save_data(file)
    characters = []
    for actor in $game_party.members
      characters.push([actor.character_name, actor.character_index])
    end
    $game_system.save_count += 1
    $game_system.version_id = $data_system.version_id
    @last_bgm = RPG::BGM::last
    @last_bgs = RPG::BGS::last
    Marshal.dump(characters,          file)
    Marshal.dump(Graphics.frame_count, file)
    Marshal.dump(@last_bgm,            file)
    Marshal.dump(@last_bgs,            file)
    Marshal.dump($game_system,        file)
    Marshal.dump($game_message,        file)
    Marshal.dump($game_switches,      file)
    Marshal.dump($game_variables,      file)
    Marshal.dump($game_self_switches,  file)
    Marshal.dump($game_actors,        file)
    Marshal.dump($game_party,          file)
    Marshal.dump($game_troop,          file)
    Marshal.dump($game_map,            file)
    Marshal.dump($game_player,        file)
  end
  #--------------------------------------------------------------------------
  # * Read Save Data
  #    file : file object for reading (opened)
  #--------------------------------------------------------------------------
  def read_save_data(file)
    characters          = Marshal.load(file)
    Graphics.frame_count = Marshal.load(file)
    @last_bgm            = Marshal.load(file)
    @last_bgs            = Marshal.load(file)
    $game_system        = Marshal.load(file)
    $game_message        = Marshal.load(file)
    $game_switches      = Marshal.load(file)
    $game_variables      = Marshal.load(file)
    $game_self_switches  = Marshal.load(file)
    $game_actors        = Marshal.load(file)
    $game_party          = Marshal.load(file)
    $game_troop          = Marshal.load(file)
    $game_map            = Marshal.load(file)
    $game_player        = Marshal.load(file)
    if $game_system.version_id != $data_system.version_id
      $game_map.setup($game_map.map_id)
      $game_player.center($game_player.x, $game_player.y)
    end
  end
end
Thotomato
Thotomato
Membre

Nombre de messages : 106
Age : 22
Distinction : aucune
Date d'inscription : 28/10/2010

[Script] Script de Quête Empty Re: [Script] Script de Quête

le Sam 4 Déc 2010 - 20:22
Bonjour.
Désolé si je fais un nécropst, mais j'aimerai aussi savoir comment régler le problème pour charger une partie, vu que le script marche très bien, sauf ça.
Skillo
Skillo
Staffeux retraité

Nombre de messages : 526
Age : 30
Localisation : Rennes
Distinction : J'aime ce gars :P
(by Coco')
Scripteur apprenti, futur Berka !
(par Tretian)
Membre anonyme de la communauté, caché derrière son PC
(???)
super prof de script
[Dudu']
Résident permanent de la Chat Box
[Autoproclamé]
Adepte du XDDD [Yak' Very Happy]
Fanatique hystérique de Raymond le français [Un connu]
Date d'inscription : 19/01/2008

[Script] Script de Quête Empty Re: [Script] Script de Quête

le Sam 4 Déc 2010 - 21:38
Petite précision, une fois le script placé vous ne pouvez plus charger les sauvegardes datant d'avant sa mise en place. Avant de dire que le chargement ne marche pas assurez vous que vous chargez bien une partie faite après installation du script.
Thotomato
Thotomato
Membre

Nombre de messages : 106
Age : 22
Distinction : aucune
Date d'inscription : 28/10/2010

[Script] Script de Quête Empty Re: [Script] Script de Quête

le Dim 5 Déc 2010 - 10:59
Oui, j'ai installé le script, j'ai joué, j'ai sauvegardé, mais je ne peux pas charger quand même...
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum