楼主: raymondyrf

[已经解决] 自制的图片菜单,在游戏中通过对话调出,要怎么做呢?

[复制链接]
梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
回帖
1526
发表于 2013-5-2 01:05:50 | 显示全部楼层
对话?您指的是在事件呼出它,还是在对话框中呼出它?
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复

使用道具 举报

梦石
0
星屑
144
在线时间
107 小时
注册时间
2012-5-16
回帖
53
 楼主| 发表于 2013-5-2 01:07:17 | 显示全部楼层
j433463 发表于 2013-5-2 01:05
对话?您指的是在事件呼出它,还是在对话框中呼出它?

事件就可以了
回复

使用道具 举报

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
回帖
1526
发表于 2013-5-2 01:58:44 | 显示全部楼层
本帖最后由 j433463 于 2013-5-2 02:50 编辑

不好意思,刚才被自己一个小失误,搞得测试半天都不能正常切换,后来才发现是事件中开关指定错了,一场乌龙拖延...窘

改成的事件中操作开关切换显示/隐藏:

[pre lang="ruby" line="1"]#encoding:utf-8
#==============================================================================
# ■ Window_Variables
#------------------------------------------------------------------------------
#     地图上显示变量窗口
#==============================================================================

HPHUB_X = 100 #显示变量窗口的 X 座标
HPHUB_Y = 0 #显示变量窗口的 Y 座标

HPHUB_SWITCH = 100 #切换 显示 / 隐藏 窗口的开关ID

class Window_Variables < Window_Base
  #--------------------------------------------------------------------------
  # ● 初始化
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 350 + standard_padding * 2, 250 + standard_padding * 2)
    self.opacity = 0
    #self.back_opacity = 120
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    draw_background
    draw_actor_face($game_party.members[0], 10, 20)
    change_color(system_color)
    draw_text(120, line_height * 0 + 30, 64, line_height, Vocab::param(2) + ":", 0)
    draw_text(120, line_height * 1 + 30, 64, line_height, Vocab::param(3) + ":", 0)
    change_color(normal_color)
    draw_text(168, line_height * 0 + 30, 48, line_height, $game_actors[1].param(2), 2)
    draw_text(168, line_height * 1 + 30, 48, line_height, $game_actors[1].param(3), 2)   
  end
  #--------------------------------------------------------------------------
  # ● 绘制背景
  #--------------------------------------------------------------------------
  def draw_background
    bitmap = Cache.picture("001_战士_A") #背景图
    rect = Rect.new(0, 0, bitmap.width, bitmap.height)
    contents.blt(contents_width - bitmap.width, contents_height - bitmap.height, bitmap, rect, 255)
    bitmap.dispose
  end
end

#==============================================================================
# ■ Scene_Map
#------------------------------------------------------------------------------
#      地图生成窗口
#==============================================================================
class Scene_Map < Scene_Base
  alias new_start start
  def start
    new_start
    @varia_window = Window_Variables.new
    @varia_window.x = HPHUB_X
    @varia_window.y = HPHUB_Y
    @varia_window.visible = false
  end
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  alias new_update update
  def update
    new_update
    #初始值
    return if @show_hp_hud == $game_switches[HPHUB_SWITCH]
    p $game_switches[HPHUB_SWITCH].to_s + "=>" + @show_hp_hud.to_s
    if $game_switches[HPHUB_SWITCH] != true
      @show_hp_hud = false
    else
      @show_hp_hud = true
    end
    #显示/隐藏执行
    if @show_hp_hud == true
      @varia_window.refresh
      @varia_window.visible = true
    else
      @varia_window.visible = false
      #close_varia_window
    end
  end
  #--------------------------------------------------------------------------
  # ● 释放
  #--------------------------------------------------------------------------
  alias new_terminate terminate
  def terminate
    @varia_window.dispose
    new_terminate
  end
  #--------------------------------------------------------------------------
  # ● 关闭
  #--------------------------------------------------------------------------
  def close_varia_window
    @varia_window.close
    update until @varia_window.close?
  end
