AYA人格範本 †人格範本是為了配合文 version 5 所做的桌面應用程式「伺か」用的角色資料(人格)原型。 另外,此篇人格範本是以中文化版的 紺野芽芽美 1.02版 為基準進行解說,採用dll版本為YAYA-tc524-5。 範本下載 †
機能概要 †人格範本提供以下機能。
辭書解說 †辭書的副檔名為.dic,可以直接使用筆記本開啟。 要注意的是,根據辭書構築的先後順序,可能會造成不同的編譯結果。 aya_shiori3.dic †範本中的辭書檔 aya_shiori3.dic 是作為 AYA SHIORI/3.0 核心控制用的制御辭書。 基本上請勿更動制御辭書。 擁有SHIORI/3.0以及AYA相關知識的話,是可以通過對内容的理解自行擴充機能。但是對於一般的人格開發來說,沒有這麼做的必要。 aya_compatible.dic †支援AYA Version 4 與 Version 5 間的互換性,是為了支援較舊版本的人格。 基本上刪除掉也無所謂。 aya_word.dic †單語辭書。與SSP的SakuraScriptEnv進行對應,會自動取出其中一個單詞。例如以下範例: \0\s[0]我剛剛好像看到%ms在%mh裡吃著%me。\1\s[10]應該是錯覺吧。 %ms會自動轉為你在ms中設定的任意一個人名,%mh為店名,%me為食物,因此整個文章的大意是: (從者):我剛剛好像看到(某個人)在(某家店)裡吃著(某食物)。 (使魔):應該是錯覺吧。 於是一個較為簡單的AI對話就這麼產生了。這樣的設定也利於提升在毒電波*2上的泛用性,有興趣的人可以多多研究一下。 由於AYA在語法上能夠使用附帶範圍的展開式『%()』,因此在單詞的選用中可以有更多的變化性,也可自行設定單詞集合。單語取得事件 (On_\??)的部份無需修改,那是為了對應SSP而保留的部份。另外,如果選擇使用前處理功能的話,請將此辭書放在系統辭書之後,對話辭書之前。 aya_aitalk.dic †AI對話的處理場所,會根據對話頻率的時間長度自動進行一般對話或連鎖對話。一些會影響到AI行為的對話也會在此處理。 aya_bootend.dic †啟動/關閉/切換人格時會執行的函式都包含在此辭書內。 aya_communicate.dic †處理User對人格或人格對人格的對話。 aya_menu.dic †處理並生成MENU選單的辭書,以及處理相應的選單選取反應。 aya_react.dic †處理使用者用滑鼠或鍵盤對人格的做出的行為,像是這樣這樣那樣那樣的事……XD。 aya_string.dic †這部份的設定會影響到SSP的右鍵選單,自動取代原有的選單文字。 aya_etc.dic †上述辭書未包含的SSP事件皆置於此,諸如檔案拖曳、對時、收信、安裝等等事件的相應對話。 AYA Versoin 4 的轉移 †基本上沒人用得上,所以不多說了。想了解的話,這裡有完整版中文解說: UTF-8辭書的使用 †預設上,人格範本辭書的文字編碼Shift_JIS。 如果想讓您的人格在任何環境系統下運作,或是在對話中混用多國語言的話,請將辭書編碼設定為UTF-8。
charset,UTF-8 使用方法 †在此簡單說明一下。 事件處理器 †事件是「發生了~」「做了~」這類、在人格周遭所發生的各式各樣的現象或環境變化。事件發生之時所引發的函式稱之為事件處理器。明確的說,談到人格的開發就不得不提起事件處理器這東西。 事件本身分為很多種類,在此就不逐一詳細解説。 在此提供以下連結,請自行研究如何實行這些事件。
On_hwnd { SakuraHwnd = reference0[0] } 新增事件的對應方法 †即使將來 SSP 本體或外部程式定義了新的事件,AYA只要追加相對應的事件處理器即可。 例如要實裝あの夢的機能的話,可以寫成這樣。 OnHitThunder { "\0\_s実体化開始。\e" } SAORI †SAORI的執行 †SAORI插件可以用 FUNCTIONEX 或 SAORI 這兩個函式來執行。 第一參數指定 DLL 檔名。可以指定與文 DLL的相對路徑。第二參數以後為 Argument[n] 。 使用方式如下。 FUNCTIONEX("textcopy.dll", "複製到剪貼簿。", 0) Result 可以取得函式傳回的值。 _result = FUNCTIONEX("textcopy.dll", "複製到剪貼簿。", 1) 值的回傳 †SAORI實行後回傳的變數 Value[n] 會被文轉為 valueex? 。 _result = FUNCTIONEX("debeso.dll","-f","SELECT name FROM sqlite_master WHERE type='table'"); 上述的SQL語法要求SAORI回傳資料庫中所有的資料表名稱。 壽命 †從初回實行之前到 load 和 GET Version 送出時開始。unload 在文のunload之前。 線上更新時的動作 †由於線上更新時可能有 SAORI 構成檔案那類的東西被更新,因此所有 load 完畢的 SAORI 在取得 OnUpdateReady 事件的訊息後便 unload 。線上更新中時 SAORI 無法使用。 ↑ 系統變數 †範本本身提供了以下的系統變數。
字串中的byte値 1 會自動的置換成半形逗號。
主要是用在communicate時,用來指定對象人格的名字(res_reference0)。
此外 SAORI 的 Result 是作為 FUNCTIONEX / SAORI 系統函數的傳回值,所以沒有準備專用的變數。 已安裝人格清單的作成 †installedghostlist / installedsakuralist / installedkerolist 是人格在 load 過程中自動構築的。由於構築需要時間,如果已安人格的數量很多時,處理時間會變長。 要解決這個問題的話,可以指定最大的清單長度。 aya_shiori3.dic 第25行 #define IGLIST_MAX -1
假若將此值設定為 5 ,系統將會在所有已安裝人格中挑出5個人格,製成清單放入 installedghostlist、installedsakuralist、installedkerolist。 已安裝人格如果少於設定值則全數取出。 當然,設定為0時是速度最快的。 溝通 †與其他的人格進行對話 †在應答各種事件之時,將對話對象人格的名字代入系統函數 res_reference0 ,兩個人格之間就可以產生對話(溝通)事件。 現在桌面上存在的人格名字,可以用 On_otherghostname 取得。 具體的實裝例子請參照範本。 範本是以OnAiTalk來進行溝通。(通常在隨機對話的場合下,溝通的發生率較低。) 回覆主動對話 †如果是由其他的人格或使用者主動對人格進行對話時,會發生OnCommunicate事件。 下面的例子,當對話是來自於奈留的話,會根據內容返回不同的回覆。至於來自於其他人格的對話,則一律回答「嗯。」。 OnCommunicate { if reference0 == "奈留" { res_reference0 = "奈留" if "你好" _in_ reference1 { "\0嗯,你好。\e" } elseif "天氣" _in_ reference1 { "\0天氣?也許吧‥‥。\e" } else { res_reference0="" "\0??\e" } } else { "\0嗯。\e" } } 當無法解釋奈留對話的內容時,回覆「??」避免進一步的對話。 不把人格的名字代入res_reference0 ,並明示其為空的字串時,因為沒有將回覆傳給對方,此次的交談將會在這個回覆之後停住。 如果是來自於使用者的主動對話時, reference0 會代入"user"。 隨機對話的連鎖 †隨機對話的時候,由於對話的長度或是段落的考量,將一整串相同主題的對話內容,分為複數次的對話來進行。此類對話我們稱之為連鎖對話。
RandomTalk RandomTalk { "\0沒有連鎖的對話、其之一。\e" "\0沒有連鎖的對話、其之二。\e" "\0伊藤是大笨蛋。\e:chain=爭吵" } 上述例子中,第三項的對話為連鎖的啟動對話,連鎖ID變成「爭吵」。 連鎖除了隨機對話可以啟動之外,其他狀況的對話也都能進行連鎖。例如在OnBoot對話(啟動人格時的初始對話)加入連鎖ID的話,人格啟動之後就可以直接進入連鎖對話。
爭吵 {{CHAIN "\1我哪裡笨了!你這個薄得要死的マセ餓鬼!\e" "\0你才是8位元微處理器的中古貨!\e" "\18位元哪裡不好啊!\e" }}CHAIN 連鎖是寫入「連鎖函式」用的特殊格式・動作函式。 連鎖函式不能單純的使用{}來包圍,而是用{{CHAIN及}}CHAIN。
連鎖ID被指定為「end」時,連鎖就會被終止,回到一般的隨機對話。 以下簡單的例子所示。 chain1 {{CHAIN "1" "2" { "3" "4:chain=end" "5:chain=chain2" } "6" }}CHAIN chain2 {{CHAIN "7" "8" }}CHAIN 此連鎖函式 chain1 會隨機產生下列3種型式的連鎖對話。 1. "1" → "2" → "3" → "6" → 終了 2. "1" → "2" → "4" → 終了 3. "1" → "2" → "5" → "7" → "8" → 終了 製作成自己的人格 †基本上只有下述幾個動作:
這樣一來一個新的人格就誕生了,要公開的話把暫存檔(profile等)刪一刪,然後壓縮成.zip壓縮檔,再把副檔名更名為.nar,放到網路上供人下載,一切搞定! 結語 †製作人格真的不是一件很難的事,只要有創意,花點時間,「創師」這個稱號就是你的了。 |