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

Project1

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

[已经解决] 关于vx ace 中一段默认脚本的疑问

[复制链接]

Lv1.梦旅人

梦石
0
星屑
47
在线时间
366 小时
注册时间
2012-10-6
帖子
221
跳转到指定楼层
1
 楼主| 发表于 2013-1-18 22:41:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
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)函数不知各位脚本高手能否解释这个函数中每条语句的意思

Lv1.梦旅人

梦石
0
星屑
122
在线时间
1740 小时
注册时间
2009-7-12
帖子
443
2
发表于 2013-1-18 23:06:00 | 只看该作者
親啊,這裡是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:26
说的很好 高手啊  发表于 2013-1-19 10:11

评分

参与人数 1梦石 +1 收起 理由
hcm + 1 认可答案

查看全部评分


那啥…我以為用戶名只是通行碼…
所以我暱稱不是serena718哈,是月見斐夜
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
47
在线时间
366 小时
注册时间
2012-10-6
帖子
221
3
 楼主| 发表于 2013-1-19 10:15:19 | 只看该作者
serena718 发表于 2013-1-18 23:06
親啊,這裡是XP區啊,發錯區了,不過還是試著回答了
def convert_escape_characters(text) 這段函數主要是 ...

非常感谢 不过对于result.gsub!(/\\/) 这一句话我觉得应该是把“\\”,替换成\e,而不是把”\“替换成\e吧,你觉得呢?

点评

同樣的你在VA對話框輸入"\",在遊戲執行會出錯,因為它已把"\'"轉換為"\e",但是這並不是字符,不能被描繪出來,所以出錯  发表于 2013-1-19 15:36
我按XP的F1說明是表示,"\"義為後項引用,也就是引用\之後的符號,所以result.gsub!(/\\/)是把"\\"的第二個˙斜線轉換為\e才是  发表于 2013-1-19 15:35
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
47
在线时间
366 小时
注册时间
2012-10-6
帖子
221
4
 楼主| 发表于 2013-1-19 11:08:11 | 只看该作者
serena718 发表于 2013-1-18 23:06
親啊,這裡是XP區啊,發錯區了,不過還是試著回答了
def convert_escape_characters(text) 這段函數主要是 ...

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

点评

這我就不清楚了,目前看到XP裡好像還沒這用法,我猜可能是除指定項目外的字符串吧...望高手解決  发表于 2013-1-19 15:39
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2025-1-6 13:50

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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