PDA

Просмотр полной версии : карта и координаты


kodav
10.08.2010, 21:05
есть ли какая инфа о том как перевести игровые координаты карты те что мы получаем по /loc в пиксельные (изображение из текстуры)? либо все поделено на секторы либо какая то хитрая формула

J-Fobos
10.08.2010, 21:43
Формул как таковых я не знаю, но посмотрите это.
_http://s47.radikal.ru/i118/0904/75/2bde6464cd70.jpg

Весь Мир подразделен на 32х32 области. Вы можете увидеть это на рисунке. Представление чисел Области от - 0 до 31.Как вы обратили внимание на карте выше,что левый верхний угол не в области - 0_0, а в области 16_10. Это означает что на левой стороне карты - 16 областей и выше -10. Но где они? Они не присутствуют в С6, но в теории они будут еще созданы.

Каждая область поделена на 256x256 блоков. Каждый блок подразделен на 8x8 ячейки. Есть 3 типа блоков:
Типы блоков:
1 - такой блок не имеет separeted ячейки B, он - одно твердое устройство.Так как имя сообщает свою 'квартиру', оно означает, что на целом блоке есть просто в Z величине. Вы можете также пройти мимо ПЛОСКОГО блока без любых проблем (не может быть любыми стенами или другими вещами).
2 -такой блок имеет 8x8 ячейки и каждая ячейка может иметь другую Z величину (высота)
3 - многоуровневый. Этот блок является таким же как и второй, но ячейки, которые он содержит, может иметь слои.

Ячейка - минимальная часть геоданных.Каждая ячейка - 16 устройств высоких и широких - в мире coords.Ячейка может быть многослойной. Это означает, что это быть определенное для многих Z величин. Хороший пример - Башня Insolence, где у вас есть много перекрытий и одна ячейка идет throu он все Описанный дело в том, что назвавшее слой.

Слой - это - deined для специфической ячейки. Мы считаем слоями из L0, L1, L2,.... Где L0 - наиболее верхний слой.Каждый слой ячейки определил z величину (высота) и NSWE. Z величина ячеек (что принадлежит МНОГОУРОВНЕВЫМ или СЛОЖНЫМ блокам), многочисленные 8.

http://c.foto.radikal.ru/0610/8a8b87c8027a.jpg
зы: автор данного объяснения мне не известен.

xkor
17.08.2010, 03:02
const
// размер одного блока карты:
blockSize=32768; // что равно сдвигу в лево на 15 бит

var
xbn,ybn,x,y,bx,by,xb,yb: integer;

begin
// зависимость номера блока от координат:
xbn:=(x div blockSize - x shr 31) + 20;
ybn:=(y div blockSize - y shr 31) + 18;

// расчет координат блока:
bx:=(x div blockSize - x shr 31) * blockSize;
by:=(y div blockSize - y shr 31) * blockSize;

// расчет координат внутри блока:
xb:=x - bx;
yb:=y - by;
end;

cvillian
05.04.2015, 00:30
const
// размер одного блока карты:
blockSize=32768; // что равно сдвигу в лево на 15 бит

var
xbn,ybn,x,y,bx,by,xb,yb: integer;

begin
// зависимость номера блока от координат:
xbn:=(x div blockSize - x shr 31) + 20;
ybn:=(y div blockSize - y shr 31) + 18;

// расчет координат блока:
bx:=(x div blockSize - x shr 31) * blockSize;
by:=(y div blockSize - y shr 31) * blockSize;

// расчет координат внутри блока:
xb:=x - bx;
yb:=y - by;
end;


Координаты блока - это координата его верхнего левого угла относительно всей карты?

А координатами внутри блока можно воспользоваться чтобы отмечать своё местоположение как это например в волкере?

cvillian
24.07.2015, 15:04
Подскажите кто-нибуть плиз, как сделать обратный перерасчёт, т.е. как координаты внутри блока снова перевести в мировые?

ScythLab
24.07.2015, 22:51
На такие вопросы даже отвечать не интересно, это обычная математика средней школы

cvillian
25.07.2015, 04:18
ну при расчёте координат блока используется оператор shr,
а я побитовые оперции не очень понимаю, чтобы сделать обратный расчёт

ScythLab
27.07.2015, 19:39
Это оптимизация, конструкция "x shr 31" при отрицательном X будет принимать 1, в противном случае 0.
Можно написать что-то типа

