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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 12.12.2008, 20:16   #11
Новичок
 
Регистрация: 16.10.2008
Сообщений: 6
Сказал Спасибо: 6
Имеет 0 спасибок в 0 сообщенях
kamil пока неопределено
По умолчанию

ну вот и выяснили) Воспользуйся готовыми функциями для пользования инвентарем... там в коментах все понятно расписано, дкмаю сможешь сделать
http://coderx.ru/showthread.php?t=15
kamil вне форума   Ответить с цитированием
Старый 13.12.2008, 09:59   #12
Пользователь
 
Регистрация: 30.07.2008
Сообщений: 52
Сказал Спасибо: 9
Имеет 2 спасибок в 2 сообщенях
Витя пока неопределено
По умолчанию

Цитата:
Сообщение от Lelee Посмотреть сообщение
ребят подскажите что не так? или я слепая. но при включении скарипта "пнх" выдает ошибку.

Код:
const
Name='lLelee';       // свой ник
var
timer1: TTimer;
count:integer; //- счетчик
procedure Init; //вызывается при включении скрипта
begin
count:=1;
timer1:=TTimer.Create(nil);
timer1.OnTimer:=@OnTimer1; //
timer1.enabled:=false; //
timer1.interval:=1000;
end;

procedure Free; //вызывается при выключении скрипта
begin
timer1.Free;
end;
procedure Say(msg:string);
    begin
      buf:=hstr('4A 00 00 00 00');
      WriteD(2);
      WriteS(Name);
      WriteS(msg);
      SendToClientEx(Name);
    end;

procedure OnTimer1(Sender: TObject);
begin
if count=1 then
  begin
  buf:=hstr('19 2A 42 30 10 00 00 00 00');
  count:=2;
  end
else begin
  buf:=hstr('D0 4F 00 AC F4 30 10');
  count:=1;
  end;
SendToServerEx(Name);
end;
begin
      //****************************************************************************
      //не обрабатываем пустые пакеты
      if pck='' then exit;
      //****************************************************************************
      //чоц дейтсвие "да" для начало спама пакетов
      if FromClient and (ConnectName=Name) and (pck=HStr('34 06 00 00 00')) then begin
        Say('Старт!!!');
        timer1.enabled:=true;
      end;
// соц действие "нет" для  отключения спама
      if FromClient and (ConnectName=Name) and (pck=HStr('34 05 00 00 00')) then begin
        Say('Стопï!!!');
        timer1.enabled:=false;
      end;
end.
то есть после того как выдал ошибку скрипт не отключается, при нажатии на чоц действие "да" он пишит в пм что старт все нормально, а пакеты отпралять не хочет.
у меня получилось посылать пакеты после социального действия, но проблема в том что надо изменить какой то пакет чтобы точка останавливалась, вот сам скрипт если найдете способ остановки заточки поделитесь
Код:
const
      Name='/свое имя/';
var
  timer:TTimer;
procedure Init;
begin
  timer:=TTimer.Create(nil);
  timer.interval:=700;
  timer.OnTimer:=@fireTimer;
  timer.enabled:=false;
end;
procedure Free;
begin
  timer.Free;
end;
procedure fireTimer(Sender: TObject);
begin
  buf:=hstr('/пакет открытия точки/');
  SendToServer;
  buf:=hstr('/пакет вещи в слот/');
  SendToServer;
  buf:=hstr('/пакет завершения точки (для ускорения процеса)/');// необезательно
  SendToServer;
end;
begin
      //****************************************************************************
      //не обрабатываем пустые пакеты
      if pck='' then exit;
      //****************************************************************************
      //социальное действие yes для начало точки
      if FromClient and (ConnectName=Name) and (pck=HStr('5A 06 00 00 00')) then begin


        timer.enabled:=true;
      end;
      //****************************************************************************
      //социальное действие no для начало точки
      if FromClient and (ConnectName=Name) and (pck=HStr('5A 05 00 00 00 ')) then begin

        timer.enabled:=false;
      end;

  if FromServer and (ConnectName=Name) and (pck = HStr('/Сюда пакет с нужной заточкой пухи!(это важно нада пральный пакет)/')) then begin
    timer.enabled:=false;
  end;
end.
Витя вне форума   Ответить с цитированием
Старый 13.12.2008, 13:25   #13
Новичок
 
Регистрация: 10.12.2008
Сообщений: 13
Сказал Спасибо: 1
Имеет 3 спасибок в 3 сообщенях
Lelee пока неопределено
По умолчанию

