Repository navigation
RU UO Topic proxy
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Главная · C# · IDE · UO API · A–Z · Примеры · Языки
Совместимые имена API для прокси. Само наличие имени в реестре не доказывает поддержку транспорта: фактические ограничения указаны в каждой карточке.
| Тема | Команды и пояснения |
|---|---|
| UseProxy | UO.UseProxy |
| ProxyIP | UO.ProxyIP |
| ProxyPort | UO.ProxyPort |
| Authentication | 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