API UO TradeCount en - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

UO.TradeCount

ClassicUO • Runtime API

Returns the number of open trade windows.

Exact syntax

UO.TradeCount() -> Integer

Parameters

No parameters.

Returns

Integer: number of windows, starting at 0. A count, not a Boolean; test > 0 for presence.

Behavior

  • GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade number windows from 1; TradeContainer/TradeOpponent/TradeName and every TradeCheck form index them from 0. This client deliberately preserves those conventions; reference manuals from different engines disagree on origins.
  • Reads run on the game thread using live windows in this World. Disposed windows are excluded. Reading sends no packets and waits for no response. UI ordering may change when windows open, close or move to the front; an index is not a persistent identifier.
  • ConfirmTrade and writing your TradeCheck box send a packet only when acceptance changes. The server controls the other box. CancelTrade sends cancellation once. 1/TRUE means local state/handling, not completed transfer. Names and both checks do not prove that offered items stayed unchanged.

Internal functions: from call to result

The C# call path is explained below, followed by executable Basic helpers. The scripts do not reimplement the network protocol.

1. TradeCount

Registration selects by argument count and NumberConversions converts numbers. The two-argument TradeCheck validates sides 1/2 and maps them to bridge indices 0/1. Legacy serials pass through ToHex.

Integer: number of windows, starting at 0. A count, not a Boolean; test > 0 for presence.

Project source: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; function TradeCount.

2. TradeCount

Invoke marshals reading/writing to the game thread with script cancellation; the method reads ID1/ID2, LocalSerial, OpponentName or acceptance flags from the selected TradingGump.

Returns the number of open trade windows.

Project source: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; function TradeCount.

The helper is fully defined and called by Main. Range/ID checks reduce mistakes but calls are not atomic: the selected window may change between them. For an action, expectedPartner is a saved character serial, not a price or contents validation.

Examples

Direct read or action

# Direct read or action
#
# Returns the number of open trade windows.
#
# Integer: number of windows, starting at 0. A count, not a Boolean; test > 0 for presence.

SUB Main()
    # Call once and save value/result. Zero is the first index, one the first number (see this
    # command’s syntax). HEX displays numeric serials; CStr displays numbers or text.

    VAR value = UO.TradeCount()
    UO.Print(CStr(value))
END SUB

Parameter and execution notes:

  • Call once and save value/result. Zero is the first index, one the first number (see this command’s syntax). HEX displays numeric serials; CStr displays numbers or text.

Another scenario and parameters

# Another scenario and parameters
#
# Returns the number of open trade windows.
#
# Integer: number of windows, starting at 0. A count, not a Boolean; test > 0 for presence.

SUB Main()
    # before/after are separate snapshots 500 milliseconds apart. This delay does not wait for a
    # particular trade; intermediate changes can be missed.

    VAR before = UO.TradeCount()
    WAIT(500)
    VAR after = UO.TradeCount()
    UO.Print(CStr(before) + " -> " + CStr(after))
END SUB

Parameter and execution notes:

  • before/after are separate snapshots 500 milliseconds apart. This delay does not wait for a particular trade; intermediate changes can be missed.

Complete callable helper

# Complete callable helper
#
# Returns the number of open trade windows.
#
# Integer: number of windows, starting at 0. A count, not a Boolean; test > 0 for presence.

SUB Main()
    # The helper is fully defined and called by Main. Range/ID checks reduce mistakes but calls are
    # not atomic: the selected window may change between them. For an action, expectedPartner is a
    # saved character serial, not a price or contents validation.

    VAR value = ReadTradeState()
    UO.Print(CStr(value))
END SUB

FUNCTION ReadTradeState()
    RETURN UO.TradeCount()
END FUNCTION

Parameter and execution notes:

  • The helper is fully defined and called by Main. Range/ID checks reduce mistakes but calls are not atomic: the selected window may change between them. For an action, expectedPartner is a saved character serial, not a price or contents validation.

en · ru · uk · fr · de · it · es · zh-tw · ja · ko

Basic