Jump to content

Recommended Posts

Posted

This is very famous script --> http://www.maxcheaters.com/forum/index.php?topic=66099.0 but also and old scipt.

 

With l2phx 3.5 its make error... so if i want to use it i should connect with older version (3.18) and it work fine.

 

can some1 give me link for 3.5 version? or if some1 can remake it for l2phx3.5

 

here is the script

const
 Name='Tiara120'; // character
 ItemID=6593; // item id
 LifeID=8762; // lifestone id
 GemsID=2131; // gemstone id
 GemsAmount=25; //gemstone amount
 max=8000;  // max amount of gemstones
var
LifeBase:array[1..max] of integer;    
ColvoLife,ColvoGems,Life,Item,Gems,SocialID,augid:integer;
procedure Init;
var i:integer;
begin
buf:=hstr('0F');
SendToServerEx(Name);
end;
procedure Free;
var i:integer;
begin
for i:=1 to max do
 LifeBase[i]:=0;
end;
function StrToHex(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('0F 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>'+
  '</body></html>');
//   '<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]=#$1B) then begin
   SocialID:=ReadD(2);
  pck:='';
   case SocialID of
     7: begin
buf:=hstr('A7 2A A0 00 00 80 84 1E 00 0A 00 00 00 00 00 00 00 00 00 00 00');
SendToServerEx(Name);
buf:=hstr('A7 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
   #$1B: CreateItemBase; 
   #$27: UpdateItemBase; 
 end;
end.

Posted

Try it

Program ItemSkill;

 

//uses 'Scripts\PacketsT2.script';


uses 'D:\l2phx.3.5.31.162\Scripts\PacketsT2.script'; //if script situated in athor place , change way

const
    MyName='Vilson';            //<-- char nick
    InventorySize       = 180;  //<-- how long items can be input to the inventory
    InventoryOffset     = 30;   //<--shift of the liast inventory , 
    TimeToSelectItem    = 300;  // нdon't change it
    TimeToWaitAugResult = 1200; //if yours server lagggggggged change it more bigest 

       
var
    BaseItems          : array[1..InventorySize,1..12] of integer;
    TimerItemSelect    : TTimer;
    TimerAugItem       : TTimer;
    ReadAugSkillID     : integer;   
    NeedAugSkillID     : integer = 16283; // which skill we would like , (like) augmentation id, table of the basic lists
    
{     
<augmentation id="16281"> <skillId val="3241"> <skillLevel val="10"> <!-- Passive: Increases your M. Atk. --> 
<augmentation id="16336"> <skillId val="3250"> <skillLevel val="10"> <!-- Passive: Increases the critical attack rate of magic attacks. -->		
<augmentation id="16283"> <skillId val="3240"> <skillLevel val="10"> <!-- Passive: Increases your P. Atk. -->		
<augmentation id="16333"> <skillId val="3249"> <skillLevel val="10"> <!-- Passive: Increases your critical attack rate. -->
<augmentation id="16284"> <skillId val="3244"> <skillLevel val="10"> <!-- Passive: Increases your P. Def. -->
<augmentation id="16282"> <skillId val="3245"> <skillLevel val="10"> <!-- Passive: Increases your M. Def. -->
}        
    AugItemSelectCycle :integer;  
    StartAug           :Boolean;
    TargetItemObjID    :integer; //what we would like to augment
    RefinerItemObjID   :integer; //lifestone
    RefinerItemCount   :integer; //lifestone            
    GemStoneItemObjID  :integer; //gemstone
    GemStoneNeed       :integer;
    GemStoneCount      :integer;                

function SetSkillID :integer;
var
  i:integer;
  TextID:integer;
  MyText:string;  
begin
if (ConnectName=MyName) and (FromClient) then 
begin
    i:=2;
    MyText:=ReadS(i);
    TextID:=ReadD(i);
  if (TextID=3)  then 
  begin     
     SendMsg2( MyName, 'Желаемый AugSkillID: ' + MyText); 
     pck:='';
     try 
      Result:=StrToInt(MyText);
     except
      Result:=0;
     end;               
  end;
end;
end;

procedure ItemList;
var
  i, j, k: integer;
  ListSize: integer;
begin     
  j:=4; //пропускаем дo ListSize
  ListSize:=ReadH(j); 
  for i:=1 to ListSize do
  if (i<=ListSize) then 
  begin
      BaseItems[i,1]:=ReadH(j);  //ItemType1            
      BaseItems[i,2]:=ReadD(j);  //ObjectID      
      BaseItems[i,3]:=ReadD(j);  //ItemID            
      BaseItems[i,4]:=ReadD(j);  //LocationSlot      
      BaseItems[i,5]:=ReadD(j);  //Amount: 
      j:=j+4;                    //Amount:                      
      BaseItems[i,6]:=ReadH(j);  //ItemType2            
      BaseItems[i,7]:=ReadH(j);  //CustomType1      
      BaseItems[i,8]:=ReadH(j);  //isEquipped:             
      BaseItems[i,9]:=ReadD(j);  //BodyPart            
      BaseItems[i,10]:=ReadH(j); //EnchantLevel
      BaseItems[i,11]:=ReadH(j); //CustType2
      BaseItems[i,12]:=ReadD(j); //AugmentationID                  
      inc(j,InventoryOffset);
  end 
  else for k:=1 to 12 do BaseItems[i,k]:=0;
  ReadItems;   
end;

procedure InventoryUpdate; //пакет 21, Создает базу ObjectID по ItemID
var
  i, ii, j, k, ListCount, UpdType : integer;
  ItemType1, ObjectID, ItemID, LocationSlot, Count, ItemType2, CustomType1,
  isEquipped, BodyPart, EnchantLevel, CustType2, AugmentationID :integer;
begin
  ListCount:=ReadH(2); //количество итемов
  j:=4; //смещение для действия с предметом 1-добавлен 2-изменен 3-удален
  for i:=1 to ListCount do
  begin
    UpdType       :=ReadH(j);
    ItemType1     :=ReadH(j);
    ObjectID      :=ReadD(j);
    ItemID        :=ReadD(j);
    LocationSlot  :=ReadD(j);
    Count         :=ReadD(j);
    ItemType2     :=ReadH(j);
    CustomType1   :=ReadH(j);
    isEquipped    :=ReadH(j);
    BodyPart      :=ReadD(j);
    EnchantLevel  :=ReadH(j);
    CustType2     :=ReadH(j);
    AugmentationID:=ReadD(j);
    case UpdType of
//      1: 0;         //добавлен новый предмет, игнорим
      2: //изменен предмет в инвентаре
         for ii:=1 to InventorySize do
         begin
          if (BaseItems[ii,2]=ObjectID) then
           begin
            BaseItems[ii,1]:=ItemType1;
            BaseItems[ii,2]:=ObjectID;
            BaseItems[ii,3]:=ItemID;
            BaseItems[ii,4]:=LocationSlot;
            BaseItems[ii,5]:=Count;
            BaseItems[ii,6]:=ItemType2;
            BaseItems[ii,7]:=CustomType1;
            BaseItems[ii,8]:=isEquipped;
            BaseItems[ii,9]:=BodyPart;
            BaseItems[ii,10]:=EnchantLevel;
            BaseItems[ii,11]:=CustType2;
            BaseItems[ii,12]:=AugmentationID;        
            Break;
           end;
         end;
            
      3: begin         //удален
         for ii:=1 to InventorySize do
          if (BaseItems[ii,2]=ObjectID) then
          begin
            for k:=1 to 12 do BaseItems[ii,k]:=0;
            Break;
          end;
         end;
    end;     
    Inc(j,InventoryOffset);
  end;
  ReadItems;
end;

procedure ReadItems;
begin        
  RefinerItemCount:=GetObjectCount(RefinerItemObjID);
  GemStoneCount:=GetObjectCount(GemStoneItemObjID);
end;

function GetObjectCount(inObjectID :integer) : integer;
var
  i : integer;
begin    
for i:=1 to InventorySize do
if (BaseItems[i,2]=inObjectID) then begin  Result:=BaseItems[i,5]; exit; end;
Result:=-1;  
end;

function GetItemId(inObjectID :integer) : integer;
var
  i  : integer;
begin
for i:=1 to InventorySize do
if (BaseItems[i,2]=inObjectID) then begin  Result:=BaseItems[i,3]; exit; end;
Result:=-1;  
end;

function GetObjectId(inItemID :integer) : integer;
var
  i : integer;
begin    
for i:=1 to InventorySize do
if (BaseItems[i,3]=inItemID) then begin  Result:=BaseItems[i,2]; exit; end;
Result:=-1;  
end;
  
procedure onTimerItemSelect(Sender: TObject);
begin 
  if (GemStoneItemObjID<1) or (RefinerItemCount<1) or (TargetItemObjID<1) then
  begin
    StartAug:=False;
    TimerItemSelect.Enabled:=False;
    TimerAugItem.Enabled:=False;
    SendMsg2 (MyName, 'не установлены параметры или нет предметов! ');    
    Exit;               
  end;      
  if (RefinerItemCount<1) then 
  begin
    StartAug:=False;
    TimerItemSelect.Enabled:=False;
    TimerAugItem.Enabled:=False;
    SendMsg2 (MyName, ' закончились lifestone ');
    Exit;
  end;         
if (GemStoneCount<50) then 
  begin
    StartAug:=False;
    TimerItemSelect.Enabled:=False;
    TimerAugItem.Enabled:=False;
    StartAug:=False;
    SendMsg2 (MyName, ' закончились GemStone ');    
    Exit;               
  end;
    
case AugItemSelectCycle of
1:begin   
    RequestExRqItemLink(MyName, TargetItemObjID);            
    Inc(AugItemSelectCycle);
    Exit;   
  end;
2:begin  
    if (TargetItemObjID>1) then RequestConfirmTargetItem(MyName, TargetItemObjID) 
    else begin StartAug:=False;  TimerItemSelect.Enabled:=False; TimerAugItem.Enabled:=False; Exit; end;   
    Inc(AugItemSelectCycle);
    Exit;    
  end;
3:begin
    if (RefinerItemObjID>1) and (TargetItemObjID>1) then
     RequestConfirmRefinerItem(MyName, TargetItemObjID, RefinerItemObjID) 
    else begin StartAug:=False;  TimerItemSelect.Enabled:=False; TimerAugItem.Enabled:=False; Exit; end;   
    Inc(AugItemSelectCycle);
    Exit;          
   end;
4:begin
    if (RefinerItemObjID>1) and (TargetItemObjID>1) and (GemStoneItemObjID>1) and (GemStoneCount>50)  then
     RequestConfirmGemStone(MyName, TargetItemObjID, RefinerItemObjID, GemStoneItemObjID, GemStoneNeed)
    else begin StartAug:=False;  TimerItemSelect.Enabled:=False; Exit; end;        
    TimerAugItem.Enabled:=True;
    AugItemSelectCycle  := 1;
    TimerItemSelect.Enabled :=False;
    Exit;
   end;   
end;
end;

procedure OnTimerAugItem(Sender: TObject);
begin
  RequestRefine(MyName, TargetItemObjID, RefinerItemObjID, GemStoneItemObjID, GemStoneNeed);  
  TimerAugItem.Enabled:=False;
  TimerItemSelect.Enabled:=True;  
end;

procedure Init;
var
i,k: integer;
begin
   for i:=1 to InventorySize do for k:=1 to 12 do BaseItems[i,k]:=0;
   NeedAugSkillID         :=0; 
   AugItemSelectCycle     :=0;  
   StartAug               :=False;
   TargetItemObjID        :=0;    
   RefinerItemObjID       :=0;
   RefinerItemCount       :=0;            
   GemStoneItemObjID      :=0;
   GemStoneCount          :=0; 
              
   TimerItemSelect:=TTimer.Create(nil);
   TimerItemSelect.OnTimer:=@onTimerItemSelect;
   TimerItemSelect.Enabled:=False;
   TimerItemSelect.Interval:=TimeToSelectItem; 
   
   TimerAugItem:=TTimer.Create(nil);
   TimerAugItem.OnTimer:=@OnTimerAugItem;
   TimerAugItem.Enabled:=False;
   TimerAugItem.Interval:=TimeToWaitAugResult; 
   
   SendMsg2( MyName, '________________________________________' );     
   SendMsg2( MyName, 'В парти чат пишем ID аугментации' );
   SendMsg2( MyName, 'Потом аугментировать вещь один раз' );
   SendMsg2( MyName, 'что бы скрипт распознал предметы ' );            
   SendMsg2( MyName, 'Есть вопросы? "Vilson или *****@ua.fm' );   
   SendMsg2( MyName, '________________________________________' ); 
   SendMsg2( MyName, ' ' );   
   SendMsg2( MyName, 'После распознания предметов: ' );            
   SendMsg2( MyName, '  ТАНЕЦ  сброс парметров' );   
   SendMsg2( MyName, '  СТАРТ  соцдействие  ДА ' );
   SendMsg2( MyName, '  СТОП   соцдействие  НЕТ' );
end;

procedure Free;
begin
  TimerItemSelect.Free;
  TimerAugItem.Free;
end;

procedure myRequestActionUse;
var
i,k: integer;
begin
case ReadD(2) of
  24:begin    // /socialyes 
      RequestItemList(MyName);  
      StartAug:=true;
      AugItemSelectCycle:=1;
      TimerItemSelect.enabled:=true;
      SendMsg2( MyName, ' ПЕРЕБИРАЕМ ВАРИАНТЫ ' );
      pck:='';
      exit;     
     end;
  25:begin    // /socialno
      StartAug:=False;
      TimerItemSelect.Enabled:=False;
      TimerAugItem.Enabled:=False;
      SendMsg2( MyName, '   П А У З А  ' );
      pck:='';
      exit;     
     end; 
  34:begin    // /socialdance
      for i:=1 to InventorySize do for k:=1 to 12 do BaseItems[i,k]:=0;
      NeedAugSkillID         :=0; 
      AugItemSelectCycle     :=0;  
      StartAug               :=False;
      TargetItemObjID        :=0;    
      RefinerItemObjID       :=0;
      RefinerItemCount       :=0;            
      GemStoneItemObjID      :=0;
      GemStoneCount          :=0; 
            
      TimerItemSelect.Enabled:=False;
      TimerAugItem.Enabled:=False;
      SendMsg2( MyName, '   Праметры обнулены  ' );
      pck:='';
      exit;                                
     end;     
end;
end;

begin
if (ConnectName=MyName) and (FromServer) then 
case pck[1] of
#$11:ItemList;    
#$21:InventoryUpdate;
#$FE:if ReadH(2)=108 then //RequestExRqItemLinkReply
     begin
      ReadAugSkillID:=ReadH(34);
      if NeedAugSkillID=ReadAugSkillID then 
      begin       
       TimerItemSelect.Enabled:=False; 
       TimerAugItem.Enabled:=False;
       StartAug:=False;
       SendMsg2(MyName, ' УСПЕШНО ПОЛУЧЕН СКИЛ  : '+IntToStr(NeedAugSkillID));       
       Exit;           
      end;            
      SendMsg2(MyName, 'НУЖЕН : '+IntToStr(NeedAugSkillID)+ ', ПОЛУЧЕНО : '+IntToStr(ReadAugSkillID));
      RequestRefineCancel(MyName, TargetItemObjID);            
      pck:='';
      exit;      
     end;   
end;

if (ConnectName=MyName) and (FromClient) then 
case pck[1] of  
#$49:NeedAugSkillID:=SetSkillID; //Say2
#$56:myRequestActionUse;
#$D0:if  ReadH(2)=65 then //RequestConfirmGemStone 
      begin
       if (TargetItemObjID<1) then TargetItemObjID:=ReadD(4);
       if (RefinerItemObjID<1) then RefinerItemObjID:=ReadD(8); 
       if (GemStoneItemObjID<1) then GemStoneItemObjID:=ReadD(12);
       if (GemStoneCount<1) then GemStoneNeed:=ReadD(16);
       SendMsg2(MyName, ' TargetItemObjID     : '+IntToStr(TargetItemObjID));       
       SendMsg2(MyName, ' NeedAugSkillID     : '+IntToStr(NeedAugSkillID));
       SendMsg2(MyName, ' RefinerItemObjID    : '+IntToStr(RefinerItemObjID));
       SendMsg2(MyName, ' GemStoneItemObjID    : '+IntToStr(GemStoneItemObjID));       
       SendMsg2(MyName, ' GemStoneNeed    : '+IntToStr(GemStoneNeed));                                                
      end;      
end
else exit;

end.

Posted

At least u could hide the script cause it's still hided in the original topic...

Btw on what chronicle u tried it and it gives u error?

well also take in consideration that Anumis made it for IL..

so i'd suggest u the l2phx 3.1.8 version and it should work w/o errors..

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...