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

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

Barche

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

Controllare il movimento e l'arresto della barca; La disponibilità della squadra è determinata dalla barca e dal server attuali.

Sezioni

Argomento Comandi e spiegazioni
MoveBoat UO.MoveBoat
StopBoat UO.StopBoat

Tutti i comandi del tema

Controllo della barca

UO.MoveBoat · UO.StopBoat

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

Parametri, risultato e tutti gli scenari

UO.MoveBoat(0, 1);

UO.StopBoat

Parametri, risultato e tutti gli scenari

UO.StopBoat();

Riferimento completo dei comandi


UO.MoveBoat

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

Firme C#

void UO.MoveBoat(object? direction, object? speed);

Richiede la direzione e la velocità della barca.

Parametri

  • direction - int, bit bassi 3 specificano la direzione 0..7: N,NE,E,SE,S,SW,W,NW.
  • speed - int, limitato a 0..255 e ridotto a byte; 0—richiesta di arresto. Codice del protocollo, non velocità in celle/secondo.

Valore restituito

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

Comportamento

  • Bridge.MoveBoat chiama BoatMovingManager.MoveRequest((Direction)(direzione&7), clamp(velocità,0,255)). La barca attuale e i diritti di controllo sono determinati dal client/server.
  • Non sposta il personaggio attraverso Pathfinder, non attende un passo e non restituisce le coordinate della barca. Il server può rifiutare la richiesta.

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

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Richiede la direzione e la velocità della barca.
UO.MoveBoat(0, 1);

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • Bridge.MoveBoat chiama BoatMovingManager.MoveRequest((Direction)(direzione&7), clamp(velocità,0,255)). La barca attuale e i diritti di controllo sono determinati dal client/server.
return  RunScenario();
 object? RunScenario()
{
    UO.MoveBoat(2, 1);
    UO.Wait(500);
    UO.StopBoat();
    return null;
}

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • Non sposta il personaggio attraverso Pathfinder, non attende un passo e non restituisce le coordinate della barca. Il server può rifiutare la richiesta.
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.MoveBoat(0, 0);
        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.MoveBoat(direction, speed) — UO.MoveBoat(Any,Any)

Parametri: direction (Any), speed (Any)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "moveboat": bridge.MoveBoat(Arg(0), Arg(1)); return InjectionValue.Unit;

UO.StopBoat

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

Firme C#

void UO.StopBoat();

Richiede alla barca di fermarsi.

Parametri

Non ci sono parametri.

Valore restituito

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

Comportamento

  • StopBoat chiama BoatMovingManager.MoveRequest con Player.Direction (o Nord senza Player) e speed=0. La richiesta non restituisce la posizione del server della barca.
  • Negli esempi, UO.Wait specifica solo una pausa nello script; la fine della pausa non dimostra che il server abbia completato la richiesta.

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

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Richiede alla barca di fermarsi.
UO.StopBoat();

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • StopBoat chiama BoatMovingManager.MoveRequest con Player.Direction (o Nord senza Player) e speed=0. La richiesta non restituisce la posizione del server della barca.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.IsOnline()))
    {
        UO.StopBoat();
    }

    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:

  • Negli esempi, UO.Wait specifica solo una pausa nello script; la fine della pausa non dimostra che il server abbia completato la richiesta.
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.StopBoat();
        UO.Wait(250);
        UO.Print(UO.GetX());
        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.StopBoat() — UO.StopBoat()

Parametri: Nessun parametro.

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "stopboat": bridge.StopBoat(); return InjectionValue.Unit;
⚠️ **GitHub.com Fallback** ⚠️