菜鳥的只狼Talk詳細教程(三)

大家好,我是Last孤影眾後面還有一個點,今天繼續這個系列的第三集。

注意:閱讀本文需要讀者擁有魂系列引數編輯能力和最基礎的事件編輯能力,想學習的可以移步瑣帝BNU的引數編輯教程和我的事件編輯教程。

一、Talk的分類

其實這個東西我們應該早點講,但其實放在這裡講正好後面我們分類討論:

首先我們可以將所有talk分為非戰鬥對話和戰鬥對話,當然也有可能是兩者結合的talk,例如很多npc就會這樣,在觸發仇恨後就會說一些話。(一)非戰鬥對話

非戰鬥對話是比較簡單,也是比較實用的對話型別,我們可以將其分為:互動觸發對話,對話欄對話和竊聽對話。

竊聽對話

竊聽對話其實沒什麼好說的,大家可以開啟白蛇神社孤影眾的talk看看內容,只有一個觸發對話:

這裡第一個call就是對應的竊聽對話,但是這種對話並不實用,我們需要的話可以直接拿槍足正長的這個檔案改編號,然後修改內容作為新竊聽對話使用。

2.互動觸發對話

這種對話指的是我們按下互動鍵(一般顯示“交談”),然後敵人就會直接和我們對話,這個也非常簡單,一般很多商人都有這種對話,其實就是在觸發對話欄對話前加一個帶有talktoplayer的執行對話,這樣就會先和我們說話,等說完了話後才會觸發商店之類的選擇面板。

例如我們開啟商人藤岡的talk檔案:

可以看到要進行一系列的判定,然後都滿足後我們才能跳轉到執行對話t110470_x38,也就是對話欄對話,這就導致藤岡會在顯示商店面板前和我們說上一些話。

當然這個算是比較麻煩的,因為有一對條件判定,還有call的運用,簡單的我自己也搞過一些:

這裡就是先跳轉到可以說話的執行對話,然後等說完話,才會跳轉到t110810_x39

這樣操作,我們可以在開啟npc面板前進行talkparam編號為89000000的對話,然後我們如果退出npc面板,那麼我們還能再進行一個talkparam編號為89000090的對話,也就是else後面寫的東西,這就是我們接下來要講的對話欄對話。

3.對話欄對話

最實用的型別,我們平常改的就是這個,首先如果我們想新建一個對話欄式對話,我們甚至可以直接找鬼佛的talk,也就是t000001來編輯,因為鬼佛的對話就是個很純粹的對話欄對話。

如果大家怕出問題,也可以找一些npc的talk,然後留下對話欄對話,把裡面其他的觸發對話全刪掉,一般觸發對話是對話欄對話的引數都很多,而且帶有actionbutton

接著我們看對話欄型執行對話的主體:

首先有一個while true迴圈,然後ClearTalkListData()是清除對話欄內容,這個是為了大家在做對話欄遞進的時候,能正常顯示這一級的內容,例如第一級有ABC三個選項,點A進入第二級,我們想顯示DEF,如果不ClearTalkListData()清楚第一級的ABC選項,那麼就會出現問題。

第二個AddTalkListData(1, 90000000, -1),是新增對話欄專案,1指的是編號,這個編號和他在對話欄中所處位置並無關係,例如AddTalkListData(1, 90000000, -1)就不一定排在AddTalkListData(2, 90000000, -1)前面,它僅僅是一個編號而已,真正影響選項順序的是在talk中它們排列的先後。例如AddTalkListData(2, 90000000, -1)在第一行,那在遊戲中它就排在最前面。

這裡的兩局話是開啟選單,缺少一句我們就無法顯示對話欄,當然這裡第一句OpenBonfireSubmenu(0)可以換成其他的,這樣就會顯示非鬼佛樣式的對話欄,具體大家去其他npc對話裡面找。

接下來就是選中對應選項的結果,例如這裡:

表示的就是我們選中AddTalkListData(1, 90000000, -1)這個選項後,我們會跳轉到t110810_x48(),鬼佛處的選項多,所以結果也多:

最後就是else,其實else預設的就是AddTalkListData(0, xxxx, -1),也就是編號為0選項的結果,所以大家在新建選項的時候一定要從1開始往後新建。

else一般就是讓我們回到上一級的對話,遊戲中我們按返回鍵,就是對應talk中的return 0,else中帶有return 0就可以讓對話欄回到上一級,如果沒有上一級那就是退出對話,當然也有一個直接退出對話的程式碼叫做Quit(),這個程式碼能讓我們直接退出對話無論多少級,但非常容易出問題,因為對話中玩家無法操作,所以你貿然退出對話玩家會保持無法操作的狀態卡死。

Quit()程式碼應當配合跨地圖傳送之類的事件使用,可以先給予玩家特效然後Quit(),事件檢測特效讓玩家傳送,這樣就正常許多。

當然return 0我們也是能放在AddTalkListData(1, xxxx, -1)中的,這樣我們點對應的選項我們也能退回上一級,關鍵在return 0而不是else,只是else大部分情況都有return 0。

