查看: 28055|回复: 24

[RMVA发布] [向DH致敬]VA简易半身像对话框Beta

[复制链接]

唯一的信徒

梦石
0
星屑
1697
在线时间
1359 小时
注册时间
2013-1-29
回帖
1537
发表于 2013-6-30 09:01:15 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 Sion 于 2013-12-21 20:54 编辑

【向Division Heaven致敬】

好的,于是这个脚本的语句混乱、逻辑不清、bug多多、异常的蛋疼,所以这个才是beta版=-=
bust.jpg
于是乎二话不说上范例:
Bust Shot.rar (799.54 KB, 下载次数: 3412) (没有自带rgss300.dll请自己打开范例之后保存之后使用)
[pre lang="ruby" line="1"]#encoding:utf-8
#==============================================================================
# ■ 半身像对话框 by LBQ
#------------------------------------------------------------------------------
#  一个简单的半身像对话框罢了= =
#------------------------------------------------------------------------------
# ■ 用法一览
#     1:如何将半身像应用到游戏中?
#       ——如果想要把一个脸图替换成半身像,则需要找到这个脸图的编号,比如说拉尔
#           夫,就是Actor1的编号0,之后去在Graphics/Busts这个文件夹里面拷贝一个
#           叫做Actor1_0的图像,这个图像会被当做半身像替换原有图像。
#==============================================================================
# 2013.8.25 => 修复存档不能Bug (感谢小刀
#==============================================================================
$imported ||= {}
$imported[:LBQ_Bust]=true

module LBQ
  module Bust
    FOLDER="Busts"
    SUB1=[/【/,    "\\{\\c[6]-- "]
    SUB2=[/】/,    " --\\c[0]\\}"]

    TEXT_FOR_NEXT="[next]"
    TEXT_FOR_END ="[end]"

    INDENT=255 #半身像的缩进
  end
end

module Cache
  def self.busts(filename)
    load_bitmap("Graphics/#{LBQ::Bust::FOLDER}/", filename)
  end
end



class Sprite_Bust < Sprite_Base
  attr_accessor   :bust_graphics
  attr_accessor   :status

  def initialize(vp=nil)
    super(vp)
    @bust_graphics=nil
    @status=:nothing
  end

  def slide_in
    @status=:sliding_in
  end

  def slide_out
    @status=:sliding_out
    if $game_temp.do_not_slide_out
      @status=:slided_out
      set_pos
    end
  end




  def set_pos(slide_in=true)
    self.x=0 - self.bitmap.width
    self.y=Graphics.height-self.bitmap.height

    self.x=0 unless slide_in
  end


  def set_graphics(bust_graphics)
    self.bitmap=Cache.busts(bust_graphics)
  end



  def update
    super
    case @status
    when :nothing
      # Do Nothing
    when :sliding_in
      #Slide In
      self.x+=12
      if self.x>=0
        self.x=0
        @status=:slided_in
      end

    when :sliding_out
      self.x-=12
      if self.x<= -self.bitmap.width
        self.x= -self.bitmap.width
        @status=:slided_out
      end
      #Slide Out
    when :slided_in
      #Slided in
    when :slided_out
      #Sliede out
    end

  end


end



class Game_Temp
  attr_accessor   :bust_name
  attr_accessor   :bust
  attr_accessor   :have_bust
  attr_accessor   :do_not_slide_out

  alias lbq_bust_shot_game_message_init initialize
  def initialize
    lbq_bust_shot_game_message_init
    @bust_name=""
    @bust=nil
    @have_bust=false
    @do_not_slide_out=false
  end



  
end

class Game_Message
   #--------------------------------------------------------------------------
  # ● 添加内容
  #--------------------------------------------------------------------------
  def add(text)
    new_text=text.gsub(LBQ::Bust::SUB1[0],LBQ::Bust::SUB1[1])
    new_text2=new_text.gsub(LBQ::Bust::SUB2[0],LBQ::Bust::SUB2[1])
    if new_text2.include? LBQ::Bust::TEXT_FOR_NEXT
      new_text2.delete!(LBQ::Bust::TEXT_FOR_NEXT)
      $game_temp.do_not_slide_out=true
    end

    if new_text2.include? LBQ::Bust::TEXT_FOR_END
      new_text2.delete!(LBQ::Bust::TEXT_FOR_END)
      $game_temp.do_not_slide_out=false
    end
    @texts.push(new_text2)
  end
end