end
[/pre]


明明是开关 100 号,我在事件指定 001 号开启,噗,怎么试都没反应...
脚本稍作整理,把一些多余没用到的变量和程序去除了。
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复

使用道具 举报

梦石
0
星屑
144
在线时间
107 小时
注册时间
2012-5-16
回帖
53
 楼主| 发表于 2013-5-2 02:08:25 | 显示全部楼层
j433463 发表于 2013-5-2 01:58
不好意思,刚才被自己一个小失误,搞得测试半天都不能正常切换,后来才发现是事件中开关指定错了,一场乌龙 ...

估计可以,准备睡觉了也没有时间去做详细测试,明天看看如何,再告诉你结果吧
总之太谢谢你啦!!
回复

使用道具 举报

梦石
0
星屑
144
在线时间
107 小时
注册时间
2012-5-16
回帖
53
 楼主| 发表于 2013-5-2 13:21:53 | 显示全部楼层
本帖最后由 raymondyrf 于 2013-5-2 13:23 编辑
j433463 发表于 2013-5-2 01:58
不好意思,刚才被自己一个小失误,搞得测试半天都不能正常切换,后来才发现是事件中开关指定错了,一场乌龙 ...

您给的那个东西成功了,达到了预期的效果。
太感谢了!
顺带问一句,draw_text这个语句实现出来的,把数值draw出来之后的数值都是右对齐的,比如这样:
1
100
但我们的习惯是:
1
100
这样显示的,所以我想问这个有没有得改?


回复

使用道具 举报

梦石
0
星屑
144
在线时间
107 小时
注册时间
2012-5-16
回帖
53
 楼主| 发表于 2013-5-2 15:35:56 | 显示全部楼层
j433463 发表于 2013-5-2 01:58
不好意思,刚才被自己一个小失误,搞得测试半天都不能正常切换,后来才发现是事件中开关指定错了,一场乌龙 ...


有问题出现呢,这个是怎么回事呢??
捕获.PNG
我把金钱的值draw到这里,本来游戏默认是0元,后来我同过某个事件添加了金钱,这个0依然存在,只是在上面加了501三个数字而已。
包括hp、mp这些值都是同样情况

麻烦帮忙看看是不是我改代码时改出了问题?

[pre lang="ruby" line="1"]#encoding:utf-8
#==============================================================================
# ■ Window_Variables
#------------------------------------------------------------------------------
#     地图上显示变量窗口
#==============================================================================

HPHUB_X = 100 #显示变量窗口的 X 座标
HPHUB_Y = 0 #显示变量窗口的 Y 座标

HPHUB_SWITCH = 100 #切换 显示 / 隐藏 窗口的开关ID

class Window_Variables < Window_Base
  #--------------------------------------------------------------------------
  # ● 初始化
  #--------------------------------------------------------------------------
  def initialize
    super(100, 120, 740, 600)
    self.opacity = 0
    #self.back_opacity = 120
    refresh
  end

  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    draw_background
    draw_actor_name($game_actors[1], 330, 140)
    draw_actor_nickname($game_actors[1], 300, 210)
    draw_actor_level($game_actors[1], 330, 177)
    draw_actor_exp($game_actors[1], 520, 177)
    draw_actor_param($game_actors[1], 230, 335, 0)   
    draw_actor_param($game_actors[1], 230, 304, 1)  
    draw_actor_param($game_actors[1], 230, 245, 2)   
    draw_actor_param($game_actors[1], 230, 275, 3)   
    draw_actor_param($game_actors[1], 230, 364, 4)   
    draw_actor_param($game_actors[1], 230, 395, 5)   
    draw_actor_param($game_actors[1], 230, 426, 6)   
    draw_actor_param($game_actors[1], 230, 455, 7)   
    draw_actor_hp($game_actors[1], 430, 455)
    draw_actor_mp($game_actors[1], 430, 485)
    change_color(text_color(6))
    draw_text(250, 385, 300, 300,$game_party.gold, 2)

   
  end
  #--------------------------------------------------------------------------
  # ● 绘制背景
  #--------------------------------------------------------------------------
  def draw_background
    bitmap = Cache.picture("plain") #背景图
    rect = Rect.new(0, 0, bitmap.width, bitmap.height)
    contents.blt(contents_width - bitmap.width, contents_height - bitmap.height, bitmap, rect, 255)
    bitmap.dispose
  end
