- SkilloStaffeux retraité
- Nombre de messages : 526
Age : 35
Localisation : Rennes
Distinction : J'aime ce gars
(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' ]
Fanatique hystérique de Raymond le français [Un connu]
Date d'inscription : 19/01/2008
[Script] Script de Quête
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
Voici les image par à mettre dans le dossier Pictures de votre projet:
Voici le script pour l'inclure au menu de base:
Quest_Menu à placer en dessous de Quest et au dessus de main
Et pour couronner le tout une petite démo:
http://www.mediafire.com/?iidozfdyg3g
Voilà laissez vos commentaires!
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:
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!
- Coco'Staffeux retraité
- Nombre de messages : 6578
Age : 31
Localisation : Nord/Douai
Distinction : EL DICTATOR COCO'
Coco-Dieu en puissance
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
Re: [Script] Script de Quête
Mar 18 Mai 2010 - 17:33
Déplacé dans les scripts//ressources réservées.
Merci du partage, Skillo le grand scripteur ;D
Merci du partage, Skillo le grand scripteur ;D
- driccMembre
- Nombre de messages : 2760
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009
Re: [Script] Script de Quête
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 .
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 .
- giratina1Membre
- Nombre de messages : 242
Age : 31
Localisation : Ardèche
Distinction : aucune
Date d'inscription : 01/03/2010
Re: [Script] Script de Quête
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 !
- Natrix87Membre
- Nombre de messages : 16
Age : 29
Localisation : Limoges
Distinction : aucune
Date d'inscription : 14/08/2010
Re: [Script] Script de Quête
Sam 14 Aoû 2010 - 23:50
Moi sa bug quand je sauvegarde, puis comment on active une quêtes pourrez tu en dire plus ?
- johantnjlMembre
- Nombre de messages : 3
Distinction : aucune
Date d'inscription : 28/12/2009
Re: [Script] Script de Quête
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
@natrix 87 Tout est expliqué ds le script 6non ya toujours la demo dont tu peut t'inspirer
- ArkhanosMembre
- Nombre de messages : 66
Age : 30
Localisation : Derrière toi!
Distinction : aucune
Date d'inscription : 25/08/2010
Re: [Script] Script de Quête
Sam 28 Aoû 2010 - 18:58
Super script, vraiment très pratique, merci beaucoup!
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
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 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)
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
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 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)
- SkilloStaffeux retraité
- Nombre de messages : 526
Age : 35
Localisation : Rennes
Distinction : J'aime ce gars
(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' ]
Fanatique hystérique de Raymond le français [Un connu]
Date d'inscription : 19/01/2008
Re: [Script] Script de Quête
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 ^^
- BalbereithStaffeux retraité
- Nombre de messages : 4129
Age : 32
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 ) [Coco' ]
Date d'inscription : 13/05/2009
Re: [Script] Script de Quête
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 ?
- ArkhanosMembre
- Nombre de messages : 66
Age : 30
Localisation : Derrière toi!
Distinction : aucune
Date d'inscription : 25/08/2010
Re: [Script] Script de Quête
Dim 29 Aoû 2010 - 23:53
Ha merci de l'info Skillo
Je suis un boulet, mais je me soigne hm
Balby >> Tu parles d'un système de quêtes répétables ou alors j'ai pas compris ?
Je suis un boulet, mais je me soigne hm
Balby >> Tu parles d'un système de quêtes répétables ou alors j'ai pas compris ?
- BalbereithStaffeux retraité
- Nombre de messages : 4129
Age : 32
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 ) [Coco' ]
Date d'inscription : 13/05/2009
Re: [Script] Script de Quête
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 ^^
- ArkhanosMembre
- Nombre de messages : 66
Age : 30
Localisation : Derrière toi!
Distinction : aucune
Date d'inscription : 25/08/2010
Re: [Script] Script de Quête
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
J'espère avoir répondu à ta question
- BalbereithStaffeux retraité
- Nombre de messages : 4129
Age : 32
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 ) [Coco' ]
Date d'inscription : 13/05/2009
Re: [Script] Script de Quête
Lun 30 Aoû 2010 - 13:12
Ok merci Arkhanos ^^
- xaviooMembre
- Nombre de messages : 136
Age : 27
Localisation : Montreal
Date d'inscription : 23/06/2010
Re: [Script] Script de Quête
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
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 FaceMembre
- Nombre de messages : 741
Age : 28
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
Re: [Script] Script de Quête
Sam 4 Sep 2010 - 2:08
Pour ça, il faut aller dans Entraide.
Une simple démo ne suffit pas, explique !
Une simple démo ne suffit pas, explique !
- SkilloStaffeux retraité
- Nombre de messages : 526
Age : 35
Localisation : Rennes
Distinction : J'aime ce gars
(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' ]
Fanatique hystérique de Raymond le français [Un connu]
Date d'inscription : 19/01/2008
Re: [Script] Script de Quête
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.
- xaviooMembre
- Nombre de messages : 136
Age : 27
Localisation : Montreal
Date d'inscription : 23/06/2010
Re: [Script] Script de Quête
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
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
- ThotomatoMembre
- Nombre de messages : 106
Age : 27
Distinction : aucune
Date d'inscription : 28/10/2010
Re: [Script] Script de Quête
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.
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.
- SkilloStaffeux retraité
- Nombre de messages : 526
Age : 35
Localisation : Rennes
Distinction : J'aime ce gars
(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' ]
Fanatique hystérique de Raymond le français [Un connu]
Date d'inscription : 19/01/2008
Re: [Script] Script de Quête
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.
- ThotomatoMembre
- Nombre de messages : 106
Age : 27
Distinction : aucune
Date d'inscription : 28/10/2010
Re: [Script] Script de Quête
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...
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum