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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 16.08.2009, 04:00   #1
Местный
 
Аватар для SeregaZ
 
Регистрация: 16.08.2009
Сообщений: 1,224
Сказал Спасибо: 4
Имеет 229 спасибок в 182 сообщенях
SeregaZ пока неопределено
По умолчанию вызов другого скрипта

читаю описание, которое выскакивает при наведении на скрипт - пишет что это типа порядок в котором скипты будут выполнятся, однако при включении двух сразу - они мешают друг другу так и должно быть? я думал пока не выполнится отмеченый выше - тот что ниже будет сидеть и не рыпаца. а тут...

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

суть идеи - хочу сделать выполнение одного повторяющегося квеста. сперва квест берет, потом топает на место, потом мочит мобов, собирает итемы - как их наберется сколько надо, топает назад, сдает, опять берет и до посинения.

этот квест я сделал из нескольких маленьких скриптиков. один дойти до нпс, второй взять квест, третий отвечает за доставку перса до точки фарма квест-мобов... и так далее. я думал скрипты выполняются по очереди - по высоте по списку - и хотел с последнего скрипта при выходе чтобы вызывался опять первый и все по новой.
SeregaZ вне форума   Ответить с цитированием
Старый 16.08.2009, 12:04   #2
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

Они и выполняются по очереди.
приходит пакет (от сервера/клиента)
сначала он обрабатываеться первым скриптом в очереди, потом вторым, далее третим и т.д.
и так для каждого пакета.
__________________
L2Ext - project closed.
alexteam вне форума   Ответить с цитированием
Старый 16.08.2009, 12:52   #3
Местный
 
Аватар для SeregaZ
 
Регистрация: 16.08.2009
Сообщений: 1,224
Сказал Спасибо: 4
Имеет 229 спасибок в 182 сообщенях
SeregaZ пока неопределено
По умолчанию

эм... а я думал что сперва пока exit в первом скрипте не достигнуто, 2 скрипт спит лежит.
фигова... придется все переделывать.

как тогда можно таймер выключить? пример взял с форума, я так понял что таким образом можно запустить паралельные процессы в скрипте. они и заускаются, однако если я буду все в кучу собирать, то нужно будет отключение этого таймера, а то чар будет дергаться на одном месте.
Код:
function Wait(var tick: integer;Timewait: Integer): Boolean;

var
  t: integer;
begin
  result:=false;
  t:=Round(Time*86400);
  if t>(tick+Timewait) then begin
    if tick>0 then result:=true;
    tick:=t;
  end;
end;

Последний раз редактировалось SeregaZ, 16.08.2009 в 13:00.
SeregaZ вне форума   Ответить с цитированием
Старый 16.08.2009, 13:50   #4
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

используй ttimer + case.

пример

delphi Код:
var timer : ttimer; step : integer; procedure ontimer(sender:tobject); begin inc(step); case step of 1 :   begin   //отправка к примеру пакета "подойти к нпц"   timer.interval := 5000; //время дающееся на выполнение этого действия   end; 2 :   begin   //диалог с нпц, пакетный уровень.   timer.interval := 2000; //время дающееся на выполнение этого действия   end; 3 :   begin   //добежать до гк   timer.interval := 10000; //время дающееся на выполнение этого действия   end; 4 :   begin   //тпшнутся   timer.interval := 3000; //время дающееся на выполнение этого действия   end; 5 :   begin   //добежать до места где бьются квест итемки   timer.enabled := false;   huntprocedure; //задействовать функцию убивания всегоживого   //после появления в инвентаре требуемых предметов сделать timer.enabled := true;   end; 6 :   begin   //юзаем сое   timer.interval := 10000; //время дающееся на выполнение этого действия   end; 7 :   begin   //бежим, здаем квест   timer.interval := 10000; //время дающееся на выполнение этого действия   end; 8 :   begin   //бежим, в исходную точку   timer.interval := 10000; //время дающееся на выполнение этого действия   end; 9 :   begin   //начинаем все с первого шага   step := 0;   timer.interval := 1;   end; end; end; procedure init; begin   step := 0;   timer := ttimer.create(nil);   timer.ontimer := @ontimer;   timer.interval := 1000; //через секунду после включения скрипта сработает первая итерация таймера.   timer.enabled := true; end; procedure free; begin timer.free; end; begin end.
__________________
L2Ext - project closed.

Последний раз редактировалось alexteam, 16.08.2009 в 13:59.
alexteam вне форума   Ответить с цитированием
За это сообщение alexteam нажился 3 спасибками от:
Старый 16.08.2009, 14:41   #5
Местный
 
Аватар для SeregaZ
 
Регистрация: 16.08.2009
Сообщений: 1,224
Сказал Спасибо: 4
Имеет 229 спасибок в 182 сообщенях
SeregaZ пока неопределено
По умолчанию

это общий план обьединения скриптов - а как быть с распаралелизацией процессов внутри каждого case? опять напорюсь на function Wait - а как она отключается? - ведь её надо будет отключить, когда один case закончится и начнется второй.
и можно ли вместо указания значения задержки таймера управлять началом и завершением case timer.enabled := false; и timer.enabled := true; - как в пятом case?
SeregaZ вне форума   Ответить с цитированием
Старый 16.08.2009, 15:01   #6
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

да, пример не идеальный. но общая идея таковой и будет.
по поводу отключения таймеров.
отключение таймера есть только в 5м пункте только по тому что ты не можешь сказать точно "каких мобов и с каким обжектайди небе надо бить и как долго это будет происходить" все остальные действия вполне предсказуемы.
реализовать движение в принципе можно такими же кейсами в других таймерах, включая их по требованию и выключая в этот момент основной, и наоборот когда таймер выполняющий движение достиг своего "конца".

паралельно вне таймера в основном теле прийдеться делать инвентаризацию рюкзака, учет нпц и мобов.
в общем прийдеться писать самостоятельного бота, функциями которого (движение, атака и авто подбор лута) будет управлять таймер.
__________________
L2Ext - project closed.

Последний раз редактировалось alexteam, 16.08.2009 в 15:03.
alexteam вне форума   Ответить с цитированием
Ответ

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



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

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


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

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

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