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

L2PacketHack Форум программы L2PacketHack, всё что с ней связано находится тут.
Правила раздела! Обсуждение багов Lineage ЗАПРЕЩЕНО!

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 05.10.2007, 22:00   #1
Новичок
 
Регистрация: 05.10.2007
Адрес: Украина
Сообщений: 19
Сказал Спасибо: 0
Имеет 23 спасибок в 13 сообщенях
DeVolf пока неопределено
По умолчанию Кружок нубов(Вопрос-Ответ)

//QaK:отдельная тема по подкючению пакетхака к серверу >>>>>>>>тут
любые вопросы по данной тематике в этом топе будут удаляться без предупреждения.


Код:
const
mp='8A 1B 15 01 10';
hp='8A 1A 15 01 10';
begin
if fromclient and (pck[1]=#$38#$F5#$00#$EF#$00#$00#$00#$03#$00#$00#$00) then
begin
buf:=hstr(hp);
SendToServer;
end;
if fromclient and (pck[2]=#$33#$F5#$00#$EF#$00#$40#$00#$03#$00#$00#$00) then
begin
buf:=hstr(mp);
SendToServer;
end;
end.
где я ошибся?

Последний раз редактировалось QaK, 30.08.2010 в 18:56.
DeVolf вне форума   Ответить с цитированием
За это сообщение DeVolf нажился 6 спасибками от:
Старый 10.04.2009, 15:03   #351
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Цитата:
Сообщение от ake1a Посмотреть сообщение
У меня вопрос.... что надо сделать чтобы ПХ автоматически нажимала на ету опцию в ГМшопе, выбирала пуху и покупала ее?
Сам он нчего не нажмет. Тебе нужно писать скрипт на паскале, где будет написано, что требуется сделать пакетхаку для нажатия необходимых пунктов меню.

Можно посмотреть мой скрипт для исполнения скриптов валкера.
ЗЫЖ Правда он не может в ГМ-шопе покупать.
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
Старый 11.04.2009, 19:47   #352
Новичок
 
Регистрация: 13.03.2009
Сообщений: 25
Сказал Спасибо: 4
Имеет 0 спасибок в 0 сообщенях
ake1a пока неопределено
По умолчанию

Цитата:
Цитата:
Сообщение от ake1a
У меня вопрос.... что надо сделать чтобы ПХ автоматически нажимала на ету опцию в ГМшопе, выбирала пуху и покупала ее?

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

Можно посмотреть мой скрипт для исполнения скриптов валкера.
ЗЫЖ Правда он не может в ГМ-шопе покупать.
Пасибка NLObP пойду изучать Паскаль )))
Ы.З. а Паскаль сложная штука? )))))
ake1a вне форума   Ответить с цитированием
Старый 12.04.2009, 14:17   #353
Новичок
 
Регистрация: 12.04.2009
Сообщений: 4
Сказал Спасибо: 2
Имеет 0 спасибок в 0 сообщенях
Enchanter пока неопределено
По умолчанию

Иди те вы в жопу все1

Последний раз редактировалось Enchanter, 22.08.2010 в 16:26.
Enchanter вне форума   Ответить с цитированием
Старый 12.04.2009, 14:30   #354
Новичок
 
