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.
Fill out "Loggage" at top for the amount of GP you want to loose per alch.
Fill out Declare Items with the items you wish to alch.
Sometimes it doesn't work because Jagex fails and the GE page is often down :/It assumes your buying nats at mid price, and then scans though min-max price of the items you ask it to look up until you lose 'lossage'gp per alch. :D