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

Project1

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

[通用发布] 【自动化】动态变量(让变量功能更加强大)

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1316
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
跳转到指定楼层
1
发表于 2011-10-6 22:15:12 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
注:该脚本的功能完全可以用事件脚本替代。只是为了方便制作而写。




若吐槽,请确认你吐得是真的槽。

纯文本

什么是动态变量呢。
比方说大家在做一个主角等级为XX级以上做什么,以下做什么的条件分歧的时候。
首先要用一个变量来记录角色等级,然后再对变量条件分歧。
这个大家都知道。

当然这是事件可以直接涉及到的地方。

然而实际制作过程当中经常遇到一些事件涉及不到的地方,必须要调用脚本了。
比如说XX装备的名称。XX武器的攻击力等等。这些都必须采用事件脚本了。

动态变量是直接用一个变量绑定一个脚本句子。如  $data_weapons[1].name 1号武器的名称。
将变量绑定以后,就可以直接访问这个值了。比如修改装备的名称,属性等等。

这个脚本配合这个脚本使用非常好用。
贴上脚本

  1. #================================================================
  2. #  Game_Variables
  3. #----------------------------------------------------------------
  4. #   动态变量
  5. #================================================================
  6. =begin
  7. 今天突然发现RM变量名称可以设置40个字符,恩个人觉得这比较高兴地
  8. 动态变量实际上这个名字对不对都不知道。简单地说就是让变量持续跟随者
  9. 某一值这样以后用的时候就可以直接调用,怎么说呢???
  10. 算了!!往下看
  11. 设置变量名,前面可以是备注,以#隔开,后面的写脚本语句
  12. 1号角色的命中率#$game_acotrs[1].hit  

  13. 那么你选择这个变量的时候,就等于选择了这个值。
  14. 当然,如果变量容许的话,是可以反操作的。这个
  15. 太专业了,我不知道怎么说了。
  16. =end
  17. #==============================================================================
  18. # ■ Game_Variables
  19. #------------------------------------------------------------------------------
  20. #  处理变量的类。编入的是类 Array 的外壳。本类的实例请参考 $game_variables。
  21. #==============================================================================
  22. class Game_Variables
  23.   #--------------------------------------------------------------------------
  24.   # ● 初始化对像
  25.   #--------------------------------------------------------------------------
  26.   def initialize
  27.     @data = []
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 获取变量
  31.   #     variable_id : 变量 ID
  32.   #--------------------------------------------------------------------------
  33.   def [](variable_id)
  34.    
  35.     name = $data_system.variables[variable_id] #获取名称
  36.     if name.include? "#"#如果含有#
  37.       s = name.split("#")[1]
  38.       begin
  39.         n = eval(s)
  40.         return n
  41.       rescue
  42.         p s+" 这个变量产生错误!"
  43.       end
  44.     else
  45.       if @data[variable_id] == nil
  46.         return 0
  47.       else
  48.         return @data[variable_id]
  49.       end
  50.     end

  51.   end
  52.   #--------------------------------------------------------------------------
  53.   # ● 设置变量
  54.   #     variable_id : 变量 ID
  55.   #     value       : 变量的值
  56.   #--------------------------------------------------------------------------
  57.   def []=(variable_id, value)
  58.     name = $data_system.variables[variable_id] #获取名称
  59.     if name.include? "#"#如果第一个字符是#
  60.       s = name.split("#")[1]
  61.       begin
  62.        s = s + "= #{value}" #生成新的语句
  63.        eval(s) #执行语句
  64.       
  65.       rescue #如果出错
  66.         p s+" 这个变量产生错误!"#产生提示信息
  67.       end
  68.     else
  69.       if variable_id <= 5000  #原有数据方法
  70.         @data[variable_id] = value
  71.       end
  72.     end
  73.    
  74.    
  75.    
  76.    
  77.    
  78.    
  79.    
  80.    
  81.    
  82.    
  83.    
  84.    
  85.    
  86.    
  87.    
  88.    
  89.    
  90.    
  91.   end
  92. end
复制代码

