Repository navigation
UO Topic proxy
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Головна · C# · IDE · Команди UO · За абеткою · Приклади · Мови
Команди налаштування проміжного сервера — проксі. Перевіряйте опис кожної команди: збережене в API ім’я саме по собі не означає, що підключення через проксі реалізовано.
| Тема | Команди та пояснення |
|---|---|
| Увімкнення проксі | UO.UseProxy |
| Адреса проксі | UO.ProxyIP |
| Порт проксі | UO.ProxyPort |
| Автентифікація | UO.UseProxy |
UO.UseProxy · UO.ProxyIP · UO.ProxyPort
Нижче наведено короткі приклади. У повному описі кожної команди є параметри, результат, обмеження та кілька самостійних скриптів: прямий код, варіант із функцією та варіант із класом.
Параметри, результат та всі сценарії
return UO.ProxyIP();Параметри, результат та всі сценарії
return UO.ProxyPort();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.ProxyIP();Читає адресу проксі поточного профілю, щоб перевірити вибраний маршрут перед підключенням.
Параметрів немає.
string: вказаний IP або DNS-ім'я проксі. Порожній рядок під час прямого з'єднання. DNS-ім'я тут не перетворюється на IP; це не адреса ігрового сервера.
- Параметрів немає. Читає налаштування власника цього сеансу, зокрема без з'єднання. Не включає та не відключає проксі, не звертається до нього, не перепідключає та не розкриває пароль. Звичайний Full без керованого проксі повертає значення прямого з'єднання. Щоб змінити підключення, змініть профіль та перезапустіть його сеанс. Профіль використовується як для входу, так і для ігрового з'єднання.
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Результат одного виклику виводиться в журнал. Число не перетворюється на bool; для масиву показано кількість елементів.
object? result = UO.ProxyIP();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Параметри та порядок виконання:
- Main повертає поточне налаштування. Для proxy.example.invalid:1080 адреса дорівнює "proxy.example.invalid", порт 1080, UseProxy == 1. Для прямого з'єднання відповідно "", 0, 0. Домен прикладу - заглушка, а не працюючий проксі.
return UO.ProxyIP();Параметри та порядок виконання:
- У масиві дві дозволені адреси з точним збігом. Цикл порівнює налаштоване ім'я тільки при UseProxy == 1 і повертає 1 при збігу, інакше 0. Замініть імена своїми. Це перевірка налаштування, а не автентичності віддаленого проксі.
return RunScenario();
object? RunScenario()
{
dynamic[] allowed = new dynamic[checked((int)(1) + 1)];
allowed[0] = "proxy.example.invalid";
allowed[1] = "127.0.0.1";
if (Truth(UO.UseProxy()))
{
var index = 0;
while (Truth(index < ArrayLength(allowed)))
{
if (Truth(UO.ProxyIP() == allowed[index]))
{
return 1;
}
index = index + 1;
}
}
return 0;
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Параметри та порядок виконання:
- RequireRoute отримує address="proxy.example.invalid", port=1080. Перевіряє всі три параметри до UO.Connect. Розбіжність дає 0 без підключення. Збіг запитує підключення та дає 1; це запит, а чи не підтвердження входу в гру. Замініть обидві заглушки; UO.Connected перевіряйте окремо.
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()
{
return RequireRoute("proxy.example.invalid", 1080);
return null;
}
dynamic RequireRoute(dynamic address, dynamic port)
{
if (!(Truth(UO.UseProxy())))
{
return 0;
}
if (Truth(UO.ProxyIP() != address) || Truth(UO.ProxyPort() != port))
{
return 0;
}
UO.Connect();
return 1;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# враховує регістр. Використовуйте точне ім’я UO. Числові прапорці порівнюйте з 0; bool використовуйте лише там, де сигнатура повертає bool.
Параметри: Немає параметрів.
Результат: dynamic / Any.
Під час виклику:
Внутрішній код реалізації, не самостійний скрипт.
case "proxyip": return new InjectionValue((bridge as IProxyMetadataBridge)?.ProxyAddress ?? string.Empty);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.ProxyPort();Читає порт проксі поточного профілю, щоб перевірити пару адрес/порт.
Параметрів немає.
int: налаштований порт проксі в 1..65535; 0 при прямому з'єднанні. Це не порт ігрового сервера.
- Параметрів немає. Читає налаштування власника цього сеансу, зокрема без з'єднання. Не включає та не відключає проксі, не звертається до нього, не перепідключає та не розкриває пароль. Звичайний Full без керованого проксі повертає значення прямого з'єднання. Щоб змінити підключення, змініть профіль та перезапустіть його сеанс. Профіль використовується як для входу, так і для ігрового з'єднання.
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Результат одного виклику виводиться в журнал. Число не перетворюється на bool; для масиву показано кількість елементів.
object? result = UO.ProxyPort();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Параметри та порядок виконання:
- Main повертає поточне налаштування. Для proxy.example.invalid:1080 адреса дорівнює "proxy.example.invalid", порт 1080, UseProxy == 1. Для прямого з'єднання відповідно "", 0, 0. Домен прикладу - заглушка, а не працюючий проксі.
return UO.ProxyPort();Параметри та порядок виконання:
- RouteLabel будує підпис налаштованого маршруту: адресу: порт або "direct" для прямого з'єднання. Логін та пароль не читаються.
return RunScenario();
object? RunScenario()
{
return RouteLabel();
return null;
}
dynamic RouteLabel()
{
if (Truth(UO.UseProxy()))
{
return UO.ProxyIP() + ":" + Convert.ToString(UO.ProxyPort());
}
return "direct";
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Параметри та порядок виконання:
- RequireRoute отримує address="proxy.example.invalid", port=1080. Перевіряє всі три параметри до UO.Connect. Розбіжність дає 0 без підключення. Збіг запитує підключення та дає 1; це запит, а чи не підтвердження входу в гру. Замініть обидві заглушки; UO.Connected перевіряйте окремо.
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()
{
return RequireRoute("proxy.example.invalid", 1080);
return null;
}
dynamic RequireRoute(dynamic address, dynamic port)
{
if (!(Truth(UO.UseProxy())))
{
return 0;
}
if (Truth(UO.ProxyIP() != address) || Truth(UO.ProxyPort() != port))
{
return 0;
}
UO.Connect();
return 1;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# враховує регістр. Використовуйте точне ім’я UO. Числові прапорці порівнюйте з 0; bool використовуйте лише там, де сигнатура повертає bool.
Параметри: Немає параметрів.
Результат: dynamic / Any.
Під час виклику:
Внутрішній код реалізації, не самостійний скрипт.
case "proxyport": return new InjectionValue((bridge as IProxyMetadataBridge)?.ProxyPort ?? 0);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.UseProxy();Перевіряє, чи підключено цей сеанс через проксі.
Параметрів немає.
int 1 (true), якщо проксі налаштований, інакше 0 (false). У C# перевіряйте if (result != 0) або if (result == 1); result має тип int, тому if (result) та порівняння з true неприпустимі. Одиниця не підтверджує доступність проксі або успішної авторизації.
- Параметрів немає. Читає налаштування власника цього сеансу, зокрема без з'єднання. Не включає та не відключає проксі, не звертається до нього, не перепідключає та не розкриває пароль. Звичайний Full без керованого проксі повертає значення прямого з'єднання. Щоб змінити підключення, змініть профіль та перезапустіть його сеанс. Профіль використовується як для входу, так і для ігрового з'єднання.
Кожен приклад можна зберегти окремим файлом .csx та запускати в IDE. Об'єкт UO та функції очікування надає host поточної ігрової сесії. Демонстраційні serial, імена, координати та адреси замініть своїми.
Виконайте цей код як окремий файл .csx. Аргументи видно безпосередньо у виклику; демонстраційні імена, serial та адреси замініть своїми.
Результат одного виклику виводиться в журнал. Число не перетворюється на bool; для масиву показано кількість елементів.
object? result = UO.UseProxy();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Параметри та порядок виконання:
- Main повертає поточне налаштування. Для proxy.example.invalid:1080 адреса дорівнює "proxy.example.invalid", порт 1080, UseProxy == 1. Для прямого з'єднання відповідно "", 0, 0. Домен прикладу - заглушка, а не працюючий проксі.
return UO.UseProxy();Параметри та порядок виконання:
- RouteLabel будує підпис налаштованого маршруту: адресу: порт або "direct" для прямого з'єднання. Логін та пароль не читаються.
return RunScenario();
object? RunScenario()
{
return RouteLabel();
return null;
}
dynamic RouteLabel()
{
if (Truth(UO.UseProxy()))
{
return UO.ProxyIP() + ":" + Convert.ToString(UO.ProxyPort());
}
return "direct";
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Параметри та порядок виконання:
- RequireRoute отримує address="proxy.example.invalid", port=1080. Перевіряє всі три параметри до UO.Connect. Розбіжність дає 0 без підключення. Збіг запитує підключення та дає 1; це запит, а чи не підтвердження входу в гру. Замініть обидві заглушки; UO.Connected перевіряйте окремо.
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()
{
return RequireRoute("proxy.example.invalid", 1080);
return null;
}
dynamic RequireRoute(dynamic address, dynamic port)
{
if (!(Truth(UO.UseProxy())))
{
return 0;
}
if (Truth(UO.ProxyIP() != address) || Truth(UO.ProxyPort() != port))
{
return 0;
}
UO.Connect();
return 1;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# враховує регістр. Використовуйте точне ім’я UO. Числові прапорці порівнюйте з 0; bool використовуйте лише там, де сигнатура повертає bool.
Параметри: Немає параметрів.
Результат: dynamic / Any.
Під час виклику:
Внутрішній код реалізації, не самостійний скрипт.
case "useproxy": return new InjectionValue((bridge as IProxyMetadataBridge)?.UsesProxy == true ? 1 : 0);ClassicUO — Bad Newbie & C# Scripts IDE