じ☆ve冰风 发表于 2026-7-12 14:20:58

KInquire XP

KInquire XP
v1.2.0

by Kyonides Arkanthes​


Introduction

Detective:
"What have you been doing as of late?
I've been investigating some weird events that have been taking place in a small place called Kustom Town as of late.
Have you got any piece of valuable information, sir?
A contact, the name of any serial killer :killer: , a suspicious location, a piece of evidence. Anything, pretty much anything, might prove to be quite helpful at the end of the day."

"It seems that some suspicious character might have an accomplice out there..."


All of the pictures required by my script should be placed in the Graphics/Pictures directory.

Screenshots

Spoiler: Two Snapshots





Basic Script Calls​

Open the Case Menu scene
$scene = KInquire::Scene.new

New Case
new_case(101, "Trickster Affair", "Kustom Town")

Case with specific Priority
new_case(101, "Trickster Affair", "Kustom Town",
=> 1)

Case with specific Status
new_case(101, "Trickster Affair", "Kustom Town", :s => :cold)


The Script

It is NOT the latest version avaiable...

                Code:        
# * KInquire XP
#   Scripter : Kyonides Arkanthes
#   2021-08-16 - v1.1.1

# The diary or encyclopedia or a detective's or inspector's notebook script!
# It exclusively relies on script calls to add new information to the book.

# The script also lets you set up a fake date system but it depends on script
# calls to make any progress. Hours, minutes and seconds are unavailable.

# Place all images in the Graphics/Pictures directory.

# * Script Calls * #

# - Open the Inquiry Scene
# $scene = KInquireScene.new

# Warning! case is one of Ruby's reserved words so I use kase instead.

# - Add a New Case
#   - CaseID: 1+
#   - Priority: 1 as Top Priority, 2+ not that important
#   - Statuses: nil, :cold, :closed, :sealed, :top_secret
#   - You can add one or both options.
# new_case(CaseID, "Case Name", "City Name")
#   - Case with specific Priority
# new_case(CaseID, "Case Name", "City Name", :p => Priority)
#   - Case with specific Status
# new_case(CaseID, "Case Name", "City Name", :s => Status)

# - Find a Case
# case_by_id(CaseID)
# case_by_name("Case Name")

# - Does a Case exist?
# case_id?(CaseID)
# case_name?("Case Name")

# - Get Last Created Case
# If any of these script calls fails, it means you never created it.
#   - Script Calls Only
# @case.some_script_call
#   - Script Calls & Script Modifications
# KInquire.last_case
# KInquire.this_case

# - Set or Reset a Target - Use it at least once!
# @case.target = "Trickster"

# - Set a Case's date
# @case.date =
# @case.year = Year
# @case.month = Month
# @case.day = Day
# @case.month_day(Month, Day)

# - Add new Page to a given Case
#   - First Find a Case using one of the available script calls
#   You can set an empty picture like this: ""
#   Threat Level: "Highest" as Top Priority
#   Relevance: "Low" or "Medium" or "High"
# @case.person("Name", Age, "Picture", ThreatLevel, Relevance)
# @case.place("Location", "Owner", "Picture", ThreatLevel, Relevance)
# @case.evidence("Something", "Owner", "Contact", "Pic.", TL, Relev.)
#   - After any of these 3 script calls use:
# @page.some_script_call

# - Set Lines of Data to a given Page - Use it at least once!
# @page.lines =

# - Reset the Threat Level of a given Page
# @page.threat_level = "High"

# - Reset the Relevance of a given Page
# @page.relevance = "High"

# - Set Page Location
# @page.location = "Madison Avenue"

# - Set Page MapID
# @page.map_id = MapID

# - Check a given Case's status
# @case.open?
# @case.cold?
# @case.closed?
# @case.sealed?
# @case.top_secret?

# - Change a given Case's status
#   Statuses: nil, :cold, :closed, :sealed, :top_secret, :declass
# @page.status = some_status ## For Single Page
# @case.status = some_status ## For Entire Case
# @case.open!
# @case.cold!
# @case.close!
# @case.declassify!

