打印

[文字教學] 製作NPC的基礎概念

製作NPC的基礎概念


通常製作npc常見的是用以下這兩款軟體來進行

EmEditor 、 UltraEdit-32
在論壇的軟體分享裡面可以下載...

http://lab.welovesa.com/forumdisplay.php?fid=15

---------------------------------------------------------------------------------------------

在寫NPC之前 建議創個屬於自己專屬的資料夾

網路上常見的通常是叫做 my

然後把自己寫好的NPC放在裡頭


NPC資料夾存放位置在 gmsv\data\npc 這裡面


NPC的建立通常是用 .create 副檔名 來表示

利用 .create 建立之後... 連結到他的劇本...

劇本通常是用 .arg 副檔名 來表示

我舉個例子

這個是里奧NPC的.create // 位置在 npc\sainasu\event\rion.create


/////////////////////////////////

NPCCREATE                                               // 這是每個 .create 文件 開頭一定要打的***

{
floorid=100                                                   // NPC 所在地圖編號 100
borncorner=167,398,167,398                         // NPC 所在位置座標 167,398
time=0
createnum=1
dir=4                                                            // NPC 方向 4 為 右下 6 為左下 依此順時鐘類推
ignoreinvincible=1
graphicname=100015                                    // NPC 型態 ( 圖檔 , 圖檔有分 npc圖案 . 也可以用寵物的圖檔來用-enemybase1裡面
name=里奧                                                   // NPC 名稱
enemy=changeevent|file:sainasu/event/rion      // changeevent 為 NPC 類型  file:sainasu/event/rion 為劇本位
}

/////////////////////////////////

