Project1
标题:
NPC范圍內开啟D独立開關脚本的这句代表什么,好像比较特殊
[打印本页]
作者:
ppspssss
时间:
2018-5-19 16:30
标题:
NPC范圍內开啟D独立開關脚本的这句代表什么,好像比较特殊
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Simple Event Sensor
# Version: 1.10
# Author : LiTTleDRAgo
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# Instruction :
#
# Set the event name to : <Sensor(RANGE)>
# example :
# <Sensor4>
#
# If player is in event sensor range, Self switch D (default) will turned ON
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
class Game_Event < Game_Character
#-----------------------------------------------------------------------
SENSOR_SELF_SWITCH = 'D'
#-----------------------------------------------------------------------
alias drago64c_update update
def update
sensor_updating unless @unsensor
drago64c_update
end
def sensor_updating
@event.name =~ /<Sensor(\d+)>/i
s = [$1.to_i,[$game_map.map_id,@id,SENSOR_SELF_SWITCH],[]]
s[2] = [(($game_player.x-self.x).abs + ($game_player.y-self.y).abs <=
s[0]), $game_self_switches[s[1]]] if s[0] > 0
return unless s[0] > 0 && s[2][0] != s[2][1]
$game_self_switches[s[1]], $game_map.need_refresh = s[2][0], true
end
end
复制代码
@event.name =~ /<Sensor(\d+)>/i #这句/d+是任何數字, 那个前面=~什么意思, 还有,后面/后面的i什么意思
还有 s = [$1.to_i , ....... #$1 哪里來的變量,什么时候將/d+變成$1
作者:
灯笼菜刀王
时间:
2018-5-19 16:50
本帖最后由 灯笼菜刀王 于 2018-5-19 16:52 编辑
这个是正则表达式, 相关帮助在F1的最后附录(不过介绍很短,想了解还是要找ruby正规教程)
~是补位 表示匹配的字符串忽略位置
i是忽略字符串大小写
$是字符串尾部位置, $1就是获得匹配字符的最后一个单词, 因为得到的是字符串, 所以要当数字用,就要 to_i
因为这部分咱也不熟悉, 所以没办法解释太详细, 只是凭自己的运用体验说的, 等后面大佬来补充和解释比较可靠XD~~~
作者:
ppspssss
时间:
2018-5-19 17:29
灯笼菜刀王 发表于 2018-5-19 16:50
这个是正则表达式, 相关帮助在F1的最后附录(不过介绍很短,想了解还是要找ruby正规教程)
~是补位 表示匹配 ...
$1那个还是不明白怎么來
按道理應該$1 = \d+
作者:
ppspssss
时间:
2018-5-19 21:04
灯笼菜刀王 发表于 2018-5-19 16:50
这个是正则表达式, 相关帮助在F1的最后附录(不过介绍很短,想了解还是要找ruby正规教程)
~是补位 表示匹配 ...
看了你貼子, 隨機數用rand(XX) 為什么得出數值相近? 还有那个利用"种子"可以生成一样的規則隨機我想知道难不难
作者:
RyanBern
时间:
2018-5-21 13:31
@灯笼菜刀王
你对正则表达式的理解有点问题。二楼有些解释是错的。
=~ 是匹配正则表达式的算符。语法是 str =~ regex,表示把字符串 str 和正则表达式 regex 进行匹配。这个运算是有值的,如果匹配成功(即字符串中刚好有正则表达式“指定”的格式),则返回第一个符合匹配的位置。若匹配不成功返回 nil。
在匹配的同时对匹配的一些保留变量,例如 $1 等进行赋值。
\d 表示任何数字,\d+ 表示任何数字并且出现次数至少为 1,尽量匹配长的部分。
$1 是一个内部变量,存储匹配的部分结果。它一般表示“表达式第一个括号内实际匹配到的值”。在这里第一个括号里是 (\d+),所以匹配完毕后它的值就会是 \d+ 的实际内容。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1