1。变量的计算
我们都知道,如果要用事件来计算一个数值的话,就需要用变量来带入,而且所需要计算的数值越复杂,包含的变量就越多。比如一号变量的值=二号变量+一个随机数0到30+三号变量,用平时事件的方法就要先让一个变量代表随机数,然后用一号变量加上,然后再用一号变量加上二号变量,再加上三号变量,操作繁琐而且还浪费了一个变量做随机数。。。而事件脚本就不同,只需要这么写(如果一行连续的事件脚本长过了一行,就要用\来给该行结尾,然后下一行继续写,这两行的内容就会被当作一行来算。):
a = $game_variables[2]
b = $game_variables[3]
$game_variables[1] = a + rand(31) + b
就可以轻易算出一号变量的值,比事件操作方便易懂很多,就和数学计算一样,而且不容易出现操作失误,还节省了一个用来代入随机数的变量。而且这还可以用来做较复杂的数学运算,比如:
a = $game_variables[2]
b = $game_variables[3]
c = $game_variables[4]
$game_variables[1] = ((a.abs - Math.sqrt(b))/c).abs.round
这个就是一号变量=二号变量的绝对值-三号变量的平方根,然后用得到的值再除以四号变量,得到的结果的绝对值并且四舍五入。这个使用事件根本不可能完成的东西,但是用事件脚本却可以做到!!!当然了,这个是数学运算,所以也不能出现数学的问题,比如说负数不能开根号,0不能做被除数等。
6。邪恶的显示文章
默认的显示文章只可以显示文字以及变量等,但是用事件脚本却可以显示更多东西,比如当前的地图名称,某角色的HP,携带的某道具数量等。比如:
a = "一号角色的HP为" + $game_actors[1].hp.to_s + "\n"
b = "当前地图名为"
c = load_data("Data/MapInfos.rxdata")[$game_map.map_id].name) + "\n"
d = "目前携带了" + $game_party.item_number(1).to_s + "个1号道具!"
$game_temp.message_text = a + b + c + d
("\n"代表换行,.to_s代表把数字换成字符)
这样出来的对话内容就会是:
一号角色的HP为XXX
当前的地图名为XXXXXX
目前携带了X个1号道具!
是不是比原有的显示文章功能显示的东西要多呢?
7。用for loop同时关闭连续的开关,变化变量,消除图片等
如果我现在要关闭2到30号的开关,如果用事件操作的话,手估计会断掉。。。但是事件脚本却可以三行轻松解决这个问题!是哪三行?我们来看看。。。
for i in 2..30
$game_switches = false
end
只要这三行,2到30号的开关就全都关闭了。。。邪恶吧。。。同样可以运用在消除图片,事件等一系列连贯的东西上:
消除1到10号图片
for i in 1..10
$game_screen.pictures.erase
end
很好用吧XD?!
1。同时进行多个判定
如果只是用纯事件来做的话,要同时判定多个东西就必须在条件分歧里面再加条件分歧,这样看起来令人眼花缭乱,非常的不舒服。但是事件脚本就可以同时制造多个判定。
比如说我现在要判定XXX指令要在一号角色HP30以下,二号角色等级大于5,4号道具数量刚好等于5个,3号角色必须在队伍中才执行,这时候就可以在事件脚本那里写(这里的事件脚本是绝对不可能挤在条件分歧里的那个狭小事件脚本空间里,虽然绝对放得下,但那样会非常不方便看,所以建议先开一个记事本,在那里写好了然后复制粘贴进去):
$game_actors[1].hp <= 30 and $game_actors[1].hp > 5 and $game_party.item_number(4) == 5 and $game_party.actors.include?($game_actors[3])
这样就是同时满足四个条件的判定,每个不同的判定用and连接,代表必须同时满足。而
$game_actors[1].hp <= 30 or $game_actors[1].hp > 5 or $game_party.item_number(4) == 5 or $game_party.actors.include?($game_actors[3])
就代表只要满足这四个条件中的一个就可以让指令XXX执行,每个不同的判定用or连接,代表只需要满足其中的一个条件。还有
$game_actors[1].hp <= 30 and ($game_actors[1].hp > 5 or $game_party.item_number(4) == 5 or $game_party.actors.include?($game_actors[3]))
就代表说只要满足“一号角色HP30以下”和其他三个条件中的任意一个就可以让指令XXX执行,在一起的判定or要用括号扩起来,与and区分开来,不然无法正确判定。
附带写一下之前没有写过的但是在条件分歧中出现的判定:
特定角色是否在队伍中
$game_party.actors.include?($game_actors[角色编号])
特定角色名称
$game_actors[角色编号].name
特定角色是否习得某特技
$game_actors[角色编号].skill_learn?(特技编号)
特定角色的状态
$game_actors[角色编号].state?(状态编号)
2。对按键的判定
原本的条件分歧中对按键的判定都是“按住”,而不是“按下”。也就是说当这个开关被按住的这段时间里就一直满足条件,反复执行内容,而不是按一下执行一次,如果按住不放而不再次按下就不会执行。所以这时候又要用到事件脚本。
Input.trigger?(Input::按键名称)就是判定“按下”,而Input.press?(Input::按键名称)就是判定“按住”(原本条件分歧里有的就是这个),关于这里可以使用的按键名称:
A 对应键盘Z键,Shift键
B 对应键盘X键,ESC键
C 对应键盘C键,空格键,Enter键
X 对应键盘A键
Y 对应键盘S键
Z 对应键盘D键
L 对应键盘Q键
R 对应键盘W键
DOWN 对应键盘下键
LEFT 对应键盘左键
RIGHT 对应键盘右键
UP 对应键盘上键
SHIFT 对应键盘Shift键
CTRL 对应键盘Ctrl键
ALT 对应键盘Alt键
F5 对应键盘F5键
F6 对应键盘F6键
F7 对应键盘F7键
F8 对应键盘F8键
F9 对应键盘F9键
增加了很多对按键的判定。
4。判定是否可通行
$game_player.passable?(x, y, 朝向)
$game_map.events[事件编号].passable?(x, y, 朝向)
比如$game_player.passable?(5, 3, 2)就表示角色在地图坐标5,3的地方的下方是否可以通行。至于这个有什么作用,就请自由发挥。