Partagez
Aller en bas
Nozvez
Nozvez
Membre

Nombre de messages : 354
Distinction : aucune
Date d'inscription : 16/03/2012

Problème de Script [résolu] Empty Problème de Script [résolu]

le Mar 22 Jan 2013 - 14:27
J'ai installé ce script :

Spoiler:

#==============================================================================
# VARIABLE_QUESTS
# Author Molegato
# Version 1.1
#------------------------------------------------------------------------------
# Just a simple menu where some variable-based quests are shown
#------------------------------------------------------------------------------
# INSTRUCTIONS
#
# You map each quest to a variable
# If the variable value is 0, la quête n'apparaît pas dans le menu
# If the variable value is 1, elle apparaît comme «non résolue»
# If the variable value is 2, elle apparaît comme «active»
# If the variable value is 3 or greater, elle apparaît comme "résolue"
#
# Any quest on 'unsolved' state can turn into 'active' by selecting it
# on the quest menu, and only a single quest can be active at any time.
#
# To call the menu, use SceneManager.call(Scene_Quests) on a script call,
# you can directly program it on your custom menu, or put it on a common
# event attached to an item or skill, for making it easier to access.
#==============================================================================

$imported = {} if $imported.nil?
$imported['Molegato-VarQuests'] = true

#==============================================================================
# CONFIGURATION, YOU CAN TOUCH THIS
#==============================================================================
module MOLEGATO_QUESTS
# Enable quest activation?
QUEST_ACTIVATION=true
# text shown to indicate a quest is not cleared
TEXT_UNSOLVED="-Non Résolue-"
# text sown to indicate a quest is cleared
TEXT_SOLVED="-Résolue-"
# text sown to indicate a quest is activated
TEXT_ACTIVE="-En Cours-"
# color of the text in both cases
COLOR_SOLVED=1
COLOR_UNSOLVED=2
COLOR_ACTIVE=3

