鐵之狂傲

 取回密碼
 註冊
搜尋

切換到指定樓層
1#
這程式碼是小弟當初在研究NS的存讀檔介面時弄的
因為有人需要...所以在下就發出來了...XD
由於在下不太會打教學主題,所以對我來說比較好的方法就是直接PO出來... ̄▽ ̄|||
不知道會不會造成版主的困擾...OTZ

如果在觀看的時候發現很多語法的用法不知道是什麼的話
建議還是要先學一下基礎,這樣看起來會比較方便

裡面程式碼沒那麼多,當初也是從偽聖書裡面學的,所以看起來應該會比較熟悉&清楚一些吧!
頁底有範例檔下載,檔案大概可以活一個禮拜吧...(笑
畢竟空間是在下跟別人借來的...也不好意思佔用太久...OTZ

;mode800
;-------------------------------------------------
;-------------------------------------------------
*define
savedir "save\"  ;設定存檔位置
windowback
deletemenu
effect 2,10,2000
effect 3,10,500
globalon
labellog
textgosub *youjian
defsub save  ;定義存檔標籤
defsub load  ;定義讀檔標籤
game
;-------------------------------------------------
;-------------------------------------------------
;☆對話系统
*youjian
erasetextwindow 0 ;執行效果時文字框不消失
btndef ""
*tbloop
textbtnwait %0
repaint
if %0=-1 goto *youmenu    ;對話時按右鍵則開啟右鍵選單
if %0=0 goto *text_end    ;對話時按左鍵的話則繼續對話
goto *tbloop
;-------------------------------------------------
;-------------------------------------------------
;☆繼續前進
*text_end
texec
saveon
return
;-------------------------------------------------
;☆右鍵選單
*youmenu
csp -1
lsp 120,":c;bgd\sysmeun.jpg",0,0
btndef ""
lsp 100,":c/2,0,3;icon\btnlsp1.jpg",0,175
lsp 101,":c/2,0,3;icon\btnlsp2.jpg",0,206
lsp 102,":c/2,0,3;icon\btnlsp3.jpg",0,275
lsp 103,":c/2,0,3;icon\btnlsp4.jpg",0,310
print 3
*spbtn
spbtn 100,100
spbtn 101,101
spbtn 102,102
spbtn 103,103
*spbtn0
btnwait2 %0
if %0==-1 csp -1:goto *tbloop   ;消除圖片,回到對話系統
if %0==0 goto *youmenu          ;等待
if %0==100 save                 ;存檔
if %0==101 goto *loadgame       ;讀檔
if %0==102 reset                ;返回標題畫面
if %0==103 end                  ;结束遊戲
goto *youmenu
;-------------------------------------------------
;-------------------------------------------------
;☆存檔系統
*save
csp -1
lsp 233,":c;bgd\save.jpg",0,0
lsp 1,":a/2,0,3;icon\savelsp1.jpg",0,205
print 3
btndef ""
spbtn 1,1
*savewait
btnwait2 %0
if %0<0 csp -1:return           ;右鍵,消除圖片,選單
if %0=0 goto *savewait          ;等待
if %0>=1 savegame %0:goto *save ;存檔完畢,返回等待
;-------------------------------------------------
*start
;-------------------------------------------------
;☆標題
*title_1
bg "bgd\title_0.jpg",3
goto  *title0
*title0
mp3loop "bgm\02.mp3"
btndef "btn\title0btn.jpg"
btn 1,470,460,300,20,470,460
btn 2,470,495,300,20,470,495
btn 3,470,530,300,20,470,530
*title0wait
btnwait2 %0
if %0<=0 goto *title0wait
if %0==1 goto *newgame
if %0==2 goto *load
if %0==3 goto *endgame0
stop
;-------------------------------------------------
;-------------------------------------------------
;☆遊戲結束
*endgame0
end
;-------------------------------------------------
;-------------------------------------------------
;☆遊戲中讀取
*loadgame
gosub *load_0 ;跳至讀取公共事件
*load_game1
btnwait2 %0
if %0<0 csp -1 :goto *youjian
if %0=0 goto *loadgame_1
if %0>=1 loadgame %0
;-------------------------------------------------
;-------------------------------------------------
;☆標題讀取
*load
gosub *load_0 ;跳至讀取公共事件
*load_1
btnwait2 %0
if %0<0 csp -1:goto *title_1
if %0=0 goto *load_1
if %0>=1 loadgame %0
;-------------------------------------------------
;-------------------------------------------------
;☆讀取公共事件
*load_0
csp -1
lsp 219,":c;bgd\load.jpg",0,0
btndef ""
lsp 1,":a/2,0,3;icon\loadlsp1.jpg",0,205
savefileexist %1,1:if %1=1 spbtn 1,1 ;判斷此存檔格上是否有存檔,有的話則指定圖片為按鈕並且讀取
return
;-------------------------------------------------
;-------------------------------------------------
;☆開始遊戲
*newgame
mp3loop "bgm\01.mp3"
bg "bg\01.jpg",3
setwindow 50,440,28,4,26,26,0,2,20,1,1,#5599dd,40,430,780,570
ld l,":a;reimu04.bmp",3

皆さん,私は博麗霊夢だ,よろしくおねがいします\
接下來是內文測試喔\
接下來是內文測試喔一\
接下來是內文測試喔二\
接下來是內文測試喔三\
接下來是內文測試喔四\

textoff
*ending
reset

按我下載(點擊後會進入下載頁面)

[ 本文最後由 發條人形紅舞鞋 於 08-2-4 12:43 PM 編輯 ]

[ 本文章最後由 發條人形紅舞鞋 於 08-7-2 18:45 編輯 ]
 
轉播0 分享0 收藏1

回覆 使用道具 檢舉

正點~~!!
我範例先服用了~
今天晚上上班來測試看看!
有什麼問題再來跟奇才大討教一下~
附件檔案如果不大的話
可以直接上傳去鐵傲的空間就好~
這樣也不用浪費自己的空間
還不錯用喔=W="

順便標題幫你補上【程式】~

幫你上傳附件檔案@V@"
只要把"-"去掉貼回你的文章就OK了~

原來我檔案沒下載完全....竟然沒人告訴我~囧!!!!

[ 本文最後由 dghylkop 於 07-12-13 12:20 AM 編輯 ]
 

回覆 使用道具 檢舉

無名的勇者

天繾寶寶說你好

好令人感動喔~是存檔系統耶@@
我我有問題(舉手舉直直

*save裡
lsp 1,":a/2,0,3;icon\savelsp1.jpg",0,205
print 3
btndef ""
spbtn 1,1


其中不能直接寫成↓↓嗎?
lsp 1,":a/2,0,3;icon\savelsp1.jpg",0,205
spbtn 1,1

還是
btndef "" print 3有特殊義意?

如果說要多作幾個存檔區的話,
那只要在多設幾個按鈕和判別?
偽聖書的lsp後面接文字變數是要用來作時間存檔的??



補充 存讀檔注釋

奇才大的感人教學
;☆存檔系統
*save
csp -1;清除所有物件
lsp 233,":c;bgd\save.jpg",0,0;預載物件233並默認為可見
lsp 1,":a/2,0,3;icon\savelsp1.jpg",0,205;預載物件1並默認為可見
print 3;刷新畫面3號效果

btndef "";預載按鈕懸停圖片
spbtn 1,1;將物件1指定為按鈕1

*savewait
btnwait2 %0;點擊按鈕以外區域 返回值0 不清空按鈕定義內容
if %0<0 csp -1:return           ;右鍵,消除圖片,選單
if %0=0 goto *savewait          ;等待
if %0>=1 savegame %0:goto *save ;存檔完畢,返回等待

奇才大的感人教學
;☆讀取公共事件
*load_0
csp -1;清除所有物件
lsp 219,":c;bgd\load.jpg",0,0 ;設置背景
btndef "";預載按鈕懸停圖片

lsp 1,":a/2,0,3;icon\loadlsp1.jpg",0,205;預載物件1並默認為可見

savefileexist %1,1:if %1=1 spbtn 1,1 ;判斷此存檔格上是否有存檔,有的話則指定圖片為按鈕並且讀取

return;從公共事件返回


以上 非常感謝奇才大!
 

回覆 使用道具 檢舉

>>其中不能直接寫成↓↓嗎?
>>lsp 1,":a/2,0,3;icon\savelsp1.jpg",0,205
>>spbtn 1,1
>>還是btndef "" print 3有特殊義意?

這樣的話lsp1就不能夠顯示出來,雖然有時候也會顯示出來,只是這樣就沒有顯示的畫面效果了
像是print 3的"3"則是顯示畫面的時候使用當時定義的畫面效果(effect 3,10,500)

至於btndef ""當然就是先預載圖片了,雖然沒打這行好像沒差,不過或許會對未來其他部份造成影響

>>如果說要多作幾個存檔區的話,那只要在多設幾個按鈕和判別?
可以這樣說,不過也有可能會遇到錯誤
我記得當初我也是這樣做的時候曾經發生錯誤,但事後面怎麼解決就忘記了...OTZ(來人阿~拖出去踹

>>偽聖書的lsp後面接文字變數是要用來作時間存檔的
恩...偽聖書裡面並沒有時間記錄的程式呢
如果是說這個的話(如下):

;★存儲用公共事件
*savesub
btndef ""
csp -1
lsph 49,":c;bgd\save.jpg",0,0
vsp 49,1
lsp 8,$217,253,555

lsp 9,$201,82,108
lsp 10,$202,82,159
lsp 11,$203,82,212
lsp 12,$204,82,265
lsp 13,$205,82,316

他變數裡面的值只是在之前就移進去了(如下)

mov $201,"btn\num0.jpg"
mov $202,"btn\num0.jpg"
mov $203,"btn\num0.jpg"
mov $204,"btn\num0.jpg"
mov $205,"btn\num0.jpg"
 

回覆 使用道具 檢舉

無名的勇者

天繾寶寶說你好

喔喔喔喔喔喔
原原來是btndef "" print 3有這樣的考量(筆記

偽聖書那裡我又更不懂了
mov $201,"btn\num0.jpg" 意思是 變數201 為num0.jpg吧?
那之後為什麼要給那麼多 變數

一開始以為是要拿變數去處理其他功能...可是...

為啥不直接寫成
lsp 9,"btn\num0.jpg",82,108這樣0.0?
有什麼考量嗎?
雖然為聖書不是奇才大寫的 但是也許奇才大已經看明白了也說不一定(閃亮眼神
以上,感謝解答~~~
 

回覆 使用道具 檢舉

當然變數通常是拿來設計遊戲內部的影響(如:友好度等等)
不過這樣設置變數也可以方便自己使用,這樣子以後需要這張圖時直接輸入變數值就可以了。
這樣就不用再去記那張圖的位置。

這樣程式碼也比較不用那麼複雜
當你看到$201就知道裡面是num0.jpg,這樣對自己來說也比較好閱讀(不用看到一串的英文字母)

當然對其他人來說就不太好解讀你的程式,因為程式是自己寫的...所以你知道那是什麼意思
對其他人來說的話可能就要慢慢追蹤才知道呢

我是這樣想的...至於原作者是怎麼想的我也不太清楚就是了...OTZ

在下對於偽聖書有些地方也是很不清楚...
像是對話框上面設置的按鈕要怎麼設置,或是系統設定的選單

當然這些都可以用右鍵選單設置功能來解決...只是這樣可能會有人嫌每次存檔必須
按右鍵->存檔->卻認是否存檔->離開存檔畫面->回到對話,這樣的確有點麻煩就是了...XD

再來就是如果設置右鍵選單的話...就沒辦法跟預設一樣按右鍵是消除對話框
這樣的話,部分的話可能又要再寫程式,比較辛苦一些就是了~~

[ 本文最後由 偽.奇才 於 07-12-13 03:18 PM 編輯 ]
 

回覆 使用道具 檢舉

無名的勇者

天繾寶寶說你好

原來如此(筆記

從我追蹤的結果 偽聖書對話框按鈕
是採 當對話框出現時 按鈕圖一起出現
追蹤 btn\sysbtn1.jpg 應該就能看見。
對話框按鈕的詳細功能設在
★系統按鈕事件群
*sysbtn;對話框上的系統+回想+快進鈕設置
*text_lb;消除對話框
*textbtnloop;這個我追蹤不到解釋..
*end_textbtn;自動前進
*systemlookback;回想鈕功能
*fastskip;快進鈕功能
*systembtn;系統按鈕功能

詳細功能我還沒看那麼多(掩面
打算先慢慢啃玩+機翻日站教學...(死

要是能幫上一點忙就好了(抖抖抖
以上...
 

回覆 使用道具 檢舉

*textbtnloop感覺是對話時游標的顯示...
*textbtnloop
if %179==1 vsp 1,1:vsp 0,0  ;當%179==1時cursor0.bmp視為不可見,cursor1.bmp視為可見
if %179==0 vsp 0,1:vsp 1,0  ;當%179==0時cursor1.bmp視為不可見,cursor0.bmp視為可見

可是沒看到其他數值移入%179的程式...OTZ|||

在對話時設置按鈕...好像會被強迫按完按鈕以後才可以繼續進行對話
可是不知道他是怎麼一直設在那邊的...XD|||

偽聖書在下也正在慢慢研究說~=W=(歐

[ 本文最後由 偽.奇才 於 07-12-15 01:16 PM 編輯 ]
 

回覆 使用道具 檢舉

無名的勇者

天繾寶寶說你好

喔喔~
原來是遊標啊
%179在這裡
*fastskip
if %179==0 mov %179,1:goto *text_lb
if %179==1 mov %179,0:goto *text_lb

感覺比較接近ON/OFF的使用?

對話視窗 按鈕不能同時存在的關鍵應該
定義區
textgosub *text_lb ;系統按鈕
指令。

如果把那條去掉,就對話框和按鈕就不能同時存在了。
果然textgosub是自定義系統的基本啊0.0
以上~

PS.補充 後來找到的
textgosub 自定義系統設定(顯示於對話框附近的存讀鈕等等)


[ 本文最後由 發條人形紅舞鞋 於 07-12-19 01:59 AM 編輯 ]
 

回覆 使用道具 檢舉

喔喔...原來是這樣阿...囧
這樣的確可以按鈕跟對話框一起出現XD
在下來嘗試寫看看好了...=w=
 

回覆 使用道具 檢舉

你需要登入後才可以回覆 登入 | 註冊

存檔|手機版|聯絡我們|新聞提供|鐵之狂傲

GMT+8, 24-12-5 11:23 , Processed in 0.027534 second(s), 26 queries , Gzip On.

回頂部