API UO TradeCheck it - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

UO.TradeCheck

ClassicUO • Runtime API

Legge le caselle di consenso; tre argomenti consentono anche di modificare la propria.

Sintassi esatta

UO.TradeCheck(TradeNum:Any, Num:Any) -> Any
UO.TradeCheck(windowIndex:Any) -> Integer
UO.TradeCheck(windowIndex:Any, checkbox:Any, stateValue:Any) -> Integer

Parametri

  • windowIndex — Indice intero corrente: 0..TradeCount()-1. Negativo/assente produce un risultato vuoto. Non è un serial.
  • TradeNum — Indice intero corrente: 0..TradeCount()-1. Negativo/assente produce un risultato vuoto. Non è un serial.
  • Num — Solo due argomenti: 1 propria casella, 2 casella altrui; altrimenti 0. Qui TradeNum parte da 0.
  • checkbox — Solo tre argomenti: 0 propria casella, 1 quella altrui in sola lettura; altri valori restituiscono 0.
  • stateValue — Solo checkbox=0: 0/FALSE rimuove il consenso, qualsiasi numero non nullo/TRUE lo imposta. Ignorato per checkbox=1.

Restituisce

Integer: 1 = TRUE con casella selezionata; 0 = FALSE se deselezionata o finestra/lato non valido. La scrittura restituisce lo stato, non l’esito dello scambio: togliere il consenso restituisce 0.

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. TradeCheck

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 con casella selezionata; 0 = FALSE se deselezionata o finestra/lato non valido. La scrittura restituisce lo stato, non l’esito dello scambio: togliere il consenso restituisce 0.

Sorgente del progetto: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; funzione TradeCheck.

2. TradeCheck

Invoke passa lettura/scrittura al thread del gioco con annullamento dello script; legge ID1/ID2, LocalSerial, OpponentName o le caselle del TradingGump scelto.

Legge le caselle di consenso; tre argomenti consentono anche di modificare la propria.

Sorgente del progetto: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; funzione TradeCheck.

3. FindTrade

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 FindTrade.

4. AcceptTrade

Al cambiamento della propria casella, GameActions.AcceptTrade chiama Send_TradeResponse con codice 2, ID1 e stato. Letture e valori invariati non inviano pacchetti.

Integer: 1 = TRUE con casella selezionata; 0 = FALSE se deselezionata o finestra/lato non valido. La scrittura restituisce lo stato, non l’esito dello scambio: togliere il consenso restituisce 0.

Sorgente del progetto: src/ClassicUO.Client/Game/GameActions.cs; funzione AcceptTrade.

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
#
# Legge le caselle di consenso; tre argomenti consentono anche di modificare la propria.
#
# Integer: 1 = TRUE con casella selezionata; 0 = FALSE se deselezionata o finestra/lato non
# valido. La scrittura restituisce lo stato, non l’esito dello scambio: togliere il consenso
# restituisce 0.
#
# 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()
    # TradeCheck(0) e TradeCheck(0,1) leggono il proprio consenso nella prima finestra;
    # TradeCheck(0,2) quello altrui. Nessuna scrittura o conferma automatica.

    VAR own = UO.TradeCheck(0)
    VAR sameOwn = UO.TradeCheck(0, 1)
    VAR other = UO.TradeCheck(0, 2)
    UO.Print(CStr(own) + "/" + CStr(sameOwn) + "/" + CStr(other))
END SUB

Spiegazione dei parametri e dell’esecuzione:

  • TradeCheck(0) e TradeCheck(0,1) leggono il proprio consenso nella prima finestra; TradeCheck(0,2) quello altrui. Nessuna scrittura o conferma automatica.

Altro scenario e parametri

# Altro scenario e parametri
#
# Legge le caselle di consenso; tre argomenti consentono anche di modificare la propria.
#
# Integer: 1 = TRUE con casella selezionata; 0 = FALSE se deselezionata o finestra/lato non
# valido. La scrittura restituisce lo stato, non l’esito dello scambio: togliere il consenso
# restituisce 0.
#
# 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()
    # TradeCheck(0,0,FALSE) toglie il proprio consenso. TradeCheck(0,1,FALSE) legge soltanto quello
    # altrui: FALSE non lo modifica. Il ritorno 0 dopo la rimozione è normale.

    VAR cleared = UO.TradeCheck(0, 0, FALSE)
    VAR other = UO.TradeCheck(0, 1, FALSE)
    UO.Print(CStr(cleared) + "/" + CStr(other))
END SUB

Spiegazione dei parametri e dell’esecuzione:

  • TradeCheck(0,0,FALSE) toglie il proprio consenso. TradeCheck(0,1,FALSE) legge soltanto quello altrui: FALSE non lo modifica. Il ritorno 0 dopo la rimozione è normale.

Funzione ausiliaria completa

# Funzione ausiliaria completa
#
# Legge le caselle di consenso; tre argomenti consentono anche di modificare la propria.
#
# Integer: 1 = TRUE con casella selezionata; 0 = FALSE se deselezionata o finestra/lato non
# valido. La scrittura restituisce lo stato, non l’esito dello scambio: togliere il consenso
# restituisce 0.
#
# 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 accepted = BothAccepted(0)
    IF accepted = TRUE THEN
        UO.Print("Both boxes are checked; server completion is not known")
    END IF
END SUB

FUNCTION BothAccepted(index)
    IF index < 0 OR index >= UO.TradeCount() THEN
        RETURN FALSE
    END IF
    VAR own = UO.TradeCheck(index, 1)
    VAR other = UO.TradeCheck(index, 2)
    RETURN own = TRUE AND other = TRUE
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.

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

Basic