Jump to content

Recommended Posts

Posted

Activate the script, the client should appear in the chat window.

"Sots. Yes" - and the withdrawal of augmenta augmentirovanie.

In the inventory should be only one down with the ID.

 

const
 Name='Mamy'; // Nick
 ItemID=6608; // Weapon
 LifeID=8762; // Life Stone
 GemsID=2131; // Gems
 GemsAmount=25; // Gems Count
 max=100;  // Inventory
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>'+
  '(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]=#$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.

Guest
This topic is now closed to further replies.


×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock