赞 | 12 |
VIP | 107 |
好人卡 | 6 |
积分 | 4 |
经验 | 31122 |
最后登录 | 2024-6-29 |
在线时间 | 1606 小时 |
Lv2.观梦者 傻♂逼
- 梦石
- 0
- 星屑
- 374
- 在线时间
- 1606 小时
- 注册时间
- 2007-3-13
- 帖子
- 6562
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本文不是针对太新的脚本新手哦~~~~{/hx}
教学内容:
制作属于你的合成系统
教学目的:
对数组的初步认识
教学内容:
既然要合成,那么就必须有一个合成的数据库,既什么+什么+什么=什么
这里我们使用数组:
- $hecheng = []
- $hecheng.push([7,1,2,3]) #这里的意思是7号物品通过1、2、3号物品合成
- $hecheng.push([6,2,5,5])
复制代码
窗口的绘制,我就不再说了,参考Window_Shop做一个吧(明显想偷懒)从数组里获取合成列表,传递给MK方法就OK了
这里,我们主要制作一个方法——合成
- def mk(use)
- ok = true
- for i in 1...use.size
- if $game_party.item_number(use[i]) == 0
- ok = false
- end
- end
- if ok
- for i in 1...use.size
- $game_party.lose_item(use[i], 1)
- end
- $game_party.gain_item(use[0],1)
- else
- return false
- end
- return true
- end
复制代码
完整代码(含制作窗口)
- def mk(use)
- ok = true
- for i in 1...use.size
- if $game_party.item_number(use[i]) == 0
- ok = false
- end
- end
- if ok
- for i in 1...use.size
- $game_party.lose_item(use[i], 1)
- end
- $game_party.gain_item(use[0],1)
- else
- return false
- end
- return true
- end
- $hecheng = []
- $hecheng.push([7,1,2,3])
- $hecheng.push([6,2,5,5])
- #==============================================================================
- # ■ Window_ShopCommand1
- #------------------------------------------------------------------------------
- # 商店画面、选择要做的事的窗口
- #==============================================================================
- class Window_ShopCommand1 < Window_Selectable
- #--------------------------------------------------------------------------
- # ● 初始化对像
- #--------------------------------------------------------------------------
- def initialize
- super(0, 64, 480, 64)
- self.contents = Bitmap.new(width - 32, height - 32)
- @item_max = 2
- @column_max = 3
- @commands = ["制作","取消"]
- refresh
- self.index = 0
- end
- #--------------------------------------------------------------------------
- # ● 刷新
- #--------------------------------------------------------------------------
- def refresh
- self.contents.clear
- for i in 0...@item_max
- draw_item(i)
- end
- end
- #--------------------------------------------------------------------------
- # ● 描绘项目
- # index : 项目编号
- #--------------------------------------------------------------------------
- def draw_item(index)
- x = 4 + index * 160
- self.contents.draw_text(x, 0, 128, 32, @commands[index])
- end
- end
- #==============================================================================
- # ■ Scene_Shop
- #------------------------------------------------------------------------------
- # 处理商店画面的类。
- #==============================================================================
- class Scene_Shop1
- #--------------------------------------------------------------------------
- # ● 主处理
- #--------------------------------------------------------------------------
- def main
- # 生成帮助窗口
- @help_window = Window_Help.new
- # 生成指令窗口
- @command_window = Window_ShopCommand1.new
- # 生成金钱窗口
- @gold_window = Window_Gold.new
- @gold_window.x = 480
- @gold_window.y = 64
- # 生成时间窗口
- @dummy_window = Window_Base.new(0, 128, 640, 352)
- # 生成购买窗口
- a = []
- for i in $hecheng
- a.push([0,i[0]])
- end
- @buy_window = Window_ShopBuy.new(a)
- @buy_window.active = false
- @buy_window.visible = false
- @buy_window.help_window = @help_window
- # 生成数量输入窗口
- @number_window = Window_ShopNumber.new
- @number_window.active = false
- @number_window.visible = false
- # 生成状态窗口
- @status_window = Window_ShopStatus.new
- @status_window.visible = false
- # 执行过渡
- Graphics.transition
- # 主循环
- loop do
- # 刷新游戏画面
- Graphics.update
- # 刷新输入信息
- Input.update
- # 刷新画面
- update
- # 如果画面切换的话就中断循环
- if $scene != self
- break
- end
- end
- # 准备过渡
- Graphics.freeze
- # 释放窗口
- @help_window.dispose
- @command_window.dispose
- @gold_window.dispose
- @dummy_window.dispose
- @buy_window.dispose
- @status_window.dispose
- end
- #--------------------------------------------------------------------------
- # ● 刷新画面
- #--------------------------------------------------------------------------
- def update
- # 刷新窗口
- @help_window.update
- @command_window.update
- @gold_window.update
- @dummy_window.update
- @buy_window.update
- # @number_window.update
- @status_window.update
- # 指令窗口激活的情况下: 调用 update_command
- if @command_window.active
- update_command
- return
- end
- # 购买窗口激活的情况下: 调用 update_buy
- if @buy_window.active
- update_buy
- return
- end
- # 个数输入窗口激活的情况下: 调用 update_number
- if @number_window.active
- #update_number
- return
- end
- end
- #--------------------------------------------------------------------------
- # ● 刷新画面 (指令窗口激活的情况下)
- #--------------------------------------------------------------------------
- def update_command
- # 按下 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)
- # 命令窗口光标位置分支
- case @command_window.index
- when 0 # 购买
- # 演奏确定 SE
- $game_system.se_play($data_system.decision_se)
- # 窗口状态转向购买模式
- @command_window.active = false
- @dummy_window.visible = false
- @buy_window.active = true
- @buy_window.visible = true
- @buy_window.refresh
- @status_window.visible = true
- when 1 # 卖出
- # 演奏确定 SE
- $game_system.se_play($data_system.decision_se)
- # 切换到地图画面
- $scene = Scene_Map.new
- end
- return
- end
- end
- #--------------------------------------------------------------------------
- # ● 刷新画面 (购买窗口激活的情况下)
- #--------------------------------------------------------------------------
- def update_buy
- # 设置状态窗口的物品
- @status_window.item = @buy_window.item
- # 按下 B 键的情况下
- if Input.trigger?(Input::B)
- # 演奏取消 SE
- $game_system.se_play($data_system.cancel_se)
- # 窗口状态转向初期模式
- @command_window.active = true
- @dummy_window.visible = true
- @buy_window.active = false
- @buy_window.visible = false
- @status_window.visible = false
- @status_window.item = nil
- # 删除帮助文本
- @help_window.set_text("")
- return
- end
- # 按下 C 键的情况下
- if Input.trigger?(Input::C)
- # 获取物品
- @item = @buy_window.item
- # 物品无效的情况下、或者价格在所持金以上的情况下
- # 获取物品所持数
- case @item
- when RPG::Item
- number = $game_party.item_number(@item.id)
- when RPG::Weapon
- number = $game_party.weapon_number(@item.id)
- when RPG::Armor
- number = $game_party.armor_number(@item.id)
- end
- # 如果已经拥有了 99 个情况下
- if number == 99
- # 演奏冻结 SE
- $game_system.se_play($data_system.buzzer_se)
- return
- end
- # 演奏确定 SE
- $game_system.se_play($data_system.decision_se)
- for i in $hecheng
- if @buy_window.item.id == i[0]
- mk(i)
- # 刷新各窗口
- @gold_window.refresh
- @buy_window.refresh
- @status_window.refresh
- # 窗口状态转向购买模式
- @buy_window.active = true
- @buy_window.visible = true
- @help_window.set_text("成功制作了" + @buy_window.item.name)
- return
- end
- end
- end
- end
- end
复制代码 |
|