#list of quests. Please follow the pattern shown on the commentary.
QUEST_DATA=[
#name #var. #icon #image #description
#block for long text
["first quest" ,21 ,1 ,"" ,"this is a first quest set up for testing.",
"yadda yadda yadda yadda
more yadda yadda
and a bit of bla bla blah"],

["second quest" ,22 ,2 ,"window" ,"just another quest",
"yadda yadda yadda yadda
more yadda yadda
and a bit of bla bla blah"],

["super quest" ,23 ,3 ,"window" ,"whatever. just keep going",
"yadda yadda yadda yadda
more yadda yadda
and a bit of bla bla blah"],
]
end
#==============================================================================
# END OF CONFIGURATION. EVERYTHING UNDER HERE IS A HELLISH MESS OF DEFICIENT
# AMATEUR SCRIPTING. BE AWARE THAT MESSING WITH IT CAN RESULT IN DISASTER
#==============================================================================
#==============================================================================
# ■ Scene_quests
#==============================================================================

class Scene_Quests < Scene_MenuBase
def start
super
create_help_window
create_info_window
create_item_window
end
#--------------------------------------------------------------------------
# ● create windows
#--------------------------------------------------------------------------
def create_item_window
@item_window = Window_QuestList.new(0, @help_window.height,Graphics.width/2,Graphics.height-@help_window.height)
@item_window.viewport = @viewport
@item_window.help_window = @help_window
@item_window.set_handler(:cancel, method(:return_scene))
@item_window.set_handler(:pagedown, method(:next_actor))
@item_window.set_handler(:pageup, method(:prev_actor))
@item_window.set_handler(:ok, method(:activate_quest))
@item_window.active=true
@info_window.window=@item_window
@info_window.refresh
end
def create_info_window
@info_window = Window_Quest_Status.new(Graphics.width/2,@help_window.height,Graphics.width/2,Graphics.height-@help_window.height)
@info_window.viewport = @viewport
end

def update
super
@info_window.update
end

def activate_quest

return if MOLEGATO_QUESTS::QUEST_ACTIVATION==false
if $game_variables[@item_window.item[1]]==1
$game_variables[@item_window.item[1]]=2
elsif $game_variables[@item_window.item[1]]==2
$game_variables[@item_window.item[1]]=1
end
MOLEGATO_QUESTS::QUEST_DATA.each do |each|
$game_variables[each[1]]=1 if $game_variables[each[1]]==2 and each[1]!=@item_window.item[1]
@item_window.activate
@item_window.refresh
@info_window.refresh
end
end

end

#==============================================================================
# ■ Window_QuestList
#==============================================================================

class Window_QuestList < Window_Selectable

def initialize(x, y, width, height)
super
refresh
@index=0 if item_max>0
end

def col_max
return 1
end

def item_max
@data ? @data.size : 1
end

def item
@data && index >= 0 ? @data[index] : nil
end

def make_item_list
@data = []
for i in 0..MOLEGATO_QUESTS::QUEST_DATA.size-1
if $game_variables[MOLEGATO_QUESTSQUEST_DATA[i][1]]!=0
quest = MOLEGATO_QUESTS::QUEST_DATA[i]
@data.push(quest)
end
end
end

def draw_item(index)
current_item = @data[index]
if current_item
rect = item_rect(index)
rect.width -= 4
rect.x+=24
enableicon=false
enableicon=true if $game_variables[current_item[1]]>1
draw_icon(current_item[2],0,rect.y,enableicon)
change_color(text_color(MOLEGATO_QUESTS::COLOR_ACTIVE)) if $game_variables[current_item[1]]==2
draw_text(rect, current_item[0])
change_color(normal_color)
end
end

def update_help
@help_window.set_text(item[4]) if item
end

def refresh
make_item_list
create_contents
draw_all_items
end

end

#==============================================================================
# ■ Window_Quest_Status
#==============================================================================

class Window_Quest_Status < Window_Selectable
attr_accessor :index
attr_accessor :window

def initialize(x, y, width, height)
super
@index=0
end

def refresh
contents.clear
#draw quest name
return if !window.item
change_color(system_color)
draw_text(0, 0, contents.width, line_height, window.item[0],1)
#draw if solved
if $game_variables[window.item[1]]>2
change_color(text_color(MOLEGATO_QUESTS::COLOR_SOLVED))
draw_text(0, line_height, contents.width, line_height, MOLEGATO_QUESTS::TEXT_SOLVED,0)
elsif $game_variables[window.item[1]]>1
change_color(text_color(MOLEGATO_QUESTS::COLOR_ACTIVE))
draw_text(0, line_height, contents.width, line_height, MOLEGATO_QUESTS::TEXT_ACTIVE,0)
else
change_color(text_color(MOLEGATO_QUESTS::COLOR_UNSOLVED))
draw_text(0, line_height, contents.width, line_height, MOLEGATO_QUESTS::TEXT_UNSOLVED,0)
end
#draw image, if must
if not window.item[3].empty?
height_gap=draw_system(window.item[3],contents.width/2,48,0.5,0)[3]
else
height_gap=48
end

#draw big text block
change_color(normal_color)
textarray=window.item[5].split("\n")
for i in 0..textarray.size-1
draw_text(0,height_gap+(line_height*i),contents.width,line_height,textarray[i])
end

end


def update
super
if @index and @window and @index!=@window.index
@index=@window.index
refresh
end
end

end

Il marche presque parfaitement. Mon problème est que lorsque j'ouvre le menu des quêtes et que je tente de sélectionner la quête suivante avec flèche du bas du clavier ce message d'erreur s'affiche : et comme je n'y connais rien en RGSS...

Spoiler:
Problème de Script [résolu] Sans_t14

La ligne exacte qui pose problème :

Spoiler:
height_gap=draw_system(window.item[3],contents.width/2,48,0.5,0)[3]

La ligne étant dans ce bloc :

Spoiler:
#draw image, if must
if not window.item[3].empty?
height_gap=draw_system(window.item[3],contents.width/2,48,0.5,0)[3]
else
height_gap=48
end


EDIT : Apparemment le problème vient des images des quêtes. S'il y en a ça plante lorsqu'il doit les charger sinon il plante pas.
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum