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

Скриптинг Форум посвещенный созданию скриптов для L2PacketHack

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 28.11.2009, 13:20   #1
Новичок
 
Аватар для Johnson
 
Регистрация: 27.10.2007
Адрес: Пермь
Сообщений: 19
Сказал Спасибо: 28
Имеет 1 спасибку в 1 сообщении
Johnson пока неопределено
По умолчанию Помогите высчитать координаты перемещения

Здравствуйте, уважаемые!
Пытаюсь сделать автоматические преследование (как в валкере), столкнулся с проблеммой: не могу рассчитать координаты, куда должен бежать ведомый (совсем забыл геометрию)
Быть может есть у кого готовый кусок кода, отвечающий за это?

Насколько я понял, сначала нужно высчитать угол наклона гипотенузы (от лидера к ведомому), зная длины катетов (разность между координатами).
Потом нужно высчитать длины катетов (разность координат между лидером и необходимой точкой), зная длину и угол наклона катета...

Кто хорошо помнит матчасть - помоги пожалуйста)
Заранее благодарен!
__________________
Если Вы недовольны моими действиями - то Вам сюда!
Johnson вне форума   Ответить с цитированием
Старый 28.11.2009, 14:33   #2
Местный
 
Регистрация: 05.11.2008
Сообщений: 168
Сказал Спасибо: 35
Имеет 139 спасибок в 66 сообщенях
Fer123 пока неопределено
По умолчанию

Если я не ошибаюсь в волкере ведомый получает координаты передвижения ведущего из пакета 01=MoveToLocation:d(ObjectID)d(DestX)d(DestY)d(Des tZ)d(CurX)d(CurY)d(CurZ) для t0
Fer123 вне форума   Ответить с цитированием
Старый 28.11.2009, 15:25   #3
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

вообщето вопрос был по расчету.. а не как словить координаты.

углы катeтов.. гм...достаточно "процентального" коофициента.
кусок с моего бота:

delphi Код:
TL2SpawnObject = class(TL2Object)     x, y, z : real;     Procedure MoveTo(dist:real);        Function DistanceTo(dtox,dtoy,dtoz:integer):real;overload;   end; function TL2SpawnObject.DistanceTo(dtox, dtoy, dtoz: integer): real; begin   result := sqrt(sqr(dtox-x)+sqr(dtoy-y));   result := sqrt(sqr(result)+sqr(dtoz-z));   if result = 0 then result := 0.1; //anti div 0 end; procedure TL2SpawnObject.MoveTo(dist: real); var   coof : real;   runx, runy, runz : integer; begin   coof := dist/DistanceTo(SelfData.x, SelfData.y, SelfData.z);   runx := round(X + coof*(SelfData.x - X));   runy := round(Y + coof*(SelfData.y - Y));   runz := round(z + coof*(SelfData.z - Z));   CallMoveBackwardToLocation(runx, runy, runz); end;

где SelfData.x/y/z собственные координаты
L2SpawnObject.X/Y/Z координаты объекта к которому производиться движение
dist - требуемая дистанция до объекта. dist может принимать отрицательное значение если нужно забежать за объект
__________________
L2Ext - project closed.

Последний раз редактировалось alexteam, 28.11.2009 в 15:29.
alexteam вне форума   Ответить с цитированием
За это сообщение alexteam нажился 2 спасибками от:
Старый 28.11.2009, 16:12   #4
Рыцарь
 
Аватар для TAMBIK
 
Регистрация: 03.03.2009
Сообщений: 773
Сказал Спасибо: 361
Имеет 300 спасибок в 168 сообщенях
TAMBIK на пути к лучшему
По умолчанию

от ведущего брать кординаты из пакета ValidatePosition
от ведомого брать кординаты из пакета ValidatePosition
и ведомый отправляет MoveBackwardToLocation
WriteD(X от ведущего);
WriteD(Y от ведущего);
WriteD(Z от ведущего);
WriteD(X от ведомого);
WriteD(Y от ведомого);
WriteD(Z от ведомого);
__________________
Тут не форум гадалок, если ты делаешь все правильно и по пунктам - то все должно работать
TAMBIK вне форума   Ответить с цитированием
Старый 29.11.2009, 20:08   #5
Новичок
 
Аватар для Johnson
 
Регистрация: 27.10.2007
Адрес: Пермь
Сообщений: 19
Сказал Спасибо: 28
Имеет 1 спасибку в 1 сообщении
Johnson пока неопределено
По умолчанию

