Skip to content

IT UO Topic record playback

Codex edited this page Oct 12, 2026 · 4 revisions

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

Registrazione/riproduzione

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

Registra e ripeti le azioni supportate. La composizione delle restrizioni di registrazione e riproduzione dipende dall'implementazione dei comandi.

Sezioni

Argomento Comandi e spiegazioni
SetRec UO.SetRec
UseRec UO.UseRec

Tutti i comandi del tema

Registrazione

UO.SetRec · UO.UseRec

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

Parametri, risultato e tutti gli scenari

UO.SetRec();
UO.Light(15);

UO.UseRec

Parametri, risultato e tutti gli scenari

UO.SetRec();
UO.Light(15);
UO.UseRec();

Riferimento completo dei comandi


UO.SetRec

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

Firme C#

void UO.SetRec();

Prepara la registrazione del prossimo comando legacy UO.

Parametri

Non ci sono parametri.

Valore restituito

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

Comportamento

  • ExecuteLegacyManualAlias cancella lo stato. RecordedAction e imposta recordNextLegacyAction=true. La chiamata successiva allo stesso dispatcher legacy, eccetto SetRec/UseRec, serializza il nome e gli argomenti prima di eseguire il comando, quindi cancella il flag.
  • Questo non registra tutte le azioni del mouse, eventuali getter UO o eventi del server. Ripete solo un comando da un dispatcher legacy supportato. Il vecchio salvataggio viene cancellato immediatamente.
  • In un normale host client, questi dati di stato vengono presi dal gestore GetPersistentState e sono comuni a script/chat/macro dello stesso mondo/profilo e non appartengono a uno script. Un altro processo o un InjectionRuntimeState apparentemente separato ha uno stato diverso. Caricare/cancellare un profilo può sostituirlo; salvati serial vengono ancora confrontati con il mondo caricato.
  • La voce conserva i tipi di argomento int, double, string, recursive Array e void. Altri oggetti sono scritti come testo ToString; l'oggetto/handle live non viene ripristinato quando ripetuto.
  • RecordedAction è lo stato generale del profilo e recordNextLegacyAction/replayingLegacyAction sono i campi privati ​​di questo InjectionApiUO. Solo questa istanza registra la successiva chiamata legacy. Un altro script può cancellare o ripetere una scrittura condivisa, ma non consuma il flag di attesa di scrittura di quell'istanza.
  • Viene registrato solo SetRec(), rigorosamente senza argomenti. Cancella immediatamente RecordedAction, quindi stay() restituisce 0 prima che un'azione legacy successiva venga scritta da quell'istanza; L'abilitazione dell'attesa di scrittura non crea di per sé un'azione salvata. stay() legge solo e non consuma il flag di attesa.

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

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Prepara la registrazione del prossimo comando legacy UO.
UO.SetRec();
UO.Light(15);

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • ExecuteLegacyManualAlias cancella lo stato. RecordedAction e imposta recordNextLegacyAction=true. La chiamata successiva allo stesso dispatcher legacy, eccetto SetRec/UseRec, serializza il nome e gli argomenti prima di eseguire il comando, quindi cancella il flag.
return  RunScenario();
 object? RunScenario()
{
    UO.SetRec();
    UO.Sound(0x0040);
    UO.UseRec();
    return null;
}

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • Questo non registra tutte le azioni del mouse, eventuali getter UO o eventi del server. Ripete solo un comando da un dispatcher legacy supportato. Il vecchio salvataggio viene cancellato immediatamente.
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.SetRec();
        UO.TextPrint("This is not a legacy recording route");
        UO.Light(15);
        UO.UseRec();
        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.SetRec() — UO.SetRec()

Parametri: Nessun parametro.

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "setrec":

                    state.RecordedAction = string.Empty;

                    recordNextLegacyAction = true;

                    break;

UO.UseRec

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

Firme C#

void UO.UseRec();

Ripete il comando legacy salvato UO.

Parametri

Non ci sono parametri.

Valore restituito

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

Comportamento

  • TryDeserializeRecordedLegacyAction controlla il prefisso YOKOREC1 e gli argomenti digitati. Voce nessuna/non valida: messaggio locale, nessuna azione. Una voce valida chiama ExecuteLegacyManualAlias con il nome e gli argomenti salvati.
  • Il flag replayingLegacyAction protegge il replay dalla scrittura stessa e viene cancellato finally, anche in caso di errore. La voce non viene cancellata dopo aver ripetuto: UseRec può essere richiamato nuovamente. I nomi/serial vengono risolti in base ai tipi salvati e al mondo attuale.
  • In un normale host client, questi dati di stato vengono presi dal gestore GetPersistentState e sono comuni a script/chat/macro dello stesso mondo/profilo e non appartengono a uno script. Un altro processo o un InjectionRuntimeState apparentemente separato ha uno stato diverso. Caricare/cancellare un profilo può sostituirlo; salvati serial vengono ancora confrontati con il mondo caricato.
  • La voce conserva i tipi di argomento int, double, string, recursive Array e void. Altri oggetti sono scritti come testo ToString; l'oggetto/handle live non viene ripristinato quando ripetuto.
  • RecordedAction è lo stato generale del profilo e recordNextLegacyAction/replayingLegacyAction sono i campi privati ​​di questo InjectionApiUO. Solo questa istanza registra la successiva chiamata legacy. Un altro script può cancellare o ripetere una scrittura condivisa, ma non consuma il flag di attesa di scrittura di quell'istanza.

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

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Ripete il comando legacy salvato UO.
UO.SetRec();
UO.Light(15);
UO.UseRec();

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • TryDeserializeRecordedLegacyAction controlla il prefisso YOKOREC1 e gli argomenti digitati. Voce nessuna/non valida: messaggio locale, nessuna azione. Una voce valida chiama ExecuteLegacyManualAlias con il nome e gli argomenti salvati.
return  RunScenario();
 object? RunScenario()
{
    UO.SetRec();
    UO.Sound(0x0040);
    UO.Wait(250);
    UO.UseRec();
    return null;
}

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • Il flag replayingLegacyAction protegge il replay dalla scrittura stessa e viene cancellato finally, anche in caso di errore. La voce non viene cancellata dopo aver ripetuto: UseRec può essere richiamato nuovamente. I nomi/serial vengono risolti in base ai tipi salvati e al mondo attuale.
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.SetRec();
        UO.Light(15);
        UO.UseRec();
        UO.Wait(250);
        UO.UseRec();
        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.UseRec() — UO.UseRec()

Parametri: Nessun parametro.

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "userec":

                    if (!TryDeserializeRecordedLegacyAction(state.RecordedAction, out string recordedName, out InjectionValue[] recordedArguments))

                    {

                        if (bridge != null) SystemMessage("UseRec: no recorded UO action is available. Call UO.SetRec() before the action to record.");

                        break;

                    }

                    replayingLegacyAction = true;

                    try

                    {

                        ExecuteLegacyManualAlias(recordedName, recordedArguments);

                    }

                    finally

                    {

                        replayingLegacyAction = false;

                    }

                    break;

Clone this wiki locally