if (x < 0) then
Dec(x, blockSize);
xbn := (x div blockSize) + 20;
...

Смысл без картинки сложно объяснить, в общем когда преобразуешь координаты к номеру блока, то номера блоков "+0" и "-0" должны отличаться.

cvillian
22.12.2015, 18:22
млин, никак не получается первести координаты клика в игровые координаты :(
помогите плиз.

cvillian
25.12.2015, 18:14
координаты клика в координаты внутри блока я перевёл.
как теперь их перевести в мировые?

Yegor
25.12.2015, 19:28
Умножить номер блока на количество точек в блоке и прибавить координату внутри блока.

worldX = 20*32768 + (номер блока X)*32768 + (координата внутри блока X);

worldY = 18*32768 + (номер блока Y)*32768 + (координата внутри блока Y);


20 и 18 это начальные смещения так как блоки в игре нумеруются не от нуля.

cvillian
25.12.2015, 23:09
20*32768 = 655360, что уже не может быть моей координатой

до меня внезапно дошло, что в формуле
bx:=(x div blockSize - x shr 31) * blockSize;
x - у меня есть - моё собственное положение на карте, а координату клика можно вычислить относительно собственного местоположения. Впринципе все вычесления так и делал т.к. карта центрируется по своему положению.

Только надо теперь это всё "вживую" проверять т.к. тесты делал на одной карте и с постоянным местоположением.

Yegor
26.12.2015, 05:17
Да немного неправильно написал. Отсчет координат идет от нуля. но если нужно высчитать номера блоков в формате л2 то нужно добавить эти смещения.
В другом коде нашел смешения 16 для x и 10 для y

cvillian
28.12.2015, 16:07
Мдя, теперь надо как-то расчитывать движение....

Добавлено через 18 часов 35 минут
В другом коде нашел смешения 16 для x и 10 для y
А что за код? может он будет мне полезным? :)

Yegor
28.12.2015, 20:21
Вот исходники почти готового бота бери, дорабатывай и пользуй http://coderx.ru/showthread.php?t=9575&highlight=xBot2010

cvillian
08.02.2016, 13:28
интересно, а как сделать подключение карт катакомб.. ?

а впринципе понял, по определённым координатам подсовывать

FrankJScott
20.06.2025, 23:48
In response to the people asking about ai automated stock trading, stock performance analysis tools, share trading software, ai us stock, trade ai, cheap ai companies to invest in, artificial technology stocks, stock picking system, best sites for stock research, best stock prediction, I highly recommend this learn more here for AI stock analysis platform tips (https://zenithehive.com/20-top-reasons-for-choosing-ai-stock-investing-analysis-websites-48938033/) or ai trading tools, ai tool for stock market, artificial intelligence stock trading, artificial intelligence stock market prediction software, stock programs, stock invest website, stock market tools software, stock price ai, best ai company stocks, ai in the stock market, which is worth considering with this new AI stock investing platform blog (https://winningpokerbet.co.uk/20-excellent-info-to-picking-ai-stock-picker-analysis-websites/) and don't forget ai and stocks, open ai ticker, ai tech stock, ai chatbot stocks, stock picker app, ai stock symbol, best ai investments, best stock ai, best technical analysis website, new ai companies stock, alongside all this cool AI stock investing platform info (https://downthepipe-wh.shop/20-excellent-suggestions-to-deciding-on-ai-stock-predictions-analysis-websites/) which is also great. Also, have a look at this new AI stock investing platform tips (https://futurernexus.com/20-new-advice-to-picking-ai-stock-trading-platform-sites/) and don't forget ai automated investing, ai stock investing, best stock research websites free, stock prediction program, ai in the stock market, stock market trading bot, use ai to predict stock price, best stock market research tools, stock buying advice, best stock market websites free, on top of this high rated AI stock picking platform blog (https://lauravandervos.shop/20-recommended-tips-to-picking-ai-stock-picker-platform-websites/) and don't forget website to analyze stocks, ai related stocks, ai companies on the stock market, ai for stock investing, ai stock chart, funny post on (https://andresmyjr52074.blogzag.com) as well as stock picking software reviews, stock market trading bot, best free stock tools, best stock market advice, artificial intelligence shares, for good measure. Check more @ Useful Custom Printing Service Sydney Guide (https://bbs.xltyun.com/forum.php?mod=viewthread&tid=581383&pid=739414&page=1&extra=page%3D1#pid739414) 0b350c5