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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 10.04.2008, 13:47   #1
Местный
 
Аватар для nezabudkin
 
Регистрация: 06.03.2008
Сообщений: 154
Сказал Спасибо: 46
Имеет 130 спасибок в 38 сообщенях
nezabudkin
Восклицание Бoт - локомотив от Alexus

В этой теме обсуждается моя разработка:
скрипт Бот - Локомотив
для L2PacketHack.

Хочу выразить благодарность создателю программы PacketHack и этого форума, xKor'у,
а так же всем авторам скриптов, выложенных на этом форуме.

И отдельное спасибо компании NCSoft за создание Линейки, для которой так интересно писать ботов

История версий: здесь


Версия 0.3 - во вложении
Самая простая, надежная и нетребовательная по ресурсам компьютера. Подходит как шаблон для написания разнообразных скриптов.

скрипт - воин ассистент в каче - во вложении
Все описание внутри скрипта. Скрипт можно размножить под разными именами, и получить себе до 9 помошников!!! Может работать совместно со скриптом Локомотивом версий 0.3 и 0.4.

Версия 0.4 - перейти к просмотру
Эта версия является логическим продолжением разработки скрипта. У бота появилось очень много интересных возможностей. Но есть один существенный недостаток - скрипт кушает слишком много процессорного времени. Не рекомендую его для серьезного применения на слабых компьютерах.

Версия 0.5 - перейти к просмотру
Работает только под Gracia. На данный момент продолжаются работы только над этой версиией скрипта. Во всех предыдущих версиях, при нахождении ошибок вводятся соответствующие изменения. Так что кому интересно, рекомендую иногда их просматривать.
Вложения
Тип файла: rar Locomotiv-03.rar (10.4 Кб, 1261 просмотров)
Тип файла: rar helper-03.rar (3.0 Кб, 825 просмотров)

Последний раз редактировалось nezabudkin, 01.02.2009 в 02:16. Причина: Обновление скриптов
nezabudkin вне форума   Ответить с цитированием
Старый 06.05.2008, 10:51   #2
Новичок
 
Регистрация: 22.04.2008
Сообщений: 21
Сказал Спасибо: 8
Имеет 26 спасибок в 6 сообщенях
poizon пока неопределено
По умолчанию

короче я сделал сюда пару строчек чтобы спойлить можно было для этого надо ещё запустить скрипт (был выложен в да будет бот)

delphi Код:
//Автоматизация sweep'а by APXAHGEJI //Свип производится тока при условии что моб был ,хоть один раз, ударен ВАМИ и //находится в списке нужных мобов. //Возможность работы нескольких одновременных скриптов //Социальное действие YES - запусстить/приостановить запись/АвтоСвип мобов //Социальное действие NO остановиться - завершить запись мобов и перейтии к АвтоСвип //После того как скрипт запущен нажимаете Yes и атакуете мобов //которых собираетесь спойлить. Атакуете до тех пор пока не появилась запись //что моб записан. Для удобства процесс записи можно приостановить нажатие той же //клавиши Yes. После того как все нужные мобы записаны жмакаете NO, запись мобов //завершается, АвтоСвип запускается, можете приступать к спойлу. АвтоСвип можно //приостановить нажав всю туже клавишу соцдействия Yes, но запись мобов под АвтоСвип //не остановится, и снова активировав, все нужные мобы просвипятся. Const   Name='имя перса';   Sweep='2F 2A 00 00 00 00 00 00 00 00'; Var   TimerSweep,TimerDel: TTimer;   N,M,i,NpcNum: Byte;   X,Y,Z,CharID: Integer;   NpcTypeID,TargetID: array of Integer;   NeedSweep,Dead: array of Boolean;   Switch,SaveID,HaveNpc: Boolean; //****************************************************************************** //                      Вызывается при включении скрипта //****************************************************************************** Procedure Init; begin   N:= 1;   M:= 1;   Switch:= False;   SaveID:= True;   SetLength( NpcTypeID, N );   SetLength( TargetID, N );   TimerSweep:=TTimer.Create(nil);   TimerSweep.OnTimer:=@Sweeper;   TimerSweep.Enabled:= False;   TimerSweep.Interval:= 1000;   TimerDel:=TTimer.Create(nil);   TimerDel.OnTimer:=@Del;   TimerDel.Enabled:= False;   TimerDel.Interval:= 5000;   Say('Нажмите Yes, чтобы начать/приостановить');   Say('запись мобов или АвтоСвип.');   Say('Нажмите No, чтобы завершить запись мобов');   Say('и приступить к сполйу.'); end; //****************************************************************************** //****************************************************************************** //                        Вызывается при выключении скрипта //****************************************************************************** Procedure Free; begin   TimerSweep.Free;   TimerDel.Free; end; //****************************************************************************** //****************************************************************************** //             Посылаем сообщение, которое видно только в окне бота //****************************************************************************** Procedure Say(msg:string); begin   buf:=hstr('4A 00 00 00 00');   WriteD(2);   WriteS(Name);   WriteS(msg);   SendToClientEx(Name); end; //****************************************************************************** //****************************************************************************** //                     Проверка наличия ИД моба в массиве //****************************************************************************** Procedure FindMob(ObjectID: Integer); begin   HaveNpc:= False;   NpcNum:= M;   For i:=0 to (M-1) do    If (ObjectID=TargetID[i]) then begin      NpcNum:= i;      HaveNpc:= True;      break;    end Else      If (TargetID[i]= 0) and (NpcNum = M) then NpcNum:= i; end; //****************************************************************************** //****************************************************************************** // Запуск свипа каждые n секунд (n= Timer.Interval) //****************************************************************************** Procedure Sweeper(Sender: TObject); begin   For i:=0 to (M-1) do     If NeedSweep[i] and Dead[i] then begin       buf:= #$04;       WriteD(TargetID[i]);       WriteD(X);       WriteD(Y);       WriteD(Z);       WriteC(00);       SendToServerEx(Name);       buf:=HStr(Sweep);       SendToServerEx(Name);       NeedSweep[i]:= False;       exit;     end; end; //****************************************************************************** //****************************************************************************** //Удаление списка при отстуствии записей о мобах //****************************************************************************** Procedure Del(Sender: TObject); begin   For i:=0 to (M-1) do     If (TargetID[i]<>0) then exit;   M:= 0;   SetLength(TargetID, M);   SetLength(NeedSweep, M);   SetLength(Dead, M);   TimerDel.Enabled:= False;   TimerSweep.Enabled:= False; end; //****************************************************************************** //****************************************************************************** //     Вызывается при приходе каждого пакета, если скрипт включен //****************************************************************************** Begin   //****************************************************************************   //Не обрабатываем пустые пакеты   If pck='' then exit;   //****************************************************************************   //****************************************************************************   //Если от сервака принят пакет UserInfo. Запоминаем собственный ИД.   If FromServer and (ConnectName=Name) and (pck[1]=#$04) then CharID:= ReadD(18);   //****************************************************************************   //****************************************************************************   //Переключение между записью ИД и АвтоСвипом   If SaveID then begin     //**************************************************************************     //Делаем выборку нужных для свипа видов мобов     //**************************************************************************     if Switch then       if FromServer and (ConnectName=Name) then         if (pck[1]=#$05) and (ReadD(2)=CharID) then begin           FindMob(ReadD(6));           If not HaveNpc then begin             TargetID[N-1]:= ReadD(6);             Inc(M);             SetLength( TargetID, M );           end;         end;         If (pck[1]=#$16) then           For i:=0 to (M-1) do             if (ReadD(2) = TargetID[i]) then begin               For NpcNum:= 0 to (N-1) do                 If (ReadD(6)= NpcTypeID[NpcNum]) then exit;               NpcTypeID[N-1]:= ReadD(6);               Say(IntToStr(N)+' вид мобов записан');               Inc(N);               SetLength( NpcTypeID, N );               exit;             end;     //**************************************************************************     //Управление записью мобов     //**************************************************************************     If FromClient and (ConnectName=Name) and (pck[1]=#$1B) then begin       If (ReadD(2)=6) then         if Switch then begin           pck:='';           Switch:= False;           Say('Запись мобов приостановлена');         end         else begin           pck:='';           Switch:= True;           Say('Начата запись мобов, атакуйте нужных мобов');         end;       If (ReadD(2)=5) then begin         pck:='';         Dec(N);         M:= 0;         SetLength(NpcTypeID, N);         SetLength(TargetID, M);         SetLength(NeedSweep, M);         SetLength(Dead, M);         SaveID:= False;         Switch:= True;         Say('Запись мобов завершена, АвтоСвип активирован');         Say('Удачного спойла');       end;     end;     //**************************************************************************   end   //****************************************************************************   //****************************************************************************   //Переходим от записи нужных мобов к АвтоСвипу   Else begin   //****************************************************************************     //**************************************************************************     //Записываем текущие координаты     if FromClient and (ConnectName=Name) and (pck[1]=#$48) then begin       X:= ReadD(2);       Y:= ReadD(6);       Z:= ReadD(10);     end;     //**************************************************************************      //**************************************************************************     //Анализ мобов :=))     If FromServer and (ConnectName=Name) then begin       //************************************************************************       //Записываем всех атакованых нами мобов (пакет Attack, причем Attacker=CharID)       If ((pck[1]= #$05) and (ReadD(2)= CharID)) then begin         FindMob(ReadD(6));         If not HaveNpc then           If (NpcNum <> M) then begin             TargetID[NpcNum]:= ReadD(6);             NeedSweep[NpcNum]:= False;             Dead[NpcNum]:= False           end Else begin             Inc(M);             SetLength(TargetID, M);             SetLength(NeedSweep, M);             SetLength(Dead, M);             TargetID[M-1]:= ReadD(6);             NeedSweep[M-1]:= False;             Dead[M-1]:= False;             If Switch then TimerSweep.Enabled:= True;             TimerDel.Enabled:= True;           end;       end;       //************************************************************************       //Проверяем есть ли в списке мобы       if (M <> 0) then begin         //**********************************************************************         //Проверяем тот ли вид моба атакован (пакет NpcInfo)         If (pck[1]= #$16) then begin           FindMob(ReadD(2));           If HaveNpc and (not NeedSweep[NpcNum]) then begin             For i:=0 to (N-1) do               If (ReadD(6)= NpcTypeID[i]) then begin                 HaveNpc:= False;                 Break;               end;             If not HaveNpc then NeedSweep[NpcNum]:= True;           end;         end;         //**********************************************************************         //Записываем что атакованый моб умер (пакет Die, причем Sweepable=1)         If (pck[1]= #$06) and (pck[22]= #$01) then begin           FindMob(ReadD(2));           If HaveNpc then Dead[NpcNum]:= True;         end;         //**********************************************************************         //Удаляем записи об атакованом мобе (пакет DeleteObject)         If (pck[1]= #$12) then  begin           FindMob(ReadD(2));           If HaveNpc then begin             TargetID[NpcNum]:= 0;             NeedSweep[NpcNum]:= False;             Dead[NpcNum]:= False;           end;         end;         //**********************************************************************       end;       //************************************************************************     end;     //**************************************************************************     //**************************************************************************     //Запускаем/приостанавливаем АвтоСвип     //**************************************************************************     If FromClient and (ConnectName=Name) and (pck[1]=#$1B) and (ReadD(2)=6) then       if Switch then begin         pck:='';         TimerSweep.Enabled:= False;         Switch:= False;         Say('АвтоСвип приостановлен');       end       else begin         pck:='';         TimerSweep.Enabled:= True;         Switch:= True;         Say('АвтоСвип запущен');       end;     //**************************************************************************   end;   //**************************************************************************** End. //******************************************************************************  
этот скрипт запускаем настраиваем

