2011年6月13日星期一

吉里吉里(krkr)教學索引頁

這裡是吉里吉里教學索引頁,以方便大家尋找吉里吉里相關教學。還有,大家可以在這裡發問問題。我儘可能解答大家。

最新的吉里吉里教學:

 KAG內部教學(進階篇)---Yes/No Dialog(1)


吉里吉里教學:

 吉里吉里教學 ---導入
 吉里吉里教學 ---事前準備
 吉里吉里教學---Config.tjs設定(1)
 吉里吉里教學---Config.tjs設定(2)
 吉里吉里教學---Config.tjs設定(3)
 吉里吉里教學---更換吉里吉里圖示
 吉里吉里教學---發佈前要做的最後一件事,封裝
 吉里吉里教學---圖層中的索引值
 吉里吉里教學---遊戲變數 vs 系統變數 vs 暫時變數


KAG教學:

文字顯示:
 KAG教學---基本中的基本,文字顯示(1)
 KAG教學---色彩大小由你決定,文字顯示(2)
 KAG教學---自由自在的文字,文字顯示(3)
 KAG教學---調整速度,文字顯示(4)
 KAG教學(補充篇)---字型設定與渲染字型,文字顯示(5)

背景顯示:
 KAG教學---image出沒注意,顯示背景(1)

前景顯示:
 KAG教學---請立繪登場,顯示前景(1)
 KAG教學---不要再製造不思議事件,顯示前景(2)
 KAG教學---顏色大改變,顯示前景(3)
 KAG教學---翻轉.陰影.截取,顯示前景(4)

文字圖層:
 KAG教學---美化這黑色的東西,文字圖層(1)
 KAG教學---到底你想控制誰,文字圖層(2)

圖層切換:
 KAG教學---Transition,圖層切換(1)
 KAG教學(補充篇)---前頁面與後頁面,圖層切換(1)
 KAG教學---extrans.dll前篇,圖層切換(2)
 KAG教學---extrans.dll後篇,圖層切換(3)

背景音樂 /音效:
 KAG教學---終於有聲音了,播放背景音樂(1)
 KAG教學---音量與暫停由你控制,播放背景音樂(2)
 KAG教學---雨聲.人聲.敲門聲,播放音效(1)
 KAG教學---音量與方向.淡出與淡入,播放音效(2)

影片:
 KAG教學---終於有OP和ED,影片播放(1)

特效:
 KAG教學---搖晃,quake
 KAG教學---圖層移動,move

變數:
 KAG教學---flag,變數(1)
 KAG教學(補充篇)---變數(1)
 KAG教學---加減乘除,變數(2)
 KAG教學---也許只是為了寫少點字,變數(3)
 KAG教學---神奇的&,變數(4)
 KAG教學---陣列,變數(5)

流程控制:
 KAG教學---跳躍吧,jump
 KAG教學---分歧,選項(1)
 KAG教學---生活在文字圖層的按鈕,選項(2)
 KAG教學---link和button的相同之處,選項(3)
 KAG教學---副程式,Subroutine
 KAG教學---巨集,Macro
 KAG教學---如果,if條件判斷(1)
 KAG教學---如果......否則,if 條件判斷(2)
 KAG教學---cond,if 條件判斷(3)
 KAG教學---請等待一下,時間控制(1)
 KAG教學---TIME OUT,時間控制(2)

歷史記錄(メッセージ履歴):
 KAG教學---メッセージ履歴,歷史記錄

save&load:
 KAG教學---存檔和讀檔,save&load(1)
 KAG教學---用KAG來存檔和讀檔,save&load(2)

其他:
 KAG教學(補充篇)---特殊符號
 KAG教學---萬能的功能,layopt
 KAG教學---載入插件,loadplugin
 KAG教學---關閉遊戲,close
 KAG教學---請按下你的右鍵,rclick
 KAG教學---視窗標題,title
 KAG教學---隨機數,random&intrandom
 KAG教學---回到標題畫面,startanchor和gotostart
 KAG教學---吉里吉里可以輸入文字嗎,輸入欄
 KAG教學---可愛的滑鼠游標,cursor

KAG進階教學:

一般:
 KAG內部教學(進階篇)---Auto and Skip

確認視窗:
 KAG內部教學(進階篇)---Yes/No Dialog(1)


KAG教學(應用篇):

選項/流程控制:
 KAG教學(應用篇)---簡單選項框

對話框:
 KAG教學(應用篇)---附有頭像的對話框

介面:
 KAG教學(應用篇)---基本的標題畫面
 KAG教學(應用篇)---右鍵選單(基礎篇)

範例:
 KAG教學(應用篇)---剪刀、石頭、布

KAG-EX教學:

 KAGEX教學---KAGEX導入

文字顯示:
 KAGEX教學---換行與換頁,linemode