Витя,
cудя по тем действияс как ты выложил скрипт, не работает остановка (
надо юзать Инвентарь
Lelee вне форума   Ответить с цитированием
Старый 13.12.2008, 19:51   #14
Местный
 
Аватар для PanAm
 
Регистрация: 18.01.2008
Сообщений: 286
Сказал Спасибо: 24
Имеет 133 спасибок в 80 сообщенях
PanAm
По умолчанию

попробуйте в таймере использовать SendToServerExt и отпровлять по 1-2 пакета.
PanAm вне форума   Ответить с цитированием
Старый 13.12.2008, 22:53   #15
Пользователь
 
Регистрация: 30.07.2008
Сообщений: 52
Сказал Спасибо: 9
Имеет 2 спасибок в 2 сообщенях
Витя пока неопределено
По умолчанию

Цитата:
Сообщение от Lelee Посмотреть сообщение
Витя,
cудя по тем действияс как ты выложил скрипт, не работает остановка (
надо юзать Инвентарь
вот тут
Код:
if FromServer and (ConnectName=Name) and (pck = HStr('/Сюда пакет с нужной заточкой пухи!(это важно нада пральный пакет)/')) then begin
    timer.enabled:=false;
надо поставить какойто пакет где показан уровень заточки чтоб скрипт при получении такого пакета останавливал таймер, но пробывал вставить изменены пакет InventoryUpdate но все ровно игнорирует
Витя вне форума   Ответить с цитированием
Старый 13.12.2008, 23:51   #16
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Для РУОФФ попробуйте правленный скрипт из первого сообщения
delphi Код:
const Name='lLelee';       // свой ник MaxEnchLvl=5; var Inventory: array[0..79,0..9] of integer;       timer1: TTimer; count:integer; //- счетчик procedure Init; //вызывается при включении скрипта var   i :integer; begin   count:=1;   timer1:=TTimer.Create(nil);   timer1.OnTimer:=@OnTimer1;   timer1.enabled:=false;   timer1.interval:=1000; end; procedure InventoryCreate; var   i,k: integer; begin   for i:=0 to 79 do     if (i<ReadH(4)) then begin           Inventory[i,1]:=ReadD(i*76+8)// ObjectId           Inventory[i,2]:=ReadD(i*76+12); // ItemID           Inventory[i,3]:=ReadD(i*76+20); // count           Inventory[i,4]:=ReadH(i*76+24); // itemType2           Inventory[i,5]:=ReadH(i*76+26); // CustType1           Inventory[i,6]:=ReadH(i*76+28); // isEquipped           Inventory[i,7]:=ReadD(i*76+30); // BodyPart           Inventory[i,8]:=ReadH(i*76+34); // EnchantLevel           Inventory[i,9]:=ReadH(i*76+36); // CustType2     end else       for k:=0 to 9 do Inventory[i,k]:=0; // забиваем нулями end; procedure InventoryUpdate; var   i,j,k: integer; begin   for j:=0 to (ReadH(2)-1) do begin     case pck[j*78+4] of //1add2mod3remove       #$01: k:=0; // add item, запишет на пустую ячейку       #$02: k:=ReadD(j*78+8); // mod item       #$03: begin // remove item, обнулит ячейки удаленного предмета               k:=ReadD(j*78+8);               for i:=0 to 79 do                 if (Inventory[i,0]=k) then begin                   for k:=0 to 9 do Inventory[i,k]:=0;                   exit;                 end;             end;       end;       for i:=0 to 79 do         if (Inventory[i,1]=k) then begin           Inventory[i,0]:=ReadH(j*78+6)// itemType1           Inventory[i,1]:=ReadD(j*78+8)// ObjectId           Inventory[i,2]:=ReadD(j*78+12); // ItemID           Inventory[i,3]:=ReadD(j*78+20); // count           Inventory[i,4]:=ReadH(j*78+24); // itemType2           Inventory[i,5]:=ReadH(j*78+26); // CustType1           Inventory[i,6]:=ReadH(j*78+28); // isEquipped           Inventory[i,7]:=ReadD(j*78+30); // BodyPart           Inventory[i,8]:=ReadH(j*78+34); // EnchantLevel           Inventory[i,9]:=ReadH(j*78+36); // CustType2           break;         end;       end; 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 79 do     if (Inventory[i,up]=obj) then begin       Result:=Inventory[i,down];     end;   Result:=-1; end; procedure Free; //вызывается при выключении скрипта begin   timer1.Free; end; procedure Say(msg:string); begin    buf:=hstr('4A 00 00 00 00');    WriteD(2);    WriteS(Name);    WriteS(msg);    SendToClientEx(Name); end; procedure OnTimer1(Sender: TObject); begin   if count=1 then   begin     buf:=hstr('19 2A 42 30 10 00 00 00 00');     count:=2;   end else begin     buf:=hstr('D0 4F 00 AC F4 30 10');     count:=1;   end;   SendToServerEx(Name); end; begin   //****************************************************************************   //не обрабатываем пустые пакеты   if pck='' then exit;   //****************************************************************************   if FromServer then case pck[1] of     #$11: InventoryCreate;     #$21: InventoryUpdate;   end;     // 0-itemType1, 1-ObjectId, 2-ItemID, 3-count, 4-itemType2, 5-CustType1, 6-isEquipped, 7-BodyPart, 8-EnchantLevel, 9-CustType2   if GetInv(271643820,1,8)=MaxEnchLvl    then  // использовала object id   begin     Say('Заточилось!!!');         timer1.enabled:=false;   end;   //****************************************************************************   //чоц дейтсвие "да" для начало спама пакетов   if FromClient and (ConnectName=Name) and (pck=HStr('34 06 00 00 00')) then begin         Say('Старт!!!');         timer1.enabled:=true;       end; // соц действие "нет" для  отключения спама       if FromClient and (ConnectName=Name) and (pck=HStr('34 05 00 00 00')) then begin         Say('Стоп!!!');         timer1.enabled:=false;       end; end.

В packetst1.ini замените 11 и 21 пакет от сервера на вот эти:
Код:
11=ItemList:h(ShowWindow)h(ListSize:Loop.01.0022)h(ItemType1)d(ObjectID)d(ItemID:Get.Func01)d(LocationSlot)d(Count)h(ItemType2)h(CustomType1)h(isEquipped)d(BodyPart)h(EnchantLevel)h(CustType2)d(AugmentationID)d(Mana)d(AttackAttrElement)d(AttackAttrElementVal)d(DefAttrFire)d(DefAttrWater)d(DefAttrWind)d(DefAttrEarth)d(DefAttrHoly)d(DefAttrUnholy)d(?)
Код:
21=InventoryUpdate:h(Count:Loop.1.0023)h(1add2mod3remove)h(ItemType1)d(ObjectID)d(ItemID:Get.Func01)d(Location)d(Count)h(ItemType2)h(CustomType1)h(isEquipped)d(BodyPart)h(EnchantLevel)h(CustType2)d(AugmentationBonus)d(Mana)d(AttackAttrElement)d(AttackAttrElementVal)d(DefAttrFire)d(DefAttrWater)d(DefAttrWind)d(DefAttrEarth)d(DefAttrHoly)d(DefAttrUnholy)d(?)
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
Старый 15.12.2008, 22:31   #17
Пользователь
 
Регистрация: 30.07.2008
Сообщений: 52
Сказал Спасибо: 9
Имеет 2 спасибок в 2 сообщенях
Витя пока неопределено
По умолчанию

почемуто он не останавливаеться
Витя вне форума   Ответить с цитированием
Старый 15.12.2008, 23:00   #18
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Цитата:
Сообщение от Витя Посмотреть сообщение
почемуто он не останавливаеться
Потому, что не правильные данные используете или условия для остановки.

PS:
1. Проверяйте данные с помощью сообщений в чат и смотрите какими данными скрипт оперирует.
2. правьте скрипт и снова смотрите п.1.
3. и всё это до тех пор, пока не заработает правильно.
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
Старый 16.12.2008, 04:02   #19
Новичок
 
Регистрация: 10.12.2008
Сообщений: 13
Сказал Спасибо: 1
Имеет 3 спасибок в 3 сообщенях
Lelee пока неопределено
По умолчанию

NLObP,
дкло в том что в системнон чате не пишится уровень заточки после точения, там пшится лишь "выберети предмет для заточки"
поэтому думаю с систмным чатом пролетаем, я уже думала про это (
Lelee вне форума   Ответить с цитированием
Старый 16.12.2008, 04:46   #20
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

В чате будет писаться то, что ты пожелаешь.
Писать типа такого в чат
Код:
Say('i='+inttostr(i)+' ItemBase[1,i]='+IntToStr(ItemBase[1,i])+' ItemBase[2,i]='+IntToStr(ItemBase[2,i])+' ItemBase[3,i]='+IntToStr(ItemBase[3,i]));
или в лог пакетхака с помощью
Код:
sendMSG('i='+inttostr(i));
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни



Последний раз редактировалось NLObP, 16.12.2008 в 04:48.
NLObP вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack



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

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


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

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

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