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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 21.09.2014, 02:27   #1
Новичок
 
Регистрация: 24.07.2014
Сообщений: 8
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
CoolNickname пока неопределено
Вопрос Тащить объект по маршруту

Всем привет. Суть скрипта в том что бы протащить "ящик" по заданному маршруту. Сейчас написал скрипт который просто ведет чара по координатам, но теперь не знаю как прикрутить сюда саму "тащилку". Выглядеть это должно так: отбежали от ящика, нажали атаку-ящик подъехал к чару, и так далее к конечной точке. Может кто то уже делал нечто подобное, помогите плиз)
CoolNickname вне форума   Ответить с цитированием
Старый 21.09.2014, 14:54   #2
Местный
 
Аватар для Breadfan
 
Регистрация: 29.04.2008
Сообщений: 831
Сказал Спасибо: 80
Имеет 230 спасибок в 169 сообщенях
Breadfan пока неопределено
По умолчанию

считывай текущие координаты ящика и перса (от сервера приходит), следом - Dist:=sqrt(deltaX^2+deltaY^2+deltaZ^2); - расстояние меж объектами. Расстояние больше положенного - то взять в таргет( если не взят) и жмякнуть атаку. Всё.
__________________
На фразы в аську типа "слух карочь 1)как точить 2)как раскачаться за 5 мин" - игнор. ИМХО идиотизм
Дай голодному рыбу - он будет один день сыт. Покажи ему, как удить рыбу - он пошлёт тебя и скажет, что у него есть более интересные занятия, чем забрасывать снасти в воду
David Kastrup @ de.comp.text.tex.
"Приобретенные навыки общения с маленькими детьми - сильно упрощают взаимопонимание на форумах..."

А вы знаете, что для качественной сварки - место шва нужно протереть спиртом?
Breadfan вне форума   Ответить с цитированием
Старый 21.09.2014, 16:12   #3
Новичок
 
Регистрация: 24.07.2014
Сообщений: 8
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
CoolNickname пока неопределено
По умолчанию

Спасибо за ответ, но у меня проблема в другом, я не знаю как сделать, что бы чар одновременно бежал к нужным координатам и при этом тащил ящик. Если я даю команду MoveTo(x,y,z),а потом команду MoveBlock, то движение прекращается.
CoolNickname вне форума   Ответить с цитированием
Старый 22.09.2014, 10:59   #4
Местный
 
Аватар для Breadfan
 
Регистрация: 29.04.2008
Сообщений: 831
Сказал Спасибо: 80
Имеет 230 спасибок в 169 сообщенях
Breadfan пока неопределено
По умолчанию

ну смотри. у тебя пусть будут distmin\distmax- максимальное\минимальное расстояние до ящика. Персонаж бежит. В процессе проверяешь текущую дистанцию до ящика. Как только она > distmax - "атакуеш" ящик до тех пор, пока она не станет < distmin. Как только стала - возобновил движение персонажа по контрольным точкам пути (ну или как ты там им бегаешь).
__________________
На фразы в аську типа "слух карочь 1)как точить 2)как раскачаться за 5 мин" - игнор. ИМХО идиотизм
Дай голодному рыбу - он будет один день сыт. Покажи ему, как удить рыбу - он пошлёт тебя и скажет, что у него есть более интересные занятия, чем забрасывать снасти в воду
David Kastrup @ de.comp.text.tex.
"Приобретенные навыки общения с маленькими детьми - сильно упрощают взаимопонимание на форумах..."

А вы знаете, что для качественной сварки - место шва нужно протереть спиртом?
Breadfan вне форума   Ответить с цитированием
Старый 22.09.2014, 17:00   #5
Новичок
 
Регистрация: 24.07.2014
Сообщений: 8
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
CoolNickname пока неопределено
По умолчанию

Так в этом и проблема не выходит зациклить движение к точке, если я пишу например так:
Код:
while not PosInRange(x,y,z,100) do
begin
MoveTo(x,y,z);
end;
Тут PosInRange() возвратит true, если чар находится меньше чем за 100 пойнтов от точки и false, если дальше чем 100 пойнтов.
То клиент и пх зависают.

Последний раз редактировалось CoolNickname, 22.09.2014 в 17:01. Причина: Добавлено сообщение
CoolNickname вне форума   Ответить с цитированием
Старый 22.09.2014, 20:55   #6
Местный
 
Аватар для kpa9pt
 
Регистрация: 13.01.2010
Сообщений: 159
Сказал Спасибо: 18
Имеет 30 спасибок в 23 сообщенях
kpa9pt имеет немного плохого в прошлом
По умолчанию

