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

Project1

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

[已经解决] 选择项文字不对齐

[复制链接]

Lv1.梦旅人

梦石
0
星屑
218
在线时间
356 小时
注册时间
2011-3-8
帖子
66
跳转到指定楼层
1
 楼主| 发表于 2013-2-12 15:52:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 daosi 于 2013-2-12 17:16 编辑


如图,第一行总是提前,打个空格也对齐不了
新建一个工程把Window_Message复制过来,选择项就没有出错,应该是这个脚本里哪坐标出问题了吧
下面的脚本是复制的某侠脚本教学里的工程脚本,就改了下坐标,不知道问题出自哪里

我觉得应该是添加了@message_x之后,某侠的是默认左边,我把人物半身像弄到了右边
可是删掉@message_x之后,就提示self.contents.draw_text(4 + x, 32 * y, 40, 32, c)出错
不敢乱改啊,求破!
  1. #==============================================================================
  2. # ■ Window_Message
  3. #------------------------------------------------------------------------------
  4. #  显示文章的信息窗口。
  5. #==============================================================================

  6. class Window_Message < Window_Selectable
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化状态
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     super(20, 300, 600, 166)
  12.     self.contents = Bitmap.new(width - 32, height - 32)
  13.     self.visible = false
  14.     self.z = 9998
  15.     #self.windowskin = Bitmap.new(1,1)
  16.     @fade_in = false
  17.     @fade_out = false
  18.     @contents_showing = false
  19.     @cursor_width = 0
  20.     @wait_bmp = Sprite.new
  21.     @wait_bmp.z = 10000
  22.     @wait_bmp.bitmap = Bitmap.new(45,45)
  23.     @head = Sprite.new
  24.     @head.x = 360
  25.     @head.z = 200
  26.     [url=home.php?mod=space&uid=36110]@Wait[/url] = 0
  27.     [url=home.php?mod=space&uid=32215]@show[/url] = 0
  28.     @bmp = nil
  29.     self.active = false
  30.     self.index = -1
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ● 释放
  34.   #--------------------------------------------------------------------------
  35.   def dispose
  36.     terminate_message
  37.     $game_temp.message_window_showing = false
  38.     if @input_number_window != nil
  39.       @input_number_window.dispose
  40.     end
  41.     @wait_bmp.bitmap.dispose
  42.     @wait_bmp.dispose
  43.     @head.dispose
  44.     #@bmp.dispose
  45.     super
  46.   end
  47.   #--------------------------------------------------------------------------
  48.   # ● 处理信息结束
  49.   #--------------------------------------------------------------------------
  50.   def terminate_message
  51.     self.active = false
  52.     self.pause = false
  53.     self.index = -1
  54.     self.contents.clear
  55.     @wait_bmp.bitmap.clear
  56.     # 清除显示中标志
  57.     @contents_showing = false
  58.     # 呼叫信息调用
  59.     if $game_temp.message_proc != nil
  60.       $game_temp.message_proc.call
  61.     end
  62.     # 清除文章、选择项、输入数值的相关变量
  63.     $game_temp.message_text = nil
  64.     $game_temp.message_proc = nil
  65.     $game_temp.choice_start = 99
  66.     $game_temp.choice_max = 0
  67.     $game_temp.choice_cancel_type = 0
  68.     $game_temp.choice_proc = nil
  69.     $game_temp.num_input_start = 99
  70.     $game_temp.num_input_variable_id = 0
  71.     $game_temp.num_input_digits_max = 0
  72.     # 开放金钱窗口
  73.     if @gold_window != nil
  74.       @gold_window.dispose
  75.       @gold_window = nil
  76.     end
  77.     if @head.bitmap != nil
  78.       @head.bitmap.dispose
  79.     end
  80.   end
  81.   #--------------------------------------------------------------------------
  82.   # ● 刷新
  83.   #--------------------------------------------------------------------------
  84.   def refresh
  85.     @message_x = 0
  86.     self.contents.clear
  87.     self.contents.fill_rect(0,0,width - 32,height - 32,Color.new(-255,-255,0,0))
  88.     self.contents.font.color = normal_color
  89.     y = 0
  90.     x = @message_x
  91.     @cursor_width = 0
  92.     # 到选择项的下一行字
  93.     if $game_temp.choice_start == 0
  94.       x = 8
  95.     end
  96.     # 有等待显示的文字的情况下
  97.     if $game_temp.message_text != nil
  98.       text = $game_temp.message_text
  99.       # 限制文字处理
  100.       begin
  101.         last_text = text.clone
  102.         text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  103.       end until text == last_text
  104.       text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  105.         $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  106.       end
  107.       # 为了方便、将 "\\\\" 变换为 "\000"
  108.       text.gsub!(/\\\\/) { "\000" }
  109.       # "\\C" 变为 "\001" 、"\\G" 变为 "\002"
  110.       text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  111.       text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "\003[#{$1}]" }
  112.       if $1 != nil
  113.         head = $1.to_s
  114.         @head.bitmap = Bitmap.new("Graphics/Faces/#{head}_h")
  115.         @message_x = 0
  116.       end
  117.       text.gsub!(/\003\[([0-9]+)\]/) { "" }
  118.       text.gsub!(/\\[Gg]/) { "\002" }
  119.       x = @message_x
  120.       # c 获取 1 个字 (如果不能取得文字就循环)
  121.       while ((c = text.slice!(/./m)) != nil)
  122.         # \\ 的情况下
  123.         if c == "\000"
  124.           # 还原为本来的文字
  125.           c = "\\"
  126.         end
  127.         # \C[n] 的情况下
  128.         if c == "\001"
  129.           # 更改文字色
  130.           text.sub!(/\[([0-9]+)\]/, "")
  131.           color = $1.to_i
  132.           if color >= 0 #and color <= 7
  133.             self.contents.font.color = text_color(color)
  134.           end
  135.           # 下面的文字
  136.           next
  137.         end
  138.         # \G 的情况下
  139.         if c == "\002"
  140.           # 生成金钱窗口
  141.           if @gold_window == nil
  142.             @gold_window = Window_Gold.new
  143.             @gold_window.x = 560 - @gold_window.width
  144.             if $game_temp.in_battle
  145.               @gold_window.y = 192
  146.             else
  147.               @gold_window.y = self.y >= 128 ? 32 : 384
  148.             end
  149.             @gold_window.opacity = self.opacity
  150.             @gold_window.back_opacity = self.back_opacity
  151.           end
  152.           # 下面的文字
  153.           next
  154.         end
  155.         # 另起一行文字的情况下
  156.         if c == "\n"
  157.           # 刷新选择项及光标的高
  158.           if y >= $game_temp.choice_start
  159.             @cursor_width = [@cursor_width, x].max
  160.           end
  161.           # y 加 1
  162.           y += 1
  163.           x = @message_x
  164.           # 移动到选择项的下一行
  165.           if y >= $game_temp.choice_start
  166.             x = 8
  167.           end
  168.           # 下面的文字
  169.           next
  170.         end
  171.         # 描绘文字
  172.         self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
  173.         # x 为要描绘文字的加法运算
  174.         x += self.contents.text_size(c).width
  175.       end
  176.     end
  177.     # 选择项的情况
  178.     if $game_temp.choice_max > 0
  179.       @item_max = $game_temp.choice_max
  180.       self.active = true
  181.       self.index = 0
  182.     end
  183.     # 输入数值的情况
  184.     if $game_temp.num_input_variable_id > 0
  185.       digits_max = $game_temp.num_input_digits_max
  186.       number = $game_variables[$game_temp.num_input_variable_id]
  187.       @input_number_window = Window_InputNumber.new(digits_max)
  188.       @input_number_window.number = number
  189.       @input_number_window.x = self.x + 8
  190.       @input_number_window.y = self.y + $game_temp.num_input_start * 32
  191.     end
  192.   end
  193.   #--------------------------------------------------------------------------
  194.   # ● 设置窗口位置与不透明度
  195.   #--------------------------------------------------------------------------
  196.   def reset_window
  197.     if $game_temp.in_battle
  198.       self.y = 16
  199.     else
  200.       case $game_system.message_position
  201.       when 0  # 上
  202.         self.y = 16
  203.       when 1  # 中
  204.         self.y = 160
  205.       when 2  # 下
  206.         self.y = 304
  207.       end
  208.     end
  209.     if $game_system.message_frame == 0
  210.       self.opacity = 255
  211.     else
  212.       self.opacity = 0
  213.     end
  214.     self.back_opacity = 160
  215.   end
  216.   #--------------------------------------------------------------------------
  217.   # ● 刷新画面
  218.   #--------------------------------------------------------------------------
  219.   def update
  220.     super
  221.     # 渐变的情况下
  222.     if @fade_in
  223.       self.contents_opacity += 24
  224.       if @input_number_window != nil
  225.         @input_number_window.contents_opacity += 24
  226.       end
  227.       if self.contents_opacity == 255
  228.         @fade_in = false
  229.       end
  230.       return
  231.     end
  232.     # 输入数值的情况下
  233.     if @input_number_window != nil
  234.       @input_number_window.update
  235.       # 确定
  236.       if Input.trigger?(Input::C)
  237.         $game_system.se_play($data_system.decision_se)
  238.         $game_variables[$game_temp.num_input_variable_id] =
  239.           @input_number_window.number
  240.         $game_map.need_refresh = true
  241.         # 释放输入数值窗口
  242.         @input_number_window.dispose
  243.         @input_number_window = nil
  244.         terminate_message
  245.       end
  246.       return
  247.     end
  248.     # 显示信息中的情况下
  249.     if @contents_showing
  250.       # 如果不是在显示选择项中就显示暂停标志
  251.       if $game_temp.choice_max == 0
  252.         self.pause = false
  253.       end
  254.       # 取消
  255.       if Input.trigger?(Input::B)
  256.         if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
  257.           $game_system.se_play($data_system.cancel_se)
  258.           $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
  259.           terminate_message
  260.         end
  261.       end
  262.       # 确定
  263.       if Input.trigger?(Input::C)
  264.         if $game_temp.choice_max > 0
  265.           $game_system.se_play($data_system.decision_se)
  266.           $game_temp.choice_proc.call(self.index)
  267.         end
  268.         terminate_message
  269.       end
  270.       if @bmp == nil
  271.         @bmp = RPG::Cache.windowskin("fuhao.png")
  272.       end
  273.       if @wait_bmp.y != self.y + 150
  274.         @wait_bmp.x = self.x + 260
  275.         @wait_bmp.y = self.y + 150
  276.       end
  277.       if [url=home.php?mod=space&uid=36110]@Wait[/url] % 20 == 0
  278.         [url=home.php?mod=space&uid=32215]@show[/url] += 1
  279.         rect = Rect.new(@bmp.width/2 * ([url=home.php?mod=space&uid=32215]@show[/url] % 2),0,@bmp.width / 2,@bmp.height)
  280.         @wait_bmp.bitmap.clear
  281.         @wait_bmp.bitmap.blt(0,0,@bmp,rect)
  282.       end
  283.       [url=home.php?mod=space&uid=36110]@Wait[/url] += 1
  284.       return
  285.     end
  286.     # 在渐变以外的状态下有等待显示的信息与选择项的场合
  287.     if @fade_out == false and $game_temp.message_text != nil
  288.       @contents_showing = true
  289.       $game_temp.message_window_showing = true
  290.       reset_window
  291.       refresh
  292.       Graphics.frame_reset
  293.       self.visible = true
  294.       self.contents_opacity = 0
  295.       if @input_number_window != nil
  296.         @input_number_window.contents_opacity = 0
  297.       end
  298.       @fade_in = true
  299.       return
  300.     end
  301.     # 没有可以显示的信息、但是窗口为可见的情况下
  302.     if self.visible
  303.       @fade_out = true
  304.       self.opacity -= 48
  305.       if self.opacity == 0
  306.         self.visible = false
  307.         @fade_out = false
  308.         $game_temp.message_window_showing = false
  309.       end
  310.       return
  311.     end
  312.   end
  313.   #--------------------------------------------------------------------------
  314.   # ● 刷新光标矩形
  315.   #--------------------------------------------------------------------------
  316.   def update_cursor_rect
  317.     if @index >= 0
  318.       n = $game_temp.choice_start + @index
  319.       self.cursor_rect.set(8, n * 32, @cursor_width, 32)
  320.     else
  321.       self.cursor_rect.empty
  322.     end
  323.   end
  324. end
