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

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

Bateaux

Accueil · C# · IDE · UO API · A–Z · Exemples · Langues

Contrôler le mouvement et l'arrêt du bateau ; La disponibilité des équipes est déterminée par le bateau et le serveur actuels.

Sections

Sujet Commandes et explications
MoveBoat UO.MoveBoat
StopBoat UO.StopBoat

Toutes les commandes du thème

Contrôle du bateau

UO.MoveBoat · UO.StopBoat

Exemples sur le sujet

Chaque carte de commande possède plusieurs scénarios indépendants : code direct, fonctions et classes. Vous trouverez ci-dessous une sélection de courts scénarios ; des restrictions et une analyse complète sont à prévoir.

UO.MoveBoat

Paramètres, résultat et tous les scénarios

UO.MoveBoat(0, 1);

UO.StopBoat

Paramètres, résultat et tous les scénarios

UO.StopBoat();

Référence complète des commandes


UO.MoveBoat

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

Signatures C#

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

Demande la direction et la vitesse du bateau.

Paramètres

  • direction - int, les bits 3 faibles spécifient la direction 0..7 : N,NE,E,SE,S,SW,W,NW.
  • speed - int, limité à 0..255 et réduit à byte ; 0—demande d'arrêt. Code de protocole, pas vitesse en cellules/seconde.

Valeur de retour

void - aucune valeur. Appelez sur une ligne séparée ; l'achèvement ne confirme pas l'action du serveur.

Comportement

  • Bridge.MoveBoat appelle BoatMovingManager.MoveRequest((Direction)(direction&7), clamp(speed,0,255)). Le bateau actuel et les droits de contrôle sont déterminés par le client/serveur.
  • Ne déplace pas le personnage via Pathfinder, n'attend pas une étape et ne renvoie pas les coordonnées du bateau. Le serveur peut rejeter la demande.

Scripts C# autonomes

Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.

Exemple simple

Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.

La commande forme une instruction séparée. Le message précédent indique le début de l’appel et ne confirme aucune action du serveur.

UO.Print("Calling UO.MoveBoat");
UO.MoveBoat(0, 1);

1. Appel direct - script direct

Paramètres et déroulement de l’exécution :

  • Demande la direction et la vitesse du bateau.
UO.MoveBoat(0, 1);

2. Option explicite - fonction de script

Paramètres et déroulement de l’exécution :

  • Bridge.MoveBoat appelle BoatMovingManager.MoveRequest((Direction)(direction&7), clamp(speed,0,255)). Le bateau actuel et les droits de contrôle sont déterminés par le client/serveur.
return  RunScenario();
 object? RunScenario()
{
    UO.MoveBoat(2, 1);
    UO.Wait(500);
    UO.StopBoat();
    return null;
}

3. Fonction d'assistance complète - Classe de script

Paramètres et déroulement de l’exécution :

  • Ne déplace pas le personnage via Pathfinder, n'attend pas une étape et ne renvoie pas les coordonnées du bateau. Le serveur peut rejeter la demande.
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;
    }
}

Implémentation de la commande

C# distingue les majuscules. Utilisez le nom UO exact. Comparez les indicateurs numériques à 0 ; utilisez bool seulement si la signature renvoie bool.

UO.MoveBoat(direction, speed) — UO.MoveBoat(Any,Any)

Paramètres: direction (Any), speed (Any)

Résultat: void / Unit.

Pendant un appel:

Code interne de l’implémentation ; ce n’est pas un script autonome.

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

UO.StopBoat

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

Signatures C#

void UO.StopBoat();

Demande au bateau de s'arrêter.

Paramètres

Il n'y a pas de paramètres.

Valeur de retour

void - aucune valeur. Appelez sur une ligne séparée ; l'achèvement ne confirme pas l'action du serveur.

Comportement

  • StopBoat appelle BoatMovingManager.MoveRequest avec Player.Direction (ou Nord sans Player) et speed=0. La requête ne renvoie pas la position serveur du bateau.
  • Dans les exemples, UO.Wait spécifie uniquement une pause de script ; la fin de la pause ne prouve pas que le serveur a complété la requête.

Scripts C# autonomes

Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.

Exemple simple

Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.

La commande forme une instruction séparée. Le message précédent indique le début de l’appel et ne confirme aucune action du serveur.

UO.Print("Calling UO.StopBoat");
UO.StopBoat();

1. Appel direct - script direct

Paramètres et déroulement de l’exécution :

  • Demande au bateau de s'arrêter.
UO.StopBoat();

2. Option explicite - fonction de script

Paramètres et déroulement de l’exécution :

  • StopBoat appelle BoatMovingManager.MoveRequest avec Player.Direction (ou Nord sans Player) et speed=0. La requête ne renvoie pas la position serveur du bateau.
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. Fonction d'assistance complète - Classe de script

Paramètres et déroulement de l’exécution :

  • Dans les exemples, UO.Wait spécifie uniquement une pause de script ; la fin de la pause ne prouve pas que le serveur a complété la requête.
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;
    }
}

Implémentation de la commande

C# distingue les majuscules. Utilisez le nom UO exact. Comparez les indicateurs numériques à 0 ; utilisez bool seulement si la signature renvoie bool.

UO.StopBoat() — UO.StopBoat()

Paramètres: Aucun paramètre.

Résultat: void / Unit.

Pendant un appel:

Code interne de l’implémentation ; ce n’est pas un script autonome.

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