end

#==============================================================================
# ■ Scene_Map
#------------------------------------------------------------------------------
#      地图生成窗口
#==============================================================================
class Scene_Map < Scene_Base
  alias new_start start
  def start
    new_start
    @varia_window = Window_Variables.new
    @varia_window.x = HPHUB_X
    @varia_window.y = HPHUB_Y
    @varia_window.visible = false
  end
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  alias new_update update
  def update
    new_update
    #初始值
    return if @show_hp_hud == $game_switches[HPHUB_SWITCH]
    p $game_switches[HPHUB_SWITCH].to_s + "=>" + @show_hp_hud.to_s
    if $game_switches[HPHUB_SWITCH] != true
      @show_hp_hud = false
    else
      @show_hp_hud = true
    end
    #显示/隐藏执行
    if @show_hp_hud == true
      @varia_window.refresh
      @varia_window.visible = true
    else
      @varia_window.visible = false
      #close_varia_window
    end
  end
  #--------------------------------------------------------------------------
  # ● 释放
  #--------------------------------------------------------------------------
  alias new_terminate terminate
  def terminate
    @varia_window.dispose
    new_terminate
  end
  #--------------------------------------------------------------------------
  # ● 关闭
  #--------------------------------------------------------------------------
  def close_varia_window
    @varia_window.close
    update until @varia_window.close?
  end
end
[/pre]
回复

使用道具 举报

梦石
0
星屑
144
在线时间
107 小时
注册时间
2012-5-16
回帖
53
 楼主| 发表于 2013-5-2 16:02:59 | 显示全部楼层
j433463 发表于 2013-5-2 01:58
不好意思,刚才被自己一个小失误,搞得测试半天都不能正常切换,后来才发现是事件中开关指定错了,一场乌龙 ...

OK了,我把素材弄成不透明的就行了,无论如何还是感谢你!帮我解决了一个大问题!
回复

使用道具 举报

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
回帖
1526
发表于 2013-5-2 22:53:00 | 显示全部楼层
不好意思,刚刚才上线,那个情况可能是之前的值没有消除,您在 def refresh 第一行放上:
  1. contents.clear
复制代码
让脚本在刷新时先清理窗口画面,应该就可以解决了,保持背景透明不要紧的。
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复

使用道具 举报

梦石
0
星屑
144
在线时间
107 小时
注册时间
2012-5-16
回帖
53
 楼主| 发表于 2013-5-3 12:22:18 | 显示全部楼层
j433463 发表于 2013-5-2 22:53
不好意思,刚刚才上线,那个情况可能是之前的值没有消除,您在 def refresh 第一行放上:让脚本在刷新时先 ...

原来是这样,谢谢了啊
回复

使用道具 举报

梦石
0
星屑
144
在线时间
107 小时
注册时间
2012-5-16
回帖
53
 楼主| 发表于 2013-5-3 12:59:06 | 显示全部楼层
j433463 发表于 2013-5-2 22:53
不好意思,刚刚才上线,那个情况可能是之前的值没有消除,您在 def refresh 第一行放上:让脚本在刷新时先 ...

请问您这个window不能同时存在多个吗??
我想再另开一个同样的window来显示其他东西,但是把很多定义的@XX什么的修改好,不会和window_variables重复,
却提示error,stack level too deep
请问怎么解决呢??
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部