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

Project1

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

[通用发布] 无用产物,省成本开关

[复制链接]

Lv1.梦旅人

路人党员

梦石
0
星屑
51
在线时间
2276 小时
注册时间
2010-12-30
帖子
3225
跳转到指定楼层
1
发表于 2015-4-12 13:12:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
先说明,这脚本没什么实际作用,硬要说有的话就只是在开关的部分减少存档的大小。
因此,新人可以回去了
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Game_Switches
  4. #------------------------------------------------------------------------------
  5. #  省成本的处理开关的类。
  6. #==============================================================================

  7. class Game_Switches
  8.   #--------------------------------------------------------------------------
  9.   # ● 初始化对像
  10.   #--------------------------------------------------------------------------
  11.   def initialize
  12.     @data = []
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● 获取开关
  16.   #--------------------------------------------------------------------------
  17.   def [](switch_id)
  18.     return (@data[switch_id / 8].to_i & (1 << (switch_id % 8)) != 0)
  19.   end
  20.   #--------------------------------------------------------------------------
  21.   # ● 设置开关
  22.   #--------------------------------------------------------------------------
  23.   def []=(switch_id, value)
  24.     return if switch_id > 5000
  25.     c = @data[switch_id / 8].to_i
  26.     c |= (1 << (switch_id % 8))
  27.     c ^= (1 << (switch_id % 8)) unless value
  28.     @data[switch_id / 8] = c
  29.   end
  30.   #--------------------------------------------------------------------------
  31.   # ● 保存时
  32.   #--------------------------------------------------------------------------
  33.   def _dump(*args)
  34.     @data.map{|c|c.to_i}.pack('C*')
  35.   end
  36.   #--------------------------------------------------------------------------
  37.   # ● 读取时
  38.   #--------------------------------------------------------------------------
  39.   def self._load(bin, *args)
  40.     a = new
  41.     a.instance_eval{@data = bin.unpack('C*')}
  42.     return a
  43.   end
  44.   #--------------------------------------------------------------------------
  45.   # ● 兼容VA
  46.   #--------------------------------------------------------------------------
  47.   def on_change
  48.     $game_map.need_refresh = true
  49.   end
  50. end
复制代码
@晴兰 你最喜欢的bit操作

点评

另外这个的纯事件版本,天干就有了  发表于 2015-4-12 13:30
你可以直接用c[switch_id%8] ^= 1  发表于 2015-4-12 13:30
本人擅长XP,如果有脚本或者Ruby方面的问题欢迎发电邮到[email protected]咨询,本人很少检查电邮所以不一定会及时回复,本人不会直接出手解决问题只会提供一个方向,所以谢绝伸手党
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-5-12 21:20

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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