置頂資訊

*2016年8月15日更新

網站入口 (3選1)

Ability (無廣告,穩定度不明)

UEUO (含廣告,穩定度不明)

WIKI版 (GOOGLE內建)

舊BLOG放置區(只供瀏覽)

LOFTER(間中才掃塵)

LOGO圖:

請多多支持IC論壇:

Sorry, this blog contains Traditional Chinese!

注意:本網誌內文使用的表情圖片均來自洋蔥酷樂部喔!

BLOG主CP喜好

*UL轉型成休閒玩家ING*
<本命cp>
薔薇百合:犬眼鏡、貝傑貝、奇利、王子姬、雪多雪、米菇、鋼彈組、康庫、希拉莉X諾伊、出迪、勞瑟
BG向:閃喵、薩蕾薩、沃肯米亞、修帕、帝國夫婦、少爺魔女、凱碧、泰C、里露、教主修女、林奈娜汀

<也會吃的cp>
薔薇百合:犬閃犬、犬貝犬、利貝利(偏好利貝)、閃伯閃、梅倫布勞、店長布勞、梅店(勉強吃,喜歡店長受)、偵探博士、偵探布勞、帕茉史普、貓CC貓、柯沃、梅莉露露、林奈泰瑞
BG向:王子喵、王子貝姐、伯恩瑪格
其他:鳥波伯恩(!?)、希爾夫*史普、伯恩妖妃(!?)

<喜歡的組合(無cp傾向)>
御三家、新手五俠(OR連隊少年組)、連隊前輩/教官組、人偶家族、侍僧組(+大小姐)、火箭隊(羅瑪米)、工程師組、魯比歐那組、魔都超人組、大善鐵三角、卡爾杜斯戰隊、小家庭組合
地雷:沒特別提可逆基本都雷、阿修羅受、布朗寧受、梅倫受、康拉德受、庫碧(想想決定加這個,真的雷到受不了Orz)

*APH回萌期,天天刷LOFTER*
腐向CP:花夫婦(可接受獨=/=神)、初戀組、親子分、伊雙子(偏南北)、紅色夫婦、極東兄弟、味音痴、DOVER、北/米雙子、冷戰組、雪兔組、山菜組、花雞蛋夫婦、百合組、家暴組、小鳥組、樞/軸兄組、串刺優格、白骨組
BG向CP:中/歐夫婦、啾花組、菊梅、香梅、中立兄妹、法貞
非CP:亞細亞、數字9、連/五、北/歐、方向戰隊
雷區:獨受(性轉獨例外)、東西兄弟(戀愛向)、獨奧獨 (可能會增加)
如果不雷基本雜食XD

2010年12月12日星期日

班門弄斧的NS偽教學1:defsub、gosub及return

我今天login mero,把精力補滿到紅色,而我的角色問卷還在拖拖拉拉,為了mero值,所以……這篇就誕生了(爆)
其實有個同人blog也有NS教學,我只是騙mero值所以不用管我……(天:也沒有人要管妳啦)
絕對不會常更新,甚至可能只有一篇XD

Recrit有的NS教學我就不多說囉,我只說說自己以前做遊戲曾經用過的功能算了XD
今天……來說以前幫香草做的顛覆童話NS版曾經用過的功能:defsub、gosub及return

其實……超級瑣碎XD 這教學似乎沒什麼建設性啊XD
其實我(應該)還未介紹完,總之……先看著辦囉XD (不負責任)

defsub、gosub及return
先說defsub,它只可以在define區使用~
它是什麼呢?它是一個很好用的指令!(廢話)
這指令類似RPG MAKER2000公用事件喔!(很多年前的程式了XD)
即是用以建立一些重複使用的指令!例如?
一般的電子小說(NOVEL)/戀愛冒險(AVG)遊戲,會重複出現的東西有:
1.角色名字
2.角色立繪
3.對話框上的按鈕 (SAVE、LOAD、CONFIG、TITLE、EXIT之類)

嗯~其實還有很多啦,只說比較明顯的~
不過,對話框相關的程式,其實不需要用defsub,這個留待介紹自訂系統再說~(如果真的生出來的話XD) 所以我來說角色名字好了~

無論你的遊戲打算用lsp還是對話框內的文字顯示角色名字,也可以用defsub簡化喔~
假設我不用defsub功能,我想顯示角色名字,我的程式碼就要這樣打:

(假設我用對話框的文字顯示角色名字)
*start ;為求方便,我前面都不打,直接從*start開始XD
setwindow 65,370,20,3,23,23,1,1,40,0,0,"frame.bmp",50,360 ;這行只是自訂對話框
男主角 ;角色名字
這是示範對話。\ ;普通對話
女主角
這也是示範對話。\
男主角
示範對話三。\
end
我沒有把主角名字斷行,是因為……角色名字不是跟文章同時出現嗎XD
大家留意到吧?上面重複出現的是男主角的名字~
名字短也罷,名字一長就不想打對吧XD 出現一次就重打一次這樣XD 太麻煩啦XD
所以我們需要一個省時省力的指令,那就是偉大的defsub了!XD

(同樣的對白,假設我用defsub顯示角色名字)
*define
;其他指令請容我省略XD
defsub *charname1

game
*charname1
男主角
return ;一定要加return,不然會錯誤喔

*start
setwindow 65,370,20,3,23,23,1,1,40,0,0,"frame.bmp",50,360
charname1 ;在執行區,只需要打星號(*)後的label名字就可以呼叫defsub功能
這是示範對話。\
女主角
這也是示範對話。\
charname1
示範對話三。\
end
紅色部分就是我用了defsub後,改變了的地方~
你看到後可能會說,為什麼好像比之前更麻煩……
嘿嘿,話不可以這樣說……
上面只是最簡單的情況,如果比較繁複些,用lsp顯示名字(尤其是希望名字比一般字體大,又有名前框的時候,NS內建無法做到喔~),名字不同顏色,對話隨著角色而顯示不同顏色等等……一長串指令綜合起來,還是用defsub比較方便吧~
也許你比較喜歡copy and paste,但有時會手殘眼殘貼錯吧?defsub就可以免除這麻煩喔~
因為只重複讀取相同的程式,打對了就全部都對,打錯了就全部都錯這樣XD

而且defsub不只應用在顯示名字上,舉凡角色立繪、角色表情(假設跟立繪分開做)、SL畫面的前置程式、消除圖片、顯示選項等等……總之所有重複出現的指令都可以用defsub喔!(我自己的SL畫面就會用defsub先讀取SL畫面的前置作業)




好,說完defsub,也做一些小補充:gosubreturn……
return嘛,顧名思義就是"回歸"、"回去"的意思~它一定要跟gosub或defsub一起用喔~(原因後面說)
gosub是前往分支的意思,而defsub是在定義區建立分支……總之都屬於分支!
只是gosub在game區跟start區(執行)也可以用,而defsub只可以在define區(定義)用……
什麼是分支?這我要順便說說goto……

gosub跟goto都屬於跳躍功能,不過gosub跳躍至一個分支,然後回歸主線……
goto就是跳躍至另一條主線,不會回歸主線……
嗯~用文字解釋不曉得大家明不明白,用圖片解釋也許比較清晰?

(點擊放大)
圖片應該……還清楚吧XD
一般的電子小說(NOVEL)或文字冒險(AVG)遊戲,通常都是一個情節接著一個情節吧?我們姑且稱它為主線……
嗯……容我拿蘇眉的mela做例子(不知道是什麼的人快去玩XD),主線是養成事件,這些是必定發生的事件,日復一日,且無法逃避,所以肯定是主線XD
而支線就是可以忽略,不玩也對遊戲流程沒太大影響的情節XD 在mela中就是女主角出去找男角色時引發的劇情~

有玩過的人都知道,女主角每星期有一天可以到各角色房間堵人找男角聊天~這時候就是有可能進入支線的時候了!
假設女主角去找神官,就像上圖中用gosub功能跳去神官的聊天事件,當事件結束後,就可以用return回到主線,繼續周而復始的養成事件!
而goto呢,當年玩過的人還記得嗎……當女主角在某個特定日子去某人的房間時,可以爆seed直接跳去成為神官的END,不過不會有戀愛END喔!
這種黃鶴一去不復返(?)的跳躍,自然應該用goto喔!而且不可以用return……因為根本不是分支,沒地方可以return啊XD

