Lon

Lv.1 初心者
管理成員
管理員
註冊
2022-08-27
文章
13
評分
4
聲望
0
有太多人來問關於萬能NPC的寫法了
提供幾個比較基本的,麻煩新手自己
本文總共有三個重點
以下會逐例說明


這是小馬端原版的萬能

1.png
我相信只要認真看完這一篇,你也能改出這樣的萬能。
2.png
-----------------------------------------------------------------------------

重點 1.字的學問

字體的部分,板上很多都有教學了,我還是再發一次。

顏色 :#r > 紅字 #b > 籃字 #g > 綠字 #k > 黑字 #d > 紫字
粗細體:#e > 粗體字 #n > 細體字
\r\n:換行功能,可以換到下一行去。
語法:
示範功能\r\n#r紅字\r\n#b籃字\r\n#g綠字\r\n#k黑字\r\n#d紫字\r\n\r\n#e粗體字\r\n#n細體字

1662029401401.png
-----------------------------------------------------------------------------

重點 2.特殊語法

以下是應用在NPC上面的指令。

#h # 可以顯示玩家的名字
#c物品代碼# 可以顯示玩家目前身上有幾個物品(以代碼為主)
#z物品代碼# 可以在NPC上顯示該道具的名稱(以代碼為主)
#i物品代碼# 可以在NPC上顯示該道具的圖片(以代碼為主)
#m地圖代碼# 可以在NPC上顯示該地圖的名稱(以代碼為主)
#o怪物代碼# 可以在NPC上顯示該怪物的名稱(以代碼為主)
#pNPC代碼# 可以在NPC上顯示該NPC的名稱(以代碼為主)
"+cm.getChar().getLevel()+" 可以顯示玩家目前的等級
"+cm.getChar().getReborns()+" 可以顯示玩家目前的轉生次數
"+cm.getChar().getRemainingAp()+" 可以顯示玩家目前剩餘的能力點數

這是以上所有功能的語法
物品代碼:獎杯(4000038) 地圖代碼:自由市場入口(910000000)
怪物代碼:嫩寶(100100) NPC代碼:維多利亞港五星級計程車(1002004)

顯示玩家ID,範例:#h #\r\n顯示玩家身上有幾個獎盃,範例:#c4000038#\r\n顯示獎盃名稱,範例:#z4000038#\r\n顯示
獎盃圖片,範例:#i4000038#\r\n顯示地圖名稱,範例:#m910000000#\r\n顯示怪物名稱,範例:#o100100#\r\n顯示
NPC名稱,範例:#p1002004#\r\n顯示玩家的等級,範例:"+cm.getChar().getLevel()+"\r\n可以顯示玩家目前的轉生次
數,範例:"+cm.getChar().getReborns()+"\r\n可以顯示玩家剩餘的能力點數,範
例:"+cm.getChar().getRemainingAp()+"


1662029460789.png
-----------------------------------------------------------------------------
Part 3.功能函數

最後,是增加功能的部分。
萬能NPC的主要功能就是這四種:地圖傳送、連結NPC、連結商店、技能點滿。

地團傳送:點下去就會把你傳送到某個地方去。...........cm.warp(地圖代碼 ,0); cm.dispose(); break;
連結NPC :點下去後就會開啟另外一個NPC。..............cm.openNpc(npc代碼); break;
連結商店:點下去就會開啟N8資料庫內設定的商店。...cm.openShop(npc代碼); cm.dispose();break;
技能點滿:點下去,技能就會全滿。............................cm.getChar().maxAllSkills(); cm.dispose(); break;

新增功能的語法如下:#Lx#功能名稱
ex:#L60#超級百貨

那個X就是你要連結過去的代號。
以上面的例子來說,我設定連結代號x為60。
也就是說,我必須設定一個"Case",且這個Case的代號是"60"。
並將這個Case定為"超級百貨"的功能。

這樣講有點難懂,沒關係,整個舉例一次你就懂了。

假設今天我新了的四樣功能:
連結代號50:傳送至自由市場
連結代號51:寶箱兌換(npc:1111111)
連結代號52:百貨販賣(NPC:1111112)
連結代號53:技能點滿。

