Project1

标题: 新手半教学+一些诡异思路... [打印本页]

作者: 天狼星1110    时间: 2007-4-15 22:22
标题: 新手半教学+一些诡异思路...
呃...教学做不下去了{/lh}发现自己果然还真是那种缺乏恒心的人饿...
此帖纯作为半教学+思路讨论{/hx}对象和上次一样,新手为主..


http://rpg.blue/upload_program/files/邪恶工程tlx1110.rar


↑相关工程,没什么用的说

Data 文件的认识
Data文件夹内的以XXX.rxdata格式保存的文件记载了RM工程内的所有数据,包括数据库,地图和脚本。具体对应内容想必能看懂英文的基本上能了解了吧。
防止Data文件出错
Data文件会由于非法操作导致文件原格式丢失,以至于无法正常打开。建议养成及时备份的习惯,当RM提示文件出错时可以逐个尝试着用备份文件替代Data文件夹下的文件,尽可能把损失减少到最小。在这里提醒一点,就是Save文件同样会出现文件出错,其表现为运行存档/读取脚本时发生脚本错误,以至于不能正常存档/读取进度。因为Save文件比之Data文件不重要得多了,故此问题解决方法为直接删除Save文件。
自建Data文件
这里只引用一个诡异使用手段,即跨存档读取角色
◆显示选择项:储存角色数据,读取角色数据
[储存角色数据]的场合
◆脚本:file = File.open("1.rxdata","wb")
        Marshal.dump($game_actors,file)
        file.close
[读取角色数据]的场合
◆替换队员:[阿尔西斯]离开
◆脚本:file = File.open("1.rxdata","wb")
        Marshal.dump($game_actors,file)
        file.closeif FileTest.exist?("1.rxdata")
        file = File.open("1.rxdata","rb")
        $game_actors = Marshal.load(file)
        file.close
        else p"无存储记录"
        end
◆替换队员:[阿尔西斯]加入  #队员离开与加入是为了刷新角色数据,注意不要初始化

分歧结束


这样,在游戏中就可以实现不同存档内的角色读取功能,一般游戏不会用上,但自由RPG可以考虑作搞怪用。应用实例见范例工程。

原本我的构想是跨存档调用一些变量,但直接读取会导致原数据于游戏中被覆盖。于是我打算利用IO类的文本输入输出功能实现此设想。然而由于本人实在没研究过RGSS的IO,加之以技术有限,故此只提出制作思路,有待达人尝试。
1.利用IO读/写功能
  具体模式同范例,初期由玩家建立新角色N。然后角色去完成一项任务,反馈一个值保存到变量A中。
  把角色名称,行走图编号,及变量A保存到1.txt中
  新开游戏,重新建立一个角色K
  在特殊地点如广场位置设置公告栏,在那里可以看见“这个城市曾被一个叫做N的英雄拯救”之类的词
  大概设想就是这样,但感觉可以拓展很多,如保存角色N退出游戏前的坐标位置,让进入角色A的存档时能在该位置看见角色N以NPC的形态出现。或者还可以添加别的功能,如在创建人物的时候取名角色K与N重名时,提示“该姓名已被注册,请另行选择”之类的诡异东东。我是真的做不来了,但我知道设想是应该可行的,所以还是拜托给达人们去实现吧...
  
利用File做一些诡异的东东
1.卸载功能
事件内写如下:
File.delete("Data/Map001.rxdata")
File.delete("Data/Map000.rxdata")
File.delete("Data/MapInfos.rxdata")
File.delete("Audio/SE/042-Knock03.ogg")
File.delete("Game.ini")
File.delete("Data/Scripts.rxdata")
File.delete("Game.rxproj")
p"自行毁灭完毕"
exit

