[Script] [RPGXP] [Scene] Box quest

Hạc siêu nạcHạc siêu nạc Posts: 141Registered
[size=medium]Không biết đã có ai post cript này chưa, nhưng cứ post :053A:
[chapter]Giới thiệu[/chapter]
GIỚI THIỆU: Script bảng nhiệm vụ xì teen :049A:

[chapter]Tính năng[/chapter]
TÍNH NĂNG: Giúp bạn tạo một bảng nv cho event

[chapter]Screenshot[/chapter]
SCREENSHOT:
script%20quest.JPG

[chapter]Demo[/chapter]
DEMO: http://www.mediafire.com/?mjmjtw2nham
[chapter]Code[/chapter]
CODE:
#===============================================================================
    # Quest Log System
    # Author game_guy
    # Version 3.0
    #-------------------------------------------------------------------------------
    # Intro:
    # A script that keeps track of quests you obtain and complete.
    #
    # Features:
    # Marks quest names with a yellow color if they're completed
    # Easy to setup one quest
    # Be able to use a fairly long description
    # Be able to display a picture
    # Easy to add and complete a quest
    # More compatible than earlier versions
    #
    # Instructions:
    # Scroll down a bit until you see # Being Config. Follow the instructions there.
    # Scroll below that and you'll see Begin Quest Setup. Follow the steps there.
    #
    # Script Calls:
    # Quest.add(id) ~ Adds the quest(id) to the parties quests.
    # Quest.take(id) ~ Takes the quest(id) from the party.
    # Quest.complete(id) ~ Makes the quest(id) completed.
    # Quest.completed?(id) ~ Returns true if the quest(id) is completed.
    # Quest.has?(id) ~ Returns true if the party has quest(id).
    # $scene = Scene_Quest.new ~ Opens the quest menu.
    #
    # Credits:
    # game_guy ~ for making it
    # Beta Testers ~ Sally and Landith
    # Blizzard ~ Small piece of code I borrowed from his bestiary
    # Việt hoá bởi Phung Chung
    #===============================================================================
    module GameGuy
      #==================================================
      # Begin Config
      # UsePicture ~ true means it'll show pictures in
      #              the quests, false it wont.
      #==================================================
      UsePicture   = false
     
      def self.qreward(id)
        case id
        #==================================================
        # Quest Reward
        # Use when x then return "Reward"
        # x = id, Reward = reward in quotes
        #==================================================
        when 1 then return "100 Xu"
        when 2 then return "3 b×nh m¸u nhá"
        when 3 then return "nhÉn thÇn"
        when 4 then return "gµ"
        end
        return "Kh«ng cã phÇn th­ëng"
      end
     
      def self.qpicture(id)
        case id
        #==================================================
        # Quest Picture
        # Use when x then return "picture"
        # x = id, picture = picutre name in quotes
        #==================================================
        when 1 then return "ghost"
        end
        return nil
      end
     
      def self.qname(id)
        case id
        #==================================================
        # Quest Name
        # Use when x then return "name"
        # x = id, name = quest name in quotes
        #==================================================
        when 1 then return "NhiÖm vô t©n thñ"
        when 2 then return "NhiÖm vô tr­ëng thµnh"
        when 3 then return "ChÝnh tuyÕn"
        when 4 then return "Th¸nh ®iÖn"
        end
        return "Kh«ng cã"
      end
     
      def self.qlocation(id)
        case id
        #==================================================
        # Quest Location
        # Use when x then return "location"
        # x = id, location = location in quotes
        #==================================================
        when 1 then return "D­¬ng Ch©u"
        when 2 then return "Kinh ®«"
        when 3 then return "Th¸nh ®iÖn"
        when 4 then return "Th¸nh ®iÖn"
        end
        return "Kh«ng cã h­íng dÉn"
      end
     
      def self.qdescription(id)
        case id
        #==================================================
        # Quest Description
        # Use when x then return "description"
        # x = id, description = quest description in quotes
        #==================================================
        when 1 then return "T×m mét b×nh m¸u nhá"
        when 2 then return "Mua mét ®ïi quay"
        when 3 then return "Tíi thµnh ®iÖn t×m th¸nh tiªn"
        when 4 then return "Th¸nh ®iÖn"
        end
        return ""
      end
     
    end

    module Quest
     
      def self.add(id)
        $game_party.add_quest(id)
      end
     
      def self.take(id)
        $game_party.take_quest(id)
      end
     
      def self.complete(id)
        $game_party.complete(id)
      end
     
      def self.completed?(id)
        return $game_party.completed?(id)
      end
     
      def self.has?(id)
        return $game_party.has_quest?(id)
      end
     
    end
     
    class Game_Party
     
      attr_accessor :quests
      attr_accessor :completed
     
      alias gg_quests_lat initialize
      def initialize
        @quests = []
        @completed = []
        gg_quests_lat
      end
     
      def add_quest(id)
        unless @quests.include?(id)
          @quests.push(id)
        end
      end
     
      def completed?(id)
        return @completed.include?(id)
      end
     
      def complete(id)
        unless @completed.include?(id)
          if @quests.include?(id)
            @completed.push(id)
          end
        end
      end
     
      def has_quest?(id)
        return @quests.include?(id)
      end
     
      def take_quest(id)
        @quests.delete(id)
        @completed.delete(id)
      end
     
    end
    class Scene_Quest
      def main
        @quests = []
        for i in $game_party.quests
          @quests.push(GameGuy.qname(i))
        end
        @map = Spriteset_Map.new
        @quests2 = []
        for i in $game_party.quests
          @quests2.push(i)
        end
        @quests_window = Window_Command.new(160, @quests)
        @quests_window.height = 480
        @quests_window.back_opacity = 110
        Graphics.transition
        loop do
          Graphics.update
          Input.update
          update
          if $scene != self
            break
          end
        end
        @quests_window.dispose
        @quest_info.dispose if @quest_info != nil
        @map.dispose
      end
      def update
        @quests_window.update
        if @quests_window.active
          update_quests
          return
        end
        if @quest_info != nil
          update_info
          return
        end
      end
      def update_quests
        if Input.trigger?(Input::B)
          $game_system.se_play($data_system.cancel_se)
          $scene = Scene_Menu.new
          return
        end
        if Input.trigger?(Input::C)
          $game_system.se_play($data_system.decision_se)
          @quest_info = Window_QuestInfo.new(@quests2[@quests_window.index])
          @quest_info.back_opacity = 110
          @quests_window.active = false
          return
        end
      end
      def update_info
        if Input.trigger?(Input::B)
          $game_system.se_play($data_system.cancel_se)
          @quests_window.active = true
          @quest_info.dispose
          @quest_info = nil
          return
        end
      end
    end
    class Window_QuestInfo < Window_Base
      def initialize(quest)
        super(160, 0, 480, 480)
        self.contents = Bitmap.new(width - 32, height - 32)
        @quest = quest
        refresh
      end
      def refresh
        self.contents.clear
        if GameGuy::UsePicture
          pic = GameGuy.qpicture(@quest)
          bitmap = RPG::Cache.picture(GameGuy.qpicture(@quest)) if pic != nil
          rect = Rect.new(0, 0, bitmap.width, bitmap.height) if pic != nil
          self.contents.blt(480-bitmap.width-32, 0, bitmap, rect) if pic != nil
        end
        self.contents.font.color = system_color
        self.contents.draw_text(0, 0, 480, 32, "NhiÖm vô:")
        self.contents.font.color = normal_color
        self.contents.draw_text(0, 32, 480, 32, GameGuy.qname(@quest))
        self.contents.font.color = system_color
        self.contents.draw_text(0, 64, 480, 32, "PhÇn th­ëng:")
        self.contents.font.color = normal_color
        self.contents.draw_text(0, 96, 480, 32, GameGuy.qreward(@quest))
        self.contents.font.color = system_color
        self.contents.draw_text(0, 128, 480, 32, "Vïng lµm nhiÖm vô:")
        self.contents.font.color = normal_color
        self.contents.draw_text(0, 160, 480, 32, GameGuy.qlocation(@quest))
        self.contents.font.color = system_color
        self.contents.draw_text(0, 192, 480, 32, "Qu¸ tr×nh nhiÖm vô:")
        self.contents.font.color = normal_color
        if $game_party.completed.include?(@quest)
          self.contents.font.color = crisis_color
          self.contents.draw_text(0, 224, 480, 32, "Hoµn thµnh!")
        else
          self.contents.font.color = normal_color
          self.contents.draw_text(0, 224, 480, 32, "§ang thùc hiÖn")
        end
        self.contents.font.color = system_color
        self.contents.draw_text(0, 256, 480, 32, "H­íng dÉn nhiÖm vô:")
        self.contents.font.color = normal_color
        text = self.contents.slice_text(GameGuy.qdescription(@quest), 460)
        text.each_index {|i|
            self.contents.draw_text(0, 288 + i*32, 460, 32, text[i])}
      end
    end
    class Bitmap
     
      def slice_text(text, width)
        words = text.split(' ')
        return words if words.size == 1
        result, current_text = [], words.shift
        words.each_index {|i|
            if self.text_size("#{current_text} #{words[i]}").width > width
              result.push(current_text)
              current_text = words[i]
            else
              current_text = "#{current_text} #{words[i]}"
            end
            result.push(current_text) if i >= words.size - 1}
        return result
      end
     
    end
[chapter]Hướng dẫn[/chapter]
HƯỚNG DẪN: Tự tìm hiểu nhé vì cái này dễ mà

[chapter]Nguồn[/chapter]
SOURCE:
RMXP Script Database
[chapter]Điều khoản sử dụng[/chapter]
Không có gì, free hoàn toàn, làm gì cũng đc :))
[/size]

Comments

Sign In or Register to comment.