TAMBIK, так можно ибез знания матчасти) до встречи с первым попавшимся ГМом... дело в том, что ведомый персонаж будет вставать ровно на позичию ведущего (как бы внутрь него)... даже для самого глупого и бухого ГМа будет налицо использование сторонних программ.
__________________
Если Вы недовольны моими действиями - то Вам сюда!
Johnson вне форума   Ответить с цитированием
Старый 29.11.2009, 20:12   #6
Рыцарь
 
Аватар для TAMBIK
 
Регистрация: 03.03.2009
Сообщений: 773
Сказал Спасибо: 361
Имеет 300 спасибок в 168 сообщенях
TAMBIK на пути к лучшему
По умолчанию

Johnson,
x - 50
Y -50
разница
__________________
Тут не форум гадалок, если ты делаешь все правильно и по пунктам - то все должно работать
TAMBIK вне форума   Ответить с цитированием
Старый 29.11.2009, 23:09   #7
Новичок
 
Аватар для Johnson
 
Регистрация: 27.10.2007
Адрес: Пермь
Сообщений: 19
Сказал Спасибо: 28
Имеет 1 спасибку в 1 сообщении
Johnson пока неопределено
По умолчанию

TAMBIK, если я побегу "против шерсти" координат - ведомый будет забегать вперед. Тоже не вариант. Ответ уже дан, зачем поднимать тему?

Добавлено через 19 минут
Мм... Попробовал сейчас внедрить в свой скрипт... Бегает то он бегает, да вот как попало бегает
Использую вот так:

Код:
function DistanceTo(dtox, dtoy, dtoz: integer): real;
begin
  result := sqrt((dtox-myX)*(dtox-myX)+(dtoy-myY)*(dtoy-myY));
  result := sqrt(result*result+(dtoz-myZ)*(dtoz-myZ));
  if result = 0 then result := 0.1; //anti div 0
end;

procedure MoveTo(locX,locY,locZ:integer);
var
  coof : real;
  runx, runy, runz : integer;
begin
  coof := 100/DistanceTo(locX, locY, locZ);
  runx := round(myX + coof*(locX - myX));
  runy := round(myY + coof*(locY - myY));
  runz := round(myZ + coof*(locZ - myZ));
  MBTL(runx, runy, runz);
end;
где myX,myY,myZ - координаты ведомого.
MBTL - процедура, остылающая MoveBackwardToLocation

Добавлено через 1 минуту
Вобщем в любом случае нужен алгоритм поиска координат, которые лягут по вектору чуть позади заданой точки...
__________________
Если Вы недовольны моими действиями - то Вам сюда!

Последний раз редактировалось Johnson, 29.11.2009 в 23:09. Причина: Добавлено сообщение
Johnson вне форума   Ответить с цитированием
Старый 29.11.2009, 23:20   #8
Рыцарь
 
Аватар для TAMBIK
 
Регистрация: 03.03.2009
Сообщений: 773
Сказал Спасибо: 361
Имеет 300 спасибок в 168 сообщенях
TAMBIK на пути к лучшему
По умолчанию

http://coderx.ru/showpost.php?p=31848&postcount=22
__________________
Тут не форум гадалок, если ты делаешь все правильно и по пунктам - то все должно работать
TAMBIK вне форума   Ответить с цитированием
За это сообщение TAMBIK нажился спасибкой от:
Старый 30.11.2009, 00:12   #9
Новичок
 
Аватар для Johnson
 
Регистрация: 27.10.2007
Адрес: Пермь
Сообщений: 19
Сказал Спасибо: 28
Имеет 1 спасибку в 1 сообщении
Johnson пока неопределено
По умолчанию

я думал конечно над условиями такими... но посчитал просчет вектора более правильным и реалистичным... если ни чего не получится - придётся делать условия...
PS: вопрос остаётся в силе )
__________________
Если Вы недовольны моими действиями - то Вам сюда!
Johnson вне форума   Ответить с цитированием
Старый 30.11.2009, 11:53   #10
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

ну.. да.. при переписывании чужого кода нужно быть внимательней...

delphi Код:
//Так правильней.   runx := round(LocX + coof*(myX - locX));   runy := round(LocY + coof*(myY - locY));   runz := round(LocZ + coof*(myZ - locZ));
__________________
L2Ext - project closed.
alexteam вне форума   Ответить с цитированием
За это сообщение alexteam нажился 2 спасибками от:
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг



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

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


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

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

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