Repository navigation
IT UO Topic record playback
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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.
| Argomento | Comandi e spiegazioni |
|---|---|
| SetRec | UO.SetRec |
| UseRec | UO.UseRec |
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.
Parametri, risultato e tutti gli scenari
UO.SetRec();
UO.Light(15);Parametri, risultato e tutti gli scenari
UO.SetRec();
UO.Light(15);
UO.UseRec();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SetRec();Prepara la registrazione del prossimo comando legacy UO.
Non ci sono parametri.
void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.
- 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.
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.SetRec");
UO.SetRec();Parametri e flusso di esecuzione:
- Prepara la registrazione del prossimo comando legacy UO.
UO.SetRec();
UO.Light(15);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;
}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;
}
}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: void / Unit.
Durante la chiamata:
Codice interno di implementazione; non è uno script autonomo.
case "setrec":
state.RecordedAction = string.Empty;
recordNextLegacyAction = true;
break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.UseRec();Ripete il comando legacy salvato UO.
Non ci sono parametri.
void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.
- 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.
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.UseRec");
UO.UseRec();Parametri e flusso di esecuzione:
- Ripete il comando legacy salvato UO.
UO.SetRec();
UO.Light(15);
UO.UseRec();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;
}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;
}
}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: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.TryDeserializeRecordedLegacyAction:TryDeserializeRecordedLegacyAction(state.RecordedAction, out string recordedName, out InjectionValue[] recordedArguments). -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage("UseRec: no recorded UO action is available. Call UO.SetRec() before the action to record."). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias:ExecuteLegacyManualAlias(recordedName, recordedArguments).
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;ClassicUO — Bad Newbie & C# Scripts IDE