查看: 1054|回复: 3

能NPC基本語法教學

[复制链接]
  • TA的每日心情

    2022-12-15 19:48
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    74

    主题

    9

    回帖

    355

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    355
    QQ
    发表于 2022-12-1 19:54:15 | 显示全部楼层 |阅读模式
    有太多人來問關於萬能NPC的寫法了
    提供幾個比較基本的,麻煩新手自己
    本文總共有三個重點
    以下會逐例說明


    這是小馬端原版的萬能



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


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

    重點 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細體字



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

    重點 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()+"




    -----------------------------------------------------------------------------
    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;

    }
    }
    }

    }



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


    [轉發自 小馬論壇 紅茶]
    专注于GMS研究,有偿调试架设,全网最低,公益群:915210346。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-8-25 05:19
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    4

    主题

    65

    回帖

    347

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    347
    发表于 2024-4-4 03:00:28 | 显示全部楼层
    1111111111111111111
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-6-28 07:37
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    2

    主题

    66

    回帖

    71

    积分

    注册会员

    Rank: 2

    积分
    71
    发表于 2024-6-19 18:14:07 | 显示全部楼层

    666666666666666
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-7-4 11:28
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    0

    主题

    55

    回帖

    168

    积分

    注册会员

    Rank: 2

    积分
    168
    发表于 2024-6-29 07:45:58 | 显示全部楼层
    666666666666666666666
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表