累计送礼: 0 个 累计收礼: 1 个 TA的每日心情 开心 前天 04:10
签到天数: 209 天
连续签到: 2 天
[LV.7]常住居民III
管理员
VIP
7
卡币
22945
OK点
16
推广点
0
同能卷
50
积分 28308
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 = [Year, Month, Day] # @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 = [Line1, etc.] # - 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 = [Year, Month, Day] # $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 = [257, 1, 2] # Format: Y, M, D START_DATE = [257, 1, 5] # 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 = [CasePage.new] @pages[0].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 }[0] end def case_by_name(name) @cases.select{|c| c.name == name }[0] 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 = [Sprite.new, Sprite.new] @sprites.each do |s| s.x = hx s.y = hy end @sprites[0].bitmap = b = RPG::Cache.picture(BACKDROP).dup @cw = b.width @sprites[1].bitmap = Bitmap.new(@cw, b.height) end def set_text(text, align=0) b = @sprites[1].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[pos] 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[0] when :declass then DECLASSIFIED when :cold then labels[1] when :closed then labels[2] when :sealed then labels[3] when :top_secret then labels[4] 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[n]) 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 复制代码
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/
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x