2012年3月16日星期五

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

(k ゚∀゚)<上一次介紹了基本的存檔和讀檔,不過相信大家都不太想利用吉里吉里的功能列來存檔和讀檔,而是自製一個存檔和讀檔介面給玩家,所以今次會介紹[save]和[load]。

[save]和[load]是用來存檔和讀檔嗎?>( ゚ω゚ s)

(k ゚∀゚)<對呀,它們的效果跟功能列上的存檔和讀檔一樣,而且[save]和[load]還可以設定存檔和讀檔時是否詢問玩家。

正常來說,我們不是應該詢問玩家是否存檔和讀檔嗎?有什麼時候會不詢問玩家?>( ゚ω゚ s)

(k ゚∀゚)<有些遊戲提供了自動存檔的功能,每當通過劇情的某個位置,遊戲就會自動存檔,這時我們就不會詢問玩家,當然,玩家也不希望被詢問是否存檔。

(k ゚∀゚)<不過在介紹[save]和[load]之前,我們先理解一下吉里吉里有兩種機制來存檔,第一種是存檔時會開啟一個對話框來存檔,好處是存檔數量沒有限制,存檔位置也可以隨意,第二種是由吉里吉里去管理,存檔數量會受numBookMarks限制,存檔位置也有限制,兩者是由Config.tjs裡的freeSaveDataMode控制,。一般來說,現在的遊戲極大部分都使用第二種,甚少會使用第一種。

既然你說存檔位置有限制,那到底儲存在哪裡?>( ゚ω゚ s)

(k ゚∀゚)<在不修改Config.tjs的情況下,它們儲存在savedata資料夾裡,檔案的名稱為data0.kdt等,名稱上的數字是對應的儲存位置編號。

那麼[save]和[load]怎樣使用才能儲存和讀取這些檔案,不如先說[save]。>( ゚ω゚ s)

(k ゚∀゚)<嗯,那先看以下的範例。

label1|儲存點1
[save place=0 ask=false]

(k ゚∀゚)<當執行完上述的範例,吉里吉里把存檔儲存在儲存位置0裡,place代表儲存的位置,預設值是0,ask是設定詢問與否,true代表會詢問是否存檔,false則不會詢問,預設值是false。

(k ゚∀゚)<而place屬性的值理論上是任何正整數都可以,但是由999至1999的位置有特別用途,所以應該避免使用,當place屬性的值是0時,吉里吉里儲存到data0.kdt裡,如果place屬性的值是1,檔案名稱便是data1.kdt,如此類推。

那麼[load]呢?>( ゚ω゚ s)

(k ゚∀゚)<基本上跟[save]差不多,那先看以下的範例。

label1|儲存點1
[load place=0 ask=false]

(k ゚∀゚)<當執行完上述的範例,吉里吉里把讀取儲存在儲存位置0裡的儲存檔,place代表讀取的位置,預設值是0,ask是設定詢問與否,true代表會詢問是否讀檔,false則不會詢問,預設值是false。

(k ゚∀゚)<如果[load]讀取的儲存位置沒有該檔案,吉里吉里會忽略這個[load],例如place屬性的值是0,但若果沒有data0.kdt這個檔案,吉里吉里就會忽略它。

(k ゚∀゚)<今次先介紹到這裡,至於如何製作一個存檔和讀檔介面,以後有機會才介紹吧。

8 則留言:

  1. 來了來了終于來了~!我等待已久的……

    「至於如何製作一個存檔和讀檔介面,以後有機會才介紹吧。」

    …………
    ……

    哇啊啊啊啊啊(哭走

    回覆刪除
  2. 謝謝大大的教學 > <
    超級仔細的!!!
    另外我想問一下,請問吉里吉里有辦法做出紙娃娃系統嗎?

    回覆刪除
    回覆
    1. 如果純粹問有沒有辦法的話,
      紙娃娃系統是有辦法做出來的,
      紙娃娃系統的原理只是把數張圖片重疊起來,
      我們只需要使用幾個前景圖層來將圖片重疊起來就行了,
      不過實際做起來就不是容易的事,
      因為要調整圖片到正確的位置,
      這做起來會十分麻煩和花時間。

      刪除
    2. 其實位置那些倒是還好...因為我的圖其實大小是固定的ww
      我之前也有想到放在不同圖層,利用語法讓他替換圖層來達到"換裝"的目的
      不過要如何讓他同一個腳本顯示出不同的服裝,倒是還沒有找到辦法解決
      ex: 在home.ks裡,主角本來是穿默認服裝cloth01(layer=1),後來我到換裝的腳本換上cloth02(layer=2),換裝結束後回到home.ks

      在home.ks裡我本來有一句語法來顯示一開始的人物立繪
      [image storage="cloth01" layer=1 page=back top="0" left="0" visible=true]

      我要如何讓系統能明白,當執行換裝以後,要忽視上面那句語法,直接執行寫在下面的cloth02的語法呢?
      [image storage="cloth02" layer=2 page=back top="0" left="0" visible=true]

      問題敘述有點繁雜,真不好意思m(__ __)m

      刪除
    3. 其中一個可行的方法是把現在服裝的檔案名稱和圖層利用變數儲存起來,
      例如我用f.cloth和f.clothLayer來儲存檔案名稱和圖層,
      f.cloth的值一開始是"cloth01",f.clothLayer則是1,
      當換裝的時候,我只是把f.cloth的值改成"cloth02",
      f.clothLayer則改成2,
      當我要顯示人物立繪時,只要寫下這句
      [image storage=&f.cloth layer=&f.clothLayer page=back top="0" left="0" visible=true]
      顯示服裝所指定的檔案和圖層就會因變數裡的值而改變。

      刪除
    4. 好的,我用這個方法下去試試看:)

      非常謝謝你!!

      刪除
  3. 如果要製作遊戲,包括存讀檔介面製作
    要看到TJS教學嗎 還是看KAG就可以了?

    回覆刪除
  4. 請問詳細的存檔教學會繼續嗎?謝謝

    回覆刪除