虽然范例是VX版的,不过脚本XP也能使用(这是真的吗?)

范例工程.rar

243.71 KB, 下载次数: 585

点评

这个回复还要慢慢更新的……您慢慢看。  发表于 2011-10-6 22:22
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。

Lv2.观梦者

虚構歪曲

梦石
0
星屑
309
在线时间
1194 小时
注册时间
2010-12-18
帖子
3928

贵宾

2
发表于 2011-10-6 22:21:05 | 只看该作者
本帖最后由 忧雪の伤 于 2011-10-6 22:25 编辑

听不懂注释中的您在说啥。
看注释上面那段终于看懂了……
我就吐槽几句吧。所谓开头是 "#" 并不是 include? "#" 而是 [0, 1] == "#" 。
虽然实际上好像需要的是 include? 啊……那我只能说您的注释误导人了。
貌似不需要重写而可以通过 alias 就能完成增加的功能?
暂时没发现其他问题了。思路很新奇啊……

点评

实际上我真的不知道怎么表达。  发表于 2011-10-6 22:22
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1316
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
3
 楼主| 发表于 2011-10-6 22:38:13 | 只看该作者
忧雪の伤 发表于 2011-10-6 22:21
听不懂注释中的您在说啥。
看注释上面那段终于看懂了……
我就吐槽几句吧。所谓开头是 "#" 并不是 include? ...

灵感就在闪光的一瞬间。

后面那个注释的错误是因为我最开始写的时候没有考虑到变量名需要加一个备注,这样你所看到的变量名全是字母。后来我在前面添加了变量名的空间,所以就不是开头为#。
你所看到的注释错误是由于疏忽导致。

alias嘛!就是耶
懒得改了!!!
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
回复 支持 反对

使用道具 举报

Lv2.观梦者

(?????)

梦石
0
星屑
700
在线时间
1327 小时
注册时间
2011-7-18
帖子
3184

贵宾

4
发表于 2011-10-6 22:40:43 | 只看该作者
本帖最后由 各种压力的猫君 于 2011-10-7 02:50 编辑

我对这个要收费实在是吐槽不能了 = = b
研究这个还不如简化一下,把条件分歧的脚本部分加上“角色1的攻击力”就会自动替换为相应脚本这样方便一点 = = b
忧雪の伤 发表于 2011-10-6 22:45
第二句话看不懂。
就是这样啦:

抱歉刚才没看懂脚本 = = b 的确是个很方便的脚本
但是默认的变量赋值貌似没办法赋除了数字之外的值吧?
也就是说想要变更名称的话还要用事件脚本来更改名称显然多此一举了……

点评

可以接受任何东西,因为这里的变量只是一个中介而已。只是有些东西不能进行数学运算而已。  发表于 2011-10-7 13:45
第二句话看不懂。  发表于 2011-10-6 22:44
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1316
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
5
 楼主| 发表于 2011-10-6 23:07:23 | 只看该作者
本帖最后由 九夜神尊 于 2011-10-6 23:10 编辑
各种压力的猫君 发表于 2011-10-6 22:40
我对这个要收费实在是吐槽不能了 = = b
研究这个还不如简化一下,把条件分歧的脚本部分加上“角色1的攻击力 ...


你确认简化了??
使用你的方法必须打字对吧?
此外脚本涉及范围有限吧?

这脚本实际上是一劳永逸的,只需要设定一次名称,以后都可以直接选择就能使用!

此外1点经验只为记录。

点评

对 变量的名字 直接进行语义分析 嗯  发表于 2011-10-6 23:59
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
39925
在线时间
7498 小时
注册时间
2009-7-6
帖子
13489

开拓者贵宾

6
发表于 2011-10-7 00:42:59 | 只看该作者
eval($1) if name[/#(.*)/]

点评

fux的触手已经遍布全宇宙了  发表于 2011-10-7 01:25
你丫的高手了啊,实话说我对文本操作一直没入门。  发表于 2011-10-7 00:55
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
65
在线时间
19 小时
注册时间
2011-8-27
帖子
16
7
发表于 2011-10-7 09:35:04 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-21 22:35

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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