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

Project1

 找回密码
 注册会员
搜索
查看: 2470|回复: 9
打印 上一主题 下一主题

[已经解决] 如何开关控制“图片挡住文字”

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
136
在线时间
1050 小时
注册时间
2006-5-3
帖子
774
跳转到指定楼层
1
发表于 2009-8-16 13:34:03 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
我的工程里,有时候需要图片挡住文字,有时候不需要,我知道要挡住的话可以直接改脚本,可是,我不是一直需要,只是偶尔需要,能求一个有开关控制的这样的脚本吗?刚刚搜索了,不过没找到啊╮(╯_╰)╭
漏夏同人
《咱的夏天》
下载地址:http://tieba.baidu.com/p/2681607456
人员招募:http://rpg.blue/thread-339747-1-1.html

Lv1.梦旅人

梦石
0
星屑
60
在线时间
1 小时
注册时间
2008-5-31
帖子
237
2
发表于 2009-8-16 14:34:04 | 只看该作者
能详细点吗? 现在听着像排版(位置)的问题
应该可以解决
我。。不是寂寞。。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
136
在线时间
1050 小时
注册时间
2006-5-3
帖子
774
3
 楼主| 发表于 2009-8-16 15:00:35 | 只看该作者
就是比如我在屏幕中间显示“我爱你”3个字(不要框),同时显示一张黑色的图片,然后把图片慢慢移走,这就出现了文字是慢慢出来,而不是一下子跳出来,这样解释行吗?
漏夏同人
《咱的夏天》
下载地址:http://tieba.baidu.com/p/2681607456
人员招募:http://rpg.blue/thread-339747-1-1.html
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
1 小时
注册时间
2008-5-31
帖子
237
4
发表于 2009-8-16 17:56:57 | 只看该作者
屏幕中间出现字,不要框,
直接事件 显示文章ok
显示图片
图片慢慢移开
事件ok
图片遮住文字 可以调整字的z值 window_message
之后。。某解决不了的。。图移动后出现字。。
因为 事件做 总是要按键,一按 字不见了。。

建议,字也做成图片,图片叠放,效果应该是一样的
就是需要做图,多了会麻烦
我。。不是寂寞。。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
136
在线时间
1050 小时
注册时间
2006-5-3
帖子
774
5
 楼主| 发表于 2009-8-17 01:04:49 | 只看该作者
字做成图片不太好,这样会加大游戏的体积,别人下载很麻发
漏夏同人
《咱的夏天》
下载地址:http://tieba.baidu.com/p/2681607456
人员招募:http://rpg.blue/thread-339747-1-1.html
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
136
在线时间
1050 小时
注册时间
2006-5-3
帖子
774
6
 楼主| 发表于 2009-8-17 01:07:07 | 只看该作者
我可以做成“等待XX帧”这样就不怕“一按 字不见了”,可是这个图片盖住字,我需要个开关来控制啊:'(
漏夏同人
《咱的夏天》
下载地址:http://tieba.baidu.com/p/2681607456
人员招募:http://rpg.blue/thread-339747-1-1.html
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
1 小时
注册时间
2008-5-31
帖子
237
7
发表于 2009-8-17 09:14:36 | 只看该作者
如果确认可以解决盖住字的问题
Window_Message
def initialize
self.z = 200
下面加上
if $game_switches[XX]
           self.z = 0
end
就是 开关开时 就把字的z 调低,应该是盖住的吧
我。。不是寂寞。。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
136
在线时间
1050 小时
注册时间
2006-5-3
帖子
774
8
 楼主| 发表于 2009-8-17 12:49:32 | 只看该作者
只把原文的200改成1或者0是可以实现我的效果(不管加不加你说的),不过加上你说的东西过后,没有实现开关控制,任然盖不住
(这是根据你说的改的,没效果)
漏夏同人
《咱的夏天》
下载地址:http://tieba.baidu.com/p/2681607456
人员招募:http://rpg.blue/thread-339747-1-1.html
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
1 小时
注册时间
2008-5-31
帖子
237
9
发表于 2009-8-17 13:47:36 | 只看该作者
er..我还是不按键,不进行下一步的状态。。测试不可。。
爱莫能助。。
sorry
我。。不是寂寞。。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