Цитата:
Сообщение от CoolNickname Посмотреть сообщение
Так в этом и проблема не выходит зациклить движение к точке, если я пишу например так:
Код:
while not PosInRange(x,y,z,100) do
begin
MoveTo(x,y,z);
end;
Тут PosInRange() возвратит true, если чар находится меньше чем за 100 пойнтов от точки и false, если дальше чем 100 пойнтов.
То клиент и пх зависают.
Если у тебя это в теле begin end. то конечно, там милион раз отправляет команду на движение. Поставь в таймер и проверку раз в 500мс
kpa9pt вне форума   Ответить с цитированием
Старый 22.09.2014, 22:57   #7
Новичок
 
Регистрация: 24.07.2014
Сообщений: 8
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
CoolNickname пока неопределено
По умолчанию

Цитата:
Сообщение от kpa9pt Посмотреть сообщение
Поставь в таймер и проверку раз в 500мс
Сори за тупой вопрос, а как правильно таймер сделать? а то у меня чет все равно зависает, когда делаю с таймером, может не правильно делаю просто)
CoolNickname вне форума   Ответить с цитированием
Старый 23.09.2014, 02:42   #8
Местный
 
Аватар для kpa9pt
 
Регистрация: 13.01.2010
Сообщений: 159
Сказал Спасибо: 18
Имеет 30 спасибок в 23 сообщенях
kpa9pt имеет немного плохого в прошлом
По умолчанию

Цитата:
Сообщение от CoolNickname Посмотреть сообщение
Сори за тупой вопрос, а как правильно таймер сделать? а то у меня чет все равно зависает, когда делаю с таймером, может не правильно делаю просто)
Я в таких случаях иду от противного комментирую строки кода до тех пор пока не найду ту из-за которой всё виснет.

Ну ты выложи весь код то, или покажи как таймер создаёшь, очень трудно дальше что-то сказать.
kpa9pt вне форума   Ответить с цитированием
Старый 24.09.2014, 00:29   #9
Новичок
 
Регистрация: 24.07.2014
Сообщений: 8
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
CoolNickname пока неопределено
По умолчанию

Таймер делаю так:
Код:
var
  timer:TTimer;
  TimerStep:byte;
procedure Init; //Вызывается при включении скрипта
begin
 TimerStep:=1;
 timer:=TTimer.Create(nil);
 timer.OnTimer:=@OnTimer;
 timer.enabled:=false;
 timer.interval:=1000;
end;

procedure Free; //Вызывается при выключении скрипта
begin
  timer.free;
end;

procedure OnTimer; //<<--- изменено
begin
    MoveTo(119670,-183560,-3313);
    if PosInRange(119670,-183560,-3313,100) then timer.enabled:=false;    
end;

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
//ParseXYZ;
if FromClient and (ConnectName=Name) 
  and (pck[1]= #$56) and (pck[2]= #$1E) then 
  begin  
  timer.enabled:=true;//<<--- изменено
  end;
end.
Вот, не понимаю, что не так Оо

//Breadfan: чуть подправил скрипт.

Добавлено через 14 часов 55 минут
Цитата:
Сообщение от CoolNickname Посмотреть сообщение
//Breadfan: чуть подправил скрипт.
Целый час не мог понять почему все равно не работает, потом на форуме нашел это:
Цитата:
Сообщение от kpa9pt Посмотреть сообщение
Такс, только что сделал у себя также, ммм таймер в порядке не работает отправка sendtoserver, я сделал sendtoserverex(name) где name имя персонажа тобишь героя на котором соединение, и заработало
И действительно, выходит таймер работает только через sendtoserverex(name)

Последний раз редактировалось CoolNickname, 24.09.2014 в 00:29. Причина: Добавлено сообщение
CoolNickname вне форума   Ответить с цитированием
Старый 24.09.2014, 01:38   #10
Местный
 
Аватар для Breadfan
 
Регистрация: 29.04.2008
Сообщений: 831
Сказал Спасибо: 80
Имеет 230 спасибок в 169 сообщенях
Breadfan пока неопределено
По умолчанию

ну функции
PHP код:
MoveTo(119670,-183560,-3313);
if 
PosInRange(119670,-183560,-3313,100then timer.enabled:=false
ты ведь и не показал. Кто ж знал чего там внутрях у них.
__________________
На фразы в аську типа "слух карочь 1)как точить 2)как раскачаться за 5 мин" - игнор. ИМХО идиотизм
Дай голодному рыбу - он будет один день сыт. Покажи ему, как удить рыбу - он пошлёт тебя и скажет, что у него есть более интересные занятия, чем забрасывать снасти в воду
David Kastrup @ de.comp.text.tex.
"Приобретенные навыки общения с маленькими детьми - сильно упрощают взаимопонимание на форумах..."

А вы знаете, что для качественной сварки - место шва нужно протереть спиртом?
Breadfan вне форума   Ответить с цитированием
Ответ

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


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

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

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


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

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

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