中文偽春菜後援會論壇  

打印

[分享] 原創人格「茶兔&茶鹿」中日雙語完整版下載

引用:
原帖由 貓魚 於 2008-10-23 16:17 發表
太奇怪了,我突然不能讀取系統編碼以外的歌詞了(例如UTF-8)……
為何呀!我只是將CHARSETLIBEX("saori\mciaudior.dll", 127) 加上然後又註釋化了而已……@口@'''

不知道是否是因為SSP版本關係?@口@;;;; ...
這個…我來回答吧
(好一陣子沒回來了…汗)

無法讀取系統編碼這部份你可以試著在記錄檔(yaya_variable.cfg)找一下有沒有類似的變數設定
把它刪掉即可
或者乾脆整個刪掉...(炸)

另外還有一種解決方法
因為當初我有預留指定檔案編碼的參數
所以只要在呼叫時加上此參數即可
以OnMusicPlayWithLyric為例
就是將
複製內容到剪貼板
代碼:
_txt += GetLyric(_lrc);
...
_txt += GetLyric(_lrc,timeDiff);
改成
複製內容到剪貼板
代碼:
_txt += GetLyric(_lrc,0,1);
...
_txt += GetLyric(_lrc,timeDiff,1);
即可讀取UTF-8編碼的歌詞檔

題外話...這是個很不錯的人格呢
以我目前的狀況
自己的人格暫時是沒動力去寫了...XD"
末月返想 - 創意的存放處
二次元斷層 - 成果展現之所在

惰性是大敵。

TOP

我印象中AYA沒有自動偵測文件編碼的功能啊...(汗)
真的有需要的話,
可能就要在選單的設定項目中多設一個文件編碼的選項了。

另外還有一件事...
在做公開版本的時候,
建議將yaya.txt中的iolog項目改為off。
保留在on的話,
aya會一直更新log文件,人格的速度會受到影響。
尤其是在開右鍵選單的時候...

至於白菜嘛...
也是...至少得對得起這兩個Shell才行
感覺熱血又回來了 =﹏=
末月返想 - 創意的存放處
二次元斷層 - 成果展現之所在

惰性是大敵。

TOP

並不是沒人願意教你
有問題的話到這裡貼文章都會有人回答的
只是若想要從頭到尾讓人一對一去教你的話
很少有人有這麼空閒吧...XD

所以首先呢請到偽春菜wiki裡好好的看幾篇文章
然後實際的動手作一下
如果你完全搞不懂從哪下手的話
我想別人也完全不知道該怎麼教你

想學AYA的話
從這篇文章入門也許不錯...
http://cuc2.idv.tw/wiki/index.ph ... 5%E5%85%A5%E9%96%80
末月返想 - 創意的存放處
二次元斷層 - 成果展現之所在

惰性是大敵。

TOP

引用:
題外:
我想讓人格在用戶生日的那天,剛啓動的時候會說“生日快樂”,
因為利用\![open,dateinput,teachuserbirthday,-1]來輸入用戶生日的,
所以出來的reference1是xxxx,xx,xx(有3個逗號Orz)

想請問:
1,如何讓reference1顯示為xxxx年xx月xx日呢?
2,要如何利用%(month)和%(day)來判斷呢?(或者根本不是用這個Orz)
這個在我寫的簡易鬧鐘裡也有用到類似的方法
簡單的說就是
複製內容到剪貼板
代碼:
birthday = SPLIT(reference1,","); //以「,」作為區隔切成三個陣列元素
這樣一來birtyday[0]就會是年份
然後birthday[1]是月份這樣
接下來只要在對話的部份寫成像
複製內容到剪貼板
代碼:
"\0\s[0]你的生日是%(birthday[0])年%(birthday[1])月%(birthday[2])日。\e"
以及
複製內容到剪貼板
代碼:
if birthday[1] == month && brithday[2] == day
    "\0\s[0]生日快樂!\e"
一個小概念:
只有放到字串中顯示的變數才需要用%()來提取
一般的程式區塊直接寫上變數名稱就可以調用了

[ 本帖最後由 時原砂 於 2008-10-25 19:51 編輯 ]
末月返想 - 創意的存放處
二次元斷層 - 成果展現之所在

惰性是大敵。

TOP

因為隨音樂的歌詞播放功能是使用SSP內建的音效播放器
所以只有拖曳的檔案是.mp3格式時才會發動...

[ 本帖最後由 時原砂 於 2008-10-27 20:07 編輯 ]
末月返想 - 創意的存放處
二次元斷層 - 成果展現之所在

惰性是大敵。

TOP

嗯? 用「:」是符合LRC規格的嗎...?
總之我改一下好了...
請到我「歌詞卡無限製」那篇文章重新複製新的程式碼貼上

原本是想改用正規表現式的解析法來強化相容性
不過想想還是算了...
末月返想 - 創意的存放處
二次元斷層 - 成果展現之所在

惰性是大敵。

TOP

複製內容到剪貼板
代碼:
_r = RAND(100); // 隨機產生0~99的數字
case _r {
    when 0-9 {
        A;      // 發生機率10%
    }
    when 10-35 {
        B;      // 發生機率26%
    }
    others {
        C;      // 發生機率64%
    }
}
這樣應該就可以了

因為SSP的開發者們認為teachbox只需要專門應付教學事件
所以其輸入只會對應到的OnTeach事件
同樣的communicatebox也是相同的道理
只對應OnCommunicate事件
所以只能將你要做的事都寫到這兩個事件底下才行
但是因為沒有識別子可以判斷是在怎樣的情況輸入的
因此會變得非常麻煩
個人推薦是照舊用inputbox即可
(老實說我一直對SSP的這部份感到不滿...)

單字的記憶只靠單純的YAYA是有點困難的
因為存取巨大的變數或陣列會拖累YAYA的運行速率
所以常見的方法是導入資料庫來存放這類資料
例如 debeso 這類的套件
「野菜園」的人格也是使用這樣的方式來存放教學資料
但相對的撰寫難度也提升了...

[ 本帖最後由 時原砂 於 2008-10-31 10:31 編輯 ]
末月返想 - 創意的存放處
二次元斷層 - 成果展現之所在

惰性是大敵。

TOP

星座判定那個確實是我打錯字了XD

至於那篇文章中的測試碼是給uds早期r2版使用的,
現在已經不需要UNLOADLIB這個指令。

另外那個測試碼指定的偵測時間也太長(1秒)了,
會導致每次在開相關頁面時都會lag一秒。
所以建議改成0.1~0.2秒就好。
(雖然準確率會下降…)
這部份其實如果做成每隔某段時間自動發出事件通知的話會好得多,
否則也只能當聊勝於無的功能…
就看Royさん想不想做了。(炸)

偵測第一個網卡在1/10秒間平均流量的範例:
複製內容到剪貼板
代碼:
                _i = FUNCTIONEX('saori\uds.dll','UpDownSpeed', 1, 10, 0);
                "%(_i)\n下載速度: %(valueex0) B/s\n上載速度: %(valueex1) B/s\e";
偵測全部網卡在1/5秒間平均流量的範例:
複製內容到剪貼板
代碼:
                _i = FUNCTIONEX('saori\uds.dll','UpDownSpeed', -1, 5, 0);
                "%(_i)\n下載速度: %(valueex0) B/s\n上載速度: %(valueex1) B/s\e";
末月返想 - 創意的存放處
二次元斷層 - 成果展現之所在

惰性是大敵。

TOP

引用:
原帖由 Roy 於 2008-11-21 19:04 發表
不願做,歡迎亂入。 XD
要玩notify就要用thread和DirectSSTP了… (可參考httpc.dll源碼)
我比較想做一個GhostPlayer耶...XD
末月返想 - 創意的存放處
二次元斷層 - 成果展現之所在

惰性是大敵。

TOP

Orz...我當初從C語言版本轉換過來時好像漏寫了
因為我沒有實際的試驗過那個函式...XD

這下應該沒錯了吧...
複製內容到剪貼板
代碼:
OnZodiacSign
{
    _month  = _argv[0];
    _day    = _argv[1];
    _date   = (19,20,20,20,21,22,22,22,22,21,21,19);
    _zodiac = ('水瓶座','雙魚座','牡羊座','金牛座','雙子座','巨蟹座','獅子座','處女座','天秤座','天蠍座',射手座','摩羯座');
    _sign   = '';
   
    if _day > _date[_month - 1]
        _sign = _zodiac[(_month - 1) % 12];
    else
        _sign = _zodiac[(_month + 10) % 12];
   
    _sign;
}
[ 本帖最後由 時原砂 於 2008-11-21 21:56 編輯 ]
末月返想 - 創意的存放處
二次元斷層 - 成果展現之所在

惰性是大敵。

TOP

引用:
原帖由 貓魚 於 2008-11-25 00:01 發表
呃……
我自己測試了幾次logout,
似乎還是沒有正確SAVEVAR的樣子(例如移動過的人格會再次顯示到移動之前的位置)

我是這麼寫的:OnWindowsLogout
{
        SAVEVAR();
        FUNCTIONEX("saori\KI.dll","ExitWindows","LogOff");
}呃 ...
那個是FUNCTIONEX(也就是SAORI)的返值
所以習慣上都會用個區域變數去接它免得說出一些奇怪的話XD
另外SAVEVAR存的是人格裡所使用到的YAYA全域變數
某些SSP方面的細節是無法記錄的
(除非人格自己另外處理)
末月返想 - 創意的存放處
二次元斷層 - 成果展現之所在

惰性是大敵。

TOP

引用:
原帖由 貓魚 於 2008-12-7 23:41 發表
bug迴避成功XD
感激不盡。

這樣看來,pna難道還是必須的嗎……
不要呀……(偷懶打滾中)

==============囧囧囧囧囧囧===============


原來我不小心將shell給丟到ghost里去啦啊啊啊啊
(抱頭)下一版更正……
不過這樣更新 ...
在updates2.dau的同資料夾層再加個delete.txt文件
裡面寫上要刪除的文件的路徑即可
以後要刪其他的樣也一樣是更新delete.txt就可以了
可以參考一些人格的設置(如Emily4)
或參考這邊
http://usada.sakura.vg/contents/updatebymyself.html#delete
末月返想 - 創意的存放處
二次元斷層 - 成果展現之所在

惰性是大敵。

TOP

確實是同樣的問題
基本上這個與其說是BUG還不如說是規格導正
(用逗點區分實在太容易出錯了...)

將上述程式碼中的
複製內容到剪貼板
代碼:
                _str = SPLIT(reference[_i],',');
改為
複製內容到剪貼板
代碼:
                _str = SPLIT(reference[_i],CHR(1));
試試...
末月返想 - 創意的存放處
二次元斷層 - 成果展現之所在

惰性是大敵。

TOP

不過這樣一改SSP2.01.50以前的SSP反而就有問題了
請把上述那行改成這樣吧...XD"
複製內容到剪貼板
代碼:
if CHR(1) _in_ reference[_i]
    _str = SPLIT(reference[_i],CHR(1));
else
    _str = SPLIT(reference[_i],',');
末月返想 - 創意的存放處
二次元斷層 - 成果展現之所在

惰性是大敵。

TOP

太神奇了...在使用CHR(1)作為_in_的判定條件時竟導致全域變數(或陣列?)的消失
總之先迴避BUG
複製內容到剪貼板
代碼:
_str = reference[_i];
if CHR(1) _in_ _str
    _str = SPLIT(_str,CHR(1));
else
    _str = SPLIT(_str,',');
[ 本帖最後由 時原砂 於 2008-12-8 21:17 編輯 ]
末月返想 - 創意的存放處
二次元斷層 - 成果展現之所在

惰性是大敵。

TOP

這牽涉到AYA內部的輸出演算,
嚴格來說這樣的運作在規則是合理的。

在第一個程式碼中,
AYA會尋訪所有的大括號區塊以取得輸出對話的字串列表,
因此演算的流程一定會經過區塊的內部,
那些運算式自然也就被執行了。
大括號會影響的只有其中對話的輸出機率,

至於第二個程式碼,
你可以把它想作是兩個函式的呼叫,
而既然函式被呼叫了,
內部的運算式當然也是一視同仁的執行了。

若想要只有在特定對話發生時才改變某些參數的設定,
一種寫法就是在對話字串的末端加上「:eval=」
如:
複製內容到剪貼板
代碼:
"文字文字1\e:eval=(EP2_01=1)"
[ 本帖最後由 時原砂 於 2008-12-20 02:48 編輯 ]
末月返想 - 創意的存放處
二次元斷層 - 成果展現之所在

惰性是大敵。

TOP

請使用embed指令
複製內容到剪貼板
代碼:
\![embed,OnSomeEvent,Ref0,Ref1...]
使用方法類似於raise指令,
但與raise指令不同的是,
raise指令會直接引發新的事件並重新開始對話,
embed指令則是將引發的事件執行完成後回傳到目前的對話之中。

範例:
複製內容到剪貼板
代碼:
TalkAdd
{
    "\0一加二等於多少呢?\![embed,OnTalkAdd,1,2]"
}

OnTalkAdd
{
        _i = reference[0] + reference[1]
        "\1是%(_i)。"
}
不過這個方法運算上會比較吃力,
請適量使用...XD

[ 本帖最後由 時原砂 於 2008-12-20 16:43 編輯 ]
末月返想 - 創意的存放處
二次元斷層 - 成果展現之所在

惰性是大敵。

TOP

引用:
原帖由 貓魚 於 2008-12-20 21:25 發表
嗚哦…下次更新的時候將這些錯誤都修正OTZ

另外embed大感謝!之前一直不明白它的用法……
;;;w;;;←血淚
不過所謂的運算吃力,究竟是吃力多少呢……?@w@ ...
運算時間請參考embed前後對話出現的時間差。

真要說吃力的話其實也還好,
因為embed的運算並不是一次處理完成,
而是講到哪處理到哪,
所以不會因為一次使用太多的embed指令而造成大量的系統資源佔用,
頂多是embed發生時會停頓一下而已。
而且使用embed的時機大多是比較特別的事件,
那種時候使用者也不會在意那點運算損耗吧。XD

反過來說,
因為普通的一般對話大扺都能用AYA內建的%()字串插入指令來完成,
因此不建議在一般對話時使用embed。
遞迴使用時也請特別小心。

[ 本帖最後由 時原砂 於 2008-12-21 15:54 編輯 ]
末月返想 - 創意的存放處
二次元斷層 - 成果展現之所在

惰性是大敵。

TOP



當前時區 GMT+8, 現在時間是 2019-12-15 21:47

Processed in 0.031139 second(s), 9 queries, Gzip enabled.

清除 Cookies - 聯繫我們 - 中文偽春菜後援會 - Archiver - WAP - TOP - 界面風格