赞 | 0 |
VIP | 69 |
好人卡 | 0 |
积分 | 1 |
经验 | 48969 |
最后登录 | 2017-3-24 |
在线时间 | 3 小时 |
Lv1.梦旅人 最BT美攻!
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 3 小时
- 注册时间
- 2007-3-7
- 帖子
- 1407
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
AVG华丽丽效果报告研究
AVG·3·继
目录
AVG·3.8 用图片做对话框
AVG·3.9 回忆系统(未完美版)
AVG·3.10 小完美版的华丽丽CG系统
AVG·3.11 关于前几个研究的一些小更正
AVG·3.12 让图片也可以直接用上画面变色和画面震动功能
AVG·3.13 按CTRL键跳对话……
##############
AVG·3.8 用图片做对话框
RMXP默认的对话框象素实在太低了
为了AVG华丽丽的效果
这个一定要改
先做一个漂亮的图片对话框
图1
这是我正在做的AVG游戏
《骑士之圣堂》的图片对话框
边框可以是不透明的
中间用PS调一下诱明度
我是60%左右
你做的时候可以自已看一下效果
一定在调用在游戏里看一下效果
因为有背景图和在PS里只看灰白格背景的效果
差别可是很大啊
俺这个调了N次才决定现在的样子
俺做的尺寸为
580X180
打开脚本
Window_Message
在def initialize下面
打上
#AVG对话框图片背景
$Mbg = Sprite.new
$Mbg.bitmap = Bitmap.new("Graphics/Pictures/AVG研究-对话框")
$Mbg.opacity = 0
$Mbg.x = 40
$Mbg.y = 280
$Mbg.z = 400
然后在def update下面
找到这行
if @now_text != nil and @mid_stop == false
打上
$Mbg.opacity = 200
随着对话的出现而出现对话框图片
我这里设的值是200
你对话框边框不要透明的就设255
PS:
如果照我研究里
对话时随时跳出菜单的方法改过的话
if Input.trigger?(Input::B)
下面
$scene = Scene_Menu.new
这行的上面
这行上面加上
$Mbg.opacity = 0
调用菜单的话对话框图片消失
最后在
Scene_Map脚本里
if $game_temp.message_window_showing
这行下面在end前加上
if $game_temp.message_window_showing
else
$Mbg.opacity = 0
return
end
这样对话框会等到对话都结束再消失
因为要改两个脚本
所以用了全局变量$Mbg做为对话框图片显示
原有的默认对话框要去掉
可以用事件去
也可以直接把原窗口图片改成空白透明
改脚本也行
不过俺这里就不细写了
#############################
AVG·3.9 回忆系统
回忆系统
Benavii大和莉莉雅姐都写了一个给我
太太太太太感谢了~~~~
世上还是好人多啊~~~~~~!!
大抱两只~~~~
因为这个系统对我来说复杂了一点
俺回去研究了半天
稍稍看懂了一点
才敢写在俺的研究报告里面
以下是Benavii大的教学时间~~
Benavii:
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构成 囧
class Window_Backlog < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化目标
#--------------------------------------------------------------------------
def initialize
super(0, 0, 480, 480)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
self.active = false
self.index = 0
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = normal_color
#——以下直接搬WindowMessage里的来就行……把显示金钱窗口功能去掉了而已 囧
x = y = 0
@item_max = $game_system.backlog_line #——这里就看出行数的有用了……
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...$game_system.backlog.size #——逐个单元描绘这个数组的内容
text = $game_system.backlog.clone
begin
last_text = text.clone
text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
end until text == last_text
text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
end
# 为了方便、将 "\\\\" 变换为 "\000"
text.gsub!(/\\\\/) { "\000" }
# "\\C" 变为 "\001" に、"\\G" 变为 "\002"
text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
text.gsub!(/\\[Gg]/) { "" }
# c 获取 1 个字 (如果不能取得文字就循环)
while ((c = text.slice!(/./m)) != nil)
# \\ 的情况下
if c == "\000"
# 还原为本来的文字
c = "\\"
end
# \C[n] 的情况下
if c == "\001"
# 更改文字色
text.sub!(/\[([0-9]+)\]/, "")
color = $1.to_i
if color >= 0 and color <= 7
self.contents.font.color = text_color(color)
end
# 下面的文字
next
end
# 另起一行文字的情况下
if c == "\n"
# 刷新选择项及光标的高
if y >= $game_temp.choice_start
@cursor_width = [@cursor_width, x].max
end
# y 加 1
y += 1
x = 0
# 移动到选择项的下一行
if y >= $game_temp.choice_start
x = 8
end
# 下面的文字
next
end
# 描绘文字
self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
# x 为要描绘文字的加法运算
x += self.contents.text_size(c).width
end
end
end
#--------------------------------------------------------------------------
# ● 刷新光标矩形
#--------------------------------------------------------------------------
# def update_cursor_rect
# if @index < 0
# self.cursor_rect.empty
# else
# self.cursor_rect.set(0, @index * 116, self.width - 32, 96)
# end
# end
end
class Scene_Backlog
#--------------------------------------------------------------------------
# ● 主处理
#--------------------------------------------------------------------------
def main
# 获取角色
# 生成状态窗口
@backlog_window = Window_Backlog.new
@backlog_window.active = true
@spriteset = Spriteset_Map.new
# 执行过渡
Graphics.transition
# 主循环
loop do
# 刷新游戏画面
Graphics.update
# 刷新输入信息
Input.update
# 刷新画面
update
# 如果画面被切换的话就中断循环
if $scene != self
break
end
end
# 准备过渡
Graphics.freeze
# 释放窗口
@backlog_window.dispose
@spriteset.dispose
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
@backlog_window.update
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换到菜单画面
$scene = Scene_Map.new
return
end
end
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/UP_PIC/200707/backlog2.rar
(唯一一点小BUG就是每次会多显示下面一面的对话
和如果用了随时跳出菜单~对话会多记录一次)
B:
我是直接在默认工程里改的,如果跳出菜单的话会多写一次。
可以跳出的时候打开一个开关,在往backlog里写数据那里加个判定,开关打开的时候就不push,然后把开关关闭。
PS 这个是用默认工程改的,因为考虑到,如果照LZ的想法做AVG的话,不必用66加强对话框,自带的功能完全够用;除了\p功能之外,其他基本上是想要什么移植进去就可以了……
###################################
以下为莉莉雅姐做的系统
大抱一下莉莉雅姐~~~~姐姐工作这么忙还帮俺写东东....
莉莉雅:
11:10才從公司的加班中脫身(姐姐~~~俺对不起你....)
這是做完的附件
主要改了Game_Map和Window_Message和Game_System
改的地方有用#lilia mark起來
回憶系統和對話隨時存檔已經寫在一起了......修了一點bug(之前的腳本可能有bug....不過不是很容易發現就是)
P.S. 一定要記得自行美化啊~~這版面實在醜到人神共"泣"......
P.P.S. 忘記說用法:
在對話的時候按page up就會進入回憶模式
在回憶模式可以用page up和page down翻頁
按Esc跳出回憶模式回到對話中
另外選項的地方我沒有特別加美化,只有簡單把選項標示出來而已....這看要怎麼標,方法有很多 ~_~
http://rpg.blue/UP_PIC/200707/莉莉雅版的回忆系统Data.rar
###
修改的地方莉莉雅姐用#lilia标出了
不过...如果直接用在66整合系统里的话
....会出现不明冲突
原因未明....
俺脚本不是很好
不知哪冲了
不过姐姐写的...比B大的深奥(因为B大的口才好吗...6)
俺很多都看不明白...-_-|||
可以做为参考借鉴一下
莉莉雅姐的这版倒是解决了对话向后的问题
用了菜单跳出也可以很完美的显示回忆系统
.....泪~~~为啥有冲突啊~~~~
大家可以一起来看一下
两个系统可以加在一起变成完美版
我现在照着这两个高人的系统改一下
以B大的为主体莉莉雅姐的为参考
修改好再公布
还有就是...上了鼠标脚本感觉会很怪
这个...俺改不了
这篇回忆系统未完待续···请等待完美版
##########################
AVG·3.10 小完美版的华丽丽CG系统
用物品类做的华丽丽CG系统
更正了原来不能用物品的毛病
只用了前几栏物品栏
存CG名和一些CG数据
完全不影响其它的物品显示与使用
新加了可以横向和竖向移动长型CG的功能
适用所有原创美工的华丽丽游戏
功能:
只要你游戏里打通看到过的CG
加入CG系统后重新启动游戏还会显示
详细用法
把你的CG都保存在游戏目录下的
\Graphics\Pictures\CG下面
CG的名称按显示顺序
打在物品栏
例如1号CG(物品)文件为沉湖
就在物品栏1号位的名称上打上沉湖
请不要打错字...
有连套图片的话
就是例如表情小变化变色调之类的一套显示图
在价格上打上这一套图总数
这一套图片的名字也按CG后面加数字就行了
例如:\Graphics\Pictures\CG\沉湖2
没有的话...请不要动价格这栏
新加了可以横向和竖向移动长型CG的功能
物品的HP和SP栏用来放CG的横向宽度和竖向长度
如果是正常版CG就请不要动这两个地方了
横向移动
在HP回复量打上横向移动CG的总宽度(相素为单位...)
默认为左至右
如果要右至左的话
请在HP回复率打上数字1(其实只要不为0就可以了)
竖向移动
在SP回复量打上横向移动CG的总长度(相素为单位...)
默认为上至下
如果要下至上的话
请在SP回复率打上数字1(其实只要不为0就可以了)
设置好所有CG名字和CG数据
在游戏过程中加CG的方法
在事件里写一行脚本
$CGn = (CG物品ID)
如果是1号CG就打
$CGn = 1
再调用29号公共事件就行了
因为不是自动存CG...
所以在游戏中显示好了CG
要记得手动存到CG系统里
现在的系统为
共三面 X 6张 = 可显示18张CG
要加减CG面总数
可以照着事件自已改
加到自已的游戏系统的话
一定要记的
因为地图号的不同
请修改一下30~32公共事件
只要改一下CG1~3页的地图号就行了
改成你现有的地图号
在把脚本里面的CG系统这个小脚本贴到你的系统中
因为现在写了一个CG系统专门类
(其实只是改了下个开关类脚本做的新类)
用这个CG类再调过物品栏的CG名和数据
所以和其它物品的显示使用保存没有一点关系
大家可以放心用
关于背景
要记得如图做两个版的
为啥要这么做呢
是因为原图缩小显示略缩图
如果有横向或竖向的CG
会和旁边的CG的大小一致
加个框就不会有难看的边露出来了
还有发布游戏的话
请将Data下面的CG.rxdata这个文件删了再发布
这个文件就是记录CG的文件
没这个文件的话CG就是空白的~~从头开始记录CG
详细原理自已打开事件和公共事件看吧...
这个小完美版是在俺原有物品CG系统的基础上加工的
用了物品类是为了很方便的编辑CG数据
全是为了方便懒人和脚本小白(也包括俺自已...)
谢谢B大的CG系统和A的MOMOCG系统参考
....不过那脚本看的俺
太晕了~~~
和俺不是一个等级的....OTL
可能等俺啥时进级了
再把俺自已这个物品类CG系统全写成脚本吧
新上传了小完美版CG系统
先加了1~6号CG
这次不会再有人说看不到CG了吧....
演示的第一张CG为正常版
第二张连套CG共2张
第三张竖向上至下
第四张竖向下至上
第五张横向左至右
第六张横向右至左
###
新更新追加缩小图
因为有人说原图缩小速度会慢
缩图请用原CG名加上s保存在同一个CG目录里
默认是用缩图的
如果不用缩图而是用原图缩小的话
在CG第一面第一个事件29号开关关了就行了
更新了的小完美版CG系统下载地址
http://rpg.blue/upload_program/f ... �图CG系统new.rar
强烈推荐有原创美工的游戏
如果是用商业素材的...就不用多此一举了~~
另...用了俺的游戏骑士の圣堂的CG背景和
未完成品CG...(...有点小趴的半成品)
只是为了演示需要
俺的游戏还是以俺的完成品为准-_-
如果要用的话请自已改背景
俺的游戏还没公布
小趴的CG也请不要外传......
#############
AVG·3.11 关于前几个研究的一些小更正
######天气问题新好办法######
阁中人找到了更好的解决办法
阁中人:
Spriteset_Map中
@weather = RPG::Weather.new(@viewport1)
改成
@weather = RPG::Weather.new(@viewport2)
这样天气就可以和图片一起显示了- -
有什么副作用不清楚ING
MO2你玩过吧,经常在人物说话的时候下雨……
所以不可能跑到另一个地图去下雨- -
这样大概可以解决吧。
恩这个办法大好~~
这样就可以同时用地图类和图片了
按我原来的办法的话...地图会遮住图片
另还有雾形文件的显示也是在@viewport1的
如果要AVG里用到雾形文件
同样在这个脚本里的找到
# 生成雾平面
@fog = Plane.new(@viewport1)
改成
@fog = Plane.new(@viewport2)
就可以了
现在连雾显示也没问题了
##########
####
关于3.4跳出菜单完美版莉莉雅姐的小改版
原来那节
我這邊是改成:
Window_Message裡頭同一個地方
if Input.trigger?(Input::B)
if $game_temp.choice_max > 0 && $game_temp.choice_start > 0
$game_temp.choice_max = 0
$game_temp.choice_start = 99
$game_system.map_interpreter.index=$game_system.map_interpreter.index - 2
while($game_system.map_interpreter.list[$game_system.map_interpreter.index].code == 401)
$game_system.map_interpreter.index=$game_system.map_interpreter.index - 1
end
else
$game_system.map_interpreter.index=$game_system.map_interpreter.index - 1
while($game_system.map_interpreter.list[$game_system.map_interpreter.index].code == 401)
$game_system.map_interpreter.index=$game_system.map_interpreter.index - 1
end
end
$scene = Scene_Menu.new
end
现在改为~~:
if Input.trigger?(Input::B)
if $game_temp.choice_max > 0
$game_system.map_interpreter.index=$game_system.map_interpreter.index - $game_temp.choice_max
if $game_temp.choice_start > 0
while($game_system.map_interpreter.list[$game_system.map_interpreter.index].code == 401)
$game_system.map_interpreter.index=$game_system.map_interpreter.index - 1
end
end
$game_temp.choice_max = 0
$game_temp.choice_start = 99
else
$game_system.map_interpreter.index=$game_system.map_interpreter.index - 1
while($game_system.map_interpreter.list[$game_system.map_interpreter.index].code == 401)
$game_system.map_interpreter.index=$game_system.map_interpreter.index - 1
end
end
$scene = Scene_Menu.new
end
按莉莉雅姐的原话:
之前的腳本可能有bug....不過不是很容易發現就是
(.....这个俺也不知原来那版哪有BUG
反正以新的为正确就对了....)
################
AVG.3.12 让图片也可以直接用上画面变色和画面震动功能
俺终于找到地方改了~~~
只要改两行
就完全可以不用很麻烦的手动改图片的变色和震动了
整个画面都通用
在Spriteset_Map脚本
最下面一节
# 设置画面的色调与震动位置
@viewport1.tone = $game_screen.tone
@viewport1.ox = $game_screen.shake
这个地方设置了地图的变色与震动
把这两行复制一下再只要改两个数字
@viewport2.tone = $game_screen.tone
@viewport2.ox = $game_screen.shake
OK!!!现在去看看你的游戏吧~~
用图片画面也可以直接整个画面变色和震荡啦
特别推荐一个亿万大做的震动脚本
这是他的论坛地址
有兴趣可以去看一下
http://1012stars.uu1001.com/read.php?tid=37
觉的自已是一边研究一边推翻以前的研究....
这不知算不算进步的一种...|||
#################################
AVG·3.13 按CTRL键跳对话……
现在经过俺自已的测试证明……
俺3.1说的用并行事件做的快进开关
非常的…………会卡住
………………果然是什么都用脚本解决好啊
用事件的话很容易就出错了死机啥的
所以还是把快进开关改写在脚本里了
小真...果然你是正确的
……俺明明只会做事件的家伙
现在被逼着狂改脚本……
人果然还是要被逼着才会进步……
也是很简单的
只要在Window_Message脚本
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
super
下面打上几行
# 按下CTRL可跳过对话
if @input_number_window == nil and $game_temp.choice_max == 0
terminate_message if Input.repeat?(Input::CTRL)
end
就可以了
@input_number_window == nil
是不在输入数值时
$game_temp.choice_max == 0
和不是选项时
快进开关才可以用
用CTRL键是因为………………
一般AVG游戏都是用CTRL键快进的
所以隐藏对话框俺现在改用SHIFT了
###########################
其它相关研究地址
目录
AVG·1 基础理论与地震
AVG·1.5把太阳换成自已游戏的图标
AVG·2 模糊与光
http://rpg.blue/viewthread.php?tid=60158
AVG·3 AVG必要原素
目录
AVG·3.1 AVG必要原素之快进篇
AVG·3.2 AVG必要原素之去除对话框
AVG·3.3 对话中随时跳出菜单1
AVG·3.4 对话中随时跳出菜单2完美版
AVG·3.5 关于图片遮住天气
AVG·3.6 跳过标题画面用自制事件标题
AVG·3.7 ...自动全屏游戏脚本
http://rpg.blue/viewthread.php?tid=62616 本贴由论坛斑竹影北山人结贴,如楼主认为问题未解决,请重新将此贴编辑为“有事请教”,并回帖叙述疑点即可~ ^-^ |
|