[楓之谷私服]改NPC腳本完整教程

最後更新於 2022 年 6 月 20 日

這篇稍微需要碰到點代碼,如果完全是小白可能會需要學習一段時間。

這裡的腳本包括:活動、NPC、傳送門、任務、反應物,但是大部分時間我們都只會修改到NPC,其餘的比較進階,需要修改的不只有伺服器端腳本而已。

準備工具

在開始之前先推薦三個軟體用於修改腳本:

NotePad++

應該是最多人在用的,簡單方便,且有代碼高亮。

官網:https://notepad-plus-plus.org/downloads/

notepad++

Sublime Text

我挑選的主要都是具有代碼高亮並且介面簡潔的文字編輯軟體,有代碼高亮真的很重要,如果使用記事本開啟會很容易眼花,因為整個畫面就只有白和黑而且還沒有格式排版,找起來真的很困難。

官網:https://www.sublimetext.com/

image 71 [楓之谷私服]改NPC腳本完整教程

Visual Studio Code

大部分學編程的都會使用的代碼編輯軟體,雖然比起Sublime Text介面複雜很多,但功能齊全且能自動排版,說不定大部分人電腦都有安裝,所以直接使用VSCode也是可以的。

image 72 [楓之谷私服]改NPC腳本完整教程

當然,你有其他的編輯器也是可以使用的,這邊只是推薦我自己在用的三個軟體,你如果堅持要使用記事本也不是不可以。

修改NPC

NPC的腳本放置於 伺服端\Libs\scripts 內(TMS v120) 其他的版本可以找一下,會有一個叫npc的資料夾。

image 73 [楓之谷私服]改NPC腳本完整教程

裡面的檔案都是js檔,這也意味著NPC腳本是使用JS撰寫的,因此多少需要具備一點JS基礎(或者邊看原本的內容邊學也可以,很簡單)。

image 74 [楓之谷私服]改NPC腳本完整教程

查詢NPC代碼

檔名的數字代表的是NPC的代碼,關於楓之谷所有代碼你可以在這裡查詢(這邊查到的內容到TMS v232 而我們的版本只有v120 所以很容易查到120版本沒有的NPC)。

image 75 [楓之谷私服]改NPC腳本完整教程

這怎麼辦呢?

你也可以將 伺服器端 - wz - String.wz 中的Npc.img.xml檔案用編輯器打開查詢,String.wz中放置的是整個楓之谷世界的東西”名稱”以及他們會說的”話”,在這裡找尋你想要修改的NPC,name=”這邊就是該NPC的代碼”

比如智慧爺爺的代碼就是 1002003,只要在npc資料夾中找到 1002003.js 修改即可(有的NPC會沒有js檔,你可以自己新增)。

image 80 [楓之谷私服]改NPC腳本完整教程

出現亂碼

使用隨便一個編輯器開啟你想要修改的NPC,但是有的NPC打開內容會變成這樣,有一些奇怪的亂碼,這是編碼錯誤的問題。

image 76 [楓之谷私服]改NPC腳本完整教程

如果你是使用VSCode,按下Ctrl+Shift+P開啟命令列輸入「編碼」選擇「以編碼重新開啟(Reopen with Encoding)」。

image 77 [楓之谷私服]改NPC腳本完整教程

VSCode會自動偵測你的檔案該使用什麼編碼開啟,選擇Big5之後就會正常顯示文字了。

image 78 [楓之谷私服]改NPC腳本完整教程
image 79 [楓之谷私服]改NPC腳本完整教程

腳本撰寫

楓之谷大部分指令都是 cm 開頭,比如:

cm.dispose(); //結束對話
cm.gainItem(itemID,count); //玩家獲得物品。count可以是負數,如果是負數代表NPC拿走。
cm.gainMeso(1500); //給予1500楓幣
cm.gainMeso(-1500); //拿走1500楓幣
cm.haveItem(4031134) //檢查玩家身上是否有某物品
cm.warp(110000000, 0); //傳送玩家至某地圖

要注意的地方是,傳送玩家至某處的代碼下面要記得在後面加上結束對話,不然會出BUG。

cm.dispose(); //結束對話

其他指令可以看【楓之谷教學】用於楓之谷的簡易 JS 語法,學會後包你玩弄語法於手掌之中

NPC基本寫法可以參考 10201.js 法師轉職腳本

/*
	NPC Name: 		Grendel the Really Old
	Map(s): 		Maple Road : Spilt road of choice
	Description: 		Job tutorial, movie clip
*/
var status = -1;
function start() {
    action(1, 0, 0);
}
function action(mode, type, selection) {
    if (mode == 1) {
	status++;
    } else {
	if (status == 1) {
	    cm.sendNext("如果你想體驗法師的感覺,再來跟我對話。");
	    cm.dispose(); //關閉對話
	    return;
	}
	status--;
    }
    if (status == 0) {
	cm.sendNext("法師有華麗的屬性為基本的法術和輔助魔法,能幫助整個團隊。第二次轉職後,屬性的魔法將提供大量的相克的屬性敵人造成傷害。");
    } else if (status == 1) {
	cm.sendYesNo("你想體驗一下法師的感覺嗎?");
    } else if (status == 2) {
	cm.MovieClipIntroUI(true); //播放動畫
	cm.warp(1020200, 0); // Effect/Direction3.img/magician/Scene00
	cm.dispose();
    }
}

獲得物品類NPC腳本參考 1012002.js 比休斯 製作商,可以學到很多東西。

image 81 [楓之谷私服]改NPC腳本完整教程

對話顯示道具詳細資訊和圖示

我們可以在NPC對話內容顯示道具圖示以及道具的名稱和詳細資訊。

NPC裝備顯示 [楓之谷私服]改NPC腳本完整教程

顯示圖示:#i 物品id #;顯示詳細資訊和名字:#z 物品id #

基本寫法如下:

cm.sendSimple("#i"+itemid+"#"); //顯示物品圖示
cm.sendSimple("#z"+itemid+"#"); //顯示物品名字及詳細資訊

當你需要列出好多個道具提供玩家選擇時也可以這麼寫:

var msg = "";
for (var v = 0; v < wp1.length; v++) { //wp1為存放物品id的陣列
     var id = wp1[v];
     msg += "\r\n#b#L" + v + "##i"+id+"##z"+id+"##l ";
}
cm.sendSimple("您想換什麼??" + msg);

關於更詳細的NPC撰寫請參考另一篇:

我自己有寫了幾個常見的NPC腳本,有興趣想參考的可以看一下:

順手丟幾個教程給各位參考:從零開始學習 NPCNPC基本初級教學NPC基本中級教學萬能NPC腳本[JavaScript]楓之谷 (NPC撰寫語法篇)遊戲中是如何透過NPC改寫資料表 ?NPC對話腳本函數

如果你不想學怎麼寫,網路上也有很多人分享的腳本可以直接下載或複製貼上,自己找找吧。

4e52d54f6bc42abb41d26eb5b0df6517?s=250&d=wavatar&r=g [楓之谷私服]改NPC腳本完整教程
5 1 評分
Article Rating
訂閱
通知
guest
2 Comments
在線反饋
查看所有評論
沈玉璽
沈玉璽
7 月 前

請問該如何修改一轉能力點重製的部分
我從Effect/Direction3.img/archer/Scene0
可是好像找不太到 法師為例
想改成不會重製能力點

Zisha
Zisha
2 月 前

謝謝大大的教學,我終於自己改出了一個自己滿意的NPC 必須推阿

asz910858 最後編輯於 2 月 前