請看紅字的部分

var status = 0;

function start() {
status = 1;
action(1, 0, 0);
}

function action(mode, type, selection) {

if (mode == 1) {
cm.dispose();
} else {
if (mode == 0) {
cm.dispose();
return;
}
if (mode == 1)
status++;
else
status;
if (status == 0) {
cm.sendSimple ("親愛的玩家#r#h ##k有何貴幹?\r\n\#r#L0##e地圖傳送#r#L1#Boss 傳送#L2#練功地圖
#L43#黃金鐵鎚\r\n#b#L42#點數販賣#L35#創建工會#L41#每日獎勵#L18#寵物領取#k\r\n#L34#鎖住裝備#L36#解鎖裝
備#L38#觀看時間#L25#任務技能全滿\r\n#L28##d台版最新點裝#L14#4轉技能上限10#L4#是非選擇題#b\r\n#L5##g銀
行#L23#素質重置#L7#超級百貨#L8#廣播專賣\r\n#L10##e#r音樂點歌#L11#倉庫管理#L12#玩具販賣區\r\n#b#L13#購
買名聲#L30#黃金楓葉武器#L24#點裝購買#L39#排行查詢\r\n#g#L15#想成為正咩?#L16#想成為帥哥?#L26#進階正咩
#L27#進階帥哥#l\r\n#k#L17##d1轉職業#L22#2~4轉#L9#技能書查詢\r\n#L44#傳送到自由市場#L45#寶箱兌換
#L46#百貨販賣#L47#技能點滿");
} else if (status == 1) {
switch(selection) {
case 0: cm.openNpc(9000020); break;
case 1: cm.openNpc(9201045); break;
case 2: cm.openNpc(9220005); break;
case 3: cm.openNpc(2040048); break;
case 4: cm.openNpc(9010000); break;
case 5: cm.openNpc(2100006); break;
case 7: cm.openNpc(9201001); break;
case 8: cm.openNpc(2093004); break;
case 9: cm.openNpc(9201086); break;
case 10: cm.openNpc(1061008); break;
case 11: cm.openNpc(1022005); break;
case 12: cm.openShop(13017); cm.dispose();break;
case 13: cm.openNpc(9000017); break;
case 14: cm.openNpc(9201091); break;
case 15: cm.openNpc(9900000); break;
case 16: cm.openNpc(9010001); break;
case 17: cm.openNpc(9201088); break;
case 18: cm.openNpc(9201036); break;
case 22: cm.openNpc(9200000); break;
case 23: cm.openNpc(2003); break;
case 24: cm.openNpc(9201089); break;
case 25: cm.openNpc(12101); break;
case 26: cm.openNpc(1012104); break;
case 27: cm.openNpc(1012103); break;
case 28: cm.openNpc(9201101); break;
case 30: cm.openNpc(9201024); break;
case 34: cm.openNpc(1012006); break;
case 35: cm.warp(200000301 ,0); cm.dispose(); break;
case 36: cm.openNpc(9000008); break;
case 38: cm.openNpc(9000009); break;
case 39: cm.openNpc(9040004); break;
case 41: cm.openNpc(2100005); break;
case 42: cm.openNpc(9201082); break;
case 43: cm.openNpc(2100009); break;
case 50: cm.warp(910000000 ,0); cm.dispose(); break;
case 51: cm.openNpc(1111111); break;
case 52: cm.openShop(1111112); cm.dispose();break;
case 53: cm.getChar().maxAllSkills(); cm.dispose(); break;

}
}
}

}

1662029661187.png
注意到最下面那一行了嗎? 新功能已經顯示出來了!
★重要!
萬能NPC,不是你在JS裡面新增這樣的代碼,系統就可以自己運作。
如果你連結的功能並沒有對應的資料,那他當然只會"無工作"。
舉個例子來說好了,這樣可能比較好懂。
假設說我在萬能NPC新增了修改一個換東西的功能。
我就必須自己寫一個JS,並讓這個JS運作"換東西"的功能。
如果我沒有做JS讓Case連結,那這個功能自然會無效。


[轉發自 小馬論壇 紅茶]
 
最後編輯: