战网中国

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1524|回复: 5

到达障碍物包围的传送点

[复制链接]

1

主题

2

帖子

61

积分

新手

Rank: 2

积分
61
发表于 2017-10-17 14:31:03 | 显示全部楼层 |阅读模式
  1. crossDummy: function (x,y,range) {
  2.   var unit,
  3.     unitList = [], // 扫描到的障碍物
  4.     containers = ["crate", "chest", "barrel", "largeurn", "urn", "explodingchest"]; // 障碍物类型

  5.   if (!range) { // 障碍物与参照物的距离
  6.     range = 10;
  7.   }

  8.   unit = getUnit(2);  // 获得所有物品

  9.   if (unit) {
  10.     do {
  11.       if (unit.name && unit.mode === 0 && getDistance(x, y, unit.x, unit.y) <= range && getDistance(me.x, me.y, unit.x, unit.y) <= range && containers.indexOf(unit.name.toLowerCase()) > -1) {
  12.         // 筛选 距离传送点与角色间指定距离有交集的,未破坏的,在设定类型中的障碍物
  13.         // say( unit.name + ': ' + ' x: ' + unit.x + ' y: ' + unit.y + ' rangme: ' + getDistance(me.x, me.y, unit.x, unit.y) + ' rangwp: ' + getDistance(x, y, unit.x, unit.y) );

  14.         var has = 0; // 过滤掉重叠在一起的障碍物
  15.         for (var i = 0; i < unitList.length; i++) {
  16.           if( unitList[i].x == unit.x && unitList[i].y == unit.y  ) {
  17.             has = 1;
  18.           }
  19.         };
  20.         if( !has ){
  21.           unitList.push(copyUnit(unit));
  22.         }

  23.       }
  24.     } while (unit.getNext());
  25.   }

  26.   if( unitList.length > 2 ){ // 如果有多个只取2个
  27.     unitList = unitList.slice(0,2);
  28.   }

  29.   while (unitList.length > 0) { // 破坏障碍物
  30.     unitList.sort(Sort.units);
  31.     unit = unitList.shift();
  32.     if (unit && (Pather.useTeleport || !checkCollision(me, unit, 0x4)) && unit.mode === 0) {  //Misc.openChest(unit)
  33.       Pather.moveToUnit( unit );
  34.       Misc.click( 0, 0, unit );
  35.     }
  36.   }
  37.   return true;
  38. }
复制代码
有40%的几率走不到传送, 有没好的解决方法?
回复

使用道具 举报

3

主题

11

帖子

115

积分

侠客

Rank: 3Rank: 3

积分
115
发表于 2017-10-22 08:02:59 | 显示全部楼层
  高手啊。  这是kol的吧。
回复 支持 反对

使用道具 举报

6

主题

51

帖子

454

积分

骑士

Rank: 4

积分
454
发表于 2017-10-23 06:12:04 | 显示全部楼层
Pather.moveToUnit( unit ); 感觉不靠谱,虽然没有实测,LZ应该经常move retry?
障碍物应该是根据地图类型来的,建议参照八神的思路
预先设定路线,扫描身边的障碍再破坏
回复 支持 反对

使用道具 举报

3

主题

11

帖子

115

积分

侠客

Rank: 3Rank: 3

积分
115
发表于 2017-10-23 11:51:07 | 显示全部楼层
       大神你写的这个我都看不太明白。 我就会用笨办法。   先判断是哪种桶的摆放方式。 然后走到固定的坐标,然后clike旁边的桶。完了之后再跑该跑的脚本。
回复 支持 反对

使用道具 举报

1

主题

2

帖子

61

积分

新手

Rank: 2

积分
61
 楼主| 发表于 2017-10-30 09:01:10 | 显示全部楼层
loveqiao361 发表于 2017-10-23 06:12
Pather.moveToUnit( unit ); 感觉不靠谱,虽然没有实测,LZ应该经常move retry?
障碍物应该是根据地图类型 ...

不知道寻路计算怎么做才用得那个办法. 地图随即加载后wp的位置不定,所以踢固定位置的箱子失败几率也很大. 而且有的箱子还镶嵌在墙里,马车上.... 寻路计算的方法是什么?
回复 支持 反对

使用道具 举报

0

主题

14

帖子

36

积分

贫民

Rank: 1

积分
36
发表于 2017-11-21 23:46:12 | 显示全部楼层
楼主设置的这些看不懂啊
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 01:20 , Processed in 0.092540 second(s), 27 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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