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

Project1

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

更改暂停标记位置

 关闭 [复制链接]

Lv1.梦旅人

辉瑞中国首席研究员<

梦石
0
星屑
50
在线时间
142 小时
注册时间
2008-1-18
帖子
2129
跳转到指定楼层
1
发表于 2008-8-27 00:38:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
看到提问区有人问,就写了一个

#   更改了显示文章中暂停标记的位置,此脚本暂停标记的的位置是
#   跟在对话后
#
#   如果你想要自己更改请搜索
#   @sprite_pause.x @sprite_pause.y
#   自己调坐标即可
#   WAIT_COUNT 为暂停标记动画的快慢



  1. #==============================================================
  2. #      更改暂停标记的位置  BY 水蓝
  3. #   更改了显示文章中暂停标记的位置,此脚本暂停标记的的位置是
  4. #   跟在对话后
  5. #
  6. #   如果你想要自己更改请搜索
  7. #   @sprite_pause.x @sprite_pause.y
  8. #   自己调坐标即可
  9. #   WAIT_COUNT 为暂停标记动画的快慢
  10. #==============================================================
  11. module PAUSE
  12.   
  13.   WAIT_COUNT = 3
  14.   
  15. end

  16. class Sprite_Pause < Sprite
  17.   
  18.   def initialize
  19.    
  20.     super
  21.     self.bitmap = RPG::Cache.windowskin($game_system.windowskin_name)
  22.     self.z = 9999
  23.    
  24.     @index = 0
  25.     @wait_count = 0
  26.     update
  27.    
  28.   end
  29.   

  30.   def update
  31.    
  32.     super
  33.     if @wait_count > 0 then
  34.       @wait_count -= 1
  35.     else
  36.       @index = (@index + 1) % 4
  37.       case @index
  38.        when 1
  39.          self.src_rect.set(160 , 64, 16, 16)
  40.        when 2
  41.          self.src_rect.set(160 + 16, 64, 16, 16)
  42.        when 3
  43.          self.src_rect.set(160 , 64 + 16, 16, 16)
  44.        when 4
  45.          self.src_rect.set(160 + 16, 64 + 16, 16, 16)
  46.       end
  47.       @wait_count = PAUSE::WAIT_COUNT
  48.     end
  49.    
  50.   end
  51.   
  52. end

  53. class Window_Message < Window_Selectable
  54.   #--------------------------------------------------------------------------
  55.   # ● 初始化状态
  56.   #--------------------------------------------------------------------------
  57.   def initialize
  58.     super(80, 304, 480, 160)
  59.     self.contents = Bitmap.new(width - 32, height - 32)
  60.     self.visible = false
  61.     self.z = 9998
  62.     @fade_in = false
  63.     @fade_out = false
  64.     @contents_showing = false
  65.     @cursor_width = 0
  66.     self.active = false
  67.     self.index = -1
  68.     @sprite_pause = Sprite_Pause.new
  69.     @sprite_pause.visible = false
  70.     $t = 0
  71.     $n = 0
  72.   end
  73.   #--------------------------------------------------------------------------
  74.   # ● 释放
  75.   #--------------------------------------------------------------------------
  76.   def dispose
  77.     terminate_message
  78.     @sprite_pause.dispose
  79.     $game_temp.message_window_showing = false
  80.     if @input_number_window != nil
  81.       @input_number_window.dispose
  82.     end
  83.     super
  84.   end
  85.   #--------------------------------------------------------------------------
  86.   # ● 处理信息结束
  87.   #--------------------------------------------------------------------------
  88.   def terminate_message
  89.     self.active = false
  90.     self.pause = false
  91.     self.index = -1
  92.     self.contents.clear
  93.     # 清除显示中标志
  94.     @contents_showing = false
  95.     # 呼叫信息调用
  96.     if $game_temp.message_proc != nil
  97.       $game_temp.message_proc.call
  98.     end
  99.     # 清除文章、选择项、输入数值的相关变量
  100.     $game_temp.message_text = nil
  101.     $game_temp.message_proc = nil
  102.     $game_temp.choice_start = 99
  103.     $game_temp.choice_max = 0
  104.     $game_temp.choice_cancel_type = 0
  105.     $game_temp.choice_proc = nil
  106.     $game_temp.num_input_start = 99
  107.     $game_temp.num_input_variable_id = 0
  108.     $game_temp.num_input_digits_max = 0
  109.     # 开放金钱窗口
  110.     if @gold_window != nil
  111.       @gold_window.dispose
  112.       @gold_window = nil
  113.     end
  114.     @sprite_pause.visible = false
  115.   end
  116.   #--------------------------------------------------------------------------
  117.   # ● 刷新
  118.   #--------------------------------------------------------------------------
  119.   def refresh
  120.     self.contents.clear
  121.     self.contents.font.color = normal_color
  122.     x = y = 0
  123.     @cursor_width = 0
  124.     # 到选择项的下一行字
  125.     if $game_temp.choice_start == 0
  126.       x = 8
  127.     end
  128.     # 有等待显示的文字的情况下
  129.     if $game_temp.message_text != nil
  130.       text = $game_temp.message_text
  131.       # 限制文字处理
  132.       begin
  133.         last_text = text.clone
  134.         text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  135.       end until text == last_text
  136.       text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  137.         $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  138.       end
  139.       # 为了方便、将 "\\\\" 变换为 "\000"
  140.       text.gsub!(/\\\\/) { "\000" }
  141.       # "\\C" 变为 "\001" に、"\\G" 变为 "\002"
  142.       text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  143.       text.gsub!(/\\[Gg]/) { "\002" }
  144.       # c 获取 1 个字 (如果不能取得文字就循环)
  145.       @sprite_pause_x = 0
  146.       @sprite_pause_y = 0
  147.       @c = 0
  148.       while ((c = text.slice!(/./m)) != nil)
  149.         # \\ 的情况下
  150.         if c == "\000"
  151.           # 还原为本来的文字
  152.           c = "\\"
  153.         end
  154.         # \C[n] 的情况下
  155.         if c == "\001"
  156.           # 更改文字色
  157.           text.sub!(/\[([0-9]+)\]/, "")
  158.           color = $1.to_i
  159.           if color >= 0 and color <= 7
  160.             self.contents.font.color = text_color(color)
  161.           end
  162.           # 下面的文字
  163.           next
  164.         end
  165.         # \G 的情况下
  166.         if c == "\002"
  167.           # 生成金钱窗口
  168.           if @gold_window == nil
  169.             @gold_window = Window_Gold.new
  170.             @gold_window.x = 560 - @gold_window.width
  171.             if $game_temp.in_battle
  172.               @gold_window.y = 192
  173.             else
  174.               @gold_window.y = self.y >= 128 ? 32 : 384
  175.             end
  176.             @gold_window.opacity = self.opacity
  177.             @gold_window.back_opacity = self.back_opacity
  178.           end
  179.           # 下面的文字
  180.           next
  181.         end
  182.         # 另起一行文字的情况下
  183.         if c == "\n"
  184.           # 刷新选择项及光标的高
  185.           if y >= $game_temp.choice_start
  186.             @cursor_width = [@cursor_width, x].max
  187.           end
  188.           # y 加 1
  189.           y += 1
  190.           x = 0
  191.          
  192.           # 移动到选择项的下一行
  193.           if y >= $game_temp.choice_start
  194.             x = 8
  195.           end
  196.          
  197.           if y > @sprite_pause_y then
  198.             @sprite_pause_y = y
  199.             @sprite_pause_x = 0
  200.             @c = 0
  201.             if x > @sprite_pause_x   then
  202.               @sprite_pause_x   = x
  203.             end
  204.           end
  205.           # 下面的文字
  206.           next
  207.         end
  208.       
  209.         # 描绘文字
  210.         self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
  211.         # x 为要描绘文字的加法运算
  212.         x += self.contents.text_size(c).width
  213.       
  214.         if x > @sprite_pause_x   then
  215.          
  216.           if c =~ /\[a-z]/ then
  217.            @c += 2
  218.            elsif c =~ /\D/ then
  219.             @c += 3.5
  220.           else
  221.              @c += 4
  222.           end
  223.          
  224.           @sprite_pause_x   = x
  225.         end
  226.         $t = @sprite_pause_x
  227.         $n = @c
  228.       end
  229.       
  230.     end
  231.    
  232.     # 选择项的情况
  233.     if $game_temp.choice_max > 0
  234.       @item_max = $game_temp.choice_max
  235.       self.active = true
  236.       self.index = 0
  237.     end
  238.     # 输入数值的情况
  239.     if $game_temp.num_input_variable_id > 0
  240.       digits_max = $game_temp.num_input_digits_max
  241.       number = $game_variables[$game_temp.num_input_variable_id]
  242.       @input_number_window = Window_InputNumber.new(digits_max)
  243.       @input_number_window.number = number
  244.       @input_number_window.x = self.x + 8
  245.       @input_number_window.y = self.y + $game_temp.num_input_start * 32
  246.     end
  247.   end

  248.   #--------------------------------------------------------------------------
  249.   # ● 刷新画面
  250.   #--------------------------------------------------------------------------
  251.   def update
  252.     super
  253.     @sprite_pause.update
  254.     # 渐变的情况下
  255.     if @fade_in
  256.       self.contents_opacity += 24
  257.       if @input_number_window != nil
  258.         @input_number_window.contents_opacity += 24
  259.       end
  260.       if self.contents_opacity == 255
  261.         @fade_in = false
  262.       end
  263.       return
  264.     end
  265.     # 输入数值的情况下
  266.     if @input_number_window != nil
  267.       @input_number_window.update
  268.       # 确定
  269.       if Input.trigger?(Input::C)
  270.         $game_system.se_play($data_system.decision_se)
  271.         $game_variables[$game_temp.num_input_variable_id] =
  272.           @input_number_window.number
  273.         $game_map.need_refresh = true
  274.         # 释放输入数值窗口
  275.         @input_number_window.dispose
  276.         @input_number_window = nil
  277.         terminate_message
  278.       end
  279.       return
  280.     end
  281.     # 显示信息中的情况下
  282.     if @contents_showing
  283.       # 如果不是在显示选择项中就显示暂停标志
  284.       if $game_temp.choice_max == 0
  285.         @sprite_pause.visible = true
  286.         self.pause = false
  287.       end
  288.       # 取消
  289.       if Input.trigger?(Input::B)
  290.         if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
  291.           $game_system.se_play($data_system.cancel_se)
  292.           $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
  293.           terminate_message
  294.         end
  295.       end
  296.       # 确定
  297.       if Input.trigger?(Input::C)
  298.         if $game_temp.choice_max > 0
  299.           $game_system.se_play($data_system.decision_se)
  300.           $game_temp.choice_proc.call(self.index)
  301.         end
  302.         terminate_message
  303.       end
  304.       return
  305.     end
  306.     # 在渐变以外的状态下有等待显示的信息与选择项的场合
  307.     if @fade_out == false and $game_temp.message_text != nil
  308.       @contents_showing = true
  309.       $game_temp.message_window_showing = true
  310.       reset_window
  311.       refresh
  312.       
  313.       @sprite_pause.x = self.x + $t + $n + 5
  314.       @sprite_pause.y = @sprite_pause_y * 32 +self.y
  315.      
  316.       Graphics.frame_reset
  317.       self.visible = true
  318.       self.contents_opacity = 0
  319.       if @input_number_window != nil
  320.         @input_number_window.contents_opacity = 0
  321.       end
  322.       @fade_in = true
  323.       return
  324.     end
  325.     # 没有可以显示的信息、但是窗口为可见的情况下
  326.     if self.visible
  327.       @fade_out = true
  328.       self.opacity -= 48
  329.       if self.opacity == 0
  330.         self.visible = false
  331.         @fade_out = false
  332.         $game_temp.message_window_showing = false
  333.       end
  334.       return
  335.     end
  336.   end

  337. end
