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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 31.07.2008, 04:01   #1
Местный
 
Аватар для PanAm
 
Регистрация: 18.01.2008
Сообщений: 286
Сказал Спасибо: 24
Имеет 133 спасибок в 80 сообщенях
PanAm
По умолчанию

все можно исправить...
протестируйте
delphi Код:
const   NickName = 'BDGirl'; // Ник сменить на ник БД var   timer1 : TTimer;   i, x : integer;   Bissy: Boolean;   Commandir, Command : string; procedure OnTimer;  //Последовательность танцев begin   case x of     1: begin       buf:=hstr('2F 11 01 00 00 00 00 00 00 00'); //Dance Of Mystic       SendToServerEx(NickName);       inc(x);     end;     2: begin       buf:=hstr('2F 14 01 00 00 00 00 00 00 00'); //Dance Of Concentration       SendToServerEx(NickName);       x:=0//Последовательность сбрасываем       Bissy:=False; //БД свободен       timer1.enabled:=false; //таймер отключаем     end;     3: begin       buf:=hstr('2F 0F 01 00 00 00 00 00 00 00'); //Dance Of Warrior       SendToServerEx(NickName);       inc(x);     end;     4: begin       buf:=hstr('2F 13 01 00 00 00 00 00 00 00'); //Dance Of Fury       SendToServerEx(NickName);       inc(x);     end;     5: begin       buf:=hstr('2F 12 01 00 00 00 00 00 00 00'); //Dance Of Fire       SendToServerEx(NickName);       x:=0;       Bissy:=False;       timer1.enabled:=false;     end;   end; end; procedure Init; begin   NoFreeOnClientDisconnect;   NoFreeOnServerDisconnect;   timer1:=TTimer.Create(nil);   timer1.OnTimer:=@OnTimer;   timer1.enabled:=false;   timer1.interval:=2000; //интервал между танцами 2 сек   Bissy :=false;   x:=0; end; procedure Free; //Вызывается при выключении скрипта begin   timer1.free; end; //основная часть скрипта //вызывается при приходе каждого пакета если скрипт включен begin   if FromServer and (ConnectName=NickName) and (pck[1]=#$4A) then begin     i := 10; //Имя с 10 байта     Commandir := ReadS(i); //Сохранили ник написавшего и увеличиваем i на длину ника     Command := ReadS(i); //Сохранили комманду     if (Commandir = 'Amorality') or (Commandir = 'Amorality2') then //Проверяем что комманда от начальника       if not Bissy then begin //проверяем, что БД не занят         case Command of           '-mdance' : x :=1; //последовательность танцев 1-2           '-wdance' : x :=3; //последовательность танцев 3-4-5         end;         timer1.enabled:=true; //запускаем таймер         Bissy := true; //у БД теперь есть чем занятся       end; //not Bissy   end; //FromServer and (pck[1]=#$4A) end.

