战网中国

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
楼主: dark-f
打印 上一主题 下一主题

远古通道、act3废庙等有盖子的入口会中断的,请用新的NTMo...

[复制链接]

37

主题

352

帖子

2680

积分

精灵王

Rank: 6Rank: 6

积分
2680

社区居民忠实会员

楼主
发表于 2018-1-13 22:34:39 | 显示全部楼层
本帖最后由 yfzh2012 于 2018-1-13 22:36 编辑

回归以来还没跑过古代通道 ,果然有这个问题,韩国bot 不用这个函数  用的是MyMove.ntl 文件里的,请参照此进行进行替换这个函数即可,本人用的是33版的,如果你用更新一些的35 38 版 请自己参照,如果有区别自行修改
My.Move.TakeStair = function (areaId, distance, offsetX, offsetY)
{
    var _unit;
    var _preArea, _moveX, _moveY;

                var _unit2;
        
    if (arguments.length < 2) distance = 4;
    if (arguments.length < 3) offsetX  = 1;
    if (arguments.length < 4) offsetY  = 1;

    if (me.areaid == areaId)
        return true;

        switch(areaId){
                case 47:
                case 65:
                        _unit = NTC_FindUnit(NTC_UNIT_OBJECT, 74); // trap door
                        break;
                case 93:
                        _unit = NTC_FindUnit(NTC_UNIT_OBJECT, 366); // sewer stairs
                        break;
                case 94:
                case 96:
                case 98:
                        _unit = NTC_FindUnit(NTC_UNIT_OBJECT, 195);// stair
                        _dist = 4;
                        break;
                case 95:
                case 97:
                case 99:
                        _unit = NTC_FindUnit(NTC_UNIT_OBJECT, 194);// stair
                        _dist = 4;
                        break;
                case 100:
                        _unit = NTC_FindUnit(NTC_UNIT_OBJECT, 386); // trav to duri
                        _dist = 4;
                        break;
                case 128:
                        _unit = NTC_FindUnit(NTC_UNIT_OBJECT, 547); // to wsk 1
                        break;
                default:
                        _unit = NTM_GetStairInt(areaId);
                        break;
        }

    if (!_unit)
    {
        NTC_PingDelay(500);
                switch(areaId){
                case 47:
                case 65:
                        _unit = NTC_FindUnit(NTC_UNIT_OBJECT, 74); // trap door
                        break;
                case 93:
                        _unit = NTC_FindUnit(NTC_UNIT_OBJECT, 366); // sewer stairs
                        break;
                case 94:
                case 96:
                case 98:
                        _unit = NTC_FindUnit(NTC_UNIT_OBJECT, 195);// stair
                        _dist = 4;
                        break;
                case 95:
                case 97:
                case 99:
                        _unit = NTC_FindUnit(NTC_UNIT_OBJECT, 194);// stair
                        _dist = 4;
                        break;
                case 100:
                        _unit = NTC_FindUnit(NTC_UNIT_OBJECT, 386); // trav to duri
                        _dist = 4;
                        break;
                case 128:
                        _unit = NTC_FindUnit(NTC_UNIT_OBJECT, 547); // to wsk 1
                        break;
                default:
                        _unit = NTM_GetStairInt(areaId);
                        break;
        }
    }
  
    if (!_unit)
        return false;

    _preArea = me.areaid;

    for (var i = 0; i < 20; i++)
    {
        if ((i % 5) == 0)
        {
            if (i == 10)
            {
                _moveX = Math.round(-6 * (_unit.x - me.x) / GetDistance(me, _unit));
                _moveY = Math.round(-6 * (_unit.y - me.y) / GetDistance(me, _unit));
                if (_moveX == 0 && _moveY == 0)
                {
                    _moveX = 6;
                    _moveY = 6;
                }

                My.Move.MoveTo(_preArea, me.x + _moveX, me.y + _moveY);
            }
                        if(_unit.classid == 366 && _unit.mode != 2){
                                _unit2 = NTC_FindUnit(NTC_UNIT_OBJECT, 367); // sewer leaver
                                if(My.Move.GetCloser(_unit2, distance, offsetX, offsetY)){
                                        NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _unit2);
                                        NTC_Delay(200);
                                }
                        }
            if (My.Move.GetCloser(_unit, distance, offsetX, offsetY))
            {
                if (NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _unit))
                    Delay(200);
            }
        }

        Delay(200);

        if (me.areaid != _preArea)
        {
            while (me.areaid == 0)
                Delay(200);

            if (me.areaid != _preArea)
            {
                NTC_PingDelay(NTConfig_AreaDelay);
                return true;
            }
            else
                return false;
        }
    }

    return false;
};
回复 支持 反对

使用道具 举报

37

主题

352

帖子

2680

积分

精灵王

Rank: 6Rank: 6

积分
2680

社区居民忠实会员

沙发
发表于 2018-4-4 08:26:45 | 显示全部楼层
本帖最后由 yfzh2012 于 2018-4-4 08:34 编辑
cnlinux 发表于 2018-4-4 08:14
我的MyMove.ntl 里面的代码是这样的:
TakeStair: function (areaId, distance, offsetX, offsetY, player ...

> 35版本的 请 参照 自行修改  ,只是语法略有不同而已 ,实质差不多
this.GetCloser(_unit, distance, offsetX, offsetY)   <<===============函数调用 要保留现在这种新的形式 不用 My.Move.GetCloser(_unit2, distance, offsetX, offsetY)  这种老的方式
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-9 23:30 , Processed in 0.042149 second(s), 21 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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