战网中国

标题: kol组队,打手经常出现的问题 [打印本页]

作者: zfmosquito    时间: 2017-8-27 14:11
标题: kol组队,打手经常出现的问题
司机开门,打手进入,然后打手就不动了,显示错误信息"fail to use portal",直到司机打完这个场景,换一格场景,打手才动作起来跟过去,第二个场景也许就正常打了。
这个问题我的一队里的3个打手都会出现,而且频率还挺高,咋回事咋解决阿?球高手指导
作者: zilinx    时间: 2017-8-29 21:33
這似乎是使用修改使用內部訊息傳送方式後的問題,可以藉由修改MFHelper.js
在有顯示該訊息的地方,補上下列幾行程式即可
        Precast.doPrecast(false);
        Attack.clearLevel(Config.ClearType);
        Precast.doPrecast(true);

        if (!Pather.usePortal(null, player.name)) {
                Town.goToTown();
        }
作者: zfmosquito    时间: 2017-8-29 23:13
zilinx 发表于 2017-8-29 21:33
這似乎是使用修改使用內部訊息傳送方式後的問題,可以藉由修改MFHelper.js
在有顯示該訊息的地方,補上下列 ...

多谢,我明天试试看
作者: zilinx    时间: 2017-8-29 23:26
大概需要修改的有三處,分別對應"kill", "clearlevel", "clear" 這三個常用指令,其他則請自行斟酌。
作者: zfmosquito    时间: 2017-8-30 08:23
zilinx 发表于 2017-8-29 23:26
大概需要修改的有三處,分別對應"kill", "clearlevel", "clear" 這三個常用指令,其他則請自行斟酌。 ...

这三处应该怎么修改呢?我看2楼提出的修改方案是不是fail了就回城待着?
作者: zilinx    时间: 2017-8-30 08:33
樓主的描述裡,跟隨的會進傳點,但無動作。
上面的幾行指令,就是解決其站立發呆的部分。
該喊的喊,該召喚的召喚->Precast.doPrecast(false);
然後再清除該區域裡的怪->Attack.clearLevel(Config.ClearType);
之後,打完,收工,回家->if (!Pather.usePortal(null, player.name)) { Town.goToTown();  }
作者: zfmosquito    时间: 2017-8-30 08:37
zilinx 发表于 2017-8-30 08:33
樓主的描述裡,跟隨的會進傳點,但無動作。
上面的幾行指令,就是解決其站立發呆的部分。
該喊的喊,該召喚 ...

那是否可以这样修改,我把每一处有这句Precast.doPrecast(false) 的下面都加上下面这一段?Attack.clearLevel(Config.ClearType);
        Precast.doPrecast(true);

        if (!Pather.usePortal(null, player.name)) {
                Town.goToTown();
        }
作者: zfmosquito    时间: 2017-8-30 08:39
zfmosquito 发表于 2017-8-30 08:37
那是否可以这样修改,我把每一处有这句Precast.doPrecast(false) 的下面都加上下面这一段?Attack.clearL ...

好像也不对,第一句和后面几行应该是一体的,那么这一段指令加在什么位置呢?
现在我感觉kd/kb基本不会出现这样的问题,就是pit,世界之石1-3,a4出门平原等几个地方会出现
作者: zilinx    时间: 2017-8-30 08:50
本帖最后由 zilinx 于 2017-8-30 08:54 编辑

