Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Сканирование пространства

тут можно задать вопрос по скриптингу
Post Reply
Stels
Novice
Novice
Posts: 118
Joined: 15.02.2011 12:15

Сканирование пространства

Post by Stels »

Всем привет. Есть квадратное замкнутое пространство. Возможно ли как-то просканировать его и знать на каких тайлах есть препятствия, например, стены (тайлы на которые нельзя наступить физически)?
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Сканирование пространства

Post by drabadan »

а зачем?
Stels
Novice
Novice
Posts: 118
Joined: 15.02.2011 12:15

Re: Сканирование пространства

Post by Stels »

Если в двух словах: Бот, который может в случае чего убежать за стену и встать в хайд. На рануо если тебя атакуют, то нельзя спрятаться, только если позволяет расстояние или нет прямой видимости.
Roman
Neophyte
Neophyte
Posts: 37
Joined: 03.11.2014 21:48

Re: Сканирование пространства

Post by Roman »

drabadan wrote:а зачем?
или например если копаешь у скал, и после смерти необходимо отойти на один тайл(чтоб чар который ресает ботов открыл портал на точку раскопки) всторону а не упереться в скалу
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Сканирование пространства

Post by drabadan »

Roman wrote:
drabadan wrote:а зачем?
или например если копаешь у скал, и после смерти необходимо отойти на один тайл(чтоб чар который ресает ботов открыл портал на точку раскопки) всторону а не упереться в скалу
NewMoveXY с параметром 1 в поле точности подхода.

Code: Select all

NewMoveXY(1111,1111, true, 1, true)
Подойдет не ближе 1 тайла к трупу.

По теме - это к умным дядям надо...
Мне в голову приходит только "ручками" запомнить ети углы, и потом в них забегать, а потом уже хайдится.
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: Сканирование пространства

Post by nah nah »

Есть такое =) CheckLOS зовётся

тайлы искать каким-нибудь волновым алгоритмом от чара
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: Сканирование пространства

Post by nah nah »

Во нашёл в архивах

Code: Select all

    def findcover(self):
        for dist in range(25):
            for x in range(-dist, dist+1):
                if dist == abs(x):
                    step = 1
                else:
                    step = dist * 2
                for y in range(-dist, dist+1, step):
                    tx = PredictedX() + x
                    ty = PredictedY() + y
                    tz = GetSurfaceZ(tx, ty, WorldNum())
                    found = False
                    for enemy in self.enemies:
                        if CheckLOS(enemy.x, enemy.y, enemy.z, tx, ty, zt, WorldNum()):
                            found = False
                            break
                        else:
                            found = True
                    if found and GetPathArray3D(PredictedX(), PredictedY(), PredictedZ(), tx, ty, tz, WorldNum(), 0, 0, True):
                        return (tx, ty, tz)
Stels
Novice
Novice
Posts: 118
Joined: 15.02.2011 12:15

Re: Сканирование пространства

Post by Stels »

Это всё хорошо, но немного не то...
В общем, в идеале нужно, что бы в комнате заданного размера, чар не сходя с места просканировал пространство и записал все тайлы (их координаты и размеры) в архив или же во внешний файл, что бы потом можно было бы работать с этими тайлами, ну или пометить их каким-нить способом все для тех же целей :)

И еще, как работает функция CheckLOS в библиотеке отсутствует описание... что она вообще делает?
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Сканирование пространства

Post by drabadan »

Stels wrote:Это всё хорошо, но немного не то...
В общем, в идеале нужно, что бы в комнате заданного размера, чар не сходя с места просканировал пространство и записал все тайлы (их координаты и размеры) в архив или же во внешний файл, что бы потом можно было бы работать с этими тайлами, ну или пометить их каким-нить способом все для тех же целей :)

И еще, как работает функция CheckLOS в библиотеке отсутствует описание... что она вообще делает?
Размер тайлов? О_О...


CheckLos - ето наверно чек ин лайн оф сайт. Я о такой функции не знал...
To Nah Nah - а можно подробней, что такое.

Code: Select all

 tx = PredictedX() + x
 ty = PredictedY() + y
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: Сканирование пространства

Post by nah nah »

tx, ty, tz - координаты тайла, проверяющегося чеклос, PredictedX() - возвращает координаты чара, аналогично getx(self), но кто-то мне писал, что лучше пользоваться predicted (это было ещё на 4-ом стелсе, как сейчас - хз)

тут три цикла for
1) от 0 до 25 - "радиус" от чара
2) по x
3) по y

суть в том, чтобы увеличивать радиус скана на 1, но не сканировать уже отсканированные тайлы. Есть и минус - чар во время поиска укрытия должен стоять на одном месте
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: Сканирование пространства

Post by nah nah »

Stels wrote:И еще, как работает функция CheckLOS в библиотеке отсутствует описание... что она вообще делает?

Code: Select all

function CheckLOS(xf, yf : Word; zf : ShortInt; xt, yt : Word; zt : ShortInt; WorldNum : Byte; LOSCheckType : TLOSCheckType; LOSCheckOptions : TLOSCheckOptions) : Boolean;

Code: Select all

  TLOSCheckType = (losSphere = 1, losSphereAdv = 2, losPOL = 3, losRunUO = 4);
  TLOSCheckOption = (losSphereCheckCorners,losPolUseNoShoot,losPolLOSThroughWindow);
  TLOSCheckOptions = set of TLOSCheckOption;
Проверяет, можно кастануть или стрельнуть из точки fx,fy,fz в точку ft,fy,fz
Post Reply