Partagez
Aller en bas
avatar
Deck'
Membre

Nombre de messages : 52
Distinction : aucune
Date d'inscription : 29/05/2010

Modification de script[résolu]

le Sam 19 Mar 2011 - 14:46
Salut à tous !
(Ce message s'adresse surtout aux scripteurs).
J'aimerai avoir un petit coup de main pour une modification de script, j'ai deja fait les modif que je souhaitais,
mais il y a encore une chose qui ne me convient pas.

Voici en images :
Spoiler:

Voici le script :
Spoiler:
Code:
=begin
########################## Breadlord's Quets Script ############################
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, 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"

  # 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]

 
  #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"
 
  #Ici sera defini le nom apparaissant dans la description de l'onglet  des quêtes secondaires
  # QUEST_NAMESECOND = nom

 
  #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 = 3
 
  # 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, :rec, :comp, :sub_text, :pic
#--------------------------------------------------------------------------
# * Quête Initialization
# desc : tableau des descriptions
# sub : tableau des tâches
# pic : window width
#--------------------------------------------------------------------------
def initialize(desc = [''], sub = [''], rec = [''], second = false)
@desc = desc
@sub = {}
@rec = rec
@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
for i in 0..$quests[index].rec.size - 1
c = $quests[index].rec[i]
self.contents.draw_text(0, WLH*(i + $quests[index].desc.size + 1), self.width - 40, WLH, c, 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].rec.size + 3))
self.contents.draw_text(0, WLH*(i + $quests[index].rec.size + 3), 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
return $quests[key].complete?
when 3
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_Menu.new(4)
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_NAMECOMP)
when 2
@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

Donc, j'ai rajouter les récompenses (rec) dans la description de quêtes, et j'aimerai (et je n'y arrive pas ), comme
sur l'image, que les taches (sub) et les recompenses (rec) soient inversées.
C'est a dire les récompenses sous les taches a accomplir, et les taches sous la description (desc) de la quete.

Voila voila, si quelqu'un pourrai me donner un coup de main, ce serai très sympa

Merci d'avance Smile


Dernière édition par Deck' le Dim 20 Mar 2011 - 11:16, édité 1 fois
avatar
Maloume
Membre

Nombre de messages : 623
Age : 24
Localisation : Marseille mon con
Distinction : aucune
Date d'inscription : 28/05/2010

Re: Modification de script[résolu]

le Sam 19 Mar 2011 - 15:35
Houla alors moi c'est pas mon truc seulement j'ai déja essayé de l'utiliser comment on l'appelle le script ?
EDIT : Désolé, j'avais pas vu le script ;p
avatar
Deck'
Membre

Nombre de messages : 52
Distinction : aucune
Date d'inscription : 29/05/2010

Re: Modification de script[résolu]

le Sam 19 Mar 2011 - 15:36
C'est marqué dans le script : $scene = Scene_Quest.new
avatar
Maloume
Membre

Nombre de messages : 623
Age : 24
Localisation : Marseille mon con
Distinction : aucune
Date d'inscription : 28/05/2010

Re: Modification de script[résolu]

le Sam 19 Mar 2011 - 15:39
Oui merci sa je sais je parlais de comment appeller une quête mais c'est bon j'ai trouvé
avatar
Deck'
Membre

Nombre de messages : 52
Distinction : aucune
Date d'inscription : 29/05/2010

Re: Modification de script[résolu]

le Dim 20 Mar 2011 - 11:16
Problème résolu Smile
avatar
Elisa'
Staffeux retraité

Nombre de messages : 2924
Age : 20
Localisation : Par là-bas !
Distinction : Mon héritière que je chéris
[Coco' Smile]
Plus que 2 ans avant d'épouser Coco' ! Compte à rebours lancé !
[Auto-distinction]

Adepte du "Je le savais" alors qu'elle le savait pas.
Date d'inscription : 30/05/2009

Re: Modification de script[résolu]

le Jeu 31 Mar 2011 - 11:03
Résolu donc déplacé Smile

_________________


Cliquez ici pour voter pour la commu'
Contenu sponsorisé

Re: Modification de script[résolu]

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