赞 | 0 |
VIP | 12 |
好人卡 | 5 |
积分 | 1 |
经验 | 43535 |
最后登录 | 2020-11-2 |
在线时间 | 1050 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 136
- 在线时间
- 1050 小时
- 注册时间
- 2006-5-3
- 帖子
- 774
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 gaofei677 于 2013-2-28 18:06 编辑
前天开始学习了脚本,今天试了试更改两个脚本,结果最后有一个大BUG不能解决,想请各位帮我看看
两个原始脚本分别是
1.显示变量
2.鼠标响应图片
1.显示变量的脚本功能是:把某些你需要的变量显示在屏幕上
2.鼠标响应图片脚本的功能是:把鼠标放在某张图片上,这张图片变成另外一张图片,点击图片触发公共时间
后来我把两个脚本整合了一下,功能变成了:
把鼠标放在图片上,这张图片不仅可以显示变成另外一张图片,还可以显示一个你指定的文本
现在有的BUG是:如果屏幕上只有一张带有上述功能的图片,那么工作正常,但是如果有2张或者2张以上,就不会显示相应的文本了(其实是显示了,只是显示了一帧以后立刻被刷新,就没了)
附上工程:
鼠标相应图片&文本_BUG版.rar
(267.45 KB, 下载次数: 79)
下面第一个是原始,显示变量脚本
第二个是原始,鼠标响应图片脚本(有一个鼠标脚本,不过我觉得这里不用给出来)
第三个是整合的,新的鼠标相应图片&&文本脚本- #==========================================================================
- # 本脚本来自www.66rpg.com,用于任何游戏请保留此信息。
- #==========================================================================
- VAR_SWITCH = 2 # 26号开关打开此脚本才工作,关闭则停止运算,并且透明
- VAR_REFRESH_SWITCH = 3 # 27号开关控制强制刷新,使用时机:1、把窗口由透明变为不透明(包括第一次使用时),2、游戏中用脚本更改了$var
- $var = []
- $var = [[11,280,10],[2,280,45],[3,280,80],[4,280,115],[5,280,150],[6,400,10],[7,400,45],[8,400,80],[9,400,115],[10,400,150]] #所有需要显示在地图并且刷新的变量,可在游戏中用脚本更改。格式:[变量编号,x坐标,y坐标]
- #==============================================================================
- # ■ Window_XY
- #------------------------------------------------------------------------------
- # 显示坐标的窗口。
- #==============================================================================
- class Window_Var < Window_Base#注意前面那个window_var是文件名
- #--------------------------------------------------------------------------
- # ● 初始化窗口
- #--------------------------------------------------------------------------
- def initialize
- super(-16, -16, 640+32, 480+32)#最后面那个数字是宽要显示多个需要改大,前面一个是长~
- self.contents = Bitmap.new(width - 32, height - 32)
- self.back_opacity = 255 # 这个是背景透明
- self.opacity = 255 # 这个是边框和背景都透明
- self.contents_opacity = 255 # 这个是内容透明
- self.visible = false
- self.z=9999
- @var = $var
- @var_a = []
- for var_draw in $var
- @var_a[var_draw[0]] = $game_variables[var_draw[0]]
- end
- refresh
- end
- #--------------------------------------------------------------------------
- # ● 刷新
- #--------------------------------------------------------------------------
- def refresh
- if $game_switches[VAR_SWITCH]
- @var = $var # 记录现在变量数组结构
- self.contents.clear # 清除以前的东西
- for var_draw in @var
- @var_a[var_draw[0]] = $game_variables[var_draw[0]] # 记录现在的游戏变量
- self.contents.draw_text(var_draw[1],var_draw[2],640,32,@var_a[var_draw[0]].to_s)
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● 判断文字刷新。节约内存用
- #--------------------------------------------------------------------------
- def judge
- for var_draw in $var
- if @var_a[var_draw[0]] != $game_variables[var_draw[0]] #如果现在记录的变量和游戏变量不同,刷新
- return true
- end
- end
- if $game_switches[VAR_REFRESH_SWITCH] # 强制刷新的时候,刷新
- $game_switches[VAR_REFRESH_SWITCH] = false
- return true
- end
- return false
- end
- end
- class Scene_Map
- alias old_start start
- def start
- old_start
- @var_window = Window_Var.new
- @var_window.opacity = 0
- end
- #--------------------------------------------------------------------------
- # ● 刷新画面
- #--------------------------------------------------------------------------
- alias var_66rpg_update update
- def update
- var_66rpg_update
- if $game_switches[VAR_SWITCH]
- @var_window.visible = true
- @var_window.refresh if @var_window.judge
- else
- @var_window.visible = false
- end
- end
- end
- #==========================================================================
- # 本脚本来自www.66rpg.com,用于任何游戏请保留此信息。
- #==========================================================================
复制代码- class Game_Picture
- def name=(str)
- @name = str
- end
- end
- class Sprite_Picture
- alias update_old update
- def update
- update_old
- return if @picture_name == "" or @picture_name[/cmd/].nil?
- mx,my = Mouse.get_mouse_pos
- lx = self.x - self.ox
- rx = lx + self.bitmap.width
- ty = self.y - self.oy
- by = ty + self.bitmap.height
- if mx < lx or mx > rx or my < ty or my > by or
- self.bitmap.get_pixel(mx-lx,my-ty).alpha == 0
- @picture.name = @picture.name.split(/_/)[0]+"_"[email protected](/_/)[1]
- return
- end
- if @picture.name.split(/_/)[2].nil?
- @picture.name = @picture.name + "_02"
- end
- if Input.trigger?(13)
- @picture.name.split(/_/)[0].sub(/cmd([0-9]+)/,"")
- $game_temp.common_event_id = $1.to_i
- end
- end
- end
复制代码 ###############################################################################################################################################################
- ###########绘制文本框#########
- class Window_Var < Window_Base
-
- def initialize
- super(0, 0, 640, 460)
- self.opacity = 255
- self.visible = false
- @zi = $zi
- refresh
- end
- def refresh
- @zi = $zi
- self.contents.clear
- mx,my = Mouse.get_mouse_pos
- self.contents.draw_text(mx-80, my-140, 200, 200, @zi)
- end
- end
- #########################################
- class Scene_Map
- alias old_start start
- def start
- old_start
- @var_window = Window_Var.new
- @var_window.opacity = 0
- end
- alias old_update update
- def update
- old_update
- if $zi != 0
- @var_window.visible = true
- @var_window.refresh
- else
- @var_window.visible = false
- end
- end
- end
- #######鼠标响应图片&&文本########
- class Game_Picture
- def name=(str)
- @name = str
- end
- end
- class Sprite_Picture
- alias update_old update
- def update
- update_old
- return if @picture_name == "" or @picture_name[/cmd/].nil?
- mx,my = Mouse.get_mouse_pos
- lx = self.x - self.ox
- rx = lx + self.bitmap.width
- ty = self.y - self.oy
- by = ty + self.bitmap.height
- if mx < lx or mx > rx or my < ty or my > by or
- self.bitmap.get_pixel(mx-lx,my-ty).alpha == 0
- @picture.name = @picture.name.split(/_/)[0]+"_"[email protected](/_/)[1]
- $zi = 0
- return
- else
- end
- if @picture.name.split(/_/)[2].nil?
- @picture.name = @picture.name + "_02"
- q = @picture.name[3]
- $zi = "还有#{q}天杀青"
- end
-
-
- if Input.trigger?(13)
- @picture.name.split(/_/)[0].sub(/cmd([0-9]+)/,"")
- $game_temp.common_event_id = $1.to_i
- end
- end
- end
复制代码 |
|