Project1

标题: 【RMXP/RMVX/RMVA】地图事件独立开关效果增强 [打印本页]

作者: chd114    时间: 2014-10-19 17:23
标题: 【RMXP/RMVX/RMVA】地图事件独立开关效果增强
有时候我们的游戏里面需要给NPC增加好感度这个属性,然后根据好感度,NPC会给角色派发任务什么的···但是用变量什么又觉得复杂麻烦,在EVENT里面加一个新定义是个不错的选择,但不排除和其他脚本抽风冲突什么的乱七八糟的情况,而该教程可以有效解决你的问题···

首先我们按下F11打开脚本编辑器(图片以RMVX为参考)
找到Game_SelfSwitches
然后找到图片中圈出来的语句
  1. return @data[key] == true ? true : false
复制代码
(如图,RMVA里面你需要找到的那一句是
  1. @data[key] == true
复制代码



接下来使用
  1. return @data[key] == nil ? false : @data[key]
复制代码
将这一句换掉


确定保存F12测试,事件指令里面的开关可以自由调用,很好···可以开始调教了
让我们来一段脚本测试,用脚本指令调用地图上的事件的开关,在这里我调用的是打开1号地图上的2号事件的独立开关A(想要用脚本调用的前提是那个地图和那个地图上的事件存在)的脚本指令
  1. $game_self_switches[[1, 2, "A"]]=true
复制代码
如果你的1号地图上的2号事件有独立开关A打开时显示的事件页或者执行的指令,就能看到明显的效果,但是还没有结束,我们继续调教!
顺带一提,如果把
  1. $game_self_switches[[1, 2, "A"]]=true
复制代码
改成
  1. $game_self_switches[[1, 2, "A"]]=false
复制代码
就是关闭了(true是开false是关)

那么,脚本调用没问题,再来试试下面一段脚本,依然是处理我们的1号地图的2号事件的独立开关A
  1. $game_self_switches[[1, 2, "A"]]=1
  2. p $game_self_switches[[1, 2, "A"]]
复制代码
你会得到p的结果1(RMVA需要打开控制台再测试才能看到p的结果)
我们还可以干得更加丧心病狂
漂亮
  1. $game_self_switches[[1, 2, "A"]]+=1
  2. $game_self_switches[[1, 2, "A"]]*=2
  3. $game_self_switches[[1, 2, "A"]]+=2
  4. $game_self_switches[[1, 2, "A"]]/=3
  5. p $game_self_switches[[1, 2, "A"]]
复制代码
这个时候的独立开关可以当成一个变量来用了!


不过你需要注意,如果没有给独立开关先下一个定义(或者说是赋值),那就会出错(RMVA不会,但是也没任何效果)
也可以说是想要把
  1. $game_self_switches[[1, 2, "A"]]
复制代码
当成变量运算的前提是
  1. $game_self_switches[[1, 2, "A"]]
复制代码
已经是一个可以用来进行运算的东西···

当然你还可以写成数组
  1. $game_self_switches[[1, 2, "A"]]=[]
  2. $game_self_switches[[1, 2, "A"]][0]=1
  3. p $game_self_switches[[1, 2, "A"]]
复制代码
如此一来,我们就可以利用独立开关来做爱做的事情
了!
作者: taroxd    时间: 2014-10-19 17:40
本帖最后由 taroxd 于 2014-10-19 17:44 编辑

整个脚本页可以用一句话来代替
RUBY 代码复制
  1. Game_SelfSwitches = Hash


如果是VA的话:
RUBY 代码复制
  1. class Game_SelfSwitches < Hash
  2.  
  3.   def []=(_, _)
  4.     super
  5.     on_change
  6.   end
  7.  
  8.   def on_change
  9.     $game_map.need_refresh = true
  10.   end
  11.  
  12. end


作者: chd114    时间: 2014-10-23 22:03
taroxd 发表于 2014-10-19 00:40
整个脚本页可以用一句话来代替
Game_SelfSwitches = Hash[/pre]

开关也能直接用吗?0.0
  1. Game_SelfSwitches = Hash
复制代码
是通用的?
作者: Vortur    时间: 2016-4-28 15:01
本帖最后由 Vortur 于 2016-4-28 15:29 编辑
taroxd 发表于 2014-10-19 17:40
整个脚本页可以用一句话来代替
Game_SelfSwitches = Hash[/pre]

@taroxd
你好!
  不知为什么,该脚本报错。在新开的工程中也是如此!


但是在原脚本处添加,则无报错
@A@


发现除了可以存储 数字 之外,还能存储任意东西!~~不过当数组中,存储的信息不是【数字】的话,p的结果是nil,但是变量依旧可以被调用!




谢谢!


  




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