FR UO Topic mouse keyboard - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Accueil · C# · IDE · UO API · A–Z · Exemples · Langues
Saisie à la souris et au clavier. Les coordonnées de l'écran, les cellules du monde et les coordonnées à l'intérieur d'un Gump ont des significations différentes.
| Sujet | Commandes et explications |
|---|---|
| Click | UO.Click |
| LClick | UO.LClick |
| RClick | UO.RClick |
| DoubleClick | UO.LDblClick · UO.RDblClick |
| KeyPress | UO.KeyPress |
| Press | UO.Press |
UO.Click · UO.LClick · UO.RClick · UO.LDblClick · UO.RDblClick · UO.KeyPress · UO.Press
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.
Paramètres, résultat et tous les scénarios
UO.LClick(100, 100);Paramètres, résultat et tous les scénarios
UO.KeyPress(0x70);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Click(object? name);Envoie un simple clic sur un objet via GameActions.SingleClick.
-
name— Numéro de série de l'objet ou nom pris en charge de l'objet self/backpack/lasttarget/saved ; les chaînes numériques et les chaînes 0x sont résolues par l'exécution.
void - aucune valeur de retour.
- Click résout le lien via ObjectChecked. ClickOnObject utilise d'abord Arg pour serial et appelle Click(int). Il s'agit d'une demande de signature/informations sur l'article, et non de DoubleClick ou d'utilisation de l'article. La réponse du serveur arrive de manière asynchrone.
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.
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.Click");
UO.Click("self");Paramètres et déroulement de l’exécution :
- Un simple clic est envoyé à self.
UO.Click("self");Paramètres et déroulement de l’exécution :
- Avant l'envoi, l'existence locale de la cible est vérifiée.
return RunScenario();
object? RunScenario()
{
var target = UO.LastTarget();
if (Truth(UO.Exists(target)))
{
UO.Click(target);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- Un simple clic sur un sac à dos ne l'ouvre pas comme un double-clic dessus.
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 bag = UO.Backpack();
if (Truth(bag != 0))
{
UO.Click(bag);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue les majuscules. Utilisez le nom UO exact. Comparez les indicateurs numériques à 0 ; utilisez bool seulement si la signature renvoie bool.
Paramètres: name (Any)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.Click. -
InjectionScript.Runtime.InjectionApiUO.ObjectChecked:ObjectChecked(name, id => Click(id)). -
InjectionScript.Runtime.InjectionApiUO.Click:Click(id).
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void Click(InjectionValue name) => ObjectChecked(name, id => Click(id));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.KeyPress(object? key);
void UO.KeyPress(object? key, object? count);
void UO.KeyPress(object? key, object? count, object? delay);Synthétise une ou plusieurs pressions de touches virtuelles.
-
key- int clé virtuelle Windows, réduite à byte. Ce n'est pas une chaîne de caractères, ni une cible ID. -
count— Nombre facultatif de répétitions, par défaut 1. 0/négatif - pas de pression ni d'attente. -
delay- Pause facultative de millisecondes après chaque pression, y compris la dernière ; la valeur par défaut est 105. Transmis par pont.Wait sans autre restriction par cette fonction.
void - aucune valeur. Appelez sur une ligne séparée ; l'achèvement ne confirme pas l'action du serveur.
- Press transmet tous les formulaires à KeyPress. KeyPress exécute un nombre de boucles>0 : bridge.KeyPress(key), bridge.Wait(delay), count--. Bridge envoie user32 keybd_event vers le bas/vers le haut.
- Nécessite un Graphics ClassicUO ouvert avec le focus d'entrée ; sinon RequireGameInput renvoie une erreur. Le clic traite l'interface/macro actuelle, le résultat de la commande serveur n'est pas renvoyé.
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.
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.KeyPress");
UO.KeyPress(0x70);Paramètres et déroulement de l’exécution :
- Synthétise une ou plusieurs pressions de touches virtuelles.
UO.KeyPress(0x70);Paramètres et déroulement de l’exécution :
- Press transmet tous les formulaires à KeyPress. KeyPress exécute un nombre de boucles>0 : bridge.KeyPress(key), bridge.Wait(delay), count--. Bridge envoie user32 keybd_event vers le bas/vers le haut.
return RunScenario();
object? RunScenario()
{
UO.KeyPress(0x70, 2, 250);
return null;
}Paramètres et déroulement de l’exécution :
- Nécessite un Graphics ClassicUO ouvert avec le focus d'entrée ; sinon RequireGameInput renvoie une erreur. Le clic traite l'interface/macro actuelle, le résultat de la commande serveur n'est pas renvoyé.
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.KeyPress(0x70, 0);
UO.Print("Zero count sends no key");
return null;
}
}C# distingue les majuscules. Utilisez le nom UO exact. Comparez les indicateurs numériques à 0 ; utilisez bool seulement si la signature renvoie bool.
Paramètres: key (Integer)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.KeyPress. -
InjectionScript.Runtime.InjectionApiUO.KeyPress:KeyPress(key, 1).
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void KeyPress(int key) => KeyPress(key, 1);Paramètres: key (Integer), count (Integer)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.KeyPress. -
InjectionScript.Runtime.InjectionApiUO.KeyPress:KeyPress(key, count, 105).
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void KeyPress(int key, int count) => KeyPress(key, count, 105);Paramètres: key (Integer), count (Integer), delay (Integer)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.KeyPress. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.KeyPress:bridge.KeyPress(key). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Wait:bridge.Wait(delay).
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void KeyPress(int key, int count, int delay)
{
while (count > 0)
{
bridge.KeyPress(key);
bridge.Wait(delay);
count--;
}
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.LClick(object? x, object? y);Synthétise un simple clic de souris : bouton gauche.
-
x— int X dans les pixels de la fenêtre ClassicUO, pas les coordonnées mondiales. -
y— int Y dans les pixels de la fenêtre ClassicUO, pas les coordonnées mondiales.
void - aucune valeur. Appelez sur une ligne séparée ; l'achèvement ne confirme pas l'action du serveur.
- Bridge appelle WarpMouse(x,y), met à jour Mouse.Position et SDL_WarpMouseInWindow, puis MouseButton vers le bas/vers le haut une fois. Il n'y a pas de pause entre les doubles clics.
- Nécessite une fenêtre graphique ClassicUO ouverte avec le focus d'entrée ; sinon RequireGameInput lance InvalidOperationException. user32 mouse_event est disponible sous Windows. Le bouton/objet sous le point dépend de l'interface actuelle.
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.
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.LClick");
UO.LClick(100, 100);Paramètres et déroulement de l’exécution :
- Synthétise un simple clic de souris : bouton gauche.
UO.LClick(100, 100);Paramètres et déroulement de l’exécution :
- Bridge appelle WarpMouse(x,y), met à jour Mouse.Position et SDL_WarpMouseInWindow, puis MouseButton vers le bas/vers le haut une fois. Il n'y a pas de pause entre les doubles clics.
return RunScenario();
object? RunScenario()
{
var x = 120;
var y = 140;
UO.LClick(x, y);
return null;
}Paramètres et déroulement de l’exécution :
- Nécessite une fenêtre graphique ClassicUO ouverte avec le focus d'entrée ; sinon RequireGameInput lance InvalidOperationException. user32 mouse_event est disponible sous Windows. Le bouton/objet sous le point dépend de l'interface actuelle.
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()
{
ClickAt(100, 100);
return null;
}
void ClickAt(dynamic x, dynamic y)
{
UO.LClick(x, y);
}
}C# distingue les majuscules. Utilisez le nom UO exact. Comparez les indicateurs numériques à 0 ; utilisez bool seulement si la signature renvoie bool.
Paramètres: x (Integer), y (Integer)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.LClick. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LClick:bridge.LClick(x, y).
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void LClick(int x, int y) => bridge.LClick(x, y);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.LDblClick(object? x, object? y);Synthétise un double clic de souris : bouton gauche.
-
x— int X dans les pixels de la fenêtre ClassicUO, pas les coordonnées mondiales. -
y— int Y dans les pixels de la fenêtre ClassicUO, pas les coordonnées mondiales.
void - aucune valeur. Appelez sur une ligne séparée ; l'achèvement ne confirme pas l'action du serveur.
- Bridge appelle WarpMouse(x,y), met à jour Mouse.Position et SDL_WarpMouseInWindow, puis MouseButton vers le bas/vers le haut deux fois. Il n'y a pas de pause entre les doubles clics.
- Nécessite une fenêtre graphique ClassicUO ouverte avec le focus d'entrée ; sinon RequireGameInput lance InvalidOperationException. user32 mouse_event est disponible sous Windows. Le bouton/objet sous le point dépend de l'interface actuelle.
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.
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.LDblClick");
UO.LDblClick(100, 100);Paramètres et déroulement de l’exécution :
- Synthétise un double clic de souris : bouton gauche.
UO.LDblClick(100, 100);Paramètres et déroulement de l’exécution :
- Bridge appelle WarpMouse(x,y), met à jour Mouse.Position et SDL_WarpMouseInWindow, puis MouseButton vers le bas/vers le haut deux fois. Il n'y a pas de pause entre les doubles clics.
return RunScenario();
object? RunScenario()
{
var x = 120;
var y = 140;
UO.LDblClick(x, y);
return null;
}Paramètres et déroulement de l’exécution :
- Nécessite une fenêtre graphique ClassicUO ouverte avec le focus d'entrée ; sinon RequireGameInput lance InvalidOperationException. user32 mouse_event est disponible sous Windows. Le bouton/objet sous le point dépend de l'interface actuelle.
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()
{
ClickAt(100, 100);
return null;
}
void ClickAt(dynamic x, dynamic y)
{
UO.LDblClick(x, y);
}
}C# distingue les majuscules. Utilisez le nom UO exact. Comparez les indicateurs numériques à 0 ; utilisez bool seulement si la signature renvoie bool.
Paramètres: x (Integer), y (Integer)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.LDblClick. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LDblClick:bridge.LDblClick(x, y).
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void LDblClick(int x, int y) => bridge.LDblClick(x, y);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Press(object? key);
void UO.Press(object? key, object? count);
void UO.Press(object? key, object? count, object? delay);Synthétise une ou plusieurs pressions de touches virtuelles.
-
key- int clé virtuelle Windows, réduite à byte. Ce n'est pas une chaîne de caractères, ni une cible ID. -
count— Nombre facultatif de répétitions, par défaut 1. 0/négatif - pas de pression ni d'attente. -
delay- Pause facultative de millisecondes après chaque pression, y compris la dernière ; la valeur par défaut est 105. Transmis par pont.Wait sans autre restriction par cette fonction.
void - aucune valeur. Appelez sur une ligne séparée ; l'achèvement ne confirme pas l'action du serveur.
- Press transmet tous les formulaires à KeyPress. KeyPress exécute un nombre de boucles>0 : bridge.KeyPress(key), bridge.Wait(delay), count--. Bridge envoie user32 keybd_event vers le bas/vers le haut.
- Nécessite un Graphics ClassicUO ouvert avec le focus d'entrée ; sinon RequireGameInput renvoie une erreur. Le clic traite l'interface/macro actuelle, le résultat de la commande serveur n'est pas renvoyé.
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.
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.Press");
UO.Press(0x70);Paramètres et déroulement de l’exécution :
- Synthétise une ou plusieurs pressions de touches virtuelles.
UO.Press(0x70);Paramètres et déroulement de l’exécution :
- Press transmet tous les formulaires à KeyPress. KeyPress exécute un nombre de boucles>0 : bridge.KeyPress(key), bridge.Wait(delay), count--. Bridge envoie user32 keybd_event vers le bas/vers le haut.
return RunScenario();
object? RunScenario()
{
UO.Press(0x70, 2, 250);
return null;
}Paramètres et déroulement de l’exécution :
- Nécessite un Graphics ClassicUO ouvert avec le focus d'entrée ; sinon RequireGameInput renvoie une erreur. Le clic traite l'interface/macro actuelle, le résultat de la commande serveur n'est pas renvoyé.
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.Press(0x70, 0);
UO.Print("Zero count sends no key");
return null;
}
}C# distingue les majuscules. Utilisez le nom UO exact. Comparez les indicateurs numériques à 0 ; utilisez bool seulement si la signature renvoie bool.
Paramètres: key (Integer)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.Press. -
InjectionScript.Runtime.InjectionApiUO.KeyPress:KeyPress(key).
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void Press(int key) => KeyPress(key);Paramètres: key (Integer), count (Integer)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.Press. -
InjectionScript.Runtime.InjectionApiUO.KeyPress:KeyPress(key, count).
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void Press(int key, int count) => KeyPress(key, count);Paramètres: key (Integer), count (Integer), delay (Integer)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.Press. -
InjectionScript.Runtime.InjectionApiUO.KeyPress:KeyPress(key, count, delay).
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void Press(int key, int count, int delay) => KeyPress(key, count, delay);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.RClick(object? x, object? y);Synthétise un simple clic de souris : bouton droit.
-
x— int X dans les pixels de la fenêtre ClassicUO, pas les coordonnées mondiales. -
y— int Y dans les pixels de la fenêtre ClassicUO, pas les coordonnées mondiales.
void - aucune valeur. Appelez sur une ligne séparée ; l'achèvement ne confirme pas l'action du serveur.
- Bridge appelle WarpMouse(x,y), met à jour Mouse.Position et SDL_WarpMouseInWindow, puis MouseButton vers le bas/vers le haut une fois. Il n'y a pas de pause entre les doubles clics.
- Nécessite une fenêtre graphique ClassicUO ouverte avec le focus d'entrée ; sinon RequireGameInput lance InvalidOperationException. user32 mouse_event est disponible sous Windows. Le bouton/objet sous le point dépend de l'interface actuelle.
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.
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.RClick");
UO.RClick(100, 100);Paramètres et déroulement de l’exécution :
- Synthétise un simple clic de souris : bouton droit.
UO.RClick(100, 100);Paramètres et déroulement de l’exécution :
- Bridge appelle WarpMouse(x,y), met à jour Mouse.Position et SDL_WarpMouseInWindow, puis MouseButton vers le bas/vers le haut une fois. Il n'y a pas de pause entre les doubles clics.
return RunScenario();
object? RunScenario()
{
var x = 120;
var y = 140;
UO.RClick(x, y);
return null;
}Paramètres et déroulement de l’exécution :
- Nécessite une fenêtre graphique ClassicUO ouverte avec le focus d'entrée ; sinon RequireGameInput lance InvalidOperationException. user32 mouse_event est disponible sous Windows. Le bouton/objet sous le point dépend de l'interface actuelle.
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()
{
ClickAt(100, 100);
return null;
}
void ClickAt(dynamic x, dynamic y)
{
UO.RClick(x, y);
}
}C# distingue les majuscules. Utilisez le nom UO exact. Comparez les indicateurs numériques à 0 ; utilisez bool seulement si la signature renvoie bool.
Paramètres: x (Integer), y (Integer)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.RClick. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RClick:bridge.RClick(x, y).
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void RClick(int x, int y) => bridge.RClick(x, y);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.RDblClick(object? x, object? y);Synthétise un double clic de souris : bouton droit.
-
x— int X dans les pixels de la fenêtre ClassicUO, pas les coordonnées mondiales. -
y— int Y dans les pixels de la fenêtre ClassicUO, pas les coordonnées mondiales.
void - aucune valeur. Appelez sur une ligne séparée ; l'achèvement ne confirme pas l'action du serveur.
- Bridge appelle WarpMouse(x,y), met à jour Mouse.Position et SDL_WarpMouseInWindow, puis MouseButton vers le bas/vers le haut deux fois. Il n'y a pas de pause entre les doubles clics.
- Nécessite une fenêtre graphique ClassicUO ouverte avec le focus d'entrée ; sinon RequireGameInput lance InvalidOperationException. user32 mouse_event est disponible sous Windows. Le bouton/objet sous le point dépend de l'interface actuelle.
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.
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.RDblClick");
UO.RDblClick(100, 100);Paramètres et déroulement de l’exécution :
- Synthétise un double clic de souris : bouton droit.
UO.RDblClick(100, 100);Paramètres et déroulement de l’exécution :
- Bridge appelle WarpMouse(x,y), met à jour Mouse.Position et SDL_WarpMouseInWindow, puis MouseButton vers le bas/vers le haut deux fois. Il n'y a pas de pause entre les doubles clics.
return RunScenario();
object? RunScenario()
{
var x = 120;
var y = 140;
UO.RDblClick(x, y);
return null;
}Paramètres et déroulement de l’exécution :
- Nécessite une fenêtre graphique ClassicUO ouverte avec le focus d'entrée ; sinon RequireGameInput lance InvalidOperationException. user32 mouse_event est disponible sous Windows. Le bouton/objet sous le point dépend de l'interface actuelle.
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()
{
ClickAt(100, 100);
return null;
}
void ClickAt(dynamic x, dynamic y)
{
UO.RDblClick(x, y);
}
}C# distingue les majuscules. Utilisez le nom UO exact. Comparez les indicateurs numériques à 0 ; utilisez bool seulement si la signature renvoie bool.
Paramètres: x (Integer), y (Integer)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.RDblClick. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RDblClick:bridge.RDblClick(x, y).
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void RDblClick(int x, int y) => bridge.RDblClick(x, y);