Вернуться   CoderX :: Forums > Lineage II > L2PacketHack
Войти через OpenID

L2PacketHack Форум программы L2PacketHack, всё что с ней связано находится тут.
Правила раздела! Обсуждение багов Lineage ЗАПРЕЩЕНО!

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 10.08.2010, 21:05   #1
Новичок
 
Регистрация: 28.12.2009
Сообщений: 3
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
kodav пока неопределено
По умолчанию карта и координаты

есть ли какая инфа о том как перевести игровые координаты карты те что мы получаем по /loc в пиксельные (изображение из текстуры)? либо все поделено на секторы либо какая то хитрая формула
kodav вне форума   Ответить с цитированием
Старый 10.08.2010, 21:43   #2
Местный
 
Аватар для J-Fobos
 
Регистрация: 09.06.2008
Сообщений: 867
Сказал Спасибо: 175
Имеет 468 спасибок в 259 сообщенях
J-Fobos пока неопределено
По умолчанию

Формул как таковых я не знаю, но посмотрите это.
_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.

зы: автор данного объяснения мне не известен.
__________________

В любом из нас спит гений. И с каждым днем все крепче.

Переходим на протокол нового поколения jabber
J-Fobos вне форума   Ответить с цитированием
За это сообщение J-Fobos нажился 2 спасибками от:
Старый 17.08.2010, 03:02   #3
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Код:
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;
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
За это сообщение xkor нажился 3 спасибками от:
Старый 05.04.2015, 00:30   #4
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 58
Сказал Спасибо: 12
Имеет 0 спасибок в 0 сообщенях
cvillian пока неопределено
По умолчанию

Цитата:
Сообщение от xkor Посмотреть сообщение
Код:
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   #5
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 58
Сказал Спасибо: 12
Имеет 0 спасибок в 0 сообщенях
cvillian пока неопределено
По умолчанию

Подскажите кто-нибуть плиз, как сделать обратный перерасчёт, т.е. как координаты внутри блока снова перевести в мировые?
cvillian вне форума   Ответить с цитированием
Старый 24.07.2015, 22:51   #6
Местный
 
Аватар для ScythLab
 
Регистрация: 24.10.2014
Сообщений: 156
Сказал Спасибо: 4
Имеет 33 спасибок в 31 сообщенях
ScythLab пока неопределено
По умолчанию

На такие вопросы даже отвечать не интересно, это обычная математика средней школы
__________________
Хобби: разработка бота для Lineage.
ScythLab вне форума   Ответить с цитированием
Старый 25.07.2015, 04:18   #7
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 58
Сказал Спасибо: 12
Имеет 0 спасибок в 0 сообщенях
cvillian пока неопределено
По умолчанию

ну при расчёте координат блока используется оператор shr,
а я побитовые оперции не очень понимаю, чтобы сделать обратный расчёт
cvillian вне форума   Ответить с цитированием
Старый 27.07.2015, 19:39   #8
Местный
 
Аватар для ScythLab
 
Регистрация: 24.10.2014
Сообщений: 156
Сказал Спасибо: 4
Имеет 33 спасибок в 31 сообщенях
ScythLab пока неопределено
По умолчанию

Это оптимизация, конструкция "x shr 31" при отрицательном X будет принимать 1, в противном случае 0.
Можно написать что-то типа
Код:
  if (x < 0) then
    Dec(x, blockSize);
  xbn := (x div blockSize) + 20;
  ...
Смысл без картинки сложно объяснить, в общем когда преобразуешь координаты к номеру блока, то номера блоков "+0" и "-0" должны отличаться.
__________________
Хобби: разработка бота для Lineage.
ScythLab вне форума   Ответить с цитированием
Старый 22.12.2015, 18:22   #9
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 58
Сказал Спасибо: 12
Имеет 0 спасибок в 0 сообщенях
cvillian пока неопределено
По умолчанию

млин, никак не получается первести координаты клика в игровые координаты
помогите плиз.

Последний раз редактировалось cvillian, 22.12.2015 в 20:30.
cvillian вне форума   Ответить с цитированием
Старый 25.12.2015, 18:14   #10
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 58
Сказал Спасибо: 12
Имеет 0 спасибок в 0 сообщенях
cvillian пока неопределено
По умолчанию

координаты клика в координаты внутри блока я перевёл.
как теперь их перевести в мировые?
cvillian вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack


Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 16:15.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!