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

Жесткий скриптинг Раздел для обсуждения готовых и тестируемых скриптов
Внимание! В разделе введена жесткая модерация, темы и сообщения публикуются только после проверки модераторами

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 20.08.2008, 18:15   #1
Местный
 
Аватар для Breadfan
 
Регистрация: 29.04.2008
Сообщений: 830
Сказал Спасибо: 80
Имеет 230 спасибок в 169 сообщенях
Breadfan пока неопределено
По умолчанию

Цитата:
пытался зделать под камаэль не получилось где ощибки в изминений пакетов ?
Изменяй не только ID пакетов, но и не забывайте о необходимой модификации процедур UpdateItemBase; CreateItemBase. Кстати там у тебя неверный ID, должно быть
delphi Код:
if FromServer then   case pck[1] of     #$11: CreateItemBase;     #$21: UpdateItemBase;   end;

Последний раз редактировалось NLObP, 20.08.2008 в 20:54.
Breadfan вне форума   Ответить с цитированием
Старый 23.09.2008, 11:13   #2
Новичок
 
Регистрация: 22.11.2007
Сообщений: 17
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
Rubec
По умолчанию

Извеняюсь, это что типа СА можно без мамона вставлять ?
Rubec вне форума   Ответить с цитированием
Старый 23.09.2008, 13:22   #3
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию

Это не са, это типа добака к са.
QaK вне форума   Ответить с цитированием
Старый 21.10.2008, 14:15   #4
Новичок
 
Регистрация: 16.10.2008
Сообщений: 5
Сказал Спасибо: 5
Имеет 0 спасибок в 0 сообщенях
®ennie™ пока неопределено
По умолчанию

тестил скрипт на Interlude
ЛС вставляется но после вставки толи информация об инвентае толи хз что не обновляется и ЛС по следующему нажатию "Да" не вытаскивается. Скрипт пытается повторно вставить ЛС в аргументированную пуху. Это исправляется если после аргументации пуху положить и вытащить из вх. Я в скриптах не шарю, ктонить может вставить процедуру в скрипт с этим действием после вставки/удаления ЛС? Буду очень благодарен
®ennie™ вне форума   Ответить с цитированием
Старый 21.10.2008, 15:55   #5
Новичок
 
Регистрация: 19.08.2008
Сообщений: 2
Сказал Спасибо: 0
Имеет 1 спасибку в 1 сообщении
chillabizz пока неопределено
По умолчанию

после первого раза снова одень пуху и жми да
chillabizz вне форума   Ответить с цитированием
За это сообщение chillabizz нажился спасибкой от:
Старый 05.11.2008, 14:43   #6
Пользователь
 
Регистрация: 30.07.2008
Сообщений: 52
Сказал Спасибо: 9
Имеет 2 спасибок в 2 сообщенях
Витя пока неопределено
По умолчанию

поменял все пакеты, открываю онвентарь появляеться окошко нажимаю "Соц. Да" ничего не происходит, в чем ошибка?
Код:
const
  Name='manny'; // ник
  ItemID=6608; // пуха
  LifeID=8762; // лайфстон
  GemsID=2131; // гемстон
  GemsAmount=25; //кол-во гемов
  max=100;  // инвентарь
var
 LifeBase:array[1..max] of integer;    
 ColvoLife,ColvoGems,Life,Item,Gems,SocialID,augid:integer;
procedure Init;
var i:integer;
begin
 buf:=hstr('19');
 SendToServerEx(Name);
end;
procedure Free;
var i:integer;
begin
 for i:=1 to max do
  LifeBase[i]:=0;
end;
function StrToHex2(packet: string):string;
var
  i:integer;
  tmp:byte;
  function ByteToHex(b: byte): Char;
  begin
    if b<10 then result:=chr(b+$30)
      else result:=chr(b+$37);
  end;
begin
  result:='';
  for i:=1 to length(packet) do begin
    tmp:=ord(packet[i]) div 16;
    result:=result+ByteToHex(tmp);
    tmp:=ord(packet[i]) - tmp*16;
    result:=result+ByteToHex(tmp)+' ';
  end;
end;
function inttohex(n:integer):string;
var i:integer;
    t:string;
    a:array[0..15] of char;
