SCAR Code:
Program ID_Grabber;
Const
Lossage=100;
Type
Item=Record
Name: String;
SMiPrice,SMaPrice,SAlchGp: String;
IMiPrice,IMaPrice,IAlchGp: Integer;
IBuyPrice:Integer;
End;
var
Items:Array of Item;
Z,I,NumberOfItems,Tmpint1,TmpInt2:integer;
ThePage:String;
MinP,MarkP,MaxP,AlchPrice,TestBuyPrice:Integer;
procedure DeclareItems;
begin
NumberOfItems:= 2;
SetArrayLength(Items,NumberOfItems);
Items[0].Name:= '"steel platebody"';
Items[1].Name:='"rune dagger"';
end;
Function GEGetPrice(ID,Which: Integer): Integer;
var
Kind: String;
begin
Case Which Of
1: Kind:='nimum price:</b>';
2: Kind:='t price:</b> ';
3: Kind:='ximum price:</b> ';
End;
Result := StrToInt(GetNumbers(Between(Kind, '<', Getpage('http://itemdb-rs.runescape.com/viewitem.ws?obj=' + IntToStr(ID)))));
end;
Function Nats:Integer;
Begin
//Writeln(IntToStr(GEGetPrice(561,2)));
Result:=GEGetPrice(561,2);
End;
function GetWebPage(Queryis:string;which:boolean):string;
var
Hm:string;
begin
if which then
Hm:= 'http://itemdb-rs.runescape.com/p=kKmok3kJqOeN6D3mDdihco3oPeYN2KFy6W5--vZUbNA/results.ws?query='+Queryis+'&price=all&members='
else
Hm:= 'http://itemdb-rs.runescape.com/p=kKmok3kJqOeN6D3mDdihco3oPeYN2KFy6W5--vZUbNA/viewitem.ws?obj=' + Queryis;
try
Result:= GetPage(Hm);
except
end;
end;
procedure GiveGE(QueryIs:string);
var
HTSML,TempID,TempMon,TempName:string;
i:integer;
t,tp,plz:integer;
begin
writeln('You Want :'+Queryis);
HTSML:= GetWebPage(QueryIs,true);
i:= Pos('_obj_sprite',HTSML);
if i > 0 then
begin
TempID:= copy(HTSML, i, i);
i := Pos('"',TempID);
t := Pos('<td>',TempID);
TempMon := TempID;
if t > 0 then
begin
tp := Pos('stay',Tempmon);
Delete(TempMon,tp,Length(TempMon));
TempName:= Between('alt="','">',TempMon);
writeln('Name of Found Item is :'+TempName);
end;
if i > 0 then
begin
delete(TempID,i,Length(tempID));
Plz:= strtoint(GetNumbers(TempID));
//writeln('Id is '+ GetNumbers(TempID));
end;
end else
begin
writeln('Not Found Item :'+QueryIs);
Exit;
end;
MinP:=StrToInt(GetNumbers(Between('nimum price:</b>', '<', Getpage('http://itemdb-rs.runescape.com/viewitem.ws?obj=' + IntToStr(plz)))));
// MarkP:=StrToInt(GetNumbers(Between('t price:</b>', '<',Getpage('http://itemdb-rs.runescape.com/viewitem.ws?obj=' + IntToStr(plz)))));
MaxP:=StrToInt(GetNumbers(Between('ximum price:</b>', '<', Getpage('http://itemdb-rs.runescape.com/viewitem.ws?obj=' + IntToStr(plz)))));
Writeln('Costs '+IntToStr(MinP)+ ' - '+IntToStr(MaxP));
Items[Z].SMiPrice:=IntToStr(MinP);
Items[Z].IMiPrice:=MinP;
Items[Z].SMaprice:=IntToStr(MaxP);
Items[Z].IMaPrice:=MaxP;
end;
Procedure NabIt(ItemN:String);
Begin
ThePage:=GetPage('http://runescape.wikia.com/wiki/'+ItemN);
TmpInt1:= pos ('High Alchemy</a>',ThePage);
TmpInt2:= posex('</th><td>',ThePage, Tmpint1);
tmpint1:=posex(' ', ThePage, tmpint2+10);
AlchPrice:=StrToInt(Getnumbers(Copy(ThePage,tmpint2+10, tmpint1-(tmpint2+10))))
Writeln('High Alches For: '+ IntToStr(AlchPrice));
Items[Z].SAlchGP:=IntToStr(AlchPrice);
Items[Z].IAlchGP:=AlchPrice;
end;
Procedure GeneratePrices;
Begin
DeclareItems;
For Z:=0 To NumberOfItems-1 Do
Begin
GiveGE(Items[Z].Name);
Items[Z].Name:=Replace(Replace(Items[Z].Name,' ','_') ,'"','');
NabIt(Items[Z].Name);
End;
End;
Procedure GenerateAlchLoss;
var
NatPrice: Integer;
Begin
Natprice:= Nats;
For Z:=0 to NumberOfItems-1 Do
Begin
For I:= Items[Z].IMaPrice Downto Items[Z].IMiPrice Do
Begin
TestBuyPrice:=I
If (Lossage + Items[Z].IAlchGp - Natprice >= TestBuyPrice) Then
Begin
Items[Z].IBuyPrice:=TestBuyPrice;
Break;
End;
End;
Writeln('We must buy ' + Items[Z].Name + ' for ' + IntToStr(Items[Z].IBuyPrice) + ' gp to loose ' + IntToStr(Lossage) + ' gp per alch');
End;
End;
begin
GeneratePrices;
DeclareItems;
GenerateAlchLoss;
end.