微信扫一扫 分享朋友圈

已有 537 人浏览分享

[服務器疑問] 請問,這一串代碼是再怎樣的條件下會報錯?

[複製鏈接]

集團新軍

Rank: 1

16

威望

61

金錢

1

A幣
主題
1
帖子
24
精華
0
綜合社群主題發文量
0
電玩社群主題發文量
0
娛樂社群主題發文量
0
技術社群主題發文量
1
閱讀權限
10
註冊時間
2023-5-20
  • TA的每日心情
    無聊
    2023-6-30 09:46
  • 簽到天數: 2 天

    連續簽到: 1 天

    [LV.1]初來乍到

    lijiaweikkkk 發表於  2023-6-21 09:22:05 | 顯示全部樓層 | 閱讀模式
    3金錢
    初學NPC腳本,大多都能看懂。拿到一個腳本之後,看了一下這一段

    很費解,拆分出來讀大概是
    if(獲取玩家、獲取地圖、獲取角色ID(獲取玩家、獲取組隊、獲取成員))=獲取玩家,獲取等級
    就提示錯誤
    (不知道對不對)
    我沒有看懂這一句到底是怎樣
    感覺像是獲取目前在這張地圖的玩家信息,然後如果玩家信息和玩家等級相同就提示錯誤..?
    共收到 0 A幣
    打賞榜
    暫無
    暫無
    暫無
    暫無
    ----
    暫無
    ----
    暫無
    ----
    暫無
    ----

    最佳答案

    查看完整內容

    稍微看了一下 你這個對於徒弟的部分沒有處理得很好啊 徒弟部分應該也需要建立一個判定 是不是已經有師父了 建議直接寫在角色資料表內 然後讓語法去抓取對應的師傅代碼之類的 判斷如果>0 就不能再拜師 這部分也可以做延伸 相關怎麼做延伸就看你怎麼處理

    初窺門道

    Rank: 2

    337

    威望

    433

    金錢

    216

    A幣
    主題
    13
    帖子
    66
    精華
    5
    綜合社群主題發文量
    0
    電玩社群主題發文量
    0
    娛樂社群主題發文量
    0
    技術社群主題發文量
    13
    閱讀權限
    20
    註冊時間
    2019-8-9

    精華作者勳章

  • TA的每日心情

    2021-6-8 20:12
  • 簽到天數: 14 天

    連續簽到: 0 天

    [LV.3]偶爾看看II

    a894985459 發表於 2023-6-21 09:22:06 | 顯示全部樓層
    lijiaweikkkk 發表於 2023-6-28 08:45
    var 目前可收徒弟數量 = 10;
    var status = -1;

    稍微看了一下
    你這個對於徒弟的部分沒有處理得很好啊
    徒弟部分應該也需要建立一個判定
    是不是已經有師父了
    建議直接寫在角色資料表內 然後讓語法去抓取對應的師傅代碼之類的
    判斷如果>0 就不能再拜師

    這部分也可以做延伸 相關怎麼做延伸就看你怎麼處理
    回復

    使用道具 舉報

    集團新軍

    Rank: 1

    16

    威望

    61

    金錢

    1

    A幣
    主題
    1
    帖子
    24
    精華
    0
    綜合社群主題發文量
    0
    電玩社群主題發文量
    0
    娛樂社群主題發文量
    0
    技術社群主題發文量
    1
    閱讀權限
    10
    註冊時間
    2023-5-20
  • TA的每日心情
    無聊
    2023-6-30 09:46
  • 簽到天數: 2 天

    連續簽到: 1 天

    [LV.1]初來乍到

     樓主| lijiaweikkkk 發表於 2023-6-21 09:23:21 | 顯示全部樓層
    代碼是這樣的
    20230621092247.png
    回復

    使用道具 舉報

    初窺門道

    Rank: 2

    337

    威望

    433

    金錢

    216

    A幣
    主題
    13
    帖子
    66
    精華
    5
    綜合社群主題發文量
    0
    電玩社群主題發文量
    0
    娛樂社群主題發文量
    0
    技術社群主題發文量
    13
    閱讀權限
    20
    註冊時間
    2019-8-9

    精華作者勳章

  • TA的每日心情

    2021-6-8 20:12
  • 簽到天數: 14 天

    連續簽到: 0 天

    [LV.3]偶爾看看II

    a894985459 發表於 2023-6-23 12:25:32 | 顯示全部樓層
    本帖最後由 a894985459 於 2023-6-23 12:32 編輯

    很簡單 var宣告伺服器語法必須寫在 fuction 之下
    不能先宣告
    另外建議把整段碼都貼上來看看

    回復

    使用道具 舉報

    區域版主

    Rank: 10Rank: 10Rank: 10

    245

    威望

    1142

    金錢

    592

    A幣
    主題
    130
    帖子
    245
    精華
    0
    綜合社群主題發文量
    9
    電玩社群主題發文量
    10
    娛樂社群主題發文量
    0
    技術社群主題發文量
    89
    閱讀權限
    100
    註冊時間
    2016-5-17
  • TA的每日心情

    2022-4-29 14:36
  • 簽到天數: 5 天

    連續簽到: 1 天

    [LV.2]偶爾看看I

    t9540513 發表於 2023-6-23 16:12:54 | 顯示全部樓層
    你用打印的方式除錯比較快,你將

    victim.getLevel 打印出來,看看是不是有資料,沒有的話你才比較清楚錯哪裡。
    但個人認為應該是 victim 這個方法沒抓到資料,
    因為我印象中是沒有直接抓取"只抓取有在隊長地圖的隊員"這種方法,你可能要寫一個。
    回復

    使用道具 舉報

    集團新軍

    Rank: 1

    16

    威望

    61

    金錢

    1

    A幣
    主題
    1
    帖子
    24
    精華
    0
    綜合社群主題發文量
    0
    電玩社群主題發文量
    0
    娛樂社群主題發文量
    0
    技術社群主題發文量
    1
    閱讀權限
    10
    註冊時間
    2023-5-20
  • TA的每日心情
    無聊
    2023-6-30 09:46
  • 簽到天數: 2 天

    連續簽到: 1 天

    [LV.1]初來乍到

     樓主| lijiaweikkkk 發表於 2023-6-28 08:45:45 | 顯示全部樓層
    a894985459 發表於 2023-6-23 12:25
    很簡單 var宣告伺服器語法必須寫在 fuction 之下
    不能先宣告
    另外建議把整段碼都貼上來看看

    var 目前可收徒弟數量 = 10;
    var status = -1;

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

    function action(mode, type, selection) {

        if (mode == 1) {
            status++;
        } else if (mode == 0 && status != 0) {
            status--;
        } else {
            cm.dispose();
            return;
        }

        if (status == 0) {
            var text = "\t\t\t#e歡迎來到#b冒險島#r師徒系統#k!#n\r\n";
            text += "你需要建立師門嗎?\r\n"
            text += "#L1#我要建立師門#l                        #L6##b師徒系統説明#k\r\n"
            text += "#L2#帶徒入門 (#r徒弟必須是隊長,需組隊#k)#l        \r\n"
            text += "#L3#帶徒出師 (#r徒弟必須是隊長,需組隊#k)#l\r\n"
            text += "#L4#逐徒出師#l                #L5#退出師門#l\r\n\r\n#L7##r★徒弟拜師後點我[登記在冊]#l\r\n\r\n"
            text += "#L8#徒弟出師後領取奬勵(徒弟點)\r\n"
            text += "#L100#返回自由\r\n"
            cm.sendSimple(text);
        } else if (status == 1) {
            if (selection == 1) {
                            //建立師門
                var id = cm.getPlayer().getId();
                if (cm.getPlayer().getLevel() < 80) {
                    cm.sendOk("你的等級不夠80級, 無法建立師門");
                    cm.dispose();
                    return;
                } else if (cm.getOneTimeLog("師傅") < 1) {
                    cm.setOneTimeLog("師傅");
                    cm.sendOk("你成功建立了師門,趕緊去收徒吧!");
                    cm.worldMessage(6, "【師徒系統】[" + cm.getChar().getName() + "]成功建立了師門,要找師傅的趕緊了!");
                    cm.dispose();
                } else {
                    cm.sendOk("你已經建立過師門了!去收徒吧!");
                    cm.dispose();
                }
                    } else if (selection == 100) {
                            cm.warp(910000000, 0);
                            cm.dispose();
            } else if (selection == 2) {//帶徒入門
                if (cm.getParty() == null) {
                    cm.sendOk("請組隊後在來找我!");
                    cm.dispose();
                    return;
                } else if (cm.allMembersHere() == false) {
                    cm.sendOk("徒弟或者師傅不在這個地圖啊?");
                    cm.dispose();
                    return;
                } else if (cm.getOneTimeLog("師傅") < 1) { //還沒創立師門
                    cm.sendOk("請讓師傅找我對話(PS:師傅一定要是隊員)");
                    cm.dispose();
                    return;
                } else if (cm.isLeader()) {
                    cm.sendOk("請讓師傅找我對話(PS:師傅一定要是隊員)");
                    cm.dispose();
                    return;
                } else if (cm.getOneTimeLog("daitu") >= 目前可收徒弟數量) {
                    cm.sendOk("你已經收了 #r" + 目前可收徒弟數量 + "#k 個徒弟了,暫時不能繼續收徒");
                    cm.dispose();
                    return;
                }
                     var next = true;
                var gender = cm.getPlayer().getGender();
                var mapId = cm.getPlayer().getMapId();
                var party = cm.getPlayer().getParty().getMembers();
                var it = party.iterator();
                var cPlayer = it.next();
                var victim = cm.getPlayer().getMap().getCharacterById(cPlayer.getId());
                var TDid = victim.getId();
                var a1_1 = cm.getOneTimeLog(TDid); //自己的收徒記録ID
                var shoutu = victim.getOneTimeLog(TDid);
                var chushi = victim.getOneTimeLog("出師");
                var id = cm.getPlayer().getId();
                var tcsm = victim.getOneTimeLog("退出師門");
                var jrsm = victim.getOneTimeLog(TDid);
                            if (victim.getLevel() == cm.getPlayer().getLevel()) {
                    cm.sendOk("錯誤異常,請退出地圖重新進");
                    cm.dispose();
                    return;
                            }
                if (victim.getLevel() >= 60) {
                    cm.sendOk("徒弟等級大於60級,無法收為徒弟,請收60以下的萌新為徒!");
                    cm.dispose();
                    return;
                } else if (a1_1 - jrsm - tcsm > 0) {
                    cm.sendOk("你已經收過這個徒弟了");
                    cm.dispose();
                    return;
                } else if (shoutu - tcsm != 0) {
                    cm.sendOk("你徒弟已經有師門了");
                    cm.dispose();
                } else if (cm.getOneTimeLog("師傅") < 1) { //還沒創立師門
                    cm.sendOk("你還沒建立師門呢");
                    cm.dispose();
                    return;
                } else if (cm.getPlayer().getParty().getMembers().size() > 2) {
                    cm.sendOk("每次只能帶一個徒弟入門(請2人組隊)");
                    cm.dispose();
                    return;
                } else if (cm.getOneTimeLog("收徒") - cm.getOneTimeLog("出師") - tcsm >= 2) {
                    cm.sendOk("你的師門目前已經有 2 位徒弟,請帶他們  出師  先");
                    cm.dispose();
                    return;
                } else {
                    cm.setOneTimeLog("收徒");
                    cm.setOneTimeLog("daitu");
                    cm.givePartyBossLog("收徒");
                                    cm.set永久記録("收徒");//成就類任務
                    cm.setOneTimeLog(TDid);
                    cm.sendOk("你成功收了" + victim.getName() + "為徒弟,請提醒徒弟點我確認關系,之後才能生效!");
                    cm.新喇叭(9, "[" + cm.getPlayer().getName() + "]收了[" + victim.getName() + "]為徒弟,請徒弟進行確認!", " 師徒系統 ");
                                    cm.getPlayer().全服漂浮喇叭("恭喜[" + cm.getPlayer().getName() + "]收了[" + victim.getName() + "]為徒弟", 5120000, 20000);
                    cm.dispose();
                    return;
                }

            } else if (selection == 3) {//帶徒出師
                if (cm.getParty() == null) {
                    cm.sendOk("組隊後在來找我");
                    cm.dispose();
                    return;
                } else if (cm.getOneTimeLog("師傅") < 1) {
                    cm.sendOk("你還沒建立師門呢,請讓師傅來找我");
                    cm.dispose();
                    return;
                }
                var next = true;
                var gender = cm.getPlayer().getGender();
                var mapId = cm.getPlayer().getMapId();
                var party = cm.getPlayer().getParty().getMembers();
                var it = party.iterator();
                var cPlayer = it.next();
                var victim = cm.getPlayer().getMap().getCharacterById(cPlayer.getId());
                var TDid = victim.getId();
                if (cm.isLeader()) {
                    cm.sendOk("請讓師傅找我對話(PS:師傅一定要是隊員)");
                    cm.dispose();
                    return;
                } else if (victim.getLevel() < 70) {
                    cm.sendOk("你的徒弟等級不夠70級,不能出師!");
                    cm.dispose();
                    return;
                } else if (cm.getOneTimeLog("師傅") < 1) {
                    cm.sendOk("你還沒建立師門呢");
                    cm.dispose();
                    return;
                } else if (cm.getOneTimeLog(TDid) == 0) {
                    cm.sendOk("你確定這是你徒弟嗎???");
                    cm.dispose();
                    return;
                } else if (cm.getOneTimeLog(-TDid) == 1) {
                    cm.sendOk("這個徒弟已經出師了!");
                    cm.dispose();
                    return;
                // } else if (cm.getOneTimeLog("出師") >= 1) {
                    // cm.sendOk("您已經帶徒出師了!");
                    // cm.dispose();
                    // return;
                } else {
                    cm.setOneTimeLog("出師");
                    cm.setOneTimeLog(-TDid);
                    cm.gainNX(2000); //師傅獲得點券
                                    cm.gainItem(2340000, 1);
                                    cm.gainItem(2049100, 1);
                    cm.set永久記録("收徒");
                    // cm.gainItem(2049100, 1); //混沌
                    // cm.gainItem(2531000, 1); //防爆
                                    victim.modifyCSPoints(1, 4000); //徒弟獲得點券
                                    // cm.gainItem(2340000, 1); //師傅獲得祝福
                    // victim.gainItem(2049100, 1); //混沌
                                    victim.dropMessage(1, "恭喜你\r\n成功出師\r\n獲得4000點卷");
                    cm.sendOk("你帶徒" + victim.getName() + "出師成功!\r\n獲得:#r2000 點卷、#v2340000# x 1、#v2049100# x 1\r\n\r\n");//#v2531000# x 1、
                    cm.新喇叭(9, "[" + cm.getPlayer().getName() + "]玩家成功帶[" + victim.getName() + "]出師,獲得[師傅]重磅禮包!", " 師傅奬勵 ");
                    cm.新喇叭(9, "[" + victim.getName() + "]成功出師,獲得[徒弟]出師奬勵4000點卷", " 徒弟奬勵 ");
                    cm.dispose();
                }
            } else if (selection == 4) {
                cm.sendOk("暫不支持此功能");
                cm.dispose();
                //cm.openNpc(9900004,153);
            } else if (selection == 5) {
                var id = cm.getPlayer().getId();
                var tcsm = cm.getOneTimeLog("退出師門");
                var jrsm = cm.getOneTimeLog(id);
                if (jrsm == 0) { ;
                    cm.sendOk("退出師門失敗!\r\n你沒並沒有加入過師門!(注:師傅不可以取消師門)");
                    cm.dispose();
                } else if (jrsm - tcsm == 0) {
                    cm.sendOk("你已經沒有師門可以退出了 ,不必再次退出!");
                    cm.dispose();
                } else {
                    cm.setOneTimeLog("退出師門");
                    cm.sendOk("退出師門成功!");
                    cm.dispose();
                }
            } else if (selection == 6) {
                            var text = "";
                            text += "師門系統介紹:\r\n";
                            text += "徒弟等級:必須小於60級\r\n師父等於:必須大於等於80級\r\n\r\n";
                            text += "徒弟達到70級即可出師\r\n\r\n";
                            text += "目前最多可收徒弟數量: #r" + 目前可收徒弟數量 + " 個\r\n\r\n";
                            text += "徒弟出師獲得#r4000#k點卷\r\n";
                            text += "師父獲得:#r2000點卷, 祝福卷軸 * 1, 混沌卷軸 * 1\r\n";
                cm.sendOk(text);
                cm.dispose();
            } else if (selection == 7) {
                            if (cm.getParty() == null) {
                                    cm.sendOk("必須和師傅組隊之後, 再來找我哦!");
                                    cm.dispose();
                                    return;
                            }
                           
                var next = true;
                var gender = cm.getPlayer().getGender();
                var mapId = cm.getPlayer().getMapId();
                var party = cm.getPlayer().getParty().getMembers();
                var it = party.iterator();
                var cPlayer = it.next();
                var victim = cm.getPlayer().getMap().getCharacterById(cPlayer.getId());
                var TDid = victim.getId();
                var id = cm.getPlayer().getId();
                if (cm.getPlayer().getLevel() >= 80 || cm.getOneTimeLog("師傅") > 0) {
                    cm.sendOk("師傅不需要確認!");
                    cm.dispose();
                    return;
                } else if (cm.getPlayer().getNewBossLog("收徒") >= 1 && cm.getOneTimeLog(id) == 0) {
                    cm.setOneTimeLog(id);
                    cm.sendOk("師徒關系確認成功!");
                    cm.新喇叭(9, "[" + cm.getPlayer().getName() + "]師徒關系確認成功。", " 師徒系統 ");
                    cm.dispose();
                } else {
                    cm.sendOk("你已經確認過了。\r\n");
                    cm.dispose();
                }
            } else if (selection == 8) {
                if (!cm.haveItem(4170018, 1)) {
                    cm.sendOk("沒有#v4170018#,無法獲得出師奬勵....請跟師傅要!\r\n");
                    cm.dispose();
                } else {
                    cm.gainNX(3000); //
                    cm.sendOk("獲得:#r3000點卷");
                    Packages.handling.world.World.Broadcast.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(11, cm.getC().getChannel(), "師徒系統" + " : 玩家[" + cm.getPlayer().getName() + "]順利出師,獲得[徒弟]重磅禮包!", true).getBytes());
                    cm.dispose();
                }
            }

        }

    }











    是這個,然後現在問題是 收了徒弟之後 徒弟還可以繼續拜師 這個是要在拜師之後加一個onetimelog然後進行判斷嗎?
    回復

    使用道具 舉報

    集團新軍

    Rank: 1

    16

    威望

    61

    金錢

    1

    A幣
    主題
    1
    帖子
    24
    精華
    0
    綜合社群主題發文量
    0
    電玩社群主題發文量
    0
    娛樂社群主題發文量
    0
    技術社群主題發文量
    1
    閱讀權限
    10
    註冊時間
    2023-5-20
  • TA的每日心情
    無聊
    2023-6-30 09:46
  • 簽到天數: 2 天

    連續簽到: 1 天

    [LV.1]初來乍到

     樓主| lijiaweikkkk 發表於 2023-6-29 09:06:42 | 顯示全部樓層
    a894985459 發表於 2023-6-29 02:09
    稍微看了一下
    你這個對於徒弟的部分沒有處理得很好啊
    徒弟部分應該也需要建立一個判定

    感謝指導!
    回復

    使用道具 舉報

    區域版主

    Rank: 10Rank: 10Rank: 10

    245

    威望

    1142

    金錢

    592

    A幣
    主題
    130
    帖子
    245
    精華
    0
    綜合社群主題發文量
    9
    電玩社群主題發文量
    10
    娛樂社群主題發文量
    0
    技術社群主題發文量
    89
    閱讀權限
    100
    註冊時間
    2016-5-17
  • TA的每日心情

    2022-4-29 14:36
  • 簽到天數: 5 天

    連續簽到: 1 天

    [LV.2]偶爾看看I

    t9540513 發表於 2023-6-30 14:23:34 | 顯示全部樓層
    問題解決了嗎?
    回復

    使用道具 舉報

    集團新軍

    Rank: 1

    16

    威望

    61

    金錢

    1

    A幣
    主題
    1
    帖子
    24
    精華
    0
    綜合社群主題發文量
    0
    電玩社群主題發文量
    0
    娛樂社群主題發文量
    0
    技術社群主題發文量
    1
    閱讀權限
    10
    註冊時間
    2023-5-20
  • TA的每日心情
    無聊
    2023-6-30 09:46
  • 簽到天數: 2 天

    連續簽到: 1 天

    [LV.1]初來乍到

     樓主| lijiaweikkkk 發表於 2023-7-4 08:56:30 | 顯示全部樓層

    應該算是..
    因為我決定不需要這個系統了..
    回復

    使用道具 舉報

    初窺門道

    Rank: 2

    337

    威望

    433

    金錢

    216

    A幣
    主題
    13
    帖子
    66
    精華
    5
    綜合社群主題發文量
    0
    電玩社群主題發文量
    0
    娛樂社群主題發文量
    0
    技術社群主題發文量
    13
    閱讀權限
    20
    註冊時間
    2019-8-9

    精華作者勳章

  • TA的每日心情

    2021-6-8 20:12
  • 簽到天數: 14 天

    連續簽到: 0 天

    [LV.3]偶爾看看II

    a894985459 發表於 2023-7-8 02:24:34 | 顯示全部樓層
    lijiaweikkkk 發表於 2023-7-4 08:56
    應該算是..
    因為我決定不需要這個系統了..

    其實你這個可以做很多簡化
    我還沒認真看 整個腳本就感覺有太多冗陳的語法
    回復

    使用道具 舉報

    您需要登錄後才可以回帖 登錄 | 註冊會員

    本版積分規則

    24

    發文

    61

    金錢

    1

    A幣

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

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

    小黑屋|AICL社群娛樂集團

    GMT+8, 2024-4-29 20:48 , 網路刷新 0.122644 秒 .

    歡迎來到 AICL網路社群

    版權AICL社群所有 2011-2021.

    Total:123 Today:213 Online:322