# - Check if the current Case has got more than N pages
# @case.more_pages?(N)

# - Set Fake System Date
# $game_system.date =
# $game_system.year = Year
# $game_system.month = Month
# $game_system.day = Day
# $game_system.month_day(Month, Day)
# $game_system.next_day
# $game_system.next_week
# $game_system.next_month

# - Get Fake System Date Data
# $game_system.days
# $game_system.months
# $game_system.years

module KInquire
DEFAULT_DATE = # Format: Y, M, D
START_DATE = # Format: Y, M, D
UNKNOWN = "Unknown"
STATUSES = ["Open", "Cold", "Closed", "Sealed", "Top Secret"]
DECLASSIFIED = "Declassified"
module DateSetup
    MAX_DAYS = 30
    MAX_MONTHS = 12
end

module Heading
    BACKDROP = "heading"
    FONT_NAME = "Times New Roman"
    FONT_SIZE = 24
    FONT_BOLD = true
    FONT_SHADOW = true
    TITLE = "Cases"
    SELECT_LABEL = "Please select a category"
end

module FileManager
    CHARS_TO_REMOVE = 7
    FONT_NAME = "Times New Roman"
    FONT_SIZE = 21
    FONT_BOLD = false
    FONT_SHADOW = true
    SELECT_LABEL = "Please select a case"
end

module Files
    # Available Formats: "Y/M/D", "M/D/Y", "D/M/Y"
    DATE_FORMAT = "Y/M/D"
    TITLE_FONT_NAME = ""
    TITLE_FONT_SIZE = 22
    TITLE_FONT_BOLD = true
    TITLE_FONT_SHADOW = true
    TEXT_FONT_NAME = "Times New Roman"
    TEXT_FONT_SIZE = 21
    TEXT_FONT_BOLD = true
    TEXT_FONT_SHADOW = true
    PAGE_FONT_SIZE = 21
    PAGE_FONT_SHADOW = true
    HIDDEN_FONT_NAME = "Verdana"
    HIDDEN_FONT_SIZE = 24
    HIDDEN_FONT_BOLD = true
    HIDDEN_FONT_SHADOW = true
    NO_RECORD = "No record was found"
    CASE_NUMBER = "Case No."
    DATE = "Date"
    NAME = "Name"
    AGE = "Age"
    OWNER = "Owner"
    LOCATION = "Location"
    THREAT_LEVEL = "Threat Level"
    RELEVANCE = "Relevance"
    CITY = "City"
    CONTACT = "Contact"
    TARGET = "Target"
    STATUS = "Status"
    DESCRIPTION = "Description"
end

module DateMethods
    def month_day(nm, nd)
      @date.month = nm
      @date.day = nd
    end
    def year=(ny) @date.year = ny end
    def month=(nm) @date.month = nm end
    def day=(nd) @date.day = nd end
    def date=(ary) @date = KInquire::Date.new(ary) end
    def date() @date end
end

class Date
    include DateSetup
    def initialize(*data)
      data = data.flatten
      total = data.size
      if total < 3
      str = "Wrong number of arguments (found #{total}, expected 3)"
      raise ArgumentError, str
      end
      @year = data.shift
      @month = data.shift
      @day = data.shift
      @days = 0
    end

    def next_month(days=1)
      if days > 1
      left = MAX_DAYS - @day
      days -= left
      end
      if @month < MAX_MONTHS
      @month += 1
      @day = days
      else
      @year += 1
      @month = 1
      @day = days
      end
    end

    def next_day
      @days += 1
      @day < MAX_DAYS ? @day += 1 : next_month
    end

    def next_days(days)
      @days += days
      @day < MAX_DAYS ? @day += days : next_month(days)
    end

    def next_week
      @days += 7
      @day < MAX_DAYS ? @day += 7 : next_month(7)
    end
    def months() (@days / MAX_DAYS).round end
    def years() (@days / MAX_DAYS / MAX_MONTHS).round end
    attr_accessor :year, :month, :day, :days
end

class CasePage
    def initialize
      @name = UNKNOWN
      @age = 0
      @threat_level = nil
      @relevance = nil
      @location = UNKNOWN
      @map_id = 0
      @owner = UNKNOWN
      @contact = UNKNOWN
      @picture = ""
      @type = nil
      @status = nil
      @lines = []
    end
    def classified?() @status == :sealed or @status == :top_secret end
    def info?() @type == :info end
    def person?() @type == :person end
    def place?() @type == :location end
    def evidence?() @type == :evidence end
    attr_accessor :name, :age, :owner, :picture, :threat_level, :type, :lines
    attr_accessor :location, :map_id, :relevance, :contact, :status
end

class Case
    include DateMethods
    def initialize(cid, case_name=UNKNOWN, city_name=UNKNOWN)
      @id = cid
      @name = case_name
      @city = city_name
      @location = UNKNOWN
      @contact = UNKNOWN
      @target = UNKNOWN
      @priority = nil
      @pages =
      @pages.type = :info
      @status = nil
      @date = Date.new(DEFAULT_DATE)
    end

    def add_page(type, pic)
      @pages << page = CasePage.new
      page.picture = pic
      page.type = type
      page.status = @status
      page
    end

    def person(name, age, pic, threat_level, relevance)
      page = add_page(:person, pic)
      page.name = name
      page.age = age
      page.threat_level = threat_level
      page.relevance = relevance
      $game_system.map_interpreter.page = page
    end

    def place(location, owner, pic, threat_level, relevance)
      page = add_page(:location, pic)
      page.name = location
      page.owner = owner
      page.threat_level = threat_level
      page.relevance = relevance
      $game_system.map_interpreter.page = page
    end

    def evidence(thing, owner, contact, pic, threat_level, relevance)
      page = add_page(:evidence, pic)
      page.name = thing
      page.owner = owner
      page.contact = contact
      page.threat_level = threat_level
      page.relevance = relevance
      $game_system.map_interpreter.page = page
    end
    def more_pages?(n) @pages.size > n end
    def open?() @status == nil or @status == :declass end
    def cold?() @status == :cold end
    def closed?() @status == :closed end
    def sealed?() @status == :sealed end
    def top_secret?() @status == :top_secret end
    def declassified?() @status == :declass end
    def open!() @status = nil end
    def cold!() @status = :cold end
    def close!() @status = :closed end
    def declassify!() @status = :declass end
    attr_accessor :id, :name, :city, :location, :priority, :pages, :status
    attr_accessor :target, :contact
end

class Finding
    def initialize() @cases = [] end
    def <<(kase) @cases << kase end
    def case_id?(cid) @cases.select{|c| c.id == cid }.any? end
    def case_name?(name) @cases.select{|c| c.name == name }.any? end
    def case_by_id(cid) @cases.select{|c| c.id == cid } end
    def case_by_name(name) @cases.select{|c| c.name == name } end
    def case_names() @cases.map{|c| c.name } end
    def last_case() @last_case end
    attr_accessor :cases
end
extend self
attr_accessor :last_case, :this_case
end

class Game_System
include KInquire::DateMethods
alias :kyon_inquiry_gm_sys_init :initialize
def initialize
    kyon_inquiry_gm_sys_init
    @date = KInquire::Date.new(KInquire::START_DATE)
    @start_date = @date.dup
end
def next_day() @date.next_day end
def next_days(n) @date.next_days(n) end
def next_week() @date.next_week end
def days() @date.days end
def months() @date.months end
def years() @date.years end
attr_reader :start_date, :date
end

class Game_Party
alias :kyon_inquiry_gm_pty_init :initialize
def initialize
    kyon_inquiry_gm_pty_init
    @inquiry = KInquire::Finding.new
end

def case_id?(cid) @inquiry.case_id?(cid) end
def case_name?(name) @inquiry.case_name?(name) end
def case(name) KInquire.this_case = @inquiry.case_by_name(name) end
def case_by_id(cid) KInquire.this_case = @inquiry.case_by_id(cid) end

