微信扫一扫 分享朋友圈

已有 1037 人浏览分享

[WZ教學] 第一次同行克魯特腳本解析

[複製鏈接]

初窺門道

Rank: 2

219

威望

710

金錢

338

A幣
主題
32
帖子
64
精華
1
綜合社群主題發文量
0
電玩社群主題發文量
0
娛樂社群主題發文量
0
技術社群主題發文量
32
閱讀權限
20
註冊時間
2021-11-15
  • TA的每日心情
    奮鬥
    2024-1-28 13:17
  • 簽到天數: 1 天

    連續簽到: 1 天

    [LV.1]初來乍到

    chenhui540 發表於  2023-1-27 21:22:41 | 顯示全部樓層 | 閱讀模式
    本帖最後由 chenhui540 於 2023-1-31 09:19 編輯

    0.png
    1.png
    2.png
    3.png


    /*
            名字:        克魯特
            地圖:        第一次同行<1號門&g
            描述:        910340100
    */

    var stage1Questions = Array(
            "請聽題:戰士一轉需要的最低等級是多少,請搜集答案數量的通行證給我。",
            "請聽題:戰士一轉需要的最低力量是多少,請搜集答案數量的通行證給我。",
            "請聽題:法師一轉需要的最低智力是多少,請搜集答案數量的通行證給我。",
            "請聽題:弓箭手一轉需要的最低敏捷是多少,請搜集答案數量的通行證給我。",
            "請聽題:盜賊一轉需要的最低敏捷是多少,請搜集答案數量的通行證給我。",
            "請聽題:二轉需要的等級是多少,請搜集答案數量的通行證給我。",
            "請聽題:法師一轉需要的最低等級是多少,請搜集答案數量的通行證給我。");

    var stage1Answers = Array(10, 35, 20, 25, 25, 30, 8);

    function start() {
            var eim = cm.getPlayer().getEventInstance();
            switch(cm.getPlayer().getMap().getId()) {
            case 910340100:
                    if (eim.getProperty("stage1") == null) {
                    if (cm.isLeader()) {
                            var numpasses = eim.getPlayerCount() - 1;
                            var stage2 = cm.getParty().getMembers().size() -1 ;//需要繳納的通行證數量
                    if (cm.haveItem(4001008, numpasses)) {
                            cm.sendNext("你收集了" + numpasses + "通行證,恭喜你們通過了這一關。通往下一區域的傳送門已經打開,到達那裡有時間限制,所以請快點。");
                            eim.setProperty("stage1", 1);
                            cm.showEffect(true, "quest/party/clear");
                            cm.playSound(true, "Party1/Clear");
                            cm.getMap().changeEnvironment("gate", 2);//開啟下傳送門特效
                            cm.removeAll(4001008);
                            cm.dispose();
                            return;
                            }
                            cm.sendNext("歡迎來到#m" + cm.getPlayer().getMap().getId() + "#,在這個階段,組長需要從組員那裡集齊#b" + numpasses + "#k張通行證交給我,才能進入下一區域,請讓每個組員都分別完成我交代的任務,才能獲得通行證。");
                            cm.dispose();
                            return;
                            }
                    if (!cm.isLeader()) {
                            var data = eim.getProperty(cm.getName());//加入隊員名稱判斷

                    if (data == 0) {
                            cm.sendNext("謝謝你給我帶來的通行證,請把這個#b#v4001008:##t4001008##k交給你的組長。");
                            cm.dispose();
                            return;
                            }
                    if (data == null) {
                            data = Math.floor(Math.random() * stage1Questions.length) + 1;
                            eim.setProperty(cm.getName(), data);//給與隊員問題判斷
                            var question = stage1Questions[data - 1];
                            cm.sendNext("歡迎來到#m" + cm.getPlayer().getMap().getId() + "#,在這個階段,你必須狩獵附近怪物,獲取我所提問的正確答案相應數量的通行證交給我。\r\n\r\n" + question);
                            cm.dispose();
                            return;
                            }
                            var answer = stage1Answers[data - 1];

                    if (cm.itemQuantity(4001007) == answer) {
                            cm.sendNext("答案是對的,囙此,你剛剛收到了一張#b#v4001008:##t4001008##k,請把這個通行證交給你的組長。");
                            cm.gainItem(4001007, -answer);
                            cm.gainItem(4001008, 1);
                            eim.setProperty(cm.getName(), 0);//給與隊員答題判斷
                            cm.dispose();
                            return;
                            }
                            var question = stage1Questions[eim.getProperty(cm.getName()) - 1];//問題識別判斷
                            cm.sendNext("很抱歉,你所帶來的通行證數量與問題正確答案不一致,目前持有:#b#c4001007##k張通行證\r\n" + question);
                            cm.dispose();
                            return;
                            }
                            }
                            cm.sendOk("通往下一區域的入口,已經開啟。");
                            cm.dispose();
                            break;
            case 910340200:
                    if (eim.getProperty("stage2") == null) {
                    if (!cm.isLeader()) {
                            cm.sendOk("歡迎來到#m" + cm.getPlayer().getMap().getId() + "#,請根據組長的指示進行這一關挑戰。");
                            cm.dispose();
                            return;
                            }
                    if (eim.getProperty("stage2a") == null) {
                            cm.sendOk("歡迎來到#m" + cm.getPlayer().getMap().getId() + "#,你會發現一些#b繩索#k,其中有兩根連接著通往下一關的傳送門,你們需要做的是讓兩名組員#b爬#k上正確的繩子。當隊員爬好了位置,請隊長與我對話。\r\n\r\n注意,如果爬的太低,將得不到正確答案,如果你們組合正確了,傳送門就會打開。");
                            eim.setProperty("stage2a", 1);
                            cm.dispose();
                            return;
                            }
                    if (eim.getProperty("stage2b") == null) {
                            eim.setProperty("stage2b", (Math.random() < 0.3) ? "0101" : (Math.random() < 0.5) ? "0011" : "1001");//給予隨機答案  可以改進寫法 設置更多
                            }
                            var chenhui = 0;//設置基礎數值0
                            for (var i = 0; i < 4; i++)//繩索的數量
                            if (cm.getMap().getNumPlayersItemsInArea(i) > 0) {//判斷繩索上是否有玩家
                            chenhui++;//以0為基礎 遞增繩索上玩家數量
                            }
                    if (chenhui != 2) {//繩索玩家數量不是2名的時候提示
                            cm.sendOk("看起來你還沒有找到正確的方法,需要讓兩名組員#b爬#k到繩子上面,以形成不同的組合。");
                            cm.dispose();
                            return;
                            }
                            var x = "";//空值,如果不設置 下麵 x+= 會報錯
                            for (var i = 0; i < 4; i++)//繩索的數量
                            x += cm.getMap().getNumPlayersItemsInArea(i);//讀取4跟繩索上玩家的組合 數字顯示為 1100, 1010,0011,等。
                            y = x;//固定x的數值
                    if (y == eim.getProperty("stage2b")) {//當讀取繩索上玩家的組合與之前隨機載入的答案一致的時候
                            eim.setProperty("stage2", 1);
                            cm.showEffect(true, "quest/party/clear");//動畫特效
                            cm.playSound(true, "Party1/Clear");//聲音特效
                            cm.getMap().changeEnvironment("gate", 2);
                            cm.sendOk("組合正確,通往下一區域的入口,已經開啟。");
                            cm.dispose();
                            return;
                            }
                            cm.showEffect(true, "quest/party/wrong_kor");//動畫特效
                            cm.playSound(true, "Party1/Failed");//聲音特效
                            cm.sendNext("組合是錯誤的,看來你還沒有找到正確的2個平臺,請再繼續調整一下位置。");
                            cm.dispose();
                            return;
                            }
                            cm.sendOk("通往下一區域的入口,已經開啟。");
                            cm.dispose();
                            break;
            case 910340300:
                    if (eim.getProperty("stage3") == null) {
                    if (!cm.isLeader()) {
                            cm.sendOk("歡迎來到#m" + cm.getPlayer().getMap().getId() + "#,請根據組長的指示進行這一關挑戰。");
                            cm.dispose();
                            return;
                            }
                    if (eim.getProperty("stage3a") == null) {
                            cm.sendOk("歡迎來到#m" + cm.getPlayer().getMap().getId() + "#,你會發現一些#b平臺#k,其中有兩個連接著通往下一關的傳送門,你們需要做的是讓兩名組員#b站#k到正確的平臺上。當隊員站好了位置,請隊長與我對話。\r\n\r\n注意,如果站的太接近邊緣,將得不到正確答案,如果你們組合正確了,傳送門就會打開。");
                            eim.setProperty("stage3a", 1);
                            cm.dispose();
                            return;
                            }
                    if (eim.getProperty("stage3b") == null) {
                            eim.setProperty("stage3b", (Math.random() < 0.3) ? "00101" : (Math.random() < 0.5) ? "00011" : "10001");//給予隨機答案
                            }
                            var chenhui = 0;
                            for (var i = 0; i < 5; i++)//平臺的數量
                            if (cm.getMap().getNumPlayersItemsInArea(i) > 0) {
                            chenhui++;
                            }
                    if (chenhui != 2) {
                            cm.sendOk("看起來你還沒有找到正確的方法,需要讓兩名組員#b站#k到平臺上面,以形成不同的組合。");
                            cm.dispose();
                            return;
                            }
                            var x = "";
                            for (var i = 0; i < 5; i++)//平臺的數量
                            x += cm.getMap().getNumPlayersItemsInArea(i);
                            y = x;
                    if (y == eim.getProperty("stage3b")) {
                            eim.setProperty("stage3", 1);
                            cm.showEffect(true, "quest/party/clear");
                            cm.playSound(true, "Party1/Clear");
                            cm.getMap().changeEnvironment("gate", 2);
                            cm.sendOk("組合正確,通往下一區域的入口,已經開啟。");
                            cm.dispose();
                            return;
                            }
                            cm.showEffect(true, "quest/party/wrong_kor");
                            cm.playSound(true, "Party1/Failed");
                            cm.sendNext("組合是錯誤的,看來你還沒有找到正確的2個平臺,請再繼續調整一下位置。");
                            cm.dispose();
                            return;
                            }
                            cm.sendOk("通往下一區域的入口,已經開啟。");
                            cm.dispose();
                            break;
            case 910340400:
                    if (eim.getProperty("stage4") == null) {
                    if (cm.isLeader()) {
                    if (cm.haveItem(4001008, 19)) {
                            cm.sendOk("大家表現得非常好,通往下一區域的入口,已經開啟。");
                            cm.gainItem(4001008, -19);
                            eim.setProperty("stage4", 1);
                            cm.showEffect(true, "quest/party/clear");
                            cm.playSound(true, "Party1/Clear");
                            cm.getMap().changeEnvironment("gate", 2);
                            cm.dispose();
                            return;
                            }
                            cm.sendOk("你好,歡迎進入#m" + cm.getPlayer().getMap().getId() + "#,繞著地圖走一圈,你就能找到一些怪物,擊敗所有怪物,收集好全部的通行證後,再轉交給我。");
                            cm.dispose();
                            return;
                            }
                            cm.sendOk("你好,歡迎進入#m" + cm.getPlayer().getMap().getId() + "#,繞著地圖走一圈,你就能找到一些怪物,請擊敗所有怪物,收集好全部的通行證後,讓組長轉交給我。");
                            cm.dispose();
                            return;
                            }
                            cm.sendOk("通往下一區域的入口,已經開啟。");
                            cm.dispose();
                            break;
            case 910340500:
                    if (eim.getProperty("stage5") == null) {
                    if (cm.isLeader()) {
                    if (cm.getMap(910340500).getAllMonstersThreadsafe().size() == 0) {
                            cm.sendNext("恭喜你們完成了所有挑戰,請等待傳送到最終的獎勵關卡,裡面的怪物比普通的更容易打敗,你會有一段時間盡可能多的狩獵,也可以與NPC對話提前結束。");
                            cm.mapMessage(6, "恭喜你們完成了所有挑戰,請等待傳送到最終的獎勵關卡,裡面的怪物比普通的更容易打敗,你會有一段時間盡可能多的狩獵,也可以與NPC對話提前結束。");
                            eim.setProperty("stage5", 1);
                            cm.showEffect(true, "quest/party/clear");
                            cm.playSound(true, "Party1/Clear");
                            cm.getEventInstance().startEventTimer(1 * 10000);
                            cm.dispose();
                            return;
                            }
                            }
                            cm.sendOk("你好。歡迎來到第五階段,也是最後一階段。 請消滅地圖中的綠水靈王,就可以進入獎勵階段了哦。");
                            cm.dispose();
                            return;
                            }
                            cm.sendOk("請耐心等待,倒數計時後將進入最終的獎勵關卡。");
                            cm.dispose();
    }
    }

    遺棄之塔踩箱子脚本

    /*
            名字:        藍氣球
            地圖:        遺棄之塔<第5階段>
            描述:        922010800
    */

    function start() {
            var eim = cm.getPlayer().getEventInstance();
            if (eim.getProperty("stage8status") == null) {//判斷條件
                    if (!cm.isLeader()) {//判斷組長
                            cm.sendOk("歡迎來到#m" + cm.getPlayer().getMap().getId() + "#,請根據組長的指示進行這一關挑戰。");
                            cm.dispose();
                            return;
                            }
                    if (eim.getProperty("stage8a") == null) {
                            cm.sendOk("歡迎來到遺棄之塔<第5階段>,在這個階段中,需要2名組員分別站在這些標有數位的方塊上面,以形成正確的組合來解鎖下一階段。");
                            eim.setProperty("stage8a", 0);
                            cm.dispose();
                            return;
                            }
                    if (eim.getProperty("stage8b") == null) {
                            hui = ["100000001", "010010000", "001010000", "000010100", "000001010", "000100001", "000000110", "010000010", "001000100"];
                            eim.setProperty("stage8b", hui[parseInt(Math.random() * hui.length)]);
                            }
                            var chenhui = 0;
                            for (var i = 0; i < 9; i++)
                            if (cm.getMap().getNumPlayersItemsInArea(i) > 0) {
                            chenhui++;
                            }
                    if (chenhui != 2) {
                            cm.sendOk("看起来你还没有找到正确的方法,需要2名組員分別站在這些標有數位的方塊上面,以形成正確的組合。");
                            cm.dispose();
                            return;
                            }
                            var x = "";
                            for (var i = 0; i < 9; i++)
                            x += cm.getMap().getNumPlayersItemsInArea(i);
                            y = x;
                    if (y == eim.getProperty("stage8b")) {
                            eim.setProperty("stage8status", 1);
                            cm.showEffect(true, "quest/party/clear");
                            cm.playSound(true, "Party1/Clear");
                            cm.getMap().changeEnvironment("gate", 2);
                            cm.sendOk("組合正確,通往下一區域的入口,已经開啟。");
                            cm.dispose();
                            return;
                            }
                            cm.showEffect(true, "quest/party/wrong_kor");
                            cm.playSound(true, "Party1/Failed");
                            cm.dispose();
                            return;
                            }
                            cm.sendOk("通往下一區域的入口,已经開啟。");
                            }
                            cm.dispose();
    }



    方法很簡單,基本上這樣的導入隨機設置與讀取 對很多腳本通用!只需要簡單的修改下對應讀取的函數

    反應堆的讀取 雅典娜禁地 為例:


                            var chenhui = 0;
                            for (var i = 1; i < 4; i++)
                            if (cm.getMap().getReactorByName("" + i).getState() > 0) {
                            chenhui++;
                            }

                            var x = "";
                            for (var i = 1; i < 4; i++)
                            x += cm.getMap().getReactorByName("" + i).getState();
                            y = x;



    关于随机答案,另一种写法

    hui = ["0101", "1010", "0110", "0011", "1001"];
    eim.setProperty("stage2b", hui[parseInt(Math.random() * hui.length)]);



    注意:此脚本只适用于改版之后的内容,但方法是一致的不知道是系统语言不支持还是什么问题    脚本里含有 [i] 的发到论坛上 会消失掉!

    9020001.rar (2.43 KB, 下載次數: 211)

    集團新軍

    Rank: 1

    5

    威望

    27

    金錢

    0

    A幣
    主題
    0
    帖子
    17
    精華
    0
    綜合社群主題發文量
    0
    電玩社群主題發文量
    0
    娛樂社群主題發文量
    0
    技術社群主題發文量
    0
    閱讀權限
    10
    註冊時間
    2023-1-30

    該用戶從未簽到

    哈柔呀 發表於 2023-1-30 08:02:52 | 顯示全部樓層
    已明白 謝謝分享
    您需要登錄後才可以回帖 登錄 | 註冊會員

    本版積分規則

    64

    發文

    710

    金錢

    338

    A幣

    ----------榮譽勳章----------

    熱門推薦
    圖文推薦
    • 聯繫我們

    小黑屋|AICL社群娛樂集團

    GMT+8, 2024-4-19 09:19 , 網路刷新 0.112607 秒 .

    歡迎來到 AICL網路社群

    版權AICL社群所有 2011-2021.

    Total:123 Today:213 Online:322