Project1
标题:
这个技能商店脚本怎么一直报错啊?
[打印本页]
作者:
zxc123a4s5d6
时间:
2015-6-12 21:39
标题:
这个技能商店脚本怎么一直报错啊?
QQ截图20150612213940.png
(5.66 KB, 下载次数: 23)
下载附件
保存到相册
2015-6-12 21:38 上传
如题,我是按正确的设置的
=begin
CSCA技能商店
版本: 1.0 (发行时间: 2012年5月24日)
作者:Casper Gaming( http://www.caspergaming.com/ )
汉化:by 子弹君
重要提示:所有CSCA脚本应该是相互兼容的,除非另有说明。
该脚本可以让您轻松地创建一个卖技能的商店。
================================说明===================================
创建一个技能商店的事件:
要创建一个技能商店,你需要在事件处做一些脚本调用。
在脚本窗口中,你需要输入3行脚本:
goods= [1,2,3,4 ]
SceneManager.call(CSCA_Scene_Skill_Shop)
SceneManager.scene.prepare(goods)
第一行可以更改ID。该数字对应技能的ID 。
在这个例子中,#1,# 2,#3 ,#4将被出售。
最后两个脚本代码不需要变动
如何设置技能价格
技能的价格通过技能备注设置。在技能备注框中,输入此
备注 :
<cscaprice: X>
其中,x是技能的价格。例如,
<cscaprice: 100>
技能将花费100金。
如何设定哪些技能有的角色无法学习
默认情况下,角色可以不通过商店学习任何技能。这就需要在
角色的备注栏设置。
这样:
<csca_ss_skills: X>
其中,x将是技能的ID角色可以学习。您可以输入多个技能的ID
通过使用逗号分离。
例如:
<csca_ss_skills: x,y,z>
其中,x将是一个技能的ID ,Y将是另一个技能的ID ,Z将是另一个技能的
ID等。例如,
<csca_ss_skills: 1,2,3>
让角色来学习技能#1,#2,#3 。
============================= 结束=================================
=end
$imported = {} if $imported.nil?
$imported["CSCA-SkillShop"] = true
class CSCA_Scene_Skill_Shop < Scene_MenuBase
def prepare(goods)
@goods = goods
end
def start
super
create_help_window
create_gold_window
create_command_window
create_dummy_window
create_status_window
create_buy_window
end
def create_gold_window
@gold_window = Window_Gold.new
@gold_window.viewport = @viewport
@gold_window.x = Graphics.width - @gold_window.width
@gold_window.y = @help_window.height
end
def create_command_window
@command_window = CSCA_Window_SkillShopCommand.new(@gold_window.x)
@command_window.viewport = @viewport
@command_window.y = @help_window.height
@command_window.set_handler(:buy, method(:command_buy))
@command_window.set_handler(:cancel, method(:return_scene))
end
def create_dummy_window
wy = @command_window.y + @command_window.height
wh = Graphics.height - wy
@dummy_window = Window_Base.new(0, wy, Graphics.width, wh)
@dummy_window.viewport = @viewport
end
def create_buy_window
wy = @dummy_window.y
wh = @dummy_window.height
@buy_window = CSCA_Window_SkillShopBuy.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
def create_status_window
wx = 304
wy = @dummy_window.y
ww = Graphics.width - wx
wh = @dummy_window.height
@status_window = CSCA_Window_SkillShopStatus.new(wx, wy, ww, wh)
@status_window.viewport = @viewport
@status_window.hide
@status_window.set_handler(:ok, method(:on_number_ok))
@status_window.set_handler(:cancel, method(:on_number_cancel))
end
def activate_buy_window
@buy_window.money = money
@buy_window.show.activate
@status_window.show.unselect
end
def command_buy
@dummy_window.hide
activate_buy_window
end
def on_buy_ok
@item = @buy_window.item
@buy_window.deactivate
@status_window.set(@item, buying_price)
@status_window.show.activate.select(0)
end
def on_buy_cancel
@command_window.activate
@dummy_window.show
@buy_window.hide
@status_window.hide
@help_window.clear
end
def on_number_ok
Sound.play_shop
do_buy(@status_window.item,@buy_window.item)
end_input
@gold_window.refresh
@status_window.refresh
end
def on_number_cancel
Sound.play_cancel
end_input
end
def do_buy(actor, skill)
$game_party.lose_gold(buying_price)
$game_actors[actor.id].learn_skill(skill.id)
end
def end_input
@status_window.unselect
activate_buy_window
end
def money
@gold_window.value
end
def currency_unit
@gold_window.currency_unit
end
def buying_price
@buy_window.price(@item)
end
end
class CSCA_Window_SkillShopCommand < Window_HorzCommand
def initialize(window_width)
@window_width = window_width
super(0, 0)
end
def window_width
@window_width
end
def col_max
return 2
end
def make_command_list
add_command(Vocab::ShopBuy, :buy)
add_command(Vocab::ShopCancel, :cancel)
end
end
class CSCA_Window_SkillShopBuy < Window_Selectable
attr_reader :status_window
def initialize(x, y, height, shop_goods)
super(x, y, window_width, height)
@shop_goods = shop_goods
@Money = 0
refresh
select(0)
end
def window_width
return 304
end
def item_max
@data ? @data.size : 1
end
def item
@data[index]
end
def money=(money)
@Money = money
refresh
end
def current_item_enabled?
enable?(@data[index])
end
def price(item)
@price[item]
end
def enable?(item)
item && item.skill_price <= @money
end
def refresh
make_item_list
create_contents
draw_all_items
end
def make_item_list
@data = []
@price = {}
for i in 0...@shop_goods.size
item = $data_skills[@shop_goods[i]]
if item
@data.push(item)
@price[item] = item.skill_price
end
end
end
def draw_item(index)
item = @data[index]
rect = item_rect(index)
draw_item_name(item, rect.x, rect.y, enable?(item))
rect.width -= 4
draw_text(rect, price(item), 2)
end
def status_window=(status_window)
@status_window = status_window
call_update_help
end
def update_help
@help_window.set_item(item) if @help_window
@status_window.item = item if @status_window
end
end
class CSCA_Window_SkillShopStatus < Window_Selectable
def set(skill, price)
@skill = skill
@price = price
refresh
end
def initialize(x, y, width, height)
super(x, y, width, height)
@skill = nil
@page_index = 0
refresh
select(0)
end
def item_max
@data ? @data.size : 1
end
def item
@data[index]
end
def item=(item)
@skill = item
refresh
end
def current_item_enabled?
enable?(@data[index])
end
def enable?(actor)
for i in 0...actor.skills.size
if actor.skills[i] == @skill
return false
end
end
for i in 0...actor.csca_learnable_skills.size
unless @skill.nil?
if actor.csca_learnable_skills[i] == @skill.id
return true
end
end
end
return false
end
def refresh
make_item_list
create_contents
draw_all_items
end
def make_item_list
@data = []
$game_party.members.each do |actor|
item = actor
if !item.nil?
@data.push(item)
end
end
end
def draw_item(index)
item = @data[index]
rect = item_rect(index)
change_color(normal_color, enable?(item))
draw_text(rect.x, rect.y, contents.width, line_height, item.name)
change_color(normal_color)
end
end
class RPG::Skill < RPG::UsableItem
def skill_price
if @note =~ /<cscaprice: (.*)>/i
return $1.to_i
else
return 0
end
end
end
class RPG::Actor < RPG::BaseItem
def learnable_skills
if @note =~ /<csca_ss_skills: (.*)>/i
ints = []
for x in $1.split(",")
ints.push(x.to_i)
end
return ints
else
return []
end
end
end
class Game_Actor < Game_Battler
def csca_learnable_skills
actor.learnable_skills
end
end
复制代码
作者:
taroxd
时间:
2015-6-12 21:42
把第200行和第218行改成小写试试看
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1