TJS教學:

 TJS教學---TJS導入
 TJS教學---Hello World,初次編寫TJS
 TJS教學---variable,變數
 TJS教學(補充篇)---variable,變數
 TJS教學---data type,資料型態
 TJS教學(補充篇)---data type,資料型態
 TJS教學(補充篇)---variable and data type,變數與資料型態
 TJS教學---input,輸入
 TJS教學---arithmetic operator,算術運算子
 TJS教學---type conversion,型態轉換
 TJS教學---comparison operator,比較運算子
 TJS教學---logical operator,邏輯運算子
 TJS教學---increment, decrement and assignment operator,遞增、遞減、指定運算子
 TJS教學---conditional operator,條件運算子
 TJS教學---if statements,if 陳述式
 TJS教學---switch statements,switch 陳述式
 TJS教學(補充篇)---short-circuit evaluation,捷徑計算
 TJS教學---while loop,while 迴圈
 TJS教學(補充篇)---loop,迴圈
 TJS教學---for loop,for 迴圈
 TJS教學---do-while loop,do-while 迴圈
 TJS教學---break and continue,break與continue
 TJS教學---array,陣列(1)
 TJS教學---array,陣列(2)
 TJS教學---dictionary,字典陣列(1)
 TJS教學---function,函式(1)

104 則留言:

  1. 吉裏吉裏 有沒有一個功能好像
    按某個鍵盤(如 Z)的話,有東西會出來的?
    類似按CTRL的就跳過内容那種,但是是自製操控的有嗎?

    回覆刪除
  2. 可以做到的,不過最好懂得TJS會比較容易理解,
    KAG的內部的確有對左鍵、右鍵和鍵盤被按下時用來執行特定函數的功能,
    不過是用TJS寫的,可能有點困難。
    以下是範例。

    [iscript]
    function myKeyDownHook(key, shift)
    {
      if(key==VK_Z)
      {
        kag.process("", "*label");
        return true;
      }
    }
    [endscript]
    [eval exp="kag.keyDownHook.add(myKeyDownHook)"]
    [s]

    *label
    [eval exp="kag.keyDownHook.remove(myKeyDownHook)"]
    你已經按了Z。
    [s]

    首先我寫了一個函數叫myKeyDownHook(key,shift),
    而myKeyDownHook有兩個參數key和shift,
    key是被按下的按鍵的編碼,
    shift是當這個按鍵被按下時,shift按鍵是否也被按下。
    當我想當玩家按下鍵盤時,就呼叫myKeyDownHook這函數,
    KAG內部有一個叫kag.keyDownHook,用來放置按下鍵盤時執行的函數,
    當寫上kag.keyDownHook.add(myKeyDownHook),
    這函數加入到kag.keyDownHook內,
    當寫上kag.keyDownHook.remove(myKeyDownHook),
    這函數就在kag.keyDownHook內被移除,
    不過由於keyDownHook只要按下鍵盤就執行函數,
    而並沒有判斷按了哪個按鍵,
    所以要用if等自行判斷,
    而裡面寫上想執行的東西,
    在上述的範例裡,我寫了kag.process("", "*label"),
    效果跟[jump]一樣,
    第一個參數是用來設定檔案名稱,
    第二個參數是用來設定label標籤,
    或者亦可寫上kag.callExtraConductor("", "*label"),
    效果跟[call]一樣,
    那麼按下按鍵時的效果就可以寫在函數外面,
    可以直接用KAG來寫了,
    不過當然,若果懂得TJS的話,也可以把東西直接寫在函數裡面。

    回覆刪除
  3. 嗚哇……好亂>.<
    等等下次再慢慢研究。
    謝謝,還有新年快樂 =D

    回覆刪除
  4. 我要來提問了~OTL
    嘛,只想問 waittrig 和 checkclick 是什麽

    回覆刪除
  5. 我沒聽過有checkclick,
    應該沒有checkclick這種東西吧,
    至於waittrig嘛,
    除非您對KAG內部十分理解,
    否則我也不知道從何解釋好……
    簡單來說,就是等待到某條件觸發為止。

    回覆刪除
  6. 抱歉,checkclick我再看一篇原來是marco的tag OTL

    話説KAG 和 krkr 到底有何分別?
    krkr可以寫KAG的程式麽?

    回覆刪除
  7. 關於KAG是什麼可以看看這篇,
    http://kibitz2550.blogspot.com/2011/05/blog-post.html

    回覆刪除
  8. 想指教下我的是960x600
    如果全屏的話,會不平均(例如:左邊的黑色邊比右邊大,右邊的已經被蓋了一小邊)
    要如何才能使它們平均呢?O.O

    回覆刪除
    回覆
    1. 這個嘛……
      其實之前介紹Config.tjs時已經提及過,
      雖然視窗寬度和高度可以自由調整,
      不過全螢幕可能會出現問題,
      尤其是960x600等奇怪的比例(16:10),
      並不能保證每部電腦的效果都是一樣的。

      刪除
  9. 我又來學習了0v0
    話説Mapaction這東西有自備的TJS麽?
    因爲我無論怎樣做都會出錯誤

    标记 : mapaction ( ← 可能显示了错误前后的标记 )
    ストレージ save_bg.ma を开くことができません

    (我已經有 save_bg.png 和 save_bg_p.png)
    謝謝指教了0w<

    回覆刪除
    回覆
    1. 除了save_bg.png和save_bg_p.png之外,
      還需要叫save_bg.ma的檔案,
      這檔案是用來設定不同區域時的效果,
      其實可設定的東西跟[link]差不多,
      不過要留意一下格式,
      編號: 屬性1=值; 屬性2=值;
      例如好像以下的模樣,
      8: storage="select.ks"; target="*choice8";
      然而,這個編號不是隨便決定,
      是根據save_bg_p.png的調色盤(或稱為調色板,不太清楚正確的名稱)裡,
      利用各個顏色的索引值來決定的。

      刪除
    2. 有了的說,不過一直出那問題“找不到save_bg.ma”
      明明我已經寫了……

      刪除
    3. 最有可能的原因是檔案編碼的問題,
      因為吉里吉里支援的是Unicode LE,
      若果是其他編碼的話有可能出現讀不到檔案的情況。

      刪除
    4. 恩,完成了,那麽最後問題,
      我拿了別人的圖來做範例,結果成功了。
      之後我自己做一個,用別人的圖的顔色來上色,不過卻出了buffer overrun detect錯誤。
      請問爲什麽會這樣子呢?這顔色的INDEX到底是怎樣做得呢?

      刪除
    5. 留意save_bg_p.png必須儲存成256色,
      這裡我先講解一下256色的原理,
      而所謂256色是指圖像檔儲存了256色,
      再利用這256色來表示圖像的各種顏色,
      這256色在圖像檔裡有自己本身的索引值,
      吉里吉里就是利用這些索引值來區分各個區域,
      而索引值只要使用繪圖軟體就可以找得到。

      刪除
  10. [if exp="kag.getBookMarkDate((sf.saveinfo.page - 1) * 8 + tf.saveload.thumbnail) == ''|| askYesNo('確定要覆蓋嗎?')"]

    求救,我的版本是2.28,YesNoDialog.tjs裏沒有
    drawDevice.preferredDrawer = global.Window.PassThroughDrawDevice.dtDrawDib;
    這東西(只有2.3版本才有,而且只能用在2.3版本的exe)

    之所以呢,無法使用askYesNo,雖然它會出現,但不管按了yes還是no都會無反應。
    我該如何把yesno有反應化呢?
    (另外資源來自日文的save教程 tjs.rdy.jp/TJS0607.html)
    我只差這個覆蓋的部分而已>_<

    回覆刪除
    回覆
    1. askYesNo()會因應選擇而傳回true或false,
      true代表按了yes,false代表按了no,
      從而決定[if]和[endif]之間的東西執行與否,
      若果按了yes還是no都沒有反應,
      不一定代表是askYesNo()的問題,
      建議先確認當按了yes時,
      [if]和[endif]之間有沒有被執行,
      若果有的話,就代表是其他部分的問題。

      刪除
    2. 應該沒什麽問題的阿,因爲我試用版本3的可以用,反而舊的版本不能用
      (不用新版的原因因爲有小黑塊(很礙眼))

      刪除
  11. 請問.....遊戲都做好了(完成)之後data內的資料該怎麼辦?
    如果刪除的話會無法運行,可是如果不刪除的話會被人更改first.ks的內容......

    回覆刪除
    回覆
    1. data內的資料當然不能夠刪除,
      畢竟吉里吉里需要讀取這些檔案。
      不過一般來說,我們總不想其他人隨意看到data資料夾內的檔案,
      所以我們可以考慮將它們封裝起來,
      只要利用在tools資料夾裡的krkrrel.exe,
      就可以將data資料夾的所有檔案製作成xp3檔案,
      那麼其他人就不會輕易看到data資料夾內重要的檔案。

      刪除
  12. 請問一下...我想做存檔系統,但儲存的功能是會讀取最近的label標籤,這樣不就必須在遊戲內每個句子前都加入*│ ?
    不知道有沒有比較方便的作法?
    以及不知道吉里吉里能不能做到像一般AVG遊戲Option內那種用拖移的方式來調整系統音量、文字速度?
    不好意思問題有點多,但我還想知道吉里吉里能不能做出在文字視窗旁邊,點擊後開啟Auto、skip等功能?
    因為單用吉里吉里內建的功能列比較不精緻,希望可以使他美觀一點

    回覆刪除
    回覆
    1. 有關於儲存的問題,如果不是KAG-EX等版本,
      的確是要在每個句子後前都加入*│。
      當然,我們可以用巨集來簡化它,如果將[p][cm]*│這三種東西製作成一個巨集,
      那麼就會比較方便一點。
      如果是KAG-EX,可以修改Config.tjs裡的autoLabelMode,這就不用加入*│。
      而拖移的問題,如果不是KAG-EX等版本亦都是沒有辦法的,
      如果是KAG-EX,則可以利用[slider],
      至於最後一個問題,這個解決方法比較困難,
      我們要用到enterAutoMode()和skipToStop()這兩個函式,
      再利用[button]或[link]等呼叫它們,例如好像以下這樣,
      [link exp="kag.enterAutoMode()"]Auto[endlink]
      [link exp="kag.skipToStop()"]Skip[endlink]

      刪除
    2. 感謝教學~
      系統部分我決定改成用一格一格的方式調整
      但其他部分還有些問題
      我試著用巨集寫了:
      [macro name="c"]
      [p][cm]
      *|
      [endmacro]
      來製作儲存label,但開啟遊戲時,巨集內 *|的部份卻出現錯誤(錯誤提示內有出現iscript),請問我哪裡寫錯了?
      然後SKIP功能上,可以調整已讀跳過與未讀跳過嗎?

      刪除
    3. 這是由於巨集裡不能有label標籤,
      不過可以透過[call]等加入label標籤,
      而上述的Skip功能已經是已讀跳過,未讀的並不會跳過的,
      如果想連未讀都跳過,則可以使用skipToStop2()這個函式。

      刪除
  13. 請問有辦法修改krkr的YesNoDialog的圖案嗎

    回覆刪除
    回覆
    1. 不確定您所說的圖案是不是YesNoDialog的背景,
      YesNoDialog雖然有辦法修改,
      不過絕對不是容易的事,
      我建議您可以直接在網上尋找一下別人的code去用,
      這樣可能會比較容易。

      刪除
  14. 想問下,對話框裏已有sysbutton,遊戲save了后再load進去,發現對話框裏的sysbutton不見了,這是爲什麽?

    @macro name=dialog
    [position page=back layer=message0 後面省略]
    [sysbutton name=auto x=242 y=572 graphic=pspb1 exp="kag.callExtraConductor('rmenu.ks', '*omg')"]
    @endmacro

    然後是遊戲開始后的一段時間……就放入[dialog],后save,然後沒回標題而選擇load的話sysbutton還在。回標題的話再load則不見。

    回覆刪除
    回覆
    1. 第一種可能性是你的標題畫面有[csysbutton],
      所以系統按鈕被消除,
      第二種可能性是有可能message0被設定為不顯示,
      所以在message0上的系統按鈕沒有顯示出現。

      刪除
    2. 標題確實有csysbutton,那麽請問我該怎麽辦呢?

      刪除
    3. 一般來說,我們不太常使用[csysbutton],
      因為[csysbutton]會將所有系統按鈕被消除,
      若果我們希望暫時不顯示那些系統按鈕,
      可以設定message0為不顯示,
      那麼在message0上的系統按鈕亦會因此而不會被顯示出來。

      刪除
  15. 回覆
    1. yo 零12342 xD





      話説大大還健在麽……?好久沒更新有點擔心……
      還是下一個教程是非常長的那種00?

      刪除
    2. (;° ロ°)゚。版主你真的還在麽?至少回復下阿,我好擔心阿

      ・゚゚・(>д<)・゚゚・。

      刪除
    3. 對不起,要大家擔心。
      由於前陣子有點忙,所以忘了更新。
      最近應該可以重新開始寫教學了,
      所以大家不用擔心。

      刪除
    4. 還健在實在太好了 ><
      別忙坏身體哦0w0

      刪除
  16. 我想問關於CG的事。
    [button graphic="cg1s" exp="f.cgname='cg1-1'" target=*显示CG cond="sf.cg1==true"]
    (略了一些)
    [cm]
    [backlay]
    [image layer=4 page="back" storage=&"f.cgname" visible="true"]
    [trans method="crossfade" time=200]
    [wt canskip=false]
    [waitclick]
    [backlay]
    [freeimage layer=4 page="back"]
    [trans method="crossfade" time=200]
    [wt]

    然後這個CG有兩張,我想要點擊后出現cg1-1,再點擊出現cg1-2,我該怎麽做?

    回覆刪除
    回覆
    1. 行的話,並不是單純的 @image=cg1-1 @trans @image=cg1-2
      因爲要同時與其他的cg共享

      刪除
    2. 唔……不太理解你說的要同時與其他的cg共享是什麼意思,
      請問可不可以順便說一下你想製作的是什麼東西,
      因為單看這些程式碼不太能理解你想做什麼……

      刪除
    3. (被吃掉了--)
      這是CG界面
      如果不介意的話請看http://tieba.baidu.com/p/2071267424
      如冒犯的話請刪除><

      刪除
    4. 對不起,此問題已經解決了><
      不過謝謝你的回應(當初以爲問太多被討厭了沒回復>_<)

      刪除
  17. 請問一下,我在其他作品上有看過
    [button normal="return_1.png" over="return_2.png" storage="cg.ks" target="*dcgbox"]
    這條式子,因為要把圖片串城一張需要另外製圖有點費工,所以我模仿其button的用法,想讓button功能不同時候的圖片可以分成2~3張,但卻出現錯誤,請問是KRKR沒有這個功能嗎?者有類似的方法可以修改嗎?

    回覆刪除
    回覆
    1. 這是KAG-EX或KAGeXpress等版本新增的功能,
      原本的吉里吉里並沒有這個功能,
      這可以說是吉里吉里其中一個缺點……

      刪除
  18. 你好~我是第一次接觸krkr的新手,電腦什麽的只懂HTML..我現在只懂寫劇本...有太多太多的問題想問你了~可以私下談嗎?

    回覆刪除
    回覆
    1. 歡迎隨時在這裡發問問題,
      我會儘可能解答的,
      如果不方便在這裡問的話,
      可以email至kibitz2550@gmail.com問問題,
      不過由於我偶爾才看一下email,
      所以不一定能馬上回覆。

      刪除
  19. 想請問一下
    KRKR能夠做出像一般AVG一樣
    儲存時能把當下圖片顯示出來的效果嗎?

    回覆刪除
    回覆
    1. 當然可以,而且方法十分簡單,
      首先在Config.tjs裡將saveThumbnail設定為true,
      然後利用kag.getBookMarkFileNameAtNum(num)來指定儲存檔的縮圖,
      其參數是用來指定哪一個儲存檔,用法的話可以看看以下的例子。
      [image storage="&kag.getBookMarkFileNameAtNum(0)" page=fore layer=0 visible=true]

      刪除
    2. 不好意思儲存的方式看不太懂
      [image storage="&kag.getBookMarkFileNameAtNum(0)" page=fore layer=0 visible=true]
      這條是讀取的方式,那請問一下顯示出來的圖示就直接是小張的縮圖嗎?
      所以可以用locate移動位置嗎?
      而儲存縮圖的方式我寫成
      [link exp="kag.getBookMarkFileNameAtNum(0)"]save[endlink]
      請問哪裡出錯了呢?

      刪除
    3. 當Config.tjs裡將saveThumbnail設定為true時,
      所有新的儲檔都會儲存成bmp檔案,
      並放在savedata資料夾內。
      而kag.getBookMarkFileNameAtNum(num)其實是傳回這儲存檔縮圖的路徑,
      所以可以利用它來指定[image]裡storage所需要的檔案路徑。

      刪除
  20. 請問一下,想要設計自訂的_視窗、全螢幕切換,要用哪種函式。
    另外請問有沒有像
    exp="kag.enterAutoMode()"
    exp="kag.skipToStop()"
    等函式的整理表?如果有方便的功能想使用~

    回覆刪除
    回覆
    1. 如果想切換成全螢幕,
      可以用onFullScreenMenuItemClick()來切換,
      想返回視窗模式的話,
      則可以用onWindowedMenuItemClick()來切換。

      刪除
  21. 你好,文字方面我明白了,但是背景那裡就完全不懂..那些函式在哪裡打啊?

    回覆刪除
    回覆
    1. 所有KAG教學裡的範例只要複製到first.ks就可以執行了。

      刪除
  22. 想請問一下,有沒有辦法讓背景與對話框一起執行crossfade?
    直接使用[layopt layer=message0 visible=false]對話框消失的太突然,請問有沒有改善的方法。

    回覆刪除
    回覆
    1. 如果是想讓背景與對話框一起執行crossfade,
      可以參考以下的方法,
      [position page=fore layer=message0 left=0 top=320 height=160 width=640]
      [image storage="bg1" page=fore layer=base]
      圖層切換之前[p][cm]
      [backlay]
      [layopt layer=message0 page=back visible=false]
      [image storage="bg2" page=back layer=base]
      [trans method=crossfade time=1000]
      [wt]

      刪除
    2. [current layer=message0]
      [position layer=message0 top=15 left=15 height=600 width=800 page=fore opacity=0]
      [backlay]
      [layopt layer=message0 page=back visible=true]
      [image storage="title" page=back layer=base]
      [trans method=crossfade time=500]
      [wt]
      這是我的寫法,但仍無法同時進行crossfafde,請問錯誤的地方?

      另外還有這條
      [image storage="firstp" layer=0 page=fore visible=true]
      [move layer=0 time=50000 path="(0,-2000,255)" ]
      [wm canskip=false]
      在這向操作時出現錯誤框,內容為
      "發生了致命的錯誤。
      檔案 : start.ks 行 : 8
      指令 : image ( ← 表示可能在發生錯誤的前後的指令 )
      (void) から Object へ型を変換できません。Object 型が要求される文脈で Object 型以外の値が渡されるとこのエラーが発生します"
      請問原因?

      PS.我使用的是KAGEX

      刪除
    3. 留意opacity=0不等於visible=false,
      您只需要將[position]的visible設定為false,就好像以下的模樣。
      [position layer=message0 top=15 left=15 height=600 width=800 page=fore visible=false]

      刪除
  23. 請問一下,我在將data資料夾封裝成XP3後,在執行遊戲時出現如下錯誤
    スクリプトで例外が発生しました
    パス名 ../data/system/Initialize.tjs は無効な形式です。形式が正しいかどうかを確認してください
    請問原因?

    回覆刪除
    回覆
    1. 我建議您先檢查一下Initialize.tjs有沒有問題,
      如果本身的Initialize.tjs沒有修改過,
      可以試一下重新複製新的Initialize.tjs來取代它。

      刪除
  24. 我想請問一下,在對話框內有沒有辦法讓文字置中?
    另外我還想知道slider有哪些指令,以及簡單的用法。

    回覆刪除
    回覆
    1. 如果想讓文字置中的話,
      可以用style的align屬性設定為center,就好像以下的模樣。
      [style align=center]

      而[slider]的屬性有很多,
      例如width和height設定高度和寬度,
      bgcolor設定背景顏色,
      opacity設定透明度,
      exp設定當按下commit時的TJS式等等。

      刪除
  25. 版大已經不更了嗎?0.0

    回覆刪除
    回覆
    1. 不,會繼續更新的,
      由於最近想建另一個網站,
      前陣子曾考慮是否順便將這個blog移過去,
      不過暫時決定繼續留在這裡。

      刪除
    2. 是這樣啊0w0
      請繼續加油吧(´・ω・`)

      刪除
  26. 版大,十分感謝你呀!
    最近我想用krkr製作遊戲,但不懂用
    幸好有你的教學,感謝:))

    回覆刪除
  27. 雖然版大可能處於忙碌狀態而沒法更新,請繼續支持版大哦

    學習加油:)

    回覆刪除
  28. 我想問怎樣在遊戲開始時讓玩家打自己的名字,然後用自己的名字進行遊戲?

    回覆刪除
    回覆
    1. 首先你需要定義變量如下
      @eval exp="f.name='請寫下名字'"

      然後是讓玩家寫入名字地方
      请输入名字:[r]
      名字:[edit name=f.name][r]
      [link target=*123]完成[endlink][r]
      @s

      按了“完成”后就會到這裡
      *123
      @commit
      於是名字輸入完成
      而在遊戲的時候,只需寫下以下代碼來顯示名字
      @emb exp="f.name"

      話説版大最近還忙麽,還等着tjs的各種教學呢o(≧口≦)o

      刪除
    2. 我還想問這句
      @eval exp="f.name='請寫下名字'"
      是不是因為[請寫下名字]是中文,所以要多用一個引號?
      要是我用英文/數字,是不是可以寫成這樣:
      @eval exp="f.name=abc"

      謝謝回答我上一條問題,幫大忙了XD

      刪除
    3. 除了數字之外,通常吉裏吉裏是不會接受的。
      所以若是寫入了數字之外的東西就得放入開關引號

      刪除
  29. 請問有沒有點擊後播放音效的教學?
    例如有一個名為“確認"按鈕,我想在點擊後播放音效

    回覆刪除
    回覆
    1. 你可以參考這個http://kibitz2550.blogspot.com/2011/08/kag-1_10.html

      刪除
  30. 我想請問一下,有沒有製作人員名單的教學?

    回覆刪除
    回覆
    1. 0.0你可以用普通的方式寫啊

      刪除
  31. 版大您好 我是學習krkr的新手
    謝謝版大提供這麼好的教學給新手學習>"<

    想請問版大能否提示一下立繪表情是如何變換的呢
    還是說不同的表情要不同的檔名稱來取讀 遮色片也是要準備一樣多呢?

    謝謝~

    回覆刪除
    回覆
    1. 歡迎來學krkr~
      你可以參考這項 KAG教學---Transition,圖層切換(1) 來變換立繪/表情

      另外,若你只想重畫表情也是需要不同的檔名(笑臉char1_smile.png,哭臉char1_cry.png等等自己定義的檔名即行)

      若是做分離表情 你可參考 KAG教學---不要再製造不思議事件,顯示前景(2) 來設定表情的位子。



      (´・ω・`)直到版大回來前,我就盡量回答大家的問題吧
      (´・ω・`)版大求報告狀況……

      刪除
    2. 謝謝~這麼一講好像有點領悟了~

      想不到我竟然有看沒有懂~

      再次感謝~orz

      刪除
  32. 大家好,我想請問一下,我想在遊戲中按下空白鍵,使文章淡出觀看背景
    我進入了MainWindow.tjs,改寫onKeyDown(key, shift)

    function onKeyDown(key, shift)
    {
    if(focusedLayer === null)
    internalOnKeyDown(key, shift);
    super.onKeyDown(...);
    if(key == VK_SPACE && sf.space==true) kag.process("space.ks", "*space");
    else kag.process("space.ks", "*spaceout");
    super.onKeyDown(...);
    }

    成功進入了space.ks
    *space
    [clickskip enabled=false]
    [eval exp="sf.space = false"]

    [backlay]
    [layopt page=back layer=message0 visible=false]
    [trans method=crossfade time=500]
    [wt]
    [s]

    *spaceout
    [eval exp="sf.space = true"]
    [backlay]
    [layopt page=back layer=message0 visible=true]
    [trans method=crossfade time=500]
    [wt]
    [clickskip enabled=true]

    但是我出不去了XD,文章就在這邊停了下來,請問我要怎麼出去

    回覆刪除
  33. 捨棄掉onKeyDown(),改用hook的方式,再改一點MainWindow.tjs的onPrimaryClick()
    以達成使用空白鍵使文章淡入淡出,以及文章淡出後,點擊左鍵也可返回文章的功能
    來提供一個簡單的版本吧
    first.ks加入以下程式碼
    @call storage="marco.ks"
    *start
    @startDefiladeDirectionKey
    [eval exp="sf.space = false"]
    [eval exp="sf.gameState='遊戲中'"]
    ;上兩行eval沒有寫也可以執行,不清楚為什麼
    -------------------------------------------------------------------------------------------------------------
    marco.ks加入以下程式碼
    @iscript
    function myOnKeyDown(key, shift)
    {
      if(kag.skipMode == 4 || kag.skipMode == 3 || kag.skipMode == 2)
      {
    //這個skip是為了在skip的時後,能夠使用空白停止下來
       kag.skipKeyRepressed = false;
       kag.skipMode = 0;
       kag.actualChSpeed = kag.chSpeed;
      }
      else{
    //不設這個kag.inStable判斷的話,會造成文字跑的過程中,一按下空白,文章突然就淡出了,而且還是邊跑邊淡出
    //同理,過場的時候按下空白也會出錯,也是用這個kag.inStable來避免
      if(kag.inStable ==true )
      {
    /*sf.space代表現在是不是在空白中
    sf.tran代表現在還在轉場嗎?這個變數很重要,用來防止空白連按會出錯的問題
    也用來防止按下空白後瞬間點擊左鍵會出錯的問題
    或是用來防止在空白中按下空白後瞬間點擊左鍵會出錯的問題
    還有用來防止在空白中點擊左鍵後瞬間按下空白會出錯的問題
    這到底是什麼問題?就是一個"不能執行複數個tran的問題"
    sf.gameState真的有必要存在嗎?不是不行,但是我還沒想得很清楚,所以保留sf.gameState會省事很多*/
       if(key == VK_SPACE && sf.space == false && sf.tran!=true && sf.gameState == '遊戲中')
       {sf.space = true; kag.callExtraConductor("space.ks", "*space"); }
       if(key == VK_SPACE && sf.space == true && sf.tran!=true && sf.gameState == '空白中')
       {sf.space = false; kag.callExtraConductor("space.ks", "*spaceout"); }

       return true;}
      }
    }
    @endscript

    @macro name="startDefiladeDirectionKey"
    @eval exp="kag.keyDownHook.add(myOnKeyDown)"
    @endmacro

    @macro name="stopDefiladeDirectionKey"
    @eval exp="kag.keyDownHook.remove(myOnKeyDown)"
    @endmacro

    [return]
    -------------------------------------------------------------------------------------------------------------
    space.ks加入以下程式碼
    *space
    [eval exp="sf.tran = true,sf.gameState = '空白中'"]

    [backlay]
    [layopt page=back layer=message0 visible=false]
    [trans method=crossfade time=250]
    [wt canskip=false]
    [eval exp="sf.tran = false"]

    [return]
    ;一開始是用kag.callExtraConductor進來的,所以用[return]返回原處來等待點擊

    *spaceout
    [eval exp="sf.tran = true,sf.gameState = '遊戲中'"]

    [backlay]
    [layopt page=back layer=message0 visible=true]
    [trans method=crossfade time=250]
    [wt canskip=false]

    [clickskip enabled=true]
    [eval exp="sf.tran = false"]
    [return]
    -------------------------------------------------------------------------------------------------------------
    hide.ks加入以下程式碼
    *hideout
    [eval exp="sf.gameState = '遊戲中',sf.space = false"]
    [layopt page=back layer=message0 visible=true]
    [trans method=crossfade time=250]
    [wt canskip=false]

    [clickskip enabled=true]
    [return]
    -------------------------------------------------------------------------------------------------------------
    MainWindow.tjs的onPrimaryClick()修改如下
         if(sf.space == true && sf.tran!=true && sf.gameState == '空白中')
         {
            sf.space = false;
            kag.callExtraConductor("space.ks", "*spaceout");
         }
         else{ 其他內容全部放這 }
    -------------------------------------------------------------------------------------------------------------
    這邊提供一個連結http://0rz.tw/35VNj
    沒有意外的話,覆蓋之後,可以看一下效果

    回覆刪除
    回覆
    1. 再一次說下抱歉了
      這麼久也沒回復你

      刪除
    2. 沒關係,我一開始以為你是版大

      刪除
  34. http://0rz.tw/v4RZC
    這是有右鍵的版本,請自行使用自己的右鍵圖片,就可以看到效果了

    回覆刪除
  35. 不知道有沒有可以判斷trans結束與否的變數

    常常會遇到不能執行複數個trans的錯誤

    回覆刪除
  36. 已經快2年了…… 我依然在等待著 函式(補充篇) 到來的日子 >(;ω; s)

    回覆刪除
  37. 板大您好,我是新手..想請問一個蠢問題..比如說我的遊戲進行到一半有地圖可以選擇要去哪,有15個地方可以選擇,我想設定一次只能讓玩家挑3個地方走,就回到主線劇情,我之前是用尋找標籤的方式,一個一個連到對應的地方,可是後來發現這樣同樣的地圖我要複製幾百遍,因為地圖到後來還會一直出現供玩家選擇,那我不就要做幾百個標籤地圖...因為標籤要寫不一樣否則會重複到同個章節,請問有什麼方法可以只有一個地圖運用到各個章節嗎?還是說本來就應該一個一個寫標籤,每次出現同一個地圖就複製一個這樣呢?謝謝幫忙喔

    回覆刪除
    回覆
    1. krkr備有不必重復每個步驟的代碼的
      不過咱不是很明白你的問題
      但或許解決方法是這樣:

      (地圖選項)
      [if exp="f.map1=true"](若現在還在劇情的第一段的話,true)
      @if exp="f.sline1=true"](這裡再放入的if是為避免從同樣的地方出來后還能回去同樣的地方的情況)(看看你是否要主角能夠返回同樣地方不)
      @exp="f.sline1=false"]
      [button target......](這裏的按鈕一按就會到達你的支綫劇情)
      [s]
      @elsif exp......(這裡是重復,支綫地圖換成別個地方)
      [button...]
      @endif(支綫劇情完了后再回到這裡來,由於第一段支綫已結束(false),所以這裏的地方就不會存在按鈕)
      [eval exp="f.map1=false"](避免第二段劇情進入第一段劇情,把第一段false掉)


      [elsif exp="f.map2=true"]
      [eval exp="f.map2=false"]
      [button......](另一個支綫劇情)
      (重復)
      [endif]

      希望能答中你的問題,若有不懂再來問吧

      刪除
    2. 謝謝您n n 我瞭解了

      刪除
  38. 還有我的遊戲裡面有養成面板,有讀書,休息之類的按鈕,有個選項是'日記',點選的話可以查看各角色好感度,在好感度介面下要怎麼讓他按返回的時候回到養成面板讓玩家繼續做別的事情@@?目前也是用標籤連的...,可是發現這樣的話到最後同樣的系統也要複製幾百個寫不同的標籤名稱,請幫幫忙,問題有點多,感謝喔

    回覆刪除
    回覆
    1. 問得時間正好,咱剛迴來網絡世界,給咱一天時間回復你看看(ps咱非版大)

      刪除
    2. 雖然不是很理解(個人理解能力差),這大概跟rclick選單一樣的道理吧,這裡還沒教到那程度。(ps.咱很久沒做了,只是簡單介紹下)

      首先做個呼叫日記的東西
      [rclick call=true storage="" target="" enabled=true]
      [locksnapshot]
      裏面就放你要的東西
      然後返回原本的地方就放:
      [unlocksnapshot]
      [return]
      大概是這樣吧

      刪除
    3. 我大概知道了,謝謝您的解答n n

      刪除
    4. 成功了成功了><太感謝您了!!謝謝喔

      刪除
  39. 大大你好~
    本人在找到月姬這款遊戲後玩不了。開了APPLOCALE, 試了在杷容性一欄選了不同的WINDOW 版本仍是不能進入遊戲。去到最尾一行總會出現
    kag.process("first.ks")

    看了提示出現的是
    読み込みエラーです at initialize.tjs line 88 [(function) KAGLoadScript]

    スクリプトで例外が発生しました
    読み込みエラーです

    是不是因為本人用的WIN 7 家用版SP1 才會有這問題? 有沒有什麼可順利進入遊戲? 求大大幫忙,謝謝~

    回覆刪除
    回覆
    1. 大大大概已經不在這裏了,我是擅自幫忙回答的一個學生(?)。
      比起applocale,有時你得換換整個電腦語言系統才能執行。

      另外,希望你能利用搜索引擎找找月姬相關的錯誤,我相信外面的會更能夠幫到你(原因:我沒玩過也不記得該錯誤(汗))

      刪除
  40. 對不起 這個問題可能很愚蠢^^"
    我完成遊戲後是否一定要人家下載來玩? 可不可以直接嵌入網頁中像一些flash game讓人玩? THX

    回覆刪除
    回覆
    1. 很抱歉那麼遲才回复你,雖然大多數都是下載來玩的,個人認為上網站玩貌似可以辦到,不過是需要技術的,你可以嘗試去貼吧或其他地方問一問,抱歉我沒有這方面的經驗和知識。

      刪除
  41. 老師您好 我用了您所UNICODE過的程式 但是上排工具列仍是以???表示 請問有辦法解嗎?
    (利用游標拖曳那種)
    另外 能不能讓玩家自行放大縮小調整自己想要的視窗大小 而不受限於預設值
    而且是在於"鎖定視窗比例"下進行調整 以防圖片失真 請問老師這要到哪裡設置呢?

    回覆刪除
    回覆
    1. 此留言已被作者移除。

      刪除
    2. 利用游標拖曳視窗4邊和4個角那種

      刪除
  42. 請問老師要怎麼自製存檔介面 然後可以直接點選存檔縮圖到存檔進度

    回覆刪除
  43. 請問快讀快存的選項要去哪裡設定呢??找好久呀><""

    回覆刪除