Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7
Сканирование пространства
Сканирование пространства
Всем привет. Есть квадратное замкнутое пространство. Возможно ли как-то просканировать его и знать на каких тайлах есть препятствия, например, стены (тайлы на которые нельзя наступить физически)?
Re: Сканирование пространства
а зачем?
Re: Сканирование пространства
Если в двух словах: Бот, который может в случае чего убежать за стену и встать в хайд. На рануо если тебя атакуют, то нельзя спрятаться, только если позволяет расстояние или нет прямой видимости.
Re: Сканирование пространства
или например если копаешь у скал, и после смерти необходимо отойти на один тайл(чтоб чар который ресает ботов открыл портал на точку раскопки) всторону а не упереться в скалуdrabadan wrote:а зачем?
Re: Сканирование пространства
NewMoveXY с параметром 1 в поле точности подхода.Roman wrote:или например если копаешь у скал, и после смерти необходимо отойти на один тайл(чтоб чар который ресает ботов открыл портал на точку раскопки) всторону а не упереться в скалуdrabadan wrote:а зачем?
Code: Select all
NewMoveXY(1111,1111, true, 1, true)
По теме - это к умным дядям надо...
Мне в голову приходит только "ручками" запомнить ети углы, и потом в них забегать, а потом уже хайдится.
Re: Сканирование пространства
Есть такое =) CheckLOS зовётся
тайлы искать каким-нибудь волновым алгоритмом от чара
тайлы искать каким-нибудь волновым алгоритмом от чара
Re: Сканирование пространства
Во нашёл в архивах
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)
Re: Сканирование пространства
Это всё хорошо, но немного не то...
В общем, в идеале нужно, что бы в комнате заданного размера, чар не сходя с места просканировал пространство и записал все тайлы (их координаты и размеры) в архив или же во внешний файл, что бы потом можно было бы работать с этими тайлами, ну или пометить их каким-нить способом все для тех же целей
И еще, как работает функция CheckLOS в библиотеке отсутствует описание... что она вообще делает?
В общем, в идеале нужно, что бы в комнате заданного размера, чар не сходя с места просканировал пространство и записал все тайлы (их координаты и размеры) в архив или же во внешний файл, что бы потом можно было бы работать с этими тайлами, ну или пометить их каким-нить способом все для тех же целей
И еще, как работает функция CheckLOS в библиотеке отсутствует описание... что она вообще делает?
Re: Сканирование пространства
Размер тайлов? О_О...Stels wrote:Это всё хорошо, но немного не то...
В общем, в идеале нужно, что бы в комнате заданного размера, чар не сходя с места просканировал пространство и записал все тайлы (их координаты и размеры) в архив или же во внешний файл, что бы потом можно было бы работать с этими тайлами, ну или пометить их каким-нить способом все для тех же целей
И еще, как работает функция CheckLOS в библиотеке отсутствует описание... что она вообще делает?
CheckLos - ето наверно чек ин лайн оф сайт. Я о такой функции не знал...
To Nah Nah - а можно подробней, что такое.
Code: Select all
tx = PredictedX() + x
ty = PredictedY() + y
Re: Сканирование пространства
tx, ty, tz - координаты тайла, проверяющегося чеклос, PredictedX() - возвращает координаты чара, аналогично getx(self), но кто-то мне писал, что лучше пользоваться predicted (это было ещё на 4-ом стелсе, как сейчас - хз)
тут три цикла for
1) от 0 до 25 - "радиус" от чара
2) по x
3) по y
суть в том, чтобы увеличивать радиус скана на 1, но не сканировать уже отсканированные тайлы. Есть и минус - чар во время поиска укрытия должен стоять на одном месте
тут три цикла for
1) от 0 до 25 - "радиус" от чара
2) по x
3) по y
суть в том, чтобы увеличивать радиус скана на 1, но не сканировать уже отсканированные тайлы. Есть и минус - чар во время поиска укрытия должен стоять на одном месте
Re: Сканирование пространства
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;