а в боте незабудкина процедуру phisicalattack меняем на вот такую
delphi Код:
procedure PhisicalAttack;          // команда атаки var ppp1: integer; begin buf:=#$04; //action   WriteD(TargetID);   WriteD(MyX);   WriteD(MyY);   WriteD(MyZ);   WriteC(0);   SendToServerEx(NickName); if ppp1 = targetid then begin ppp1:= targetid end else begin buf:=HStr('2F FE 00 00 00 00 00 00 00 00');      //spoil   SendToServerEx(NickName); End;      ppp1:= targetid end;
всё работает кидает спойл на моба 1 раз а другой крипт свипит

Последний раз редактировалось Grinch, 21.05.2008 в 21:33.
poizon вне форума   Ответить с цитированием
За это сообщение poizon нажился 6 спасибками от:
Старый 20.05.2008, 17:15   #3
Новичок
 
Регистрация: 05.05.2008
Сообщений: 19
Сказал Спасибо: 33
Имеет 10 спасибок в 4 сообщенях
MHz пока неопределено
По умолчанию

Цитата:
Сообщение от poizon Посмотреть сообщение
всё работает кидает спойл на моба 1 раз а другой крипт свипит
Спасибо тебе, действительно работает, только было бы вообще здорово если бы спойлило как человек. Т.е. если я кого-то спойлю, то сначала пытаюсь его заспойлить и только потом убиваю, в общем если будет возможность то было бы здорово:
1. Чтобы спойл бросался до тех пор пока он не пройдет а не 1 раз.
2. Чтобы свипало 1 раз, а то сейчас он раза по 2 точно пытается, бывает и 2 раза (это палево).
3. Если локомотив оказался в паровозе, то 100% свипается только последний убитый моб, а убитые раньше часто так и лежат синие.
MHz вне форума   Ответить с цитированием
Старый 18.03.2010, 04:13   #4
Новичок
 
