Jump to content

renatoak

Members
  • Posts

    4
  • Credits

  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by renatoak

  1. Hello. I used this script bellow, on 3.5.34.176 l2ph version and get a syntax error, where ''function StrToHex(packet: string):string;'' set -> Identifier redeclared. Can someone help me to fix it?

     

    const

      Name='Sagitarius'; // character

      ItemID=6595; // 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:=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) div 16;

        result:=result+ByteToHex(tmp);

        tmp:=ord(packet) - 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<>0) then begin

          Result:=LifeBase;

          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.

     

×
×
  • 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