复制代码
来6r就是等某位仁兄的巨坑

褴褛着身行无端,囊中羞涩空心酸。
平生几无得意事,倒塔泡面宅寝室。
惟羡隔壁高帅富,雨露春风月夜声。
青丝无处觅其踪,只有硬盘苍井空。
莫云男儿空悲愁,鸿鹄岂不天际游。
坐断天下执鹿首,千百金帛万兜鍪。
夜深忽梦某年月,再见女神欲语迟。
吊丝终有逆袭日,木耳再无回粉时。

Lv1.梦旅人

梦石
0
星屑
49
在线时间
157 小时
注册时间
2007-12-16
帖子
3454
2
发表于 2008-8-27 00:39:24 | 只看该作者
虾米意思
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
28 小时
注册时间
2005-10-24
帖子
170
3
发表于 2008-8-27 00:51:39 | 只看该作者
就是把原来固定在对话框中部下端的那个小三角的位置改变到文字的后部,看起来比较顺眼。

不错的小细节。
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3299
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

4
发表于 2008-8-27 00:53:00 | 只看该作者
很完美的小细节……
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
1
星屑
10103
在线时间
4433 小时
注册时间
2005-10-22
帖子
6962

开拓者贵宾

5
发表于 2008-8-27 04:52:56 | 只看该作者
嗯,效果不错的样子,偶来思考下不看脚本进行仿制{/cy}
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