2.利用重命名功能搞怪
不知道是不是本人RP问题,用了File.rename(from, to)的形式试了好几次不能成功重命名文件,故此还是只提出设想。
首先可以完善之前的“跨存档人物仓库”(-__-||姑且让我这么叫吧)。在分歧下添加一栏:交换角色数据
然后实行以下过程:
用角色K进存档
事件脚本处理
角色K的数据保存到2.rxdata
读取角色N的1.rxdata
重命名2.rxdata为3.rxdata
重命名1.rxdata为2.rxdata
重命名3.rxdata为1.rxdata

另外我想利用File.rename(from, to)这个东东的另一个文件移动功能是否可以实现更诡异的功能呢?比如在加密游戏内设置一个NPC,和他对话,然后执行解密-__-||


一些小搞怪手段
1.利用File.mtime("Data/actors.rxdata")
这个东西,通过判断文件更新时间可以做出很多诡异东西,比如结合自毁程序制作一次性的游戏-___-||这个估计是无聊了点..
2.删除角色初期位置标识,进游戏时出现了什么?提示找不到Map000.rxdata
  这说明地图编号是个变量,当未赋值时为0
  这样我们就可以做出诡异的东西,如在制作完第一张地图的时候保存文件,然后到Data文件夹里更改Map001.rxdata名为Map000.rxdata,然后在RM里删除Map001.rxdata的地图和角色初期位置标志。再进游戏的时候,一切正常,只是在RM里找不到这张图了。这样我们还可以诡异一点,如在Map000中给一个自定义变量赋值为10,然后在脚本编辑器里添加当此变量小于10时运行自毁程序(或别的什么提示也可以-__-),防止了他人改变游戏中角色位置(至少我玩别人游戏时经常干这个,比如从剧情中间跳过前面直接开始),不过对于企图修改游戏的人来说,这个要避免也简单。
   进一步延伸,利用读取Data文件的手段可以将所有地图隐藏之-__-||开始有点像传说中的的半加密了..





作者: 天狼星1110    时间: 2007-4-15 22:22
标题: 新手半教学+一些诡异思路...
呃...教学做不下去了{/lh}发现自己果然还真是那种缺乏恒心的人饿...
此帖纯作为半教学+思路讨论{/hx}对象和上次一样,新手为主..


http://rpg.blue/upload_program/files/邪恶工程tlx1110.rar


↑相关工程,没什么用的说

Data 文件的认识
Data文件夹内的以XXX.rxdata格式保存的文件记载了RM工程内的所有数据,包括数据库,地图和脚本。具体对应内容想必能看懂英文的基本上能了解了吧。
防止Data文件出错
Data文件会由于非法操作导致文件原格式丢失,以至于无法正常打开。建议养成及时备份的习惯,当RM提示文件出错时可以逐个尝试着用备份文件替代Data文件夹下的文件,尽可能把损失减少到最小。在这里提醒一点,就是Save文件同样会出现文件出错,其表现为运行存档/读取脚本时发生脚本错误,以至于不能正常存档/读取进度。因为Save文件比之Data文件不重要得多了,故此问题解决方法为直接删除Save文件。
自建Data文件
这里只引用一个诡异使用手段,即跨存档读取角色
◆显示选择项:储存角色数据,读取角色数据
[储存角色数据]的场合
◆脚本:file = File.open("1.rxdata","wb")
        Marshal.dump($game_actors,file)
        file.close
[读取角色数据]的场合
◆替换队员:[阿尔西斯]离开
◆脚本:file = File.open("1.rxdata","wb")
        Marshal.dump($game_actors,file)
        file.closeif FileTest.exist?("1.rxdata")
        file = File.open("1.rxdata","rb")
        $game_actors = Marshal.load(file)
        file.close
        else p"无存储记录"
        end
◆替换队员:[阿尔西斯]加入  #队员离开与加入是为了刷新角色数据,注意不要初始化

分歧结束


这样,在游戏中就可以实现不同存档内的角色读取功能,一般游戏不会用上,但自由RPG可以考虑作搞怪用。应用实例见范例工程。

原本我的构想是跨存档调用一些变量,但直接读取会导致原数据于游戏中被覆盖。于是我打算利用IO类的文本输入输出功能实现此设想。然而由于本人实在没研究过RGSS的IO,加之以技术有限,故此只提出制作思路,有待达人尝试。
1.利用IO读/写功能
  具体模式同范例,初期由玩家建立新角色N。然后角色去完成一项任务,反馈一个值保存到变量A中。
  把角色名称,行走图编号,及变量A保存到1.txt中
  新开游戏,重新建立一个角色K
  在特殊地点如广场位置设置公告栏,在那里可以看见“这个城市曾被一个叫做N的英雄拯救”之类的词
  大概设想就是这样,但感觉可以拓展很多,如保存角色N退出游戏前的坐标位置,让进入角色A的存档时能在该位置看见角色N以NPC的形态出现。或者还可以添加别的功能,如在创建人物的时候取名角色K与N重名时,提示“该姓名已被注册,请另行选择”之类的诡异东东。我是真的做不来了,但我知道设想是应该可行的,所以还是拜托给达人们去实现吧...
  
利用File做一些诡异的东东
1.卸载功能
事件内写如下:
File.delete("Data/Map001.rxdata")
File.delete("Data/Map000.rxdata")
File.delete("Data/MapInfos.rxdata")
File.delete("Audio/SE/042-Knock03.ogg")
File.delete("Game.ini")
File.delete("Data/Scripts.rxdata")
File.delete("Game.rxproj")
p"自行毁灭完毕"
exit

2.利用重命名功能搞怪
不知道是不是本人RP问题,用了File.rename(from, to)的形式试了好几次不能成功重命名文件,故此还是只提出设想。
首先可以完善之前的“跨存档人物仓库”(-__-||姑且让我这么叫吧)。在分歧下添加一栏:交换角色数据
然后实行以下过程:
用角色K进存档
事件脚本处理
角色K的数据保存到2.rxdata
读取角色N的1.rxdata
重命名2.rxdata为3.rxdata
重命名1.rxdata为2.rxdata
重命名3.rxdata为1.rxdata

另外我想利用File.rename(from, to)这个东东的另一个文件移动功能是否可以实现更诡异的功能呢?比如在加密游戏内设置一个NPC,和他对话,然后执行解密-__-||


一些小搞怪手段
1.利用File.mtime("Data/actors.rxdata")
这个东西,通过判断文件更新时间可以做出很多诡异东西,比如结合自毁程序制作一次性的游戏-___-||这个估计是无聊了点..
2.删除角色初期位置标识,进游戏时出现了什么?提示找不到Map000.rxdata
  这说明地图编号是个变量,当未赋值时为0
  这样我们就可以做出诡异的东西,如在制作完第一张地图的时候保存文件,然后到Data文件夹里更改Map001.rxdata名为Map000.rxdata,然后在RM里删除Map001.rxdata的地图和角色初期位置标志。再进游戏的时候,一切正常,只是在RM里找不到这张图了。这样我们还可以诡异一点,如在Map000中给一个自定义变量赋值为10,然后在脚本编辑器里添加当此变量小于10时运行自毁程序(或别的什么提示也可以-__-),防止了他人改变游戏中角色位置(至少我玩别人游戏时经常干这个,比如从剧情中间跳过前面直接开始),不过对于企图修改游戏的人来说,这个要避免也简单。
   进一步延伸,利用读取Data文件的手段可以将所有地图隐藏之-__-||开始有点像传说中的的半加密了..





作者: terryleon    时间: 2007-4-15 22:48
{/hx}有帮助 感谢楼主大人
作者: 美兽    时间: 2007-4-15 23:05
原本我的构想是跨存档调用一些变量,但直接读取会导致原数据于游戏中被覆盖。于是我打算利用IO类的文本输入输出功能实现此设想。


把读取出的变量放出新的全局变量中就好了,RM默认那些变量名不是死定不可变的.




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1