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

Project1

 找回密码
 注册会员
搜索
查看: 8626|回复: 26
打印 上一主题 下一主题

仿魔兽的replay(录象?)

 关闭 [复制链接]

Lv1.梦旅人

有事烧纸

梦石
0
星屑
154
在线时间
509 小时
注册时间
2005-10-22
帖子
6982

贵宾VX城市地图大赛冠军第1届RMTV比赛冠军第1届TG大赛冠军

跳转到指定楼层
1
发表于 2006-12-7 05:52:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
前言:上次听叶子说的那个录象脚本,感觉很好玩。。今天就做了…… -v-

脚本:replay脚本

作用:可用于制作攻略什么的,在通关之后附带一个通关录象?? - -b

     至于其他的。。。呵呵

     理解清楚了的人就可以随便怎么做了~ 要什么效果就做什么效果~ 呵呵

说明:可参考范例工程进行菜单的制作,现在的脚本没设计制作菜单的,只提供了核心脚本,下载范例 在调式模式下选择 观看录象即可。。 选择新游戏 然后保存之后 再选择观看就可以看到自己刚才玩的了。。。 - -b


点击此处下载范例工程

  1. #==============================================================================
  2. # ■ Kernel
  3. #------------------------------------------------------------------------------
  4. #  Kernel模块。
  5. #==============================================================================

  6. module Kernel
  7.   
  8.   #--------------------------------------------------------------------------
  9.   # ● 别名
  10.   #--------------------------------------------------------------------------
  11.   if @rand_redef.nil?
  12.     alias rand_old rand
  13.     @rand_redef = true
  14.   end
  15.   
  16.   #--------------------------------------------------------------------------
  17.   # ● 重定义
  18.   #--------------------------------------------------------------------------
  19.   def rand(max)
  20.     if $record != nil and $record.mode == "播放"
  21.       return $record.pop
  22.     end
  23.     result = rand_old(max)
  24.     if $record != nil and $record.mode == "录制"
  25.       Input.deal_repeat_key
  26.       $record.push(result)
  27.     end
  28.     return result
  29.   end

  30. end

  31. #==============================================================================
  32. # ■ Input
  33. #------------------------------------------------------------------------------
  34. #  Input模块。
  35. #==============================================================================

  36. module Input
  37.   
  38.   #--------------------------------------------------------------------------
  39.   # ● 记录
  40.   #--------------------------------------------------------------------------
  41.   @press = method("press?") if @press.nil?
  42.   @trigger = method("trigger?") if @trigger.nil?
  43.   @repeat = method("repeat?") if @repeat.nil?
  44.   @dir4 = method("dir4") if @dir4.nil?
  45.   @dir8 = method("dir8") if @dir8.nil?
  46.   
  47.   #--------------------------------------------------------------------------
  48.   # ● 作用函数
  49.   #--------------------------------------------------------------------------
  50.   module_function
  51.   
  52.   #--------------------------------------------------------------------------
  53.   # ● 记数
  54.   #--------------------------------------------------------------------------
  55.   @counts = 0
  56.   
  57.   #--------------------------------------------------------------------------
  58.   # ● 处理重复键
  59.   #--------------------------------------------------------------------------
  60.   def deal_repeat_key
  61.     return if @counts == 0
  62.     $record.push(false,@counts)
  63.     @counts = 0
  64.   end
  65.   
  66.   #--------------------------------------------------------------------------
  67.   # ● 通常01
  68.   #--------------------------------------------------------------------------
  69.   def common01(kind,num)
  70.     if $record != nil and $record.mode == "播放"
  71.       return $record.pop
  72.     end
  73.     result = eval(kind).call(num)
  74.     if $record != nil and $record.mode == "录制"
  75.       if result
  76.         self.deal_repeat_key
  77.         $record.push(result)
  78.       else
  79.         @counts += 1
  80.       end
  81.     end
  82.     return result
  83.   end
  84.   
  85.   #--------------------------------------------------------------------------
  86.   # ● 重定义 press?
  87.   #--------------------------------------------------------------------------
  88.   def press?(num)
  89.     return self.common01("@press",num)
  90.   end
  91.   
  92.   #--------------------------------------------------------------------------
  93.   # ● 重定义 trigger?
  94.   #--------------------------------------------------------------------------
  95.   def trigger?(num)
  96.     return self.common01("@trigger",num)
  97.   end
  98.   
  99.   #--------------------------------------------------------------------------
  100.   # ● 重定义 repeat?
  101.   #--------------------------------------------------------------------------
  102.   def repeat?(num)
  103.     return self.common01("@repeat",num)
  104.   end
  105.   
  106.   #--------------------------------------------------------------------------
  107.   # ● 通常02
  108.   #--------------------------------------------------------------------------
  109.   def common02(kind)
  110.     if $record != nil and $record.mode == "播放"
  111.       return $record.pop
  112.     end
  113.     result = eval(kind).call
  114.     if $record != nil and $record.mode == "录制"
  115.       if result != 0
  116.         self.deal_repeat_key
  117.         $record.push(result)
  118.       else
  119.         @counts += 1
  120.       end
  121.     end
  122.     return result
  123.   end
  124.   
  125.   #--------------------------------------------------------------------------
  126.   # ● 重定义 dir4
  127.   #--------------------------------------------------------------------------
  128.   def dir4
  129.     return self.common02("@dir4")
  130.   end
  131.   
  132.   #--------------------------------------------------------------------------
  133.   # ● 重定义 dir8
  134.   #--------------------------------------------------------------------------
  135.   def dir8
  136.     return self.common02("@dir8")
  137.   end
  138.   
  139. end

  140. #==============================================================================
  141. # ■ Sub_Hash
  142. #------------------------------------------------------------------------------
  143. #  Hash的子类。
  144. #==============================================================================

  145. class Sub_Hash < Hash
  146.   
  147.   #--------------------------------------------------------------------------
  148.   # ● 初始化
  149.   #--------------------------------------------------------------------------
  150.   def initialize
  151.     @pos = 0
  152.   end
  153.   
  154.   #--------------------------------------------------------------------------
  155.   # ● push
  156.   #--------------------------------------------------------------------------
  157.   def push(value)
  158.     self[@pos] = value
  159.     @pos += 1
  160.   end
  161.   
  162.   #--------------------------------------------------------------------------
  163.   # ● shift
  164.   #--------------------------------------------------------------------------
  165.   def shift
  166.     result = self[@pos]
  167.     @pos += 1
  168.     return result
  169.   end
  170.   
  171.   #--------------------------------------------------------------------------
  172.   # ● 更改位置
  173.   #--------------------------------------------------------------------------
  174.   def pos=(pos)
  175.     @pos = pos
  176.   end
  177.   
  178.   #--------------------------------------------------------------------------
  179.   # ● 判断
  180.   #--------------------------------------------------------------------------
  181.   def empty?
  182.     return @pos == self.size
  183.   end
  184.   
  185. end
  186.    
  187. #==============================================================================
  188. # ■ Record
  189. #------------------------------------------------------------------------------
  190. #  录制的类。
  191. #==============================================================================

  192. class Record
  193.   
  194.   #--------------------------------------------------------------------------
  195.   # ● 定义实例变量
  196.   #--------------------------------------------------------------------------
  197.   attr_reader   :mode
  198.   
  199.   #--------------------------------------------------------------------------
  200.   # ● 初始化
  201.   #--------------------------------------------------------------------------
  202.   def initialize
  203.     @mode = "空"
  204.     @infos = Sub_Hash.new
  205.   end
  206.   
  207.   #--------------------------------------------------------------------------
  208.   # ● 开始录制
  209.   #--------------------------------------------------------------------------
  210.   def start
  211.     @mode = "录制"
  212.   end
  213.   
  214.   #--------------------------------------------------------------------------
  215.   # ● 开始播放
  216.   #--------------------------------------------------------------------------
  217.   def play
  218.     @mode = "播放"
  219.     @infos.pos = 0
  220.     @counts = 0
  221.     @kind = nil
  222.     @ended = false
  223.   end
  224.   
  225.   #--------------------------------------------------------------------------
  226.   # ● 播放结束
  227.   #--------------------------------------------------------------------------
  228.   def finish
  229.     @mode = "空"
  230.     p '播放结束'
  231.   end
  232.   
  233.   #--------------------------------------------------------------------------
  234.   # ● push
  235.   #--------------------------------------------------------------------------
  236.   def push(value,num = 1)
  237.     @infos.push([value,num])
  238.   end
  239.   
  240.   #--------------------------------------------------------------------------
  241.   # ● pop
  242.   #--------------------------------------------------------------------------
  243.   def pop
  244.     if @ended
  245.       self.finish
  246.       return
  247.     end
  248.     if @counts == 0
  249.       result = @infos.shift
  250.       @ended = true if @infos.empty?
  251.       @counts = result[1]
  252.       @counts -= 1
  253.       @kind = result[0]
  254.       return @kind
  255.     else
  256.       @counts -= 1
  257.       return @kind
  258.     end
  259.   end
  260.   
  261.   #--------------------------------------------------------------------------
  262.   # ● 记录
  263.   #--------------------------------------------------------------------------
  264.   def write(index = 1)
  265.     save_data(self,"Record/record#{index}.rxdata")
  266.   end
  267.   
  268.   #--------------------------------------------------------------------------
  269.   # ● 暂停
  270.   #--------------------------------------------------------------------------
  271.   def pause
  272.     @mode = "空"
  273.   end
  274.   
  275. end
