赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 1120 |
最后登录 | 2012-1-5 |
在线时间 | 28 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 28 小时
- 注册时间
- 2010-8-5
- 帖子
- 10
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
想用脚本制作出类似《牧场物语》中做菜系统:即,出现做菜窗口后,会出现多种食材;当选中它们中的某几项后,它们会出现在已选中的窗口中。点击确定,开始做菜。这时,如果你选择的材料与系统默认的菜谱相同,比如:鱼+杜鹃花+醋=杜鹃醉鱼。则显示做菜成功!如果不相同,则显示做菜失败!
我是脚本初学者,只会修改简单的脚本。现我修改的脚本如下,总是没法实现上面选中的食材出现在下面选定的窗口中,希望哪位大人能帮我实现下这个做菜系统:
class Scene_Zuocai
#--------------------------------------------------------------------------
# ● 主处理
#--------------------------------------------------------------------------
def main
# 生成食材窗口
@caidan_window = Window_Caidan.new
@caidan1_window = Window_Caidan1.new
@shicai_window = Window_Shicai.new
@shicai2_window = Window_Shicai2.new
# 执行过度
Graphics.transition
# 主循环
loop do
# 刷新游戏画面
Graphics.update
# 刷新输入信息
Input.update
# 刷新画面
update
# 如果画面切换就中断循环
if $scene != self
break
end
end
# 装备过渡
Graphics.freeze
# 释放窗口
@caidan_window.dispose
@shicai_window.dispose
@caidan1_window.dispose
@shicai2_window.dispose
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
# 刷新窗口
@caidan_window.update
@shicai_window.update
@caidan1_window.update
@shicai2_window.update
# 食材窗口被激活的情况下: 调用 update_item
if @shicai_window.active
update_item
return
end
# 食材2窗口被激活的情况下: 调用 update_item2
if @shicai2_window.active
update_item2
return
end
end
#--------------------------------------------------------------------------
# ● 刷新画面 (物品窗口被激活的情况下)
#--------------------------------------------------------------------------
def update_item
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换到菜单画面
$scene = Scene_Map.new
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 获取物品窗口当前选中的物品数据
@item = @shicai_window.item
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
$game_party.lose_item(@item.id, 1)
$xuanwuping = @shicai_window.item
# 再描绘物品窗口的项目
@shicai_window.draw_item(@shicai_window.index)
return
end
end
end
#==============================================================================
# ■ Window_Shicai
#------------------------------------------------------------------------------
# 物品画面、战斗画面、显示浏览物品的窗口。
#==============================================================================
class Window_Shicai < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
super(0, 64, 640, 256)
@column_max = 2
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# ● 获取物品
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
# 添加物品
for i in 40...49
if $game_party.item_number(i) > 0
@data.push($data_items[i])
end
end
# 如果项目数不是 0 就生成位图、重新描绘全部项目
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
# ● 描绘项目
# index : 项目编号
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
case item
when RPG::Item
number = $game_party.item_number(item.id)
end
if item.is_a?(RPG::Item) and
$game_party.item_can_use?(item.id)
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
x = 4 + index % 2 * (288 + 32)
y = index / 2 * 32
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(item.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
end
#--------------------------------------------------------------------------
# ● 刷新帮助文本
#--------------------------------------------------------------------------
end
#==============================================================================
# ■ Window_Shicai
#------------------------------------------------------------------------------
# 物品画面、战斗画面、显示浏览物品的窗口。
#==
class Window_Shicai2 < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
super(0, 384, 640, 96)
@column_max = 2
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# ● 获取物品
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
# 添加物品
@data.push($xuanwuping)
end
#--------------------------------------------------------------------------
# ● 描绘项目
# index : 项目编号
#--------------------------------------------------------------------------
end
#==============================================================================
# ■ Window_Shicai
#------------------------------------------------------------------------------
# 物品画面、战斗画面、显示浏览物品的窗口。
#===========================================================================
class Window_Caidan < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
super(0, 0, 640, 64)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.clear
self.contents.font.color = normal_color
self.contents.draw_text(4, 0, 120, 32, "请选择食材")
end
end
#==============================================================================
# ■ Window_Shicai1
#------------------------------------------------------------------------------
# 物品画面、战斗画面、显示浏览物品的窗口。
#============================================================================
class Window_Caidan1 < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
super(0, 320, 640, 64)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.clear
self.contents.font.color = normal_color
self.contents.draw_text(4, 0, 120, 32, "已选中食材")
end
end
|
|