查看: 5092|回复: 8

[胡扯] 我只是想用帖子备个份,不会被删吧?

[复制链接]
梦石
0
星屑
136
在线时间
1050 小时
注册时间
2006-5-3
回帖
602
发表于 2014-12-11 11:51:38 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 gaofei677 于 2014-12-12 09:08 编辑

[pre lang="ruby" line="1"]#==============================================================================
#■ AVG式对话框(未通用化)
#   功能:
#           1. 用图片代替默认对话框
#           2. 额外显示对话者姓名
#           3. 姓名&对话内容自动染色
#==============================================================================

#==============================================================================
# ■ Window_Base
#------------------------------------------------------------------------------
#  游戏中所有窗口的父类
#==============================================================================

class Window_Base < Window
  #--------------------------------------------------------------------------
  # ● 进行控制符的事前变换
  #    在实际绘制前、将控制符替换为实际的内容。
  #    为了减少歧异,文字「\」会被首先替换为转义符(\e)。
  #--------------------------------------------------------------------------
  def convert_escape_characters(text)
    result = text.to_s.clone
    result.gsub!(/\\/)            { "\e" }
    result.gsub!(/\e\e/)          { "\\" }
    result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
    result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
    result.gsub!(/\eN\[(\d+)\]/i) { actor_name($1.to_i) }
    result.gsub!(/\eP\[(\d+)\]/i) { party_member_name($1.to_i) }
    result.gsub!(/\eG/i)          { Vocab::currency_unit }
    result.gsub!(/^\eName\[(.+)\]/i){""}
    @speaker_name = $1.to_s
    result
  end
  #--------------------------------------------------------------------------
  # ● 处理普通文字
  #--------------------------------------------------------------------------
  def process_normal_character(c, pos)
    text_width = text_size(c).width
    talk_color
    draw_text(pos[:x], pos[:y], text_width * 2, pos[:height], c)
    pos[:x] += text_width
  end
  #--------------------------------------------------------------------------
  # ● 角色文字染色
  #--------------------------------------------------------------------------
  def talk_color
    if $has_color_change != true
      case @speaker_name
      when "柔一"
        contents.font.color.set(145,55,0)
      when "坚二"
        contents.font.color.set(165,75,0)
      else
        contents.font.color.set(255,255,255)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 控制符的处理
  #     code : 控制符的实际形式(比如“\C[1]”是“C”)
  #     text : 绘制处理中的字符串缓存(字符串可能会被修改)
  #     pos  : 绘制位置 {:x, :y, :new_x, :height}
  #--------------------------------------------------------------------------
  def process_escape_character(code, text, pos)
    case code.upcase
    when 'C'
      $has_color_change = true
      change_color(text_color(obtain_escape_param(text)))
    when 'I'
      process_draw_icon(obtain_escape_param(text), pos)
    when '{'
      make_font_bigger
    when '}'
      make_font_smaller
    end
  end
  #--------------------------------------------------------------------------
  # ● 绘制内容
  #     args : 与 Bitmap#draw_text 相同
  #--------------------------------------------------------------------------
  def draw_text(*args)
    if contents.font.bold != true
      contents.font.name = "微软雅黑"
      contents.font.bold = true
      contents.font.shadow = true
      contents.font.size = 27
    end
    contents.draw_text(*args)
  end
end

#==============================================================================
# ■ Window_Message
#------------------------------------------------------------------------------
#  显示文字信息的窗口。
#==============================================================================