def new_case(cid, case_name, city_name, options={})
    cs = case_by_id(cid)
    return cs if cs
    cs = KInquire::Case.new(cid, case_name, city_name)
    @inquiry << cs
    cs.priority = options.delete(:p) || 10
    cs.status = options.delete(:s)
    KInquire.last_case = cs
end
attr_reader :inquiry
end

class Interpreter
def new_case(cid, kase, city, options={})
    @case = $game_party.new_case(cid, kase, city, options)
end
def case_by_id(cid) @case = $game_party.case_by_id(cid) end
def case_by_name(name) @case = $game_party.case(name) end
def case_id?(cid) $game_party.case_id?(cid) end
def case_name?(cid) $game_party.case_name?(cid) end
attr_writer :page
end

class KInfoHeading
include KInquire::Heading
def initialize(hx, hy)
    @sprites =
    @sprites.each do |s|
      s.x = hx
      s.y = hy
    end
    @sprites.bitmap = b = RPG::Cache.picture(BACKDROP).dup
    @cw = b.width
    @sprites.bitmap = Bitmap.new(@cw, b.height)
end

def set_text(text, align=0)
    b = @sprites.bitmap
    b.clear
    f = b.font
    f.name = FONT_NAME
    f.size = FONT_SIZE
    f.bold = FONT_BOLD
    if FONT_SHADOW
      f.color.set(0, 0, 0)
      b.draw_text(1, 4, @cw, FONT_SIZE, text, align)
      b.draw_text(1, 5, @cw, FONT_SIZE, text, align)
      f.color.set(255, 255, 255)
    end
    b.draw_text(0, 4, @cw, FONT_SIZE, text, align)
end

def dispose
    @sprites.each do |s|
      s.bitmap.dispose
      s.dispose
    end
    @sprites.clear
end
end

class KCaseManWindow < Window_Selectable
include KInquire::FileManager
def initialize(wx, wy)
    super(wx, wy, 212, 480 - wy)
    @cw = width - 32
    @data = []
end

def open_list(type)
    cases = $game_party.inquiry.cases
    @cases = case type
    when 0 then cases.select{|c| c.open? }
    when 1 then cases.select{|c| c.cold? }
    when 2 then cases.select{|c| c.closed? }
    when 3 then cases.select{|c| c.sealed? }
    when 4 then cases.select{|c| c.top_secret? }
    end
    @item_max = @cases.size
    return if @cases.empty?
    @data = @cases.map{|c| c.name }
    activate
    refresh
end

def refresh
    return if @data.empty?
    self.contents.dispose if self.contents
    self.contents = Bitmap.new(@cw, row_max * 28)
    f = self.contents.font
    f.name = FONT_NAME
    f.size = FONT_SIZE
    f.bold = FONT_BOLD
    @item_max.times{|n| draw_item(n) }
end

def draw_item(pos)
    data = @data
    ts = data.size
    tw = contents.text_size(data).width
    data = data.slice(0..ts-CHARS_TO_REMOVE) + "..." if tw > @cw
    contents.draw_text(4, pos * 28 + 2, @cw, 24, data)
end

def update_cursor_rect
    if @index < 0
      self.cursor_rect.empty
    else
      self.cursor_rect.set(0, @index * 28, @cw, 28)
    end
end

def activate
    self.active = bool = !empty_list?
    self.index = 0 if bool
end

def deactivate
    self.index = -1
    self.active = false
end
def empty_list?() @item_max == 0 end
def empty_pages?() @cases.empty? end
def case() @cases[@index] end
end

class KInfoFileWindow < Window_Base
include KInquire
def initialize
    super(224, 0, 416, 480)
    @cw = width - 32
    @ch = height - 32
    @text_size = Files::TEXT_FONT_SIZE + 2
    self.contents = Bitmap.new(@cw, @ch)
    refresh_no_file(nil)
end

def draw_text_shadow(sx, sy, sw, size, text, align)
    c = contents
    c.font.color.set(0, 0, 0)
    c.draw_text(sx+1, sy, sw, size, text, align)
    c.draw_text(sx+1, sy+1, sw, size, text, align)
    c.font.color.set(255, 255, 255)