那我們再回到這張圖,可以else並不是只有return 0,還加了個說話的執行對話,這就讓我們能在回到上一級前讓npc和我們對話。

(二)戰鬥對話

戰鬥對話也是一個非常重要的對話,對於不是做劇情mod的modder來說也很是搶手,因為能在戰鬥中加上一些臺詞能讓戰鬥體驗提升不少。

那上一篇我已經說過了在原有基礎上新增戰鬥對話,這個是最簡單的。而新建戰鬥對話是非常困難的,難點一是觸發對話的不完整,如果我們不去複製有戰鬥對話的敵人的talk,這會導致我們新建的觸發對話很有可能不生效,所以我建議是找現成的,在上面做修改。

當然這個也是有現成的可以修改,經過我多次實驗,我發現主城的那個武士大將talk效果非常好,是個很棒的戰鬥對話型talk。

原因一是他的觸發對話很少,簡單明瞭,純粹的戰鬥對話

原因二是結果簡單,簡單易懂,這裡我們看到他先是判斷了一個eventflag,如果成立,那麼他會挑戰到一個函式,那這個函式一看就知道和對話有關,但是裡面有兩個100的引數,這個代表的其實是玩家到他的距離,離他太遠對話就會消失。

不過不要緊,我們直接在上面做一些修改,可以得到我們想要的,下圖是我在對影成雙中製作的戰鬥對話地牢孤影眾:

基本結構一致,我移除了冗餘的內容,留下了最簡練的判定和跳轉,如果eventflag1585開啟,並且地牢孤影眾擁有30007特效,那麼他就會說話,等說完話再給玩家一個30008特效(mod中事件檢測,用來觸發玩家吹口哨的)。

就這樣一個簡單的戰鬥對話就完成了,如果我們想要做多次戰鬥對話也很簡單,換成if條件判斷函式:

上圖為蘆葦之國·空想中我創造的水生村支線,第一句是當玩家剛進入水池時索拉爾給予的提示,後面的就是索拉爾在戰鬥中幫助我們的對話,還有擊敗敵人的致謝。可以看到非常簡單,只要套套模板即可。

這裡有個非常重要的點,不注意看文章的等下肯定要吃大苦:

那就是判斷條件中一定要帶有事件標誌的判斷,你可以看到我明明可以只用特效判定,但我卻每個判定都加了對事件標誌的判定,因為這個是必須的。

當然這個也不難解決,我們隨便找個確定狀態的事件標誌,判定他的狀態然後照樣檢測特效即可,或者麻煩點和你手動開啟或者關閉一個事件標誌。

我希望到時候不會有人來問我這個問題,不然我直接給你一耳屎

(三)自我對話

原版沒有的對話,由bossrush獨創,沒錯它就是自我對話。

玩過bossrush的人都直到,當我們在擊敗精英怪或者boss後,會跳出來一個選單,我們可以直接選擇打下一個敵人,或者回到破舊寺院,這其實就是自我對話。

說是自我對話,其實也是讓狼和某個敵人互動,只不過這個互動是遠端的,滿足條件後就會跳出一個對話欄,這個對話的難點有兩個:

一是原版沒有類似的talk可以參考,但好在bossrush的前輩留下了珍貴的參考檔案,不難解決;二是talk連結敵人的要求,這個敵人一定不能是流程敵人,而且最好能全圖載入,這樣我們在地圖中任何時候,滿足觸發條件就能彈出對話欄 。

關於自我對話,我在蘆葦之國中大量使用,給大家看看我的格式:

首先是觸發對話,檢測條件彈出對話欄,但是還有要遵循判定條件必須有事件標誌:

接著就是對話欄的構建,之後就是很簡單的內容了,我們主要是需要talk和事件配合起來發揮作用。

而比較關鍵的點不在talk中,在DSM也就是地圖編輯器中,自我對話連結的敵人是有要求的,我建議大家選擇c1001開頭的敵人,也就是專門用作對話或者互動的隱藏敵人,我們複製一個c1001,消除實體編號後新建連結一個talk,之後我們要注意的是UnkT00設定的大一點,這個代表的是對話生效的範圍

接著是UnkT44,這個設定成515最好(bossrush這麼設定的,如果設定為0那麼會不生效)

二、後話

Talk這個東西有點類似event,都是積累型,所以找一些mod參考,首先是bossrush,可以參考他的對話欄對話和自我對話;其他的就是我的mod了,好像只狼mod只有我做了大量talk發麵的編輯。

其實talk將到這裡就差不多了,我所瞭解的內容就這麼多了,talk內容較少,但是邏輯性較強,比較抽象,需要大量實驗試錯,你們看到我三篇文章就講完了talk,但其實我試了小三個月猜得出這些結論,都是一次次失敗換來的。

那麼菜鳥的只狼Talk詳細教程系列到這裡就正式完結了,後續我發現新的內容會開專欄再說的,希望各位看完整個系列都能學會修改Talk,創造出優秀的劇情mod。

隨便看看 更多