Skip to content

Commit 25fb0fb

Browse files
committed
Merge branch 'pr/124'
2 parents 095334d + e541732 commit 25fb0fb

File tree

3 files changed

+98
-5
lines changed

3 files changed

+98
-5
lines changed

osrs/interfaces/mainscreen/grandexchange/grandexchange.simba

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ EGESlotType = enum(EMPTY, SELL, BUY);
3333
```
3434
Enum to represent the type of Grand Exchange offer slot.
3535
*)
36-
EGESlotType = enum(EMPTY, SELL, BUY);
36+
EGESlotType = enum(EMPTY, SELL, BUY, UNAVAILABLE);
3737

3838
(*
3939
## TRSGrandExchangeSlot
@@ -164,7 +164,11 @@ begin
164164
//no need for ocr, color count is lighter and should work fine.
165165
count := Target.CountColor(RSFonts.ORANGE, 0, Self.Header);
166166
case count of
167-
154: Result := EGESlotType.EMPTY;
167+
154:
168+
if Target.HasColor($6082AB, 0, 1, Self.BuyButton) then
169+
Result := EGESlotType.UNAVAILABLE
170+
else
171+
Result := EGESlotType.EMPTY;
168172
90: Result := EGESlotType.SELL;
169173
101: Result := EGESlotType.BUY;
170174
end;
@@ -281,6 +285,31 @@ begin
281285
Result := EGEOfferStatus.NONE;
282286
end;
283287

288+
(*
289+
## TRSGrandExchangeSlot.Progress
290+
```pascal
291+
property TRSGrandExchangeSlot.Progress: Integer;
292+
```
293+
Returns the progress percentage of the slot.
294+
295+
Example:
296+
```pascal
297+
WriteLn GrandExchange.Slots[2].Progress;
298+
```
299+
*)
300+
property TRSGrandExchangeSlot.Progress: Integer;
301+
var
302+
tpa: TPointArray;
303+
begin
304+
tpa := Target.FindColor($1964A8, 0, Self.StatusBox);
305+
if not (tpa = []) then
306+
Result := Round(tpa.Bounds.Width() / 105 * 100)
307+
else if Target.HasColor($004A00, 0, 1, Self.StatusBox) then
308+
Result := 100
309+
else
310+
Result := -1;
311+
end;
312+
284313
(*
285314
## TRSGrandExchangeSlot.Open
286315
```pascal

osrs/interfaces/mainscreen/grandexchange/grandexchange_chat.simba

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -299,11 +299,18 @@ WriteLn GrandExchangeChat.Click('Abyssal whip');
299299
function TRSGrandExchangeChat.Click(item: TRSItem): Boolean;
300300
var
301301
bounds: TBox;
302+
i: Integer;
302303
begin
303-
if Self.Find(item, bounds) then
304+
for i := 0 to 4 do
304305
begin
305-
Mouse.Click(bounds, EMouseButton.LEFT);
306-
Result := SleepUntil(Self.IsOpen(), 200, 2400);
306+
if Self.Find(item, bounds) then
307+
begin
308+
Mouse.Click(bounds, EMouseButton.LEFT);
309+
Exit(SleepUntil(not Self.IsOpen(), 200, 2400));
310+
end;
311+
312+
if not Self.IsOpen() then Exit;
313+
Sleep(50, 150);
307314
end;
308315
end;
309316

osrs/interfaces/mainscreen/grandexchange/grandexchange_offer.simba

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -845,6 +845,63 @@ begin
845845
Result := SleepUntil(not Self.HasItems(), 200, 2000);
846846
end;
847847

848+
(*
849+
## GrandExchangeOffer.CreateBuyOffer
850+
```pascal
851+
function TRSGrandExchangeOffer.CreateBuyOffer(itemName : String; price, quantity : Integer = -1) : Boolean;
852+
```
853+
854+
Attempts to create a buy offer for the specified `itemName`, `price` and `quantity`.
855+
856+
Example:
857+
```pascal
858+
if GrandExchangeOffer.CreateBuyOffer('Abyssal whip', 1500000, 1) then
859+
WriteLn('Buy offer created successfully!');
860+
```
861+
*)
862+
function TRSGrandExchangeOffer.CreateBuyOffer(itemName: String; price, quantity: Integer = -1) : Boolean;
863+
begin
864+
if not Self.IsOpen() then Exit;
865+
if (Self.OfferInterface <> EGEOfferInterface.SETUP) or (Self.OfferType <> EGEOfferType.BUY) then Exit;
866+
867+
if not GrandExchangeChat.WaitOpen(2000, 250) then Exit;
868+
if not GrandExchangeChat.SearchText[itemName] then Exit;
869+
if not GrandExchangeChat.Click(itemName) then Exit;
870+
if not SleepUntil(Self.Item.ToLower() = itemName.ToLower(), 250, 2000) then Exit;
871+
872+
if (quantity <> -1) and not Self.Quantity[quantity] then Exit;
873+
if (price <> -1) and not Self.Price[price] then Exit;
874+
875+
Result := Self.Confirm();
876+
end;
877+
878+
(*
879+
## GrandExchangeOffer.CreateSellOffer
880+
```pascal
881+
function TRSGrandExchangeOffer.CreateSellOffer(itemName : String; price, quantity : Integer = -1) : Boolean;
882+
```
883+
884+
Attempts to create a sell offer for the specified `itemName`, `price` and `quantity`.
885+
886+
Example:
887+
```pascal
888+
if GrandExchangeOffer.CreateSellOffer('Abyssal whip', 1500000, 1) then
889+
WriteLn('Sell offer created successfully!');
890+
```
891+
*)
892+
function TRSGrandExchangeOffer.CreateSellOffer(itemName: String; price, quantity: Integer = -1) : Boolean;
893+
begin
894+
if not Self.IsOpen() then Exit;
895+
if (Self.OfferInterface <> EGEOfferInterface.SETUP) or (Self.OfferType <> EGEOfferType.SELL) then Exit;
896+
897+
if not Inventory.Items.Click(itemName) then Exit;
898+
if not SleepUntil(Self.Item.ToLower() = itemName.ToLower(), 250, 2000) then Exit;
899+
900+
if (quantity <> -1) and not Self.Quantity[quantity] then Exit;
901+
if (price <> -1) and not Self.Price[price] then Exit;
902+
903+
Result := Self.Confirm();
904+
end;
848905

849906
var
850907
(*

0 commit comments

Comments
 (0)