class Window_Message < Window_Base
  #--------------------------------------------------------------------------
  # ● 初始化对象
  #--------------------------------------------------------------------------
  alias old_initialize initialize
  def initialize
    old_initialize
    creat_bg_pic
  end
  #--------------------------------------------------------------------------
  # ● 获取窗口的高度
  #--------------------------------------------------------------------------
  def window_height
    fitting_height(visible_line_number) + 30
  end
  #--------------------------------------------------------------------------
  # ● 获取背景图片
  #--------------------------------------------------------------------------
  def creat_bg_pic
    @bg_sprite = Sprite.new
    @bg_sprite.x = 15
    @bg_sprite.y = 380
    @bg_sprite.bitmap = Cache.ui("Dialog").clone
    @bg_sprite.visible = false
  end
  #--------------------------------------------------------------------------
  # ● 更新窗口背景
  #--------------------------------------------------------------------------
  alias old_update_background update_background
  def update_background
    old_update_background
    self.opacity = 0
    self.height = 150
    self.x = 25
  end
  #--------------------------------------------------------------------------
  # ● 处理纤程的主逻辑
  #--------------------------------------------------------------------------
  def fiber_main
    $game_message.visible = true
    @bg_sprite.visible = true
    update_background
    update_placement
    loop do
      process_all_text if $game_message.has_text?
      process_input
      $game_message.clear
      @gold_window.close
      Fiber.yield
      $has_color_change = false
      clear_dialog_name
      break unless text_continue?
    end
    close_and_wait
    clear_dialog_name
    @bg_sprite.visible = false
    $game_message.visible = false
    @fiber = nil
  end
  #--------------------------------------------------------------------------
  # ● 处理所有内容
  #--------------------------------------------------------------------------
  def process_all_text
    open_and_wait
    text = convert_escape_characters($game_message.all_text)
    show_dialog_name
    pos = {}
    new_page(text, pos)
    process_character(text.slice!(0, 1), text, pos) until text.empty?
  end
  #--------------------------------------------------------------------------
  # ● 显示对话姓名
  #--------------------------------------------------------------------------
  def show_dialog_name
    @name_viewport = Viewport.new
    @name_string_sprite = Sprite.new(@name_viewport)
    @name_string_sprite.x = -130
    @name_string_sprite.y = 348
    @name_string_sprite.z = 1
    @name_string_sprite.bitmap = Bitmap.new(Graphics.width, Graphics.height)
    if @name_string_sprite.bitmap.font.bold != true
      @name_string_sprite.bitmap.font.name = "微软雅黑"
      @name_string_sprite.bitmap.font.bold = true
      @name_string_sprite.bitmap.font.shadow = true
      @name_string_sprite.bitmap.font.size = 27
    end
    name_color
    @name_string_sprite.bitmap.draw_text(200, 0, 100, 100, @speaker_name)
    if !@speaker_name.empty?
      @name_pic_sprite = Sprite.new(@name_viewport)
      @name_pic_sprite.bitmap = Cache.ui("nameBack").clone
      @name_pic_sprite.x = 15
      @name_pic_sprite.y = 380
      @name_pic_sprite.z = 0
    end
  end
  #--------------------------------------------------------------------------
  # ● 姓名染色
  #--------------------------------------------------------------------------
  def name_color
    case @speaker_name
    when "柔一"
      name_color = Color.new(145,55,0)
    when "坚二"
      name_color = Color.new(165,75,0)
    else
      name_color = Color.new(255,255,255)
    end
    @name_string_sprite.bitmap.font.color.set(name_color)
  end
  #--------------------------------------------------------------------------
  # ● 清除对话姓名
  #--------------------------------------------------------------------------
  def clear_dialog_name
    @name_pic_sprite.bitmap.dispose
    @name_string_sprite.bitmap.dispose
    @name_viewport.dispose
  end
end[/pre]

无聊在办公室写的,回家方便用,既然是水区,这个贴应该不会被删吧?

忽然发现这样发还能大家讨论,真不错。
漏夏同人
《咱的夏天》
下载地址:http://tieba.baidu.com/p/2681607456
人员招募:http://rpg.blue/thread-339747-1-1.html

炎

梦石
0
星屑
98
在线时间
1617 小时
注册时间
2013-8-15
回帖
4322
发表于 2014-12-11 12:08:36 | 显示全部楼层
6r自带的群也能存放东西。
神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦神烦
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-12-11 12:38:33 | 显示全部楼层
要么建一个群组(建议),要么可以发到开水区

点评

建群组有限制···我升到贤者才发现自己可以建第二个群组(之前以为是每个人只能建一个)  发表于 2014-12-11 21:48
+1  发表于 2014-12-11 18:25

评分

参与人数 1星屑 +1 收起 理由
永燃的狂炎 + 1 崇拜

查看全部评分

回复

使用道具 举报

无限の剣制

梦石
0
星屑
10445
在线时间
5019 小时
注册时间
2013-2-28
回帖
4942

开拓者贵宾

发表于 2014-12-11 13:03:58 | 显示全部楼层
没认真看,不过楼主好像忘记释放了呢。

点评

就是雪碧(Sprite)和位图(Bitmap)用完后记得dispose。否则搞不好会爆炸  发表于 2014-12-11 17:55
看不懂是个啥啊  发表于 2014-12-11 16:47
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-12-11 17:47:39 | 显示全部楼层
本帖最后由 taroxd 于 2014-12-11 17:56 编辑


$has_color_change 有点意义不明。为什么是全局?难道不是应该每个窗口的实例分别有一个实例变量么?

还有,别忘了释放

点评

各种卡死就是这么来的  发表于 2014-12-12 00:20
全局变量是之前其他地方用到,就用了全局,后来又没用了,就懒得改了。 释放忘记写了  发表于 2014-12-11 19:13
回复

使用道具 举报

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
回帖
10960

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

发表于 2014-12-11 22:34:00 | 显示全部楼层
表示看不出是XP还是VA,反正肯定不是VX

点评

VA的啦  发表于 2014-12-12 09:04
大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

回复

使用道具 举报

梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
回帖
1643

开拓者

发表于 2014-12-11 22:47:33 | 显示全部楼层
你可以写到空间的日志里

点评

就这里吧,还能讨论,发现挺不错的  发表于 2014-12-12 09:04
空间!,hantai!  发表于 2014-12-11 22:53

评分

参与人数 1星屑 +66 收起 理由
美丽晨露 + 66 我很赞同

查看全部评分


  -fk: -azogi:
回复

使用道具 举报

精灵族の天使<

梦石
0
星屑
1712
在线时间
3039 小时
注册时间
2007-3-16
回帖
33092

开拓者贵宾

发表于 2014-12-12 10:05:06 | 显示全部楼层
移动到技术讨论区或者发布区会有更好的人气哦。

点评

今天的BL帖是不是太提前了些吧  发表于 2014-12-12 10:11
回复

使用道具 举报

梦石
0
星屑
55
在线时间
108 小时
注册时间
2014-3-29
回帖
122
发表于 2014-12-12 10:18:21 | 显示全部楼层
你把论坛当网盘吗?

点评

去读书去  发表于 2014-12-12 10:54
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部