Cerca nel Forum
Showing results for tags 'Sistema Quest semplice'.
Trovato 1 risultato
-
Nome Script: Sistema Quest semplice Versione: 1.0b Autore/i: Niclas Informazioni: Semplice sistema quest da aggiungere al proprio gioco. Features: - Plug and play. - Aggiungi, rimuovi o fai una ricerca completa utilizzando un call script. - Ogni quest memorizza una variabile se è stata completata o meno. - Facile da aggiungere al menu in quanto utilizza una scena propria. - Supporta un'immagine di sfondo personalizzata. - e molto altro! Istruzioni: Inserite lo script sotto material. Altre istruzioni all'interno dello script. Script: #============================================================================== # Simple Journal # Author: Nicke # Created: 08/13/2011 # Edited: 08/16/2011 # Version: 1.0b #============================================================================== # Instructions # ----------------------------------------------------------------------------- # To install this script, open up your script editor and copy/paste this script # to an open slot below ▼ Materials but above ▼ Main. Remember to save. # ----------------------------------------------------------------------------- # # To open Simple Journal use: $scene = Scene_Simple_Journal.new <- In your menu. # # Use the call script function to add, remove or complete a quest. # Quick example: # add_quest(id,type) # # add_quest(1,:main) # add_quest(0,:side) # complete_quest(0,:side) # fail_quest(1,:main) # # Note: # In Main quests you should only add 1 quest each time as it is # designed that way. However, to make main quest act like side quest page # simply set SCROLL_MAIN_QUESTS to true. # Every quest stores a variable if it is being completed or failed which then # can be used as you want. # #============================================================================== ($imported ||= {})["NICKE-SIMPLE-JOURNAL"] = true module NICKE module JOURNAL_SYSTEM # -------------------------------------------------------------------------- # General settings. WIDTH = Graphics.width # Change the width of the journal window. HEIGHT = Graphics.height # Change the height of the journal window. FONT_TYPE = ["Rockwell", "Arial"] # Font type. TITLE = "Journal" # Journal title text. FOOTER = "Use Left/Right to change page." # Footer text. NO_ENTRIES = "No entries added..." # If no quest added show this text. COMPLETE_QUEST_VAR = 1 # Variable to store completed quests FAILED_QUEST_VAR = 2 # Variable to store failed quests. SCROLL_MAIN_QUESTS = false # Scroll at Main Quests too? # Note: If true, footer will be hidden. BUTTON_LEFT_PAGE = Input::LEFT # Button to change page to the left. BUTTON_RIGHT_PAGE = Input::RIGHT # Button to change page to the right. BACKGROUND_IMAGE_ACTIVE = true # Use a background image? BACKGROUND_IMAGE = "journal" # Background image file name. # -------------------------------------------------------------------------- # Color, size and shadow. T_FONT_SIZE = 26 # Title font size. T_FONT_COLOR = Color.new(223,255,80) # Title font color. T_FONT_SHADOW = true # Title font shadow. QUEST_HEADER_SIZE = 20 # Quest Header font size. QUEST_HEADER_COLOR = Color.new(135,206,250) # Quest Header font color. QUEST_HEADER_SHADOW = true # Quest Header font shadow. QUEST_DETAILS_SIZE = 16 # Quest Details font size. QUEST_DETAILS_COLOR = Color.new(245,245,245) # Quest Details font color. QUEST_DETAILS_SHADOW = true # Quest Details font shadow. H_FONT_SIZE = 20 # Header font size. H_FONT_COLOR = Color.new(223,255,80) # Header font color. H_FONT_SHADOW = true # Header font shadow. F_FONT_SIZE = 18 # Footer font size. F_FONT_COLOR = Color.new(223,255,80) # Footer font color. F_FONT_SHADOW = true # Footer font shadow. NO_E_FONT_SIZE = 18 # No entries font size. NO_E_FONT_COLOR = Color.new(235,235,160) # No entries font color. NO_E_FONT_SHADOW = true # No entries font shadow. # -------------------------------------------------------------------------- # MAIN QUESTS. # Main Quest[Index] = [Icon, "Title", "Details"] MAIN_Q_HEADER = "Main Quests" # Header text for Main quests. MAIN_QUESTS = [] # Don't touch it! MAIN_QUESTS[0] = [15, "The Terror in Townsil", "Travel to Townsil and talk to captain awesome."] MAIN_QUESTS[1] = [15, "The Terror in Townsil", "Search the town for clues."] MAIN_QUESTS[2] = [15, "The Terror in Townsil", "Go back to captain awesome and explain that the situation is crucial."] # -------------------------------------------------------------------------- # SIDE QUESTS. # SIDE Quest[Index] = [Icon, "Title", "Details"] SIDE_Q_HEADER = "Side Quests" # Header text for Side quests. SIDE_QUESTS = [] # Don't touch it! SIDE_QUESTS[0] = [12, 'Kill the Orcs.', 'Hunt down ten orcs and kill them.'] SIDE_QUESTS[1] = [75, 'Aid the doctor.', 'Help the doctor by finding the missing herbs.'] SIDE_QUESTS[2] = [138, 'Find the forgotten girl.', 'Locate the missing girl in the woods.'] SIDE_QUESTS[3] = [44, 'Armour Reparing.', 'Talk to the local blacksmith to get the armour fixed.'] SIDE_QUESTS[4] = [151, 'Special Delivery.', 'Take the box filled with unique materials to the mayor in town.'] SIDE_QUESTS[5] = [64, 'Brew a potion.', 'Gather the missing ingrediens for the health potion.'] SIDE_QUESTS[6] = [22, 'Solve the bandit problem.', 'Track down and get rid of the bandits that lurks within the deep forest.'] # -------------------------------------------------------------------------- end end # *** Don't edit below unless you know what you are doing. *** class Game_System attr_accessor :main_quests attr_accessor :side_quests attr_accessor :completed_quests attr_accessor :failed_quests alias nicke_quest_initialize initialize unless $@ def initialize(*args, &block) nicke_quest_initialize(*args, &block) @main_quests = [] @side_quests = [] @completed_quests = [] # Going to be used later on. @failed_quests = [] # Going to be used later on. end end class Game_Interpreter include NICKE::JOURNAL_SYSTEM def add_quest(id, type) # Method to add a quest. case type when :main # Main quests. unless $game_system.main_quests.include?(MAIN_QUESTS[id]) $game_system.main_quests.push(MAIN_QUESTS[id]) end unless MAIN_QUESTS[id].nil? when :side # Side quests. unless $game_system.side_quests.include?(SIDE_QUESTS[id]) $game_system.side_quests.push(SIDE_QUESTS[id]) end unless SIDE_QUESTS[id].nil? end end def complete_quest(id, type) # Method to complete a quest. case type when :main # Main quests. if $game_system.main_quests.include?(MAIN_QUESTS[id]) $game_system.main_quests.delete(MAIN_QUESTS[id]) $game_system.completed_quests.push(MAIN_QUESTS[id]) $game_variables[COMPLETE_QUEST_VAR] += 1 end when :side # Side quests. if $game_system.side_quests.include?(SIDE_QUESTS[id]) $game_system.side_quests.delete(SIDE_QUESTS[id]) $game_system.completed_quests.push(SIDE_QUESTS[id]) $game_variables[COMPLETE_QUEST_VAR] += 1 end end end def fail_quest(id, type) # Method for quest failed. case type when :main # Main quests. unless MAIN_QUESTS[id].nil? $game_system.main_quests.delete(MAIN_QUESTS[id]) $game_system.failed_quests.push(MAIN_QUESTS[id]) $game_variables[FAILED_QUEST_VAR] += 1 end when :side # Side quests. unless SIDE_QUESTS[id].nil? $game_system.side_quests.delete(SIDE_QUESTS[id]) $game_system.failed_quests.push(SIDE_QUESTS[id]) $game_variables[FAILED_QUEST_VAR] += 1 end end end end class Scene_Simple_Journal < Scene_Base include NICKE::JOURNAL_SYSTEM def start super() @journal_window = Window_Simple_Journal.new(true) if BACKGROUND_IMAGE_ACTIVE == true create_bg @journal_window.opacity = 0 end end def create_bg @bg = Sprite.new @bg.bitmap = Cache.picture(BACKGROUND_IMAGE) end def update super # Method for checking input triggers. if Input.trigger?(Input:: Sound.play_cancel $scene = Scene_Menu.new(0) elsif Input.trigger?(BUTTON_LEFT_PAGE) || Input.trigger?(BUTTON_RIGHT_PAGE) Sound.play_decision main = @journal_window.main @journal_window.dispose @journal_window = Window_Simple_Journal.new(!main) elsif Input.trigger?(Input::UP) y = @journal_window.oy @journal_window.oy = [y - 52, 0].max elsif Input.trigger?(Input::DOWN) return if @journal_window.contents.height < @journal_window.height y = @journal_window.oy @journal_window.oy = [y + 52, @journal_window.height - y + 16].min end @journal_window.opacity = 0 if BACKGROUND_IMAGE_ACTIVE == true end def terminate super @journal_window.dispose @bg.dispose end end class Window_Simple_Journal < Window_Base include NICKE::JOURNAL_SYSTEM attr_reader :main def initialize(main = true) super(0,0,WIDTH, HEIGHT) @main = main # This will allow scrolling if there are too many quests. if !@main self.contents = Bitmap.new(self.width - 32, HEIGHT - 56 + ($game_system.side_quests.size - 1) * WLH) else self.contents = Bitmap.new(self.width - 32, HEIGHT - 56 + ($game_system.main_quests.size - 1) * WLH) unless SCROLL_MAIN_QUESTS != true end refresh end def refresh self.contents.clear # Add Graphics. addGraphics # Add Quests. addQuests end def self_rect # Return the value of contents rect. return self.contents.rect end def draw_text(x, y, text, align) # Method for drawing the text. title = self_rect title.x = x title.y = y title.height = 28 self.contents.draw_text(title,text,align) end def draw_line(x, y) # Create two lines actually, one is acting like the shadow. line = self_rect line.height = 1 line.width -= 10 line.x = x line.y = y self.contents.fill_rect(line,normal_color) line.y += 1 color = Color.new(0,0,0,200) self.contents.fill_rect(line,color) end def addQuests if @main # Fill it with the current main quest data. quests = $game_system.main_quests else # Fill it with the current side quest data. quests = $game_system.side_quests end # If no main quests have been added. if quests.empty? contents.font.name = FONT_TYPE contents.font.size = NO_E_FONT_SIZE contents.font.color = NO_E_FONT_COLOR contents.font.shadow = NO_E_FONT_SHADOW draw_text(0, 160, NO_ENTRIES, 1) return end yoff = WLH * 2 quests.each_with_index { |q, i| draw_icon( q[0], 0, i * yoff + 84); # Font, size, color & shadow. contents.font.name = FONT_TYPE contents.font.size = QUEST_HEADER_SIZE contents.font.color = QUEST_HEADER_COLOR contents.font.shadow = QUEST_HEADER_SHADOW self.contents.draw_text(10, 68 + i * yoff, self.contents.width - 16, WLH, q[1], 1) contents.font.name = FONT_TYPE contents.font.size = QUEST_DETAILS_SIZE contents.font.color = QUEST_DETAILS_COLOR contents.font.shadow = QUEST_DETAILS_SHADOW self.contents.draw_text(27, 60 + (i * yoff)+WLH, self.contents.width - 16, WLH, q[2]) } end def addGraphics # Method for drawing the graphics and some headers. self.contents.font.name = FONT_TYPE self.contents.font.size = T_FONT_SIZE self.contents.font.color = T_FONT_COLOR self.contents.font.shadow = T_FONT_SHADOW draw_text(0, 0, TITLE, 1) if BACKGROUND_IMAGE_ACTIVE != true self.contents.font.name = FONT_TYPE self.contents.font.size = H_FONT_SIZE self.contents.font.color = H_FONT_COLOR self.contents.font.shadow = H_FONT_SHADOW if @main draw_text(0, 42, MAIN_Q_HEADER, 1) self.contents.font.name = FONT_TYPE self.contents.font.size = F_FONT_SIZE self.contents.font.color = F_FONT_COLOR self.contents.font.shadow = F_FONT_SHADOW draw_text(0,360, FOOTER, 1) unless SCROLL_MAIN_QUESTS == true draw_line(5,356) unless SCROLL_MAIN_QUESTS == true else draw_text(0, 42, SIDE_Q_HEADER, 1) end draw_line(5,36) if BACKGROUND_IMAGE_ACTIVE != true end end # END OF FILE #=*==========================================================================*=# # ** END OF FILE #=*==========================================================================*=#