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

Project1

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

[已经解决] VX转ACE出现无法勾掉save_game模块函数

[复制链接]

Lv2.观梦者

梦石
0
星屑
495
在线时间
177 小时
注册时间
2006-10-3
帖子
618
跳转到指定楼层
1
发表于 2012-7-3 13:20:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 流川枫 于 2012-7-7 19:34 编辑

RUBY 代码复制
  1. module DataManager
  2.   # 写入两个全局变量
  3.   alias original_le_save_game save_game
  4.   def self.save_game(index)
  5.     self.save_game(index)
  6.     Marshal.dump($le_run,file)
  7.     Marshal.dump($le_close_table,file)
  8.   end
  9. end


提示
Script '' line 317: NameError occurred.

undefined method `save_game' for module `DataManager'

不过确实有这个模块函数的呢啊
在我初学RM的时候觉得脚本是高手的工具,等我学会了编程技术后才发现脚本原来是小孩子的玩具。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
108 小时
注册时间
2012-7-3
帖子
44
2
发表于 2012-7-3 17:50:59 | 只看该作者
  1. module A
  2.   def p_a
  3.     p "a"
  4.   end
  5.   alias 打印a p_a
  6. end
  7. B = A
  8. include B
  9. p_a #=>"a"
  10. 打印a #=>"a"
复制代码
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
495
在线时间
177 小时
注册时间
2006-10-3
帖子
618
3
 楼主| 发表于 2012-7-3 18:28:23 | 只看该作者
Sylvania 发表于 2012-7-3 17:50

你的代码虽然可以运行正确,但是问题不在于此。

存档的代码是在
alias original_le_save_game save_game
这行就报错,就好比你的
alias 打印a p_a
所以下面的代码都无法运行。
在我初学RM的时候觉得脚本是高手的工具,等我学会了编程技术后才发现脚本原来是小孩子的玩具。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
495
在线时间
177 小时
注册时间
2006-10-3
帖子
618
4
 楼主| 发表于 2012-7-3 19:05:00 | 只看该作者
Sylvania 发表于 2012-7-3 17:50
  1. module A
  2.       def self.p_a
  3.         p "a"
  4.       end
  5.       alias 打印a p_a
  6.     end
  7.     B = A
  8.     include B
  9.     p_a #=>"a"
  10.     打印a #=>"a"
复制代码
你运行下这个代码就知道了
在我初学RM的时候觉得脚本是高手的工具,等我学会了编程技术后才发现脚本原来是小孩子的玩具。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
108 小时
注册时间
2012-7-3
帖子
44
5
发表于 2012-7-3 19:06:56 | 只看该作者
本帖最后由 Sylvania 于 2012-7-3 19:17 编辑

module 只是把一堆方法打个包,给予一个命名空间而已,在脚本一开始运行时一定会逐行运行一遍(可以理解为class的实例化)
“alias original_le_save_game save_game”前文没有定义过“save_game”怎么起别名?儿子都没出生呐,就在准备改名字了?

再给你一个例子:
RUBY 代码复制
  1. module A
  2.   def A
  3.     p "B"
  4.   end
  5.   alias B A
  6.   class A
  7.     def initialize
  8.       p "A"
  9.     end
  10.   end
  11. end
  12. include A
  13. A::A.new
  14. A.B

点评

同时去掉 self  发表于 2012-7-3 20:41
我知道啊,但是带了 self 就不可能有别名了,除非在前面声明 module_function  发表于 2012-7-3 20:40
在ace中已经定义了save_game  发表于 2012-7-3 20:29
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
495
在线时间
177 小时
注册时间
2006-10-3
帖子
618
6
 楼主| 发表于 2012-7-3 19:36:23 | 只看该作者
Sylvania 发表于 2012-7-3 19:06
module 只是把一堆方法打个包,给予一个命名空间而已,在脚本一开始运行时一定会逐行运行一遍(可以理解为c ...

你没写过ACE的存档脚本所以
在我初学RM的时候觉得脚本是高手的工具,等我学会了编程技术后才发现脚本原来是小孩子的玩具。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
108 小时
注册时间
2012-7-3
帖子
44
7
发表于 2012-7-3 20:26:28 | 只看该作者
呵呵,你知道我写过多少 Ruby 代码吗?好话不听,那就请你慢慢参悟吧,解决了不妨告知在下一声
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
495
在线时间
177 小时
注册时间
2006-10-3
帖子
618
8
 楼主| 发表于 2012-7-3 20:37:41 | 只看该作者
Sylvania 发表于 2012-7-3 20:26
呵呵,你知道我写过多少 Ruby 代码吗?好话不听,那就请你慢慢参悟吧,解决了不妨告知在下一声 ...
  1. module A
  2.       def self.A
  3.         p "B"
  4.       end
  5.       alias B A
  6.       class A
  7.         def initialize
  8.           p "A"
  9.         end
  10.       end
  11.     end
  12.     include A
  13.     A::A.new
  14.     A.B
复制代码
如果把你的代码改成ACE的就提示以下错误
Script '' line 5: NameError occurred.

undefined method `A' for module `A'

点评

alias只能拿来给已经定义的方法来重新定义。不能直接定义一个类吧。。  发表于 2012-7-3 20:51
在我初学RM的时候觉得脚本是高手的工具,等我学会了编程技术后才发现脚本原来是小孩子的玩具。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
108 小时
注册时间
2012-7-3
帖子
44
9
发表于 2012-7-3 20:47:05 | 只看该作者
本帖最后由 Sylvania 于 2012-7-3 20:47 编辑

我发的代码就是要不加那个 self ,如果不想 include 可以在前面声明 module_function
模块中带有 self 的方法无法起别名,这是我的结论

点评

“模块中带有 self 的方法无法起别名,这是我的结论”一开始你就可以说了。我就是问加self的怎么勾掉的呢啊。 否然就要将save_game和load_game完全重载掉   发表于 2012-7-3 21:05
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
495
在线时间
177 小时
注册时间
2006-10-3
帖子
618
10
 楼主| 发表于 2012-7-3 21:23:54 | 只看该作者
  1. #==============================================================================
  2. # ■ DataManager
  3. #------------------------------------------------------------------------------
  4. #  处理存档。
  5. #==============================================================================
  6. module DataManager
  7.   # 写入两个全局变量
  8.   def self.save_game_without_rescue(index)
  9.     File.open(make_filename(index), "wb") do |file|
  10.       $game_system.on_before_save
  11.       Marshal.dump(make_save_header, file)
  12.       Marshal.dump(make_save_contents, file)
  13.       @last_savefile_index = index
  14.       Marshal.dump($le_run,file)
  15.       Marshal.dump($le_close_table,file)
  16.     end
  17.     return true
  18.   end
  19.   def self.load_game_without_rescue(index)
  20.     File.open(make_filename(index), "rb") do |file|
  21.       Marshal.load(file)
  22.       extract_save_contents(Marshal.load(file))
  23.       reload_map_if_updated
  24.       @last_savefile_index = index
  25.       $le_run         = Marshal.load(file)
  26.       $le_close_table = Marshal.load(file)
  27.     end
  28.     return true
  29.   end
  30. end
复制代码
如果不考虑兼容问题,一开始就知道怎么做了。
但问题还是在于ACE的这种设计貌似更加让脚本容易冲突了呢呀
在我初学RM的时候觉得脚本是高手的工具,等我学会了编程技术后才发现脚本原来是小孩子的玩具。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-6-17 11:24

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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