Добавлено через 4 часа 30 минут
А вот еще немножко подумав...
ваш чар и бот находятся на одном компе, зачем палится и посылать команды в чат через сервер? чтоб админу было легче ботов вычислить?
Значит надо отлавливать не 4A пакет с сервера, а пакет 38 с клиента, обрабатывать его и удалять, чтоб на сервер он не шел...
и сного переписываем основной скрипт
delphi Код:
begin   if FromClient and (pck[1]=#$38) then //say2 От клиента (боты не говорят)     if not Bissy then begin //проверяем, что БД не занят       case ReadS(2) of  //Считываем команду         '-mdance' : begin            x :=1; //последовательность танцев 1-2            pck :=''; //не палимся            timer1.enabled:=true; //запускаем таймер            Bissy := true; //у БД теперь есть чем занятся          end;         '-wdance' : begin           x :=3; //последовательность танцев 3-4-5           pck :=''; //не палимся           timer1.enabled:=true; //запускаем таймер           Bissy := true; //у БД теперь есть чем занятся          end;       end; //case     end; //not Bissy end.
вот примерно так
заодно убираем в начале описание Commandir, Command - теперь они не нужны.
тока я все это не тестю. т. к. не особо ботовод, и БД у мну нет

Последний раз редактировалось PanAm, 31.07.2008 в 04:01. Причина: Добавлено сообщение
PanAm вне форума   Ответить с цитированием
За это сообщение PanAm нажился спасибкой от:
Старый 02.08.2008, 02:08   #2
Местный
 
Регистрация: 11.10.2007
Сообщений: 144
Сказал Спасибо: 44
Имеет 7 спасибок в 7 сообщенях
Amorality
По умолчанию

Абис заработал , ПНХ тоже , удалось потестить , все отлично работает..
Собираюсь еще написать скрипт для ЕЕшки , но вот вопрос , как заставить чара с ником EvasS взять ассист(проще говорю взять тот же таргет) на моего мейна (Amorality) ?
Порылась в описаниях к пакетам нашла несколько:
A6=MyTargetSelected
29=TargetSelected

Потом решила выделить чара и поймать пакет , поймался пакет Action , Решила я его разобрать , но ник там вроде не указывается , хотя можно попробовать (я думаю) реализовать через ObjectID , состав:
04=Action:h(ObjectID)d(OriginX)d(OriginY)d(OriginZ )b(ActionID)

Других идей нет , может кто-нибуть подскажет , спасибо заранее

Добавлено через 3 минуты
А вот еще что , когда используешь Assist и ловишь пакеты , то от сервера приходит пакет Attack , клиент ничего не посылает , а если у этого чара кто-то выделен и ассист удался , то клиент посылает Action

Добавлено через 28 минут
Ага , все ясно , разобралась с пакетом (04) Action .. Вижу только этот способ реализации того , что я хочу , просто нужно будет запомнить ID человека , выделяемого мейном и составить пакет Action для бота , даже уже знаю как реализовать , хоть 1 скрипт сама напишу

Последний раз редактировалось Amorality, 02.08.2008 в 02:08. Причина: Добавлено сообщение
Amorality вне форума   Ответить с цитированием
Старый 02.08.2008, 02:13   #3
Местный
 
Аватар для PanAm
 
Регистрация: 18.01.2008
Сообщений: 286
Сказал Спасибо: 24
Имеет 133 спасибок в 80 сообщенях
PanAm
По умолчанию

Вроде все верно
http://coderx.ru/showthread.php?t=14
тут полно скриптов. с примером, как брать в таргет. хотя и реализация. на мой взгляд и не очень, но то первые скрипты
PanAm вне форума   Ответить с цитированием
За это сообщение PanAm нажился спасибкой от:
Старый 02.08.2008, 02:34   #4
Местный
 
Регистрация: 11.10.2007
Сообщений: 144
Сказал Спасибо: 44
Имеет 7 спасибок в 7 сообщенях
Amorality
По умолчанию

Код:
//Пробный скрипт на ассист by Amorality.
//Поправьте, если что не так!
//Когда Leader берет таргет на кого-то, окно тоже возмет таргет
//по ассисту.

const
Leader='ник'; //Указать имя лидера(мейна)
Okno='ник'; //Указать ник того, кто будет брать ассист на лидера.

var
TarID:String; //Запоминаем сюда ID лидера.

begin
If FromClient and (pck[1]=#$04) and (ConnectName=Leader) then begin
TarID:= pck[6]+pck[7]+pck[8]+pck[9]; //Записываем ID лидера, если он выделил кого-то
 If ConnectName=Okno then begin
 buf:=hstr('04') + TarID;
 SendToServerEX(Okno);
 end;
end;
end.
Поправьте плз , если что не так , еще не тестила.
Amorality вне форума   Ответить с цитированием
Старый 02.08.2008, 04:24   #5
Местный
 
Аватар для PanAm
 
Регистрация: 18.01.2008
Сообщений: 286
Сказал Спасибо: 24
Имеет 133 спасибок в 80 сообщенях
PanAm
По умолчанию

нужно знать еще координаты бота
это просто, если бот в клиенте
delphi Код:
var  MyXpos, MyYpos, MyZpos : integer; Begin   if (ConnectName=BotName) and FromClient and pck[1]=#$48 then begin       //ValidatePosition пакет от клиента с кординатами бота     MyXpos:=ReadD(2); //получаю координату х бота     MyYpos:=ReadD(6); //получаю координату у бота     MyZpos:=ReadD(10); //получаю координату z бота   end; end.
без клиента это будет видимо сложнее...

Добавлено через 6 минут
и ID лидира наверно не нужно, отслежмвайте что приходит от лидера, Сразу берите ID таргета + координаты бота от бота + действие (0)

Добавлено через 55 минут
вот заготовка, как я бы это делал
delphi Код:
const   Leader ='ник'; //Указать имя лидера(мейна)   Bot ='ник'; //Указать ник того, кто будет брать ассист на лидера. var   TargetID : integer;   BotX, BotY, BotZ : integer; begin //Отлавливаем с сервира пакеты лидера   if (ConnectName=Leader) and FromServer then     case pck[1] of       #$A6 : //MyTargetSelected         begin           TargetID := ReadD(2);           buf :=#$04;         //Начинаем формировать пакет 04=Action           WriteD(TargetID);   //Вписываем TargetID           WriteD(BotX);       //координату х бота           WriteD(BotY);       //координату у бота           WriteD(BotZ);       //координату z бота           WriteC(0);          //и само действие "Взять в таргет"           SendToServerEx(Bot); //отправляем запрос         end     end; //case //Отлавливаем с клиента пакеты бота   if (ConnectName=Bot) and FromClient then     case pck[1] of       #$48 : //ValidatePosition         begin           BotX :=ReadD(2);   //получаю координату х бота           BotY :=ReadD(6);   //получаю координату у бота           BotZ :=ReadD(10)//получаю координату z бота         end;     end; //case ////Отлавливаем с сервира пакеты бота   if (ConnectName=Bot) and FromServer then     case pck[1] of       #$A6 : //MyTargetSelected         begin           //бот взял таргет лидера         end;     end; //case end.
тут пока бот просто берет ассист, и дальше ждет пока таргет сменится, если требуется какое либо действие, то надо подумать вот над чем - боту приходит пакет. что он взял таргет, и можно сразу что-либо делать, например -если бот танк, он может сразу кинуть хейт, или бот должен ждать следующего действия лидера...

Добавлено через 1 минуту
кстати, модераторам довно следует перенести эту тему в скриптинг

Последний раз редактировалось PanAm, 02.08.2008 в 04:24. Причина: Добавлено сообщение
PanAm вне форума   Ответить с цитированием
За это сообщение PanAm нажился спасибкой от:
Старый 02.08.2008, 16:51   #6
Местный
 
Регистрация: 11.10.2007
Сообщений: 144
Сказал Спасибо: 44
Имеет 7 спасибок в 7 сообщенях
Amorality
По умолчанию

Странно .. Когда я делала это через полсылку пакета , то я выделяля кого-то лидером , потом брала первые 5 байт из Action (ID + ObjectID) и посылала их от БД , он брал таргет , почему тогда координаты нужны в скрипте?

Добавлено через 37 минут
Кстати ни твой ни мой скрипт не работают ..

Добавлено через 8 минут
Хм .. да но ValidatePosition шлет вроде только клиент ..А у меня же он выгружен , где бы брать координаты твинка , когда клиент отключен

Добавлено через 4 часа 19 минут
Теперь проверила твой скрипт , не отключая клиент , он работает , но не совсем так , как хотелось .. Мне нужно , чтобы он работал почти как в клиенте , вот я нажала на себя , он меня выделил , еще раз нажала , на себя , если я уже выделена , то он прицепился ко мне , а так он только выделяет а не цепляется , а по идее , если 2 пакета на выделение подряд на 1 и тот же ID , То должно целпяться

Последний раз редактировалось Amorality, 02.08.2008 в 16:51. Причина: Добавлено сообщение
Amorality вне форума   Ответить с цитированием
Старый 02.08.2008, 17:43   #7
Местный
 
Аватар для PanAm
 
Регистрация: 18.01.2008
Сообщений: 286
Сказал Спасибо: 24
Имеет 133 спасибок в 80 сообщенях
PanAm
По умолчанию

Смотрите пакеты
у меня на выделение себя дважды получается так
04=Action - запрашиваю выделить себя
A6=MyTargetSelected - ответ, таргет взят
04=Action - запрашиваю еще раз выделить себя
25=ActionFail - Название говорит само за себя
PanAm вне форума   Ответить с цитированием
Старый 02.08.2008, 18:39   #8
Местный
 
Регистрация: 11.10.2007
Сообщений: 144
Сказал Спасибо: 44
Имеет 7 спасибок в 7 сообщенях
Amorality
По умолчанию

Это отлов пакетов или чтО?
Я когда посылаю одинаковый пакет (тоесть в 2 строки) через ПНХ твинк сразу цепляется , не понимаю все равно как это через скрипт сделать
Amorality вне форума   Ответить с цитированием
Старый 03.08.2008, 00:29   #9
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Переместил тему в скриттинг.
NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился спасибкой от:
Старый 05.08.2008, 16:34   #10
Местный
 
Регистрация: 11.10.2007
Сообщений: 144
Сказал Спасибо: 44
Имеет 7 спасибок в 7 сообщенях
Amorality
По умолчанию

Тут еще такой вопрос , какой пакет обрабатывает инвентарь? Мне нужно вытаскивать кол-во квест итемов при отключенном клиенте.
Amorality вне форума   Ответить с цитированием
Ответ

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



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

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


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

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

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