Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #===============================================================================
- # Thieffer's QuestLog
- # version 1.2
- # by Thieffer 09.05.2009
- # version 1.1 by Narzew 07.01.2011
- # version 1.2 by Narzew 19.01.2011
- #===============================================================================
- #Historia skryptu
- #09.05.2009 - Thieffer - Pierwsze wydanie
- #07.01.2011 - Narzew - Wersja 1.1
- #Dodane funkcje i metody
- #Nieudane zadania
- #Spalenie zadania aktywnego (jeśli nie ukończone)
- #Spalenie zadania (brutalne)
- #Dodanie ukończonego zadania
- #Dodanie nieudanego zadania
- #Warunek czy zadanie jest aktywne?
- #Warunek czy zadanie jest nieudane?
- #19.01.2011 - Narzew - Wersja 1.2 - Usunięto bugi (zapis w historii 26.04.2011)
- #===============================================================================
- # INSTRUKCJE
- #===============================================================================
- # Aby włączyć dziennik zadań należy wywołać skrypt:
- # $scene = Scene_QuestLog.new
- # Zadania powinny być wcześniej zdefiniowane wg wzoru:
- # $quest= ["nazwa", poziom, "grafika", "treść"]
- # gdzie zamiast:
- # $quest --> możesz wpisać co zechcesz (nie będzie wyświetlane)
- # "nazwa" --> nazwa zadania (będzie wyświetlana)
- # poziom --> liczba od 1 do 5 (poziom trudności)
- # "grafika" --> nazwa pliku zawierającego obrazek o wymiarach 400px na 100px (obrazek przedstawiający scenkę z zadania)
- # "treść" --> treść zadania
- # Konfiguracja:
- # $PICTURE_DIFFICULTY = true/false
- # (jeśli true, to poziom trudności będzie przedstawiony
- # za pomocą obrazków; jeśli false - za pomocą tekstu)
- # Obrazki muszą mieć nazwę: quest_difficulty1, quest_difficulty2 itd. (max 5) oraz rozmiary 125px na 48px.
- # Tekst możesz edytować w zmiennych $QD1, $QD2 itd.
- # $PICTURE_DESCRIPTION = true/false
- # (jeśli true, to w opisie zadania, pojawi się obrazek o wymiarach 400px na 100px;
- # jeśli false - brak obrazka)
- # $MAP_AS_BACKGROUND = true/false
- # (jeśli true, to w tle okienek widać mapę, na której jest bohater oraz podczas
- # wciśnięcia ESC pojawia nam się mapa; jeśli false - czarne tło oraz podczas
- # wciśnięcia ESC pojawia nam się Menu (opcjonalnie Scene_Menu.new))
- # Obsługa:
- # Dodawanie zadania:
- # $game_party.add_quest($quest)
- # $quest --> to nazwa "robocza" zadania (ta, która nie jest wyświetlana)
- # Ukończenie zadania:
- # $game_party.complete_quest($quest)
- # Usunięcie zadania:
- # $game_party.remove_quest($quest)
- # Warunek - czy zadanie jest wykonane?
- # $game_party.is_quest_completed?($quest)
- # Warunek - czy zadanie jest aktywne?
- # $game_party.is_quest_active?($quest)
- # Warunek - czy zadanie jest nieudane?
- # $game_party.is_quest_failed?($quest)
- $QD1 = "Bardzo Łatwy"
- $QD2 = "Łatwy"
- $QD3 = "Średni"
- $QD4 = "Trudny"
- $QD5 = "Bardzo Trudny"
- $PICTURE_DIFFICULTY = true
- $PICTURE_DESCRIPTION = false
- $MAP_AS_BACKGROUND = true
- WINDOWSKIN_GRAPHIC = "Windowskin 3"
- class Game_Party
- alias :old_initialize1 :initialize
- def initialize
- old_initialize1
- @quests = []
- @completed_quests = []
- @failed_quests = []
- end
- def add_quest(quest)
- @quests.push(quest) if not @quests.include?(quest)
- end
- def complete_quest(quest)
- if @quests.include?(quest) and not @completed_quests.include?(quest)
- @completed_quests.push(quest)
- @quests.delete(quest)
- end
- end
- def fail_quest(quest)
- if @quests.include?(quest) and not @failed_quests.include?(quest)
- @failed_quests.push(quest)
- @quests.delete(quest)
- end
- end
- def fail_quest_force(quest)
- if not @failed_quests.include?(quest)
- @failed_quests.push(quest)
- @quests.delete(quest)
- @completed_quests.delete(quest)
- end
- end
- def fail_quest2(quest)
- if @quests.include?(quest) and not @failed_quests.include?(quest)
- @failed_quests.push(quest)
- @quests.delete(quest)
- end
- if @completed_quests.include?(quest) and not @failed_quests.include?(quest)
- @failed_quests.push(quest)
- @quests.delete(quest)
- end
- end
- def remove_quest(quest)
- @quests.delete(quest) if @quests.include?(quest)
- end
- def is_quest_completed?(quest)
- if @completed_quests.include?(quest)
- return true
- end
- return false
- end
- def is_quest_active?(quest)
- if @quests.include?(quest)
- return true
- end
- return false
- end
- def is_quest_failed?(quest)
- if @failed_quests.include?(quest)
- return true
- end
- return false
- end
- def quest_name(quest)
- return quest[0]
- end
- def quest_difficulty(quest)
- case quest[1]
- when 1
- $QD1
- when 2
- $QD2
- when 3
- $QD3
- when 4
- $QD4
- when 5
- $QD5
- end
- end
- def quest_picture_difficulty(quest)
- case quest[1]
- when 1
- "quest_difficulty1"
- when 2
- "quest_difficulty2"
- when 3
- "quest_difficulty3"
- when 4
- "quest_difficulty4"
- when 5
- "quest_difficulty5"
- end
- end
- def quest_picture(quest)
- return quest[2]
- end
- def quest_description(quest)
- return quest[3]
- end
- def quests
- return @quests
- end
- def completed_quests
- return @completed_quests
- end
- def failed_quests
- return @failed_quests
- end
- end
- class Window_QuestName < Window_Base
- def initialize(quest)
- super(20, 20, 450, 150)
- self.contents = Bitmap.new(width - 32, height - 32)
- self.z = 101
- self.back_opacity = 255
- @quest = quest
- refresh
- end
- def refresh
- self.contents.clear
- self.contents.font.color = Color.new(244,197,43,255)
- self.contents.font.size = 23
- self.contents.draw_text(0,0,418,68,$game_party.quest_name(@quest),1)
- end
- end
- class Window_QuestDifficulty < Window_Base
- def initialize(quest)
- super(450, 30, 170, 80)
- self.contents = Bitmap.new(width - 32, height - 32)
- self.z = 100
- self.back_opacity = 230
- @quest = quest
- refresh
- end
- def refresh
- self.contents.clear
- self.contents.font.color = Color.new(60,170,25,255)
- if $PICTURE_DIFFICULTY
- self.contents.blt(13, 0, RPG::Cache.picture($game_party.quest_picture_difficulty(@quest)), Rect.new(0, 0, 125, 48))
- else
- self.contents.draw_text(20,0,118,48,$game_party.quest_difficulty(@quest),1)
- end
- end
- end
- class Window_QuestDescription < Window_Base
- def initialize(quest)
- super(40, 110, 580, 350)
- self.contents = Bitmap.new(width - 32, height - 32)
- self.z = 99
- self.back_opacity = 230
- @quest = quest
- refresh
- end
- def refresh
- self.contents.clear
- self.contents.font.size = 18
- paragraph = str_paragraph($game_party.quest_description(@quest),518)
- if $PICTURE_DESCRIPTION
- self.contents.blt(74,0, RPG::Cache.picture($game_party.quest_picture(@quest)), Rect.new(0,0,400,100))
- draw_paragraph(30,16,518,202, paragraph)
- else
- draw_paragraph(30,-116,518,318, paragraph)
- end
- end
- end
- class Scene_QuestLog
- def initialize
- @quests = $game_party.quests
- @completed_quests = $game_party.completed_quests
- @failed_quests = $game_party.failed_quests
- @quests_names = []
- @completed_quests_names = []
- @failed_quests_names = []
- if @quests.size > 0
- for i in 0..(@quests.size-1)
- @quests_names.push @quests[i][0]
- end
- elsif
- @quests_names.push "Brak zadań"
- end
- if @completed_quests.size > 0
- for k in 0..(@completed_quests.size-1)
- @completed_quests_names.push @completed_quests[k][0]
- end
- else
- @completed_quests_names.push "Brak ukończonych zadań"
- end
- if @failed_quests.size > 0
- for k in 0..(@failed_quests.size-1)
- @failed_quests_names.push @failed_quests[k][0]
- end
- else
- @failed_quests_names.push "Brak nieudanych zadań"
- end
- end
- def main
- @command_window = Window_Command.new(210, ["Aktualne zadania", "Ukończone zadania", "Nieudane zadania"])
- @quests_command_window = Window_Command.new(220, @quests_names)
- @completed_quests_command_window = Window_Command.new(220, @completed_quests_names)
- @failed_quests_command_window = Window_Command.new(220, @failed_quests_names)
- @quests_command_window.active = false
- @quests_command_window.visible = false
- @completed_quests_command_window.active = false
- @completed_quests_command_window.visible = false
- @failed_quests_command_window.active = false
- @failed_quests_command_window.visible = false
- @command_window.x = 640 - @command_window.width
- @command_window.y = 50
- @command_window.back_opacity = 190
- @quests_command_window.x = 640 - @quests_command_window.width
- @quests_command_window.y = 50
- @quests_command_window.height = 200
- @quests_command_window.back_opacity = 190
- @completed_quests_command_window.x = 640 - @completed_quests_command_window.width
- @completed_quests_command_window.y = 50
- @completed_quests_command_window.height = 200
- @completed_quests_command_window.back_opacity = 190
- @failed_quests_command_window.x = 640 - @completed_quests_command_window.width
- @failed_quests_command_window.y = 50
- @failed_quests_command_window.height = 200
- @failed_quests_command_window.back_opacity = 190
- if $MAP_AS_BACKGROUND
- @spriteset = Spriteset_Map.new
- end
- Graphics.transition
- loop do
- Graphics.update
- Input.update
- update
- if $scene != self
- break
- end
- end
- Graphics.freeze
- @command_window.dispose
- @quests_command_window.dispose
- @completed_quests_command_window.dispose
- @failed_quests_command_window.dispose
- if $MAP_AS_BACKGROUND
- @spriteset.dispose
- end
- end
- def update
- @command_window.update
- @quests_command_window.update
- @completed_quests_command_window.update
- @failed_quests_command_window.update
- if $MAP_AS_BACKGROUND
- @spriteset.update
- end
- if @command_window.active
- update_command
- return
- end
- if @quests_command_window.active
- update_quests
- return
- end
- if @completed_quests_command_window.active
- update_completed_quests
- return
- end
- if @failed_quests_command_window.active
- update_failed_quests
- return
- end
- if @quests_mode
- if Input.trigger?(Input::B)
- $game_system.se_play($data_system.cancel_se)
- @quest_name_window.dispose
- @quest_difficulty_window.dispose
- @quest_description_window.dispose
- @quests_command_window.active = true
- @quests_command_window.visible = true
- @quests_command_window.index = @index
- end
- return
- end
- if @completed_quests_mode
- if Input.trigger?(Input::B)
- $game_system.se_play($data_system.cancel_se)
- @quest_name_window.dispose
- @quest_difficulty_window.dispose
- @quest_description_window.dispose
- @completed_quests_command_window.active = true
- @completed_quests_command_window.visible = true
- @completed_quests_command_window.index = @index
- end
- return
- end
- if @failed_quests_mode
- if Input.trigger?(Input::B)
- $game_system.se_play($data_system.cancel_se)
- @quest_name_window.dispose
- @quest_difficulty_window.dispose
- @quest_description_window.dispose
- @failed_quests_command_window.active = true
- @failed_quests_command_window.visible = true
- @failed_quests_command_window.index = @index
- end
- return
- end
- end
- def update_command
- if Input.trigger?(Input::B)
- if $MAP_AS_BACKGROUND
- $game_system.se_play($data_system.cancel_se)
- $scene = Scene_Menu.new(4)
- return
- else
- $game_system.se_play($data_system.cancel_se)
- $scene = Scene_Menu.new(4)
- end
- end
- if Input.trigger?(Input::C)
- case @command_window.index
- when 0
- $game_system.se_play($data_system.decision_se)
- @command_window.active = false
- @command_window.visible = false
- @quests_command_window.active = true
- @quests_command_window.visible = true
- when 1
- $game_system.se_play($data_system.decision_se)
- @command_window.active = false
- @command_window.visible = false
- @completed_quests_command_window.active = true
- @completed_quests_command_window.visible = true
- when 2
- $game_system.se_play($data_system.decision_se)
- @command_window.active = false
- @command_window.visible = false
- @failed_quests_command_window.active = true
- @failed_quests_command_window.visible = true
- end
- end
- end
- def update_quests
- if Input.trigger?(Input::B)
- $game_system.se_play($data_system.cancel_se)
- @command_window.active = true
- @command_window.visible = true
- @quests_command_window.active = false
- @quests_command_window.visible = false
- end
- if Input.trigger?(Input::C)
- if @quests.size > 0
- $game_system.se_play($data_system.decision_se)
- @index = @quests_command_window.index
- quest = @quests[@index]
- @quest_name_window = Window_QuestName.new(quest)
- @quest_difficulty_window = Window_QuestDifficulty.new(quest)
- @quest_description_window = Window_QuestDescription.new(quest)
- @quests_command_window.active = false
- @quests_command_window.visible = false
- @quests_mode = true
- else
- $game_system.se_play($data_system.buzzer_se)
- end
- end
- end
- def update_completed_quests
- if Input.trigger?(Input::B)
- $game_system.se_play($data_system.cancel_se)
- @command_window.active = true
- @command_window.visible = true
- @completed_quests_command_window.active = false
- @completed_quests_command_window.visible = false
- end
- if Input.trigger?(Input::C)
- if @completed_quests.size > 0
- $game_system.se_play($data_system.decision_se)
- @index = @completed_quests_command_window.index
- quest = @completed_quests[@index]
- @quest_name_window = Window_QuestName.new(quest)
- @quest_difficulty_window = Window_QuestDifficulty.new(quest)
- @quest_description_window = Window_QuestDescription.new(quest)
- @completed_quests_command_window.active = false
- @completed_quests_command_window.visible = false
- @completed_quests_mode = true
- else
- $game_system.se_play($data_system.buzzer_se)
- end
- end
- end
- def update_failed_quests
- if Input.trigger?(Input::B)
- $game_system.se_play($data_system.cancel_se)
- @command_window.active = true
- @command_window.visible = true
- @failed_quests_command_window.active = false
- @failed_quests_command_window.visible = false
- end
- if Input.trigger?(Input::C)
- if @failed_quests.size > 0
- $game_system.se_play($data_system.decision_se)
- @index = @failed_quests_command_window.index
- quest = @failed_quests[@index]
- @quest_name_window = Window_QuestName.new(quest)
- @quest_difficulty_window = Window_QuestDifficulty.new(quest)
- @quest_description_window = Window_QuestDescription.new(quest)
- @failed_quests_command_window.active = false
- @failed_quests_command_window.visible = false
- @failed_quests_mode = true
- else
- $game_system.se_play($data_system.buzzer_se)
- end
- end
- end
- end
- #Dane questów (Twórz według przykładu :) )
- $quest1 = ["Wszechmoc żywiołowa", 5, "" ,
- "Przekaż Drak' Daeiemu wiadomość o pojawieniu się elementu lodu. Element lodu powiedział mi, że można go spotkać w Rechnam."]
- $quest1_1 = ["Wszechmoc żywiołowa", 5, "" ,
- "Przekaż Drak' Daeiemu wiadomość o pojawieniu się elementu lodu. Element lodu powiedział mi, że można go spotkać w Rechnam. Żeby dostać się do Rechnam muszę mieć przepustkę. Można ją uzyskać u Daeka w Dorang-Zaoschang. Jednak on nie słucha nikogo poniżej 35 poziomu."]
- $quest_2 = ["Paczka dla brata",1,"",
- "Mieszkaniec Kenchan poprosił mnie o dostarczenie paczki dla jego brata. Mieszka w Dorang-Zaoschang."]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement