Project1

标题: 关于vx ace 中一段默认脚本的疑问 [打印本页]

作者: 电锤斧王    时间: 2013-1-18 22:41
标题: 关于vx ace 中一段默认脚本的疑问
def convert_escape_characters(text)
    result = text.to_s.clone
    result.gsub!(/\\/)            { "\e" }
    result.gsub!(/\e\e/)          { "\\" }
    result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
    result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
    result.gsub!(/\eN\[(\d+)\]/i) { actor_name($1.to_i) }
    result.gsub!(/\eP\[(\d+)\]/i) { party_member_name($1.to_i) }
    result.gsub!(/\eG/i)          { Vocab::currency_unit }
    result
  end

以上是va中Window_Base类中convert_escape_characters(text)函数不知各位脚本高手能否解释这个函数中每条语句的意思
作者: serena718    时间: 2013-1-18 23:06
親啊,這裡是XP區啊,發錯區了,不過還是試著回答了
def convert_escape_characters(text) 這段函數主要是執行控制符的事前變換
主要是將text所輸入的內容替換成 convert_escape_characters下所定義的東西
目前有在Window_Message(對話框)和Window_ScrollText(顯示捲動文字的視窗)中使用到
result = text.to_s.clone
# 主要是將text的內容複製一遍,然後帶入到result這個變數中
result.gsub!(/\\/)            { "\e" }
#若 result的字符串中有包含"\"這個符號,會替換成"\e",內建腳本有說主要是避免發生歧義
result.gsub!(/\e\e/)          { "\\" }
#因為上一行腳本的關係,"\"這個符號都會被替換成"\e"指令碼,所以必須輸入兩次"\"才能顯示"\"這個符號
result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
#在字符串中使用"\V[n]"來顯示n號變數
result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
#在字符串中使用"\V[n]"來顯示n號變數,(不過我跟VA不太熟,不懂為啥這邊要執行兩次……
result.gsub!(/\eN\[(\d+)\]/i) { actor_name($1.to_i) }
#在字符串中使用"\N[n]"來顯示n號腳色姓名(主要是數據克角色欄的編號)
result.gsub!(/\eP\[(\d+)\]/i) { party_member_name($1.to_i) }
#在字符串中使用"P[n]"來顯示n號隊伍成員的名字(主要是隊伍成員順位的編號)
result.gsub!(/\eG/i)          { Vocab::currency_unit }
#在字符串中使用"\G"來顯示貨幣單位
result
#返回變數的結果,也就是將上面可能的情況重新帶入 result變數中,要不變數內容是不會刷新的


同樣的再申明一次,我跟VA不太熟……上面解釋是我依照自己的認知來推斷的
等待高手鑑定
作者: 电锤斧王    时间: 2013-1-19 10:15
serena718 发表于 2013-1-18 23:06
親啊,這裡是XP區啊,發錯區了,不過還是試著回答了
def convert_escape_characters(text) 這段函數主要是 ...

非常感谢 不过对于result.gsub!(/\\/) 这一句话我觉得应该是把“\\”,替换成\e,而不是把”\“替换成\e吧,你觉得呢?
作者: 电锤斧王    时间: 2013-1-19 11:08
serena718 发表于 2013-1-18 23:06
親啊,這裡是XP區啊,發錯區了,不過還是試著回答了
def convert_escape_characters(text) 這段函數主要是 ...

还有就是每个正则表达式后面的i是什么意思





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