begin
 a[0]:='0';
 a[1]:='1';
 a[2]:='2';
 a[3]:='3';
 a[4]:='4';
 a[5]:='5';
 a[6]:='6';
 a[7]:='7';
 a[8]:='8';
 a[9]:='9';
 a[10]:='A';
 a[11]:='B';
 a[12]:='C';
 a[13]:='D';
 a[14]:='E';
 a[15]:='F';
 result:='';
 t:='';
 i:=0;
 while n<>0 do begin
  if (i mod 2=0)and(i>0) then begin
   result:=result+t+' ';
   t:='';
  end;
  t:=a[n mod 16]+t;
  n:=n div 16;
  inc(i);
 end;
 result:=result+t;
end;
procedure Say;
var i:integer;
    s:string;
begin
  s:='<tr><td>LS='+inttostr(ColvoLife)+' (*'+inttostr(GemsAmount)+'='+inttostr(ColvoLife*GemsAmount)+')</td></tr>';
  s:=s+'<tr><td>Gems='+inttostr(ColvoGems)+' (/'+inttostr(GemsAmount)+'='+inttostr(ColvoGems div GemsAmount)+')</td></tr>';
  s:=s+'<tr><td>---</td></tr>';
  if Item=0 then
   s:=s+'<tr><td>No Weapon</td></tr>'
  else if augid>0 then
   s:=s+'<tr><td>Augmented ('+inttohex(augid)+')</td></tr>'
  else
   s:=s+'<tr><td>Not augmented</td></tr>';
  buf:=hstr('19 01 00 00 00');
  WriteS('<html><body><br><table width=100%>'+s+'</table><br><br><br><br><br><br>'+
   '"Social Yes" - Cancel Augment(if augmented) and Augment(if you have enough gems and LSs)<br>'+
   '"Social No" - Show this help<br><br>'+
   'Sometimes client dont get packet InventoryUpdate and you see "Not augment" when weapon is augmented.'+
   ' Simply press [Tab] twice or wear weapon.<br><br>'+
   '(c) raid aka Mamy</body></html>');
//   '(c) raid aka Mamy<br>'+strtohex(pck)+'</body></html>');
  WriteD(0);
  SendToClientEx(Name);
end;
procedure CreateItemBase; 
var i,ss,j,ObjID,ItmID,ListCount,count,aug:integer;
begin
  Item:=0;
  ss:=1;
  j:=4; 
  ListCount:=ReadH(j); 
  if ListCount>max then ListCount:=max;
  j:=8; 
  for i:=1 to ListCount do begin
     ObjID:=ReadD(j);    
     ItmID:=ReadD(j);    
     Count:=ReadD(j);
     j:=j+14;
     aug:=ReadD(j);
     case ItmID of
        LifeID: begin
            LifeBase[ss]:=ObjID;
            inc(ss);
        end;
        ItemID: begin
            Item:=ObjID;
            augid:=aug;
        end;
        GemsID: begin
            Gems:=ObjID;
            ColvoGems:=Count;
        end;
     end;
    j:=j+6;
  end;
  ColvoLife:=ss-1;
  Say;
end;
procedure UpdateItemBase; 
var i,ii,j,ObjID,ItmID,ListCount,Count,UpdType,aug: integer;
begin
  ListCount:=ReadH(2);
  j:=4;
  for i:=1 to ListCount do begin
    UpdType:=ReadH(j);
    j:=j+2;
    ObjID:=ReadD(j);
    ItmID:=ReadD(j);
    Count:=ReadD(j);
    j:=j+14;
    aug:=ReadD(j);
    case UpdType of
      1:case ItmID of
          ItemID: begin
            Item:=ObjID;
            augid:=aug;
          end;
          LifeID: begin
            for ii:=1 to max do
             if LifeBase[ii]=0 then begin
              LifeBase[ii]:=ObjID;
              ColvoLife:=ColvoLife+1;
              break;
             end;
          end;
        GemsID: begin
            Gems:=ObjID;
            ColvoGems:=Count;
        end;
      end;
      2:case ItmID of
        ItemID: begin
          Item:=ObjID;
          augid:=aug;
        end;
        GemsID: begin
            Gems:=ObjID;
            ColvoGems:=Count;
        end;
      end;
      3:case ItmID of
        ItemID:
          Item:=0;
        GemsID: begin
            Gems:=ObjID;
            ColvoGems:=Count;
        end;
        LifeID: begin
          for ii:=1 to max do
            if LifeBase[ii]=ObjID then begin
             LifeBase[ii]:=0;
             ColvoLife:=ColvoLife-1;
            end;
        end;
      end;
    end;
    j:=j+6;
  end;
 Say;
