幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2310|回复: 10

[RMVX] 脚本编辑器的问题

[复制链接]

24

主题

74

帖子

816

积分

⑤进阶

积分
816
发表于 2007-9-18 22:31:50 | 显示全部楼层 |阅读模式
请问:脚本编辑器里的脚本是如何执行的?我好像没看见什么地方有调用的语句,怎么随便添加一个脚本都能执行呢?
回复

使用道具 举报

38

主题

3468

帖子

1

积分

超级版主

传说中的Bunny火神~!

Rank: 8Rank: 8

积分
1
发表于 2007-9-18 22:40:22 | 显示全部楼层
最后那个Main就调用了其中的Scene_Title,然后在Scene_Title里面再调用其他的。如果没有被调用,放那里也没有作用。
我突然发现,我是一个很幸运的好人。老婆真好~ 点我进入JQ(激情)教程范例收集!
回复 支持 反对

使用道具 举报

24

主题

74

帖子

816

积分

⑤进阶

积分
816
 楼主| 发表于 2007-9-19 09:49:58 | 显示全部楼层
嗯。那么请问,像如下的这段脚本为什么贴在脚本编辑器中就能执行了呢?没看见在哪儿有调用的呀。它跟系统是怎样联系起来的呢?谢谢。
#=========================================================================
# ■ 续行符文章连辍显示 by SailCat
#=========================================================================
class Window_Message
alias sailcat_refresh refresh
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
   lines = 0
   $game_temp.message_text.each {lines += 1}
   lines = 4 if lines < 4
   self.height = lines * 32 + 32
   self.contents = Bitmap.new(width - 32, height - 32)
   reset_window
   sailcat_refresh
end
#--------------------------------------------------------------------------
# ● 设置窗口位置与不透明度
#--------------------------------------------------------------------------
def reset_window
   if $game_temp.in_battle
     self.y = 16
   else
     case $game_system.message_position
     when 0  # 上
       self.y = 16
     when 1  # 中
       self.y = 240 - self.height / 2
     when 2  # 下
       self.y = 464 - self.height
     end
   end
   if $game_system.message_frame == 0
     self.opacity = 255
   else
     self.opacity = 0
   end
   self.back_opacity = 160
end
end
class Interpreter
#--------------------------------------------------------------------------
# ● 显示文章
#--------------------------------------------------------------------------
def command_101
   # 另外的文章已经设置过 message_text 的情况下
   if $game_temp.message_text != nil
     # 结束
     return false
   end
   # 设置信息结束后待机和返回调用标志
   @message_waiting = true
   $game_temp.message_proc = Proc.new { @message_waiting = false }
   # message_text 设置为 1 行
   $game_temp.message_text = @list[@index].parameters[0] + "\\n"
   line_count = 1
   # 最大 4 行
   line_max = 4
   # 循环
   loop do
     # 下一个事件指令为文章两行以上的情况
     if @list[@index+1].code == 401
       # message_text 添加到第 2 行以下
       $game_temp.message_text += @list[@index+1].parameters[0] + "\\n"
       line_count += 1
     # 下一个事件指令为显示文章,且本行末尾有续行标记的情况
     elsif @list[@index+1].code == 101 and @list[@index].parameters[0][-2, 2] == " _"
       # 如果已经达到 12 行就返回
       if line_count == 12
         # 清除续行标记
         $game_temp.message_text.gsub!(/ _$/, "")
         # 继续
         return true
       end
       # message_text 添加到第 2 行以下
       $game_temp.message_text += @list[@index+1].parameters[0] + "\\n"
       line_count += 1
       # 增加 4 行空间,最多 12 行
       line_max += 4 if line_max < 12
     # 事件指令不在文章两行以下的情况
     else
       # 如果本行末尾有续行标记则增加到 12 行
       if @list[@index].parameters[0][-2, 2] == " _"
         line_max = 12
       end
       # 下一个事件指令为显示选择项的情况下
       if @list[@index+1].code == 102
         # 如果选择项能收纳在画面里
         if @list[@index+1].parameters[0].size <= line_max - line_count
           # 推进索引
           @index += 1
           # 设置选择项
           $game_temp.choice_start = line_count
           setup_choices(@list[@index].parameters)
         end
       # 下一个事件指令为处理输入数值的情况下
       elsif @list[@index+1].code == 103 or
         # 如果数值输入窗口能收纳在画面里
         if line_count < line_max
           # 推进索引
           @index += 1
           # 设置输入数值
           $game_temp.num_input_start = line_count
           $game_temp.num_input_variable_id = @list[@index].parameters[0]
           $game_temp.num_input_digits_max = @list[@index].parameters[1]
         end
       end
       # 清除续行标记
       $game_temp.message_text.gsub!(/ _$/, "")
       # 继续
       return true
     end
     # 推进索引
     @index += 1
   end
end
end
回复 支持 反对

使用道具 举报

550

主题

9117

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2007-9-19 09:56:51 | 显示全部楼层
alias sailcat_refresh refresh

你没有看到这个的么?
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

24

主题

74

帖子

816

积分

⑤进阶

积分
816
 楼主| 发表于 2007-9-19 10:05:17 | 显示全部楼层
看到了,但我认为这只是取了个别名而已,并没有看到对它的调用啊。我对这个脚本编辑器的运行机制很不理解,所以想弄个清楚,所以希望能各位高手的耐心指教。谢谢了~
回复 支持 反对

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2007-9-19 10:25:17 | 显示全部楼层
alias sailcat_refresh refresh
这个别名就把脚本对refresh的调用全部转到sailcat_refresh上来了.
你可以写个简单的ruby脚本来单独验证这样的设计思路.
ruby中排在后面的声明会替代前面的声明.
え~え~お!!!
回复 支持 反对

使用道具 举报

24

主题

74

帖子

816

积分

⑤进阶

积分
816
 楼主| 发表于 2007-9-19 10:57:27 | 显示全部楼层
好的,谢谢shawind 。我试试。
回复 支持 反对

使用道具 举报

550

主题

9117

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2007-9-19 12:45:29 | 显示全部楼层
原来是不知道alias是干什么的。。。。 [s:5]
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

24

主题

74

帖子

816

积分

⑤进阶

积分
816
 楼主| 发表于 2007-9-19 13:07:21 | 显示全部楼层
呵呵……见笑了,总觉得这里面的脚本不太好理解。不知道能不能推荐一本比较系统的讲解rpg脚本的书呢?
回复 支持 反对

使用道具 举报

550

主题

9117

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2007-9-19 14:33:01 | 显示全部楼层
F1就挺好的。。。

见笑到没有。。。我也是知道没多长时间。。。 [s:5]
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2025-6-21 16:11 , Processed in 0.012063 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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