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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 22.03.2009, 23:15   #1
Новичок
 
Аватар для Limpid
 
Регистрация: 08.08.2008
Сообщений: 6
Сказал Спасибо: 6
Имеет 0 спасибок в 0 сообщенях
Limpid пока неопределено
По умолчанию

Люди подскажите с чего надо начать что бы писать скрипты?
И если можно полезные ссылки.
Limpid вне форума   Ответить с цитированием
Старый 23.03.2009, 02:16   #2
Новичок
 
Регистрация: 15.03.2009
Сообщений: 26
Сказал Спасибо: 0
Имеет 11 спасибок в 7 сообщенях
Sieg пока неопределено
По умолчанию

2Limpid
1. Turbo Pascal 7.0
2. http://coderx.ru/showthread.php?t=10
3. http://forum.coderx.ru/uploads/fs.rtf
Sieg вне форума   Ответить с цитированием
За это сообщение Sieg нажился спасибкой от:
Старый 06.04.2009, 13:10   #3
Новичок
 
Регистрация: 08.03.2009
Сообщений: 6
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
Timekiller пока неопределено
По умолчанию

Подскажите как сделать скрипт на продажу, у меня есть пакет, в нем есть впринципе все что нужно, но предмет не стопковый (лайф стоун) и objectID при каждой новой продаже меняется... нужно чтоб скрипт продавал предметы одного ID пока они не кончатся.
Timekiller вне форума   Ответить с цитированием
Старый 10.04.2009, 13:34   #4
Новичок
 
Регистрация: 13.03.2009
Сообщений: 25
Сказал Спасибо: 4
Имеет 0 спасибок в 0 сообщенях
ake1a пока неопределено
По умолчанию

Ребят помогите пожалуста...Недавно начал вести работу с ПХ ....
У меня есть пакет (NpcHtmlMessage), Сам код ХТМЛ
Цитата:
<tr><td><button value="A Weapons" action="bypass -h npc_268476135_Buy 350010" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><td><button value="A Armors" action="bypass -h npc_268476135_Buy 350011" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td><td><button value="Jewels" action="bypass -h npc_268476135_Buy 350012" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td></tr>
У меня вопрос.... что надо сделать чтобы ПХ автоматически нажимала на ету опцию в ГМшопе, выбирала пуху и покупала ее?
____________________
Help ....
ake1a вне форума   Ответить с цитированием
Старый 10.04.2009, 15:03   #5
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

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

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


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

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

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

Можно посмотреть мой скрипт для исполнения скриптов валкера.
ЗЫЖ Правда он не может в ГМ-шопе покупать.
Пасибка NLObP пойду изучать Паскаль )))
Ы.З. а Паскаль сложная штука? )))))
ake1a вне форума   Ответить с цитированием
Старый 12.04.2009, 14:30   #7
Новичок
 
Регистрация: 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   #8
Местный
 
Аватар для 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   #9
Новичок
 
Регистрация: 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   #10
Пользователь
 
Регистрация: 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 вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack



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

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


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

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

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