PDA

Просмотр полной версии : [Скрипт] Телепорт по локации


mars2107
21.10.2013, 22:15
И снова здрасте :goplol:

Прошу помощи допилить скрипт, а то руки уже не двигаются. Ленивый я :bl:
Как только будет готов, думаю ув. Talala перенесет эту тему из обсуждения в нужный раздел без мусора.

Все знают, что в игре дальше чем на 7 метров не ТПшнуться, а если кусками? см. скрипт.



var
nach,kon:string;
n, dx, dy, dz, x1, x2, y1, y2, z1, z2:double;
begin
if FromClient then
case pck[1] of
#$fd: case reads(7) of
'.': begin
nach:=hstr('CD 00 65 32 FF 04 C5 B4 92 43 5D 4B D0 43 AE BF 67 43 3E 00 '); // Составляем и задаем вручную начальную точку
kon:=hstr('CD 00 65 32 FF 04 0D B6 AE 43 E9 B6 CB 43 07 EE 67 43 3E 00 '); // Составляем и задаем вручную конечную точку
x2 := StrToFloat(Copy(nach, 7, 4));
y2 := StrToFloat(Copy(nach, 11, 4));
z2 := StrToFloat(Copy(nach, 15, 4)); // Выдираем координаты
x1 := StrToFloat(Copy(kon, 7, 4));
y1 := StrToFloat(Copy(kon, 11, 4));
z1 := StrToFloat(Copy(kon, 15, 4));
while (sqrt((x1 - x2)*(x1 - x2)+(y1 - y2)*(y1 - y2)+ (z1 - z2)*(z1 - z2)) > 5) do // проверяем пока не больше пяти, когда будет меньше
begin // значит пришли к точке назначения
n := sqrt((x1 - x2)*(x1 - x2)+(y1 - y2)*(y1 - y2)+ (z1 - z2)*(z1 - z2))*0.2;
dx := (x1 - x2)/n;
dy := (y1 - y2)/n;
dz := (z1 - z2)/n;
x2 := x2 + dx; // Здесь начинаем прибавлять от начала наши 5ти метровые шаги
y2 := y2 + dy;
z2 := z2 + dz;
buf := HStr('CD 00 65 32 FF 04') + FloatToStr(x2) + FloatToStr(y2) + FloatToStr(z2);
SendToServer;
delay(500);
end;
end;
end;
end;
end.



Посмотрели? Ясно суть? Если нет, попытаюсь объяснить.

Для упрощения проверки я не стал заморачиваться отлова координать, а составил вручную 1ую и 2ую точку. Он у меня рассчитывает расстояние и делит на отрезки по 5 метров. Запускает проверку если все расстояние больше 5 метров то к начальной координате прибавляет 5 метров и вообщем пока не дойдет до конечной. И да, активируеться посылом в чат знака "." точка. Объясняю я плохо /facepalm

На идею натолкнул altairalentus ([Ссылки могут видеть только зарегистрированные и активированные пользователи]) по некоторым причинам он пока занят и не может над этим работать, ну а мне чтобы было проще я тут с вами пообщаюсь.

Сразу о косяках:
1. Надо исправить и добавить отлов начальной точки X Y Z и правильо выдернуть их из пакета.
2. Округлить тип double с наименьшими потерями.
3. Составить правильно пакет для телепорта записываемый в buf.

Для примера можете глянуть, написал на делфи, чтобы видеть как он будет делить весь путь. Координаты вводятся типа XXXXYYYYZZZZ, клик на форму очищает текстовой поле. В текстовом поле выводиться по каким координатам он будет ТПшиться до конечной цели.

Всё обсуждение проводить тут. Как будет готовый рабочий вариант, тему перенесут думаю.

Tr0y
22.10.2013, 09:01
ТП "кусками" в моей проге можешь найти, составляешь любой путь и посмотришь что произойдет )

Для севера вообще фиолетово как вы там перемещаетесь, у него есть т.н. параметр "скорость" на самом сервере, а там хоть телепортируйся, хоть беги, хоть иди, да хоть плыви к точке ))

Допускаю, что есть места на локациях, где оф. сервер не просчитывает значение "скорость".

На фришках в свое время баловался с телепортом по локации, сначала было было отправить пакет новых координат, а потом с "преседениями" и др. ухищрениями слать пакет новых координат, но офу, помоему, на это все равно. У него есть "скорость" и фиг с ним. Даже перелет на "птичке по локе" это не совсем полет, а анимация полета, сам перс как бы перемещается в "мир дзен" и ждет пока клиент пришлет пакет "я кончил палиод!!", тогда сервер извлекает перса и тупо телепортирует его в точку конца перелета (по пакету). Было бы прикольно, если это не была просто анимация, а можно было летать в "птичке" по всей карте произвольно ))

Меня больше интересуют дороги ветра, у них по сложнее реализация, но суть таже как с птицами

KSV-M
22.10.2013, 11:27
ТП "кусками" в моей проге можешь найти, составляешь любой путь и посмотришь что произойдет )

Для севера вообще фиолетово как вы там перемещаетесь, у него есть т.н. параметр "скорость" на самом сервере, а там хоть телепортируйся, хоть беги, хоть иди, да хоть плыви к точке ))

Допускаю, что есть места на локациях, где оф. сервер не просчитывает значение "скорость".

На фришках в свое время баловался с телепортом по локации, сначала было было отправить пакет новых координат, а потом с "преседениями" и др. ухищрениями слать пакет новых координат, но офу, помоему, на это все равно. У него есть "скорость" и фиг с ним. Даже перелет на "птичке по локе" это не совсем полет, а анимация полета, сам перс как бы перемещается в "мир дзен" и ждет пока клиент пришлет пакет "я кончил палиод!!", тогда сервер извлекает перса и тупо телепортирует его в точку конца перелета (по пакету). Было бы прикольно, если это не была просто анимация, а можно было летать в "птичке" по всей карте произвольно ))

Меня больше интересуют дороги ветра, у них по сложнее реализация, но суть таже как с птицами

Да не совсем и анимация, так-как можно видеть что тварится снизу (мобы, игроки, скилы) в точке полёта, навести курсор на моба и посмотреть его уровень (есль успеешь конешь)

З.Ы. если конешно под анимацией подразумевается в данном случае мультипликация (заранее нарисованный ролик)

pama3ah928
22.10.2013, 11:33
В аихаконе если перемещаться по координатам (даже на 2 метра) через стену/пол или вверх выше определенного уровня то будет назад откидывать (на сколько я знаю), через пакеты будет так же?

mars2107
22.10.2013, 17:14
В аихаконе если перемещаться по координатам (даже на 2 метра) через стену/пол или вверх выше определенного уровня то будет назад откидывать (на сколько я знаю), через пакеты будет так же?

Пакетами не будет, пробовал в плавнике из камеры вылазить таким образом, когда по кв тпшит

altairalentus
22.10.2013, 22:28
Насчет перелетов на птице во времена 2,5 ковырял оказалось клиент шлет пакеты с координатами на сервер в файле FlightPath записан маршрут, пакетами произвольно на птице не полетаешь разве что инжект в процесс. самое интересное последняя точка маршрута, надо поковырять пакеты.