设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
Project1 查看内容

在地图上显示变量(可带图片和单位)

2007-4-1 00:00| 发布者: 叶舞枫| 查看: 4789| 评论: 0|原作者: 技术区版主·gpra8764

摘要:     作者 gpra8764 版本 2007-3 相关网址 点此进入讨论贴 范例工程 点击下载 脚本说明 在地图上显示变量(可带图片和单位),最简单易懂的方法!今天真的是初来乍到,发
 
 

作者

gpra8764

版本

2007-3

相关网址

点此进入讨论贴

范例工程

点击下载



脚本说明

在地图上显示变量(可带图片和单位),最简单易懂的方法!

今天真的是初来乍到,发了个名称输入加强的脚本,然后居然就被人请教问题啦……还好是简单的问题啦,呵呵,回到家后努力做出了要求的脚本。

要求是可以在地图上绘制窗口来显示当前的金钱,最好是没有窗口背景的,而且可以在前面加上金钱符号。我的建议是最好是有窗口,就算带透明的也好,不然在颜色相似的地图上数字会看不清楚的。我也擅作主张增加了一个单位的显示功能。呵呵~

这样的例子柳柳站长以前发过,是显示变量的,本人看看感觉功能完全可以啊(没有实际测试)。但是据反映就是不知道怎么调用,我看看好像的确没有说清楚啦。这里我就做了个示例,可以在地图上显示变量,背景半透明,可以加单位以及图片(24*24图标),而且在变量改变时才进行刷新节约资源。提供了详细使用方法和注释。实在有不明白的话发帖后几个小时内我会回来看看解决的,^o^。

当然,本例是用$game_party.gold做的示范而已,大家可以自己类推啦,变量的话是$game_variables[i],i是变量的序号,将相应地方进行更改就可以了。

首先在Scene_Map类中进行以下修改:

在def main过程中,首先在生成窗口部分增加生成显示变量窗口,添加位置最好在原有窗口之后:

   # 生成活动块
   @spriteset = Spriteset_Map.new
   # 生成信息窗口
   @message_window = Window_Message.new
   # 生成显示变量窗口
   @var_window = Window_MapVar.new


类似的注销释放时也要加上:

   # 释放活动块
   @spriteset.dispose
   # 释放信息窗口
   @message_window.dispose
   # 释放显示变量窗口
   @var_window.dispose


最后在def update过程块中,必须要加入刷新显示变量窗口部分,同样在放在最后,达到改变金钱同步刷新的功能:

   # 刷新活动块
   @spriteset.update
   # 刷新信息窗口
   @message_window.update
   # 刷新显示变量窗口
   @var_window.refresh


然后在脚本最后添加脚本名称为GPRA_Window_MapVar的脚本(建议在main之前)

 

脚本内容

#==============================================================================
# ◎ Window_MapVar
#------------------------------------------------------------------------------
# ◎ 地图右下显示变量窗口
#------------------------------------------------------------------------------
# 制作者:绿梨子红苹果
# 个人主页:vbgm.9126.com
# E-Mail:[email protected]
# QQ:42378361
#==============================================================================

class Window_MapVar < Window_Base
 #--------------------------------------------------------------------------
 # ● 初始化窗口
 #--------------------------------------------------------------------------
 def initialize
   
   # 在这里设定窗口的位置啦(x,y,宽,高),记住要为窗口框架留上下左右各16象素。
   # 默认一个字符的宽和高只有20左右的,这里单位为“金”,加上8位数字。
   super(480,420,160,60)
   
   # 窗口的不透明度(0 ~ 255)。范围外的数值会自动修正。
   # 注:255为不透明,0为完全透明……这个参数为零则只显示窗口内容而没有窗口,
   # 实际上这样做不如不载入窗口背景图,更加节约内存……不过比较麻烦就是。
   self.opacity=64
   # 窗口背景的不透明度(0 ~ 255)。范围外的数值会自动修正。
   # 注:就是窗口那个蓝色的背景啦……受上面参数影响
   self.back_opacity=128
   # 窗口内容的不透明度(0 ~ 255)。范围外的数值会自动修正。
   # 注:窗口内的文字等内容,除非你是想画个空窗口,否则千万不要设0。
   self.contents_opacity=255

   # 这个不用管他,必定要写的
   self.contents = Bitmap.new(width - 32, height - 32)
   
   # 建立记录变量原始值,用于判断变量值是否改变,一定要保证不会是变量原来的值
   @var_value_old = -1
   # 载入想要显示的图片就可以了,这里推荐是24*24的标准RM图标
   @var_icon = Bitmap.new("Graphics/Icons/035-Item04")
   
   refresh
 end
 #--------------------------------------------------------------------------
 # ● 刷新
 #--------------------------------------------------------------------------
 def refresh
   # 在这里加上判断语句,就可以完成变量值改变才刷新的效果,节约资源
   if @var_value_old==$game_party.gold then
     return
   end
   # 先清空内容啦
   self.contents.clear
   # 计算系统data里金钱单位的字符宽度
   cx = contents.text_size($data_system.words.gold).width
   # 设定字色为白色。生成RGB颜色参数(红,绿,蓝),这个不用我来说吧...
   self.contents.font.color = Color.new(255,255,255)
   # 绘制金钱数字。记住要用“.to_s”将数字转换为字符!
   # 注:这里24是留着画24*24图标的,104表示所有字符总宽
   self.contents.draw_text(24, 0, 104-cx, 28, $game_party.gold.to_s, 2)
   # 设定字色为金色
   self.contents.font.color = Color.new(255,255,0)
   # 绘制金钱单位。
   # 注:128=160(窗口宽)-32
   self.contents.draw_text(128-cx, 0, cx, 28, $data_system.words.gold)
   # 最后画上需要的图标就可以啦,blt方法详见RM帮助文档啦...
   self.contents.blt(0, 2, @var_icon, Rect.new(0, 0, 24, 24))
 end
end
 
 
 

教程的通用说明

本站发布的教程,大多经过一些测试,应该都能够实现相应功能。但不保证所有的教程都是最优化的制作方法。

相关问题,点击发布贴进行讨论。谢谢您的鼓励与支持。


鲜花
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-21 19:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

返回顶部