NScripter│程式相關技巧筆記

一定會用到的人物筆記---------
NS提供了簡單的顯示人物命令“ld”(E指令),可以直接把人物圖片顯示在螢幕的左,中,右三個位置(圖片底部貼著螢幕底線)。
指令格式:
ld l,圖片名稱,效果命名 ;在螢幕左邊顯示圖片
ld c,圖片名稱,效果命名 ;在螢幕中間顯示圖片
ld r,圖片名稱,效果命名 ;在螢幕右邊顯示圖片
貼上人物圖
ld l,"chobit.jpg",10,700 貼人物圖

而刪除人物,則是將ld改成cl。
----↓人物出現範例
ld l,"cg/01.bmp",10,700
----↓關閉人物範例
(清除指令 圖片位置,效果名稱)
cl l,700

人物的透明化做法呢。
我是使用NScripter官方網站中的舊工具png2abmp.exe。
在繪圖軟體中開啟一個透明的背景,大小則為自製遊戲中的解析度大小。
並加自己要放的人物放進透明背景中,位置大小請調整好。
顯示出來的人物位置和大小,就是在這個時候設置的喔!

圖片製作完後,將此圖片以PNG檔儲存,並勾取交錯型儲存選項。
接著把圖片放進資料夾中。
點選png2abmp.exe選取其資料夾後。
就會發現資料夾會多出一個OUT的資料夾,裡面的圖片將會是一面綠背景一面黑白圖。



再將此圖片放到素材中。
在腳本中加入以下指令↓
ld c,":a;cg/01.bmp",10,700
(指令 畫面中間顯示圖片,":透明方式(詳細解說在下面);路徑/圖片名稱.bmp")

透明方式指令區別
transmode left(以左上角圖片顏色為準透明;預設)
transmode copy(原圖片顯示)
transmode alpha(此為上面範例使用的透明方式)



畫面設定----------------
解析度設定,沒設定的預設值解析度為640×480
;mode800;畫面尺寸可變為800x600。


shadedistance 1,2;設定文字陰影寬度



1 暫態表示。沒有指定時間
2 左快門(類似照相)
3 右快門
4 上快門
5 下快門
6 左窗廉
7 右窗廉
8 上窗廉
9 下窗廉
10 圖元為單位的Cross Fade
11 從左邊捲動
12 從右邊捲動
13 從上面捲動
14 從下面捲動
15 遮片
16 快閃
17 霧化從右上方飄出來
18 ALPHA遮片


背景設定-------------
bg black,1\;將背景設為黑色
這個的指令說明即為;指令 顏色,效果編號。
當然還是要用自己的背景圖片遊戲畫面才能顯得豐富美觀。
故設置背景圖變的指令為:
bg "路徑資料夾名稱/檔案名稱.jpg",1\;無效果快速顯示出背景圖片
範例:bg"bg/1.jpg",1;

也可以使用場景來更換背景圖
如:
effect 3,15,2000,"chobit.jpg";場景切換。這樣比較方便


game
*start

遊戲的基本寫法
; --------------------------------------------------------------------
; 定義
; --------------------------------------------------------------------
*define
; --------------------------------------------------------------------
; 視窗標題
; --------------------------------------------------------------------
caption "-逃亡森林-"
versionstr "(C)2009藍、璘夜","森林逃亡v.0.1"

effect 2,3,1000
effect 3,6,2000
effect 4,10,500
指令 相關編號,特效編號,時間

game
*start

你好@
@為滑鼠指令

----------------------------------
你好@
這世界真是美麗/
----------------------------------
其實是HTML語言裏表示空行的命令,在NS裏,也是同樣的意思。
會顯示
----------------------------------------
你好

這世界真是美麗/

【小夜】
「今天天氣好好。」\
\為換頁指令
end;改成reset將會重複播放(;也可以在遊戲腳本中擔任注釋的分隔點喔)



設定對話框
預設的對話框是由左上角的版面由上而下,如果沒有自行設置遊戲畫面會偏暗!
全螢幕範例-用於旁白之類的劇情敘述
setwindow 80,80,30,15,19,19,2,4,%100,1,1,#FFFFFF,0,0,800,600

理想的對話框範例
setwindow 172,472,20,4,24,24,2,5,30,0,1,#999999,0,450,800,600

「setwindow」是用來表示訊息視窗的位置、大小、文字的設定。
「第一個數位」和「第二個數字」是表示「文字顯示開始的座標X、Y」。
「第三個數位」和「第四個數字」是表示「訊息框長以及寬可以容納幾個文字」。
「第五個數位」和「第六個數字」是表示「文字的大小(FontSize)X Y
「第七個數位」和「第八個數字」是表示「字與字的間格X以及Y」
「第九個數位」是表示「文字訊息表示速度」。
「第十個數位」是表示「粗體字開關」。(0代表沒有粗體,1代表有粗體)
「第十一個數位」是表示「陰影開關」
「第十二(Twelfth)個數位」是表示「視窗顏色(半透明)」採用HTML的顏色標記
「第十三個數位」和「第十四個數字」是表示「文字訊息框的左上端座標X、Y」。
「第十五個數位」和「第十六個數字」是表示「文字訊息框的右下角座標X、Y」。
; 灰罩面(特殊範例)
setwindow 80,80,30,15,19,19,2,4,%100,1,1,#B3B3B3,30,30,770,570



劇情分歧
戀愛遊戲趣味性的地方就在於,會依不同的選項而有不同的結局。
這時後,就要靠遊戲的腳本來讓結局有不同的走向。
如:
select "一", *event1,"二", *event2,"三" ,*event3

*event1
你選擇了一。\
end

*event2
你選擇了二。\
end

*event3
你選擇了三。\
end


關於好感度
*define


game
*start
mov %10,0 ;把對方的好感度預設為0

setwindow 30,320,22,4,20,20,2,2,20,1,1,#FF0000,20,310,619,450
你好@
今天天氣真好@
太陽好大。\

對啊@

bg black,4\
【小夜】
「今天天氣好好。」\
; ld l,"chobit.jpg",10,700 貼人物圖 ld改成cl就是刪除人物

你願意跟我一起走嗎?\

select "好啊",*event1,"不行",*event2,"我想,我還有事情必須去完成。",*event3

*event1 ;事件1
嗯,那麼走吧。\
add %10,5 ;對方好感度上升了
goto *goodending

*event2 ;事件2
是嗎……\
sub %10,5 ;對方好感度降低了
goto *goodending

*event3 ;事件3
祝你幸運。\

*goodending
對方對你的好感度現在是%10哦。\


reset;end為直接關閉
像這樣,就可以進一步的去控制劇情的走向。


遊●戲●選●單
以下內容便是遊戲開始時給玩家的選單。
後頭的數字,如:550,450(橫向位置,縱向位置)此範例正好是畫面中的右下角。

305,252┐
305,282┤─畫面正中央。
305,312┘

lsp 11,":s/25,25,0;#ffffff#ffff00新的旅程",550,450
lsp 12,":s/25,25,0;#ffffff#ffff00繼續旅程",550,480
lsp 13,":s/25,25,0;#ffffff#ffff00結束旅程",550,510
print 1

btndef ""
spbtn 11,1
spbtn 12,2
spbtn 13,3

btnwait %0

if %0==1 goto *newgame ;開始新遊戲
if %0==2 goto *loadgame ;讀取進度
if %0==3 goto *endgame ;結束遊戲

*loadgame
systemcall load ;呼叫NS的讀檔選單
goto *start ;當玩家沒有讀檔,而是選擇退出讀檔選單之後,要返回重頭開始執行,如果沒有這一行的話,會繼續執行到*endgame那裏。

*endgame ;遊戲結束
mesbox "遊戲結束囉。","GAME END"
end

*newgame
csp -1
print 1
mov %10,0 ;把對方的好感度預設為0

bg "chobit.jpg",4\
setwindow 30,320,22,4,20,20,2,2,20,1,1,#FF0000,20,310,619,450
你好@
今天天氣真好@
太陽好大。\

對啊@

bg black,4\
【小夜】
「今天天氣好好。」\
; ld l,"chobit.jpg",10,700 貼人物圖 ld改成cl就是刪除人物

你願意跟我一起走嗎?\

select "好啊",*event1,"不行",*event2,"我想,我還有事情必須去完成。",*event3

*event1 ;事件1
嗯,那麼走吧。\
add %10,5 ;對方好感度上升了
goto *goodending

*event2 ;事件2
是嗎……\
sub %10,5 ;對方好感度降低了
goto *goodending

*event3 ;事件3
祝你幸運。\

*goodending
對方對你的好感度現在是%10哦。\

reset;end為直接關閉

; --------------------------------------------------------------------
; 選單
; --------------------------------------------------------------------
resetmenu
insertmenu "結束",END
insertmenu "版本",VERSION
insertmenu "快進",SKIP
insertmenu "快進模式",sub
insertmenu "全部略過",kidokuoff,1
insertmenu "讀過內容略過",kidokuon,1
insertmenu "畫面設定",SUB
insertmenu "全螢幕",FULL,1
insertmenu "視窗化",WINDOW,1
insertmenu "環境設定",SUB
insertmenu "字形",FONT,1
insertmenu "文字速度",SUB,1
insertmenu "慢",TEXTSLOW,2
insertmenu "中",TEXTMIDDLE,2
insertmenu "快",TEXTFAST,2
; --------------------------------------------------------------------
; 右鍵選單
; --------------------------------------------------------------------
menusetwindow 16,16,0,4,0,1,#999999
menuselectcolor #ffffff,#ccccff,#666666
savename "儲存","讀取","回想"
rmenu "略過對話",skip,"消除欄框",windowerase,"儲存",save,"讀取",load,"回顧",lookback,"標題畫面",reset
savenumber 19
savename "SAVE DATA","LOAD DATA","§"

音樂播放;mp3
bgm "mp3(路徑)/音樂檔名.mp3"\"
如此便可撥放音樂。
mp3stop →播放停止
;mp3loop →代替mp3指令,讓音樂連續播放

釋出檔案
nsaarc:檔案壓縮
nscmake:腳本密化
將檔案壓縮密化時要記的在腳本修改唷。
如:
; --------------------------------------------------------------------
; NSA包
; --------------------------------------------------------------------
nsa
到這裡就告了一段落了,歡迎大家一起研究分享作品吧。