楓之谷私服武陵道場NPC JS腳本

適用端口:120白狐端

演示:

兌換道具數量可在腳本內自行更改。


  • 中文化:本人
  • NPC:2091005

腳本:

var status = -1;
var sel;
var mapid;

function start() {
    mapid = cm.getMapId();

    if (mapid == 925020001) {
	cm.sendSimple("我的師傅是武陵中擁有最高功力的人,您現在是想告訴我您要挑戰我的師傅嗎?不要說我沒有警告過你。#b \n\r #L0#我想單人挑戰他#l \n\r #L1#我想組隊挑戰他#l \n\r #L2#我想兌換腰帶#l \n\r #L3#我想重設訓練點#l \n\r #L5#什麼是武陵修煉場?#l");
    } else if (isRestingSpot(mapid)) {
	cm.sendSimple("我很驚訝你已經安全地達到了這個樓層,但是不會再這麼容易了。你怎麼想?你想繼續嗎?#b \n\r #L0#是的,我要繼續。#l \n\r #L1#我想離開。#l \n\r #L2#我想儲存我的紀錄。#l");
    } else {
	cm.sendYesNo("什麼?你準備要離開了?您還可以進入下一個級別呢!你確定真的要離開?");
    }
}

function action(mode, type, selection) {
    if (mapid == 925020001) {
	if (mode == 1) {
	    status++;
	} else {
	    cm.dispose();
		return;
	}
	if (status == 0) {
	    sel = selection;

	    if (sel == 5) {
		cm.sendNext("我的師傅是武陵中擁有最高功力的人,且他也是建立這個武陵修練塔的人。武陵道場是一個龐大的訓練設施,共有38層。 每個樓層難度級別都不同。當然,憑藉您的功力,到達頂樓是不可能的...");
		cm.dispose();
	    } else if (sel == 3) {
		cm.sendYesNo("您知道如果重新設置訓練點,它將恢復為0,對吧?老實說,這不一定是壞事。重置訓練點並重新開始後,那麼您就可以再次收到皮帶了。 你想重設訓練點嗎?");
	    } else if (sel == 2) {
		cm.sendSimple("到目前為止,您的總訓練點數是 #b"+cm.getDojoPoints()+"#k。 我的師父惜愛有才華的人,因此,如果您積累了足夠的訓練點, 您將可以根據自己的訓練點獲得腰帶...\n\r #L0##i1132000:# #t1132000# (50)#l \n\r #L1##i1132001:# #t1132001# (150)#l \n\r #L2##i1132002:# #t1132002# (300)#l \n\r #L3##i1132003:# #t1132003# (450)#l \n\r #L4##i1132004:# #t1132004# (600)#l\r\n");
	    } else if (sel == 1) {
		if (cm.getParty() != null) {
		    if (cm.isLeader()) {
			cm.sendOk("您要立即進入嗎?");
		    } else {
			cm.sendOk("嘿,您甚至都不是隊長。您想偷偷溜進去做什麼?如果您想進入該場所,請告訴您的隊長與我交談。");
		    }
		}
	    } else if (sel == 0) {
		if (cm.getParty() != null) {
			cm.sendOk("請離開你的隊伍。");
			cm.dispose();
		}
		var record = cm.getQuestRecord(150000);
		var data = record.getCustomData();

		if (data != null) {
		    var idd = get_restinFieldID(parseInt(data));
		    if (idd != 925020002) {
		        cm.dojoAgent_NextMap(true, true , idd );
		        record.setCustomData(null);
		    } else {
			cm.sendOk("請等等再嘗試一次。");
		    }
		} else {
		    cm.start_DojoAgent(true, false);
		}
		cm.dispose();
	    // cm.sendYesNo("The last time you took the challenge yourself, you were able to reach Floor #18. I can take you straight to that floor, if you want. Are you interested?");
	    }
	} else if (status == 1) {
	    if (sel == 3) {
		cm.setDojoRecord(true);
		cm.sendOk("我已將您的訓練點重設為0");
	    } else if (sel == 2) {
		var record = cm.getDojoRecord();
		var required = 0;
		
		switch (record) {
		    case 0:
			required = 500;
			break;
		    case 1:
			required = 1500;
			break;
		    case 2:
			required = 3000;
			break;
		    case 3:
			required = 4500;
			break;
		    case 4:
			required = 6000;
			break;
			case 5:
			required = 9000;
			break;
			case 6:
			required = 11000;
			break;
			case 7:
			required = 15000;
			break;
		}

		if (record == selection && cm.getDojoPoints() >= required) {
		    var item = 1132000 + record;
		    if (cm.canHold(item)) {
			cm.gainItem(item, 1);
			cm.setDojoRecord(false);
		    } else {
			cm.sendOk("請檢查背包中是否還有空位。");
		    }
		} else {
		    cm.sendOk("您已經擁有或訓練點不足。請嘗試先獲取較低階的腰帶。");
		}
		cm.dispose();
	    } else if (sel == 1) {
		cm.start_DojoAgent(true, true);
		cm.dispose();
	    }
	}
    } else if (isRestingSpot(mapid)) {
	if (mode == 1) {
	    status++;
	} else {
	    cm.dispose();
	    return;
	}

	if (status == 0) {
	    sel = selection;

	    if (sel == 0) {
		if (cm.getParty() == null || cm.isLeader()) {
		    cm.dojoAgent_NextMap(true, true);
		} else {
		    cm.sendOk("只有隊長可以繼續前進。");
		}
		//cm.getQuestRecord(150000).setCustomData(null);
		cm.dispose();
	    } else if (sel == 1) {
		cm.askAcceptDecline("你想退出嗎?你真的想離開這裡嗎?");
	    } else if (sel == 2) {
		if (cm.getParty() == null) {
			var stage = get_stageId(cm.getMapId());

			cm.getQuestRecord(150000).setCustomData(stage);
			cm.sendOk("我剛剛記錄了您的進度。下次您到達這裡時,我會直接將您送到此樓層。");
			cm.dispose();
		} else {
			cm.sendOk("嘿..您無法記錄與隊伍合作的進度...");
			cm.dispose();
		}
	    }
	} else if (status == 1) {
	    if (sel == 1) {
		if (cm.isLeader()) {
			cm.warpParty(925020002);
		} else {
			cm.warp(925020002);
		}
	    }
	    cm.dispose();
	}
    } else {
	if (mode == 1) {
		if (cm.isLeader()) {
			cm.warpParty(925020002);
		} else {
			cm.warp(925020002);
		}
	}
	cm.dispose();
    }
}

