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

Project1

 找回密码
 注册会员
搜索
楼主: tranpol
打印 上一主题 下一主题

AVG华丽丽效果报告研究AVG·3跳出菜单完美版成功了!

 关闭 [复制链接]
61
乌有君  发表于 2007-8-4 03:04:47
School Days的杀人结局好啊..美啊..
自杀结局更美...
回复 支持 反对

使用道具

Lv1.梦旅人

梦石
0
星屑
55
在线时间
2 小时
注册时间
2006-11-10
帖子
931
62
发表于 2007-8-4 03:06:43 | 只看该作者
以下引用?????于2007-8-3 19:04:47的发言:

School Days的杀人结局好啊..美啊..
自杀结局更美...

会这么说的人一般都没玩过这游戏或只看过网上流传的视频(茶)
不跑题了,撤......
……………………啊咧?
回复 支持 反对

使用道具 举报

63
乌有君  发表于 2007-8-4 03:08:32
是啊..没玩啊..那天某ACG群里面别人给我发视频,看那喷血的镜头.....
回复 支持 反对

使用道具

Lv1.梦旅人

梦石
0
星屑
50
在线时间
28 小时
注册时间
2005-10-24
帖子
170
64
发表于 2009-6-12 08:00:00 | 只看该作者
真·ZERO有上传过一个脚本的~~
http://rpg.blue/upload_program/files/对话加强脚本范例.zip
你可以看一下




以下引用?????于2007-8-3 18:12:35的发言:

zero给的工程里的那个对话脚本就有这个功能啊,你改改就能用了。



那啥,我是小真。


[本贴由作者于 2007-8-3 18:13:09 最后编辑]

额……LZ说的是按CTRL跳的
我仔细看了一下那个脚本- -跟对话回顾一点关系都没有啊
难道你说的不是这个范例么- -?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
2 小时
注册时间
2006-11-10
帖子
931
65
发表于 2007-8-4 08:25:25 | 只看该作者

唔……选过的选项染色是这个效果么……

谢小夏师傅给偶讲Proc这个冬冬{/hx}顺便踢飞吸收小夏师傅的雷子{/fn}

PS 坚定的言叶控~
……………………啊咧?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

最BT美攻!

梦石
0
星屑
50
在线时间
3 小时
注册时间
2007-3-7
帖子
1407
66
 楼主| 发表于 2007-8-4 10:34:17 | 只看该作者
以下引用小真·爱舞于2007-8-3 8:11:12的发言:


其实我想还想说,你那方法,对于我这习惯了按住ctrl的avg系统的人来说太那啥了...
操作不习惯,而且按住松开,而发现后再按的反应所需速度不是一个级别的。
所以我还是推荐你这样做。
你的那个方法要在地图上放事件,多多少少有些多余。


....-_-6
那个啥~~~要不做成公共事件并行不就好了
俺还是喜欢按了键快进
在选项前停就行了....
呵呵这个就是爱好问题了

现在还不算完美版...
就差回忆系统了...
图鉴系统俺在用事件做...脚本无能啊~~
也许做好可以让高手看看可以改成脚本的不



以下引用Benavii于2007-8-3 14:43:04的发言:

呀,来晚了……改行做这个

还需要完善一下……


{/se}啊啊啊~!!!!!回忆系统~!!!!!!!!
大扑~~~~~
心心眼的等着完善版了~~
骑士の圣堂最终版华丽丽登场~~

http://rpg.blue/viewthread.php?tid=116851
AVG原创自制游戏  
神の大陆出品
神之大陆游戏制作小组唯美为主BT为终(偏BL向)
欢迎来搅合BLOG:http://hi.baidu.com/tranpol
官网:http://tierradesagrado.uueasy.com/
回复 支持 反对

使用道具 举报

Lv1.梦旅人

最BT美攻!

梦石
0
星屑
50
在线时间
3 小时
注册时间
2007-3-7
帖子
1407
67
 楼主| 发表于 2007-8-4 10:39:22 | 只看该作者
以下引用Benavii于2007-8-3 19:06:43的发言:


以下引用?????于2007-8-3 19:04:47的发言:

School Days的杀人结局好啊..美啊..
自杀结局更美...


会这么说的人一般都没玩过这游戏或只看过网上流传的视频(茶)
不跑题了,撤......


{/fd}这游戏俺没玩过~~介绍也没听说过
俺去下看看
俺刚下了E17...



以下引用阁中人于2007-8-3 22:37:00的发言:

额……LZ说的是按CTRL跳的
我仔细看了一下那个脚本- -跟对话回顾一点关系都没有啊
难道你说的不是这个范例么- -?


....那个是按着CTRL键快进
...是跟回顾一点关系也没有
俺在等着Benavii的好消息呢

加油~!!!Benavii~!!
全世界AVG制作人民在期待着你~~!~!
骑士の圣堂最终版华丽丽登场~~

http://rpg.blue/viewthread.php?tid=116851
AVG原创自制游戏  
神の大陆出品
神之大陆游戏制作小组唯美为主BT为终(偏BL向)
欢迎来搅合BLOG:http://hi.baidu.com/tranpol
官网:http://tierradesagrado.uueasy.com/
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
28 小时
注册时间
2005-10-24
帖子
170
68
发表于 2007-8-4 17:23:17 | 只看该作者
以下引用Benavii于2007-8-4 0:25:25的发言:


唔……选过的选项染色是这个效果么……

谢小夏师傅给偶讲Proc这个冬冬顺便踢飞吸收小夏师傅的雷子

PS 坚定的言叶控~


[本贴由作者于 2007-8-4 0:26:03 最后编辑]

是的,就是这种效果- -
虽然说MO2里面还在左右两边加了五角星- -不过这个没所谓啦
好强啊,怎么实现的?
PS...我是先看小说的
所以...唉,怎么世界就死了……喜欢世界……
游戏居然是影片型的- -怪不得有7.76G
回复 支持 反对

使用道具 举报

Lv1.梦旅人

Dancer-

梦石
0
星屑
55
在线时间
76 小时
注册时间
2006-11-9
帖子
3551

开拓者贵宾

69
发表于 2007-8-4 17:59:19 | 只看该作者
发布完毕
http://rpg.blue/web/htm/news803.htm
VIP 4
有更新新新开帖子,嗯
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
2 小时
注册时间
2006-11-10
帖子
931
70
发表于 2007-8-4 19:29:58 | 只看该作者
以下引用阁中人于2007-8-4 9:23:17的发言:
是的,就是这种效果- -
虽然说MO2里面还在左右两边加了五角星- -不过这个没所谓啦
好强啊,怎么实现的?
PS...我是先看小说的
所以...唉,怎么世界就死了……喜欢世界……
游戏居然是影片型的- -怪不得有7.76G

如果愿意的话加个五角星也可以{/gg}
backlog对话倒没什么复杂的,在Window_Message那里打劫到$game_temp.message_text的内容,然后push到一个数组里去就行了。选项上色那里稍微有点麻烦,因为要把$game_temp.choice_proc = Proc.new { |n| @branch[current_indent] = n }变成
      $game_temp.choice_proc = Proc.new do |n|
      @branch[current_indent] = n # 默认的处理
才好单独处理……其实之前我想了另种方法,都没这个直接。

以下是我的做法:

1、在Game_System22行以下加入
  attr_accessor :backlog                  # 回想模式
  attr_accessor :backlog_line             # 回想行数
创建两个可读可写,可以理解为创建两个对象$game_system.backlog $game_system.backlog_line。然后在Game_System39行以下加入
    @backlog = []
    @backlog_line = 0
初始化两个对象。从这里可以看到@backlog是数组,@backlog_line是行数。

2、在Window_Message78行text = $game_temp.message_text以下加入
      backlog = text.clone ——把显示的文字clone下来,不然$game_temp.message_text一清backlog就跟着没了= =
      $game_system.backlog_line += backlog.split(/\n/).size ——数数要显示的文字里有多少个分行符号,有一个符号就有一行,然后把它加到总行数里面
      $game_system.backlog.push(backlog) ——把对话内容push到backlog中
以上劫持工作完毕- -。原本打算在interpreter 3里劫的,后来发现这里更方便……

