Jump to content

renatoak

Members
  • Posts

    4
  • Credits

  • Joined

  • Last visited

  • Feedback

    0%

Everything 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...