穿越一季:朔

梦石
0
星屑
50
在线时间
333 小时
注册时间
2007-4-11
帖子
5369

贵宾

10
发表于 2009-9-11 19:32:47 | 只看该作者
  1. #==============================================================================
  2. # ■ Window_Message
  3. #------------------------------------------------------------------------------
  4. #  实时控制图片遮挡 默认当3号开关打开的时候对话框遮挡图片.3号开关关闭的话则反之
  5. #   默认3号开关关闭            By.Yui(其实是一种很简单的功能)
  6. #==============================================================================

  7. class Window_Message < Window_Selectable
  8.   
  9.   $开关 = 3
  10.   
  11.   #--------------------------------------------------------------------------
  12.   # ● 常量
  13.   #--------------------------------------------------------------------------
  14.   MAX_LINE = 4                            # 最大行数
  15.   #--------------------------------------------------------------------------
  16.   # ● 初始化对像
  17.   #--------------------------------------------------------------------------
  18.   def initialize
  19.     super(0, 288, 544, 128)
  20.     self.z = 3
  21.     self.active = false
  22.     self.index = -1
  23.     self.openness = 0
  24.     @opening = false            # 窗口正在打开标志
  25.     @closing = false            # 窗口正在关闭标志
  26.     @text = nil                 # 尚未显示文章
  27.     @contents_x = 0             # 描绘下一字的 X 座标
  28.     @contents_y = 0             # 描绘下一字的 Y 座标
  29.     @line_count = 0             # 以描绘行数
  30.     @wait_count = 0             # 等待祯数
  31.     @background = 0             # 背景类型
  32.     @position = 2               # 显示位置
  33.     @show_fast = false          # 瞬间表示文章标志
  34.     @line_show_fast = false     # 行快速显示文章标志
  35.     @pause_skip = false         # 不等待输入标志
  36.     create_gold_window
  37.     create_number_input_window
  38.     create_back_sprite
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   # ● 释放窗口
  42.   #--------------------------------------------------------------------------
  43.   def dispose
  44.     super
  45.     dispose_gold_window
  46.     dispose_number_input_window
  47.     dispose_back_sprite
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ● 更新画面
  51.   #--------------------------------------------------------------------------
  52.   def update
  53.     super
  54.     update_gold_window
  55.     update_number_input_window
  56.     update_back_sprite
  57.     update_show_fast
  58.     unless @opening or @closing             # 窗口非正在打开或正在关闭中
  59.       if @wait_count > 0                    # 文间等待
  60.         @wait_count -= 1
  61.       elsif self.pause                      # 等待输入的情况下
  62.         input_pause
  63.       elsif self.active                     # 输入选择的情况下
  64.         input_choice
  65.       elsif @number_input_window.visible    # 输入数值的情况下
  66.         input_number
  67.       elsif @text != nil                    # 有等待显示的文字的情况下
  68.         update_message                        # 更新文章
  69.       elsif continue?                       # 继续的情况下
  70.         start_message                         # 开始文章
  71.         open                                  # 打开窗口
  72.         $game_message.visible = true
  73.       else                                  # 否则
  74.         close                                 # 关闭窗口
  75.         $game_message.visible = @closing
  76.       end
  77.     end
  78.     if $game_switches[$开关]==true
  79.      self.z = 100
  80.    else
  81.      self.z = 3
  82.      end
  83.   end
  84.   #--------------------------------------------------------------------------
  85.   # ● 生成金钱窗口
  86.   #--------------------------------------------------------------------------
  87.   def create_gold_window
  88.     @gold_window = Window_Gold.new(384, 0)
  89.     @gold_window.openness = 0
  90.   end
  91.   #--------------------------------------------------------------------------
  92.   # ● 生成数值输入窗口
  93.   #--------------------------------------------------------------------------
  94.   def create_number_input_window
  95.     @number_input_window = Window_NumberInput.new
  96.     @number_input_window.visible = false
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   # ● 生成背景活动块
  100.   #--------------------------------------------------------------------------
  101.   def create_back_sprite
  102.     @back_sprite = Sprite.new
  103.     @back_sprite.bitmap = Cache.system("MessageBack")
  104.     @back_sprite.visible = (@background == 1)
  105.     @back_sprite.z = 190
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ● 释放金钱窗口
  109.   #--------------------------------------------------------------------------
  110.   def dispose_gold_window
  111.     @gold_window.dispose
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   # ● 释放数值输入窗口
  115.   #--------------------------------------------------------------------------
  116.   def dispose_number_input_window
  117.     @number_input_window.dispose
  118.   end
  119.   #--------------------------------------------------------------------------
  120.   # ● 释放背景活动块
  121.   #--------------------------------------------------------------------------
  122.   def dispose_back_sprite
  123.     @back_sprite.dispose
  124.   end
  125.   #--------------------------------------------------------------------------
  126.   # ● 更新金钱窗口
  127.   #--------------------------------------------------------------------------
  128.   def update_gold_window
  129.     @gold_window.update
  130.   end
  131.   #--------------------------------------------------------------------------
  132.   # ● 更新数值输入窗口
  133.   #--------------------------------------------------------------------------
  134.   def update_number_input_window
  135.     @number_input_window.update
  136.   end
  137.   #--------------------------------------------------------------------------
  138.   # ● 更新背景活动块
  139.   #--------------------------------------------------------------------------
  140.   def update_back_sprite
  141.     @back_sprite.visible = (@background == 1)
  142.     @back_sprite.y = y - 16
  143.     @back_sprite.opacity = openness
  144.     @back_sprite.update
  145.   end
  146.   #--------------------------------------------------------------------------
  147.   # ● 更新快速显示文章标志
  148.   #--------------------------------------------------------------------------
  149.   def update_show_fast
  150.     if self.pause or self.openness < 255
  151.       @show_fast = false
  152.     elsif Input.trigger?(Input::C) and @wait_count < 2
  153.       @show_fast = true
  154.     elsif not Input.press?(Input::C)
  155.       @show_fast = false
  156.     end
  157.     if @show_fast and @wait_count > 0
  158.       @wait_count -= 1
  159.     end
  160.   end
  161.   #--------------------------------------------------------------------------
  162.   # ● 判断下面的文章是否接着显示
  163.   #--------------------------------------------------------------------------
  164.   def continue?
  165.     return true if $game_message.num_input_variable_id > 0
  166.     return false if $game_message.texts.empty?
  167.     if self.openness > 0 and not $game_temp.in_battle
  168.       return false if @background != $game_message.background
  169.       return false if @position != $game_message.position
  170.     end
  171.     return true
  172.   end
  173.   #--------------------------------------------------------------------------
  174.   # ● 开始显示文章
  175.   #--------------------------------------------------------------------------
  176.   def start_message
  177.     @text = ""
  178.     for i in 0...$game_message.texts.size
  179.       @text += "    " if i >= $game_message.choice_start
  180.       @text += $game_message.texts[i].clone + "\x00"
  181.     end
  182.     @item_max = $game_message.choice_max
  183.     convert_special_characters
  184.     reset_window
  185.     new_page
  186.   end
  187.   #--------------------------------------------------------------------------
  188.   # ● 新页处理
  189.   #--------------------------------------------------------------------------
  190.   def new_page
  191.     contents.clear
  192.     if $game_message.face_name.empty?
  193.       @contents_x = 0
  194.     else
  195.       name = $game_message.face_name
  196.       index = $game_message.face_index
  197.       draw_face(name, index, 0, 0)
  198.       @contents_x = 112
  199.     end
  200.     @contents_y = 0
  201.     @line_count = 0
  202.     @show_fast = false
  203.     @line_show_fast = false
  204.     @pause_skip = false
  205.     contents.font.color = text_color(0)
  206.   end
  207.   #--------------------------------------------------------------------------
  208.   # ● 新行处理
  209.   #--------------------------------------------------------------------------
  210.   def new_line
  211.     if $game_message.face_name.empty?
  212.       @contents_x = 0
  213.     else
  214.       @contents_x = 112
  215.     end
  216.     @contents_y += WLH
  217.     @line_count += 1
  218.     @line_show_fast = false
  219.   end
  220.   #--------------------------------------------------------------------------
  221.   # ● 转换特殊符号
  222.   #--------------------------------------------------------------------------
  223.   def convert_special_characters
  224.     @text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
  225.     @text.gsub!(/\\N\[([0-9]+)\]/i) { $game_actors[$1.to_i].name }
  226.     @text.gsub!(/\\C\[([0-9]+)\]/i) { "\x01[#{$1}]" }
  227.     @text.gsub!(/\\G/)              { "\x02" }
  228.     @text.gsub!(/\\\./)             { "\x03" }
  229.     @text.gsub!(/\\\|/)             { "\x04" }
  230.     @text.gsub!(/\\!/)              { "\x05" }
  231.     @text.gsub!(/\\>/)              { "\x06" }
  232.     @text.gsub!(/\\</)              { "\x07" }
  233.     @text.gsub!(/\\\^/)             { "\x08" }
  234.     @text.gsub!(/\\\\/)             { "\\" }
  235.   end
  236.   #--------------------------------------------------------------------------
  237.   # ● 设定窗口背景和位置
  238.   #--------------------------------------------------------------------------
  239.   def reset_window
  240.     @background = $game_message.background
  241.     @position = $game_message.position
  242.     if @background == 0   # 一般窗口
  243.       self.opacity = 255
  244.     else                  # 背景变暗并透明化
  245.       self.opacity = 0
  246.     end
  247.     case @position
  248.     when 0  # 上
  249.       self.y = 0
  250.       @gold_window.y = 360
  251.     when 1  # 中
  252.       self.y = 144
  253.       @gold_window.y = 0
  254.     when 2  # 下
  255.       self.y = 288
  256.       @gold_window.y = 0
  257.     end
  258.   end
  259.   #--------------------------------------------------------------------------
  260.   # ● 结束文章显示
  261.   #--------------------------------------------------------------------------
  262.   def terminate_message
  263.     self.active = false
  264.     self.pause = false
  265.     self.index = -1
  266.     @gold_window.close
  267.     @number_input_window.active = false
  268.     @number_input_window.visible = false
  269.     $game_message.main_proc.call if $game_message.main_proc != nil
  270.     $game_message.clear
  271.   end
  272.   #--------------------------------------------------------------------------
  273.   # ● 更新文章显示
  274.   #--------------------------------------------------------------------------
  275.   def update_message
  276.     loop do
  277.       c = @text.slice!(/./m)            # 获取一个文字
  278.       case c
  279.       when nil                          # 无法获取文字时
  280.         finish_message                  # 结束文章更新
  281.         break
  282.       when "\x00"                       # 新行
  283.         new_line
  284.         if @line_count >= MAX_LINE      # 当行数已至最大行数
  285.           unless @text.empty?           # 并还有有等待显示的文字时
  286.             self.pause = true           # 等待输入
  287.             break
  288.           end
  289.         end
  290.       when "\x01"                       # \C[n](文字变色)
  291.         @text.sub!(/\[([0-9]+)\]/, "")
  292.         contents.font.color = text_color($1.to_i)
  293.         next
  294.       when "\x02"                       # \G  (显示金钱)
  295.         @gold_window.refresh
  296.         @gold_window.open
  297.       when "\x03"                       # \.  (等待四分之一秒)
  298.         @wait_count = 15
  299.         break
  300.       when "\x04"                       # \|  (等待一秒)
  301.         @wait_count = 60
  302.         break
  303.       when "\x05"                       # \!  (等待输入)
  304.         self.pause = true
  305.         break
  306.       when "\x06"                       # \>  (瞬间表示on)
  307.         @line_show_fast = true
  308.       when "\x07"                       # \<  (瞬间表示off)
  309.         @line_show_fast = false
  310.       when "\x08"                       # \^  (不等待输入)
  311.         @pause_skip = true
  312.       else                              # 一般文字
  313.         contents.draw_text(@contents_x, @contents_y, 40, WLH, c)
  314.         c_width = contents.text_size(c).width
  315.         @contents_x += c_width
  316.       end
  317.       break unless @show_fast or @line_show_fast
  318.     end
  319.   end
  320.   #--------------------------------------------------------------------------
  321.   # ● 结束文章更新
  322.   #--------------------------------------------------------------------------
  323.   def finish_message
  324.     if $game_message.choice_max > 0
  325.       start_choice
  326.     elsif $game_message.num_input_variable_id > 0
  327.       start_number_input
  328.     elsif @pause_skip
  329.       terminate_message
  330.     else
  331.       self.pause = true
  332.     end
  333.     @wait_count = 10
  334.     @text = nil
  335.   end
  336.   #--------------------------------------------------------------------------
  337.   # ● 开始选择项
  338.   #--------------------------------------------------------------------------
  339.   def start_choice
  340.     self.active = true
  341.     self.index = 0
  342.   end
  343.   #--------------------------------------------------------------------------
  344.   # ● 开始数值输入
  345.   #--------------------------------------------------------------------------
  346.   def start_number_input
  347.     digits_max = $game_message.num_input_digits_max
  348.     number = $game_variables[$game_message.num_input_variable_id]
  349.     @number_input_window.digits_max = digits_max
  350.     @number_input_window.number = number
  351.     if $game_message.face_name.empty?
  352.       @number_input_window.x = x
  353.     else
  354.       @number_input_window.x = x + 112
  355.     end
  356.     @number_input_window.y = y + @contents_y
  357.     @number_input_window.active = true
  358.     @number_input_window.visible = true
  359.     @number_input_window.update
  360.   end
  361.   #--------------------------------------------------------------------------
  362.   # ● 刷新光标
  363.   #--------------------------------------------------------------------------
  364.   def update_cursor
  365.     if @index >= 0
  366.       x = $game_message.face_name.empty? ? 0 : 112
  367.       y = ($game_message.choice_start + @index) * WLH
  368.       self.cursor_rect.set(x, y, contents.width - x, WLH)
  369.     else
  370.       self.cursor_rect.empty
  371.     end
  372.   end
  373.   #--------------------------------------------------------------------------
  374.   # ● 等待输入处理
  375.   #--------------------------------------------------------------------------
  376.   def input_pause
  377.     if Input.trigger?(Input::B) or Input.trigger?(Input::C)
  378.       self.pause = false
  379.       if @text != nil and not @text.empty?
  380.         new_page if @line_count >= MAX_LINE
  381.       else
  382.         terminate_message
  383.       end
  384.     end
  385.   end
  386.   #--------------------------------------------------------------------------
  387.   # ● 选择项处理
  388.   #--------------------------------------------------------------------------
  389.   def input_choice
  390.     if Input.trigger?(Input::B)
  391.       if $game_message.choice_cancel_type > 0
  392.         Sound.play_cancel
  393.         $game_message.choice_proc.call($game_message.choice_cancel_type - 1)
  394.         terminate_message
  395.       end
  396.     elsif Input.trigger?(Input::C)
  397.       Sound.play_decision
  398.       $game_message.choice_proc.call(self.index)
  399.       terminate_message
  400.     end
  401.   end
  402.   #--------------------------------------------------------------------------
  403.   # ● 名称输入处理
  404.   #--------------------------------------------------------------------------
  405.   def input_number
  406.     if Input.trigger?(Input::C)
  407.       Sound.play_decision
  408.       $game_variables[$game_message.num_input_variable_id] =
  409.         @number_input_window.number
  410.       $game_map.need_refresh = true
  411.       terminate_message
  412.     end
  413.   end
  414. end
复制代码
覆盖掉Window_Message即可 然后游戏里需要此效果的时候打开3号开关即可。
6R复活?别扯淡了.

柳柳一旦接手66RPG,我果断呵呵啊。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-12 01:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表