复制代码


              [本贴由 柳柳 于 2006-12-12 0:14:20 进行了编辑]
神隐中,偶尔诈尸

Lv1.梦旅人

有事烧纸

梦石
0
星屑
154
在线时间
509 小时
注册时间
2005-10-22
帖子
6982

贵宾VX城市地图大赛冠军第1届RMTV比赛冠军第1届TG大赛冠军

2
 楼主| 发表于 2006-12-7 05:52:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
前言:上次听叶子说的那个录象脚本,感觉很好玩。。今天就做了…… -v-

脚本:replay脚本

作用:可用于制作攻略什么的,在通关之后附带一个通关录象?? - -b

     至于其他的。。。呵呵

     理解清楚了的人就可以随便怎么做了~ 要什么效果就做什么效果~ 呵呵

说明:可参考范例工程进行菜单的制作,现在的脚本没设计制作菜单的,只提供了核心脚本,下载范例 在调式模式下选择 观看录象即可。。 选择新游戏 然后保存之后 再选择观看就可以看到自己刚才玩的了。。。 - -b


点击此处下载范例工程

  1. #==============================================================================
  2. # ■ Kernel
  3. #------------------------------------------------------------------------------
  4. #  Kernel模块。
  5. #==============================================================================

  6. module Kernel
  7.   
  8.   #--------------------------------------------------------------------------
  9.   # ● 别名
  10.   #--------------------------------------------------------------------------
  11.   if @rand_redef.nil?
  12.     alias rand_old rand
  13.     @rand_redef = true
  14.   end
  15.   
  16.   #--------------------------------------------------------------------------
  17.   # ● 重定义
  18.   #--------------------------------------------------------------------------
  19.   def rand(max)
  20.     if $record != nil and $record.mode == "播放"
  21.       return $record.pop
  22.     end
  23.     result = rand_old(max)
  24.     if $record != nil and $record.mode == "录制"
  25.       Input.deal_repeat_key
  26.       $record.push(result)
  27.     end
  28.     return result
  29.   end

  30. end

  31. #==============================================================================
  32. # ■ Input
  33. #------------------------------------------------------------------------------
  34. #  Input模块。
  35. #==============================================================================

  36. module Input
  37.   
  38.   #--------------------------------------------------------------------------
  39.   # ● 记录
  40.   #--------------------------------------------------------------------------
  41.   @press = method("press?") if @press.nil?
  42.   @trigger = method("trigger?") if @trigger.nil?
  43.   @repeat = method("repeat?") if @repeat.nil?
  44.   @dir4 = method("dir4") if @dir4.nil?
  45.   @dir8 = method("dir8") if @dir8.nil?
  46.   
  47.   #--------------------------------------------------------------------------
  48.   # ● 作用函数
  49.   #--------------------------------------------------------------------------
  50.   module_function
  51.   
  52.   #--------------------------------------------------------------------------
  53.   # ● 记数
  54.   #--------------------------------------------------------------------------
  55.   @counts = 0
  56.   
  57.   #--------------------------------------------------------------------------
  58.   # ● 处理重复键
  59.   #--------------------------------------------------------------------------
  60.   def deal_repeat_key
  61.     return if @counts == 0
  62.     $record.push(false,@counts)
  63.     @counts = 0
  64.   end
  65.   
  66.   #--------------------------------------------------------------------------
  67.   # ● 通常01
  68.   #--------------------------------------------------------------------------
  69.   def common01(kind,num)
  70.     if $record != nil and $record.mode == "播放"
  71.       return $record.pop
  72.     end
  73.     result = eval(kind).call(num)
  74.     if $record != nil and $record.mode == "录制"
  75.       if result
  76.         self.deal_repeat_key
  77.         $record.push(result)
  78.       else
  79.         @counts += 1
  80.       end
  81.     end
  82.     return result
  83.   end
  84.   
  85.   #--------------------------------------------------------------------------
  86.   # ● 重定义 press?
  87.   #--------------------------------------------------------------------------
  88.   def press?(num)
  89.     return self.common01("@press",num)
  90.   end
  91.   
  92.   #--------------------------------------------------------------------------
  93.   # ● 重定义 trigger?
  94.   #--------------------------------------------------------------------------
  95.   def trigger?(num)
  96.     return self.common01("@trigger",num)
  97.   end
  98.   
  99.   #--------------------------------------------------------------------------
  100.   # ● 重定义 repeat?
  101.   #--------------------------------------------------------------------------
  102.   def repeat?(num)
  103.     return self.common01("@repeat",num)
  104.   end
  105.   
  106.   #--------------------------------------------------------------------------
  107.   # ● 通常02
  108.   #--------------------------------------------------------------------------
  109.   def common02(kind)
  110.     if $record != nil and $record.mode == "播放"
  111.       return $record.pop
  112.     end
  113.     result = eval(kind).call
  114.     if $record != nil and $record.mode == "录制"
  115.       if result != 0
  116.         self.deal_repeat_key
  117.         $record.push(result)
  118.       else
  119.         @counts += 1
  120.       end
  121.     end
  122.     return result
  123.   end
  124.   
  125.   #--------------------------------------------------------------------------
  126.   # ● 重定义 dir4
  127.   #--------------------------------------------------------------------------
  128.   def dir4
  129.     return self.common02("@dir4")
  130.   end
  131.   
  132.   #--------------------------------------------------------------------------
  133.   # ● 重定义 dir8
  134.   #--------------------------------------------------------------------------
  135.   def dir8
  136.     return self.common02("@dir8")
  137.   end
  138.   
  139. end

  140. #==============================================================================
  141. # ■ Sub_Hash
  142. #------------------------------------------------------------------------------
  143. #  Hash的子类。
  144. #==============================================================================

  145. class Sub_Hash < Hash
  146.   
  147.   #--------------------------------------------------------------------------
  148.   # ● 初始化
  149.   #--------------------------------------------------------------------------
  150.   def initialize
  151.     @pos = 0
  152.   end
  153.   
  154.   #--------------------------------------------------------------------------
  155.   # ● push
  156.   #--------------------------------------------------------------------------
  157.   def push(value)
  158.     self[@pos] = value
  159.     @pos += 1
  160.   end
  161.   
  162.   #--------------------------------------------------------------------------
  163.   # ● shift
  164.   #--------------------------------------------------------------------------
  165.   def shift
  166.     result = self[@pos]
  167.     @pos += 1
  168.     return result
  169.   end
  170.   
  171.   #--------------------------------------------------------------------------
  172.   # ● 更改位置
  173.   #--------------------------------------------------------------------------
  174.   def pos=(pos)
  175.     @pos = pos
  176.   end
  177.   
  178.   #--------------------------------------------------------------------------
  179.   # ● 判断
  180.   #--------------------------------------------------------------------------
  181.   def empty?
  182.     return @pos == self.size
  183.   end
  184.   
  185. end
  186.    
  187. #==============================================================================
  188. # ■ Record
  189. #------------------------------------------------------------------------------
  190. #  录制的类。
  191. #==============================================================================

  192. class Record
  193.   
  194.   #--------------------------------------------------------------------------
  195.   # ● 定义实例变量
  196.   #--------------------------------------------------------------------------
  197.   attr_reader   :mode
  198.   
  199.   #--------------------------------------------------------------------------
  200.   # ● 初始化
  201.   #--------------------------------------------------------------------------
  202.   def initialize
  203.     @mode = "空"
  204.     @infos = Sub_Hash.new
  205.   end
  206.   
  207.   #--------------------------------------------------------------------------
  208.   # ● 开始录制
  209.   #--------------------------------------------------------------------------
  210.   def start
  211.     @mode = "录制"
  212.   end
  213.   
  214.   #--------------------------------------------------------------------------
  215.   # ● 开始播放
  216.   #--------------------------------------------------------------------------
  217.   def play
  218.     @mode = "播放"
  219.     @infos.pos = 0
  220.     @counts = 0
  221.     @kind = nil
  222.     @ended = false
  223.   end
  224.   
  225.   #--------------------------------------------------------------------------
  226.   # ● 播放结束
  227.   #--------------------------------------------------------------------------
  228.   def finish
  229.     @mode = "空"
  230.     p '播放结束'
  231.   end
  232.   
  233.   #--------------------------------------------------------------------------
  234.   # ● push
  235.   #--------------------------------------------------------------------------
  236.   def push(value,num = 1)
  237.     @infos.push([value,num])
  238.   end
  239.   
  240.   #--------------------------------------------------------------------------
  241.   # ● pop
  242.   #--------------------------------------------------------------------------
  243.   def pop
  244.     if @ended
  245.       self.finish
  246.       return
  247.     end
  248.     if @counts == 0
  249.       result = @infos.shift
  250.       @ended = true if @infos.empty?
  251.       @counts = result[1]
  252.       @counts -= 1
  253.       @kind = result[0]
  254.       return @kind
  255.     else
  256.       @counts -= 1
  257.       return @kind
  258.     end
  259.   end
  260.   
  261.   #--------------------------------------------------------------------------
  262.   # ● 记录
  263.   #--------------------------------------------------------------------------
  264.   def write(index = 1)
  265.     save_data(self,"Record/record#{index}.rxdata")
  266.   end
  267.   
  268.   #--------------------------------------------------------------------------
  269.   # ● 暂停
  270.   #--------------------------------------------------------------------------
  271.   def pause
  272.     @mode = "空"
  273.   end
  274.   
  275. end
