幻想森林

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

[原创]一个$game_variables的研究

[复制链接]

113

主题

866

帖子

7004

积分

⑦老手

pliskin

积分
7004
发表于 2007-1-20 23:17:51 | 显示全部楼层 |阅读模式
一般人会用$game_variables这个变量来写游戏,因为它可以直接用,很方便;但是它的缺点是
不能用在外挂脚本上,因为每个人的变量格设计的都不一样,有什么方法可以解决呢?

首先在class Game_Variables下面加个
         attr_accessor :data
然后呢?
     应该已经明白了吧
     比如:你前些时候写了个小游戏脚本,用了$game_variables[1]..$game_variables[3]
3个变量,而你的新游戏中那3个变量都已经用了,又想在新游戏中用那个小游戏,那就要修改变量的位置,很麻烦。
    而用了以上的方法,我们就可以直接把Game_Variables.data[1,3]记录为一个数组
    a=$game_variables.data[1,3]
      $game_variables[10]=a
以上用的是变量10,实际游戏中会用一个比较大的变量地址,比如999

    然后你就可以放心的用以前写的小游戏了,因为他们都被记录了下来,只要你不动用那个记录变数的变量就好了。
   恢复记录就用
   a=$game_variables[10]
    $game_variables.data[1,3]=a
    来恢复

恩恩,闭门造车了可能,或是火星了 [s:5]
----------------------------------------------
既然变量已经记录了,那么我们就可以对其大动工程了
$game_variables.data[1,9]=[2,4,8,6,6,8]什么意识呢?2,4,6,8代表移动的方向,我们可以直接让1..9变量变成移动方向,然后
     移动一次,变量id+=1,直到移动完毕
当然了,你要自己写移动条件,以及结束条件
----------------------------------------------
     我接触这个软件已经是大3了,忙着毕业;毕业了,忙着找工作;找到工作了,还要忙工作,几乎没有大段大段的时间去研究,只能平时做点小游戏yy,满足自己的制作欲望。而个人又不会脚本,只能用$game_variables来制作小游戏,所以就用了以上的方法
最近,迷上八云紫大婶了
回复

使用道具 举报

38

主题

3468

帖子

1

积分

超级版主

传说中的Bunny火神~!

Rank: 8Rank: 8

积分
1
发表于 2007-1-21 16:35:55 | 显示全部楼层
有没有使用实例…… [s:5]
我突然发现,我是一个很幸运的好人。老婆真好~ 点我进入JQ(激情)教程范例收集!
回复 支持 反对

使用道具 举报

113

主题

866

帖子

7004

积分

⑦老手

pliskin

积分
7004
 楼主| 发表于 2007-1-21 19:14:34 | 显示全部楼层
attr_accessor :data
仅仅是个放大器,把$game_variables的功能放大而已
比如要修改n个数值的变量,以前就写n个算式,但现在可以用
$game_variables.data[1,n]=var来一次性完工

再说一个例子:找幽灵
在game_enemy中有个enemy_name[id]的方法--敌人的名字,用3个变数12,13,14来记录3个敌人的名字(没有就为0),然后推到一个变量14中
  a=$game_variables[11,12,13]
   $game_variables[14]=a
然后去检查变量14,我们就可以知道打了什么敌人了

没有实际的范例,方便而已 [s:1]
最近,迷上八云紫大婶了
回复 支持 反对

使用道具 举报

38

主题

3468

帖子

1

积分

超级版主

传说中的Bunny火神~!

Rank: 8Rank: 8

积分
1
发表于 2007-1-21 19:26:38 | 显示全部楼层
大致明白了,就是一个统计方式……
我突然发现,我是一个很幸运的好人。老婆真好~ 点我进入JQ(激情)教程范例收集!
回复 支持 反对

使用道具 举报

113

主题

866

帖子

7004

积分

⑦老手

pliskin

积分
7004
 楼主| 发表于 2007-1-21 21:05:37 | 显示全部楼层
引用第3楼杀鸡四天王2007-01-21 19:26发表的:
大致明白了,就是一个统计方式……

也就是个数组
游戏中默认有很多数组:凡是可以选择的菜单都是数组,比如标题菜单,物品菜单,变量栏等等
都可以用来记录数据,物品栏本身也可以作为变量来使用,用物品编号和名称一样可以记录数据

去看看array类的功能,就会知道我说的是什么了
但是,$game_variables.data并不使用数组中所有的功能(我也不清楚原因,也许游戏中限制了)
比如push就不能调用。
最近,迷上八云紫大婶了
回复 支持 反对

使用道具 举报

113

主题

866

帖子

7004

积分

⑦老手

pliskin

积分
7004
 楼主| 发表于 2007-1-23 20:52:54 | 显示全部楼层
纠正一个错误:
   要把$game_variables[s,n]存放在$game_variables[x]上,调用的时候有点问题
我也不清楚原因。于是就用最普通的@进行保存
   attr_accessor:var
   @var = []
    然后末尾加个
  def save_var(s,n)
    $game_variables.var = $game_variables.data[s,n]
    end
就好了。
最近,迷上八云紫大婶了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 06:38 , Processed in 0.018404 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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