Project1

标题: 关于对话中选择项的问题 [打印本页]

作者: hgfor    时间: 2009-2-7 01:54
标题: 关于对话中选择项的问题
  
   为了要显示更多行数, 我使用了  http://rpg.blue/web/htm/news827.htm  续行符创建超长文章脚本, 之后选择项就会出现对不上号, 说不太清楚, 用图来表达一下.


   下面两张图,是不同行数时, 选择项的光柜显示在不同的位置?  这个要怎么解决?

   

   

   

   {/mg} [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: ★_茄孓    时间: 2009-2-7 02:30
根据项目数判断光标初始坐标!
作者: hgfor    时间: 2009-2-7 03:01

   这段脚本需要怎么修改?

  1. def update_cursor_rect
  2.    if @index >= 0
  3.      n = $game_temp.choice_start + @index
  4.      self.cursor_rect.set(8, n * 32, @cursor_width, 32)
  5.    else
  6.      self.cursor_rect.empty
  7.    end
  8. end
复制代码

作者: 一醉倾城    时间: 2009-2-7 03:12
    好吧。。。问题出在n*32  这里的光标的Y坐标。。。。其他。。。LZ应该能想到方法解决了吧= =
作者: cinderelmini    时间: 2009-2-7 03:39
以下引用hgfor于2009-2-6 19:01:04的发言:


  这段脚本需要怎么修改?

def update_cursor_rect
   if @index >= 0
     n = $game_temp.choice_start + @index
     self.cursor_rect.set(8, n * 32, @cursor_width, 32)
   else
     self.cursor_rect.empty
   end
end

     self.cursor_rect.set(8, n * 32, @cursor_width, 32)
这块,D一个是X坐标,D2个的“*”后面的树是Y坐标的变化量,后两个是那个框框的宽和高。。
LZ要改的大概是D2个“*”后面的数字吧。。。改小点看看。。。。
作者: hgfor    时间: 2009-2-7 03:47
我修改的就是 “*”后面的数字, 如果我把数字减少点, 还是不能显示在正常的位置.


  def update_cursor_rect
    if @index >= 0
      n = $game_temp.choice_start + @index
      self.cursor_rect.set(0, n * 22 - 55, @cursor_width, 22)
    else
      self.cursor_rect.empty
    end
  end
作者: hgfor    时间: 2009-2-7 18:22
感觉好像是因为修改了自动换行符引起的, 我的对话框中每行显示30个字之后用P来换行, 我不记得RM默认的是多少个字一行了.

n = $game_temp.choice_start + @index  这条语句可能是按照默认一行多少字来算的.

高手指点一下.
作者: hgfor    时间: 2009-2-8 00:37
高手指点一下.
作者: IamI    时间: 2009-2-8 00:56
问题在此。
            $game_temp.choice_start = line_count(事件处理器3.40,脚本94)
这里单纯用默认行数来计算选择项的位置。
现在应该吧字符数加起来除以30加个1
要看你怎么算换行了,换行法则是怎么样的?
作者: hgfor    时间: 2009-2-8 03:13

  每30个字就用P来换行,  计算选择项位置是默认的脚本,要怎么修改?

  1. if c == "\p"
  2.           if centerflag == true
  3.             x = 520 - x
  4.             x = x / 2
  5.             self.contents.draw_text(x, 32 * y, 520-x, lineheight, a)
  6.           end
  7.           if rightflag == true
  8.             x = 520 - x
  9.             self.contents.draw_text(x, 32 * y, 520-x, lineheight, a)
  10.           end
  11.           if bannerflag == true
  12.             x = 520 - x
  13.             x = x / 2
  14.             self.contents.draw_text(x, 44, 520-x, lineheight, a)
  15.           end
  16.           a = ""
  17.           centerflag = false
  18.           rightflag = false
  19.           bannerflag = false
  20.           if y >= $game_temp.choice_start
  21.             @cursor_width = [@cursor_width, x].max
  22.           end
  23.           y += 1
  24.           x = 0
  25.          # if y >= $game_temp.choice_start
  26.          #   x = 0
  27.          # end
  28.           next
  29.        end
  30.         if centerflag == false && rightflag == false && bannerflag == false
  31.         # 控制字体间隔
  32.         self.contents.draw_text(1 + x, 20 * y, 40, lineheight, c)
  33.         x += self.contents.text_size(c).width
  34.       else
  35.         a += c
  36.         x += self.contents.text_size(c).width
  37.         end
  38.       end
复制代码

作者: hgfor    时间: 2009-2-8 16:47
头都想大了, 总改都这样, 怎么修改啊?
作者: 最後一滴淚    时间: 2009-2-8 21:57
搜索"4 + x"
self.contents.draw_text(4 + x, 32 * y, 40, 32, c) #你修改了这个吧...那你这间距是多少
如你把它改成:self.contents.draw_text(4 + x, 20 * y, 40, 20, c)
搜索"8, n * 32,"
self.cursor_rect.set(8, n * 32, @cursor_width, 32)
改成:
self.cursor_rect.set(8, n * 20, @cursor_width, 20)
懂了不!???? [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1