Регистрация: 09.03.2009
Сообщений: 2
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
T][P пока неопределено
По умолчанию

Прошу помочь разобраться, пишу скрипт (бота) он должен при первом сообщении в пм (в примере это 2356 ), сохранять ид отправителя и реагировать на команды в пм тока с этим ид.
Вот рабочий пример :
Код:
if FromServer and  (ConnectName=name)
  and (pck[1]=#$4A) and (pck[18]=#$37) and (pck[19]=#$04) and (pck[20]=#$34) and  (pck[21]=#$04) and (pck[22]=#$61) and (pck[23]=#$00) and (pck[24]=#$70) and (pck[25]=#$00) and (pck[26]=#$6F) and (pck[27]=#$00) and (pck[28]=#$32) and (pck[29]=#$04) and (pck[30]=#$00) and (pck[31]=#$00) then
   begin
idi1:=pck[2];
idi2:=pck[3];
idi3:=pck[4];
idi4:=pck[5];
end;
if FromServer and  (ConnectName=name)
  and (pck[1]=#$4A) and (pck[18]=#$31) and (pck[19]=#$00) and (pck[20]=#$00) and (pck[21]=#$00) and (pck[2]=idi1) and (pck[3]=idi2) and (pck[4]=idi3) and (pck[5]=idi4)  then
   begin
buf:=Hstr('46');
SendTOServerEx(name);
end;
Всё работало нормально для ника jeklin748 а для других не работало а дело в том что длина пакета 4А(входящего пм) зависит от ника точней его длины и букв написавшего его, как заделать так чтобы присваивание значений шло с конца пакета ? А ещё если допустим ник присвоить name:=Reads(10) как заделать так чтобы следующее присваивание было после Reads(10) то есть присваивало следующий байт.
Прошу помочь разобраться если вопрос не понять то что непонятно?

Последний раз редактировалось T][P, 13.04.2009 в 00:22.
T][P вне форума   Ответить с цитированием
Старый 13.04.2009, 14:59   #355
Местный
 
Аватар для PanAm
 
Регистрация: 18.01.2008
Сообщений: 286
Сказал Спасибо: 24
Имеет 133 спасибок в 80 сообщенях
PanAm
По умолчанию

T][P,
delphi Код:
Const   BotName = 'Имя бота';   Password = '2356'; var   MasterID : integer;   //ID хозяина   MasterName : string//Гик хохяина   Command :string;      //Команда   i : integer;   Name : string; begin   if FromServer and  (ConnectName=BotName) and (pck[1]=#$4A) then begin     i :=10//Устанавливаем смещение до ника     Name :=ReadS(i); //Сохраняем ник     Command :=ReadS(i);   //Считываем текст     if Command=Password then begin  //если это пароль       MasterID :=ReadD(2)//Сохраняем ID написавшего       MasterName := Name;   //и его ник     end;   end; end.

Добавлено через 3 минуты
Цитата:
Сообщение от T][P Посмотреть сообщение
А ещё если допустим ник присвоить name:=Reads(10) как заделать так чтобы следующее присваивание было после Reads(10) то есть присваивало следующий байт.
как в примере - надо использовать переменную, функция ReadS увеличит ее на длину строки
delphi Код:
i :=10;      Name :=ReadS(i);     Command :=ReadS(i);

Добавлено через 18 минут
T][P,
buf:=Hstr('46'); лучше buf:=#$46;
не знаю как это будет работать, но иожно попробывать сразу слать и клиенту 7E=LogOutOk:

Последний раз редактировалось PanAm, 13.04.2009 в 14:59. Причина: Добавлено сообщение
PanAm вне форума   Ответить с цитированием
За это сообщение PanAm нажился 2 спасибками от:
Старый 13.04.2009, 20:30   #356
Новичок
 
Регистрация: 09.03.2009
Сообщений: 2
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
T][P пока неопределено
По умолчанию

PanAm спс впринципи всё понял.
Цитата:
buf:=Hstr('46'); лучше buf:=#$46;
не знаю как это будет работать, но иожно попробывать сразу слать и клиенту 7E=LogOutOk:
Пакет 46 выкидывает в меню выбора чара. Попробую использовать 7Е.
Да хотел ещё спросить какой процедурой или функцией можно пакетник от клиента отсоединить, не теряя подключения? Где-то видел, но не магу вспомнить где.
T][P вне форума   Ответить с цитированием
Старый 16.04.2009, 11:04   #357
Пользователь
 
Регистрация: 11.04.2009
Адрес: lameriy
Сообщений: 34
Сказал Спасибо: 9
Имеет 1 спасибку в 1 сообщении
lamer пока неопределено
По умолчанию

Код:
{БОТ - Воин помошник от Alexus
версия: 0.3 (бета)
дата: 08.04.08

Описание:
Универсальный скрипт для война - помошника в каче.
Помошник бегает за вами куда бы вы не пошли и атакует ваши цели по ассисту,
как только вы сами начнете атаку (двойным кликом мыши по цели).
Либо может быть вагончиком в паровозе ботов и бегать за Локомотивом

Возможности:
1. Может бегать и за живим игроком и за ботом - локомотивом (от Alexus)
1. Бегает за Вами, не отлипает.
2. Помогает бить врагов.
3. Умеет лечиться (тип банки легко настраивается).
4. Скрипту неважно, находятся ли персы в пати или нет.
5. Работает на С4 и С6 серверах.

Инструкция:
1. Запускаем ПакетХак.
2. Если используем совместно с ботом - Локомотивом (от Alexus), то в "Списке скриптов" ставим этот скрипт ниже локомотива.
2. Запускаем оба клиента игры.
3. Задаем (ниже) реальные имена командира и помошника.
4. Внимательно настраиваем остальные константы в Секции настройки.
5. Запускаем скрипт.
}
//######################## Секция настройки ######################################################
const
 interlude = true;   // C6 - true,  C4 - false;
 CommanderName = 'x';           // Ник командира
 AssistantName = 'x';           // Ник помошника
 CommanderBot = true;             // Командир - это "бот - Локомотив", или человек?
 HPMedium = 70;                   // % с которого начинаем лечиться банками
 HPBottleID = 1061;               //  ItemID 1060=Lesser Healing Potion;    1061=Healing Potion;   1539=Greater Healing Potion;
 DrinkDelay = 14;                 // минимальное время задержки повторного питься бутылки (10 - 20 сек)
 InvRazmer = 79;                  // Размер инвенторя у ассистента -1 (если инвентарь 80, то писать надо 79, если 100, то писать 99)
//#################################################################################################

var
 CommanderX, CommanderY, CommanderZ : integer;            // Мои статы
 CommanderID, CommanderHP, CommanderMaxHP: integer;

 AssistX, AssistY, AssistZ : integer;                     // Статы помошника
 AssistID, AssistHP, AssistMaxHP: integer;
 AssistMP, AssistMaxMP : integer;
 AssistHPlevelProcent : integer;

 TargetID : integer;
 time1: integer;
 Inventory: array[0..InvRazmer, 0..9] of integer;  // инвентарь (itemType1, ObjectID, ItemID, count, itemType2, CustType1, isEquipped, BodyPart, EnchantLevel, CustType2)
 HPBottleObjID: integer;                           // ObjectID бутыли
 HpBottleCount: integer;                           // количество бутылей

procedure Init; //Вызывается при включении скрипта
 begin
  CommanderID:= 0;        // обнуляем ВСЕ данные
  CommanderX:= 0;
  CommanderY:= 0;
  CommanderZ:= 0;
  CommanderID:= 0;
  CommanderHP:= 0;
  CommanderMaxHP:= 0;
//  MyMP:= 0;
//  MyMaxMP:= 0;
  AssistID:= 0;
  AssistX:= 0;
  AssistY:= 0;
  AssistZ:= 0;
  AssistID:= 0;
  AssistHP:= 0;
  AssistMaxHP:= 0;
  AssistMP:= 0;
  AssistMaxMP:= 0;
  TargetID:=0;
  time1:=1;
  buf:= #$14;                            //запрашиваем пакеты с инвентарем и userinfo
  SendToServerEx(AssistantName);
  SendToServerEx(CommanderName);
 end;

function Wait(var tick: integer;Timewait: Integer): Boolean; // сквозная проверка без остановки скрипта (c)dmitry501, modifed by Sh00rGo
 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;

//############################## Модуль работы с Инвентарем ###########################
procedure InventoryCreate;
var
  i,k, offset : integer;
begin
  if interlude then offset:= 8 else offset:=0;
  for i:=0 to InvRazmer do
    if (i<ReadH(4)) then begin
      Inventory[i,0]:=ReadH(i*(28+offset)+6);  // itemType1
      Inventory[i,1]:=ReadD(i*(28+offset)+8);  // ObjectId
      Inventory[i,2]:=ReadD(i*(28+offset)+12); // ItemID
      Inventory[i,3]:=ReadD(i*(28+offset)+16); // count
      Inventory[i,4]:=ReadH(i*(28+offset)+20); // itemType2
      Inventory[i,5]:=ReadH(i*(28+offset)+22); // CustType1
      Inventory[i,6]:=ReadH(i*(28+offset)+24); // isEquipped
      Inventory[i,7]:=ReadD(i*(28+offset)+26); // BodyPart
      Inventory[i,8]:=ReadH(i*(28+offset)+30); // EnchantLevel
      Inventory[i,9]:=ReadH(i*(28+offset)+32); // CustType2
    end else
      for k:=0 to 9 do Inventory[i,k]:=0; // забиваем нулями
end;

function GetInv(obj,up,down:integer): integer; // up и down не проверяются
   var // 0-itemType1, 1-ObjectId, 2-ItemID, 3-count, 4-itemType2, 5-CustType1, 6-isEquipped, 7-BodyPart, 8-EnchantLevel, 9-CustType2
    i: integer;
 begin
  for i:=0 to InvRazmer do if (Inventory[i,up]=obj) then
   begin
    Result:=Inventory[i,down];
    exit;
   end;
  Result:=-1;
end;

procedure UseItemObjID(ItemObjID:integer);       //Использовать предмет с заданным ItemID
 begin
  buf:=#$19;
  WriteD(ItemObjID);
  WriteD(0);
  SendToServerEx(AssistantName);;
 end;
//############################################################################################

procedure AssistUserInfo;                  // обновление данных о ассистенте
 var
  i:word;
 begin
  AssistID:=ReadD(18);
  AssistX:=ReadD(2);
  AssistY:=ReadD(6);
  AssistZ:=ReadD(10);
  i:=22;
  ReadS(i);
  if interlude then i:=i+48 else i:=i+44;
  AssistMaxHP:=ReadD(i);
  AssistHP:=ReadD(i);
  AssistMaxMP:=ReadD(i);        // чисто информативно
  AssistMP:=ReadD(i);
//  i:=i+363;               пока не используется
//  MyMaxCP:=ReadD(i);
//  MyCP:=ReadD(i);
 end;

procedure AssistStatusUpdate;       // обновление данных о ассистенте
 var
  i:integer;
 begin
  for i:=0 to ReadD(6)-1 do
   case pck[i*8+10] of
    #$00: AssistHP:=ReadD(i*8+14);
    #$01: AssistMaxHP:=ReadD(i*8+14);
    #$0C: AssistMP:=ReadD(i*8+14);
    #$0D: AssistMaxMP:=ReadD(i*8+14);
//    #$23: MyCP:=ReadD(i*8+14);          пока не используется
//    #$24: MyMaxCP:=ReadD(i*8+14);
   end;
  if AssistMaxHP > 0 then AssistHPlevelProcent:= Round((AssistMaxHP/100)*HPMedium);
 end;

procedure CommanderUserInfo;             //   обновление данных о себе
 var
  i:word;
 begin
  CommanderID:=ReadD(18);
  CommanderX:=ReadD(2);
  CommanderY:=ReadD(6);
  CommanderZ:=ReadD(10);
  i:=22;
  ReadS(i);
  if interlude then i:=i+48 else i:=i+44;
  CommanderMaxHP:=ReadD(i);
  CommanderHP:=ReadD(i);
 end;

procedure Action;          // команда действия
 begin
  buf:=#$1F;                //action
  WriteD(TargetID);
  WriteD(AssistX);
  WriteD(AssistY);
  WriteD(AssistZ);
  WriteC(0);
  SendToServerEx(AssistantName);
 end;

procedure DrinkBottle;          // пьем бутылки и следим за их количеством
 begin
  if HPBottleCount > 0 then
   begin
    UseItemObjID(HPBottleObjID);
    dec (HPBottleCount);
   end;
 end;

begin                   // Далее обработка входящих пакетов
 if pck = '' then exit;

 if (ConnectName = CommanderName) and FromServer then
  case pck[1] of
   #$31: if ReadS(22) = CommanderName then CommanderUserInfo;
  end;

 if (ConnectName = AssistantName) and FromServer then
  case pck[1] of
   #$31: if ReadS(22) = AssistantName then AssistUserInfo;
   #$18: if AssistID=ReadD(2) then     //   StatusUpdate:h(ObjectID)d(Attributes)
           begin
            AssistStatusUpdate;
            if (AssistHP > 0) and (AssistHP < AssistHPlevelProcent) then if Wait(time1, DrinkDelay) then DrinkBottle;     // пьем бутылки с интервалом в 19 сек
            if (AssistHP > 0) and (AssistHP > AssistHPlevelProcent) then time1:=1;
           end;
   #$11: begin
          InventoryCreate;  // Инвентарь
          HPBottleObjID:= getinv(HPBottleID, 2,1);
          HPBottleCount:= getinv(HPBottleID, 2,3);
         end;
   //#$21: InventoryUpdate;
  end;

 if (ConnectName = AssistantName) and FromServer and CommanderBot then
  case pck[1] of
   #$2F: if CommanderID = ReadD(2) then
         begin
          TargetID:= CommanderID;
          Action; Action;
         end;
   #$33, #$72 : if CommanderID = ReadD(2) then            //Attack:d(AttackerID)d(TargetID)d(Damage)b(Flags)d(X)d(Y)d(Z)h(Hits)
          begin
           TargetID:= ReadD(6);
           Action; Action;
          end;
  end;

 if (ConnectName = CommanderName) and FromClient and (not CommanderBot) then
  case pck[1] of
   #$2F: begin
          TargetID:= CommanderID;
          Action; Action;
         end;
   #$31: begin
          TargetID:= ReadD(2);            //  Action:h(ObjectID)d(OriginX)d(OriginY)d(OriginZ)b(ActionID)
          Action;
         end;
  end;

end.__________________
уже пробовал править ИД пакетов, но чтото не очень получилось.
PanAm,если этот милый человек вновь мне поможет, то буду рад выложить отредоктированный под ХБ скриптик.
Загвозда как всегда, по всему скрипту искал пакеты эти, а в одном месте даже не понял что это за пакет. Отсутствие знания паскаля даёт свои отпечатки.

Добавлено через 2 минуты
Код:
procedure UseItemObjID(ItemObjID:integer);       //Использовать предмет с заданным ItemID
 begin
  buf:=#$14;
вот что это за пакетик???

Последний раз редактировалось lamer, 16.04.2009 в 21:52. Причина: Добавлено сообщение
lamer вне форума   Ответить с цитированием
Старый 16.04.2009, 14:19   #358
Местный
 
Аватар для PanAm
 
Регистрация: 18.01.2008
Сообщений: 286
Сказал Спасибо: 24
Имеет 133 спасибок в 80 сообщенях
PanAm
По умолчанию

buf:=#$14;
.....
SendToServerEx(AssistantName);;
Значит это пакет от клиента, и до Т1 это всегда было
14=UseItem:d(ObjectID)d(d)
Аналог в Т1 это
19=UseItem:d(ObjectID)d(Unknown)
PanAm вне форума   Ответить с цитированием
Старый 16.04.2009, 14:53   #359
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Объясняю как изменять скрипт при переходе на другие хроники. Например с Интерлюдии на Грацию.

Берем packetsT0.ini - здесь описан формат пакетов интерлюдии. Лежит в папке .\SETTINGS пакетхака версий больше 100.
Берем packetsT1.ini - здесь описан формат пакетов грации. Лежит также в папке .\SETTINGS.


Берем скрипт, который хотим изменить, например бот локомотив для Интерлюдии (выдержки)

Смотрим, что в основном теле begin ... end. отлавливается, первое что видим

Код:
 if (ConnectName = NickName) and FromServer then  // разбор пакетов от сервера
   case pck[1] of
    #$01: MoveToLocation01;
смотрим в packetst0.ini пакет с ID=01 от сервера (FromServer) это MoveToLocation
ищем соответствие пакету MoveToLocationв packetst1.ini и находим пакет 2F=MoveToLocation от сервера (FromServer). Меняем ID=01 на ID=2F в скрипте получаем
Код:
 if (ConnectName = NickName) and FromServer then  // разбор пакетов от сервера
   case pck[1] of
    #$2F: MoveToLocation01;
Далее по аналогии...
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился 2 спасибками от:
Старый 16.04.2009, 21:54   #360
Пользователь
 
Регистрация: 11.04.2009
Адрес: lameriy
Сообщений: 34
Сказал Спасибо: 9
Имеет 1 спасибку в 1 сообщении
lamer пока неопределено
По умолчанию

Вот счас поработал над 3мя скриптами, не уверен что всё верно зделал, так как не всегда знаю где пакет от сервера, а где от клиента. Но надеюсь что работать будет. Есчё раз спс за подробное разьяснение для нуба.

Добавлено через 7 часов 0 минут
В посте выше отредоктированный скрипт, но почемуто не работает, видимо здесь нужно есчё поменять формат пакета, но как это определить и поменять незнаю. Если ктонить натолкнёт на правильный путь, буду благодарен.

Последний раз редактировалось lamer, 16.04.2009 в 21:54. Причина: Добавлено сообщение
lamer вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack



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

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


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

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

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