Repository navigation
IT UO Topic items Part 2
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Home · C# · IDE · UO API · A–Z · Esempi · Lingue
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.MoveItem(object? id);
int UO.MoveItem(object? id, object? amount);
int UO.MoveItem(object? id, object? amount, object? targetContainer);
int UO.MoveItem(object? item, object? amount, object? container, object? x);
int UO.MoveItem(object? item, object? amount, object? container, object? x, object? y);
int UO.MoveItem(object? id, object? amount, object? targetContainer, object? x, object? y, object? z);
int UO.MoveItem(object? item, object? amount, object? container, object? x, object? y, object? z, object? timeout);
int UO.MoveItem(object? item, object? amount, object? container, object? x, object? y, object? z, object? timeout, object? waitConfirmation);Trasporta un oggetto/pila specifico tramite serial: catturato e lasciato cadere in un contenitore o a terra.
-
id— Numero di serie di un oggetto/carattere specifico: numero, stringa esadecimale/decimale, self/backpack/lasttarget/lastobject/lastcontainer/lastcorpse/finditem/laststatus o nome salvato AddObject. Questo non è type. L'oggetto deve essere caricato; controllare Exists prima dell'azione. -
item— Numero di serie di un oggetto/carattere specifico: numero, stringa esadecimale/decimale, self/backpack/lasttarget/lastobject/lastcontainer/lastcorpse/finditem/laststatus o nome salvato AddObject. Questo non è type. L'oggetto deve essere caricato; controllare Exists prima dell'azione. -
amount— Numero di unità all'interno di uno stack. 0 o un valore negativo indica l'intero stack; il positivo è limitato dalla quantità disponibile. NON è il numero di stack che limita MassMove. L'impostazione predefinita è 0. -
targetContainer— Seriale del contenitore o nome del set AddObject; backpack/self/my scegli uno zaino, receiving/catchbag - SetCatchBag, e senza di esso uno zaino. lastcontainer/lastobject/lasttarget/lastcorpse/finditem/laststatus sono validi se risolti nel contenitore corretto. ground or 0 explicitly selects land; -1—the same backpack selector. Un nome sconosciuto o non specificato provoca un errore prima che l'elemento venga acquisito. Senza un argomento relativo alla destinazione, viene utilizzato lo zaino. -
container— Seriale del contenitore o nome del set AddObject; backpack/self/my scegli uno zaino, receiving/catchbag - SetCatchBag, e senza di esso uno zaino. lastcontainer/lastobject/lasttarget/lastcorpse/finditem/laststatus sono validi se risolti nel contenitore corretto. ground or 0 explicitly selects land; -1—the same backpack selector. Un nome sconosciuto o non specificato provoca un errore prima che l'elemento venga acquisito. Senza un argomento relativo alla destinazione, viene utilizzato lo zaino. -
x— Con un contenitore — X nel gump, predefinito 65535 (automatico). Quando sei a terra: mondo X, personaggio predefinito X. -
y— Y nel gump o nel mondo Y; il valore predefinito è 65535 per il contenitore o il carattere Y per il terreno. -
z— Altezza, per impostazione predefinita 0 in un contenitore o Z di un personaggio a terra. -
timeout— Settimo argomento: attesa massima in ms, default 1000; un valore negativo è equivalente a 0. Utilizzato solo con l'ottavo waitConfirmation=true. -
waitConfirmation— Ottavo argomento: true/1 include l'aspettativa di un cambiamento osservato nel mondo; false/0 (predefinito) restituisce il risultato dell'invio di una richiesta.
int 1: il client ha accettato la richiesta di acquisizione e ripristino; 0—Non è stato possibile completare la richiesta. Quando waitConfirmation=true è inoltre necessario un cambiamento osservabile nel contenitore/coordinate o una diminuzione nello stack originale. Questo non è il serial del nuovo stack e non il numero di elementi trasferiti. Il server potrebbe rifiutarsi di funzionare.
Il risultato del comando è un flag numerico: 1 significa una condizione soddisfatta, 0 significa una condizione non soddisfatta. Dopo var risultato = comando(...) controlla se (risultato != 0) o se (risultato == 0). Salva il risultato di una chiamata: una chiamata ripetuta può eseguire nuovamente l'azione o leggere lo stato che è già cambiato.
- Sono supportate tutte le lunghezze degli argomenti da 1 a 8. Dato x, è possibile omettere y/z: per essi vengono utilizzati i valori predefiniti descritti.
- Il nome di destinazione noto viene risolto prima dell'acquisizione. Per terra, utilizzare ground/0 esplicitamente; un errore di battitura nel nome non dovrebbe gettare l'oggetto sul pavimento.
- L'oggetto può trovarsi in un baule, in una borsa o in uno zaino: ground imposta la destinazione a terra, indipendentemente dal contenitore originale. Il primo argomento specifica il serial dell'oggetto stesso, non il baule o type. La squadra esegue il contrasto da sola; Non è necessario afferrare prima l'oggetto con il mouse.
- Quando DropCheckCoord è acceso, lo scarico a terra oltre le due celle viene rifiutato. Il server controlla inoltre la disponibilità di spazio. X/Y sono celle della mappa, non pixel Gump; Z: altezza della superficie selezionata, incluso il negativo. Per un contenitore, X/Y indica ancora la posizione all'interno del suo gump.
- In attesa di conferma utilizza lo stato del mondo del cliente: per una pila parziale - una diminuzione della quantità, per l'intero - un contenitore, per il terreno un altro X/Y/Z. All'interno del contenitore, la posizione esatta della gomma non è confermata da questa aspettativa; la scomparsa/l'unione di stack può complicare la verifica.
- Questa non è una conferma di una transazione separata ID. Se l'oggetto era già nello stesso contenitore, la corrispondenza del contenitore non dimostra una nuova mossa all'interno del gump.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il risultato di una sola chiamata viene mostrato nel diario. Un numero non viene convertito in bool; per un array viene mostrato il numero di elementi.
var result = UO.MoveItem("lasttarget");
UO.Print("MoveItem: " + Convert.ToString(result));Parametri e flusso di esecuzione:
- bottino - nome AddObject; manca l'importo ed è pari a 0, la destinazione è lo zaino.
- Viene trasferito un elemento/pila, non tutti gli elementi di un determinato tipo.
var ok = UO.MoveItem("loot");
UO.Print("Move request: " + Convert.ToString(ok));Parametri e flusso di esecuzione:
- quantità=10 unità di una pila, chest è il nome del contenitore, x/y=60/70 all'interno del gump, z=0.
- La quantità non ha il valore "dieci pile" adottato da MassMove.
return RunScenario();
object? RunScenario()
{
var ok = UO.MoveItem("loot", 10, "chest", 60, 70, 0);
return null;
}Parametri e flusso di esecuzione:
- ground seleziona esplicitamente il terreno; X/Y/Z mancanti sono presi dal carattere.
- Per un altro punto, passa le sue coordinate mondiali, tenendo conto della distanza e di DropCheckCoord.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var ok = UO.MoveItem("loot", 0, "ground");
return null;
}
}Parametri e flusso di esecuzione:
- ground_item - salvato serial dell'oggetto selezionato in uno scrigno aperto. Il baule originale non viene passato come parametro separato. amount=0 prende l'intero stack; ad esempio, 10 richiederà fino a dieci unità di questo stack.
- ground seleziona chiaramente il terreno. x/y — coordinate assolute della cella una cella lungo X dal carattere; z è preso dal carattere ed è adatto se la superficie adiacente è alla stessa altezza. Su una scala, un tavolo o un altro pavimento, impostare l'effettivo Z della superficie desiderata.
- sent=1 significa inviare una richiesta da parte del client; senza l'ottavo parametro non è prevista la conferma del server. Il valore 0 significa che la richiesta non è riuscita. Questo è il flag numerico int 1/0: check sent != 0 oppure sent == 0; il confronto con bool non è valido.
- Per resettarsi direttamente ai tuoi piedi è sufficiente UO.MoveItem('ground_item', 0, 'ground'): tutte e tre le coordinate verranno prese dal personaggio. Per posizionarlo all'interno di uno scrigno, invece di ground, specifica serial/il nome dello scrigno e le coordinate del suo gump.
UO.AddObject("ground_item");
var x = UO.GetX() + 1;
var y = UO.GetY();
var z = UO.GetZ();
var sent = UO.MoveItem("ground_item", 0, "ground", x, y, z);
if (Truth(sent == 1))
{
UO.Print("Ground move request sent");
}
else
{
UO.Print("Ground move request was not sent");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- timeout=1500 ms viene utilizzato perché waitConfirmation=true. x/y=-1 — posizionamento automatico.
- 0 può indicare un timeout per una richiesta che è già stata inviata. Non ripetere il trasferimento alla cieca; Si prega di verificare prima le condizioni attuali dell'articolo.
return RunScenario();
object? RunScenario()
{
var ok = UO.MoveItem("loot", 0, "backpack", -1, -1, 0, 1500, true);
if (Truth(ok == 0))
{
UO.Print("Move was rejected or not confirmed");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: id (Any)
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.MoveItem. -
InjectionScript.Runtime.InjectionApiUO.CompactMoveItem:CompactMoveItem(new[] { id }).
Codice interno di implementazione; non è uno script autonomo.
public int MoveItem(InjectionValue id)
=> CompactMoveItem(new[] { id });Parametri: id (Any), amount (Any)
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.MoveItem. -
InjectionScript.Runtime.InjectionApiUO.CompactMoveItem:CompactMoveItem(new[] { id, amount }).
Codice interno di implementazione; non è uno script autonomo.
public int MoveItem(InjectionValue id, InjectionValue amount)
=> CompactMoveItem(new[] { id, amount });Parametri: id (Any), amount (Any), targetContainer (Any)
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.MoveItem. -
InjectionScript.Runtime.InjectionApiUO.CompactMoveItem:CompactMoveItem(new[] { id, amount, targetContainer }).
Codice interno di implementazione; non è uno script autonomo.
public int MoveItem(InjectionValue id, InjectionValue amount, InjectionValue targetContainer)
=> CompactMoveItem(new[] { id, amount, targetContainer });Parametri: item (Any), amount (Any), container (Any), x (Any)
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.Register [MoveItem]. -
InjectionScript.Runtime.InjectionApiUO.CompactMoveItem:CompactMoveItem(values).
La chiamata esegue il delegate del gestore memorizzato. Il metodo di registrazione lo crea durante la costruzione dell’API.
Codice interno di implementazione; non è uno script autonomo.
values => new InjectionValue(CompactMoveItem(values))Parametri: item (Any), amount (Any), container (Any), x (Any), y (Any)
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.Register [MoveItem]. -
InjectionScript.Runtime.InjectionApiUO.CompactMoveItem:CompactMoveItem(values).
La chiamata esegue il delegate del gestore memorizzato. Il metodo di registrazione lo crea durante la costruzione dell’API.
Codice interno di implementazione; non è uno script autonomo.
values => new InjectionValue(CompactMoveItem(values))Parametri: id (Any), amount (Any), targetContainer (Any), x (Any), y (Any), z (Any)
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.MoveItem. -
InjectionScript.Runtime.InjectionApiUO.CompactMoveItem:CompactMoveItem(new[] { id, amount, targetContainer, x, y, z }).
Codice interno di implementazione; non è uno script autonomo.
public int MoveItem(InjectionValue id, InjectionValue amount, InjectionValue targetContainer, InjectionValue x, InjectionValue y, InjectionValue z)
=> CompactMoveItem(new[] { id, amount, targetContainer, x, y, z });Parametri: item (Any), amount (Any), container (Any), x (Any), y (Any), z (Any), timeout (Any)
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.Register [MoveItem]. -
InjectionScript.Runtime.InjectionApiUO.CompactMoveItem:CompactMoveItem(values).
La chiamata esegue il delegate del gestore memorizzato. Il metodo di registrazione lo crea durante la costruzione dell’API.
Codice interno di implementazione; non è uno script autonomo.
values => new InjectionValue(CompactMoveItem(values))
UO.MoveItem(item, amount, container, x, y, z, timeout, waitConfirmation) — UO.MoveItem(Any,Any,Any,Any,Any,Any,Any,Any)
Parametri: item (Any), amount (Any), container (Any), x (Any), y (Any), z (Any), timeout (Any), waitConfirmation (Any)
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.Register [MoveItem]. -
InjectionScript.Runtime.InjectionApiUO.CompactMoveItem:CompactMoveItem(values).
La chiamata esegue il delegate del gestore memorizzato. Il metodo di registrazione lo crea durante la costruzione dell’API.
Codice interno di implementazione; non è uno script autonomo.
values => new InjectionValue(CompactMoveItem(values))Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.MoveItems(object? container, object? itemsType, object? itemsColor, object? moveIntoID, object? x, object? y, object? z, object? delayMS);Trasferisce tutti gli oggetti idonei direttamente da un contenitore all'altro o a terra. Gli elementi sono selezionati da graphic e hue; ogni stack viene trasferito interamente. Si tratta di trasportare oggetti, non di camminare con il personaggio o di attivare interattivamente MassMove.
-
container— Numero seriale del contenitore di origine, ad esempio backpack, "backpack", nome AddObject o esadecimale-ID. Il contenuto deve essere già scaricato. 0 non è una fonte valida; ground non seleziona le cose intorno al personaggio. Per uno zaino, usa backpack anziché self. -
itemsType- Elemento grafico, ad esempio 0x0EED - oro. Non le cose ID e non il corpo mobile. Numero negativo o 0xFFFF - tutti i tipi. La maschera array/tipo non è accettata. -
itemsColor— Tonalità delle cose. -1 (o altro numero negativo) e 0xFFFF - qualsiasi; 0 - solo hue 0. Non serial e non notorietà. -
moveIntoID— Seriale del contenitore di destinazione o alias dell'oggetto. Per il tuo zaino - backpack. Per la terra - il numero 0 (anche ground/"ground"/UO.Ground()). La fonte e la destinazione devono essere diverse. -1 non è l'abbreviazione di backpack in questo comando. Self - serial mobile invece di sostituire automaticamente il suo zaino. -
x— Per un contenitore diverso da zero, la posizione ALL'INTERNO del suo gump; -1,-1 lascia il posizionamento al server. A terra - coordinate mondiali 0..65535, entrambe sono obbligatorie e non negative. Non i pixel dello schermo del mondo di gioco e non il punto finale del percorso. -
y— Per un contenitore diverso da zero, la posizione ALL'INTERNO del suo gump; -1,-1 lascia il posizionamento al server. A terra - coordinate mondiali 0..65535, entrambe sono obbligatorie e non negative. Non i pixel dello schermo del mondo di gioco e non il punto finale del percorso. -
z— Altezza del mondo quando steso a terra; utilizzare l'altitudine effettiva del sito (intervallo di protocollo -128..127). Nell'esempio del contenitore, indicare 0. Questo non è un indice del livello dell'attrezzatura. -
delayMS- Ritardo tra le richieste accettate in millisecondi. In realtà, max(GrabDelay, max(0, DelayMS)); c'è anche un'attesa dopo l'ultimo trasferimento inviato. 350 non significa elementi 350 e non garantisce la conferma in 350 ms.
Registrazione object? in realtà restituisce int 1/true se viene accettata almeno una richiesta di trasferimento, altrimenti 0/false. Questo non è un numero di elementi o una garanzia che TUTTE le corrispondenze verranno trasferite. Controlla il contenuto dopo che il server ha risposto. Una cancellazione di emergenza interrompe la procedura e non è necessario restituire false.
- Sono richiesti tutti gli otto argomenti. Un elenco di figli diretti del contenitore originale viene creato una volta; Non esiste attraversamento ricorsivo. Una volta inclusa nell'elenco, la borsa viene spostata come un unico articolo insieme al suo contenuto, anziché essere disimballata.
- Prende l'intero stack attuale di ogni partita. Il limite al numero di articoli o unità non viene impostato da questo comando; per tali scenari vedere UO.MassMove. Ignore non viene utilizzato come filtro aggiuntivo per questo campione.
- Prima di ogni azione, ricontrolla che l'articolo sia ancora nel suo contenitore originale. Il divieto di annidare un contenitore in se stesso/discendente e l'indisponibilità dell'articolo potrebbero comportare un salto. Una coda non è una transazione: le azioni già inviate non vengono ripristinate.
- Se source=0, sorgente/destinazione identica o terra con X/Y negativi, restituisce 0 e segnala un errore. Il server determina la risoluzione, la portata, la capacità e il risultato finale. Non eseguire contemporaneamente altre operazioni con gli oggetti sollevati.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il risultato di una sola chiamata viene mostrato nel diario. Un numero non viene convertito in bool; per un array viene mostrato il numero di elementi.
object? result = UO.MoveItems("lasttarget", 0x0EED, -1, "backpack", -1, -1, 0, 350);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parametri e flusso di esecuzione:
- 0x0EED - type oro; - da 1 a ItemsColor - qualsiasi hue. -1,-1 dopo backpack è la posizione automatica nel gump, non a terra. 350 ms - il ritardo minimo desiderato, tenendo conto di GrabDelay. Tutte le pile d'oro diritte vengono prese intere.
var source = Asc(UO.GetSerial("lasttarget"), 0);
if (Truth(source == 0) || Truth(source == UO.Backpack()) || !(Truth(UO.Exists(source))))
{
return null;
}
var sent = UO.MoveItems(source, 0x0EED, -1, "backpack", -1, -1, 0, 350);
if (Truth(Truth(sent) == false))
{
UO.Print("No gold transfer request was accepted");
}
int Asc(object? value, int fallback = 0) { string text = Convert.ToString(value) ?? ""; if (text.StartsWith("0x", StringComparison.OrdinalIgnoreCase)) return int.TryParse(text[2..], System.Globalization.NumberStyles.HexNumber, System.Globalization.CultureInfo.InvariantCulture, out int hex) ? hex : fallback; return int.TryParse(text, out int number) ? number : fallback; }
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- 0x0E21 - bende, non il corpo umano. backpack è la fonte, la destinazione è serial del baule. Tutte le partite sono dirette ad un punto 30,40; il server può unire gli stack o modificare la posizione.
return RunScenario();
object? RunScenario()
{
var destination = Asc(UO.GetSerial("lasttarget"), 0);
if (Truth(destination == 0) || Truth(destination == UO.Backpack()) || !(Truth(UO.Exists(destination))))
{
return null;
}
var sent = UO.MoveItems("backpack", 0x0E21, -1, destination, 30, 40, 0, 350);
if (Truth(sent != 0))
{
UO.Print("Transfer requested; verify the destination contents");
}
return null;
}
int Asc(object? value, int fallback = 0)
{
string text = Convert.ToString(value) ?? "";
if (text.StartsWith("0x", StringComparison.OrdinalIgnoreCase))
return int.TryParse(text[2..], System.Globalization.NumberStyles.HexNumber, System.Globalization.CultureInfo.InvariantCulture, out int hex) ? hex : fallback;
return int.TryParse(text, out int number) ? number : fallback;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;3. Posiziona tutte le pile diritte del type selezionato fianco a fianco sul terreno - classe dello scenario
Parametri e flusso di esecuzione:
- itemType specifica la tipologia, non la quantità; tutte le sue pile diritte vengono trasportate in uno zaino. X+1/Y/Z è un esempio di punto adiacente alla stessa altezza: per una pendenza/muro selezionare la coordinata corretta. Per la modalità mondiale è richiesta l'assegnazione 0. true indica solo una richiesta accettata, non uno zaino liberato.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
if (!(Truth(DropTypeBesideMe(0x0EED))))
{
UO.Print("No ground drop request was accepted");
}
return null;
}
dynamic DropTypeBesideMe(dynamic itemType)
{
if (!(Truth(UO.Connected())) || Truth(UO.Dead()))
{
return false;
}
var x = UO.GetX() + 1;
var y = UO.GetY();
var z = UO.GetZ();
return UO.MoveItems("backpack", itemType, -1, 0, x, y, z, 350);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
UO.MoveItems(container, itemsType, itemsColor, moveIntoID, x, y, z, delayMS) — UO.MoveItems(Any,Any,Any,Any,Any,Any,Any,Any)
Parametri: container (Any), itemsType (Any), itemsColor (Any), moveIntoID (Any), x (Any), y (Any), z (Any), delayMS (Any)
Risultato: dynamic / Any.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.MoveItems:bridge.MoveItems(Arg(0), ResolveType(arguments[1]), Arg(2), Arg(3), Arg(4), Arg(5), Arg(6), Arg(7)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(arguments[1]).
Codice interno di implementazione; non è uno script autonomo.
case "moveitems": return new InjectionValue(bridge.MoveItems(Arg(0), ResolveType(arguments[1]), Arg(2), Arg(3), Arg(4), Arg(5), Arg(6), Arg(7)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.Name();Legge il nome del personaggio.
Non ci sono parametri.
string è un nome noto al cliente. Una stringa vuota indica un valore vuoto/sconosciuto o nessun oggetto. Questo non è serial o un percorso del profilo. Il nome/titolo del gioco non è tradotto dalla lingua IDE.
- I dati locali già ricevuti vengono letti. La richiesta non apre lo stato e non forza il server a inviare un aggiornamento. Dopo la morte, la transizione della mappa o l'eliminazione di un oggetto, i valori possono cambiare tra due chiamate.
- C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il risultato di una sola chiamata viene mostrato nel diario. Un numero non viene convertito in bool; per un array viene mostrato il numero di elementi.
var result = UO.Name();
UO.Print("Name: " + Convert.ToString(result));Parametri e flusso di esecuzione:
- Non ci sono parametri: viene letto self.
- La stringa vuota viene gestita in modo esplicito; questo non è il testo "0".
var text = UO.Name();
if (Truth(text != ""))
{
UO.Print(text);
}
else
{
UO.Print("Text is unavailable");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- Il tuo carattere viene letto, il valore viene memorizzato come una linea.
- L'operatore + unisce le stringhe; Convert.ToString non è necessario per questo risultato.
return RunScenario();
object? RunScenario()
{
var text = UO.Name();
UO.Print("Player имя: " + text);
return null;
}Parametri e flusso di esecuzione:
- Entrambi i bandi si riferiscono a self; UO.Wait imposta la pausa 1000 ms.
- La differenza potrebbe significare aggiornare i dati o lasciare il mondo. L'esempio non modifica il nome o il titolo.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
async public Task<object?> RunScenarioAsync()
{
var previous = UO.Name();
await Delay(1000);
var current = UO.Name();
if (Truth(previous != current))
{
UO.Print("Updated text: " + current);
}
return null;
}
Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: Nessun parametro.
Risultato: string / String.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases [Name]. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetName:bridge.GetName(bridge.Self). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Self:bridge.Self.
La chiamata esegue il delegate del gestore memorizzato. Il metodo di registrazione lo crea durante la costruzione dell’API.
Codice interno di implementazione; non è uno script autonomo.
() => bridge.GetName(bridge.Self)Creazione API: Queste funzioni registrano l’API. Non vengono eseguite di nuovo a ogni chiamata del comando.
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.Picking();Controlla se il cursore del client è occupato da un oggetto prelevato.
Non ci sono parametri.
int 1 - ItemHold.Set abilitato; 0 - non installato. Questo è uno stato del client, non ID o una conferma di consegna del server. Viene preso in considerazione un oggetto raccolto con il mouse o con un altro script.
Il risultato del comando è un flag numerico: 1 significa una condizione soddisfatta, 0 significa una condizione non soddisfatta. Dopo var risultato = comando(...) controlla se (risultato != 0) o se (risultato == 0). Salva il risultato di una chiamata: una chiamata ripetuta può eseguire nuovamente l'azione o leggere lo stato che è già cambiato.
- La lettura non solleva né lascia cadere un oggetto.
- Per il tuo trasferimento, controlla anche il risultato di Drag/DragItem; il cursore occupato di qualcun altro non significa che l'oggetto desiderato è stato preso con successo.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il risultato di una sola chiamata viene mostrato nel diario. Un numero non viene convertito in bool; per un array viene mostrato il numero di elementi.
var result = UO.Picking();
UO.Print("Picking: " + Convert.ToString(result));Parametri e flusso di esecuzione:
- Non ci sono argomenti.
- Viene visualizzato 1 o 0.
UO.Print(Convert.ToString(UO.Picking()));Parametri e flusso di esecuzione:
- Un argomento Drag indica l'intero stack e timeout=0.
- Picking controlla il cursore condiviso del client. Non eseguire due migrazioni indipendenti contemporaneamente.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.Picking() == 0))
{
if (Truth(UO.Drag("loot")))
{
var dropped = UO.DropItem("backpack", -1, -1, 0);
}
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- Il controllo viene ripetuto fino a venti volte con pause di 50 ms.
- Il comando non rilascia il cursore né annulla la mossa di qualcun altro.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
async public Task<object?> RunScenarioAsync()
{
var tries = 0;
while (Truth(UO.Picking()) && Truth(tries < 20))
{
await Delay(50);
tries = tries + 1;
}
if (Truth(UO.Picking()))
{
UO.Print("Cursor is still occupied");
}
return null;
}
Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: Nessun parametro.
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.Picking. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Picking:bridge.Picking().
Codice interno di implementazione; non è uno script autonomo.
public int Picking() => bridge.Picking();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ReceiveObjectName(object? id);
void UO.ReceiveObjectName(object? id, object? timeout);Richiede il nome di un oggetto con una richiesta con un solo clic.
-
id— Oggetto seriale/ID: int, stringa numerica/esadecimale o alias stabilito, ad esempio "lasttarget". Questo non è graphic/type. Controllare l'oggetto caricato prima di agire. -
timeout- Opzionale int, millisecondi; l'impostazione predefinita è 0. Un valore negativo non aggiunge anticipazione.
void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.
- Bridge.ReceiveObjectName chiama Click(id), quindi attende fino a quando max(0,timeout) finché GetName(id) è vuoto; pausa non superiore a 25 ms. Un nome già noto mette subito fine all'attesa.
- Senza timeout, viene eseguito solo Click. Non esiste un nome di ritorno: leggi GetName separatamente; la fine dell'attesa può significare timeout.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.ReceiveObjectName");
UO.ReceiveObjectName("lasttarget");Parametri e flusso di esecuzione:
- Richiede il nome di un oggetto con una richiesta con un solo clic.
UO.ReceiveObjectName("lasttarget");Parametri e flusso di esecuzione:
- Bridge.ReceiveObjectName chiama Click(id), quindi attende fino a quando max(0,timeout) finché GetName(id) è vuoto; pausa non superiore a 25 ms. Un nome già noto mette subito fine all'attesa.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.Exists("lasttarget")))
{
UO.ReceiveObjectName("lasttarget", 1000);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- Senza timeout, viene eseguito solo Click. Non esiste un nome di ritorno: leggi GetName separatamente; la fine dell'attesa può significare timeout.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var id = UO.GetSerial("lasttarget");
if (Truth(UO.Exists(id)))
{
UO.ReceiveObjectName(id, 1000);
UO.Print(UO.GetName(id));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: id (Any)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ReceiveObjectName. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ReceiveObjectName:bridge.ReceiveObjectName(GetObject(id), 0). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id).
Codice interno di implementazione; non è uno script autonomo.
public void ReceiveObjectName(InjectionValue id) => bridge.ReceiveObjectName(GetObject(id), 0);Parametri: id (Any), timeout (Any)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ReceiveObjectName. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ReceiveObjectName:bridge.ReceiveObjectName(GetObject(id), NumberConversions.ToInt(timeout)). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(timeout).
Codice interno di implementazione; non è uno script autonomo.
public void ReceiveObjectName(InjectionValue id, InjectionValue timeout) => bridge.ReceiveObjectName(GetObject(id), NumberConversions.ToInt(timeout));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.TicksUse();Legge il contrassegno salvato TicksUse.
Non ci sono parametri.
int: indica UO.Timer in decimi di secondo dall'inizio del runtime. 0 - la boa non è stata ancora posizionata oppure l'evento è avvenuto nel primo decimo di secondo; non sono i millisecondi o l'ora del calendario.
- Restituisce il campo ticksUse. Viene aggiornato da UseObject; non si tratta di un'osservazione automatica di tutte le attività manuali/server. Il comando in sé non modifica il segno.
- UO.Timer() - il voto calcola l'età in decimi di secondo. I voti non vengono confrontati tra tempi di esecuzione diversi.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il risultato di una sola chiamata viene mostrato nel diario. Un numero non viene convertito in bool; per un array viene mostrato il numero di elementi.
var result = UO.TicksUse();
UO.Print("TicksUse: " + Convert.ToString(result));Parametri e flusso di esecuzione:
- Legge il contrassegno salvato TicksUse.
var stamp = UO.TicksUse();
UO.Print(stamp);Parametri e flusso di esecuzione:
- Restituisce il campo ticksUse. Viene aggiornato da UseObject; non si tratta di un'osservazione automatica di tutte le attività manuali/server. Il comando in sé non modifica il segno.
return RunScenario();
object? RunScenario()
{
var stamp = UO.TicksUse();
var ageTenths = UO.Timer() - stamp;
UO.Print(ageTenths);
return null;
}Parametri e flusso di esecuzione:
- UO.Timer() - il voto calcola l'età in decimi di secondo. I voti non vengono confrontati tra tempi di esecuzione diversi.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var before = UO.TicksUse();
UO.Wait(250);
var after = UO.TicksUse();
UO.Print(before = after);
return null;
}
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: Nessun parametro.
Risultato: int / Integer.
Durante la chiamata:
Codice interno di implementazione; non è uno script autonomo.
public int TicksUse() => ticksUse;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.UpdateObject(object? id);Richiede un aggiornamento a un oggetto già caricato.
-
id— Oggetto seriale/ID: int, stringa numerica/esadecimale o alias stabilito, ad esempio "lasttarget". Questo non è graphic/type. Controllare l'oggetto caricato prima di agire.
void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.
- Per Mobile, viene chiamato RequestMobileStatus(..., true), per Articolo - SingleClick. Se serial non è presente in entrambe le tabelle locali, non vi è alcuna azione. Questo non sta scaricando un oggetto sconosciuto o confermando un aggiornamento.
- Bridge invia la richiesta sullo streaming del gioco. Si applicano le regole del server; Non è prevista l'attesa di conferma.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.UpdateObject");
UO.UpdateObject(UO.GetSerial("lasttarget"));Parametri e flusso di esecuzione:
- Richiede un aggiornamento a un oggetto già caricato.
var id = UO.GetSerial("lasttarget");
if (Truth(UO.Exists(id)))
{
UO.UpdateObject(id);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- Per Mobile, viene chiamato RequestMobileStatus(..., true), per Articolo - SingleClick. Se serial non è presente in entrambe le tabelle locali, non vi è alcuna azione. Questo non sta scaricando un oggetto sconosciuto o confermando un aggiornamento.
return RunScenario();
object? RunScenario()
{
var id = UO.GetSerial("self");
if (Truth(UO.Exists(id)))
{
UO.UpdateObject(id);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- Bridge invia la richiesta sullo streaming del gioco. Si applicano le regole del server; Non è prevista l'attesa di conferma.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
ApplyToLoaded(UO.GetSerial("lasttarget"));
return null;
}
void ApplyToLoaded(dynamic id)
{
if (Truth(UO.Exists(id)))
{
UO.UpdateObject(id);
}
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: id (Any)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.UpdateObject. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.UpdateObject:bridge.UpdateObject(GetObject(id)). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id).
Codice interno di implementazione; non è uno script autonomo.
public void UpdateObject(InjectionValue id) => bridge.UpdateObject(GetObject(id));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.UseFromGround(object? @type);
int UO.UseFromGround(object? @type, object? color);Cerca un oggetto del graphic dato sul terreno/nel mondo e richiama immediatamente la sua applicazione. Solitamente utilizzato per oggetti vicini, come l'apertura di uno zaino. Una caratteristica importante di questo runtime: la ricerca è basata su FindType e può trovare anche mobile con lo stesso body; Questa non è strettamente una selezione di soli articoli. Per gli elementi con un raggio esplicito e una selezione più vicina, utilizzare UseType(..., ground, ...).
-
type- Obbligatorio graphic. Ad esempio, 0x0E75 è uno zaino. Numero o stringa esadecimale numerica; numero negativo/0xFFFF — qualsiasi graphic. Valori corporei come 0x0190 (maschio) e 0x0191 (femmina) possono selezionare mobile; non sostituirli con l'elemento type. Con questo modulo non vengono trasmessi due tipi contemporaneamente. -
color- Opzionale hue, predefinito - 1 (qualsiasi). Numero negativo/0xFFFF - qualsiasi, 0 - solo hue 0. Non ci sono altri parametri: contenitore, distanza, più vicino e maxZ non vengono aggiunti a questo comando.
int - serial del primo oggetto trovato, passato a UseObject, o 0. Questo non è il numero di oggetti, non graphic e non true/false. L'oggetto potrebbe essere trovato, ma il server potrebbe non consentirne l'utilizzo. Controlla l'id != 0 e l'effetto di gioco previsto separatamente.
- Utilizza la corrente FindDistance e FindVertical, tiene conto di Ignore. Il contenitore di ricerca è fisso come ground, il contenuto nidificato non viene attraversato. I cellulari escludono self; non esiste alcuna restrizione separata su vita/visibilità/notorietà.
- Aggiorna FindItem/FindCount/GetFoundItems con tutte le corrispondenze della ricerca, ma applica solo il primo risultato. Non è garantito quello più vicino; gli oggetti del mondo vengono controllati prima dei cellulari.
- Non raccoglie un oggetto nello zaino, non muove il personaggio, non attende la risposta del server o la fine del bersaglio. Se non c'è corrispondenza, stampa un messaggio. Per effettuare la ricerca senza un'azione, utilizzare UO.FindType.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il risultato di una sola chiamata viene mostrato nel diario. Un numero non viene convertito in bool; per un array viene mostrato il numero di elementi.
var result = UO.UseFromGround(0x0E75);
UO.Print("UseFromGround: " + Convert.ToString(result));Parametri e flusso di esecuzione:
- solo type; qualsiasi hue. Vengono utilizzati gli attuali FindDistance/FindVertical. bag - ID del primo risultato, non necessariamente quello più vicino. Il contenuto si aprirà solo se il server lo consente.
var bag = UO.UseFromGround(0x0E75);
if (Truth(bag != 0))
{
UO.AddObject("ground_bag", bag);
}
else
{
UO.Print("No loaded ground backpack matches the search settings");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- La ricerca è limitata a due celle e lo stesso Z. Il colore 0x0044 è dato a titolo di esempio: sostituiscilo con hue del tuo articolo. Le impostazioni vengono ripristinate anche in caso di errore.
return RunScenario();
object? RunScenario()
{
var oldDistance = UO.FindDistance();
var oldZ = UO.FindVertical();
try
{
UO.FindDistance(2);
UO.FindVertical(0);
var bag = UO.UseFromGround(0x0E75, 0x0044);
if (Truth(bag != 0))
{
UO.AddObject("colored_ground_bag", bag);
}
}
finally
{
UO.FindDistance(oldDistance);
UO.FindVertical(oldZ);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- raggio specifica FindDistance anziché il terzo argomento UseFromGround. 3000 ms — tempo di visualizzazione dell'esempio, non di conferma dell'apertura; tipo di finestra 3 - contenitore. I risultati di questa ricerca rimangono in Trova*.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
async public Task<object?> RunScenarioAsync()
{
var selected = OpenGroundBagWithin(2);
if (Truth(selected != 0))
{
await Delay(3000);
UO.CloseClientUIWindow(3, selected);
}
return null;
}
dynamic OpenGroundBagWithin(dynamic radius)
{
var previous = UO.FindDistance();
try
{
UO.FindDistance(radius);
return UO.UseFromGround(0x0E75, -1);
}
finally
{
UO.FindDistance(previous);
}
}
Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: type (Any)
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.UseFromGround. -
InjectionScript.Runtime.InjectionApiUO.UseFromGround:UseFromGround(type, new InjectionValue(-1)).
Codice interno di implementazione; non è uno script autonomo.
public int UseFromGround(InjectionValue type) => UseFromGround(type, new InjectionValue(-1));Parametri: type (Any), color (Any)
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.UseFromGround. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.FindType:bridge.FindType(ResolveType(type), NumberConversions.ToInt(color), 1, -1, false). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(color). -
InjectionScript.Runtime.InjectionApiUO.UseObject:UseObject(id). -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage("No matching item found on ground.").
Codice interno di implementazione; non è uno script autonomo.
public int UseFromGround(InjectionValue type, InjectionValue color)
{
int id = bridge.FindType(ResolveType(type), NumberConversions.ToInt(color), 1, -1, false);
if (id != 0)
UseObject(id);
else
SystemMessage("No matching item found on ground.");
return id;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.UseItemOnMobile(object? itemSerial, object? targetSerial);Prepara il bersaglio del personaggio e usa l'oggetto.
-
itemSerial— Oggetto seriale/ID: int, stringa numerica/esadecimale o alias stabilito, ad esempio "lasttarget". Questo non è graphic/type. Controllare l'oggetto caricato prima di agire. -
targetSerial— Oggetto seriale/ID: int, stringa numerica/esadecimale o alias stabilito, ad esempio "lasttarget". Questo non è graphic/type. Controllare l'oggetto caricato prima di agire.
void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.
- ExecuteClientApiCompatibility chiama prima il bridge.WaitTargetObject(TargetSerial), poi il bridge.UseObject(ItemSerial). Gli argomenti non vengono scambiati. Queste chiamate bridge dirette non aggiornano il runtime TicksTarget/TicksUse.
- Non controlla il tipo di destinazione/elemento e non attende il cursore. Preparare il bersaglio prima dell'uso impedisce di perdere un bersaglio che arriva rapidamente, ma il server determina comunque se l'azione è valida.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.UseItemOnMobile");
UO.UseItemOnMobile("0x40001234", "self");Parametri e flusso di esecuzione:
- Prepara il bersaglio del personaggio e usa l'oggetto.
UO.UseItemOnMobile("0x40001234", "self");Parametri e flusso di esecuzione:
- ExecuteClientApiCompatibility chiama prima il bridge.WaitTargetObject(TargetSerial), poi il bridge.UseObject(ItemSerial). Gli argomenti non vengono scambiati. Queste chiamate bridge dirette non aggiornano il runtime TicksTarget/TicksUse.
return RunScenario();
object? RunScenario()
{
var item = UO.GetSerial("lastobject");
var mobile = UO.GetSerial("lasttarget");
if (Truth(UO.Exists(item)) && Truth(UO.Exists(mobile)))
{
UO.UseItemOnMobile(item, mobile);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- Non controlla il tipo di destinazione/elemento e non attende il cursore. Preparare il bersaglio prima dell'uso impedisce di perdere un bersaglio che arriva rapidamente, ma il server determina comunque se l'azione è valida.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var item = UO.GetSerial("lastobject");
if (Truth(UO.Exists(item)))
{
UO.UseItemOnMobile(item, "self");
UO.Print(UO.Waiting());
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: itemSerial (Any), targetSerial (Any)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.WaitTargetObject:bridge.WaitTargetObject(Arg(1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(1). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.UseObject:bridge.UseObject(Arg(0)).
Codice interno di implementazione; non è uno script autonomo.
case "useitemonmobile": bridge.WaitTargetObject(Arg(1)); bridge.UseObject(Arg(0)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.UseObject(object? objID);Richiede l'utilizzo di un oggetto da serial. Chiamate del bridge GameActions.DoubleClick; L'elemento non è stato cercato type.
-
objID— Oggetto seriale/ID: int, stringa numerica/esadecimale o alias stabilito, ad esempio "lasttarget". Questo non è graphic/type. Controllare l'oggetto caricato prima di agire.
void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.
- GetObject consente l'alias; il nome sconosciuto dà -1. Dopo la chiamata, il runtime aggiorna TicksUse con il valore di UO.Timer; Questo è il momento della richiesta, non della conferma da parte del server.
- Bridge invia la richiesta sullo streaming del gioco. Si applicano le regole del server; Non è prevista l'attesa di conferma.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.UseObject");
UO.UseObject(UO.GetSerial("lasttarget"));Parametri e flusso di esecuzione:
- Richiede l'utilizzo di un oggetto da serial. Chiamate del bridge GameActions.DoubleClick; L'elemento non è stato cercato type.
var id = UO.GetSerial("lasttarget");
if (Truth(UO.Exists(id)))
{
UO.UseObject(id);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- GetObject consente l'alias; il nome sconosciuto dà -1. Dopo la chiamata, il runtime aggiorna TicksUse con il valore di UO.Timer; Questo è il momento della richiesta, non della conferma da parte del server.
return RunScenario();
object? RunScenario()
{
var id = UO.GetSerial("self");
if (Truth(UO.Exists(id)))
{
UO.UseObject(id);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- Bridge invia la richiesta sullo streaming del gioco. Si applicano le regole del server; Non è prevista l'attesa di conferma.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
ApplyToLoaded(UO.GetSerial("lasttarget"));
return null;
}
void ApplyToLoaded(dynamic id)
{
if (Truth(UO.Exists(id)))
{
UO.UseObject(id);
}
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: objID (Any/Integer/String)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.UseObject:bridge.UseObject(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Codice interno di implementazione; non è uno script autonomo.
case "useobject": bridge.UseObject(Arg(0)); return InjectionValue.Unit;Parametri: objID (Any/Integer/String)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.UseObject. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.UseObject:bridge.UseObject(id). -
InjectionScript.Runtime.InjectionApiUO.Timer:Timer().
Codice interno di implementazione; non è uno script autonomo.
public void UseObject(int id)
{
bridge.UseObject(id);
ticksUse = Timer();
}Parametri: objID (Any/Integer/String)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.UseObject. -
InjectionScript.Runtime.InjectionApiUO.UseObject:UseObject(GetObject(id)). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id).
Codice interno di implementazione; non è uno script autonomo.
public void UseObject(string id) => UseObject(GetObject(id));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.UseType(object? @type);
int UO.UseType(object? @type, object? color);
int UO.UseType(object? @type, object? color, object? container);
int UO.UseType(object? @type, object? color, object? container, object? distance);
int UO.UseType(object? @type, object? color, object? container, object? distance, object? nearest);
int UO.UseType(object? @type, object? color, object? container, object? distance, object? nearest, object? maxZ);Trova un elemento del graphic/type desiderato e lo applica. Ad esempio, bevi una pozione da uno zaino, apri uno zaino vicino o usa un oggetto da un contenitore selezionato. Questo comando non cerca né sposta il personaggio. Se un elemento richiede un ambito, l'obiettivo deve essere preparato separatamente.
-
type— Grafica dell'articolo: numero o stringa esadecimale; ad esempio, 0x0F0C è un tipo di pozione curativa, 0x0E75 è uno zaino. Questo non è un carattere serial o body. Un numero negativo o 0xFFFF consente qualsiasi type; per un'azione significativa, è meglio graphic accurato. -
color— Tonalità dell'elemento, predefinita - 1 (qualsiasi). Qualsiasi numero negativo o 0xFFFF rimuove il filtro; 0 sceglie l'oggetto non verniciato. Non la notorietà e non il colore del testo. -
container— Predefinito -1: il tuo zaino e i sottocontainer caricati. "my" significa la stessa cosa. "backpack" o l'esplicito serial del contenitore specifica la radice dell'attraversamento ricorsivo. ground/"ground"/UO.Ground(), i numerici 0/1 denotano solo oggetti del mondo. Self non è sinonimo di backpack; utilizzare uno zaino esplicito. Un alias di oggetto sconosciuto/nullo può essere risolto come uno zaino: prima controlla il contenitore trasferito usando Exists. -
distance— Intervallo geometrico massimo X/Y, non la lunghezza del percorso. L'argomento predefinito o negativo è FindDistance. 0 significa la stessa cella. Per gli oggetti in un contenitore, il cliente tiene conto della distanza dal proprietario. -
nearest— Predefinito true: seleziona la cosa più vicina, se uguale, quella più piccola serial. false: trovato per primo nell'attraversamento senza ordinamento. Non il numero di articoli o la modalità di esecuzione. -
maxZ— Massima differenza assoluta tra l'altezza del mondo Z e il personaggio. L'argomento predefinito o negativo è FindVertical. 0 richiede la stessa Z. Per l'oggetto nella borsa viene utilizzata l'altezza del contenitore esterno a terra o il carattere del proprietario; le coordinate Gump interne non sono considerate coordinate mondiali. Questo è un filtro di altezza, non un controllo della pedonabilità o della linea di vista.
int - serial dell'articolo per il quale viene chiamato UseObject; 0 se non ci sono corrispondenze. Anche la registrazione con ReturnKind object? in realtà restituisce un numero. Questo non è true/false o conferma d'uso da parte del server: controlla used != 0 anziché used == true. Affinché l'effetto abbia esito positivo, è necessario un controllo separato dello stato, del contenuto o del registro.
- Da 1 a 6 argomenti. Per impostare l'intervallo, specificare anche colore e contenitore. Per specificare maxZ, completare tutte e sei le posizioni. Array type, maschera tramite | e obiettivi aggiuntivi non sono accettati da questo comando.
- Le forme regolari con int/string e le forme estese utilizzano CompactUseType: solo elementi, Ignore, distanza e altezza; i contenitori vengono attraversati in modo ricorsivo sul contenuto già caricato. Il contenitore di caricamento non si apre automaticamente. FindItem/FindCount/GetFoundItems non vengono aggiornati da questo ramo.
- L'altezza dei proprietari e dei contenitori condivisi viene calcolata una volta per chiamata per evitare di ripetere l'attraversamento per ogni stack. Una catena di contenitori circolare o eccessivamente profonda (collegamenti 128 senza radice trovata) non viene utilizzata come corrispondenza di altezza.
- Mantiene una registrazione compatibile comune di due object?: instrada una chiamata al bridge.UseType utilizzando FindType sullo zaino, aggiornando Trova* e selezionando il primo risultato. Per una forma compatta prevedibile, utilizzare int/string anziché conversioni implicite di tipi di valore inappropriati.
- UseObject invia un'azione di lancio, ma il comando non attende il bersaglio, la guarigione, il bere, l'apertura di una finestra o il guasto del server. L'intervallo di ricerca non estende l'intervallo di utilizzo consentito dal server.
- Se non c'è corrispondenza, il modulo compatto stampa il messaggio e restituisce 0. Se non è presente alcun carattere/collegamento, il risultato non deve essere considerato permesso di agire. Per ID preciso utilizzare UO.UseObject.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il risultato di una sola chiamata viene mostrato nel diario. Un numero non viene convertito in bool; per un array viene mostrato il numero di elementi.
var result = UO.UseType(0x0F0C);
UO.Print("UseType: " + Convert.ToString(result));Parametri e flusso di esecuzione:
- 0x0F0C è un esempio di un tipo standard di pozione curativa. Il server può rifiutare l'azione a causa delle condizioni del carattere, della latenza o delle proprie regole. Colore e gamma non sono specificati separatamente: si applicano le impostazioni predefinite.
if (!(Truth(UO.Connected())) || Truth(UO.Dead()))
{
return null;
}
var used = UO.UseType(0x0F0C);
if (Truth(used == 0))
{
UO.Print("No matching healing potion in the loaded backpack");
}
else
{
UO.Print("Potion use requested; check health and the game message");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- 0x0E75 — type di uno zaino, -1 — qualsiasi hue, ground — oggetti del mondo. 2 - celle X/Y, true - più vicine, 4 - differenza Z. Restituzione bagaglio — ID. L'accesso ai contenuti è determinato dal server; la squadra non ritira lo zaino.
return RunScenario();
object? RunScenario()
{
var bag = UO.UseType(0x0E75, -1, "ground", 2, true, 4);
if (Truth(bag != 0))
{
UO.AddObject("nearby_bag", bag);
}
else
{
UO.Print("No suitable ground backpack within the selected bounds");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- itemType — graphic cose, fonte — contenitore serial separato. L'aiutante restituisce serial/0 come UseType. Anche un oggetto trovato può essere impedito dal server di essere utilizzato da qualcun altro o da un contenitore remoto.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var source = Asc(UO.GetSerial("lasttarget"), 0);
if (Truth(source == 0) || !(Truth(UO.Exists(source))))
{
return null;
}
UO.AddObject("supply", source);
var used = UseFromNamedSupply(0x0F0C);
if (Truth(used == 0))
{
UO.Print("Supply item was not found with these filters");
}
return null;
}
dynamic UseFromNamedSupply(dynamic itemType)
{
var source = Asc(UO.GetSerial("supply"), 0);
if (Truth(source == 0) || !(Truth(UO.Exists(source))))
{
return 0;
}
return UO.UseType(itemType, 0, source, 2, false, 16);
}
int Asc(object? value, int fallback = 0)
{
string text = Convert.ToString(value) ?? "";
if (text.StartsWith("0x", StringComparison.OrdinalIgnoreCase))
return int.TryParse(text[2..], System.Globalization.NumberStyles.HexNumber, System.Globalization.CultureInfo.InvariantCulture, out int hex) ? hex : fallback;
return int.TryParse(text, out int number) ? number : fallback;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: type (Integer/String)
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.UseType. -
InjectionScript.Runtime.InjectionApiUO.UseType:UseType(type, -1).
Codice interno di implementazione; non è uno script autonomo.
public int UseType(int type) => UseType(type, -1);Parametri: type (Integer/String)
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.UseType. -
InjectionScript.Runtime.InjectionApiUO.UseType:UseType(ResolveType(type)). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type).
Codice interno di implementazione; non è uno script autonomo.
public int UseType(string type) => UseType(ResolveType(type));Parametri: type (Any/Integer/String), color (Any/Integer/String)
Risultato: int / Any.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.UseType:bridge.UseType(ResolveType(arguments[0]), arguments.Length > 1 ? Arg(1) : -1). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(arguments[0]). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(1).
Codice interno di implementazione; non è uno script autonomo.
case "usetype": return new InjectionValue(bridge.UseType(ResolveType(arguments[0]), arguments.Length > 1 ? Arg(1) : -1));Parametri: type (Any/Integer/String), color (Any/Integer/String)
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.UseType. -
InjectionScript.Runtime.InjectionApiUO.CompactUseType:CompactUseType(new[] { new InjectionValue(type), new InjectionValue(color) }).
Codice interno di implementazione; non è uno script autonomo.
public int UseType(int type, int color) => CompactUseType(new[]
{
new InjectionValue(type),
new InjectionValue(color)
});Parametri: type (Any/Integer/String), color (Any/Integer/String)
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.UseType. -
InjectionScript.Runtime.InjectionApiUO.UseType:UseType(type, NumberConversions.ToInt(color)). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(color).
Codice interno di implementazione; non è uno script autonomo.
public int UseType(int type, string color) => UseType(type, NumberConversions.ToInt(color));Parametri: type (Any/Integer/String), color (Any/Integer/String)
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.UseType. -
InjectionScript.Runtime.InjectionApiUO.UseType:UseType(ResolveType(type), color). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type).
Codice interno di implementazione; non è uno script autonomo.
public int UseType(string type, int color) => UseType(ResolveType(type), color);Parametri: type (Any/Integer/String), color (Any/Integer/String)
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.UseType. -
InjectionScript.Runtime.InjectionApiUO.UseType:UseType(ResolveType(type), NumberConversions.ToInt(color)). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(color).
Codice interno di implementazione; non è uno script autonomo.
public int UseType(string type, string color) => UseType(ResolveType(type), NumberConversions.ToInt(color));Parametri: type (Any), color (Any), container (Any)
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.Register [UseType]. -
InjectionScript.Runtime.InjectionApiUO.CompactUseType:CompactUseType(values).
La chiamata esegue il delegate del gestore memorizzato. Il metodo di registrazione lo crea durante la costruzione dell’API.
Codice interno di implementazione; non è uno script autonomo.
values => new InjectionValue(CompactUseType(values))Parametri: type (Any), color (Any), container (Any), distance (Any)
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.Register [UseType]. -
InjectionScript.Runtime.InjectionApiUO.CompactUseType:CompactUseType(values).
La chiamata esegue il delegate del gestore memorizzato. Il metodo di registrazione lo crea durante la costruzione dell’API.
Codice interno di implementazione; non è uno script autonomo.
values => new InjectionValue(CompactUseType(values))Parametri: type (Any), color (Any), container (Any), distance (Any), nearest (Any)
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.Register [UseType]. -
InjectionScript.Runtime.InjectionApiUO.CompactUseType:CompactUseType(values).
La chiamata esegue il delegate del gestore memorizzato. Il metodo di registrazione lo crea durante la costruzione dell’API.
Codice interno di implementazione; non è uno script autonomo.
values => new InjectionValue(CompactUseType(values))Parametri: type (Any), color (Any), container (Any), distance (Any), nearest (Any), maxZ (Any)
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.Register [UseType]. -
InjectionScript.Runtime.InjectionApiUO.CompactUseType:CompactUseType(values).
La chiamata esegue il delegate del gestore memorizzato. Il metodo di registrazione lo crea durante la costruzione dell’API.
Codice interno di implementazione; non è uno script autonomo.
values => new InjectionValue(CompactUseType(values))Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.UseWorldObject(object? serialOrName);Abilita da serialOrName a GetObject e chiama UseObject. Il nome della stringa è un alias dell'oggetto, non il nome graphic/type.
-
serialOrName— Oggetto seriale/ID: int, stringa numerica/esadecimale o alias stabilito, ad esempio "lasttarget". Questo non è graphic/type. Controllare l'oggetto caricato prima di agire.
void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.
- Registrato nei metadati direttamente su UserObject. Questo è un uso normale di serial, non una ricerca a livello di server.
- Bridge invia la richiesta sullo streaming del gioco. Si applicano le regole del server; Non è prevista l'attesa di conferma.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.UseWorldObject");
UO.UseWorldObject(UO.GetSerial("lasttarget"));Parametri e flusso di esecuzione:
- Abilita da serialOrName a GetObject e chiama UseObject. Il nome della stringa è un alias dell'oggetto, non il nome graphic/type.
var id = UO.GetSerial("lasttarget");
if (Truth(UO.Exists(id)))
{
UO.UseWorldObject(id);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- Registrato nei metadati direttamente su UserObject. Questo è un uso normale di serial, non una ricerca a livello di server.
return RunScenario();
object? RunScenario()
{
var id = UO.GetSerial("self");
if (Truth(UO.Exists(id)))
{
UO.UseWorldObject(id);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- Bridge invia la richiesta sullo streaming del gioco. Si applicano le regole del server; Non è prevista l'attesa di conferma.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
ApplyToLoaded(UO.GetSerial("lasttarget"));
return null;
}
void ApplyToLoaded(dynamic id)
{
if (Truth(UO.Exists(id)))
{
UO.UseWorldObject(id);
}
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: serialOrName (Any)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.UserObject. -
InjectionScript.Runtime.InjectionApiUO.UseObject:UseObject(GetObject(serialOrName)). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(serialOrName).
Codice interno di implementazione; non è uno script autonomo.
public void UserObject(InjectionValue serialOrName)
=> UseObject(GetObject(serialOrName));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.UserObject(object? serialOrName);Abilita da serialOrName a GetObject e chiama UseObject. Il nome della stringa è un alias dell'oggetto, non il nome graphic/type.
-
serialOrName— Oggetto seriale/ID: int, stringa numerica/esadecimale o alias stabilito, ad esempio "lasttarget". Questo non è graphic/type. Controllare l'oggetto caricato prima di agire.
void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.
- Stesso percorso di utilizzo di UO.UseWorldObject. Il comando non crea un oggetto personalizzato né aggiunge il nome AddObject.
- Bridge invia la richiesta sullo streaming del gioco. Si applicano le regole del server; Non è prevista l'attesa di conferma.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.UserObject");
UO.UserObject(UO.GetSerial("lasttarget"));Parametri e flusso di esecuzione:
- Abilita da serialOrName a GetObject e chiama UseObject. Il nome della stringa è un alias dell'oggetto, non il nome graphic/type.
var id = UO.GetSerial("lasttarget");
if (Truth(UO.Exists(id)))
{
UO.UserObject(id);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- Stesso percorso di utilizzo di UO.UseWorldObject. Il comando non crea un oggetto personalizzato né aggiunge il nome AddObject.
return RunScenario();
object? RunScenario()
{
var id = UO.GetSerial("self");
if (Truth(UO.Exists(id)))
{
UO.UserObject(id);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- Bridge invia la richiesta sullo streaming del gioco. Si applicano le regole del server; Non è prevista l'attesa di conferma.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
ApplyToLoaded(UO.GetSerial("lasttarget"));
return null;
}
void ApplyToLoaded(dynamic id)
{
if (Truth(UO.Exists(id)))
{
UO.UserObject(id);
}
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: serialOrName (Any)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.UserObject. -
InjectionScript.Runtime.InjectionApiUO.UseObject:UseObject(GetObject(serialOrName)). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(serialOrName).
Codice interno di implementazione; non è uno script autonomo.
public void UserObject(InjectionValue serialOrName)
=> UseObject(GetObject(serialOrName));ClassicUO — Bad Newbie & C# Scripts IDE