Регистрация: 05.11.2009
Сообщений: 16
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
maa пока неопределено
По умолчанию

MHz, мож скинуть скрипт на спойл? Заранее благодарна а тоя тут не могу разобрать что скопировать
maa вне форума   Ответить с цитированием
Старый 09.04.2010, 22:45   #5
Новичок
 
Регистрация: 28.07.2009
Сообщений: 7
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
kallifan пока неопределено
По умолчанию

дайте сылку на скачку а то с тех не качает(
kallifan вне форума   Ответить с цитированием
Старый 20.05.2008, 17:39   #6
Заблокирован
 
Регистрация: 10.03.2008
Адрес: Тула
Сообщений: 1,098
Сказал Спасибо: 188
Имеет 108 спасибок в 60 сообщенях
DashKAaa
По умолчанию

на ассистанта вешаешь спойлера и локомотива пускаешь другого перса, а скриптов нормальных для споила уйма. не каких мозгоипаний не надо
DashKAaa вне форума   Ответить с цитированием
За это сообщение DashKAaa нажился спасибкой от:
Старый 21.05.2008, 18:17   #7
Местный
 
Аватар для nezabudkin
 
Регистрация: 06.03.2008
Сообщений: 154
Сказал Спасибо: 46
Имеет 130 спасибок в 38 сообщенях
nezabudkin
По умолчанию

Удалите плизз ВиНиПуХ'а от сюдова нахрен. Пускай где угодно гадости говорит, но тока не в моем топике!
nezabudkin вне форума   Ответить с цитированием
За это сообщение nezabudkin нажился спасибкой от:
Старый 21.05.2008, 21:13   #8
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию

Так, Винипуху бан неделя, для начала, остальным - устное предупреждение. Убедительная просьба не сраться в топиках, они не для этого, для этого есть личка.
QaK вне форума   Ответить с цитированием
За это сообщение QaK нажился 2 спасибками от:
Старый 21.05.2008, 21:23   #9
Рыцарь
 
Аватар для Grinch
 
Регистрация: 29.02.2008
Сообщений: 928
Сказал Спасибо: 127
Имеет 130 спасибок в 93 сообщенях
Grinch пока неопределено
Смех

Цитата:
Сообщение от QaK Посмотреть сообщение
Так, Винипуху бан неделя, для начала, остальным - устное предупреждение. Убедительная просьба не сраться в топиках, они не для этого, для этого есть личка.
От себя считайте форум печатным изданием т.е. правила теже НЕТ мату, имхо админу можно чисто для связи слов в предложении...
Grinch вне форума   Ответить с цитированием
За это сообщение Grinch нажился спасибкой от:
Старый 22.05.2008, 01:58   #10
Местный
 
Аватар для dfackk
 
Регистрация: 31.01.2008
Сообщений: 151
Сказал Спасибо: 25
Имеет 40 спасибок в 35 сообщенях
dfackk пока неопределено
По умолчанию

Цитата:
Сообщение от Grinch Посмотреть сообщение
админу можно чисто для связи слов в предложении...
и мы, как дети "чистые и не разумные", у админа этому научимся
http://orthodox.etel.ru/2001/10/omate.htm
__________________
L2 killer, Walker scripts, Holy "RTFM"
Я НЕ БАЗА БОТОВОДСТВА, ВСЕ АСКИ ПО ТОМУ ЧТО И ГДЕ СЮДА: http://coderx.ru/private.php?do=newpm&u=4685
Оффтоп
dfackk вне форума   Ответить с цитированием
За это сообщение dfackk нажился 3 спасибками от:
Ответ

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



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

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


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

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

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