end

def refresh_no_file(kind)
    c = contents
    c.clear
    text = case kind
    when nil then Heading::SELECT_LABEL
    when :case then FileManager::SELECT_LABEL
    when :page then Files::NO_RECORD
    end
    tfs = Files::TITLE_FONT_SIZE
    if Files::TITLE_FONT_SHADOW
      draw_text_shadow(0, 0, @cw, tfs, text, 1)
    end
    c.draw_text(0, 0, @cw, tfs, text, 1)
end

def refresh
    c = contents
    c.clear
    tfs = Files::TITLE_FONT_SIZE
    if Files::TITLE_FONT_SHADOW
      draw_text_shadow(0, 0, @cw, tfs, @name, 1)
    end
    c.draw_text(0, 0, @cw, tfs, @name, 1)
    pages = @case.pages
    @page = pages[@index]
    @lines = @page.lines
    pos = (@index + 1).to_s + "/" + @total.to_s
    txfs = Files::TEXT_FONT_SIZE
    if @total == 0
      nothing = Files::NO_RECORD
      if Files::TEXT_FONT_SHADOW
      draw_text_shadow(0, 60, @cw, txfs, nothing, 1)
      end
      c.draw_text(0, 60, @cw, txfs, nothing, 1)
    end
    if @page.info?
      draw_info
    elsif @page.classified?
      draw_hidden
    elsif @page.person?
      draw_person
    elsif @page.place?
      draw_place
    elsif @page.evidence?
      draw_evidence
    end
    pfs = Files::PAGE_FONT_SIZE
    py = @ch - pfs
    if Files::PAGE_FONT_SHADOW
      draw_text_shadow(0, py, @cw, pfs, pos, 2)
    end
    c.draw_text(0, py, @cw, pfs, pos, 2)
end

def find_status
    labels = KInquire::STATUSES
    case @case.status
    when nil      then labels
    when :declass then DECLASSIFIED
    when :cold    then labels
    when :closedthen labels
    when :sealedthen labels
    when :top_secret then labels
    end
end

def draw_date
    dt = @case.date
    case format = Files::DATE_FORMAT
    when /y\/m\/d/i
      date = sprintf("%02d/%02d/%02d", dt.year, dt.month, dt.day)
    when /m\/d\/y/i
      date = sprintf("%02d/%02d/%02d", dt.month, dt.day, dt.year)
    when /d\/m\/y/i
      date = sprintf("%02d/%02d/%02d", dt.day, dt.month, dt.year)
    end
    dx = 108 + contents.text_size(date).width
    contents.draw_text(100, 66, @cw, @text_size, date)
    contents.draw_text(dx, 66, @cw, @text_size, "(" + format.upcase + ")")
end

def draw_info
    c = self.contents
    draw_text_shadow(0, 40, @cw, @text_size, Files::CASE_NUMBER, 0)
    draw_text_shadow(0, 66, @cw, @text_size, Files::DATE, 0)
    draw_text_shadow(0, 92, @cw, @text_size, Files::STATUS, 0)
    draw_text_shadow(0, 120, @cw, @text_size, Files::TARGET, 0)
    draw_text_shadow(0, 148, @cw, @text_size, Files::CITY, 0)
    draw_text_shadow(0, 176, @cw, @text_size, Files::CONTACT, 0)
    c.font.color.set(220, 220, 20)
    c.draw_text(0, 40, @cw, @text_size, Files::CASE_NUMBER)
    c.draw_text(0, 66, @cw, @text_size, Files::DATE)
    c.draw_text(0, 92, @cw, @text_size, Files::STATUS)
    c.draw_text(0, 120, @cw, @text_size, Files::TARGET)
    c.draw_text(0, 148, @cw, @text_size, Files::CITY)
    c.draw_text(0, 176, @cw, @text_size, Files::CONTACT)
    c.font.color.set(255, 255, 255)
    c.draw_text(100, 40, @cw, @text_size, sprintf("%08d", @case.id))
    draw_date
    c.draw_text(100, 92, @cw, @text_size, find_status)
    c.draw_text(100, 120, @cw, @text_size, @case.target)
    c.draw_text(100, 148, @cw, @text_size, @case.city)
    c.draw_text(100, 176, @cw, @text_size, @case.contact)
