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

Project1

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

[已经解决] 兩種對話腳本兼容問題

[复制链接]

Lv2.观梦者

花开堪折直须折

梦石
0
星屑
686
在线时间
943 小时
注册时间
2010-7-17
帖子
4963

贵宾

跳转到指定楼层
1
发表于 2010-9-6 21:53:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
http://rpg.blue/forum.php?mod=vi ... id1518313pid1518313
這個是iami大人的自動居中小對話框腳本,
http://rpg.blue/forum.php?mod=vi ... 9%E8%AF%9D%E6%A1%86
這個是沉影大神的半身像對話框腳本……

如果用了小對話框腳本,一顯示對話框就彈錯
但如果把小對話框腳本插在半身像腳本的上面,就被覆蓋了,所以會失效。
用了夕陽武士提供的兼容方法,的確是不出錯了,不過半身像腳本就失效了,顯示不了半身像……

Lv2.观梦者

花开堪折直须折

梦石
0
星屑
686
在线时间
943 小时
注册时间
2010-7-17
帖子
4963

贵宾

2
 楼主| 发表于 2010-9-7 10:12:13 | 只看该作者
頂上去……拜託幫忙啦~~
大家好,我叫节操,有一天,我被吃了。
http://forever-dream.5d6d.com
永恒の梦制作组论坛

129993099
永恒の梦制作组QQ群
回复 支持 反对

使用道具 举报

Lv2.观梦者

神隐的主犯

梦石
0
星屑
299
在线时间
271 小时
注册时间
2008-2-22
帖子
7691

贵宾

3
发表于 2010-9-7 10:44:20 | 只看该作者
冰舞 啥问题?? 整合么??

主楼看到半天找不到问题~~~

《天空之城 —— 破碎的命运》
回复 支持 反对

使用道具 举报

Lv2.观梦者

花开堪折直须折

梦石
0
星屑
686
在线时间
943 小时
注册时间
2010-7-17
帖子
4963

贵宾

4
 楼主| 发表于 2010-9-7 11:09:04 | 只看该作者
回复 铃仙·优昙华院·因幡 的帖子

呃!是这样的。用了iami大人的小对话框脚本,还用了半身像脚本,就冲突了。
夕阳武士点评的时候告诉我避免冲突的办法,可是这样半身像脚本就失效了哈……
   
回复 支持 反对

使用道具 举报

Lv2.观梦者

神隐的主犯

梦石
0
星屑
299
在线时间
271 小时
注册时间
2008-2-22
帖子
7691

贵宾

5
发表于 2010-9-7 11:13:17 | 只看该作者
我看看~~~~
回复 支持 反对

使用道具 举报

Lv2.观梦者

花开堪折直须折

梦石
0
星屑
686
在线时间
943 小时
注册时间
2010-7-17
帖子
4963

贵宾

6
 楼主| 发表于 2010-9-7 11:20:43 | 只看该作者
回复 铃仙·优昙华院·因幡 的帖子

麻烦了哈~拜谢好人ing……
   
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2009-9-20
帖子
232
7
发表于 2010-9-7 11:48:44 | 只看该作者
那个……我记得有个增强型对话框和fuki对话框整合版啊……你有没有试过?

点评

不喜欢fuki对话框。。。。  发表于 2010-9-7 11:53
回复 支持 反对

使用道具 举报

Lv2.观梦者

神隐的主犯

梦石
0
星屑
299
在线时间
271 小时
注册时间
2008-2-22
帖子
7691

贵宾