if (command.indexOf("kill") > -1) {
                                        print("c4MFHelperc0: Kill");

                                        split = command.split("kill ")[1];
                                        area = player.area;

                                        for (i = 0; i < 5; i += 1) {
                                                if (Pather.usePortal(player.area, player.name)) {
                                                        break;
                                                }

                                                delay(1000);
                                        }

                                        if (me.area === area) {
                                                Precast.doPrecast(false);

                                                try {
                                                        if (!!parseInt(split, 10)) {
                                                                split = parseInt(split, 10);
                                                        }

                                                        Attack.kill(split);
                                                        Pickit.pickItems();
                                                } catch (killerror) {
                                                        print(killerror);
                                                }

                                                delay(1000);

                                                if (!me.inTown && !Pather.usePortal(null, player.name)) {
                                                        Town.goToTown();
                                                }
                                        } else {
                                                print("Failed to use portal.(kill)");
                                                Precast.doPrecast(false);
                                                Attack.clearLevel(Config.ClearType);
                                                Precast.doPrecast(true);

                                                if (!Pather.usePortal(null, player.name)) {
                                                        Town.goToTown();
                                                }

                                        }
                                } else if (command.indexOf("clearlevel") > -1) {
                                        print("c4MFHelperc0: Clear Level");

                                        area = player.area;

                                        for (i = 0; i < 5; i += 1) {
                                                if (Pather.usePortal(player.area, player.name)) {
                                                        break;
                                                }

                                                delay(1000);
                                        }

                                        if (me.area === area) {
                                                Precast.doPrecast(false);
                                                Attack.clearLevel(Config.ClearType);
                                                Precast.doPrecast(true);

                                                if (!Pather.usePortal(null, player.name)) {
                                                        Town.goToTown();
                                                }
                                        } else {
                                                print("Failed to use portal.(clearlevel)");
                                                Precast.doPrecast(false);
                                                Attack.clearLevel(Config.ClearType);
                                                Precast.doPrecast(true);

                                                if (!Pather.usePortal(null, player.name)) {
                                                        Town.goToTown();
                                                }

                                        }
                                } else if (command.indexOf("clear") > -1) {
                                        print("c4MFHelperc0: Clear");

                                        split = command.split("clear ")[1];
                                        area = player.area;

                                        for (i = 0; i < 5; i += 1) {
                                                if (Pather.usePortal(player.area, player.name)) {
                                                        break;
                                                }

                                                delay(1000);
                                        }

                                        if (me.area === area) {
                                                Precast.doPrecast(false);

                                                try {
                                                        if (!!parseInt(split, 10)) {
                                                                split = parseInt(split, 10);
                                                        }

                                                        Attack.clear(15, 0, split);
                                                } catch (killerror2) {
                                                        print(killerror2);
                                                }

                                                delay(1000);

                                                if (!me.inTown && !Pather.usePortal(null, player.name)) {
                                                        Town.goToTown();
                                                }
                                        } else {
                                                print("Failed to use portal.(clear)");
                                                Precast.doPrecast(false);
                                                Attack.clearLevel(Config.ClearType);
                                                Precast.doPrecast(true);

                                                if (!Pather.usePortal(null, player.name)) {
                                                        Town.goToTown();
                                                }

                                        }
                                } else if

當不知名的原因讓程式流程進入到 print("Failed to use portal"); 時,
但事實上,該打手是有使用 LEADER 的傳點而進入該區域。
站立發呆的原因是,因為此錯誤,ATTACK 的功能已跳離。
如此修改的用意在於,在列印出 "Failed to use portal" 後,既然已入傳點,那就再補上攻擊的部分就好。

作者: zfmosquito    时间: 2017-8-30 08:55
zilinx 发表于 2017-8-30 08:50
if (command.indexOf("kill") > -1) {
                                        print("c4MFHelperc0: ...

明白,你的意思是在出现Failed to use portal这个讯息后面补上系列动作,让他强制执行,是么
作者: zilinx    时间: 2017-8-30 09:03
是這樣~~
作者: zfmosquito    时间: 2017-8-30 09:14
以改,观察几局看看,谢谢
作者: wcg928    时间: 2017-8-30 14:59
zilinx 发表于 2017-8-30 08:50
if (command.indexOf("kill") > -1) {
                                        print("c4MFHelperc0: ...

谢谢分享了..能把文件直接上传那就更好了
作者: zfmosquito    时间: 2017-8-31 00:24
问题基本解决谢谢zilinx  真正的高手
作者: zilinx    时间: 2017-8-31 12:12
wcg928 发表于 2017-8-30 14:59
谢谢分享了..能把文件直接上传那就更好了

不曉彼此間的版本差了多少,不客將該檔案放出,以免招致其他問題!
也請有相同問題的朋友,酌量更改試試看。
作者: 小棠菜    时间: 2017-8-31 14:55
赞一个




欢迎光临 战网中国 (http://battlecn.net/) Powered by Discuz! X3.1