Project1
标题:
【ACE】公共事件專用的任務購買
[打印本页]
作者:
asdrty123
时间:
2012-1-22 22:53
标题:
【ACE】公共事件專用的任務購買
本帖最后由 asdrty123 于 2012-1-23 22:49 编辑
這是ACE專用的腳本...不過我本人也沒看懂 正在研究
來自
http://rpgmaker.net/scripts/162/
#==============================================================================
#
# ▼ Yanfly Engine Ace - Common Event Shop v1.00
# -- Last Updated: 2012.01.13
# -- Level: Normal, Hard
# -- Requires: n/a
#
#==============================================================================
$imported = {} if $imported.nil?
$imported["YEA-CommonEventShop"] = true
#==============================================================================
# ▼ Updates
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2012.01.13 - Started Script and Finished.
#
#==============================================================================
# ▼ Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Sometimes, being able to buy items just isn't enough. With the common event
# shop, you can set anything to be sold as long as you can event it. Expanded
# upon the original Yanfly Engine ReDux version, the Ace version gives more
# options such as using custom switches to enable/disable common events from
# being bought or even appearing. And if that wasn't enough, advanced users can
# use eval strings for more conditional common events.
#
#==============================================================================
# ▼ 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.
#
# -----------------------------------------------------------------------------
# Common Event Notetags - These notetags go in a common event's comments.
# -----------------------------------------------------------------------------
# <cost: x>
# Sets the gold cost of the common event to x gold. If this notetag is not used
# the default gold cost will be whatever DEFAULT_COST is in the script module.
#
# <exit shop>
# When this event is bought, the player will automatically exit the shop before
# the common event will take place. If this tag is not used, the common event's
# contents will take place inside of the common event shop.
#
# <icon: x>
# Changes the icon used for the common event to x icon index. If this notetag
# is not used, the icon used for the common event will be whatever DEFAULT_ICON
# is in the script module.
#
# <image: string>
# Changes the image used for the common event to filename "string" found in
# the Graphics\Pictures\ folder. Requires Ace Shop Options to use. If this tag
# is not used, the image displayed will be the common event's expanded icon.
#
# <help description>
# string
# </help description>
# Sets the text used for the help window in the shop scene. Multiple lines in
# the notebox will be strung together. Use | for a line break. Text codes may
# be used inside of the help description.
#
# <shop data>
# string
# </shop data>
# Can be used if you have Yanfly Engine Ace - Ace Shop Options installed. Sets
# the string as the text shown inside the data window the shop. Use | for a
# line break. Text codes may be used inside of the shop data text.
#
# <shop variables: x>
# <shop variables: x, x>
# This sets the variable x displayed in the status window in the lower right
# corner of the screen. Insert multiples of this notetag to display more
# variables inside of the status window.
#
# <shop enable switch: x>
# <shop enable switch: x, x>
# This notetag will cause the common event item to require switch x to be ON
# before the common event can be bought. Insert multiples of these notetags to
# require more switches to be ON before the common event item can be gouth.
#
# <shop enable eval>
# string
# string
# </shop enable eval>
# Advanced users can enable and disable common events from being bought through
# this notetag. Replace string with lines of code to check for whether or not
# the common event can be sold. If multiple lines are used, they are considered
# to be a part of the same line.
#
# <shop show switch: x>
# <shop show switch: x, x>
# This notetag will cause the common event item to be hidden unless switch x is
# ON. Insert multiple of these notetags to require more switches to be ON
# before the common event item will be shown in the shop.
#
# <shop show eval>
# string
# string
# </shop show eval>
# Advanced users can show and hide common events from being listed in the buy
# list through this notetag. Replace string with lines of code to check for
# whether or not the common event will be shown. If multiple lines are used,
# they are considered to be a part of the same line.
#
# -----------------------------------------------------------------------------
# Script Calls - These commands are used with script calls.
# -----------------------------------------------------------------------------
# common_event_shop(x)
# This will call common event shop x. x will the shop ID used from the SHOPS
# hash in the script's module. Any items placed within the array assigned to
# the shop ID will be sold as common events.
#
#==============================================================================
# ▼ Compatibility
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
# it will run with RPG Maker VX without adjusting.
#
# This script is compatible with Yanfly Engine Ace - Ace Shop Options v1.00+.
# The position of this script does not matter relative to the other script.
#
#==============================================================================
module YEA
module COMMON_EVENT_SHOP
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - General Settings -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# These settings below adjust the default costs for common events (if no
# custom costs are used), the default icons used, and what kinds of common
# events are sold for each of the shop ID's.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
DEFAULT_COST = 1000 # Default gold cost for common events.
DEFAULT_ICON = 236 # Default icon used for common events.
# This hash adjusts the common events sold in each of the shop ID's. Insert
# the common events you want sold inside of the arrays with the shop ID as
# the hash key. You can use number ranges to add common events quicker.
SHOPS ={
# ID => [Common Event ID's],
1 => [1, 2..8, 9, 10],
2 => [11..20],
3 => [21..30],
} # Do not remove this.
end # COMMON_EVENT_SHOP
end # YEA
#==============================================================================
# ▼ Editting anything past this point may potentially result in causing
# computer damage, incontinence, explosion of user's head, coma, death, and/or
# halitosis so edit at your own risk.
#==============================================================================
module YEA
module COMMON_EVENT_SHOP
module_function
#--------------------------------------------------------------------------
# convert_integer_array
#--------------------------------------------------------------------------
def convert_integer_array(array)
result = []
array.each { |i|
case i
when Range; result |= i.to_a
when Integer; result |= [i]
end }
return result
end
#--------------------------------------------------------------------------
# convert_full_hash
#--------------------------------------------------------------------------
def convert_full_hash(hash)
result = {}
hash.each { |key| result[key[0]] = convert_integer_array(key[1]) }
return result
end
#--------------------------------------------------------------------------
# converted_contants
#--------------------------------------------------------------------------
SHOPS = convert_full_hash(SHOPS)
end # COMMON_EVENT_SHOP
module REGEXP
module COMMONEVENT
COST = /<(?:COST|shop cost):[ ](\d+)>/i
IMAGE = /<(?:IMAGE|image):[ ](.*)>/i
ICON_INDEX = /<(?:ICON|icon index):[ ](\d+)>/i
EVENT_TYPE_EXIT = /<(?:EXIT_SHOP|exit shop)>/i
SHOP_VARIABLES =
/<(?:SHOP_VARIABLES|shop variables):[ ]*(\d+(?:\s*,\s*\d+)*)>/i
HELP_DESCRIPTION_ON = /<(?:HELP_DESCRIPTION|help description)>/i
HELP_DESCRIPTION_OFF = /<\/(?:HELP_DESCRIPTION|help description)>/i
SHOP_DATA_ON = /<(?:SHOP_DATA|shop data)>/i
SHOP_DATA_OFF = /<\/(?:SHOP_DATA|shop data)>/i
SHOP_ENABLE_SWITCH =
/<(?:SHOP_ENABLE_SWITCH|shop enable switch):[ ]*(\d+(?:\s*,\s*\d+)*)>/i
SHOP_SHOW_SWITCH =
/<(?:SHOP_SHOW_SWITCH|shop show switch):[ ]*(\d+(?:\s*,\s*\d+)*)>/i
SHOP_ENABLE_EVAL_ON = /<(?:SHOP_ENABLE_EVAL|shop enable eval)>/i
SHOP_ENABLE_EVAL_OFF = /<\/(?:SHOP_ENABLE_EVAL|shop enable eval)>/i
SHOP_SHOW_EVAL_ON = /<(?:SHOP_SHOW_EVAL|shop show eval)>/i
SHOP_SHOW_EVAL_OFF = /<\/(?:SHOP_SHOW_EVAL|shop show eval)>/i
end # COMMONEVENT
end # REGEXP
end # YEA
#==============================================================================
# ■ Numeric
#==============================================================================
class Numeric
#--------------------------------------------------------------------------
# new method: group_digits
#--------------------------------------------------------------------------
unless $imported["YEA-CoreEngine"]
def group; return self.to_s; end
end # $imported["YEA-CoreEngine"]
end # Numeric
#==============================================================================
# ■ DataManager
#==============================================================================
module DataManager
#--------------------------------------------------------------------------
# alias method: load_database
#--------------------------------------------------------------------------
class <<self; alias load_database_ces load_database; end
def self.load_database
load_database_ces
load_notetags_ces
end
#--------------------------------------------------------------------------
# new method: load_notetags_ces
#--------------------------------------------------------------------------
def self.load_notetags_ces
groups = [$data_common_events]
for group in groups
for obj in group
next if obj.nil?
obj.load_notetags_ces
end
end
end
end # DataManager
#==============================================================================
# ■ RPG::Actor
#==============================================================================
class RPG::CommonEvent
#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :cost
attr_accessor :description
attr_accessor :event_type
attr_accessor :icon_index
attr_accessor :image
attr_accessor :shop_variables
attr_accessor :shop_data
attr_accessor :shop_enable_switch
attr_accessor :shop_enable_eval
attr_accessor :shop_show_switch
attr_accessor :shop_show_eval
#--------------------------------------------------------------------------
# common cache: load_notetags_ces
#--------------------------------------------------------------------------
def load_notetags_ces
@cost = YEA::COMMON_EVENT_SHOP::DEFAULT_COST
@description = ""
@event_type = :instore
@icon_index = YEA::COMMON_EVENT_SHOP::DEFAULT_ICON
@image = nil
@shop_variables = []
@shop_data = ""
@shop_enable_switch = []
@shop_enable_eval = nil
@shop_show_switch = []
@shop_show_eval = nil
@help_description_on = false
@shop_data_on = false
@shop_enable_eval_on = false
@shop_show_eval_on = false
#---
self.note.split(/[\r\n]+/).each { |line|
case line
#---
when YEA::REGEXP::COMMONEVENT::COST
@cost = $1.to_i
when YEA::REGEXP::COMMONEVENT::ICON_INDEX
@icon_index = $1.to_i
when YEA::REGEXP::COMMONEVENT::IMAGE
@image = $1.to_s
#---
when YEA::REGEXP::COMMONEVENT::EVENT_TYPE_EXIT
@event_type = :exit
#---
when YEA::REGEXP::COMMONEVENT::SHOP_VARIABLES
$1.scan(/\d+/).each { |num|
@shop_variables.push(num.to_i) if num.to_i > 0 }
when YEA::REGEXP::COMMONEVENT::SHOP_ENABLE_SWITCH
$1.scan(/\d+/).each { |num|
@shop_enable_switch.push(num.to_i) if num.to_i > 0 }
when YEA::REGEXP::COMMONEVENT::SHOP_SHOW_SWITCH
$1.scan(/\d+/).each { |num|
@shop_show_switch.push(num.to_i) if num.to_i > 0 }
#---
when YEA::REGEXP::COMMONEVENT::HELP_DESCRIPTION_ON
@help_description_on = true
when YEA::REGEXP::COMMONEVENT::HELP_DESCRIPTION_OFF
@help_description_on = false
when YEA::REGEXP::COMMONEVENT::SHOP_DATA_ON
@shop_data_on = true
when YEA::REGEXP::COMMONEVENT::SHOP_DATA_OFF
@shop_data_on = false
when YEA::REGEXP::COMMONEVENT::SHOP_ENABLE_EVAL_ON
@shop_enable_eval = ""
@shop_enable_eval_on = true
when YEA::REGEXP::COMMONEVENT::SHOP_ENABLE_EVAL_OFF
@shop_enable_eval_on = false
when YEA::REGEXP::COMMONEVENT::SHOP_SHOW_EVAL_ON
@shop_show_eval = ""
@shop_show_eval_on = true
when YEA::REGEXP::COMMONEVENT::SHOP_SHOW_EVAL_OFF
@shop_show_eval_on = false
else
@description += line.to_s if @help_description_on
@shop_data += line.to_s if @shop_data_on
@shop_enable_eval += line.to_s if @shop_enable_eval_on
@shop_show_eval += line.to_s if @shop_show_eval_on
#---
end
} # self.note.split
#---
@description.gsub!(/[|]/i) { "\n" }
@shop_data.gsub!(/[|]/i) { "\n" }
end
#--------------------------------------------------------------------------
# new method: note
#--------------------------------------------------------------------------
def note
@note = ""
@list.each { |event|
next if event.nil?
next unless [108, 408].include?(event.code)
@note += event.parameters[0] + "\r\n"
} # Do not remove
return @note
end
end # RPG::Actor
#==============================================================================
# ■ Game_Interpreter
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# common_event_shop
#--------------------------------------------------------------------------
def common_event_shop(shop_id)
return unless SceneManager.scene_is?(Scene_Map)
return unless YEA::COMMON_EVENT_SHOP::SHOPS.include?(shop_id)
SceneManager.call(Scene_CommonEventShop)
goods = YEA::COMMON_EVENT_SHOP::SHOPS[shop_id]
SceneManager.scene.prepare(goods)
end
end # Game_Interpreter
#==============================================================================
# ■ Spriteset_CommonEventShop
#==============================================================================
class Spriteset_CommonEventShop < Spriteset_Map
#--------------------------------------------------------------------------
# initialize
#--------------------------------------------------------------------------
def initialize
create_viewports
create_pictures
update
end
#--------------------------------------------------------------------------
# create_viewports
#--------------------------------------------------------------------------
def create_viewports
@viewport = Viewport.new
@viewport.z = 2000
end
#--------------------------------------------------------------------------
# dispose
#--------------------------------------------------------------------------
def dispose
dispose_pictures
dispose_viewports
end
#--------------------------------------------------------------------------
# dispose_viewports
#--------------------------------------------------------------------------
def dispose_viewports
@viewport.dispose
end
#--------------------------------------------------------------------------
# update
#--------------------------------------------------------------------------
def update
update_pictures
update_viewports
end
#--------------------------------------------------------------------------
# update_viewports
#--------------------------------------------------------------------------
def update_viewports
@viewport.update
end
#--------------------------------------------------------------------------
# update_pictures
#--------------------------------------------------------------------------
def update_pictures
$game_map.screen.pictures.each do |pic|
@picture_sprites[pic.number] ||= Sprite_Picture.new(@viewport, pic)
@picture_sprites[pic.number].update
end
end
end # Spriteset_CommonEventShop
#==============================================================================
# ■ Window_Message
#==============================================================================
class Window_Message < Window_Base
#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :back_sprite
end # Window_Message
#==============================================================================
# ■ Window_CommonEventShopCommand
#==============================================================================
class Window_CommonEventShopCommand < Window_ShopCommand
#--------------------------------------------------------------------------
# col_max
#--------------------------------------------------------------------------
def col_max
return super if $imported["YEA-ShopOptions"]
return 2
end
#--------------------------------------------------------------------------
# make_command_list
#--------------------------------------------------------------------------
def make_command_list
add_command(Vocab::ShopBuy, :buy)
add_command(Vocab::ShopCancel, :cancel)
end
end # Window_CommonEventShopCommand
#==============================================================================
# ■ Window_CommonEventShopStatus
#==============================================================================
class Window_CommonEventShopStatus < Window_ShopStatus
#--------------------------------------------------------------------------
# update_page
#--------------------------------------------------------------------------
def update_page
end
#--------------------------------------------------------------------------
# refresh
#--------------------------------------------------------------------------
def refresh
contents.clear
reset_font_settings
draw_shop_variables
end
#--------------------------------------------------------------------------
# draw_shop_variables
#--------------------------------------------------------------------------
def draw_shop_variables
return if @item.nil?
dy = 0
for variable_id in @item.shop_variables
next if $game_variables[variable_id].nil?
draw_variable_info(variable_id, dy)
dy += line_height
return if dy + line_height > contents.height
end
end
#--------------------------------------------------------------------------
# draw_variable_info
#--------------------------------------------------------------------------
def draw_variable_info(variable_id, dy)
change_color(system_color)
name = $data_system.variables[variable_id]
draw_text(4, dy, contents.width - 8, line_height, name)
change_color(normal_color)
value = $game_variables[variable_id]
value = value.group if value.is_a?(Integer)
draw_text(4, dy, contents.width - 8, line_height, value, 2)
end
end # Window_CommonEventShopStatus
#==============================================================================
# ■ Window_CommonEventShopBuy
#==============================================================================
class Window_CommonEventShopBuy < Window_ShopBuy
#--------------------------------------------------------------------------
# make_item_list
#--------------------------------------------------------------------------
def make_item_list
@data = []
@price = {}
@shop_goods.each do |event_id|
next if $data_common_events[event_id].nil?
item = $data_common_events[event_id]
next unless include?(item)
@data.push(item)
@price[item] = item.cost
end
end
#--------------------------------------------------------------------------
# include?
#--------------------------------------------------------------------------
def include?(item)
return false unless show_show_switch?(item)
return false unless shop_show_eval?(item)
return true
end
#--------------------------------------------------------------------------
# show_show_switch?
#--------------------------------------------------------------------------
def show_show_switch?(item)
return false if item.nil?
for switch_id in item.shop_show_switch
return false unless $game_switches[switch_id]
end
return true
end
#--------------------------------------------------------------------------
# shop_show_eval?
#--------------------------------------------------------------------------
def shop_show_eval?(item)
return false if item.nil?
return true if item.shop_show_eval.nil?
return eval(item.shop_show_eval)
end
#--------------------------------------------------------------------------
# draw_item_name
#--------------------------------------------------------------------------
def draw_item_name(item, dx, dy, enabled = true, dw = 172)
return if item.nil?
draw_icon(item.icon_index, dx, dy, enabled)
change_color(normal_color, enabled)
draw_text(dx+24, dy, dw, line_height, item.name)
end
#--------------------------------------------------------------------------
# enable?
#--------------------------------------------------------------------------
def enable?(item)
return false unless shop_enable_switch?(item)
return false unless shop_enable_eval?(item)
return !item.nil? && (price(item) <= @money)
end
#--------------------------------------------------------------------------
# shop_enable_switch?
#--------------------------------------------------------------------------
def shop_enable_switch?(item)
return false if item.nil?
for switch_id in item.shop_enable_switch
return false unless $game_switches[switch_id]
end
return true
end
#--------------------------------------------------------------------------
# shop_req_eval?
#--------------------------------------------------------------------------
def shop_enable_eval?(item)
return false if item.nil?
return true if item.shop_enable_eval.nil?
return eval(item.shop_enable_eval)
end
end # Window_CommonEventShopBuy
#==============================================================================
# ■ Window_CommonEventShopData
#==============================================================================
class Window_CommonEventShopData < Window_Base
#--------------------------------------------------------------------------
# initialize
#--------------------------------------------------------------------------
def initialize(dx, dy, item_window)
super(dx, dy, Graphics.width - dx, fitting_height(4))
@item_window = item_window
@item = nil
refresh
end
#--------------------------------------------------------------------------
# item_window=
#--------------------------------------------------------------------------
def item_window= (window)
@item_window = window
update_item(@item_window.item)
end
#--------------------------------------------------------------------------
# update
#--------------------------------------------------------------------------
def update
super
update_item(@item_window.item)
end
#--------------------------------------------------------------------------
# update_item
#--------------------------------------------------------------------------
def update_item(item)
return if @item == item
@item = item
refresh
end
#--------------------------------------------------------------------------
# refresh
#--------------------------------------------------------------------------
def refresh
contents.clear
reset_font_settings
draw_empty
return if @item.nil?
draw_item_image
draw_item_data
end
#--------------------------------------------------------------------------
# draw_empty
#--------------------------------------------------------------------------
def draw_empty
colour = Color.new(0, 0, 0, translucent_alpha/2)
rect = Rect.new(1, 1, 94, 94)
contents.fill_rect(rect, colour)
dx = 96; dy = 0
dw = contents.width - 96
for i in 0...4
draw_background_box(dx, dy, dw)
dy += line_height
end
end
#--------------------------------------------------------------------------
# draw_background_box
#--------------------------------------------------------------------------
def draw_background_box(dx, dy, dw)
colour = Color.new(0, 0, 0, translucent_alpha/2)
rect = Rect.new(dx+1, dy+1, dw-2, line_height-2)
contents.fill_rect(rect, colour)
end
#--------------------------------------------------------------------------
# draw_item_image
#--------------------------------------------------------------------------
def draw_item_image
if @item.image.nil?
icon_index = @item.icon_index
bitmap = Cache.system("Iconset")
rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
target = Rect.new(0, 0, 96, 96)
contents.stretch_blt(target, bitmap, rect)
else
bitmap = Cache.picture(@item.image)
contents.blt(0, 0, bitmap, bitmap.rect, 255)
end
end
#--------------------------------------------------------------------------
# draw_item_data
#--------------------------------------------------------------------------
def draw_item_data
draw_text_ex(98, 0, @item.shop_data)
end
end # Window_CommonEventShopData
#==============================================================================
# ■ Scene_CommonEventShop
#==============================================================================
class Scene_CommonEventShop < Scene_Shop
#--------------------------------------------------------------------------
# prepare
#--------------------------------------------------------------------------
def prepare(goods)
@goods = goods
@purchase_only = true
end
#--------------------------------------------------------------------------
# start
#--------------------------------------------------------------------------
def start
super
setup_interpreter
end
#--------------------------------------------------------------------------
# terminate
#--------------------------------------------------------------------------
def terminate
@spriteset.dispose
super
end
#--------------------------------------------------------------------------
# create_command_window
#--------------------------------------------------------------------------
def create_command_window
wx = @gold_window.x
@command_window = Window_CommonEventShopCommand.new(wx, false)
@command_window.viewport = @viewport
@command_window.y = @help_window.height
@command_window.set_handler(:buy, method(:command_buy))
@command_window.set_handler(:sell, method(:command_sell))
@command_window.set_handler(:cancel, method(:return_scene))
end
#--------------------------------------------------------------------------
# create_status_window
#--------------------------------------------------------------------------
def create_status_window
wx = @number_window.width
wy = @dummy_window.y
ww = Graphics.width - wx
wh = @dummy_window.height
@status_window = Window_CommonEventShopStatus.new(wx, wy, ww, wh)
@status_window.viewport = @viewport
@status_window.hide
end
#--------------------------------------------------------------------------
# create_buy_window
#--------------------------------------------------------------------------
def create_buy_window
wy = @dummy_window.y
wh = @dummy_window.height
@buy_window = Window_CommonEventShopBuy.new(0, wy, wh, @goods)
@buy_window.viewport = @viewport
@buy_window.help_window = @help_window
@buy_window.status_window = @status_window
@buy_window.hide
@buy_window.set_handler(:ok, method(:on_buy_ok))
@buy_window.set_handler(:cancel, method(:on_buy_cancel))
end
#--------------------------------------------------------------------------
# create_data_window
#--------------------------------------------------------------------------
def create_data_window
return unless $imported["YEA-ShopOptions"]
wx = @command_window.width
wy = @command_window.y
@data_window = Window_CommonEventShopData.new(wx, wy, @buy_window)
@data_window.viewport = @viewport
end
#--------------------------------------------------------------------------
# setup_interpreter
#--------------------------------------------------------------------------
def setup_interpreter
@interpreter = Game_Interpreter.new
@message_window = Window_Message.new
@message_window.back_opacity = 255
@message_window.back_sprite.viewport = @viewport
@spriteset = Spriteset_CommonEventShop.new
end
#--------------------------------------------------------------------------
# update_interpreter
#--------------------------------------------------------------------------
def update_interpreter
update_basic
@interpreter.update
end
#--------------------------------------------------------------------------
# update_basic
#--------------------------------------------------------------------------
def update_basic
$game_map.screen.update_pictures
@spriteset.update
super
end
#--------------------------------------------------------------------------
# on_buy_ok
#--------------------------------------------------------------------------
def on_buy_ok
perform_buy
instore_event
exit_event
end
#--------------------------------------------------------------------------
# perform_buy
#--------------------------------------------------------------------------
def perform_buy
Sound.play_shop
$game_party.lose_gold(@buy_window.price(@buy_window.item))
@buy_window.money = money
@gold_window.refresh
end
#--------------------------------------------------------------------------
# instore_event
#--------------------------------------------------------------------------
def instore_event
event = @buy_window.item
return unless event.event_type == :instore
$game_temp.reserve_common_event(event.id)
@interpreter.setup_reserved_common_event
update_interpreter while @interpreter.running?
common_event_refresh_windows
end
#--------------------------------------------------------------------------
# exit_event
#--------------------------------------------------------------------------
def exit_event
event = @buy_window.item
return unless event.event_type == :exit
$game_temp.reserve_common_event(event.id)
return_scene
end
#--------------------------------------------------------------------------
# common_event_refresh_windows
#--------------------------------------------------------------------------
def common_event_refresh_windows
@buy_window.activate
@buy_window.money = money
@buy_window.refresh
@buy_window.select([@buy_window.index, @buy_window.item_max - 1].min)
@status_window.refresh
@gold_window.refresh
@data_window.refresh unless @data_window.nil?
end
end # Scene_CommonEventShop
#==============================================================================
#
# ▼ End of File
#
#==============================================================================
复制代码
似乎是一個利用公共事件創立的一個任務腳本
不過我英文能力有限
您可以修改的幫助說明,圖標,成本,右側所示的變量,並通過註釋標記的數據窗口中的文本。
<cost: x>
設置常見的事件以x金錢成本。
<icon: x>
更改X圖標指數為常見的事件中所使用的圖標。
<image:說明>
更改使用常見的事件名“字符串”圖形 \圖片 \文件夾中發現圖像。
<help description>
說明
</help description>
設置在店內現場幫助窗口中使用的文本。 在notebox多線將串成。 使用|換行符。 文本代碼可以使用裡面的幫助說明。
<shop data>
說明
</shop data>
可以使用,如果你有Yanfly引擎ACE - ACE鋪選項安裝。 設置店裡面的數據窗口中顯示的文本字符串。 使用|換行符。 文本代碼可以使用裡面的店鋪數據文本。
<shop variables: X>
<shop variables: x, x>
這台在屏幕右下角的狀態窗口中顯示的變量 x。 這個 notetag插入的倍數狀態窗口內顯示更多的變數。
作者:
怕鼠的猫
时间:
2012-1-25 15:05
什么时候,论坛的code 能出现语法高亮呢? 一片灰蒙蒙的,没有心情看。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1