3、就可以开始写脚本了……比Status界面那一套还简单的脚本,由1个窗口与不超过50行的scene构成 囧
  1. class Window_Backlog < Window_Selectable
  2.   #--------------------------------------------------------------------------
  3.   # ● 初始化目标
  4.   #--------------------------------------------------------------------------
  5.   def initialize
  6.     super(0, 0, 480, 480)
  7.     self.contents = Bitmap.new(width - 32, height - 32)
  8.     refresh
  9.     self.active = false
  10.     self.index = 0
  11.   end
  12.   #--------------------------------------------------------------------------
  13.   # ● 刷新
  14.   #--------------------------------------------------------------------------
  15.   def refresh
  16.     self.contents.clear
  17.     self.contents.font.color = normal_color
  18. #——以下直接搬WindowMessage里的来就行……把显示金钱窗口功能去掉了而已 囧
  19.     x = y = 0
  20.     @item_max = $game_system.backlog_line #——这里就看出行数的有用了……
  21.    self.contents = Bitmap.new(width - 32, row_max * 32)
  22.    for i in 0...$game_system.backlog.size #——逐个单元描绘这个数组的内容
  23.     text = $game_system.backlog[i].clone
  24.       begin
  25.         last_text = text.clone
  26.         text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  27.       end until text == last_text
  28.       text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  29.         $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  30.       end
  31.       # 为了方便、将 "\\\\" 变换为 "\000"
  32.       text.gsub!(/\\\\/) { "\000" }
  33.       # "\\C" 变为 "\001" に、"\\G" 变为 "\002"
  34.       text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  35.       text.gsub!(/\\[Gg]/) { "" }
  36.       # c 获取 1 个字 (如果不能取得文字就循环)
  37.       while ((c = text.slice!(/./m)) != nil)
  38.         # \\ 的情况下
  39.         if c == "\000"
  40.           # 还原为本来的文字
  41.           c = "\\"
  42.         end
  43.         # \C[n] 的情况下
  44.         if c == "\001"
  45.           # 更改文字色
  46.           text.sub!(/\[([0-9]+)\]/, "")
  47.           color = $1.to_i
  48.           if color >= 0 and color <= 7
  49.             self.contents.font.color = text_color(color)
  50.           end
  51.           # 下面的文字
  52.           next
  53.         end
  54.         # 另起一行文字的情况下
  55.         if c == "\n"
  56.           # 刷新选择项及光标的高
  57.           if y >= $game_temp.choice_start
  58.             @cursor_width = [@cursor_width, x].max
  59.           end
  60.           # y 加 1
  61.           y += 1
  62.           x = 0
  63.           # 移动到选择项的下一行
  64.           if y >= $game_temp.choice_start
  65.             x = 8
  66.           end
  67.           # 下面的文字
  68.           next
  69.         end
  70.         # 描绘文字
  71.         self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
  72.         # x 为要描绘文字的加法运算
  73.         x += self.contents.text_size(c).width
  74.       end
  75.     end
  76.   end
  77.   #--------------------------------------------------------------------------
  78.   # ● 刷新光标矩形
  79.   #--------------------------------------------------------------------------
  80. #  def update_cursor_rect
  81. #    if @index < 0
  82. #      self.cursor_rect.empty
  83. #    else
  84. #      self.cursor_rect.set(0, @index * 116, self.width - 32, 96)
  85. #    end
  86. #  end
  87. end
  88. class Scene_Backlog
  89.   #--------------------------------------------------------------------------
  90.   # ● 主处理
  91.   #--------------------------------------------------------------------------
  92.   def main
  93.     # 获取角色
  94.     # 生成状态窗口
  95.     @backlog_window = Window_Backlog.new
  96.     @backlog_window.active = true
  97.     @spriteset = Spriteset_Map.new
  98.     # 执行过渡
  99.     Graphics.transition
  100.     # 主循环
  101.     loop do
  102.       # 刷新游戏画面
  103.       Graphics.update
  104.       # 刷新输入信息
  105.       Input.update
  106.       # 刷新画面
  107.       update
  108.       # 如果画面被切换的话就中断循环
  109.       if $scene != self
  110.         break
  111.       end
  112.     end
  113.     # 准备过渡
  114.     Graphics.freeze
  115.     # 释放窗口
  116.     @backlog_window.dispose
  117.     @spriteset.dispose
  118.   end
  119.   #--------------------------------------------------------------------------
  120.   # ● 刷新画面
  121.   #--------------------------------------------------------------------------
  122.   def update
  123.     @backlog_window.update
  124.     # 按下 B 键的情况下
  125.     if Input.trigger?(Input::B)
  126.       # 演奏取消 SE
  127.       $game_system.se_play($data_system.cancel_se)
  128.       # 切换到菜单画面
  129.       $scene = Scene_Map.new
  130.       return
  131.     end
  132.   end
  133. end
复制代码


以上,一个简单的Backlog系统就做好了。要给被选项加些特效就到第四步……

4、找到Interpreter 1里的setup_choices方法,把$game_temp.choice_proc = Proc.new { |n| @branch[current_indent] = n }变成以下内容:

      $game_temp.choice_proc = Proc.new do |n|
      @branch[current_indent] = n # 默认的处理,一句拆成两句
      # 添加选择项文字
      str = "" #——初始化一下选择项文字的局部变量
      choice = $game_system.backlog[$game_system.backlog.size - 1].split(/\n/) #——取得$game_system.backlog这数组的最后一项。因为新的文字还没有传进来,所以最后一项一定是刚才的选择项。这个choice是形如["是","否"]的一个数组。
      for i in 0...parameters[0].size #——按照选择项的个数循环
        if i == n #——当i选项就是刚才的选项时
          str += "\\c[2]" + choice + "\\c[0]" + "\n" #——组成选项内容字符串,是颜色+被选择的选项内容+颜色变回去+换行符,要加星星的话像加换色符号加在两边就好。
        else
          str += choice + "\n" #——如果不符合,则只是选项内容+换行符
        end
      end
      #——这样循环了一圈下来,str就成为了重组后的最后一项,用它替换掉原本的最后一项
      $game_system.backlog[$game_system.backlog.size - 1] = str

这样就完成了。附范例一个
http://rpg.blue/upload_program/files/backlog.rar

————————————————————————————————————————

目前这个系统还有一个小缺憾,就是它是光标类的窗口,选项条一次选一行看起来不怎么自然。
我想了两种解决办法,一种是每段文字强制4行,这样光标也固定4行的高度;再一种就是干脆把光标除去,在旁边弄一个标志着快进快退和进一行退一行的小窗口,通过选项来滚窗口内容。
……………………啊咧?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-28 11:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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