Project1

标题: VX怎么使用大头像 [打印本页]

作者: wyh512517516    时间: 2012-8-16 14:46
标题: VX怎么使用大头像
本帖最后由 wyh512517516 于 2012-8-17 10:27 编辑

这是某个VX游戏,人物对话
你看,而我的呢。。。人物在对话框里- -怎么弄的上面
作者: 风雪优游    时间: 2012-8-16 16:56
素材做大……
作者: a364774426    时间: 2012-8-16 18:23
应该要显示半身像的对话框脚本,至于脚本在哪,楼主自己找。
另外,素材画大不管用,因为默认的头像大小是96X96的。
作者: 怪蜀黍    时间: 2012-8-16 19:18
沉影大大的《对话框加强版》!
本来想直接给链接的,但是LZ还是自行搜索一下“对话框加强版”吧,请善于使用“搜索”功能。
需要花1积分购买该主题。
作者: devilg    时间: 2012-8-17 09:47
本帖最后由 devilg 于 2012-8-17 09:48 编辑

我来个好玩的。。。勿黑,先自我挽尊
因为没素材所以直接扩大原cg,有大个素材以后再改掉sprite的更新处就行了
  1. #==============================================================================
  2. # ■ Window_Message
  3. #------------------------------------------------------------------------------
  4. #  显示文章的信息窗口。
  5. #==============================================================================

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

1.png (137.7 KB, 下载次数: 17)

1.png





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