赞 | 0 |
VIP | 69 |
好人卡 | 0 |
积分 | 1 |
经验 | 48969 |
最后登录 | 2017-3-24 |
在线时间 | 3 小时 |
Lv1.梦旅人 最BT美攻!
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 3 小时
- 注册时间
- 2007-3-7
- 帖子
- 1407
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
关于AVG华丽丽效果报告研究
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 ...自动全屏游戏脚本
==========================
AVG·3 AVG必要原素之快进篇
AVG特点的必要原素
玩过的同志肯定都知道
1快进开关~~你可以把看过的剧情跳过
2去除对话框~~可以光看图片
按确定刚才的对话框出现
3在对话中按ESC会有菜单
随时可以保存读取和回标题
4有回忆功能~~复看上几句的对话
5 CG图鉴~~打通关的图才可以看
不过.....RMXP原有功能并不自带
只能自已搞定了
俺先来说说第一点~快进功能
(其实是后面几个功能太高深~俺自已还没研究通呢
希望高人一起来交流一下经验~~~)
俺是做了个随时按的快进开关
想快就快
想停就停
在选项前自动停下
先建立一个并行事件
我设的是按“A”键(就是SHIFT,Z键)
开关为25
见图1
如果25快进开关--开着
就关闭
$game_system.typing = false
#这个是66版系统的Window_Message自带功能
就是文字一下全显示
光用开关不打这个也是可以的~~
如果25快进开关--关着
开启
$game_system.typing = true
#等待2帧是为了防止连按
然后按F11
脚本Window_Message
ctrl+f
查找一下
if @contents_showing
在下面加上这几行
if $game_switches[25] == true
terminate_message
@wait_count = 2
return
end
#terminate_message就是自动下面的对话
等待2帧是为了不会快进的太恐怖.....
也是为了防错误发生
现在就做好了快进开关了
在对话中按“A”键
就可以随时用了
不过还不完善
接着要做在选项前自动停下的功能
在if @contents_showing这行下面
加上
if $game_temp.choice_max > 0
$game_system.typing = false
$game_switches[25] = false
end
到了选项这边就会自动关闭开关
这个几行一定要加在刚才设的快进开关前面
否则.....会自动跳掉的
好了~~
现在可以去试试这个开关好不好用了
这个只是改几句脚本
就不提供范例下载了
######################################
if @contents_showing
if $game_temp.choice_max > 0
$game_system.typing = false
$game_switches[25] = false
end
if $game_temp.choice_max == 0
self.pause = true
end
if $game_switches[25] == true
terminate_message
@wait_count = 2
return
end
#####################################
俺做的是按CTRL键为快进开关
就是按了自动跳
如果喜欢按着CTRL键跳对话的朋友
真·ZERO有上传过一个脚本的~~
http://rpg.blue/UP_PIC/200707/对话加强脚本范例.zip
靠MAIN那个Window_Message对话脚本就按着CTRL才跳对话
#####################################
握拳~~~为了AVG华丽丽事业~!!
俺会很认真的研究下去的
##########################################
3.2 AVG必要原素之去除对话框
首先要感谢洋娃娃大提供的源文件
帮你写脚本的朋友是NAPO大吗~~
也同样感谢
俺太激动了~~~~终于可以做到这个功能了~~
现公布如何做到这个功能
Scene_Map脚本
查找
@message_window
默认的是在15.36.79行
所有的"@"符号都改成"$"
现在变成
15 $message_window = Window_Message.new
36 $message_window.dispose
79 $message_window.update
然后在
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
# 循环
loop do
#下面打上
if Input.trigger?(Input::CTRL)#按CTRL键
$message_window.visible = $message_window.visible ? false : true#切换显示和不显示模式
end
这样就完成了~~~~
改起来是很方便~
不过就这几句俺这小白就想破头.....
还是懂脚本的好啊~~~
以下是索尔迦·蓝提供的另一个更简单的方法
Scene_Map脚本
是99行的
if $game_temp.message_window_showing 这行下面改成这样
# 显示信息窗口中的情况下
if $game_temp.message_window_showing
if Input.trigger?(Input::L)#这个是翻页键
@message_window.visible = !@message_window.visible
end
return
end
测试可行
这两个方法用其中一个就可以了
#########################
AVG·3.3 对话中随时跳出菜单1
Window_Message里面
if Input.trigger?(Input::B)这行
下面打上
if Input.trigger?(Input::B)
if $game_temp.choice_max > 0
if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
$game_system.se_play($data_system.cancel_se)
$game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
terminate_message
end
else
$scene = Scene_Menu.new
end
end
现在在对话中按ESC键已可以跳出存档菜单了
但是图片会遮住存档菜单
然后在Window_Base脚本23行
找到self.z = 这行
把这个数字改大点吧
俺改成了
self.z = 10000
记的如果你用了鼠标脚本
还要把鼠标的Z也调大一点
现在就没问题了
俺设的是跳出存档画面
可以设成$scene = Scene_Menu.new
就是跳出菜单了
不过要好好改一下你的Menu菜单
RMXP自带的菜单用在AVG游戏上
···想想就很恐怖
做个干净的有存取档和回标题的菜单就可以了
大胆的删吧
俺还要解决几个问题
就是存档是没问题了
但是存好了
对话会向下翻一页(应该要对话不动才对)
不管存不存~~对话都会跳一下····
还有在有选项的地方存档的话
····出现的错误就大鸟~~
会直接跳到事件的开头的对话去....
对话反复了~~~-_-||||
俺也不知道要改哪里~~~
还要再研究讨论一下了
俺再去问几个高人吧
另~~那个用图片做按键的话···
俺试了一下~~光用图片响应脚本是不行
在对话中按图片响应是没法调用公共事件的
还要用地图并行事件调用公共事件才有反应
做法可以参考自制菜单教程
不过有缺点~~
有时还会卡住···
建议还是用脚本的菜单吧
下面为俺改好的AVG专用菜单
是为透明色的~~
#####################################
#==============================================================================
# ■ Scene_Menu
#------------------------------------------------------------------------------
# 处理菜单画面的类。
# AVG专用~~岚整理
#==============================================================================
module XRXS_MP7_Module
def create_spriteset
@spriteset = Spriteset_Map.new
end
def dispose_spriteset
@spriteset.dispose
end
end
class Scene_Menu
#--------------------------------------------------------------------------
# ● 初始化对像
# menu_index : 命令光标的初期位置
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
end
#--------------------------------------------------------------------------
# ● 主处理
#--------------------------------------------------------------------------
def main
# 生成命令窗口
s1 = "存档"
s2 = "取档"
s3 = "返回标题"
s4 = "结束游戏"
@command_window = Window_Command.new(160, [s1, s2, s3, s4])
@command_window.index = @menu_index
@command_window.x = 200
@command_window.y = 200
@command_window.opacity = 160
@command_window.update
# 禁止存档的情况下
if $game_system.save_disabled
# 存档无效
@command_window.disable_item(1)
end
# 执行过渡
Graphics.transition
# 主循环
loop do
# 刷新游戏画面
Graphics.update
# 刷新输入信息
Input.update
# 刷新画面
update
# 如果切换画面就中断循环
if $scene != self
break
end
end
# 准备过渡
Graphics.freeze
# 释放窗口
@command_window.dispose
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
# 刷新窗口
@command_window.update
# 命令窗口被激活的情况下: 调用 update_command
if @command_window.active
update_command
return
end
end
#--------------------------------------------------------------------------
# ● 刷新画面 (命令窗口被激活的情况下)
#--------------------------------------------------------------------------
def update_command
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换的地图画面
$scene = Scene_Map.new
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 命令窗口的光标位置分支
case @command_window.index
when 0 # 存档
if $game_system.save_disabled
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到存档画面
$scene = Scene_Save.new
when 1 # 取档
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到存档画面
$scene = Scene_Load.new
when 2 # 回标题
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到游戏结束画面
$scene = Scene_Title.new
when 3 # 结束游戏
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到游戏结束画面
$scene = nil
end
return
end
end
include XRXS_MP7_Module
alias xrxs_mp7_main main
def main
create_spriteset
xrxs_mp7_main
dispose_spriteset
end
end
#########################
如果是用了这个脚本的话
Scene_Save
$scene = Scene_Menu.new(4)#原是第四选项
要改成
$scene = Scene_Menu.new(1)#现在是第一个选项
确定和取消都要改
Scene_Load
原来
$scene = Scene_Title.new
改成
$scene = Scene_Menu.new(2)
#########################
AVG·3.4 对话中随时跳出菜单2完美版
太感谢了~~~
黑暗之神和莉莉雅姐都提供了解决办法~~~
大谢两位~~~~
这个是俺提问的原贴地址
http://rpg.blue/viewthread.php?tid=63216&page=1
以下是莉莉雅姐的办法~~
俺直接粘了原文:
對話會翻一頁的問題:
因為對話顯示的時候,指令已經跑到對話這一行結束,準備進入下一行了
所以按ESC進入Menu的時候,要把事件解譯器(Interpreter)的index往前挪一位(減1)再存,再回Scene_Map時對話才會重新顯示。
在有選項的地方存檔的話,我實驗過後,應該是腳本的改法在選項的地方沒有處理造成的.......
--
實驗中,首先,你的對話選項裡面會有需要用到ESC作為選項的嗎?
如果沒有的話,我可以乾脆把ESC的選項用途給拿掉....
我這邊是改成:
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
另外Interpreter裡頭
def index
return @index
end
def index=(index)
@index = index
end
def list
return @list
end
(直接把選項裡頭按ESC分歧的項目給略過了。)
P.S. 我是直接開個新專案去實驗的,沒有加上其他腳本~
################################
以下是黑暗之神的做法~~
【问题所在】
跳出地图后,正在执行的内容将完毕,当跳回地图时,自动执行下一条内容,即让我们看到下一页的对话信息,想改成“跳回地图时显示跳出地图时所显示的对话内容”,则
【可解决该问题的方法】
存档、取消菜单等“跳回地图”时,即在
$scene = Scene_Map.new
前加个临时变量,比如加个全局变量
$返回地图对话中 = 0
然后再到Interpreter 2中的[ # 事件命令的功能可以参考 @parameters ]注释前插入:
if $返回地图对话中 != nil
$返回地图对话中 = nil
@index -= 1
return
end
这样跳转回地图时就会显示上一页的对话信息…
工程下载地址:
请搜索KDS为修改过的地方
http://rpg.blue/UP_PIC/200707/kds_message_menu.rar
黑暗之神改的地方比较多...
大家可以看着参考一下
############
以上两个办法都是可行的~~
俺激动了~~~~
终于解决了这个问题了~~
############################
AVG·3.5 关于图片遮住天气
俺找到地方改了
其实只要改一个Z值就行了
Spriteset_Map脚本
这里就是设游戏里所有图片和地图天气的显示
第17行
@viewport2.z = 200
viewport2是指图片显示的端口
viewport1是地图类和天气的
俺在这行的上面加了一行
@viewport1.z = 400
把地图天气类的Z值调的比图片高就行了
不过不做AVG的同志千万不要这么改啊~~
否则在正常地图上是没法显示图片鸟~~~
试了一下····
竟然成功了............
天啊~~~俺烦恼了半天的问题
改个一行就全解决了~!!??
功臣是F1同志~~~
俺仔细看了一下F1的帮助文件
有写到端口显示及图片Z值
果然这个真是万能手册啊~~
大家也要有空多看看
另闪电也发过我短信告诉了我改的正确方法~~
在这里还是要谢谢她的
#################################################
AVG·3.6 跳过标题画面用自制事件标题
这个东东站上其实有很多教学了
俺只是整理在这个总研究中
看起来方便一点
Scene_Title脚本
这个做起来真的很方便
只要大胆的删就行了
33行开始
# 生成标题图形
@sprite = Sprite.new
@sprite.bitmap = RPG::Cache.title($data_system.title_name)
# 生成命令窗口
s1 = "新游戏"
s2 = "继续"
s3 = "退出"
@command_window = Window_Command.new(192, [s1, s2, s3])
@command_window.back_opacity = 160
@command_window.x = 320 - @command_window.width / 2
@command_window.y = 288
这节都不要了
# 继续为有效的情况下、光标停止在继续上
# 无效的情况下、继续的文字显示为灰色
if @continue_enabled
@command_window.index = 1
else
@command_window.disable_item(1)
end
# 演奏标题 BGM
$game_system.bgm_play($data_system.title_bgm)
# 停止演奏 ME、BGS
Audio.me_stop
Audio.bgs_stop
删了~~~
# 释放命令窗口
@command_window.dispose
# 释放标题图形
@sprite.bitmap.dispose
@sprite.dispose
这几行也要删了
上面窗口都删了
拿啥释放啊~~
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
# 刷新命令窗口
@command_window.update
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 命令窗口的光标位置的分支
case @command_window.index
when 0 # 新游戏
command_new_game
when 1 # 继续
command_continue
when 2 # 退出
command_shutdown
end
end
end
这里不能都删了
改成执行新游戏就行了
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
command_new_game
end
好了OK
在主角初始地图做成你的事件标题就行了
这样简单的一个标题脚本就改好鸟~~~
#########################################
AVG·3.7 ...自动全屏游戏脚本
毕竟有人会不知道
俺就把这脚本整理到俺研究里来了
是主站上直接粘来的
脚本功能: 进入游戏的时候模拟按下alt+enter键,自动全屏。
使用方法: 复制全部脚本内容,在Main脚本之前按insert,插入此脚本全部内容。
#=========================================================================
=====
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#=========================================================================
=====
unless $keybd
$keybd = Win32API.new 'user32.dll', 'keybd_event', ['i', 'i', 'l',
'l'], 'v'
$keybd.call 0xA4, 0, 0, 0
$keybd.call 13, 0, 0, 0
$keybd.call 13, 0, 2, 0
$keybd.call 0xA4, 0, 2, 0
end
#=========================================================================
=====
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#=========================================================================
=====
#################################
其它相关研究地址
目录
AVG·1 基础理论与地震
AVG·1.5把太阳换成自已游戏的图标
AVG·2 模糊与光
http://rpg.blue/viewthread.php?tid=60158
AVG·3 AVG必要原素 (预定计划,...)
AVG·3.8 华丽丽版图鉴系统
AVG·3.9 回忆功能
3.9的研究...俺不知能不能研究通了~~
要靠大家的帮助了~
我等几个必要功能都研究通了
会放上一个AVG基础范例的
http://rpg.blue/UP_PIC/200707/AVG研究平装版.rar
现放上一个半成品...AVG研究平装版
已有功能1~6
是用默认系统改的
等回忆系统和CG图鉴系统做好
俺会在66整合系统上改个精装完美版的
[本贴由 叶舞枫 于 2007-8-4 9:54:02 进行了编辑] |
|