IT UO Topic menus context menus - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Menu e menu contestuali

Home · C# · IDE · UO API · A–Z · Esempi · Lingue

Vecchi menu, menu contestuali e immissione di testo. Questi sono meccanismi separati; prendere il numero della voce dalla risposta del menù desiderato.

Sezioni

Argomento Comandi e spiegazioni
AutoMenu UO.AutoMenu
WaitMenu UO.WaitMenu
Menu Hooks UO.MenuHookPresent · UO.CancelAllMenuHooks
Voci di menu UO.GetMenuItems · UO.GetMenuItemsEx · UO.GetLastMenuItems
CancelMenu UO.CancelMenu
Context Menu UO.GetContextMenu · UO.ClearContextMenu
RequestContextMenu UO.RequestContextMenu
Context Menu Hooks UO.SetContextMenuHook

Tutti i comandi del tema

Menù

UO.AutoMenu · UO.WaitMenu · UO.GetMenuItems · UO.GetMenuItemsEx · UO.GetLastMenuItems · UO.MenuHookPresent · UO.MenuPresent · UO.CancelAllMenuHooks · UO.CancelMenu · UO.CloseMenu · UO.WaitingForMenu · UO.WaitingMenu

Menù contestuale

UO.GetContextMenu · UO.RequestContextMenu · UO.SetContextMenuHook · UO.ClearContextMenu

Inserimento di testo

UO.WaitTextEntry · UO.ConsoleEntryReply · UO.ConsoleEntryUnicodeReply

Esempi sull'argomento

Ogni carta comando ha diversi scenari indipendenti: codice diretto, funzioni e classi. Di seguito sono selezionati brevi scenari; restrizioni e un'analisi completa sono nelle carte.

UO.RequestContextMenu

Parametri, risultato e tutti gli scenari

var id = UO.GetSerial("lasttarget");
if (Truth(UO.Exists(id)))
{
    UO.RequestContextMenu(id);
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

UO.WaitMenu

Parametri, risultato e tutti gli scenari

UO.WaitMenu("Craft", "Tools");

Riferimento completo dei comandi


UO.AutoMenu

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.AutoMenu(object? prompt, object? choice);

Registra un hook di menu persistente: quando viene visualizzato un menu del server con una didascalia adatta, il client seleziona la voce appropriata. La chiamata non apre il menu e non lo attende in modo sincrono.

Parametri

  • prompt — sottostringa del titolo del menu del server.
  • choice — sottostringa della firma della voce di menu.

Valore restituito

void. La chiamata registra solo un hook e non segnala se il menu è stato trovato o se la voce è stata selezionata con successo.

Comportamento

  • Ogni volta che il client viene aggiornato, l'hook cerca un menu del server che non è stato ancora chiuso e il cui titolo contiene prompt. Se viene trovato un elemento la cui firma contiene choice, il client lo seleziona. L'hook rimane registrato dopo la selezione, quindi funzionerà sui successivi menu di abbinamento. Puoi rimuovere i ganci usando UO.CancelMenu().

Script C# autonomi

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.

Esempio semplice

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.AutoMenu");
UO.AutoMenu("Choose material", "Copper");

1. Attendi un menu dal titolo "Scegli materiale" e seleziona la voce con il testo "Rame". - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Attendi un menu dal titolo "Scegli materiale" e seleziona la voce con il testo "Rame".
UO.AutoMenu("Choose material", "Copper");

2. Le sottostringhe vengono confrontate senza distinzione tra maiuscole e minuscole; l'aggancio influisce anche sui successivi menu abbinati. - funzione di script

Parametri e flusso di esecuzione:

  • Le sottostringhe vengono confrontate senza distinzione tra maiuscole e minuscole; l'aggancio influisce anche sui successivi menu abbinati.
return  RunScenario();
 object? RunScenario()
{
    var menuCaption = "choose color";
    var itemCaption = "blue";
    UO.AutoMenu(menuCaption, itemCaption);
    return null;
}

3. Registra un hook per la durata di questa attività, quindi elimina tutti gli hook per questo client. - lezione di sceneggiatura

Parametri e flusso di esecuzione:

  • Registra un hook per la durata di questa attività, quindi elimina tutti gli hook per questo client.
  • È possibile eseguire altre azioni di script prima che venga visualizzato il menu.
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()
    {
        UO.AutoMenu("Choose material", "Iron");
        UO.CancelMenu();
        return null;
    }
}

Implementazione del comando

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.AutoMenu(prompt, choice) — UO.AutoMenu(Any,Any)

Parametri: prompt (Any), choice (Any)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "automenu":

                    if (arguments.Length >= 2) bridge.AddMenuHook(arguments[0].ToString(), arguments[1].ToString(), true);

                    break;

UO.CancelAllMenuHooks

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.CancelAllMenuHooks();

Rimuove tutti gli hook automatici registrati dai vecchi menu del server client.

Parametri

Non ci sono parametri.

Valore restituito

void: nessun valore restituito.

Comportamento

  • Chiama il direttore ClearMenuHooks. Le regole di selezione singole e persistenti vengono rimosse, incluse AutoMenu e WaitMenu. Questo comando non chiude i menu già aperti; CloseMenu viene utilizzato per questo.

Script C# autonomi

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.

Esempio semplice

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.CancelAllMenuHooks");
UO.CancelAllMenuHooks();

1. Rimuovi tutti gli hook: script diretto

Parametri e flusso di esecuzione:

  • La rimozione si applica all'intero set di hook del menu client.
UO.CancelAllMenuHooks();

2. Limita l'azione AutoMenu - funzione script

Parametri e flusso di esecuzione:

  • Il gancio viene immediatamente rimosso; i menu abbinati futuri non verranno più selezionati automaticamente.
return  RunScenario();
 object? RunScenario()
{
    UO.AutoMenu("Choose material", "Iron");
    UO.CancelAllMenuHooks();
    return null;
}

3. Interrompi la selezione automatica e chiudi il menu - classe di script

Parametri e flusso di esecuzione:

  • Il primo comando rimuove gli hook; il secondo cancella separatamente i vecchi menù aperti.
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()
    {
        UO.CancelAllMenuHooks();
        UO.CloseMenu();
        return null;
    }
}

Implementazione del comando

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.CancelAllMenuHooks() — UO.CancelAllMenuHooks()

Parametri: Nessun parametro.

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "cancelallmenuhooks": bridge.ClearMenuHooks(); return InjectionValue.Unit;

UO.CancelMenu

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.CancelMenu();

Rimuove tutti gli hook automatici registrati dai vecchi menu del server client.

Parametri

Non ci sono parametri.

Valore restituito

void: nessun valore restituito.

Comportamento

  • Chiama il direttore ClearMenuHooks. Le regole di selezione singole e persistenti vengono rimosse, incluse AutoMenu e WaitMenu. Questo comando non chiude i menu già aperti; CloseMenu viene utilizzato per questo.

Script C# autonomi

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.

Esempio semplice

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.CancelMenu");
UO.CancelMenu();

1. Rimuovi tutti gli hook: script diretto

Parametri e flusso di esecuzione:

  • La rimozione si applica all'intero set di hook del menu client.
UO.CancelMenu();

2. Limita l'azione AutoMenu - funzione script

Parametri e flusso di esecuzione:

  • Il gancio viene immediatamente rimosso; i menu abbinati futuri non verranno più selezionati automaticamente.
return  RunScenario();
 object? RunScenario()
{
    UO.AutoMenu("Choose material", "Iron");
    UO.CancelMenu();
    return null;
}

3. Interrompi la selezione automatica e chiudi il menu - classe di script

Parametri e flusso di esecuzione:

  • Il primo comando rimuove gli hook; il secondo cancella separatamente i vecchi menù aperti.
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()
    {
        UO.CancelMenu();
        UO.CloseMenu();
        return null;
    }
}

Implementazione del comando

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.CancelMenu() — UO.CancelMenu()

Parametri: Nessun parametro.

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "cancelmenu": bridge.ClearMenuHooks(); break;

UO.ClearContextMenu

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.ClearContextMenu();

Rimuove il modello di menu contestuale locale corrente.

Parametri

Non ci sono parametri.

Valore restituito

void: nessun valore restituito.

Comportamento

  • Chiama Dispose su ServerMenus.Context se esiste un modello; dopo la richiesta successiva potrebbe apparire un nuovo menu del server. Questo non è CloseMenu.

Script C# autonomi

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.

Esempio semplice

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.ClearContextMenu");
UO.ClearContextMenu();

1. Stato chiaro: sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Rimuove il modello di menu contestuale locale corrente.
UO.ClearContextMenu();

2. Cancella dopo l'installazione - funzione script

Parametri e flusso di esecuzione:

  • Rimuovi il menu contestuale locale dopo aver letto l'istantanea.
return  RunScenario();
 object? RunScenario()
{
    var entries = UO.GetContextMenu();
    UO.ClearContextMenu();
    return null;
}

3. Rieliminazione: classe di script

Parametri e flusso di esecuzione:

  • La cancellazione di un set vuoto è accettabile e non crea una nuova impostazione.
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()
    {
        UO.ClearContextMenu();
        UO.ClearContextMenu();
        return null;
    }
}

Implementazione del comando

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.ClearContextMenu() — UO.ClearContextMenu()

Parametri: Nessun parametro.

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "clearcontextmenu": bridge.ClearContextMenu(); return InjectionValue.Unit;

UO.CloseMenu

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.CloseMenu();

Cancella tutti i menu del vecchio server attivi tramite CancelForYoko.

Parametri

Non ci sono parametri.

Valore restituito

void: nessun valore restituito.

Comportamento

  • Scorre lo snapshot ServerMenus ed elimina ogni modello. Non rimuove gli hook automatici dei menu e non chiude finestre gump/interfaccia arbitrarie.

Script C# autonomi

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.

Esempio semplice

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.CloseMenu");
UO.CloseMenu();

1. Annulla i menu aperti - script diretto

Parametri e flusso di esecuzione:

  • La cancellazione si applica ai vecchi menu MenuGump/server.
UO.CloseMenu();

2. Rimuovi i ganci e annulla il menu - funzione script

Parametri e flusso di esecuzione:

  • La selezione automatica e i menu aperti sono gestiti da comandi separati.
return  RunScenario();
 object? RunScenario()
{
    UO.CancelAllMenuHooks();
    UO.CloseMenu();
    return null;
}

3. Annulla dopo la visualizzazione - Classe di script

Parametri e flusso di esecuzione:

  • Un'istantanea dell'elenco viene salvata negli elementi anche dopo aver annullato il menu.
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 items = UO.GetLastMenuItems();
        UO.Print(Convert.ToString(ArrayLength(items)));
        UO.CloseMenu();
        return null;
    }

    int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
}

Implementazione del comando

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.CloseMenu() — UO.CloseMenu()

Parametri: Nessun parametro.

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "closemenu": bridge.CloseMenu(); return InjectionValue.Unit;

UO.ConsoleEntryReply

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.ConsoleEntryReply(object? text);

Risponde con testo al prompt del server attivo tramite MessageManager.SendServerPromptResponse.

Parametri

  • text — Il valore da convertire in una stringa. Una stringa vuota viene inviata come risposta vuota.

Valore restituito

void: nessun valore restituito.

Comportamento

  • Entrambe le squadre si dirigono a ReplyServerPrompt. Il tipo di pacchetto ASCII/Unicode viene selezionato in base allo stato del prompt del server salvato; Il nome del comando non impone una codifica separata. Se non è presente alcuna richiesta attiva, il manager non invia una risposta.

Script C# autonomi

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.

Esempio semplice

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.ConsoleEntryReply");
UO.ConsoleEntryReply("reply");

1. Risposta al prompt: script diretto

Parametri e flusso di esecuzione:

  • L'invio si riferisce alla richiesta di input del server corrente.
UO.ConsoleEntryReply("reply");

2. Risposta vuota: funzione dello script

Parametri e flusso di esecuzione:

  • Il testo vuoto viene inviato al manager come risposta vuota.
return  RunScenario();
 object? RunScenario()
{
    UO.ConsoleEntryReply("");
    return null;
}

3. Risposta dalla variabile - classe script

Parametri e flusso di esecuzione:

  • Il nome della variabile non influisce sul formato del prompt del server selezionato.
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 reply = "New item name";
        UO.ConsoleEntryReply(reply);
        return null;
    }
}

Implementazione del comando

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.ConsoleEntryReply(text) — UO.ConsoleEntryReply(Any)

Parametri: text (Any)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "consoleentryreply":

                case "consoleentryunicodereply": bridge.ReplyServerPrompt(Text(0)); return InjectionValue.Unit;

UO.ConsoleEntryUnicodeReply

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.ConsoleEntryUnicodeReply(object? text);

Risponde con testo al prompt del server attivo tramite MessageManager.SendServerPromptResponse.

Parametri

  • text — Il valore da convertire in una stringa. Una stringa vuota viene inviata come risposta vuota.

Valore restituito

void: nessun valore restituito.

Comportamento

  • Entrambe le squadre si dirigono a ReplyServerPrompt. Il tipo di pacchetto ASCII/Unicode viene selezionato in base allo stato del prompt del server salvato; Il nome del comando non impone una codifica separata. Se non è presente alcuna richiesta attiva, il manager non invia una risposta.

Script C# autonomi

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.

Esempio semplice

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.ConsoleEntryUnicodeReply");
UO.ConsoleEntryUnicodeReply("reply");

1. Risposta al prompt: script diretto

Parametri e flusso di esecuzione:

  • L'invio si riferisce alla richiesta di input del server corrente.
UO.ConsoleEntryUnicodeReply("reply");

2. Risposta vuota: funzione dello script

Parametri e flusso di esecuzione:

  • Il testo vuoto viene inviato al manager come risposta vuota.
return  RunScenario();
 object? RunScenario()
{
    UO.ConsoleEntryUnicodeReply("");
    return null;
}

3. Risposta dalla variabile - classe script

Parametri e flusso di esecuzione:

  • Il nome della variabile non influisce sul formato del prompt del server selezionato.
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 reply = "New item name";
        UO.ConsoleEntryUnicodeReply(reply);
        return null;
    }
}

Implementazione del comando

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.ConsoleEntryUnicodeReply(text) — UO.ConsoleEntryUnicodeReply(Any)

Parametri: text (Any)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "consoleentryreply":

                case "consoleentryunicodereply": bridge.ReplyServerPrompt(Text(0)); return InjectionValue.Unit;

UO.GetContextMenu

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

dynamic UO.GetContextMenu();

Legge le stringhe di elementi del modello di menu contestuale corrente.

Parametri

Non ci sono parametri.

Valore restituito

Array di stringhe da ServerMenus.Context.GetYokoItems(); se non è presente alcun modello, un array vuoto.

Comportamento

  • Non invia RequestContextMenu e non attende una risposta dal server. Per ottenere un nuovo menu, richiederlo prima separatamente e attendere la visualizzazione del modello. ClearContextMenu cancella il modello dopo la lettura.

Script C# autonomi

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.

Esempio semplice

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.GetContextMenu();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Leggi il menu corrente - script diretto

Parametri e flusso di esecuzione:

  • Viene letto il modello esistente.
var entries = UO.GetContextMenu();
for (int i = (int)(0); i <= ArrayLength(entries)-1; i += (int)(1))
{
    UO.Print(entries[i]);
}

int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;

2. Richiedi e leggi più tardi - Funzione script

Parametri e flusso di esecuzione:

  • 500 ms - esempio di pausa, non garanzia di risposta del server; un array vuoto è accettabile.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    UO.RequestContextMenu(UO.Self());
    await Delay(500);
    var entries = UO.GetContextMenu();
    UO.Print(Convert.ToString(ArrayLength(entries)));
    return null;
}

int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));

3. Istantanea prima della pulizia: classe di script

Parametri e flusso di esecuzione:

  • L'array salvato non scompare dopo aver cancellato il modello di menu.
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 entries = UO.GetContextMenu();
        UO.ClearContextMenu();
        UO.Print(Convert.ToString(ArrayLength(entries)));
        return null;
    }

    int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
}

Implementazione del comando

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.GetContextMenu() — UO.GetContextMenu()

Parametri: Nessun parametro.

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "getcontextmenu": return StringArray(bridge.GetContextMenu());

UO.GetLastMenuItems

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

dynamic UO.GetLastMenuItems();

Legge le voci del menu del vecchio server già aperto.

Parametri

Non ci sono parametri.

Valore restituito

Matrice di stringhe. Nome articolo/righe descrittive GetYokoItems. La mancanza di un menu adatto risulta in un array vuoto.

Comportamento

  • È selezionato l'ultimo menu foto ServerMenus. Il comando non apre il menu, non inserisce un hook e non seleziona un elemento. Questo non è un menu contestuale o un normale gump del server.
  • L'ordine corrisponde ai punti del modello. L'elenco è un'istantanea; le successive modifiche al menu non aggiornano l'array salvato.

Script C# autonomi

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.

Esempio semplice

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.GetLastMenuItems();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Visualizza tutti gli elementi - script diretto

Parametri e flusso di esecuzione:

  • Un array vuoto è sicuro per il ciclo.
var items = UO.GetLastMenuItems();
for (int i = (int)(0); i <= ArrayLength(items)-1; i += (int)(1))
{
    UO.Print(items[i]);
}

int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;

2. Il primo punto è la funzione dello script

Parametri e flusso di esecuzione:

  • L'indice 0 viene letto solo dopo aver controllato la dimensione.
return  RunScenario();
 object? RunScenario()
{
    var items = UO.GetLastMenuItems();
    if (Truth(ArrayLength(items) > 0))
    {
        UO.Print(items[0]);
    }

    return null;
}

int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. Salva istantanea prima di chiudere - Classe di script

Parametri e flusso di esecuzione:

  • L'array rimane disponibile dopo aver annullato il menu del server.
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 items = UO.GetLastMenuItems();
        UO.CloseMenu();
        UO.Print(Convert.ToString(ArrayLength(items)));
        return null;
    }

    int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
}

Implementazione del comando

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.GetLastMenuItems() — UO.GetLastMenuItems()

Parametri: Nessun parametro.

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "getlastmenuitems": return StringArray(bridge.GetLastMenuItems());

UO.GetMenuItems

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

dynamic UO.GetMenuItems(object? caption);

Legge le voci del menu del vecchio server già aperto.

Parametri

  • caption — Sottostringa del titolo del vecchio menu del server; cerca OrdinalIgnoreCase. Una riga vuota corrisponde a qualsiasi intestazione.

Valore restituito

Matrice di stringhe. Nome articolo/righe descrittive GetYokoItems. La mancanza di un menu adatto risulta in un array vuoto.

Comportamento

  • Viene selezionato l'ultimo menu non eliminato con la sottostringa del titolo corrispondente. Il comando non apre il menu, non inserisce un hook e non seleziona un elemento. Questo non è un menu contestuale o un normale gump del server.
  • L'ordine corrisponde ai punti del modello. L'elenco è un'istantanea; le successive modifiche al menu non aggiornano l'array salvato.

Script C# autonomi

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.

Esempio semplice

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.GetMenuItems("");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Visualizza tutti gli elementi - script diretto

Parametri e flusso di esecuzione:

  • Un array vuoto è sicuro per il ciclo.
var items = UO.GetMenuItems("");
for (int i = (int)(0); i <= ArrayLength(items)-1; i += (int)(1))
{
    UO.Print(items[i]);
}

int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;

2. Il primo punto è la funzione dello script

Parametri e flusso di esecuzione:

  • L'indice 0 viene letto solo dopo aver controllato la dimensione.
return  RunScenario();
 object? RunScenario()
{
    var items = UO.GetMenuItems("");
    if (Truth(ArrayLength(items) > 0))
    {
        UO.Print(items[0]);
    }

    return null;
}

int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. Salva istantanea prima di chiudere - Classe di script

Parametri e flusso di esecuzione:

  • L'array rimane disponibile dopo aver annullato il menu del server.
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 items = UO.GetMenuItems("");
        UO.CloseMenu();
        UO.Print(Convert.ToString(ArrayLength(items)));
        return null;
    }

    int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
}

Implementazione del comando

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.GetMenuItems(caption) — UO.GetMenuItems(Any)

Parametri: caption (Any)

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "getmenuitems": return StringArray(bridge.GetMenuItems(Text(0), false));

UO.GetMenuItemsEx

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

dynamic UO.GetMenuItemsEx(object? caption);

Legge le voci del menu del vecchio server già aperto.

Parametri

  • caption — Sottostringa del titolo del vecchio menu del server; cerca OrdinalIgnoreCase. Una riga vuota corrisponde a qualsiasi intestazione.

Valore restituito

Matrice di stringhe. Stringhe graphicHex|hueHex|indice|nome, ad esempio 0x0001|0x0000|1|scelta. La mancanza di un menu adatto risulta in un array vuoto.

Comportamento

  • Viene selezionato l'ultimo menu non eliminato con la sottostringa del titolo corrispondente. Il comando non apre il menu, non inserisce un hook e non seleziona un elemento. Questo non è un menu contestuale o un normale gump del server.
  • L'ordine corrisponde ai punti del modello. L'elenco è un'istantanea; le successive modifiche al menu non aggiornano l'array salvato.

Script C# autonomi

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.

Esempio semplice

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.GetMenuItemsEx("");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Visualizza tutti gli elementi - script diretto

Parametri e flusso di esecuzione:

  • Un array vuoto è sicuro per il ciclo.
var items = UO.GetMenuItemsEx("");
for (int i = (int)(0); i <= ArrayLength(items)-1; i += (int)(1))
{
    UO.Print(items[i]);
}

int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;

2. Il primo punto è la funzione dello script

Parametri e flusso di esecuzione:

  • L'indice 0 viene letto solo dopo aver controllato la dimensione.
return  RunScenario();
 object? RunScenario()
{
    var items = UO.GetMenuItemsEx("");
    if (Truth(ArrayLength(items) > 0))
    {
        UO.Print(items[0]);
    }

    return null;
}

int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. Salva istantanea prima di chiudere - Classe di script

Parametri e flusso di esecuzione:

  • L'array rimane disponibile dopo aver annullato il menu del server.
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 items = UO.GetMenuItemsEx("");
        UO.CloseMenu();
        UO.Print(Convert.ToString(ArrayLength(items)));
        return null;
    }

    int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
}

Implementazione del comando

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.GetMenuItemsEx(caption) — UO.GetMenuItemsEx(Any)

Parametri: caption (Any)

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "getmenuitemsex": return StringArray(bridge.GetMenuItems(Text(0), true));

UO.MenuHookPresent

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

dynamic UO.MenuHookPresent();

Legge la presenza di ganci di menu registrati.

Parametri

Non ci sono parametri.

Valore restituito

Flag numerico int: 1 - _manager.HasMenuHooks, 0 - nessun hook. Il menu stesso potrebbe ancora mancare.

Comportamento

  • Legge la presenza di ganci di menu registrati. Non attende un menu, non controlla il gump del server e non consuma un hook.
  • Legge lo stato locale attuale. Non esiste alcun pacchetto, destinazione o aggiornamento automatico; le singole letture possono vedere stati diversi.

Script C# autonomi

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.

Esempio semplice

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.MenuHookPresent();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Legge la presenza di ganci di menu registrati.
UO.Print(UO.MenuHookPresent());

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • Legge la presenza di ganci di menu registrati. Non attende un menu, non controlla il gump del server e non consuma un hook.
return  RunScenario();
 object? RunScenario()
{
    UO.WaitMenu("Craft", "Tools");
    UO.Print(UO.MenuHookPresent());
    return null;
}

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • Legge lo stato locale attuale. Non esiste alcun pacchetto, destinazione o aggiornamento automatico; le singole letture possono vedere stati 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.MenuHookPresent();
        UO.Wait(500);
        var after = UO.MenuHookPresent();
        UO.Print(before);
        UO.Print(after);
        return null;
    }
}

Implementazione del comando

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.MenuHookPresent() — UO.MenuHookPresent()

Parametri: Nessun parametro.

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "menuhookpresent": return new InjectionValue(bridge.MenuHookPresent());

UO.MenuPresent

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

dynamic UO.MenuPresent();

MenuPresent chiama direttamente WaitingMenu.

Parametri

Non ci sono parametri.

Valore restituito

Flag numerico int: 1 - c'è un menu del server, 0 - no.

Comportamento

  • MenuPresent chiama direttamente WaitingMenu. Non controlla GetGumpsCount, menu contestuali o hook registrati.
  • Legge lo stato locale attuale. Non esiste alcun pacchetto, destinazione o aggiornamento automatico; le singole letture possono vedere stati diversi.

Script C# autonomi

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.

Esempio semplice

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.MenuPresent();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • MenuPresent chiama direttamente WaitingMenu.
UO.Print(UO.MenuPresent());

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • MenuPresent chiama direttamente WaitingMenu. Non controlla GetGumpsCount, menu contestuali o hook registrati.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.MenuPresent()))
    {
        UO.Print(UO.GetLastMenuItems());
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • Legge lo stato locale attuale. Non esiste alcun pacchetto, destinazione o aggiornamento automatico; le singole letture possono vedere stati 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.MenuPresent();
        UO.Wait(500);
        var after = UO.MenuPresent();
        UO.Print(before);
        UO.Print(after);
        return null;
    }
}

Implementazione del comando

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.MenuPresent() — UO.MenuPresent()

Parametri: Nessun parametro.

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "menupresent": return new InjectionValue(bridge.MenuPresent());

UO.RequestContextMenu

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.RequestContextMenu(object? objID);

Richiede il menu contestuale dell'oggetto.

Parametri

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

Valore restituito

void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.

Comportamento

  • Chiamate del bridge GameActions.OpenPopupMenu. La risposta viene salvata separatamente e letta GetContextMenu; Il comando non seleziona la barra dei menu.
  • Bridge invia la richiesta sullo streaming del gioco. Si applicano le regole del server; Non è prevista l'attesa di conferma.

Script C# autonomi

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.

Esempio semplice

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.RequestContextMenu");
UO.RequestContextMenu(UO.GetSerial("lasttarget"));

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Richiede il menu contestuale dell'oggetto.
var id = UO.GetSerial("lasttarget");
if (Truth(UO.Exists(id)))
{
    UO.RequestContextMenu(id);
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • Chiamate del bridge GameActions.OpenPopupMenu. La risposta viene salvata separatamente e letta GetContextMenu; Il comando non seleziona la barra dei menu.
return  RunScenario();
 object? RunScenario()
{
    var id = UO.GetSerial("self");
    if (Truth(UO.Exists(id)))
    {
        UO.RequestContextMenu(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;

3. Funzione di supporto completa: classe di script

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.RequestContextMenu(id);
        }
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implementazione del comando

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.RequestContextMenu(objID) — UO.RequestContextMenu(Any)

Parametri: objID (Any)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "requestcontextmenu": bridge.RequestContextMenu(Arg(0)); return InjectionValue.Unit;

UO.SetContextMenuHook

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.SetContextMenuHook(object? menuID, object? entryNumber);

Registra una selezione una tantum di una voce del menu contestuale.

Parametri

  • menuID — Seriale dell'oggetto menu, ridotto a uint; 0 si adatta a qualsiasi serial. Questo non è il server gump ID.
  • entryNumber — Indice del punto zero; un valore negativo disabilita l'hook di contesto in sospeso. 0..GetArrayLength(UO.GetContextMenu())-1.

Valore restituito

void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.

Comportamento

  • Bridge passa i dati a _manager.SetContextMenuHook, dove è archiviato _contextMenuSerial/_contextMenuEntry. Il gestore ProcessMenuHooks attende un menu contestuale corrispondente esistente.
  • Se SelectYokoItem ha esito positivo, i campi vengono cancellati in 0/-1. Il menu non è richiesto da questo setter: utilizzare solo RequestContextMenu. La chiamata in sé non blocca né conferma l'azione del server.

Script C# autonomi

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.

Esempio semplice

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.SetContextMenuHook");
UO.SetContextMenuHook(0, 0);

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Registra una selezione una tantum di una voce del menu contestuale.
UO.SetContextMenuHook(0, 0);

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • Bridge passa i dati a _manager.SetContextMenuHook, dove è archiviato _contextMenuSerial/_contextMenuEntry. Il gestore ProcessMenuHooks attende un menu contestuale corrispondente esistente.
return  RunScenario();
 object? RunScenario()
{
    var id = UO.GetSerial("lasttarget");
    UO.SetContextMenuHook(UO.Hex2Int(id), 0);
    UO.RequestContextMenu(id);
    return null;
}

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • Se SelectYokoItem ha esito positivo, i campi vengono cancellati in 0/-1. Il menu non è richiesto da questo setter: utilizzare solo RequestContextMenu. La chiamata in sé non blocca né conferma l'azione del server.
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()
    {
        UO.SetContextMenuHook(0, -1);
        UO.Print(UO.GetContextMenu());
        return null;
    }
}

Implementazione del comando

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.SetContextMenuHook(menuID, entryNumber) — UO.SetContextMenuHook(Any,Any)

Parametri: menuID (Any), entryNumber (Any)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "setcontextmenuhook": bridge.SetContextMenuHook(Arg(0), Arg(1)); return InjectionValue.Unit;

UO.WaitMenu

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.WaitMenu(object? menuCaption, object? elementCaption);
void UO.WaitMenu(object? prompt1, object? choice1, object? prompt2, object? choice2);
void UO.WaitMenu(object? prompt1, object? choice1, object? prompt2, object? choice2, object? prompt3, object? choice3);

Registra fino a tre hook di menu utilizzabili una sola volta.

Parametri

  • menuCaption / prompt1 / prompt2 / prompt3 - Stringa del modello del titolo del menu del server. Le coppie vengono passate nell'ordine intestazione, elemento.
  • menuCaption - Stringa del modello del titolo del menu del server. Le coppie vengono passate nell'ordine intestazione, elemento.
  • prompt1 - Stringa del modello del titolo del menu del server. Le coppie vengono passate nell'ordine intestazione, elemento.
  • prompt2 - Stringa del modello del titolo del menu del server. Le coppie vengono passate nell'ordine intestazione, elemento.
  • prompt3 - Stringa del modello del titolo del menu del server. Le coppie vengono passate nell'ordine intestazione, elemento.
  • elementCaption / choice1 / choice2 / choice3 — Riga per la selezione di un elemento per l'intestazione corrispondente. Non il normale pulsante gump ID.
  • elementCaption — Riga per la selezione di un elemento per l'intestazione corrispondente. Non il normale pulsante gump ID.
  • choice1 — Riga per la selezione di un elemento per l'intestazione corrispondente. Non il normale pulsante gump ID.
  • choice2 — Riga per la selezione di un elemento per l'intestazione corrispondente. Non il normale pulsante gump ID.
  • choice3 — Riga per la selezione di un elemento per l'intestazione corrispondente. Non il normale pulsante gump ID.

Valore restituito

void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.

Comportamento

  • Ogni coppia viene passata a _manager.AddMenuHook(prompt, scelta, false). Le forme registrate sono argomenti 2/4/6. false denota un hook occasionale; AutoMenu/due argomenti VendorMenu usa un hook costante.
  • Non blocca lo script finché non viene visualizzato il menu. Il gancio viene consumato dal gestore quando il menu è adatto; il risultato dell'esecuzione da parte del server non viene restituito. Per un menu utilizzare WaitingMenu, per i ganci - MenuHookPresent.
  • Per i moduli di menu/scelta, il gestore seleziona il primo menu il cui titolo contiene prompt, senza distinzione tra maiuscole e minuscole; SessionMenu seleziona il primo elemento il cui nome contiene una scelta, anch'essa senza distinzione tra maiuscole e minuscole. Il testo vuoto è adatto a chiunque; il testo numerico è un frammento del nome, non un indice. Una selezione riuscita invia una risposta e chiude il menu locale. Un hook singolo viene eliminato solo dopo una selezione riuscita; rimane un gancio permanente.

Script C# autonomi

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.

Esempio semplice

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.WaitMenu");
UO.WaitMenu("Craft", "Tools");

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Registra fino a tre hook di menu utilizzabili una sola volta.
UO.WaitMenu("Craft", "Tools");

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • Ogni coppia viene passata a _manager.AddMenuHook(prompt, scelta, false). Le forme registrate sono argomenti 2/4/6. false denota un hook occasionale; AutoMenu/due argomenti VendorMenu usa un hook costante.
return  RunScenario();
 object? RunScenario()
{
    UO.WaitMenu("Craft", "Tools", "Tools", "Shovel");
    return null;
}

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • Non blocca lo script finché non viene visualizzato il menu. Il gancio viene consumato dal gestore quando il menu è adatto; il risultato dell'esecuzione da parte del server non viene restituito. Per un menu utilizzare WaitingMenu, per i ganci - MenuHookPresent.
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()
    {
        UO.WaitMenu("Craft", "Tools", "Tools", "Shovel", "Amount", "One");
        UO.Print(UO.MenuHookPresent());
        return null;
    }
}

Implementazione del comando

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.WaitMenu(menuCaption, elementCaption) — UO.WaitMenu(Any,Any)

Parametri: menuCaption (Any/String), elementCaption (Any/String)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "waitmenu": bridge.WaitMenu(arguments.Select(value => value.ToString()).ToArray()); return InjectionValue.Unit;

UO.WaitMenu(menuCaption, elementCaption) — UO.WaitMenu(String,String)

Parametri: menuCaption (Any/String), elementCaption (Any/String)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public void WaitMenu(string prompt, string choice)

            => bridge.WaitMenu(prompt, choice);

UO.WaitMenu(prompt1, choice1, prompt2, choice2) — UO.WaitMenu(String,String,String,String)

Parametri: prompt1 (String), choice1 (String), prompt2 (String), choice2 (String)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public void WaitMenu(string prompt1, string choice1, string prompt2, string choice2)

            => bridge.WaitMenu(prompt1, choice1, prompt2, choice2);

UO.WaitMenu(prompt1, choice1, prompt2, choice2, prompt3, choice3) — UO.WaitMenu(String,String,String,String,String,String)

Parametri: prompt1 (String), choice1 (String), prompt2 (String), choice2 (String), prompt3 (String), choice3 (String)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public void WaitMenu(string prompt1, string choice1, string prompt2, string choice2, string prompt3, string choice3)

            => bridge.WaitMenu(prompt1, choice1, prompt2, choice2, prompt3, choice3);

UO.WaitTextEntry

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.WaitTextEntry(object? value);

Cerca di scrivere il testo nella voce di testo del gump corrente.

Parametri

  • value - Testo fino a ToString; salvato come trasmesso.

Valore restituito

void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.

Comportamento

  • ExecuteClientApiCompatibility chiama SetGumpValue(-1, "textentry", -1, Text(0)). key=-1 non è un normale indice nullo: la scrittura è possibile solo se un campo esistente è mappato a tale ID nell'implementazione gump.
  • Non aspetta un gump futuro, non apre un prompt e non registra un hook. Se non è presente alcun campo corrispondente, SetGumpValue visualizza un messaggio. Per un campo noto, utilizzare SetGump con un ID/index esplicito.

Script C# autonomi

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.

Esempio semplice

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.WaitTextEntry");
UO.WaitTextEntry("Example");

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Cerca di scrivere il testo nella voce di testo del gump corrente.
UO.WaitTextEntry("Example");

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • ExecuteClientApiCompatibility chiama SetGumpValue(-1, "textentry", -1, Text(0)). key=-1 non è un normale indice nullo: la scrittura è possibile solo se un campo esistente è mappato a tale ID nell'implementazione gump.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.GetGumpsCount() > 0))
    {
        UO.WaitTextEntry("Example");
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • Non aspetta un gump futuro, non apre un prompt e non registra un hook. Se non è presente alcun campo corrispondente, SetGumpValue visualizza un messaggio. Per un campo noto, utilizzare SetGump con un ID/index esplicito.
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()
    {
        UO.WaitTextEntry("Example");
        UO.Print("Check the target field in the current gump");
        return null;
    }
}

Implementazione del comando

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.WaitTextEntry(value) — UO.WaitTextEntry(Any)

Parametri: value (Any)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "waittextentry": bridge.SetGumpValue(-1, "textentry", -1, Text(0)); return InjectionValue.Unit;

UO.WaitingForMenu

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

int UO.WaitingForMenu(object? delay);
int UO.WaitingForMenu(object? delay, object? menuCount);
int UO.WaitingForMenu(object? delay, object? menuCount, object? blockMenu);
int UO.WaitingForMenu(object? delay, object? menuCount, object? blockMenu, object? menuName);
int UO.WaitingForMenu(object? delayValue, object? menuCountValue, object? blockMenuValue, object? menuNameValue, object? skillOrSerial);

Il numero richiesto di apparizioni del menu del server è limitato.

Parametri

  • delay — timeout int in millisecondi, il negativo diventa 0. Anche con 0 viene eseguito un controllo.
  • delayValue — timeout int in millisecondi, il negativo diventa 0. Anche con 0 viene eseguito un controllo.
  • menuCount - Numero facoltativo di presenze, minimo 1; l'impostazione predefinita è 1. Questo non è il numero di voci di menu.
  • menuCountValue - Numero facoltativo di presenze, minimo 1; l'impostazione predefinita è 1. Questo non è il numero di voci di menu.
  • blockMenu — Un numero opzionale diverso da zero chiude il menu quando la condizione è soddisfatta; 0 lo lascia.
  • blockMenuValue — Un numero opzionale diverso da zero chiude il menu quando la condizione è soddisfatta; 0 lo lascia.
  • menuName - Titolo esatto opzionale, con distinzione tra maiuscole e minuscole; vuoto permette a chiunque.
  • menuNameValue - Titolo esatto opzionale, con distinzione tra maiuscole e minuscole; vuoto permette a chiunque.
  • skillOrSerial - Ultimo argomento facoltativo: TriggerWaitAction può utilizzare prima l'abilità denominata o l'oggetto denominato serial. Per impostazione predefinita, 0 non è alcuna azione.

Valore restituito

Flag numerico int: 1 - si notano almeno menuCount diverse occorrenze e l'ultima ha il titolo desiderato; 0 - timeout. Il menu esistente può essere contato immediatamente.

Comportamento

  • Dopo TriggerWaitAction si legge GetLastMenuIdentity; la nuova identità aumenta il contatore. Un'identità vuota resetta la memoria di quella precedente, quindi lo stesso menù potrà essere ricalcolato dopo la chiusura/riapertura.
  • Il limite del conteggio viene controllato solo con una nuova identità. Se e corrisponde, blockMenu chiude il menu. Tra i controlli da UO.Wait a 25 ms; l'intestazione viene controllata da Ordinal, non da sottostringa.

Script C# autonomi

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.

Esempio semplice

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.WaitingForMenu(3000);
UO.Print("WaitingForMenu: " + Convert.ToString(result));

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Il numero richiesto di apparizioni del menu del server è limitato.
UO.Print(UO.WaitingForMenu(3000));

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • Dopo TriggerWaitAction si legge GetLastMenuIdentity; la nuova identità aumenta il contatore. Un'identità vuota resetta la memoria di quella precedente, quindi lo stesso menù potrà essere ricalcolato dopo la chiusura/riapertura.
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.WaitingForMenu(3000, 1, 1, "Craft"));
    return null;
}

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • Il limite del conteggio viene controllato solo con una nuova identità. Se e corrisponde, blockMenu chiude il menu. Tra i controlli da UO.Wait a 25 ms; l'intestazione viene controllata da Ordinal, non da sottostringa.
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 found = UO.WaitingForMenu(3000, 1, 0, "Craft", "lasttarget");
        if (Truth(found))
        {
            UO.Print(UO.GetLastMenuItems());
        }

        return null;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implementazione del comando

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.WaitingForMenu(delay) — UO.WaitingForMenu(Any)

Parametri: delay (Any)

Risultato: int / Integer.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public int WaitingForMenu(InjectionValue delay) => WaitingForMenu(delay, InjectionValue.Zero, InjectionValue.Zero, new InjectionValue(string.Empty), InjectionValue.Zero);

UO.WaitingForMenu(delay, menuCount) — UO.WaitingForMenu(Any,Any)

Parametri: delay (Any), menuCount (Any)

Risultato: int / Integer.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public int WaitingForMenu(InjectionValue delay, InjectionValue menuCount) => WaitingForMenu(delay, menuCount, InjectionValue.Zero, new InjectionValue(string.Empty), InjectionValue.Zero);

UO.WaitingForMenu(delay, menuCount, blockMenu) — UO.WaitingForMenu(Any,Any,Any)

Parametri: delay (Any), menuCount (Any), blockMenu (Any)

Risultato: int / Integer.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public int WaitingForMenu(InjectionValue delay, InjectionValue menuCount, InjectionValue blockMenu) => WaitingForMenu(delay, menuCount, blockMenu, new InjectionValue(string.Empty), InjectionValue.Zero);

UO.WaitingForMenu(delay, menuCount, blockMenu, menuName) — UO.WaitingForMenu(Any,Any,Any,Any)

Parametri: delay (Any), menuCount (Any), blockMenu (Any), menuName (Any)

Risultato: int / Integer.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public int WaitingForMenu(InjectionValue delay, InjectionValue menuCount, InjectionValue blockMenu, InjectionValue menuName) => WaitingForMenu(delay, menuCount, blockMenu, menuName, InjectionValue.Zero);

UO.WaitingForMenu(delayValue, menuCountValue, blockMenuValue, menuNameValue, skillOrSerial) — UO.WaitingForMenu(Any,Any,Any,Any,Any)

Parametri: delayValue (Any), menuCountValue (Any), blockMenuValue (Any), menuNameValue (Any), skillOrSerial (Any)

Risultato: int / Integer.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public int WaitingForMenu(InjectionValue delayValue, InjectionValue menuCountValue, InjectionValue blockMenuValue, InjectionValue menuNameValue, InjectionValue skillOrSerial)

        {

            int delay = Math.Max(0, NumberConversions.ToInt(delayValue));

            int requiredMenuCount = Math.Max(1, NumberConversions.ToInt(menuCountValue));

            bool blockMenu = NumberConversions.ToInt(blockMenuValue) != 0;

            string expectedName = menuNameValue.ToString() ?? string.Empty;

            DateTime deadline = timeSource.Now.AddMilliseconds(delay);

            string previousIdentity = string.Empty;

            int observedMenuCount = 0;



            TriggerWaitAction(skillOrSerial);



            do

            {

                string identity = bridge.GetLastMenuIdentity() ?? string.Empty;

                if (identity.Length == 0)

                {

                    // Reset between server menus so an identical menu opened again

                    // still counts as a new appearance.

                    previousIdentity = string.Empty;

                }

                else if (!identity.Equals(previousIdentity, StringComparison.Ordinal))

                {

                    previousIdentity = identity;

                    observedMenuCount++;

                    string caption = bridge.GetLastMenuCaption() ?? string.Empty;

                    bool nameMatches = expectedName.Length == 0

                        || caption.Equals(expectedName, StringComparison.Ordinal);

                    if (observedMenuCount >= requiredMenuCount && nameMatches)

                    {

                        if (blockMenu)

                            bridge.CloseMenu();

                        return 1;

                    }

                }



                if (timeSource.Now >= deadline)

                    break;

                bridge.Wait(Math.Min(25, Math.Max(1, delay)));

            }

            while (true);



            return 0;

        }

UO.WaitingMenu

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

int UO.WaitingMenu();

Legge _world.ServerMenus.Snapshot().Length != 0.

Parametri

Non ci sono parametri.

Valore restituito

Flag numerico int: 1 - ServerMenus ha almeno un menu, 0 - no. Questo significa avere un menu, non aspettare uno script.

Comportamento

  • Legge _world.ServerMenus.Snapshot().Length != 0. I menu dei server legacy sono separati dai normali menu del server e dai menu contestuali.
  • Legge lo stato locale attuale. Non esiste alcun pacchetto, destinazione o aggiornamento automatico; le singole letture possono vedere stati diversi.

Script C# autonomi

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.

Esempio semplice

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.WaitingMenu();
UO.Print("WaitingMenu: " + Convert.ToString(result));

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Legge _world.ServerMenus.Snapshot().Length != 0.
UO.Print(UO.WaitingMenu());

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • Legge _world.ServerMenus.Snapshot().Length != 0. I menu dei server legacy sono separati dai normali menu del server e dai menu contestuali.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.WaitingMenu()))
    {
        UO.Print(UO.GetLastMenuItems());
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • Legge lo stato locale attuale. Non esiste alcun pacchetto, destinazione o aggiornamento automatico; le singole letture possono vedere stati 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.WaitingMenu();
        UO.Wait(500);
        var after = UO.WaitingMenu();
        UO.Print(before);
        UO.Print(after);
        return null;
    }
}

Implementazione del comando

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.WaitingMenu() — UO.WaitingMenu()

Parametri: Nessun parametro.

Risultato: int / Integer.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public int WaitingMenu() => bridge.WaitingMenu();
⚠️ **GitHub.com Fallback** ⚠️