赞 | 3 |
VIP | 333 |
好人卡 | 2 |
积分 | 1 |
经验 | 1450446 |
最后登录 | 2019-5-29 |
在线时间 | 615 小时 |
Lv1.梦旅人 66RPG站长
- 梦石
- 0
- 星屑
- 54
- 在线时间
- 615 小时
- 注册时间
- 2005-10-10
- 帖子
- 5734
|
[原创发布]VX版 得失物品自动提示
1、标题:VX版 得失物品自动提示
2、作者:柳柳
3、摘要:RMVX下的得失物品自动提示,提示中按确定可以加速跳过。注意一点是如果你用VX自带的宝箱,那么宝箱事件里面最后一句话请删掉。
4、首发网址:http://z.66rpg.com/dispbbs.asp?b ... p;star=1&page=1
5、教学分类:RMVX、脚本、地图、表现效果
6、发布日期:2008/1/11
7、适用人群:任何RPG和SRPG制作者,为了统一游戏效果并追求美观的作者,脚本初级学习者。
8、通用度:★★★★★
9、技术应用的复杂度:20
10、技术学习的理解难度:35
11、范例工程:- -b 上传在自己小窝了,需要请自取:http://z.66rpg.com/dispbbs.asp?boardid=9&id=30&star=1&page=1 建议直接新建工程测试比较快。
12、关键字:得失、物品、武器、防具、金钱、自动、提示、统一界面、窗口创建、脚本入门
13、作者的话:这个是RMVX的得失物品自动提示,和XP版的差不太多,不过经历这么久时间,我已经比原来聪明点了,算法不仅规范一些(配合RGSS2.0吗),也加了一些小的人性化设定。只是窗口界面还不是很好看,以后可以根据自己兴趣慢慢改吧。
14、教学正文:
这个的制作过程很简单:
~1、首先确定得失物品会有几个参数,我这里设定为三个。
~2、根据这三个参数制作一个Window新类,用来创建窗口。不要把代码分散写在函数里面,不好维护。
~3、将获得物品的刷新部分代码写在Game_Interpreter里面,新定义一个函数。
~4、调整获得物品的那几个函数,加入一行自动显示的代码即可。
具体代码如下(提示,复制脚本请用word中转):
- #==============================================================================
- # ■ Game_Interpreter
- #------------------------------------------------------------------------------
- # 执行事件命令的解释器。本类在 Game_System 类
- # 与 Game_Event 类的内部使用。
- #==============================================================================
- class Game_Interpreter
- #--------------------------------------------------------------------------
- # ● 得失物品自动提示的刷新时间控制
- #--------------------------------------------------------------------------
- def call_6RgetItem(para1, para2 = nil, para3 = nil)
- temp_window = Window_Gain_Item.new(para1, para2, para3)
- Sound.play_shop
- for i in 0..120
- Graphics.update
- Input.update
- if Input.trigger?(Input::C) or Input.trigger?(Input::B)
- Sound.play_cancel
- break
- end
- end
- for i in 0..15
- temp_window.opacity -= 20
- temp_window.contents_opacity -= 16
- temp_window.update
- Graphics.update
- end
- temp_window.dispose
- temp_window = nil
- end
- #--------------------------------------------------------------------------
- # ● 增减金钱
- #--------------------------------------------------------------------------
- def command_125
- value = operate_value(@params[0], @params[1], @params[2])
- $game_party.gain_gold(value)
- call_6RgetItem("gold", value)
- return true
- end
- #--------------------------------------------------------------------------
- # ● 增减物品
- #--------------------------------------------------------------------------
- def command_126
- value = operate_value(@params[1], @params[2], @params[3])
- $game_party.gain_item($data_items[@params[0]], value)
- $game_map.need_refresh = true
- call_6RgetItem("item", $data_items[@params[0]], value)
- return true
- end
- #--------------------------------------------------------------------------
- # ● 增减武器
- #--------------------------------------------------------------------------
- def command_127
- value = operate_value(@params[1], @params[2], @params[3])
- $game_party.gain_item($data_weapons[@params[0]], value, @params[4])
- call_6RgetItem("item", $data_weapons[@params[0]], value)
- return true
- end
- #--------------------------------------------------------------------------
- # ● 增减防具
- #--------------------------------------------------------------------------
- def command_128
- value = operate_value(@params[1], @params[2], @params[3])
- $game_party.gain_item($data_armors[@params[0]], value, @params[4])
- call_6RgetItem("item", $data_armors[@params[0]], value)
- return true
- end
- end
- #==============================================================================
- # ■ Window_Gain_Item
- #------------------------------------------------------------------------------
- # 显示获得物品的窗口。
- #==============================================================================
- class Window_Gain_Item < Window_Base
- #--------------------------------------------------------------------------
- # ● 初始化窗口
- #--------------------------------------------------------------------------
- def initialize(para1, para2 = nil, para3 = nil)
- super(0, 0, 160, WLH + 32)
- self.z = 10000
- case para1
- when "item"
- str = "获得"
- if para3 < 0 then
- str = "失去"
- para3 = - para3
- end
- winwidth = contents.text_size(" 你获得了: ? " + para3.to_s).width + 24 + contents.text_size(para2.name).width
- self.width = winwidth + 64
- self.height = 64
- self.x = (Graphics.width - self.width) / 2
- self.y = (Graphics.height - self.height) / 2
- create_contents
- self.contents.draw_text(0, 0, self.width, 32, " 你" + str + "了: ")
- tx = contents.text_size(" 你" + str + "了:").width
- draw_item_name(para2, tx , 0, true)
- self.contents.draw_text(tx + 24, 0, self.width, 32, para2.name)
- tx = contents.text_size(" 你" + str + "了: ").width + 24 + contents.text_size(para2.name).width
- self.contents.draw_text(tx, 0, self.width, 32, " ? + para3.to_s)
- when "gold"
- str = "获得"
- if para2 < 0 then
- str = "失去"
- para2 = - para2
- end
- winwidth = contents.text_size(" 你获得了: " + Vocab.gold.to_s).width + contents.text_size(para2).width
- self.width = winwidth + 64
- self.height = 64
- self.x = (Graphics.width - self.width) / 2
- self.y = (Graphics.height - self.height) / 2
- create_contents
- self.contents.draw_text(0, 0, self.width, 32, " 你" + str + "了: #{para2} " + Vocab.gold.to_s)
- end
- end
- #--------------------------------------------------------------------------
- # ● 物品名的描画
- # item : 物品(特技、武器、防具可)
- # x : 描画目标 X 坐标
- # y : 描画目标 Y 坐标
- # enabled : 有效标记录。是false 的时候半透明绘画
- #--------------------------------------------------------------------------
- def draw_item_name(item, x, y, enabled = true)
- if item != nil
- draw_icon(item.icon_index, x, y, enabled)
- self.contents.font.color = normal_color
- self.contents.font.color.alpha = enabled ? 255 : 128
- end
- end
- end
复制代码
17、教学相关RGSS类:
class Game_Interpreter
def initialize
def draw_item_name
class Game_Interpreter
def call_6RgetItem
def command_125
def command_126
def command_127
def command_128
上面这个类别检查可以用来检查脚本冲突的原因。当然我建议你直接用本脚本中的函数替换以上几个函数的相应部分。
[本贴由 御灵 于 2008-1-17 23:35:24 进行了编辑] |
|