6
发表于 2008-8-27 05:11:09 | 只看该作者
不错,魔神战记里面有个这样的风格,而且是心情标记
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
39021
在线时间
5719 小时
注册时间
2006-11-10
帖子
6619
7
发表于 2008-8-27 12:23:38 | 只看该作者
我想说的是....

很棒的东西~~可惜我用不上....因为我用的是FUKI -。-...

支持dbshy君~~~

小声的说,为什么有的if后面没加then呢?不符合你的习惯嘛~~~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

辉瑞中国首席研究员<

梦石
0
星屑
50
在线时间
142 小时
注册时间
2008-1-18
帖子
2129
8
 楼主| 发表于 2008-8-27 21:16:38 | 只看该作者
以下引用灯笼菜刀王于2008-8-27 4:23:38的发言:
小声的说,为什么有的if后面没加then呢?不符合你的习惯嘛~~~



我记得都写了,如果你指的是默认脚本中WINDOW_MESSAGE,那我就懒得加了
太多了,虽然我看的不爽 = =bbb

另外WAIT_COUNT最好设置为5,才不会太快或太慢

来6r就是等某位仁兄的巨坑

褴褛着身行无端,囊中羞涩空心酸。
平生几无得意事,倒塔泡面宅寝室。
惟羡隔壁高帅富,雨露春风月夜声。
青丝无处觅其踪,只有硬盘苍井空。
莫云男儿空悲愁,鸿鹄岂不天际游。
坐断天下执鹿首,千百金帛万兜鍪。
夜深忽梦某年月,再见女神欲语迟。
吊丝终有逆袭日,木耳再无回粉时。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

孤独守望

梦石
0
星屑
3132
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

9
发表于 2008-8-27 21:20:20 | 只看该作者
基本原理是原来的pause全屏蔽然后再另起炉灶?
恩,if...then MS是VB专有,找到同仁了= =
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-28 02:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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