end;
function GetNextLife: integer;
var i:integer;
begin
  Result:=-1;
  for i:=1 to max do begin
    if (LifeBase[i]<>0) then begin
      Result:=LifeBase[i];
      exit;
    end;
  end;
end;
procedure Augment;
begin
 buf:=hstr('D0 29 00');
 WriteD(Item);
 SendToServerEx(Name);
 delay(100);
 buf:=hstr('D0 2A 00');
 WriteD(Item);
 WriteD(Life);
 SendToServerEx(Name);
 delay(100);
 buf:=hstr('D0 2B 00');
 WriteD(Item);
 WriteD(Life);
 WriteD(Gems);
 WriteD(GemsAmount);
 SendToServerEx(Name);
 delay(100);
 buf:=hstr('D0 2C 00');
 WriteD(Item);
 WriteD(Life);
 WriteD(Gems);
 WriteD(GemsAmount);
 SendToServerEx(Name);
end;
procedure DisAugment;
begin
 buf:=hstr('D0 2D 00');
 WriteD(Item);
 SendToServerEx(Name);
 buf:=hstr('D0 2E 00');
 WriteD(Item);
 SendToServerEx(Name);
end;
begin
  if pck='' then exit;
  if FromClient and (ConnectName=Name) and (pck[1]=#$11) then begin
    SocialID:=ReadD(2);
   pck:='';
    case SocialID of
      7: begin
 buf:=hstr('B0 2A A0 00 00 80 84 1E 00 0A 00 00 00 00 00 00 00 00 00 00 00');
 SendToServerEx(Name);
 buf:=hstr('B0 29 A0 00 00 40 0D 03 00 FA 00 00 00 00 00 00 00 00 00 00');
 SendToServerEx(Name);

        exit;
       end;
      6: begin
       if augid>0 then begin
        DisAugment;
        delay(300);
       end;
       Life:=GetNextLife;
       if (Life=-1)or(ColvoGems<GemsAmount)or(ColvoLife<1) then
        exit;
       Augment;
       exit;
      end;
      5: begin
       Say;
       exit;
      end;
    end;
  end;
  if FromServer then
  case pck[1] of
    #$11: CreateItemBase;
    #$21: UpdateItemBase; 
  end;
end.

Последний раз редактировалось Витя, 08.11.2008 в 11:15.
Витя вне форума   Ответить с цитированием
Старый 07.02.2010, 18:53   #7
Новичок
 
Регистрация: 07.02.2010
Сообщений: 9
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
dAsk пока неопределено
По умолчанию

В чем ошибка? Вот скрин: ИД предметов вводил опираясь на ItemsID.ini

Последний раз редактировалось NLObP, 07.02.2010 в 23:50.
dAsk вне форума   Ответить с цитированием
Старый 05.11.2008, 16:38   #8
Новичок
 
Регистрация: 19.08.2008
Сообщений: 2
Сказал Спасибо: 0
Имеет 1 спасибку в 1 сообщении
chillabizz пока неопределено
По умолчанию

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

Цитата:
Сообщение от chillabizz Посмотреть сообщение
запусти скрипт на заточку там айдишники все глянь
скорее всего айдишник лайфстоуна неправельный
ID Все правильные проверял с помощью скрипта на заточку при выборе предмета показывается его ID
Витя вне форума   Ответить с цитированием
Старый 10.11.2008, 00:26   #10
Пользователь
 
Регистрация: 30.07.2008
Сообщений: 52
Сказал Спасибо: 9
Имеет 2 спасибок в 2 сообщенях
Витя пока неопределено
По умолчанию

изменил пакет на аглуминтирование и снятия аглуминтации, изменил обновление базы итемов все равно не получаеться не могу понять че за пакет #B0 вот кусок из скрипта
Код:
begin
  if pck='' then exit;
  if FromClient and (ConnectName=Name) and (pck[1]=#$11) then begin
    SocialID:=ReadD(2);
   pck:='';
    case SocialID of
      7: begin
 buf:=hstr('B0 2A A0 00 00 80 84 1E 00 0A 00 00 00 00 00 00 00 00 00 00 00');
 SendToServerEx(Name);
 buf:=hstr('B0 29 A0 00 00 40 0D 03 00 FA 00 00 00 00 00 00 00 00 00 00');
 SendToServerEx(Name);

        exit;
       end;
и сам скритп
Код:
const
  Name='manny'; // ник
  ItemID=6608; // пуха
  LifeID=8752; // лайфстон
  GemsID=2131; // гемстон
  GemsAmount=25; //кол-во гемов
  max=100;  // инвентарь
var
 LifeBase:array[1..max] of integer;    
 ColvoLife,ColvoGems,Life,Item,Gems,SocialID,augid:integer;
procedure Init;
var i:integer;
begin
 buf:=hstr('19');
 SendToServerEx(Name);
end;
procedure Free;
var i:integer;
begin
 for i:=1 to max do
  LifeBase[i]:=0;
end;
function StrToHex2(packet: string):string;
var
  i:integer;
  tmp:byte;
  function ByteToHex(b: byte): Char;
  begin
    if b<10 then result:=chr(b+$30)
      else result:=chr(b+$37);
  end;
begin
  result:='';
  for i:=1 to length(packet) do begin
    tmp:=ord(packet[i]) div 16;
    result:=result+ByteToHex(tmp);
    tmp:=ord(packet[i]) - tmp*16;
    result:=result+ByteToHex(tmp)+' ';
  end;
end;
function inttohex(n:integer):string;
var i:integer;
    t:string;
    a:array[0..15] of char;
begin
 a[0]:='0';
 a[1]:='1';
 a[2]:='2';
 a[3]:='3';
 a[4]:='4';
 a[5]:='5';
 a[6]:='6';
 a[7]:='7';
 a[8]:='8';
 a[9]:='9';
 a[10]:='A';
 a[11]:='B';
 a[12]:='C';
 a[13]:='D';
 a[14]:='E';
 a[15]:='F';
 result:='';
 t:='';
 i:=0;
 while n<>0 do begin
  if (i mod 2=0)and(i>0) then begin
   result:=result+t+' ';
   t:='';
  end;
  t:=a[n mod 16]+t;
  n:=n div 16;
  inc(i);
 end;
 result:=result+t;
end;
procedure Say;
var i:integer;
    s:string;
begin
  s:='<tr><td>LS='+inttostr(ColvoLife)+' (*'+inttostr(GemsAmount)+'='+inttostr(ColvoLife*GemsAmount)+')</td></tr>';
  s:=s+'<tr><td>Gems='+inttostr(ColvoGems)+' (/'+inttostr(GemsAmount)+'='+inttostr(ColvoGems div GemsAmount)+')</td></tr>';
  s:=s+'<tr><td>---</td></tr>';
  if Item=0 then
   s:=s+'<tr><td>No Weapon</td></tr>'
  else if augid>0 then
   s:=s+'<tr><td>Augmented ('+inttohex(augid)+')</td></tr>'
  else
   s:=s+'<tr><td>Not augmented</td></tr>';
  buf:=hstr('19 01 00 00 00');
  WriteS('<html><body><br><table width=100%>'+s+'</table><br><br><br><br><br><br>'+
   '"Social Yes" - Cancel Augment(if augmented) and Augment(if you have enough gems and LSs)<br>'+
   '"Social No" - Show this help<br><br>'+
   'Sometimes client dont get packet InventoryUpdate and you see "Not augment" when weapon is augmented.'+
   ' Simply press [Tab] twice or wear weapon.<br><br>'+
   '(c) raid aka Mamy</body></html>');
//   '(c) raid aka Mamy<br>'+strtohex(pck)+'</body></html>');
  WriteD(0);
  SendToClientEx(Name);
end;
procedure CreateItemBase;
var i,ss,j,ObjID,ItmID,ListCount,count,aug:integer;
begin
  Item:=0;
  ss:=1;
  j:=4; 
  ListCount:=ReadH(j);//количество итемов не должно превышать max!
  if ListCount>max then ListCount:=max;
  j:=8; 
  for i:=1 to ListCount do begin
     ObjID:=ReadD(j);    
     ItmID:=ReadD(j);
     j:=j+4;
     Count:=ReadD(j);
     j:=j+14;
     aug:=ReadD(j);
     case ItmID of
        LifeID: begin
            LifeBase[ss]:=ObjID;
            inc(ss);
        end;
        ItemID: begin
            Item:=ObjID;
            augid:=aug;
        end;
        GemsID: begin
            Gems:=ObjID;
            ColvoGems:=Count;
        end;
     end;
     j:=j+44   //Gracia
//    j:=j+2; //для С4
//    j:=j+10; //для Интерлюдии
  end;
  ColvoLife:=ss-1;
  Say;
end;
procedure UpdateItemBase; 
var i,ii,j,ObjID,ItmID,ListCount,Count,UpdType,aug: integer;
begin
  ListCount:=ReadH(2);
  j:=4;
  for i:=1 to ListCount do begin
    UpdType:=ReadH(j);
    j:=j+2;
    ObjID:=ReadD(j);
    ItmID:=ReadD(j);
    j:=j+4;
    Count:=ReadD(j);
    j:=j+14;
    aug:=ReadD(j);
    case UpdType of
      1:case ItmID of
          ItemID: begin
            Item:=ObjID;
            augid:=aug;
          end;
          LifeID: begin
            for ii:=1 to max do
             if LifeBase[ii]=0 then begin
              LifeBase[ii]:=ObjID;
              ColvoLife:=ColvoLife+1;
              break;
             end;
          end;
        GemsID: begin
            Gems:=ObjID;
            ColvoGems:=Count;
        end;
      end;
      2:case ItmID of
        ItemID: begin
          Item:=ObjID;
          augid:=aug;
        end;
        GemsID: begin
            Gems:=ObjID;
            ColvoGems:=Count;
        end;
      end;
      3:case ItmID of
        ItemID:
          Item:=0;
        GemsID: begin
            Gems:=ObjID;
            ColvoGems:=Count;
        end;
        LifeID: begin
          for ii:=1 to max do
            if LifeBase[ii]=ObjID then begin
             LifeBase[ii]:=0;
             ColvoLife:=ColvoLife-1;
            end;
        end;
      end;
    end;
    j:=j+44;
  end;
 Say;
end;
function GetNextLife: integer;
var i:integer;
begin
  Result:=-1;
  for i:=1 to max do begin
    if (LifeBase[i]<>0) then begin
      Result:=LifeBase[i];
      exit;
    end;
  end;
end;
procedure Augment;
begin
 buf:=hstr('D0 26 00');
 WriteD(Item);
 SendToServerEx(Name);
 delay(100);
 buf:=hstr('D0 27 00');
 WriteD(Item);
 WriteD(Life);
 SendToServerEx(Name);
 delay(100);
 buf:=hstr('D0 28 00');
 WriteD(Item);
 WriteD(Life);
 WriteD(Gems);
 WriteD(GemsAmount);
 SendToServerEx(Name);
 delay(100);
 buf:=hstr('D0 44 00');
 WriteD(Item);
 WriteD(Life);
 WriteD(Gems);
 WriteD(GemsAmount);
 SendToServerEx(Name);
end;
procedure DisAugment;
begin
 buf:=hstr('D0 45 00');
 WriteD(Item);
 SendToServerEx(Name);
 buf:=hstr('D0 46 00');
 WriteD(Item);
 SendToServerEx(Name);
end;
begin
  if pck='' then exit;
  if FromClient and (ConnectName=Name) and (pck[1]=#$11) then begin
    SocialID:=ReadD(2);
   pck:='';
    case SocialID of
      7: begin
 buf:=hstr('B0 2A A0 00 00 80 84 1E 00 0A 00 00 00 00 00 00 00 00 00 00 00');
 SendToServerEx(Name);
 buf:=hstr('B0 29 A0 00 00 40 0D 03 00 FA 00 00 00 00 00 00 00 00 00 00');
 SendToServerEx(Name);

        exit;
       end;
      6: begin
       if augid>0 then begin
        DisAugment;
        delay(300);
       end;
       Life:=GetNextLife;
       if (Life=-1)or(ColvoGems<GemsAmount)or(ColvoLife<1) then
        exit;
       Augment;
       exit;
      end;
      5: begin
       Say;
       exit;
      end;
    end;
  end;
  //ItemList
      if FromServer and (ConnectName=Name) and (pck[1]=#$11) then CreateItemBase; //создание базы предметов
    //  if (ColvoWpn=0) or (ColvoScrl=0) then exit; //если нет базы итемов, скрипт дальше не пустит
      //****************************************************************************
      //если удалились предметы, стираем в базе предметов пары ObjectID - ItemID
      if FromServer and (ConnectName=Name) and (pck[1]=#$21) then UpdateItemBase; //Обновление базы, если принят пакет на удаление предмета
    end.
Витя вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Жесткий скриптинг



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

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


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

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

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