API UO IsTrade uk - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

UO.IsTrade

ClassicUO • Runtime API

Перевіряє наявність відкритого вікна безпечного обміну.

Точний синтаксис

UO.IsTrade() -> Integer

Параметри

Параметрів немає.

Повертає

Integer: 1 = TRUE — обмін відкритий; 0 = FALSE — ні.

Це логічний результат: 1 = TRUE, 0 = FALSE. Після VAR result = команда(...) можна писати IF result = TRUE THEN або IF result = 1 THEN; для негативного результату — IF result = FALSE THEN або IF result = 0 THEN. TRUE/FALSE без лапок. Викличте команду один раз і збережіть результат: повторний виклик може повторити дію або прочитати змінений стан.

Поведінка

  • GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade нумерують вікна з 1; TradeContainer/TradeOpponent/TradeName і всі форми TradeCheck — з 0. Це збережені правила цього клієнта; зовнішні довідники різних рушіїв мають різні початки відліку.
  • Читання виконується на ігровому потоці за живими вікнами поточного World. Закриті вікна виключено. Читання не надсилає пакетів і не чекає відповіді. Порядок UI може змінитися після відкриття, закриття або підняття вікна; індекс не є постійним ID.
  • ConfirmTrade та запис власного TradeCheck надсилають пакет лише при зміні згоди. Чужий прапорець задає сервер. CancelTrade надсилає скасування один раз. 1/TRUE означає локальний стан/обробку, не завершення передачі. Імена й два прапорці не доводять незмінність предметів.

Внутрішні функції: від виклику до результату

Нижче наведено шлях виклику C#, а потім виконувані приклади Basic. Скрипти не реалізують мережевий протокол заново.

1. ExecuteStealthCompatibility

Реєстрація вибирає форму за кількістю аргументів; NumberConversions перетворює числа. TradeCheck із двома аргументами перевіряє сторони 1/2 і переводить їх у 0/1 bridge. Legacy-serial форматує ToHex.

Integer: 1 = TRUE — обмін відкритий; 0 = FALSE — ні.

Код проєкту: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; функція ExecuteStealthCompatibility.

2. IsTrade

Invoke передає читання/запис на ігровий потік зі скасуванням скрипту; метод читає ID1/ID2, LocalSerial, OpponentName або прапорці вибраного TradingGump.

Перевіряє наявність відкритого вікна безпечного обміну.

Код проєкту: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; функція IsTrade.

3. FindTrade

FindNumberedTrade перевіряє number>0 перед відніманням 1; FindTrade відхиляє від’ємний індекс і перебирає лише живі TradingGump поточного World.

GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade нумерують вікна з 1; TradeContainer/TradeOpponent/TradeName і всі форми TradeCheck — з 0. Це збережені правила цього клієнта; зовнішні довідники різних рушіїв мають різні початки відліку.

Код проєкту: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; функція FindTrade.

Помічник повністю визначений і викликається з Main. Перевірки меж/ID зменшують помилки, але виклики не атомарні: вікно може змінитися між ними. Для дії expectedPartner — збережений serial персонажа, не перевірка ціни чи вмісту.

Приклади

Пряме читання або дія

# Пряме читання або дія
#
# Перевіряє наявність відкритого вікна безпечного обміну.
#
# Integer: 1 = TRUE — обмін відкритий; 0 = FALSE — ні.
#
# Це логічний результат: 1 = TRUE, 0 = FALSE. Після VAR result = команда(...) можна писати IF
# result = TRUE THEN або IF result = 1 THEN; для негативного результату — IF result = FALSE THEN
# або IF result = 0 THEN. TRUE/FALSE без лапок. Викличте команду один раз і збережіть результат:
# повторний виклик може повторити дію або прочитати змінений стан.

SUB Main()
    # Виклик один, value/result зберігає результат. 0 — перший індекс, 1 — перший номер (див.
    # синтаксис). HEX показує числовий serial; CStr — число чи текст.

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

Пояснення параметрів і виконання:

  • Виклик один, value/result зберігає результат. 0 — перший індекс, 1 — перший номер (див. синтаксис). HEX показує числовий serial; CStr — число чи текст.

Інший сценарій і параметри

# Інший сценарій і параметри
#
# Перевіряє наявність відкритого вікна безпечного обміну.
#
# Integer: 1 = TRUE — обмін відкритий; 0 = FALSE — ні.
#
# Це логічний результат: 1 = TRUE, 0 = FALSE. Після VAR result = команда(...) можна писати IF
# result = TRUE THEN або IF result = 1 THEN; для негативного результату — IF result = FALSE THEN
# або IF result = 0 THEN. TRUE/FALSE без лапок. Викличте команду один раз і збережіть результат:
# повторний виклик може повторити дію або прочитати змінений стан.

SUB Main()
    # before/after — окремі знімки з інтервалом 500 мілісекунд. Пауза не чекає конкретного обміну;
    # проміжні зміни можна пропустити.

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

Пояснення параметрів і виконання:

  • before/after — окремі знімки з інтервалом 500 мілісекунд. Пауза не чекає конкретного обміну; проміжні зміни можна пропустити.

Повний викликаний помічник

# Повний викликаний помічник
#
# Перевіряє наявність відкритого вікна безпечного обміну.
#
# Integer: 1 = TRUE — обмін відкритий; 0 = FALSE — ні.
#
# Це логічний результат: 1 = TRUE, 0 = FALSE. Після VAR result = команда(...) можна писати IF
# result = TRUE THEN або IF result = 1 THEN; для негативного результату — IF result = FALSE THEN
# або IF result = 0 THEN. TRUE/FALSE без лапок. Викличте команду один раз і збережіть результат:
# повторний виклик може повторити дію або прочитати змінений стан.

SUB Main()
    # Помічник повністю визначений і викликається з Main. Перевірки меж/ID зменшують помилки, але
    # виклики не атомарні: вікно може змінитися між ними. Для дії expectedPartner — збережений
    # serial персонажа, не перевірка ціни чи вмісту.

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

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

Пояснення параметрів і виконання:

  • Помічник повністю визначений і викликається з Main. Перевірки меж/ID зменшують помилки, але виклики не атомарні: вікно може змінитися між ними. Для дії expectedPartner — збережений serial персонажа, не перевірка ціни чи вмісту.

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

Basic