API UO CancelTrade it - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
UO.CancelTrade
ClassicUO • Runtime API
Annulla lo scambio selezionato e chiude la finestra.
Sintassi esatta
UO.CancelTrade(TradeNum:Any) -> Any
Parametri
TradeNum— Numero intero corrente: 1..TradeCount(). Zero/negativi non validi. Non è un serial.
Restituisce
Integer: 1 = TRUE se la finestra è stata trovata, chiusa e l’annullamento inviato; altrimenti 0 = FALSE. Non attende il server. Chiudere di nuovo non invia un secondo pacchetto.
Risultato logico: 1 = TRUE, 0 = FALSE. Dopo VAR result = comando(...), usare IF result = TRUE THEN o IF result = 1 THEN; per il risultato negativo, IF result = FALSE THEN o IF result = 0 THEN. TRUE/FALSE senza virgolette. Chiamare una sola volta e salvare il risultato: un nuovo richiamo può ripetere l’azione o leggere uno stato cambiato.
Comportamento
- GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade partono da 1; TradeContainer/TradeOpponent/TradeName e tutte le forme TradeCheck da 0. Sono convenzioni conservate da questo client; manuali di motori diversi possono differire.
- Lettura sul thread del gioco dalle finestre vive del World corrente. Finestre chiuse escluse. Leggere non invia pacchetti né attende risposte. Aprire, chiudere o portare avanti una finestra cambia l’ordine UI; l’indice non è un ID permanente.
- ConfirmTrade e scrivere il proprio TradeCheck inviano solo quando cambia il consenso. Il server controlla la casella altrui. CancelTrade invia una volta. 1/TRUE indica stato/elaborazione locale, non trasferimento concluso. Nomi e caselle non provano che gli oggetti siano invariati.
Funzioni interne: dalla chiamata al risultato
Seguono percorso C# ed esempi Basic eseguibili. Gli script non reimplementano il protocollo di rete.
1. ExecuteStealthCompatibility
La registrazione seleziona per numero di argomenti; NumberConversions converte i numeri. TradeCheck con due argomenti valida 1/2 e li mappa su 0/1 del bridge. ToHex formatta i serial legacy.
Integer: 1 = TRUE se la finestra è stata trovata, chiusa e l’annullamento inviato; altrimenti 0 = FALSE. Non attende il server. Chiudere di nuovo non invia un secondo pacchetto.
Sorgente del progetto: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; funzione ExecuteStealthCompatibility.
2. CancelTrade
Invoke passa lettura/scrittura al thread del gioco con annullamento dello script; legge ID1/ID2, LocalSerial, OpponentName o le caselle del TradingGump scelto.
Annulla lo scambio selezionato e chiude la finestra.
Sorgente del progetto: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; funzione CancelTrade.
3. FindNumberedTrade
FindNumberedTrade verifica number>0 prima di sottrarre 1; FindTrade rifiuta indici negativi ed enumera solo TradingGump aperti di questo World.
GetTradeContainer/GetTradeOpponent/GetTradeOpponentName/ConfirmTrade/CancelTrade partono da 1; TradeContainer/TradeOpponent/TradeName e tutte le forme TradeCheck da 0. Sono convenzioni conservate da questo client; manuali di motori diversi possono differire.
Sorgente del progetto: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; funzione FindNumberedTrade.
4. Dispose
Dispose termina subito se già chiusa, libera l’UI e chiama GameActions.CancelTrade(ID1) una volta.
Integer: 1 = TRUE se la finestra è stata trovata, chiusa e l’annullamento inviato; altrimenti 0 = FALSE. Non attende il server. Chiudere di nuovo non invia un secondo pacchetto.
Sorgente del progetto: src/ClassicUO.Client/Game/UI/Gumps/TradingGump.cs; funzione Dispose.
La funzione completa viene chiamata da Main. Controlli di limiti/ID riducono gli errori ma le chiamate non sono atomiche: la finestra può cambiare. expectedPartner è un serial del personaggio salvato, non una verifica di prezzo/contenuto.
Esempi
Lettura o azione diretta
# Lettura o azione diretta
#
# Annulla lo scambio selezionato e chiude la finestra.
#
# Integer: 1 = TRUE se la finestra è stata trovata, chiusa e l’annullamento inviato; altrimenti
# 0 = FALSE. Non attende il server. Chiudere di nuovo non invia un secondo pacchetto.
#
# Risultato logico: 1 = TRUE, 0 = FALSE. Dopo VAR result = comando(...), usare IF result = TRUE
# THEN o IF result = 1 THEN; per il risultato negativo, IF result = FALSE THEN o IF result = 0
# THEN. TRUE/FALSE senza virgolette. Chiamare una sola volta e salvare il risultato: un nuovo
# richiamo può ripetere l’azione o leggere uno stato cambiato.
SUB Main()
# Una chiamata, salvata in value/result. 0 è il primo indice, 1 il primo numero (vedere
# sintassi). HEX mostra serial numerici; CStr numeri o testo.
VAR result = UO.CancelTrade(1)
IF result = TRUE THEN
UO.Print("Local request processed")
END IF
END SUB
Spiegazione dei parametri e dell’esecuzione:
- Una chiamata, salvata in value/result. 0 è il primo indice, 1 il primo numero (vedere sintassi). HEX mostra serial numerici; CStr numeri o testo.
Altro scenario e parametri
# Altro scenario e parametri
#
# Annulla lo scambio selezionato e chiude la finestra.
#
# Integer: 1 = TRUE se la finestra è stata trovata, chiusa e l’annullamento inviato; altrimenti
# 0 = FALSE. Non attende il server. Chiudere di nuovo non invia un secondo pacchetto.
#
# Risultato logico: 1 = TRUE, 0 = FALSE. Dopo VAR result = comando(...), usare IF result = TRUE
# THEN o IF result = 1 THEN; per il risultato negativo, IF result = FALSE THEN o IF result = 0
# THEN. TRUE/FALSE senza virgolette. Chiamare una sola volta e salvare il risultato: un nuovo
# richiamo può ripetere l’azione o leggere uno stato cambiato.
SUB Main()
# ConfirmTrade e scrivere il proprio TradeCheck inviano solo quando cambia il consenso. Il
# server controlla la casella altrui. CancelTrade invia una volta. 1/TRUE indica
# stato/elaborazione locale, non trasferimento concluso. Nomi e caselle non provano che gli
# oggetti siano invariati.
VAR tradeNumber = 2
IF UO.TradeCount() >= tradeNumber THEN
VAR result = UO.CancelTrade(tradeNumber)
UO.Print(CStr(result))
END IF
END SUB
Spiegazione dei parametri e dell’esecuzione:
- ConfirmTrade e scrivere il proprio TradeCheck inviano solo quando cambia il consenso. Il server controlla la casella altrui. CancelTrade invia una volta. 1/TRUE indica stato/elaborazione locale, non trasferimento concluso. Nomi e caselle non provano che gli oggetti siano invariati.
Funzione ausiliaria completa
# Funzione ausiliaria completa
#
# Annulla lo scambio selezionato e chiude la finestra.
#
# Integer: 1 = TRUE se la finestra è stata trovata, chiusa e l’annullamento inviato; altrimenti
# 0 = FALSE. Non attende il server. Chiudere di nuovo non invia un secondo pacchetto.
#
# Risultato logico: 1 = TRUE, 0 = FALSE. Dopo VAR result = comando(...), usare IF result = TRUE
# THEN o IF result = 1 THEN; per il risultato negativo, IF result = FALSE THEN o IF result = 0
# THEN. TRUE/FALSE senza virgolette. Chiamare una sola volta e salvare il risultato: un nuovo
# richiamo può ripetere l’azione o leggere uno stato cambiato.
SUB Main()
# La funzione completa viene chiamata da Main. Controlli di limiti/ID riducono gli errori ma le
# chiamate non sono atomiche: la finestra può cambiare. expectedPartner è un serial del
# personaggio salvato, non una verifica di prezzo/contenuto.
VAR expectedPartner = UO.GetTradeOpponent(1)
VAR result = ApplyToPartner(1, expectedPartner)
UO.Print(CStr(result))
END SUB
FUNCTION ApplyToPartner(tradeNumber, expectedPartner)
IF expectedPartner = 0 THEN
RETURN FALSE
END IF
IF UO.GetTradeOpponent(tradeNumber) <> expectedPartner THEN
RETURN FALSE
END IF
RETURN UO.CancelTrade(tradeNumber)
END FUNCTION
Spiegazione dei parametri e dell’esecuzione:
- La funzione completa viene chiamata da Main. Controlli di limiti/ID riducono gli errori ma le chiamate non sono atomiche: la finestra può cambiare. expectedPartner è un serial del personaggio salvato, non una verifica di prezzo/contenuto.