下面是他的 .arg 檔案 ( 劇本 因為它 .create 的路徑裡面 所讀取的檔案是在  file:sainasu/event/rion  rion 這個檔案

所以他的檔案副檔名沒有加上 .arg

這是它檔案的路徑 npc\sainasu\event\rion

內容如下

/////////////////////////////////

EventNo:-1
TYPE:ACCEPT
EVENTV>0&ITEM=2727
AcceptMsg:\n哇!被發現了!已經是第十次了,嗯……我輸了!\n依照約定,給你獎品吧!\n如果還有時間的話再一起玩吧。
ThanksMsg:\n下次我絕對不會輸給你的!
ItemFullMsg:\n因為道具太多了,沒辦法收下我的禮物的樣子呢……
PetFullMsg:\n寵物太多了沒有辦法交給你喔,可以想辦法減少寵物的數量嗎?
NpcWarp:100.215.91,100.581.332,1000.126.63,100.454.120,100.656.628,100.661.627,100.536.117,100.117.639,100.562.357,1200.35.61,100.349.343,100.154.383,100.416.474,100.651.686,100.167.398
DelItem:2727
GetRandItem:11876,11887,11907,11927,11987,11995,20624,13082,22334
GetPet:39,49,94,303,327
EventEnd

((  太多故略...  ))

/////////////////////////////////



通常製作NPC是建議  複製原本有的NPC  再去修改 這樣可以提高製作效率 減少錯誤


假如說 我現在想做一個 讓玩家 從 A NPC 送物品到 B NPC         此時可以參考 日美子送貝殼任務

如果說 我想讓玩家抓特定寵物給 NPC 然後繼續任務                  此時可以參考 恐龍博士任務

如果說 我想讓該NPC 找完一次就會不見 (NPC會跑)                   此時可以參考 里拉拉 或者 里奧任務


如何找出 這些要參考的NPC位置呢?

1. 可以利用 yang 發布的 NPC製作集合裡面的  "各NPC資料夾對照"

2. 用 FreeCommander 軟件 利用收尋功能 收尋NPC關鍵字 如名稱.對話內容 找出該NPC



寫任務之前一定要先規劃好...這樣做起來會比較有方向...

我舉個簡易的實戰例子...

假如我想做一個 小紅帽任務

那就先在自己專屬的資料夾內先創個小資料夾 ex smallred

(名稱盡量以自己能一眼分辨出這是啥東西為主...方便以後修改)

然後擬稿....

---------------------------

劇情
奶奶生病了...媽嗎叫小紅帽送蘋果去給奶奶...
不過小紅帽在路途中腳受傷了...沒辦法走到奶奶家

解法
請勇者代替小紅帽送蘋果到奶奶家 

---------------------------

設定上需要 

奶奶 1個 - NPC
小紅帽 1個 - NPC
( 先想要站在哪 還有NPC圖檔要用啥 )
( 地圖編碼 可利用 assa外掛的 "腳本製作" 按下去 地圖 後面的數字就是了 )

小紅帽要拿給奶奶的蘋果 1 個 - ITEM

---------------------------

這時候可以先把蘋果 做好 做在 itemset6 裡面...

然後思考 這個任務 跟哪個任務很像

似乎用 日美子與彌生 貝殼任務 可以用

所以就先去找出 日美子與彌生任務的 .create 還有其相對應的劇本

/////////////////////////////////////////////////////////
日美子與彌生任務 .create 位置 在 sainasu/event 裡面 名子為 event02.create 內容如下
/////////////////////////////////////////////////////////
NPCCREATE
{
floorid=2000
borncorner=55,92,55,92
time=0
createnum=1
dir=4
ignoreinvincible=1
graphicname=16027
name=彌生
enemy=changeevent|file:sainasu/event/event02_1
}
{
floorid=1000
borncorner=57,124,57,124
time=0
createnum=1
dir=6
ignoreinvincible=1
graphicname=16030
name=日美子
enemy=changeevent|file:sainasu/event/event02_2
}
/////////////////////////////////////////////////////////

把該 .create 和 劇本 複製到 smallred 這個資料夾內

/////////////////////////////////
這時候smallred資料夾內應該要有這三個檔案
event02.create - 日美子&彌生建立
event02_1 - 彌生劇本
event02_2 - 日美子劇本
/////////////////////////////////

然後 .create 裡面要寫 2個NPC 分別為 奶奶 和 小紅帽

地圖 座標 還有形象 都打上去

同時也要對應到 奶奶、小紅帽的劇本 ... 名稱最好也是取淺顯易懂 例如.. old .. young

/////////////////////////////////
這時候三個檔案名子應該為
smallred.create  - 建立小紅帽&奶奶
old.arg       - 奶奶劇本
young.arg      - 小紅帽劇本

位置為
file:my/smallred/smallred.create  - 建立小紅帽&奶奶
file:my/smallred/old.arg       - 奶奶劇本
file:my/smallred/young.arg      - 小紅帽劇本
/////////////////////////////////


然後把劇本裡面傳遞的 花 改成 蘋果 ...

細節部分再修改一下 如此一來簡易的npc就出來了...



概念大概知道以後

就下載 yang 整理的 資料包

http://lab.welovesa.com/viewthread.php?tid=99&extra=page%3D1

回去研究摸索吧



常見發生NPC出不來的情況


1. 檢查NPC .create 所聯結的劇本 是不是 連結錯了?

或者 連結的太深入 通常 是在 npc 資料夾 底下兩層 資料夾是最底層

2. 檢查你的 NPC 類型

enemy=changeevent|file:sainasu/event/rion

像這個就是 changeevent  任務型 NPC, 你的劇本 是不是 非 任務型NPC 劇本

3. 你創的NPC 座標 地圖 是否錯誤 ( 如果錯誤 開啟服務端會顯示 )

4. .create 最前面 沒有加上 NPCCREATE


罕見的狀況

1. 你創的NPC圖檔 你看不見

2. 你寫到的NPC類型(模板) 沒有被定義




如果覺得不錯...就回個帖子吧...

前後總共花了一個半小時整理 第一次要輸出結果火狐狸當了...第二次則是字數過多...

結果看到一樓回覆...實在讓我有點心寒...


本帖最近評分記錄
  • yang 聲望 +30 精品文章 2010-6-15 09:13
== 客製化開發Lua NPC、服務端功能 有興趣可站內短訊息聯絡 ==

TOP

不知道有沒有圖片教學檔@@


頭腦好複雜

我創了之後是要把檔案都放在MAP裡面嗎? 還是NPC?

TOP

引用:
原帖由 s59204055 於 2010-6-14 18:58 發表
不知道有沒有圖片教學檔@@


頭腦好複雜

我創了之後是要把檔案都放在MAP裡面嗎? 還是NPC?


...你...有仔細再看嗎...

為什麼要放在map裡面...
== 客製化開發Lua NPC、服務端功能 有興趣可站內短訊息聯絡 ==

TOP


附註:

** 任務旗標部分要注意 小心寫任務時 不要與其他任務的旗標衝突到(旗標編號一樣) **

如果伺服器遊戲中 解完任務 在右上方的任務日誌裡面卻沒跑出你解的任務

可能是服務端裡面缺少了 jobdaily 這個檔案

普通服務端任務期標只支援到 255 

如果要更多 可以參考阿育大大所發怖的自製服務端

http://lab.welovesa.com/viewthread.php?tid=774

大致上應該是這樣 如果上面打的有誤 請大大指教了





另外這論壇每個板塊的文章都有穩定的新增...

只有一個區塊 -  特色DATA與 NPC分享  是停住的...

希望開服的會員...在看這篇文章的同時也能建立一個理念...

除了在此論壇學習、推廣你的私服之外

也能分享一下你們的創作...

比如一些比較方便的NPC 或者比較有創意的

這種事情是不分你寫的好還是壞...

是一種交流

是一種對論壇的回饋...

感謝各位
== 客製化開發Lua NPC、服務端功能 有興趣可站內短訊息聯絡 ==

TOP

心得

製作npc的心得分享:

大致上就是複製原本有的npc格式來改而已...

寫任務npc的心得:

寫任務最重要的是想法...想法有...就去找看看  有沒有相同"功能"的npc...

常見任務為道具傳遞...

再來可能是 道具搭配寵物 → 道具搭寵物 搭禦敵打怪掉落 → 道具搭寵物 搭禦敵打怪掉落 搭自己做的新地圖

一步一步的動到更多的東西

會用到的資料大概如下



.道具及寵物設置篇

itemset6.txt詳解
enemybase1.txt詳解
enemy1.txt詳解
needitemeneny.txt詳解(道具抓寵設置)


.地圖及禦敵設置篇
mapwarp.txt詳解
group1.txt詳解
encount.txt 詳解
使用GM指令在線編輯地圖


.DATA工具篇
SAForever 地圖管理工具 V2.1
寵物數據製造工具 Design By yang
石器物品編輯器
物品修改編輯器icm4.0繁體版
戰鬥隊伍製作工具
地圖編輯程式與地圖轉換器
== 客製化開發Lua NPC、服務端功能 有興趣可站內短訊息聯絡 ==

TOP

大致上都會了

可是在儲存文件時
我用.arg

他還是筆記本的樣子@@

我少下載了什麼檔案嗎??

TOP

- -

引用:
原帖由 s59204055 於 2010-6-15 00:28 發表
大致上都會了

可是在儲存文件時
我用.arg

他還是筆記本的樣子@@

我少下載了什麼檔案嗎??

他形狀不重要...

那是你電腦上面設定的問題...



npc能夠順利出來...這篇文章的宗旨就完成了...

再來就是自己更深入的去研究了...

這...很難幫的上忙...
== 客製化開發Lua NPC、服務端功能 有興趣可站內短訊息聯絡 ==

TOP

好 我再努力試試

謝謝樓主發這篇文的熱心 以及熱誠的指導

TOP

很棒的文

剛好在學習=_=

TOP

- -

補充

※ 如果是會動用到兩個NPC以上的任務 

通常是建議 先把所有NPC都站在同一個地圖) 鄰近座標

然後一邊做 一邊測試 這樣才不用到各地圖去找他們

做完之後 測試都OK , 再發散座標 
== 客製化開發Lua NPC、服務端功能 有興趣可站內短訊息聯絡 ==

TOP