class Game_Interpreter
  alias lbq_bust_shot_command_101 command_101
  #--------------------------------------------------------------------------
  # ● 显示文字
  #--------------------------------------------------------------------------
  def command_101
    $game_temp.bust=nil
      unless @params[0].empty?
        if File.exist?("Graphics/#{LBQ::Bust::FOLDER}/#{@params[0]}_#{@params[1]}.png")
          $game_temp.have_bust=true
        else
          $game_temp.have_bust=false
          $game_temp.bust_name=""
        end
      end

    unless @params[3] == 2
      $game_temp.have_bust=false
    end

    if $game_temp.have_bust
      $game_temp.bust_name="#{@params[0]}_#{@params[1]}"
      $game_temp.bust=nil
      $game_temp.bust=Sprite_Bust.new
      $game_temp.bust.set_graphics($game_temp.bust_name)
      $game_temp.bust.z=99999
      unless $game_temp.do_not_slide_out
        $game_temp.bust.set_pos
        $game_temp.bust.slide_in
      else
        $game_temp.bust.set_pos(false)
        $game_temp.bust.slide_in
      end
    end

    lbq_bust_shot_command_101
    if $game_temp.have_bust
        $game_temp.bust.slide_out
        Fiber.yield until $game_temp.bust.status==:slided_out
    end
    $game_temp.have_bust=false
    $game_temp.bust_name=""

  end


  alias lbq_bust_int_update update
  def update
    lbq_bust_int_update
    $game_temp.bust.update unless $game_temp.bust.nil?
  end

end


class Window_Message
  #--------------------------------------------------------------------------
  # ● 获取换行位置
  #--------------------------------------------------------------------------
  def new_line_x
    # 如果有头像
    unless $game_message.face_name.empty?
      value=112
      value=LBQ::Bust::INDENT unless $game_temp.bust_name.empty?
    # 木有
    else
      value=0
    end
    return value
  end
end


class Window_Message
  #--------------------------------------------------------------------------
  # ● 翻页处理
  #--------------------------------------------------------------------------
  def new_page(text, pos)
    contents.clear
    draw_face($game_message.face_name, $game_message.face_index, 0, 0) if $game_temp.bust_name.empty?
    reset_font_settings
    pos[:x] = new_line_x
    pos[:y] = 0
    pos[:new_x] = new_line_x
    pos[:height] = calc_line_height(text)
    clear_flags
  end
end
[/pre]
用法
在"Busts"文件夹里面命名半身像,比如名字是:Actor1_0 则代表这个会自动替换脸图Actor1中的0号(就是拉尔夫)
在句尾打[next]会进入不撤出半身像模式、[end]会结束该模式

点评

另外只要默认加密打包这个脚本就显示不了半身像  发表于 2014-9-6 12:02
一看标题就知道是LBQ……  发表于 2013-6-30 11:31

评分

参与人数 5星屑 +487 收起 理由
一摸多汁 + 30 希望改进
1715063941 + 7 2或乃好
小学生 + 10 转载
芙蕾娅 + 140 挺不错的
feizhaodan + 300 奖赏条例

查看全部评分

『我只是一个正在潜心修炼的渣乐师罢了』
Dear Time\(^o^)/~


假如上面的图片挂了的话麻烦各位去发个帖 @ 一下 orzFly 让他修复 deartime
梦石
0
星屑
50
在线时间
137 小时
注册时间
2012-8-27
回帖
86
发表于 2013-6-30 09:12:55 来自手机 | 显示全部楼层
好棒,马克一个。正需要这个呢
回复

使用道具 举报

梦石
0
星屑
95
在线时间
317 小时
注册时间
2013-2-19
回帖
26
发表于 2013-7-26 03:59:14 | 显示全部楼层
如何在某些对话中不需要半身像,半身像为空。那么显示的文字会到后面去,怎么解决这个问题呢?求解...{:2_270:}

点评

LBQ
纯bug....我去修复。。  发表于 2013-7-28 21:23
回复

使用道具 举报

梦石
0
星屑
50
在线时间
10 小时
注册时间
2013-7-22
回帖
6
发表于 2013-7-26 18:49:00 | 显示全部楼层
如果一个头像有几种状态<如害羞、愤怒等>该如何更换?小白一个....
回复

使用道具 举报

梦石
0
星屑
95
在线时间
317 小时
注册时间
2013-2-19
回帖
26
发表于 2013-7-27 00:37:35 | 显示全部楼层
Fin丶 发表于 2013-7-26 18:49
如果一个头像有几种状态该如何更换?小白一个....

这个很简单啊。用PS把表情和半身像拼合一下就行咯!关键是如果在某些对话中不需要半身像时,显示出来的文字怎么靠前一点,不留半身像空出来的地方。
回复

使用道具 举报

梦石
0
星屑
87
在线时间
248 小时
注册时间
2011-7-31
回帖
89
发表于 2013-7-27 17:49:22 | 显示全部楼层
表示用了这个无法存档是怎么回事啊T T……
本来是还不错的脚本的T T
•个人整理游戏素材存放地• -目前已有36个游戏的素材-
————————————————————————————
乙女游戏应援>▽<!!我来也大萌神!!

————————————————————————————
表说我只爱素材啊~(你不就是嘛),其实也有在坑游戏的啦~不过龟速制作ing就是……
嘛明年能做完一条线就不错~
回复

使用道具 举报

梦石
0
星屑
50
在线时间
9 小时
注册时间
2013-7-22
回帖
35
发表于 2013-7-28 11:50:40 | 显示全部楼层
打包时,如何将Busts文件一起打出来?

我真的很想问,也是大家想问的。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
9 小时
注册时间
2013-7-22
回帖
35
发表于 2013-7-28 11:51:03 | 显示全部楼层
本帖最后由 674998887 于 2013-7-28 11:52 编辑

帮忙删掉我这个回复,连续了。
回复

使用道具 举报

唯一的信徒

梦石
0
星屑
1697
在线时间
1359 小时
注册时间
2013-1-29
回帖
1537
 楼主| 发表于 2013-7-28 21:29:08 | 显示全部楼层
JN1412 发表于 2013-7-26 03:59
如何在某些对话中不需要半身像,半身像为空。那么显示的文字会到后面去,怎么解决这个问题呢?求解...{:2_2 ...
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ 半身像对话框 by LBQ
  4. #------------------------------------------------------------------------------
  5. #  一个简单的半身像对话框罢了= =
  6. #------------------------------------------------------------------------------
  7. # ■ 用法一览
  8. #     1:如何将半身像应用到游戏中?
  9. #       ——如果想要把一个脸图替换成半身像,则需要找到这个脸图的编号,比如说拉尔
  10. #           夫,就是Actor1的编号0,之后去在Graphics/Busts这个文件夹里面拷贝一个
  11. #           叫做Actor1_0的图像,这个图像会被当做半身像替换原有图像。
  12. #==============================================================================
  13. $imported ||= {}
  14. $imported[:LBQ_Bust]=true

  15. module LBQ
  16.   module Bust
  17.     FOLDER="Busts"
  18.     SUB1=[/【/,    "\\{\\c[6]-- "]
  19.     SUB2=[/】/,    " --\\c[0]\\}"]

  20.     TEXT_FOR_NEXT="[next]"
  21.     TEXT_FOR_END ="[end]"

  22.     INDENT=255 #半身像的缩进
  23.   end
  24. end

  25. module Cache
  26.   def self.busts(filename)
  27.     load_bitmap("Graphics/#{LBQ::Bust::FOLDER}/", filename)
  28.   end
  29. end



  30. class Sprite_Bust < Sprite_Base
  31.   attr_accessor   :bust_graphics
  32.   attr_accessor   :status

  33.   def initialize(vp=nil)
  34.     super(vp)
  35.     @bust_graphics=nil
  36.     @status=:nothing
  37.   end

  38.   def slide_in
  39.     @status=:sliding_in
  40.   end

  41.   def slide_out
  42.     @status=:sliding_out
  43.     if $game_message.do_not_slide_out
  44.       @status=:slided_out
  45.       set_pos
  46.     end
  47.   end




  48.   def set_pos(slide_in=true)
  49.     self.x=0 - self.bitmap.width
  50.     self.y=Graphics.height-self.bitmap.height

  51.     self.x=0 unless slide_in
  52.   end


  53.   def set_graphics(bust_graphics)
  54.     self.bitmap=Cache.busts(bust_graphics)
  55.   end



  56.   def update
  57.     super
  58.     case @status
  59.     when :nothing
  60.       # Do Nothing
  61.     when :sliding_in
  62.       #Slide In
  63.       self.x+=12
  64.       if self.x>=0
  65.         self.x=0
  66.         @status=:slided_in
  67.       end

  68.     when :sliding_out
  69.       self.x-=12
  70.       if self.x<= -self.bitmap.width
  71.         self.x= -self.bitmap.width
  72.         @status=:slided_out
  73.       end
  74.       #Slide Out
  75.     when :slided_in
  76.       #Slided in
  77.     when :slided_out
  78.       #Sliede out
  79.     end

  80.   end


  81. end


  82. class Game_Message
  83.   attr_accessor   :bust_name
  84.   attr_accessor   :bust
  85.   attr_accessor   :have_bust
  86.   attr_accessor   :do_not_slide_out

  87.   alias lbq_bust_shot_game_message_init initialize
  88.   def initialize
  89.     lbq_bust_shot_game_message_init
  90.     @bust_name=""
  91.     @bust=nil
  92.     @have_bust=false
  93.     @do_not_slide_out=false
  94.   end



  95.   #--------------------------------------------------------------------------
  96.   # ● 添加内容
  97.   #--------------------------------------------------------------------------
  98.   def add(text)
  99.     new_text=text.gsub(LBQ::Bust::SUB1[0],LBQ::Bust::SUB1[1])
  100.     new_text2=new_text.gsub(LBQ::Bust::SUB2[0],LBQ::Bust::SUB2[1])
  101.     if new_text2.include? LBQ::Bust::TEXT_FOR_NEXT
  102.       new_text2.delete!(LBQ::Bust::TEXT_FOR_NEXT)
  103.       $game_message.do_not_slide_out=true
  104.     end

  105.     if new_text2.include? LBQ::Bust::TEXT_FOR_END
  106.       new_text2.delete!(LBQ::Bust::TEXT_FOR_END)
  107.       $game_message.do_not_slide_out=false
  108.     end
  109.     @texts.push(new_text2)
  110.   end
  111. end



  112. class Game_Interpreter
  113.   alias lbq_bust_shot_command_101 command_101
  114.   #--------------------------------------------------------------------------
  115.   # ● 显示文字
  116.   #--------------------------------------------------------------------------
  117.   def command_101
  118.     $game_message.bust=nil
  119.       unless @params[0].empty?
  120.         if File.exist?("Graphics/#{LBQ::Bust::FOLDER}/#{@params[0]}_#{@params[1]}.png")
  121.           $game_message.have_bust=true
  122.         else
  123.           $game_message.have_bust=false
  124.           $game_message.bust_name=""
  125.         end
  126.       end

  127.     unless @params[3] == 2
  128.       $game_message.have_bust=false
  129.     end

  130.     if $game_message.have_bust
  131.       $game_message.bust_name="#{@params[0]}_#{@params[1]}"
  132.       $game_message.bust=nil
  133.       $game_message.bust=Sprite_Bust.new
  134.       $game_message.bust.set_graphics($game_message.bust_name)
  135.       $game_message.bust.z=99999
  136.       unless $game_message.do_not_slide_out
  137.         $game_message.bust.set_pos
  138.         $game_message.bust.slide_in
  139.       else
  140.         $game_message.bust.set_pos(false)
  141.         $game_message.bust.slide_in
  142.       end
  143.     end

  144.     lbq_bust_shot_command_101
  145.     if $game_message.have_bust
  146.         $game_message.bust.slide_out
  147.         Fiber.yield until $game_message.bust.status==:slided_out
  148.     end
  149.     $game_message.have_bust=false
  150.     $game_message.bust_name=""

  151.   end


  152.   alias lbq_bust_int_update update
  153.   def update
  154.     lbq_bust_int_update
  155.     $game_message.bust.update unless $game_message.bust.nil?
  156.   end

  157. end


  158. class Window_Message
  159.   #--------------------------------------------------------------------------
  160.   # ● 获取换行位置
  161.   #--------------------------------------------------------------------------
  162.   def new_line_x
  163.     value=0
  164.     value=112 unless $game_message.face_name.empty?
  165.     unless $game_message.face_name.empty? && $game_message.bust_name.empty?
  166.       value=LBQ::Bust::INDENT
  167.     end
  168.    
  169.     return value
  170.   end
  171. end


  172. class Window_Message
  173.   #--------------------------------------------------------------------------
  174.   # ● 翻页处理
  175.   #--------------------------------------------------------------------------
  176.   def new_page(text, pos)
  177.     contents.clear
  178.     draw_face($game_message.face_name, $game_message.face_index, 0, 0) if $game_message.bust_name.empty?
  179.     reset_font_settings
  180.     pos[:x] = new_line_x
  181.     pos[:y] = 0
  182.     pos[:new_x] = new_line_x
  183.     pos[:height] = calc_line_height(text)
  184.     clear_flags
  185.   end
  186. end
复制代码
理论上应当修复完毕,对于这个不便深表歉意
『我只是一个正在潜心修炼的渣乐师罢了』
Dear Time\(^o^)/~


假如上面的图片挂了的话麻烦各位去发个帖 @ 一下 orzFly 让他修复 deartime
回复

使用道具 举报

梦石
0
星屑
95
在线时间
317 小时
注册时间
2013-2-19
回帖
26
发表于 2013-7-28 21:55:57 | 显示全部楼层
LBQ 发表于 2013-7-28 21:29
理论上应当修复完毕,对于这个不便深表歉意

那个在特定对话下无需立绘,文字靠后留出立绘位置的问题,昨晚看了看脚本,自己也尝试改了一下。虽然和你的这个有点不一样,但也达到了预期的效果。非常感谢你的脚本,之前还一直在为立绘对话烦恼呐。 嘻嘻...
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部