复制代码


              [本贴由 柳柳 于 2006-12-12 0:14:20 进行了编辑]
神隐中,偶尔诈尸

Lv1.梦旅人

Duo是偶的~!

梦石
0
星屑
48
在线时间
16 小时
注册时间
2006-4-4
帖子
1708

第1届RMTV比赛季军

3
发表于 2006-12-7 05:53:39 | 只看该作者
好东东。。万年不来技术区的人来抢沙发~~{/hx}
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

芙罗菲诺保佑<

梦石
0
星屑
50
在线时间
0 小时
注册时间
2005-10-22
帖子
67
4
发表于 2006-12-7 05:54:30 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2006-11-21
帖子
240
5
发表于 2006-12-7 06:00:52 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

66RPG站长

梦石
0
星屑
54
在线时间
615 小时
注册时间
2005-10-10
帖子
5734

RMVX自由创作大赛亚军第2届短篇游戏比赛亚军第5届短篇游戏比赛冠军

6
发表于 2006-12-7 06:24:58 | 只看该作者
哈哈~有意思~
我就说不难吗,叶子还不信~{/qiang}
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
0 小时
注册时间
2006-1-13
帖子
135
7
发表于 2006-12-7 06:27:26 | 只看该作者
挺有意思
回复 支持 反对

使用道具 举报

Lv1.梦旅人

海 关

梦石
0
星屑
50
在线时间
431 小时
注册时间
2006-1-1
帖子
460
8
发表于 2006-12-7 06:30:24 | 只看该作者
暴雪出品,必为精品(魔兽)
夏娜出品,必为精品(-__-这个脚本)
消失中~~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

9
发表于 2006-12-7 07:10:27 | 只看该作者
超强!
已经将Ruby了解道这种地步了!
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
2 小时
注册时间
2005-12-11
帖子
703
10
发表于 2006-12-7 09:05:34 | 只看该作者
等待了好久``这样就可以做帅帅的录象了
<<月亮河>> 一定加油````
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-26 03:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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