Poulet carnivore Lv.2
Age : 28 Inscrit le : 24/07/2011 Messages : 17
| Sujet: [RESOLU] Comment créer une quête Jeu 11 Aoû 2011 - 15:47 | |
| Bonjour, je vous demande de m'expliquer comment on créer une quête et comment on la met dans le menu (j'ai pris le script) s'il vous plait, ne me dite pas de chercher car je l'est déjà fait mais je ne comprend pas comment on fait. Je ne sais pas si j'ai était asser clair mais c'est asser compréhensible. Merci d'avance
Dernière édition par Zaknafein le Sam 27 Aoû 2011 - 9:34, édité 1 fois |
|
Templier Lv.15
Age : 26 Inscrit le : 30/01/2011 Messages : 1273
| Sujet: Re: [RESOLU] Comment créer une quête Jeu 11 Aoû 2011 - 17:14 | |
| Il y a toutes les indications à savoir dans la suite du topic sur lequel le script a été posté. Cette question a été posée dix mille fois ^^ - Zaknafein a écrit:
- ne me dite pas de chercher car je l'est déjà fait
désolé de te le dire mais faut croire que non... A pluch' |
|
Poulet carnivore Lv.2
Age : 28 Inscrit le : 24/07/2011 Messages : 17
| Sujet: Re: [RESOLU] Comment créer une quête Ven 12 Aoû 2011 - 9:37 | |
| j'ai chercher mais je ne comprend pas c'est différent |
|
Invité
| Sujet: Re: [RESOLU] Comment créer une quête Ven 12 Aoû 2011 - 9:42 | |
| - Zaknafein a écrit:
- j'ai chercher mais je ne comprend pas c'est différent
Ben alors si c'est cela ton problème, met nous donc un lien vers le topic que t'as pas compris avec une explication de pourquoi t'as pas compris, et là on cherchera à répondre à ta question. Parce que même si certains ici sont bon en making (ahah, qui ?), cela ne leur donne par une capacité "clairvoyance" qui leur permettrait de répondre aux questions que t'as pas encore posée... Enfin, sur ce, bonne continuation !! |
|
Poulet carnivore Lv.2
Age : 28 Inscrit le : 24/07/2011 Messages : 17
| Sujet: Re: [RESOLU] Comment créer une quête Ven 12 Aoû 2011 - 11:24 | |
| Je ne me souvient plus de quel topic c'est mais j'ai le script si sa peut aider - Spoiler:
=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, 179, 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 = [99, 101, 97]
# 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 = [100, 102, 96]
#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 create_contents @item_max = @icons.size 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 a = @items @c_items = [] for it in 0...@items.size if include?(a[it]) @c_items.push(a[it]) end end @column_max = 1 @commands = @c_items @item_max = @commands.size create_contents refresh end
#-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear for it in 0...@item_max draw_opt(it) end 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) loadquest(file) $quests = Marshal.load(file) end end
et - Spoiler:
## All this does is make the quest menu be accessible from the menu, you ## ## have to use this ##
#============================================================================== # ** 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 == 5 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 # Quests $scene = Scene_Quest.new when 5 # Save $scene = Scene_File.new(true, false, false) when 6 # End Game $scene = Scene_End.new end end end end
Si sa se fait c'est très simple mais je ne suis pas très bon en script |
|
Habitant Lv.6
Age : 27 Inscrit le : 21/07/2011 Messages : 103
| Sujet: Re: [RESOLU] Comment créer une quête Ven 26 Aoû 2011 - 13:22 | |
| Exemple: tu créé un événement Tu met un dialogue : "tu peut m'aider a chercher des pommes" si Oui Appel de script et tu met ca $quests['Chercher les pommes'] = Quest.new(['Aider le gosse', 'Chercher les pommes',], ['Chercher les pommes',])
Pour dans le menu je sais pas mais crée un journal de quete en objet qui appele un event commun ou ya ca en appel de script: $scene = Scene_Quest.new En espérant t'avoir aidé escusez moi pour mon orthographe...
|
|
Poulet carnivore Lv.2
Age : 28 Inscrit le : 24/07/2011 Messages : 17
| Sujet: Re: [RESOLU] Comment créer une quête Ven 26 Aoû 2011 - 14:37 | |
| ok c'est bon merci |
|
Habitant Lv.6
Age : 27 Inscrit le : 21/07/2011 Messages : 103
| Sujet: Re: [RESOLU] Comment créer une quête Sam 27 Aoû 2011 - 8:45 | |
| Met [RESOLU] dans le nom du sujet Tu as les explication du script dans les premières lignes |
|