end

def draw_hidden
    c = self.contents
    hfs = Files::HIDDEN_FONT_SIZE + 2
    draw_text_shadow(0, 140, @cw, hfs, Files::DATE, 1)
    c.draw_text(0, 140, @cw, hfs, Files::DATE)
end

def draw_picture
    src = RPG::Cache.picture(@page.picture)
    contents.blt(4, 32, src, src.rect)
    src.dispose
end

def draw_person
    c = self.contents
    if @page.picture.empty?
      pex = 0
    else
      pex = 116
      draw_picture
    end
    draw_text_shadow(pex, 32, @cw, @text_size, Files::NAME, 0)
    draw_text_shadow(pex, 88, @cw, @text_size, Files::AGE, 0)
    draw_text_shadow(pex + 72, 88, @cw, @text_size, Files::THREAT_LEVEL, 0)
    draw_text_shadow(4, 144, @cw, @text_size, Files::RELEVANCE, 0)
    draw_text_shadow(4, 172, @cw, @text_size, Files::DESCRIPTION, 0)
    c.font.color.set(220, 220, 20)
    c.draw_text(pex, 32, @cw, @text_size, Files::NAME)
    c.draw_text(pex, 88, @cw, @text_size, Files::AGE)
    c.draw_text(pex + 72, 88, @cw, @text_size, Files::THREAT_LEVEL)
    c.draw_text(4, 144, @cw, @text_size, Files::RELEVANCE)
    c.draw_text(4, 172, @cw, @text_size, Files::DESCRIPTION)
    c.font.color.set(255, 255, 255)
    c.draw_text(pex, 60, @cw, @text_size, @page.name)
    c.draw_text(pex + 8, 116, @cw, @text_size, @page.age.to_s)
    c.draw_text(pex + 80, 116, @cw, @text_size, @page.threat_level)
    c.draw_text(120, 144, @cw, @text_size, @page.threat_level)
    draw_lines(200, @text_size)
end

def draw_place
    c = self.contents
    if @page.picture.empty?
      pex = 0
    else
      pex = 156
      draw_picture
    end
    draw_text_shadow(pex, 54, @cw, @text_size, Files::LOCATION, 0)
    draw_text_shadow(pex, 82, @cw, @text_size, Files::OWNER, 0)
    draw_text_shadow(pex, 110, @cw, @text_size, Files::THREAT_LEVEL, 0)
    draw_text_shadow(pex, 138, @cw, @text_size, Files::RELEVANCE, 0)
    draw_text_shadow(4, 172, @cw, @text_size, Files::DESCRIPTION, 0)
    c.font.color.set(220, 220, 20)
    c.draw_text(pex, 54, @cw, @text_size, Files::LOCATION)
    c.draw_text(pex, 82, @cw, @text_size, Files::OWNER)
    c.draw_text(pex, 110, @cw, @text_size, Files::THREAT_LEVEL)
    c.draw_text(pex, 138, @cw, @text_size, Files::RELEVANCE)
    c.draw_text(4, 172, @cw, @text_size, Files::DESCRIPTION)
    c.font.color.set(255, 255, 255)
    c.draw_text(pex, 32, @cw, @text_size, @page.name)
    pex += 116
    c.draw_text(pex, 54, @cw, @text_size, @page.location)
    c.draw_text(pex, 82, @cw, @text_size, @page.owner)
    c.draw_text(pex, 110, @cw, @text_size, @page.threat_level)
    c.draw_text(pex, 138, @cw, @text_size, @page.relevance)
    draw_lines(198, @text_size)
end

def draw_evidence
    c = self.contents
    if @page.picture.empty?
      pex = 0
    else
      pex = 116
      draw_picture
    end
    draw_text_shadow(pex, 58, @cw, @text_size, Files::OWNER, 0)
    draw_text_shadow(pex, 86, @cw, @text_size, Files::CONTACT, 0)
    draw_text_shadow(pex, 114, @cw, @text_size, Files::RELEVANCE, 0)
    draw_text_shadow(4, 172, @cw, @text_size, Files::DESCRIPTION, 0)
    c.font.color.set(220, 220, 20)
    c.draw_text(pex, 58, @cw, @text_size, Files::OWNER)
    c.draw_text(pex, 86, @cw, @text_size, Files::CONTACT)
    c.draw_text(pex, 114, @cw, @text_size, Files::RELEVANCE)
    c.draw_text(4, 172, @cw, @text_size, Files::DESCRIPTION)
    c.font.color.set(255, 255, 255)
    c.draw_text(pex, 32, @cw, @text_size, @page.name)
    c.draw_text(pex + 104, 58, @cw, @text_size, @page.owner)
    c.draw_text(pex + 104, 86, @cw, @text_size, @page.contact)
    c.draw_text(pex + 104, 114, @cw, @text_size, @page.relevance)
    draw_lines(156 + @text_size * 2, @text_size)
end

def draw_lines(base_y, size)
    c = self.contents
    w = @cw - 24
    @lines.size.times do |n|
      c.draw_text(12, base_y + n * size - 2, w, size, @lines)
    end
end

def case=(kase)
    @case = kase
    @name = kase.name
    @total = @case.pages.size
    @index = 0
    refresh
end

def update
    if Input.trigger?(Input::LEFT)
      return $game_system.se_play($data_system.buzzer_se) if @total == 0
      $game_system.se_play($data_system.cursor_se)
      @index = (@index - 1) % @total
      refresh
      return
    elsif Input.trigger?(Input::RIGHT)
      return $game_system.se_play($data_system.buzzer_se) if @total == 0
      $game_system.se_play($data_system.cursor_se)
      @index = (@index + 1) % @total
      refresh
    end
end
end

class KInquireScene
include KInquire
def main
    @stage = :main
    @command_window = Window_Command.new(212, STATUSES)
    @command_window.active = true
    @heading = KInfoHeading.new(0, 32 * 6)
    @heading.set_text(Heading::TITLE, 1)
    @case_window = KCaseManWindow.new(0, 32 * 7)
    @file_window = KInfoFileWindow.new
    Graphics.transition
    while @stage
      Graphics.update
      Input.update
      update
    end
    Graphics.freeze
    @file_window.dispose
    @case_window.dispose
    @heading.dispose
    @command_window.dispose
end

def update
    case @stage
    when :main
      update_main
    when :cases
      update_cases
    when :file
      update_file
    end
end

def update_main
    @command_window.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      return @stage = nil
    elsif Input.trigger?(Input::C)
      @case_window.open_list(@command_window.index)
      if @case_window.empty_list?
      return $game_system.se_play($data_system.buzzer_se)
      end
      $game_system.se_play($data_system.decision_se)
      @file_window.refresh_no_file(:case)
      @stage = :cases
    end
end

def update_cases
    @case_window.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      return @stage = nil
    elsif Input.trigger?(Input::C)
      if @case_window.empty_list?
      return $game_system.se_play($data_system.buzzer_se)
      end
      $game_system.se_play($data_system.decision_se)
      @case_window.active = false
      @stage = :file
      if @case_window.empty_pages?
      @file_window.refresh_no_file(:page)
      return
      end
      @file_window.case = @case_window.case
    end
end

def update_file
    @file_window.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @file_window.refresh_no_file(:case)
      @case_window.active = true
      return @stage = :cases
    end
end
end



DOWNLOAD DEMO​

Terms & Conditions

Free for use in non commercial games. Contact me if you need it for a commercial game instead.
Include me in your game credits!
Do not report my script anywhere else!


本贴来自国际rpgmaker官方论坛作者:kyonides处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/kinquire-xp.139573/
页: [1]
查看完整版本: KInquire XP