复制代码

Lv5.捕梦者 (版主)

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
帖子
11485

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

2
发表于 2013-2-12 16:23:36 | 只看该作者
  1. # 刷新选择项及光标的高
  2.           if y >= $game_temp.choice_start
  3.             @cursor_width = [@cursor_width, x].max
  4.           end
  5.           # y 加 1
  6.           y += 1
  7.           x = @message_x
  8.           # 移动到选择项的下一行
  9.           if y >= $game_temp.choice_start
  10.             x = 8
  11.           end
复制代码
试着将这里改一下吧,由于楼主不提供素材。
我就没有去测试了
大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
218
在线时间
356 小时
注册时间
2011-3-8
帖子
66
3
 楼主| 发表于 2013-2-12 16:54:17 | 只看该作者
美丽晨露 发表于 2013-2-12 16:23
试着将这里改一下吧,由于楼主不提供素材。
我就没有去测试了

Project4.zip (205.21 KB, 下载次数: 22)
呃,我那个工程里面有上百M的素材不知道怎么分离……
这是新开的工程,替换Window_Message一样出现不对齐的效果,求修改
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
帖子
11485

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

4
发表于 2013-2-12 17:07:18 | 只看该作者
daosi 发表于 2013-2-12 16:54
呃,我那个工程里面有上百M的素材不知道怎么分离……
这是新开的工程,替换Window_Message一样出现不对 ...

不知道有没有问题
总之是对其了
gaiwan.zip (206.09 KB, 下载次数: 27)
大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
218
在线时间
356 小时
注册时间
2011-3-8
帖子
66
5
 楼主| 发表于 2013-2-12 17:15:38 | 只看该作者
{:2_267:}谢谢谢谢~~果然对齐了,这样就可以弄坑爹选项了,非常感谢
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
155
在线时间
4 小时
注册时间
2013-2-12
帖子
3
6
发表于 2013-2-12 22:37:38 | 只看该作者
学习学习
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-29 19:36

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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