8
发表于 2010-9-7 12:27:23 | 只看该作者

  1. #==============================================================================
  2. # 半身像对话框功能版 v 1.01 by 沉影不器
  3. #------------------------------------------------------------------------------
  4. # 使用说明:
  5. #   ① 此脚本可代替默认 Window_Message 全脚本
  6. #
  7. #   ② 对话框第一行输入引号内文字"名称:",脚本会把名称提取出来美化显示
  8. #
  9. #   ③ 默认半身像在左边显示
  10. #      当您需要右边显示时,在第一行输入的名称之后加"@r"(大小写不限)
  11. #      例: "拉尔夫@r:"
  12. #          请注意此时半身像将进行左右翻转显示
  13. #
  14. #   ④ 在对话中更改字体的方法:
  15. #       \f[sX]:更改字号为X
  16. #       \f[nX]:更改字体名称为预设字体组第X号字体 (预设字体组请看参数设定)
  17. #       \f[cX]:更改字色为第X号颜色 (text_color中的定义)
  18. #
  19. #   ⑤ 在对话中显示(技能 物品 武器 防具)图标和名称的方法:
  20. #       \s[X]: 显示第X号技能图标和名称
  21. #       \i[X]: 显示第X号物品图标和名称
  22. #       \w[X]: 显示第X号武器图标和名称
  23. #       \a[X]: 显示第X号防具图标和名称
  24. #
  25. #   ⑥ 在对话中更改文字不透明度的方法:
  26. #       \o[X]: 把文字不透明度更改为X (取值范围在0~255)
  27. #
  28. #   ⑦ 指定时间后自动关闭对话框的方法:
  29. #       \x[X]: 对话框将在X帧后自动关闭
  30. #       \x:    省略参数时,将在AUTO_CLOSE帧后自动关闭 (AUTO_CLOSE在参数设定中)
  31. #
  32. #   ⑧ 由于半身像占据文字显示宽度,您在设定文章时每行字数将减少
  33. #
  34. #   ⑨ 参数设定在脚本第37~66行
  35. #
  36. # 素材要求:
  37. #   ① 按vx默认头像像素材(Graphics\Faces)的格式
  38. #      要求所有半身像朝向一致(默认是正面偏右)
  39. #==============================================================================
  40. # ■ Window_Message
  41. #==============================================================================
  42. class Window_Message < Window_Selectable
  43.   #--------------------------------------------------------------------------
  44.   # ○ 参数设定
  45.   #--------------------------------------------------------------------------
  46.   # 预设字体组
  47.   FONT_ARRAY = ["黑体", "宋体", "仿宋_GB2312"]
  48.   
  49.   # 名称条参数
  50.   NAME_FONT_NAME = 0            # 名称文字字体在预设字体组中的序号
  51.   NAME_FONT_SIZE = 20           # 名称文字字号
  52.   NAME_FONT_COLOR = 16          # 名称文字颜色
  53.   NAME_X_ADJ = 6                # 名称条宽度缩进值
  54.   NAME_Y_ADJ = 6                # 名称与对话内容之间的附加距离
  55.   NAME_BAR_COLOR = 0            # 名称背景条颜色
  56.   NAME_BAR_OPACITY = 72         # 名称背景条透明度
  57.   AUTO_ADD = true               # 是否自动添加名称修饰符
  58.   SYMBOL = "【】"               # AUTO_ADD有效时为名称添加的修饰符(一对)
  59.   # 半身像参数
  60.   FACE_X_ADJ = 6                # 半身像横坐标微调
  61.   FACE_Y_ADJ = -6               # 半身像纵坐标微调
  62.   # 对话框参数
  63.   MSG_FONT_NAME = 1             # 对话文字字体在预设字体组中的序号
  64.   MSG_FONT_SIZE = 18            # 对话文字字号
  65.   MSG_FONT_COLOR = 0            # 对话文字颜色
  66.   # 自动关闭
  67.   AUTO_CLOSE = 80               # 默认自动关闭时间(以帧计时)
  68.   
  69.   #--------------------------------------------------------------------------
  70.   # ● 常量
  71.   #--------------------------------------------------------------------------
  72.   MAX_LINE = 4                            # 最大行数
  73.   #--------------------------------------------------------------------------
  74.   # ◎ 初始化对象
  75.   #--------------------------------------------------------------------------
  76.   def initialize
  77.     @height = [NAME_FONT_SIZE, MSG_FONT_SIZE].max + 2 +
  78.              ( MSG_FONT_SIZE + 2) * 3 + NAME_Y_ADJ + 32
  79.     y = Graphics.height - @height
  80.     super(0, y, Graphics.width, @height)
  81.     self.z = 200
  82.     self.active = false
  83.     self.index = -1
  84.     self.openness = 0
  85.     @opening = false            # 窗口正在打开的标志
  86.     @closing = false            # 窗口正在关闭的标志
  87.     @text = nil                 # 已经没有可显示的文章
  88.     @contents_x = 0             # 下一条文字描绘的 X 坐标
  89.     @contents_y = 0             # 下一条文字描绘的 Y 坐标
  90.     @line_count = 0             # 现在描绘的行数
  91.     @wait_count = 0             # 等待计数
  92.     @background = 0             # 背景类型
  93.     @position = 2               # 显示位置
  94.     @show_fast = false          # 快速显示标志
  95.     @line_show_fast = false     # 以行为单位快速显示
  96.     @pause_skip = false         # 省略等待输入标志
  97.     create_gold_window
  98.     create_number_input_window
  99.     create_back_sprite
  100.     # 半身像左右判断
  101.     @show_right = false
  102.     # 半身像宽度
  103.     @face_width = 0
  104.     # 生成名称背景条
  105.     create_namebar_sprite
  106.     # 生成半身像
  107.     create_face_sprite
  108.     # 修改默认字体
  109.     contents.font = get_font(1)
  110.   end
  111.   #--------------------------------------------------------------------------
  112.   # ● 释放
  113.   #--------------------------------------------------------------------------
  114.   def dispose
  115.     super
  116.     dispose_gold_window
  117.     dispose_number_input_window
  118.     dispose_back_sprite
  119.   end
  120.   #--------------------------------------------------------------------------
  121.   # ◎ 更新画面
  122.   #--------------------------------------------------------------------------
  123.   def update
  124.     super
  125.     update_gold_window
  126.     update_number_input_window
  127.     update_back_sprite
  128.     update_show_fast
  129.     unless @opening or @closing             # 除窗口关闭以外
  130.       if @wait_count > 0                    # 文章内等待中
  131.         @wait_count -= 1
  132.       elsif self.pause                      # 等待文章翻页待机中
  133.         input_pause
  134.       elsif self.active                     # 正在输入选择项
  135.         input_choice
  136.       elsif @number_input_window.visible    # 正在输入数值
  137.         input_number
  138.       elsif @text != nil                    # 还有剩余的文章
  139.         update_message                        # 更新消息
  140.       elsif continue?                       # 继续的情况
  141.         start_message                         # 开始消息
  142.         open                                  # 打开窗口
  143.         $game_message.visible = true
  144.       else                                  # 不继续的情况
  145.         close                                 # 关闭窗口
  146.         $game_message.visible = @closing
  147.       end
  148.     end
  149.     # 自动关闭对话框
  150.     if @auto_close != nil
  151.       if @auto_close > 0
  152.         @auto_close -= 1
  153.       else
  154.         @auto_close = nil
  155.         terminate_message
  156.       end
  157.     end
  158.   end
  159.   #--------------------------------------------------------------------------
  160.   # ◎ 生成所持金窗口
  161.   #--------------------------------------------------------------------------
  162.   def create_gold_window
  163.     @gold_window = Window_Gold.new(384, 0)
  164.     @gold_window.openness = 0
  165.     # 统一字体
  166.     @gold_window.contents.font = get_font(1)
  167.   end
  168.   #--------------------------------------------------------------------------
  169.   # ◎ 生成数值输入窗口
  170.   #--------------------------------------------------------------------------
  171.   def create_number_input_window
  172.     @number_input_window = Window_NumberInput.new
  173.     @number_input_window.visible = false
  174.     # 统一字体
  175.     @number_input_window.contents.font = get_font(1)
  176.   end
  177.   #--------------------------------------------------------------------------
  178.   # ● 生成背景活动块
  179.   #--------------------------------------------------------------------------
  180.   def create_back_sprite
  181.     @back_sprite = Sprite.new
  182.     @back_sprite.bitmap = Cache.system("MessageBack")
  183.     @back_sprite.visible = (@background == 1)
  184.     @back_sprite.z = 190
  185.   end
  186.   #--------------------------------------------------------------------------
  187.   # ● 释放所持金窗口
  188.   #--------------------------------------------------------------------------
  189.   def dispose_gold_window
  190.     @gold_window.dispose
  191.   end
  192.   #--------------------------------------------------------------------------
  193.   # ● 释放数值输入窗口
  194.   #--------------------------------------------------------------------------
  195.   def dispose_number_input_window
  196.     @number_input_window.dispose
  197.   end
  198.   #--------------------------------------------------------------------------
  199.   # ● 释放背景活动块
  200.   #--------------------------------------------------------------------------
  201.   def dispose_back_sprite
  202.     @back_sprite.dispose
  203.   end
  204.   #--------------------------------------------------------------------------
  205.   # ● 更新所持金窗口
  206.   #--------------------------------------------------------------------------
  207.   def update_gold_window
  208.     @gold_window.update
  209.   end
  210.   #--------------------------------------------------------------------------
  211.   # ● 更新数值输入窗口
  212.   #--------------------------------------------------------------------------
  213.   def update_number_input_window
  214.     @number_input_window.update
  215.   end
  216.   #--------------------------------------------------------------------------
  217.   # ● 更新背景活动块
  218.   #--------------------------------------------------------------------------
  219.   def update_back_sprite
  220.     @back_sprite.visible = (@background == 1)
  221.     @back_sprite.y = y - 16
  222.     @back_sprite.opacity = openness
  223.     @back_sprite.update
  224.   end
  225.   #--------------------------------------------------------------------------
  226.   # ● 更新快速显示标志
  227.   #--------------------------------------------------------------------------
  228.   def update_show_fast
  229.     if self.pause or self.openness < 255
  230.       @show_fast = false
  231.     elsif Input.trigger?(Input::C) and @wait_count < 2
  232.       @show_fast = true
  233.     elsif not Input.press?(Input::C)
  234.       @show_fast = false
  235.     end
  236.     if @show_fast and @wait_count > 0
  237.       @wait_count -= 1
  238.     end
  239.   end
  240.   #--------------------------------------------------------------------------
  241.   # ● 判断下一消息继续显示
  242.   #--------------------------------------------------------------------------
  243.   def continue?
  244.     return true if $game_message.num_input_variable_id > 0
  245.     return false if $game_message.texts.empty?
  246.     if self.openness > 0 and not $game_temp.in_battle
  247.       return false if @background != $game_message.background
  248.       return false if @position != $game_message.position
  249.     end
  250.     return true
  251.   end
  252.   #--------------------------------------------------------------------------
  253.   # ◎ 开始显示消息
  254.   #--------------------------------------------------------------------------
  255.   def start_message
  256.     # 重设窗口背景与位置
  257. #~     reset_window
  258.     # 还原半身像左右判断
  259.     @show_right = false
  260.     # 暂存消息
  261.     temp_texts = []
  262.     $game_message.texts.each {|text| temp_texts.push(text.clone)}
  263.     if temp_texts[0] != nil and temp_texts[0].include?(":")
  264.       # 半身像左右判断
  265.       if temp_texts[0].split(/@/)[1] =~ /[Rr]/
  266.         @show_right = true
  267.         temp_texts[0] = temp_texts[0].split(/@/)[0]
  268.       end
  269.       # 去冒号加修饰符(可选)
  270.       if AUTO_ADD
  271.         temp_texts[0].sub!(/\:/) { "" }
  272.         temp_texts[0] = SYMBOL[0,SYMBOL.size/2] +
  273.         temp_texts[0] + SYMBOL[SYMBOL.size/2,SYMBOL.size/2]
  274.       end
  275.       # 设定文字颜色
  276.       temp_texts[0] = "\\C[#{NAME_FONT_COLOR}]" +
  277.       temp_texts[0] + "\\C[#{MSG_FONT_COLOR}]"
  278.       # 设定文字字体
  279.       temp_texts[0] = "\\F[N#{NAME_FONT_NAME}]" +
  280.       temp_texts[0] + "\\F[N#{MSG_FONT_NAME}]"
  281.       # 显示名称背景条
  282.       show_namebar_sprite
  283.     end
  284.     @text = ""
  285.     for i in 0...temp_texts.size
  286.       @text += "  " if i >= $game_message.choice_start
  287.       @text += temp_texts[i].clone + "\x00"
  288.     end
  289.     @item_max = $game_message.choice_max
  290.     convert_special_characters
  291.     reset_window
  292.     new_page
  293.   end
  294.   #--------------------------------------------------------------------------
  295.   # ◎ 更换页面处理
  296.   #--------------------------------------------------------------------------
  297.   def new_page
  298.     contents.clear
  299.     # 初始化文字描绘起点
  300.     @contents_x = 0
  301.     # 除名称外文字右移1字符
  302.     @contents_x += MSG_FONT_SIZE+2 unless show_name?
  303.     if $game_message.face_name.empty?
  304.       @face_sprite.bitmap.clear
  305.     else
  306.       name = $game_message.face_name
  307.       index = $game_message.face_index
  308.       # 获取半身像宽度
  309.       get_face_width(name)
  310.       # 计算文字横坐标起始
  311.       @contents_x += @face_width-16 unless @show_right
  312.       draw_msg_face(name, index)
  313.       # 设定半身像坐标
  314.       set_face_pos
  315.     end
  316.     @contents_y = 0
  317.     @line_count = 0
  318.     @show_fast = false
  319.     @line_show_fast = false
  320.     @pause_skip = false
  321.     contents.font.color = text_color(0)
  322.   end
  323.   #--------------------------------------------------------------------------
  324.   # ◎ 换行处理
  325.   #--------------------------------------------------------------------------
  326.   def new_line
  327.     @contents_x = 0
  328.     unless $game_message.face_name.empty?
  329.       # 半身像显示在左时
  330.       @contents_x = @face_width-16 unless @show_right
  331.     end
  332.     # 除名称外文字右移1字符
  333.     @contents_x += (MSG_FONT_SIZE+2)
  334.     # 显示名称之后,对话内容下移 NAME_Y_ADJ
  335.     @contents_y += NAME_Y_ADJ if @line_count == 0 and show_name?
  336.     # 以字号为新间距
  337.     @contents_y += (MSG_FONT_SIZE+2)
  338.     @line_count += 1
  339.     @line_show_fast = false
  340.   end
  341.   #--------------------------------------------------------------------------
  342.   # ◎ 特殊文字变换
  343.   #--------------------------------------------------------------------------
  344.   def convert_special_characters
  345.     @text1 = @text.clone
  346.     @text.gsub!(/\\V\[(\d+)\]/i)  { $game_variables[$1.to_i] }
  347.     @text.gsub!(/\\V\[(\d+)\]/i)  { $game_variables[$1.to_i] }
  348.     @text.gsub!(/\\N\[(\d+)\]/i)  { $game_actors[$1.to_i].name }
  349.     @text.gsub!(/\\C\[(\d+)\]/i)  { "\x01[#{$1}]" }
  350.     @text.gsub!(/\\G/)            { "\x02" }
  351.     @text.gsub!(/\\\./)           { "\x03" }
  352.     @text.gsub!(/\\\|/)           { "\x04" }
  353.     @text.gsub!(/\\!/)            { "\x05" }
  354.     @text.gsub!(/\\>/)            { "\x06" }
  355.     @text.gsub!(/\\</)            { "\x07" }
  356.     @text.gsub!(/\\\^/)           { "\x08" }
  357.     @text.gsub!(/\\\\/)           { "\\" }
  358.     # 更改不透明度
  359.     @text.gsub!(/\\O\[(\d+)\]/i)  { "\x09[#{$1}]" }
  360.     # 显示数据库元素
  361.     @text.gsub!(/\\S\[(\d+)\]/i)  { "\x10[#{$1}]" + $data_skills[$1.to_i].name }
  362.     @text.gsub!(/\\I\[(\d+)\]/i)  { "\x11[#{$1}]" + $data_items[$1.to_i].name }
  363.     @text.gsub!(/\\W\[(\d+)\]/i)  { "\x12[#{$1}]" + $data_weapons[$1.to_i].name }
  364.     @text.gsub!(/\\A\[(\d+)\]/i)  { "\x13[#{$1}]" + $data_armors[$1.to_i].name }
  365.     # 更改字体
  366.     @text.gsub!(/\\F\[S(\d+)\]/i) { "\x14[#{$1}]" }
  367.     @text.gsub!(/\\F\[N(\d+)\]/i) { "\x15[#{$1}]" }
  368.     @text.gsub!(/\\F\[C(\d+)\]/i) { "\x16[#{$1}]" }
  369.     # 自动关闭
  370.     @text.gsub!(/\\X\[(\d+)\]/i)  { "\x17[#{$1}]" }
  371.     @text.gsub!(/\\X/i)            { "\x18" }
  372.   end
  373.   #--------------------------------------------------------------------------
  374.   # ◎ 设置窗口背景与位置
  375.   #--------------------------------------------------------------------------
  376.   def reset_window
  377.     @background = $game_message.background
  378.     @position = $game_message.position   
  379.     self.width = Graphics.width
  380.     self.height= @height  
  381.     if @background == 0   # 普通窗口
  382.       self.opacity = 255
  383.     else                  # 背景变暗、透明
  384.       self.opacity = 0
  385.     end
  386.     case @position
  387.     when 0  # 上
  388.       self.y = 0
  389.       @gold_window.y = 360
  390.     when 1  # 中
  391.       # 通过计算获取
  392.       self.y = (Graphics.height-self.height)/2
  393.       @gold_window.y = 0
  394.     when 2  # 下
  395.       # 通过计算获取
  396.       self.y = Graphics.height-self.height
  397.       @gold_window.y = 0
  398.     end
  399.     if $game_switches[25] == true
  400.       calc
  401.       self.x = (544 - self.width) / 2
  402.       self.y = (416 -self.height) / 2
  403.       $game_switches[25] = false
  404.       @namebar_sprite.visible = false
  405.       @switches = true
  406.       namebar = false
  407.     else
  408.       if @switches
  409.         self.x = 0
  410.         @switches = false
  411.         create_contents
  412.         show_namebar_sprite
  413.       end
  414.     end
  415.     show_namebar_sprite(namebar)
  416.   end
  417.   def calc
  418.     a = @text1.split(/\n/)
  419.     w = 0
  420.     for i in a
  421.       t = self.contents.text_size(i).width
  422.       w = [w,t].max
  423.     end
  424.     h = WLH * a.size
  425.     self.width = w + 32
  426.     self.height = h + 32
  427.     create_contents
  428.   end
  429.   #--------------------------------------------------------------------------
  430.   # ◎ 消息结束
  431.   #--------------------------------------------------------------------------
  432.   def terminate_message
  433.     self.active = false
  434.     self.pause = false
  435.     self.index = -1
  436.     @gold_window.close
  437.     @number_input_window.active = false
  438.     @number_input_window.visible = false
  439.     $game_message.main_proc.call if $game_message.main_proc != nil
  440.     $game_message.clear
  441.     # 处理名称背景条和半身像
  442.     @namebar_sprite.visible = false
  443.     @face_sprite.visible = false
  444.     @face_sprite.bitmap.clear
  445.   end
  446.   #--------------------------------------------------------------------------
  447.   # ◎ 更新消息
  448.   #--------------------------------------------------------------------------
  449.   def update_message
  450.     loop do
  451.       c = @text.slice!(/./m)            # 获取下一条文字
  452.       case c
  453.       when nil                          # 没有可以显示的文字
  454.         finish_message                  # 更新结束
  455.         break
  456.       when "\x00"                       # 换行
  457.         new_line
  458.         if @line_count >= MAX_LINE      # 行数为最大时
  459.           unless @text.empty?           # 如果还有增加则继续
  460.             self.pause = true           # 等待输入
  461.             break
  462.           end
  463.         end
  464.       when "\x01"                       # \C[n]  (更改文字色)
  465.         @text.sub!(/\[([0-9]+)\]/, "")
  466.         contents.font.color = text_color($1.to_i)
  467.         next
  468.       when "\x02"                       # \G  (显示所持金)
  469.         @gold_window.refresh
  470.         @gold_window.open
  471.       when "\x03"                       # \.  (等待 1/4 秒)
  472.         @wait_count = 15
  473.         break
  474.       when "\x04"                       # \|  (等待 1 秒)
  475.         @wait_count = 60
  476.         break
  477.       when "\x05"                       # \!  (等待输入)
  478.         self.pause = true
  479.         break
  480.       when "\x06"                       # \>  (瞬间显示 ON)
  481.         @line_show_fast = true
  482.       when "\x07"                       # \<  (瞬间显示 OFF)
  483.         @line_show_fast = false
  484.       when "\x08"                       # \^  (不等待输入)
  485.         @pause_skip = true
  486.       # 更改不透明度的情况下
  487.       when "\x09"
  488.         @text.sub!(/\[(\d+)\]/, "")
  489.         contents.font.color.alpha = $1.to_i
  490.       # 显示技能情况下
  491.       when "\x10"
  492.         @text.sub!(/\[(\d+)\]/, "")
  493.         draw_icon($data_skills[$1.to_i].icon_index, @contents_x, @contents_y)
  494.         # 纵坐标增加图标宽度
  495.         @contents_x += 24
  496.       # 显示物品情况下
  497.       when "\x11"
  498.         @text.sub!(/\[(\d+)\]/, "")
  499.         draw_icon($data_items[$1.to_i].icon_index, @contents_x, @contents_y)
  500.         # 纵坐标增加图标宽度
  501.         @contents_x += 24
  502.       # 显示武器情况下
  503.       when "\x12"
  504.         @text.sub!(/\[(\d+)\]/, "")
  505.         draw_icon($data_weapons[$1.to_i].icon_index, @contents_x, @contents_y)
  506.         # 纵坐标增加图标宽度
  507.         @contents_x += 24
  508.       # 显示防具情况下
  509.       when "\x13"
  510.         @text.sub!(/\[(\d+)\]/, "")
  511.         draw_icon($data_armors[$1.to_i].icon_index, @contents_x, @contents_y)
  512.         # 纵坐标增加图标宽度
  513.         @contents_x += 24
  514.       # 更改字体的情况下
  515.       when "\x14"
  516.         @text.sub!(/\[(\d+)\]/, "")
  517.         contents.font.size = $1.to_i
  518.       when "\x15"
  519.         @text.sub!(/\[(\d+)\]/, "")
  520.         contents.font.name = FONT_ARRAY[$1.to_i]
  521.       when "\x16"
  522.         @text.sub!(/\[(\d+)\]/, "")
  523.         contents.font.color = text_color($1.to_i)
  524.       # 自动关闭对话框的情况下
  525.       when "\x17"
  526.         @text.sub!(/\[(\d+)\]/, "")
  527.         @auto_close = $1.to_i
  528.       when "\x18"
  529.         @auto_close = AUTO_CLOSE
  530.       # 普通文字的情况下
  531.       else
  532.         font_height = contents.font.size + 2
  533.         contents.draw_text(@contents_x, @contents_y, 40, font_height, c)
  534.         c_width = contents.text_size(c).width
  535.         @contents_x += c_width
  536.       end
  537.       break unless @show_fast or @line_show_fast
  538.     end
  539.   end
  540.   #--------------------------------------------------------------------------
  541.   # ◎ 消息更新结束
  542.   #--------------------------------------------------------------------------
  543.   def finish_message
  544.     if $game_message.choice_max > 0
  545.       start_choice
  546.     elsif $game_message.num_input_variable_id > 0
  547.       start_number_input
  548.     elsif @pause_skip
  549.       terminate_message
  550.     else
  551.       self.pause = true
  552.     end
  553.     @wait_count = 10
  554.     @text = nil
  555.   end
  556.   #--------------------------------------------------------------------------
  557.   # ● 开始选择项
  558.   #--------------------------------------------------------------------------
  559.   def start_choice
  560.     self.active = true
  561.     self.index = 0
  562.   end
  563.   #--------------------------------------------------------------------------
  564.   # ◎ 开始输入数值
  565.   #--------------------------------------------------------------------------
  566.   def start_number_input
  567.     digits_max = $game_message.num_input_digits_max
  568.     number = $game_variables[$game_message.num_input_variable_id]
  569.     @number_input_window.digits_max = digits_max
  570.     @number_input_window.number = number
  571.     if $game_message.face_name.empty?
  572.       @number_input_window.x = x
  573.     else
  574.       # 代入半身像宽度
  575.       @number_input_window.x = x + @face_width
  576.     end
  577.     @number_input_window.y = y + @contents_y
  578.     @number_input_window.active = true
  579.     @number_input_window.visible = true
  580.     @number_input_window.update
  581.   end
  582.   #--------------------------------------------------------------------------
  583.   # ◎ 更新光标 #可能仍须增加判断
  584.   #--------------------------------------------------------------------------
  585.   def update_cursor
  586.     if @index >= 0
  587.       if $game_message.face_name.empty?
  588.         x = 0
  589.         y = ($game_message.choice_start+@index)*(MSG_FONT_SIZE+2)
  590.         width = contents.width
  591.       else
  592.         x = @show_right ? 0 : @face_width
  593.         y = ($game_message.choice_start+@index)*(MSG_FONT_SIZE+2) + NAME_Y_ADJ
  594.         width = contents.width - @face_width
  595.       end
  596.       self.cursor_rect.set(x, y, width, (MSG_FONT_SIZE+2))
  597.     else
  598.       self.cursor_rect.empty
  599.     end
  600.   end
  601.   #--------------------------------------------------------------------------
  602.   # ● 文章显示输入处理
  603.   #--------------------------------------------------------------------------
  604.   def input_pause
  605.     if Input.trigger?(Input::B) or Input.trigger?(Input::C)
  606.       self.pause = false
  607.       if @text != nil and not @text.empty?
  608.         new_page if @line_count >= MAX_LINE
  609.       else
  610.         terminate_message
  611.       end
  612.     end
  613.   end
  614.   #--------------------------------------------------------------------------
  615.   # ● 选择项输入处理
  616.   #--------------------------------------------------------------------------
  617.   def input_choice
  618.     if Input.trigger?(Input::B)
  619.       if $game_message.choice_cancel_type > 0
  620.         Sound.play_cancel
  621.         $game_message.choice_proc.call($game_message.choice_cancel_type - 1)
  622.         terminate_message
  623.       end
  624.     elsif Input.trigger?(Input::C)
  625.       Sound.play_decision
  626.       $game_message.choice_proc.call(self.index)
  627.       terminate_message
  628.     end
  629.   end
  630.   #--------------------------------------------------------------------------
  631.   # ● 数值输入处理
  632.   #--------------------------------------------------------------------------
  633.   def input_number
  634.     if Input.trigger?(Input::C)
  635.       Sound.play_decision
  636.       $game_variables[$game_message.num_input_variable_id] =
  637.         @number_input_window.number
  638.       $game_map.need_refresh = true
  639.       terminate_message
  640.     end
  641.   end
  642.   #--------------------------------------------------------------------------
  643.   # ○ 生成名称背景条
  644.   #--------------------------------------------------------------------------
  645.   def create_namebar_sprite
  646.     @namebar_sprite = Sprite.new
  647.     @namebar_sprite.bitmap = Bitmap.new(Graphics.width-NAME_X_ADJ, NAME_FONT_SIZE+4)
  648.     # 可视性
  649.     @namebar_sprite.visible = false
  650.     # 准备参数
  651.     rect = Rect.new(NAME_X_ADJ, 0, @namebar_sprite.width, @namebar_sprite.height)
  652.     color1 = text_color(NAME_BAR_COLOR)
  653.     color2 = text_color(NAME_BAR_COLOR)
  654.     color1.alpha = NAME_BAR_OPACITY
  655.     color2.alpha = 0
  656.     # 描绘渐变条
  657.     @namebar_sprite.bitmap.gradient_fill_rect(rect, color1, color2)
  658.   end
  659.   #--------------------------------------------------------------------------
  660.   # ○ 生成半身像
  661.   #--------------------------------------------------------------------------
  662.   def create_face_sprite
  663.     @face_sprite = Sprite.new
  664.     @face_sprite.bitmap = Bitmap.new(1,1)
  665.     @face_sprite.z = self.z + 2
  666.     @face_sprite.visible = false
  667.     @old_name = ""                        # 判断头像是否改变
  668.     @old_index = 0                        # 判断头像是否改变
  669.   end
  670.   #--------------------------------------------------------------------------
  671.   # ○ 显示名称背景条
  672.   #--------------------------------------------------------------------------
  673.   def show_namebar_sprite(bool = true)
  674.     # 坐标跟随
  675.     @namebar_sprite.x = self.x
  676.     @namebar_sprite.y = self.y + 16 - 1
  677.     @namebar_sprite.z = self.z + 1
  678.     # 可视性
  679.     if bool != nil
  680.       @namebar_sprite.visible = bool
  681.     else
  682.       @namebar_sprite.visible = true
  683.     end
  684.   end
  685.   #--------------------------------------------------------------------------
  686.   # ○ 描绘半身像
  687.   #     face_name  : 半身像图像文件名
  688.   #     face_index : 半身像图像索引
  689.   #--------------------------------------------------------------------------
  690.   def draw_msg_face(face_name, face_index)
  691.     bitmap = Cache.face(face_name)
  692.     width = bitmap.width / 4
  693.     height = bitmap.height / 2
  694.     rect = Rect.new(0, 0, 0, 0)
  695.     rect.x = face_index % 4 * width
  696.     rect.y = face_index / 4 * height
  697.     rect.width = width
  698.     rect.height = height
  699.     @face_sprite.bitmap = Bitmap.new(width, height)
  700.     @face_sprite.bitmap.blt(0, 0, bitmap, rect)
  701.     @face_sprite.mirror = @show_right
  702.     bitmap.dispose
  703.   end
  704.   #--------------------------------------------------------------------------
  705.   # ○ 是否显示名称
  706.   #--------------------------------------------------------------------------
  707.   def show_name?
  708.     return @namebar_sprite.visible
  709.   end
  710.   #--------------------------------------------------------------------------
  711.   # ○ 返回字体
  712.   #     index       : 编号
  713.   #--------------------------------------------------------------------------
  714.   def get_font(index)
  715.     case index
  716.     when 0
  717.       return Font.new(FONT_ARRAY[NAME_FONT_NAME], NAME_FONT_SIZE)
  718.     when 1
  719.       return Font.new(FONT_ARRAY[MSG_FONT_NAME], MSG_FONT_SIZE)
  720.     end
  721.   end
  722.   #--------------------------------------------------------------------------
  723.   # ○ 获取半身像宽度
  724.   #     face_name  : 半身像图像文件名
  725.   #--------------------------------------------------------------------------
  726.   def get_face_width(face_name)
  727.     bitmap = Cache.face(face_name)
  728.     @face_width = bitmap.width / 4
  729.     bitmap.dispose
  730.   end
  731.   #--------------------------------------------------------------------------
  732.   # ○ 设定半身像位置
  733.   #--------------------------------------------------------------------------
  734.   def set_face_pos
  735.     @face_sprite.y = self.y + (self.height-@face_sprite.height) + FACE_Y_ADJ
  736.     if @show_right
  737.       @face_sprite.x = self.width - @face_sprite.width - FACE_X_ADJ
  738.     else
  739.       @face_sprite.x = self.x + FACE_X_ADJ
  740.     end
  741.     # 可视性
  742.     @face_sprite.visible = true
  743.   end
  744. end
复制代码
整合好痛苦~~~

点评

II 的脚本是按照字的长度来定的~~~  发表于 2010-9-7 13:37
我提个意见可以吗,整合之后用,那个字显示不全,只能显示三个字  发表于 2010-9-7 12:51

评分

参与人数 1星屑 +1400 收起 理由
小幽的马甲 + 1400

查看全部评分


《天空之城 —— 破碎的命运》
回复 支持 反对

使用道具 举报

Lv2.观梦者

花开堪折直须折

梦石
0
星屑
686
在线时间
943 小时
注册时间
2010-7-17
帖子
4963

贵宾

9
 楼主| 发表于 2010-9-7 12:42:37 | 只看该作者
回复 铃仙·优昙华院·因幡 的帖子

感谢啊~~不过为何397行出错……
   
回复 支持 反对

使用道具 举报

Lv2.观梦者

神隐的主犯

梦石
0
星屑
299
在线时间
271 小时
注册时间
2008-2-22
帖子
7691

贵宾

10
发表于 2010-9-7 12:43:44 | 只看该作者
我测试都正常啊~

《天空之城 —— 破碎的命运》
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-13 07:58

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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