function get_restinFieldID(id) {
	var idd = 925020002;
    switch (id) {
	case 1:
	    idd =  925020600;
	    break;
	case 2:
	    idd =  925021200;
	    break;
	case 3:
	    idd =  925021800;
	    break;
	case 4:
	    idd =  925022400;
	    break;
	case 5:
	    idd =  925023000;
	    break;
	case 6:
	    idd =  925023600;
	    break;
    }
    for (var i = 0; i < 10; i++) {
	var canenterr = true;
	for (var x = 1; x < 39; x++) {
		var map = cm.getMap(925020000 + 100 * x + i);
		if (map.getCharactersSize() > 0) {
			canenterr = false;
			break;
		}
	}
	if (canenterr) {
		idd += i;
		break;
	}
}
	return idd;
}

function get_stageId(mapid) {
    if (mapid >= 925020600 && mapid <= 925020614) {
	return 1;
    } else if (mapid >= 925021200 && mapid <= 925021214) {
	return 2;
    } else if (mapid >= 925021800 && mapid <= 925021814) {
	return 3;
    } else if (mapid >= 925022400 && mapid <= 925022414) {
	return 4;
    } else if (mapid >= 925023000 && mapid <= 925023014) {
	return 5;
    } else if (mapid >= 925023600 && mapid <= 925023614) {
	return 6;
    }
    return 0;
}

function isRestingSpot(id) {
    return (get_stageId(id) > 0);
}