战网中国

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3954|回复: 15
打印 上一主题 下一主题

kol组队,打手经常出现的问题

[复制链接]

41

主题

346

帖子

1419

积分

精灵王

Rank: 6Rank: 6

积分
1419

热心会员

跳转到指定楼层
楼主
发表于 2017-8-27 14:11:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
司机开门,打手进入,然后打手就不动了,显示错误信息"fail to use portal",直到司机打完这个场景,换一格场景,打手才动作起来跟过去,第二个场景也许就正常打了。
这个问题我的一队里的3个打手都会出现,而且频率还挺高,咋回事咋解决阿?球高手指导
回复

使用道具 举报

0

主题

11

帖子

1693

积分

精灵王

Rank: 6Rank: 6

积分
1693

社区居民

沙发
发表于 2017-8-29 21:33:15 | 只看该作者
這似乎是使用修改使用內部訊息傳送方式後的問題,可以藉由修改MFHelper.js
在有顯示該訊息的地方,補上下列幾行程式即可
        Precast.doPrecast(false);
        Attack.clearLevel(Config.ClearType);
        Precast.doPrecast(true);

        if (!Pather.usePortal(null, player.name)) {
                Town.goToTown();
        }
回复 支持 反对

使用道具 举报

41

主题

346

帖子

1419

积分

精灵王

Rank: 6Rank: 6

积分
1419

热心会员

板凳
 楼主| 发表于 2017-8-29 23:13:07 | 只看该作者
zilinx 发表于 2017-8-29 21:33
這似乎是使用修改使用內部訊息傳送方式後的問題,可以藉由修改MFHelper.js
在有顯示該訊息的地方,補上下列 ...

多谢,我明天试试看
回复 支持 反对

使用道具 举报

0

主题

11

帖子

1693

积分

精灵王

Rank: 6Rank: 6

积分
1693

社区居民

地板
发表于 2017-8-29 23:26:01 | 只看该作者
大概需要修改的有三處,分別對應"kill", "clearlevel", "clear" 這三個常用指令,其他則請自行斟酌。
回复 支持 反对

使用道具 举报

41

主题

346

帖子

1419

积分

精灵王

Rank: 6Rank: 6

积分
1419

热心会员

5#
 楼主| 发表于 2017-8-30 08:23:10 | 只看该作者
zilinx 发表于 2017-8-29 23:26
大概需要修改的有三處,分別對應"kill", "clearlevel", "clear" 這三個常用指令,其他則請自行斟酌。 ...

这三处应该怎么修改呢?我看2楼提出的修改方案是不是fail了就回城待着?
回复 支持 反对

使用道具 举报

0

主题

11

帖子

1693

积分

精灵王

Rank: 6Rank: 6

积分
1693

社区居民

6#
发表于 2017-8-30 08:33:27 | 只看该作者
樓主的描述裡,跟隨的會進傳點,但無動作。
上面的幾行指令,就是解決其站立發呆的部分。
該喊的喊,該召喚的召喚->Precast.doPrecast(false);
然後再清除該區域裡的怪->Attack.clearLevel(Config.ClearType);
之後,打完,收工,回家->if (!Pather.usePortal(null, player.name)) { Town.goToTown();  }
回复 支持 反对

使用道具 举报

41

主题

346

帖子

1419

积分

精灵王

Rank: 6Rank: 6

积分
1419

热心会员

7#
 楼主| 发表于 2017-8-30 08:37:04 | 只看该作者
zilinx 发表于 2017-8-30 08:33
樓主的描述裡,跟隨的會進傳點,但無動作。
上面的幾行指令,就是解決其站立發呆的部分。
該喊的喊,該召喚 ...

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

        if (!Pather.usePortal(null, player.name)) {
                Town.goToTown();
        }
回复 支持 反对

使用道具 举报

41

主题

346

帖子

1419

积分

精灵王

Rank: 6Rank: 6

积分
1419

热心会员

8#
 楼主| 发表于 2017-8-30 08:39:17 | 只看该作者
zfmosquito 发表于 2017-8-30 08:37
那是否可以这样修改,我把每一处有这句Precast.doPrecast(false) 的下面都加上下面这一段?Attack.clearL ...

好像也不对,第一句和后面几行应该是一体的,那么这一段指令加在什么位置呢?
现在我感觉kd/kb基本不会出现这样的问题,就是pit,世界之石1-3,a4出门平原等几个地方会出现
回复 支持 反对

使用道具 举报

0

主题

11

帖子

1693

积分

精灵王

Rank: 6Rank: 6

积分
1693

社区居民

9#
发表于 2017-8-30 08:50: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" 後,既然已入傳點,那就再補上攻擊的部分就好。
回复 支持 反对

使用道具 举报

41

主题

346

帖子

1419

积分

精灵王

Rank: 6Rank: 6

积分
1419

热心会员

10#
 楼主| 发表于 2017-8-30 08:55:48 | 只看该作者
zilinx 发表于 2017-8-30 08:50
if (command.indexOf("kill") > -1) {
                                        print("c4MFHelperc0: ...

明白,你的意思是在出现Failed to use portal这个讯息后面补上系列动作,让他强制执行,是么
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|BattleCN ( 陕ICP备05006600号 )

GMT+8, 2025-2-7 18:01 , Processed in 0.056676 second(s), 21 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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