所以,來個普通的程式示範再為大家解釋一下吧~
*start
現在想測試gosub功能。\ ;英文要用全形才不會錯誤
gosub *sub1
現在跳躍至plot。\
goto *plot

*sub1
這裡是分支一。\
return

*plot
已經結束喔。\
end
好,根據以上的程式碼,程式會順序顯示:
現在想測試gosub功能。
這裡是分支一。 (利用gosub跳至*sub1)
現在跳躍至plot。 (因為用了return而回到主線)
已經結束喔。 (利用goto直接跳到*plot)
希望上面的程式碼可以協助大家明白goto跟gosub的分別喔!

大家可能又很疑惑,聽我這樣解釋,看來gosub要用return才可以回歸主線?沒錯!
那麼,其實也可以當成goto去用囉?並不是!
如果gosub不用return,其實會一直運行下面的指令,直到遇到return為止!(如果遇到end就會直接結束遊戲) 然後回歸到原來主線!
也許你會說,那麼我整個遊戲也不打return,那不就沒事嗎?嗯……這不是不可行,只是用法實在有問題…如果出錯就後果自負這樣……(爆)

以上是gosub跟goto的基本用法,然後我要說比較複雜的XD
圖片裡展示的是一個非常簡單的主線跟支線的分支圖,如果分支中另有分支,又該如何呢?
沒什麼,就是用goto或gosub繼續製造更多分支XD (小心分支建立太多,自己最後不知道會回歸到哪裡XD)
但一定要留意,不論是gosub還是goto,都一定要跟return配搭,少打了可能會回歸失敗!(因為是分支中的分支)

最後再打一段程式碼作為示範(?):
(用gosub的情況)
*start
現在想測試gosub功能。\
gosub *sub1
現在跳躍至plot。\
goto *plot

*sub1
這裡是分支一。\
gosub *sub2
會出現這一行喔。\
return

*sub2
這裡是分支二。\
return

*plot
已經結束喔。\
end
根據以上的程式碼,程式會順序顯示:
現在想測試gosub功能。
這裡是分支一。 (利用gosub跳至*sub1)
這裡是分支二。 (利用gosub跳至*sub2)
會出現這一行喔。 (因為用了return而回歸,這是從*sub2回歸回去*sub1)
現在跳躍至plot。 (因為用了return而回歸,這是從*sub1回歸回去主線)
已經結束喔。 (利用goto直接跳到*plot)

(用goto的情況)
*start
現在想測試gosub功能。\
gosub *sub1
現在跳躍至plot。\
goto *plot

*sub1
這裡是分支一。\
goto *sub2
不會出現這一行喔。\
return

*sub2
這裡是分支二。\
return

*plot
已經結束喔。\
end
根據以上的程式碼,程式會順序顯示:
現在想測試gosub功能。
這裡是分支一。 (利用gosub跳至*sub1)
這裡是分支二。 (利用gosub跳至*sub2)
現在跳躍至plot。 (因為用了return而回到主線)
已經結束喔。 (利用goto直接跳到*plot)

嗯……說來也奇怪,我隱約記得以前不可以gosub裡再用gosub,不過現在又可以……算了,有問題的話就改用goto吧XD
其實以上gosub跟goto的應用不止局限於主線跳去支線劇情,還有很多地方也可以應用~例如呼叫SL畫面、呼叫log畫面、呼叫config畫面等等~所以其實是非常有用的喔~

這集只說到這裡,目前預定要說(?)的題目有……
  1. 自定名字 (附加用lsp顯示文字的reminder)
  2. 步行動畫(?) (recrit是否說過?我其實是否可以不說……(爆))
  3. 自製選項 (不是NS內建那個select,其實只是又說一次lsp的運用XD)
  4. 變數分歧 (它其實很簡單,真的要說嗎XD)
  5. 音樂鑑賞
  6. CG鑑賞
  7. 未想到XD 想到再補充XD
什麼?你問我為什麼沒自製選單的教學?這個可以跟初夏一起說嗎XD
雖然樣式不一樣,但需要的程式碼是一樣的……
(不過你沒有耐性的話可以去幻森下載教學檔自己研究XD)

沒有留言:

SiteTag