rendered paste bodyunit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
lbl1: TLabel;
lbl2: TLabel;
lbl3: TLabel;
lbl4: TLabel;
btn1: TButton;
lbl5: TLabel;
lbl6: TLabel;
lbl7: TLabel;
lbl8: TLabel;
lbl9: TLabel;
lbl10: TLabel;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
dat_id: integer;
item_count, creature_count, effect_count, distance_count: SmallInt;
implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
var
tibia_dat: File;
parsed_file: TextFile;
i,j : Integer;
min_id, max_id: integer;
temp_width, temp_height, temp_xdiv, temp_ydiv, temp_zdiv, anim_len, frames: Byte;
temp_byte: Byte;
num_sprites: Cardinal;
opt_byte: Byte;
spr_id: SmallInt;
begin
AssignFile(tibia_dat, 'tibia.dat');
AssignFile(parsed_file, 'parsed.txt');
Rewrite(parsed_file);
Reset(tibia_dat,1);
BlockRead(tibia_dat, dat_id, 4);
lbl5.Caption := IntToStr(dat_id);
BlockRead(tibia_dat, item_count, 2);
lbl7.Caption := IntToStr(item_count);
BlockRead(tibia_Dat, creature_count, 2);
lbl8.Caption := IntToStr(creature_count);
BlockRead(tibia_dat, effect_count, 2);
lbl9.Caption := IntToStr(effect_count);
BlockRead(tibia_dat, distance_count, 2);
lbl10.Caption := IntToStr(distance_count);
min_id := 100;
max_id := item_count + creature_count;
for i:=min_id to max_id-1 do
begin
opt_byte := $AA;
while(opt_byte <> $FF) do
begin
BlockRead(tibia_dat, opt_byte, 1);
end;
BlockRead(tibia_dat, temp_width, 1);
BlockRead(tibia_dat, temp_height, 1);
if(temp_width > 1) or (temp_height > 1) then BlockRead(tibia_dat, temp_byte, 1);
BlockRead(tibia_dat, frames, 1);
BlockRead(tibia_dat, temp_xdiv, 1);
BlockRead(tibia_dat, temp_ydiv, 1);
BlockRead(tibia_dat, temp_zdiv, 1);
BlockRead(tibia_dat, anim_len, 1);
num_sprites := temp_width * temp_height * frames * anim_len * temp_xdiv * temp_ydiv * temp_zdiv;
for j:=0 to num_sprites-1 do
begin
BlockRead(tibia_dat, spr_id, 2);
Writeln(parsed_file, 'GAME_ID: ' + IntToStr(i) + ' AND SPR_ID: ' + IntToStr(spr_id));
end;
end;
CloseFile(tibia_dat);
CloseFile(parsed_file);
end;
end.