в принципе, можно в процедуре createskillbase отсеить пассивы.
Примерно так
нет возможности проверить работоспособность процедуры, может что намудрил со смещениями
delphi Код:
procedure createskillbase;
var
i, j,SkillCount: integer;
begin
for i:=1 to 200 do begin
skillbase[i,1]:=0;
skillbase[i,2]:=0;
end;
J:=2;
listbox1.items.Clear;
SkillCount := ReadD(J);
for i:=1 to SkillCount do
if ReadD(j)=0 then begin
skillbase[i,1]:=ReadD(j);
skillbase[i,2]:=ReadD(j);
inc(j);
listbox1.items.Add('ID:'+inttostr(skillbase[i,2])+' '+SkillsName.Values[IntToStr(skillbase[i,2])]+' LVL:'+inttostr(skillbase[i,1]));
end else
J := J+9;
if SkillCount>0 then skillhave:=true;
end;