查看: 3216|回复: 2

[已经解决] 半身像脚本的问题

[复制链接]

爪子

梦石
0
星屑
1678
在线时间
882 小时
注册时间
2014-8-28
回帖
1058
发表于 2015-5-21 09:00:02 | 显示全部楼层 |阅读模式

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

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

×
https://rpg.blue/forum.php?mod=viewthread&tid=318068
使用的这个脚本,
但是立绘只能显示在左边,我想做出两个人物对话的效果。怎么可以让半身像可以在右边显示呢?
显示图片的话会在对话框的后面,看着很不舒服。
QQ图片20150521085755.png
QQ图片20150521085810.png
请求帮助。
或者可以提供↓这个网站的脚本和范例也可以。(我下载不了
http://www.rpgmakervxace.net/topic/8756-message-busts/
个人坑《凝聚的祈愿》更新日记
网瘾少女的领域-Lofter
一时骂人一时爽,一直骂人一直爽^o^
梦石
0
星屑
108
在线时间
1006 小时
注册时间
2008-11-9
回帖
1633
发表于 2015-5-21 17:05:07 | 显示全部楼层
本帖最后由 判约之轮 于 2015-5-21 18:29 编辑

使用方法:主立绘和原脚本设置相同,如果要设置在右边显示,那么就打开$right_flag开关
从立绘需要在$target_face中设置文件名,如Actor4_5,不包括后缀名

注意:如果要把第二立绘关闭,一定要调用$target_face=""把它设回空字符串

修正完毕,直接覆盖[pre lang="ruby"]#encoding:utf-8
#==============================================================================
# ■ 半身像对话框 by LBQ
#------------------------------------------------------------------------------
#  一个简单的半身像对话框罢了= =
#------------------------------------------------------------------------------
# ■ 用法一览
#     1:如何将半身像应用到游戏中?
#       ——如果想要把一个脸图替换成半身像,则需要找到这个脸图的编号,比如说拉尔
#           夫,就是Actor1的编号0,之后去在Graphics/Busts这个文件夹里面拷贝一个
#           叫做Actor1_0的图像,这个图像会被当做半身像替换原有图像。
#==============================================================================
# 2013.8.25 => 修复存档不能Bug (感谢小刀
#==============================================================================
$imported ||= {}
$imported[:LBQ_Bust]=true

$right_flag = false
$target_face = ""

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
    @right_flag = false
  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)
    if @right_flag
      self.x = Graphics.width
    else
      self.x = -self.bitmap.width
    end
    self.y=Graphics.height-self.bitmap.height
    unless slide_in
      if @right_flag
        self.x = Graphics.width - self.bitmap.width
      else
        self.x = 0
      end
    end
  end

  def set_right
    @right_flag = true
  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
      if @right_flag
        self.x-=12
      else
        self.x+=12
      end
      if ((self.x <= (Graphics.width - self.bitmap.width)) && @right_flag)
        self.x = Graphics.width - self.bitmap.width
        @status=:slided_in
      elsif (self.x>=0 && !@right_flag)
        self.x=0
        @status=:slided_in
      end

    when :sliding_out
      if @right_flag
        self.x+=12
      else
        self.x-=12
      end
      if self.x >= Graphics.width && @right_flag
        self.x = Graphics.width
        @status=:slided_out
      elsif self.x <= -self.bitmap.width && !@right_flag
        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   :tarface
  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
      
      if $target_face != ""
        if File.exist?("Graphics/#{LBQ::Bust::FOLDER}/#{$target_face}.png")
          $game_temp.tarface = Sprite_Bust.new
          $game_temp.tarface.bitmap = Cache.busts($target_face)
          $game_temp.tarface.z=99999
        end
      end
        
      unless $game_temp.do_not_slide_out
        $game_temp.bust.set_right if $right_flag
        $game_temp.bust.set_pos
        $game_temp.bust.slide_in
        if $target_face != ""
          $game_temp.tarface.set_right unless $right_flag
          $game_temp.tarface.set_pos
          $game_temp.tarface.slide_in
        end
      else
        $game_temp.bust.set_right if $right_flag
        $game_temp.bust.set_pos(false)
        $game_temp.bust.slide_in
        if $target_face != ""
          $game_temp.tarface.set_right unless $right_flag
          $game_temp.tarface.set_pos(false)
          $game_temp.tarface.slide_in
        end
      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
        if $target_face != ""
          $game_temp.tarface.slide_out
          Fiber.yield until $game_temp.tarface.status==:slided_out
        end
    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?
    if $target_face != ""
      $game_temp.tarface.update unless $game_temp.tarface.nil?
    end
  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
    if $right_flag && $target_face==""
      pos[:x] = 0
      pos[:new_x] = 0
    else
      pos[:x] = LBQ::Bust::INDENT  
      pos[:new_x] = LBQ::Bust::INDENT
    end
    pos[:y] = 0
    pos[:height] = calc_line_height(text)
    clear_flags
  end
end
[/pre]

点评

好的好的  发表于 2015-5-21 19:18
事件最后一页有脚本选项啊,比如在某一句对话前后分别加上$target_face="Actor4_5"和$target_face="",那么就只有这一句对话会显示第二张立绘  发表于 2015-5-21 19:11
_(:з」∠)_哦 对了 我突然想起来 我没看懂其实。  发表于 2015-5-21 19:07
谢谢!我去试试~  发表于 2015-5-21 19:06
更新提醒,这样的绘制方式再次涨姿势  发表于 2015-5-21 18:30

评分

参与人数 2星屑 +120 梦石 +1 收起 理由
VIPArcher + 1 认可答案
莫言别离 + 120 认可答案

查看全部评分

回复

使用道具 举报

爪子

梦石
0
星屑
1678
在线时间
882 小时
注册时间
2014-8-28
回帖
1058
 楼主| 发表于 2015-5-21 19:48:18 | 显示全部楼层
然而并不行。。
QQ图片20150521194818.png
木有了。。

点评

_(:з」∠)_好复杂 不弄啦。。我还是老老实实在左边显示吧。  发表于 2015-5-21 20:27
我个人觉得估计是没有找到文件,或者变量没有成功赋值闹的  发表于 2015-5-21 20:00
然而我还是修改一下范例工程传上来好了(远目):http://pan.baidu.com/s/1c0fdI3e  发表于 2015-5-21 19:59
这是用了二号立绘的。  发表于 2015-5-21 19:57
原先的立绘无法显示?还是?  发表于 2015-5-21 19:54
个人坑《凝聚的祈愿》更新日记
网瘾少女的领域-Lofter
一时骂人一时爽,一直骂人一直爽^o^
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部