LordJashin
2019-08-29 19:30:47
I didn't know where else to put this thread. I think this is relevant for beginners to learn
what everything looks like and the reach of what they can and cannot do yet in OSR.
Use Simba 1.3 and OSR Preferred
Paste into Simba and Run!
what everything looks like and the reach of what they can and cannot do yet in OSR.
Use Simba 1.3 and OSR Preferred
Paste into Simba and Run!
program new;
{$DEFINE SMART}
//{$DEFINE SRL:DEBUG}
//{$DEFINE HINTS}
//{$DEFINE DRAW}
{$I SRL/OSR.simba}
type
TMMOrbWorldMap = record
Middle: TPoint;
Bounds: TBox;
Radius: UInt8;
end;
procedure TAntiban.OpenWorldMap();
var
MMOrbWorldMap: TMMOrbWorldMap;
begin
with MMOrbWorldMap do
begin
Bounds := [545, 4, 576, 36];
Middle := [561, 20];
Radius := 15;
end;
end;
procedure DrawBankScreen(cl: TColor);
var
i: Integer;
begin
for i:=0 to High(Bankscreen.FButtons) do
begin
Smart.Image.DrawTPA(EdgeFromBox(Bankscreen.fButtons[i]), cl);
end;
for i:=0 to High(Bankscreen.FSlots) do
Smart.Image.DrawTPA(EdgeFromBox(Bankscreen.fSlots[i]), cl);
end;
procedure DrawPinScreen(cl: TColor);
var
i: Int32;
buttons: TBoxArray;
begin
PinScreen.FindButtons(buttons, Random(3000,4500));
PinScreen.SortButtons(buttons, Random(4000,6500));
for i:=0 to High(buttons) do
begin
Smart.Image.DrawBox(buttons[i], False, cl);
Smart.Image.DrawText(ToStr(i), Point(buttons[i].X1+5, buttons[i].Y1+5), cl);
end;
end;
procedure DrawCombatScreen(cl: TColor);
begin
Smart.Image.DrawBoxes(Combat.FButtons, False, cl);
Smart.Image.DrawBox(Combat.FBounds, False, cl);
end;
procedure DrawPrayerScreen(cl: TColor);
var
i: Int32;
begin
Smart.Image.DrawBoxes(Prayer.FSlots, False, cl);
Smart.Image.DrawBox(Prayer.FBounds, False, cl);
if Prayer.IsOpen() then
for i:=0 to High(Prayer.FSlots) do
if Prayer.CanActivate(EPrayerType(i)) then
Smart.Image.DrawBox(Prayer.FSlots[i], False, cl);
end;
procedure DrawShopScreen(cl: TColor);
var
i: Integer;
begin
if not ShopScreen.__Prepare() then Exit();
for i:=0 to High(ShopScreen.ItemBoxes) do
Smart.Image.DrawBox(ShopScreen.ItemBoxes[i], False, cl);
end;
procedure DrawSmithingScreen(cl: TColor);
var
i: Integer;
begin
if not SmithingScreen.__Prepare() then Exit();
for i:=0 to High(SmithingScreen.ItemBoxes) do
begin
Smart.Image.DrawBox(SmithingScreen.ItemBoxes[i], False, cl);
Smart.Image.DrawBox(SmithingScreen.ItemBoxesIcon[i], False, cl);
Smart.Image.DrawBox(SmithingScreen.ItemBoxesNames[i], False, cl);
Smart.Image.DrawBox(SmithingScreen.ItemBoxesBars[i], False, cl);
end;
end;
procedure DrawGrandExStub(cl: TColor);
begin
Smart.Image.DrawBox(GrandExchange.FBounds, False, cl);
Smart.Image.DrawBox(GrandExchange.FHeader, False, cl);
end;
procedure DrawGrandExOffer(cl: TColor);
var
i:Int32;
begin
Smart.Image.DrawBoxes(GrandExchange.Offer.FAdjBounds, False, cl);
Smart.Image.DrawBoxes(GrandExchange.Offer.LoadButtons(), False, cl);
if GrandExchange.CurrentInterface() = geSetupOffer then
begin
Smart.Image.DrawBoxes(Copy(GrandExchange.Offer.FMiscBoxes, 0, Length(GrandExchange.FMiscBoxes)-4), False, cl);
Smart.Image.DrawBox(GrandExchange.Offer.FConfimButton, False, cl);
end
else
Smart.Image.DrawBoxes(GrandExchange.Offer.FMiscBoxes, False, cl);
for i:=0 to High(GrandExchange.Offer.FButtons) do
if i <> ord(ebCollect) then
Smart.Image.DrawBox(GrandExchange.Offer.FButtons[i], False, cl);
end;
procedure DrawGrandExchange(cl: TColor);
var
curr: EGEInterface;
i,j: Int32;
begin
curr := GrandExchange.CurrentInterface();
if (curr = geOverview) then
begin
Smart.Image.DrawBoxes(GrandExchange.ExchTables, False, 1);
Smart.Image.DrawBox(GrandExchange.FButtons[ebClose], False, cl);
Smart.Image.DrawBox(GrandExchange.FButtons[ebCollect], False, cl);
Smart.Image.DrawBox(GrandExchange.FButtons[ebHistory], False, cl);
for i:=0 to High(GrandExchange.ExchTables) do
begin
Smart.Image.DrawBox(GrandExchange.OffsetToTable(i, GrandExchange.FExchBoxes[0]),False,cl);
if GrandExchange.ExchangeType(i) = etEmpty then
begin
Smart.Image.DrawBox(GrandExchange.OffsetToTable(i, GrandExchange.FOfferButtons[ord(etSell)]), False, cl);
Smart.Image.DrawBox(GrandExchange.OffsetToTable(i, GrandExchange.FOfferButtons[ord(etBuy)]), False, cl);
end
else for j:=1 to High(GrandExchange.FExchBoxes) do
Smart.Image.DrawBox(GrandExchange.OffsetToTable(i, GrandExchange.FExchBoxes[j]),False,cl);
end;
end;
end;
procedure DrawSpells(cl: TColor);
begin
Smart.Image.DrawBoxes(Spells.FSlots, False, cl);
Smart.Image.DrawBox(Spells.FBounds, False, cl);
end;
procedure DrawDepositBox(cl: TColor);
var
i: Integer;
begin
if not DepositBox.__Prepare() then Exit();
for i:=0 to High(DepositBox.ItemBoxes) do
Smart.Image.DrawBox(DepositBox.ItemBoxes[i], False, cl);
for i:=0 to High(DepositBox.Buttons) do
Smart.Image.DrawBox(DepositBox.Buttons[i], False, cl);
end;
procedure DrawInventory(cl: TColor);
begin
Smart.Image.DrawBoxes(Inventory.FSlots, False, cl);
Smart.Image.DrawBox(Inventory.FBounds, False, cl);
end;
procedure DrawEquipment(cl: TColor);
begin
Smart.Image.DrawBoxes(Equipment.FBoxes, False, cl);
Smart.Image.DrawBox(Equipment.FBounds, False, cl);
end;
procedure DrawStats(cl: TColor);
begin
Smart.Image.DrawBoxes(Stats.FSlots, False, cl);
Smart.Image.DrawBox(Stats.FBounds, False, cl);
end;
procedure DrawOptions(cl: TColor);
begin
Smart.Image.DrawBox(Options.FBounds, False, cl);
Smart.Image.DrawBoxes(Options.FTabs, False, cl);
Smart.Image.DrawBox(Options.FZoomSliderBox, False, cl);
end;
procedure DebugEverything(cl: TColor);
var
B: TBox;
begin
Smart.Image.DrawBox(srl.DefaultClientBounds, false, cl);
Smart.Image.DrawBox(MainScreen.FBounds, false, cl);
Smart.Image.DrawBox(Gametabs.FBounds, false, cl);
Smart.Image.DrawBox(Minimap.FBounds, false, cl);
Smart.Image.DrawBox(Chatbox.FBounds, false, cl);
Smart.Image.DrawBoxes(Chatbox.FLines, false, cl);
Smart.Image.DrawBoxes(Chatbox.FTabs, false, cl);
Smart.Image.DrawBox(Minimap.CompassInfo.Bounds, false, cl);
Smart.Image.DrawTPA(Minimap.MaskPoly, cl);
Smart.Image.DrawBox(Minimap.OrbInfo[MMOrbHP].TextBox, cl);
Smart.Image.DrawBox(Minimap.OrbInfo[MMOrbPrayer].TextBox, cl);
Smart.Image.DrawBox(Minimap.OrbInfo[MMOrbRun].TextBox, cl);
Smart.Image.DrawBox(Minimap.OrbInfo[MMOrbSpecialAttack].TextBox, cl);
Smart.Image.DrawCircle(Minimap.OrbInfo[MMOrbHP].Middle, Minimap.OrbInfo[MMOrbHP].Radius, false, cl);
Smart.Image.DrawCircle(Minimap.OrbInfo[MMOrbPrayer].Middle, Minimap.OrbInfo[MMOrbPrayer].Radius, false, cl);
Smart.Image.DrawCircle(Minimap.OrbInfo[MMOrbRun].Middle, Minimap.OrbInfo[MMOrbRun].Radius, false, cl);
Smart.Image.DrawCircle(Minimap.OrbInfo[MMOrbSpecialAttack].Middle, Minimap.OrbInfo[MMOrbSpecialAttack].Radius, false, cl);
Smart.Image.DrawCircle(Minimap.CompassInfo.Middle, Minimap.CompassInfo.Radius, false, cl);
Smart.Image.DrawCircle(XPBar.Button.Mean, XPBar.Button.Radius, false, cl);
Smart.Image.DrawBox(Gametabs.UpperTabs, false, cl);
Smart.Image.DrawBox(Gametabs.LowerTabs, false, cl);
Smart.Image.DrawBoxes(Gametabs.Tabs, false, cl);
// XP bar
B := [365, 0, 515, 55];
Smart.Image.DrawBox(B, false, cl);
WriteLn('Entering Infinite loop');
Repeat
if Options.IsOpen then
DrawOptions(clRed);
//if BankScreen.IsOpen Uses OCR throws errors
//DrawBankScreen(clRed);
//if PinScreen.IsOpen
//DrawPinScreen(clRed);
if Combat.IsOpen then
DrawCombatScreen(clRed);
if Prayer.IsOpen then
DrawPrayerScreen(clRed);
//if ShopScreen.IsOpen then
//DrawShopScreen(clRed);
//if SmithingScreen.IsOpen then
//DrawSmithingScreen(clRed);
if GrandExchange.IsOpen(geOverview) then
DrawGrandExchange(clRed);
//if GrandExchange.IsOpen(geOfferStatus) Same as above
//DrawGrandExOffer(clRed);
if GrandExchange.IsOpen(geSetupOffer) then
DrawGrandExStub(clRed);
if Spells.IsOpen then
DrawSpells(clRed);
//if DepositBox.IsOpen then
//DrawDepositBox(clRed);
if Inventory.IsOpen then
DrawInventory(clRed);
if Equipment.IsOpen then
DrawEquipment(clRed);
if Stats.IsOpen then
DrawStats(clRed);
wait(2000);
until false;
end;
begin
srl.Setup([soDebug,soDebugAntiban,soDebugTimeStamp]);
DebugEverything(clWhite);
end.