Skip to content

DE UO Topic proxy

Codex edited this page Oct 12, 2026 · 4 revisions

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

Proxy

Home · C# · IDE · UO API · A–Z · Beispiele · Sprachen

Kompatible Namen API für Proxys. Das bloße Vorhandensein eines Namens im Register beweist noch nicht die Berechtigung für den Transport: Die tatsächlichen Einschränkungen sind in jeder Karte angegeben.

Abschnitte

Thema Befehle und Erklärungen
UseProxy UO.UseProxy
ProxyIP UO.ProxyIP
ProxyPort UO.ProxyPort
Authentication UO.UseProxy

Alle Theme-Befehle

Proxy-Konfiguration

UO.UseProxy · UO.ProxyIP · UO.ProxyPort

Beispiele zum Thema

Jede Befehlskarte verfügt über mehrere unabhängige Szenarien: Direktcode, Funktionen und Klassen. Nachfolgend finden Sie ausgewählte kurze Szenarien; Einschränkungen und eine vollständige Analyse sind geplant.

UO.ProxyIP

Parameter, Ergebnis und alle Szenarien

return UO.ProxyIP();

UO.ProxyPort

Parameter, Ergebnis und alle Szenarien

return UO.ProxyPort();

Vollständige Befehlsreferenz


UO.ProxyIP

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

C#-Signaturen

dynamic UO.ProxyIP();

Liest die Proxy-Adresse des aktuellen Profils, um die ausgewählte Route vor der Verbindung zu überprüfen.

Parameter

Es gibt keine Parameter.

Rückgabewert

string: Der angegebene IP oder DNS ist der Proxy-Name. Eine leere Zeichenfolge für einen direkten Join. DNS-Name wird hier nicht in IP umgewandelt; Dies ist nicht die Adresse des Spieleservers.

Verhalten

  • Es gibt keine Parameter. Liest die Einstellungen des Besitzers dieser Sitzung, auch ohne Verbindung. Aktiviert oder deaktiviert den Proxy nicht, greift nicht darauf zu, stellt keine erneute Verbindung her und gibt das Passwort nicht preis. Ein regulärer Full ohne verwalteten Proxy gibt direkte Verbindungswerte zurück. Um Verbindungsänderungen zu übernehmen, ändern Sie das Profil und starten Sie die Sitzung neu. Das Profil wird sowohl für die Anmeldung als auch für die Spieleverbindung verwendet.

Eigenständige C#-Skripte

Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.

Einfaches Beispiel

Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.

Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.

object? result = UO.ProxyIP();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. UO.ProxyIP – 1 – direktes Skript

Parameter und Ablauf:

  • Main gibt die aktuelle Einstellung zurück. Für Proxy.example.invalid:1080 lautet die Adresse „proxy.example.invalid“, Port 1080, UseProxy == 1. Für Direktverbindung jeweils „“, 0, 0. Die Beispieldomäne ist ein Stub, kein funktionierender Proxy.
return UO.ProxyIP();

2. UO.ProxyIP — 2 — Skriptfunktion

Parameter und Ablauf:

  • Das Array enthält zwei aufgelöste Adressen mit einer genauen Übereinstimmung. Die Schleife vergleicht den konfigurierten Namen nur, wenn UseProxy == 1 und gibt 1 zurück, wenn eine Übereinstimmung vorliegt, andernfalls 0. Ersetzen Sie die Namen durch Ihre eigenen. Dies ist eine Konfigurationsprüfung, nicht die Authentizität des Remote-Proxys.
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;

3. UO.ProxyIP – 3 – Szenarioklasse

Parameter und Ablauf:

  • RequireRoute erhält die Adresse = „proxy.example.invalid“, Port = 1080. Überprüft alle drei Einstellungen bis UO.Connect. Eine Nichtübereinstimmung ergibt 0 ohne Verbindung. Das Match bittet um eine Verbindung und gibt 1; Dies ist eine Anfrage, keine Bestätigung der Teilnahme am Spiel. Ersetzen Sie beide Stecker. UO.Connected separat prüfen.
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;
}

Implementierung des Befehls

C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.

UO.ProxyIP() — UO.ProxyIP()

Parameter: Keine Parameter.

Ergebnis: dynamic / Any.

Beim Aufruf:

Interner Implementierungscode; kein eigenständiges Skript.

case "proxyip": return new InjectionValue((bridge as IProxyMetadataBridge)?.ProxyAddress ?? string.Empty);

UO.ProxyPort

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

C#-Signaturen

dynamic UO.ProxyPort();

Liest den Proxy-Port des aktuellen Profils, um das Adresse/Port-Paar zu überprüfen.

Parameter

Es gibt keine Parameter.

Rückgabewert

int: konfigurierter Proxy-Port in 1..65535; 0 für direkte Verbindung. Dies ist kein Gameserver-Port.

Verhalten

  • Es gibt keine Parameter. Liest die Einstellungen des Besitzers dieser Sitzung, auch ohne Verbindung. Aktiviert oder deaktiviert den Proxy nicht, greift nicht darauf zu, stellt keine erneute Verbindung her und gibt das Passwort nicht preis. Ein regulärer Full ohne verwalteten Proxy gibt direkte Verbindungswerte zurück. Um Verbindungsänderungen zu übernehmen, ändern Sie das Profil und starten Sie die Sitzung neu. Das Profil wird sowohl für die Anmeldung als auch für die Spieleverbindung verwendet.

Eigenständige C#-Skripte

Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.

Einfaches Beispiel

Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.

Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.

object? result = UO.ProxyPort();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. UO.ProxyPort – 1 – direktes Skript

Parameter und Ablauf:

  • Main gibt die aktuelle Einstellung zurück. Für Proxy.example.invalid:1080 lautet die Adresse „proxy.example.invalid“, Port 1080, UseProxy == 1. Für Direktverbindung jeweils „“, 0, 0. Die Beispieldomäne ist ein Stub, kein funktionierender Proxy.
return UO.ProxyPort();

2. UO.ProxyPort — 2 — Skriptfunktion

Parameter und Ablauf:

  • RouteLabel erstellt die Signatur der konfigurierten Route: Adresse:Port oder „direkt“ für eine direkte Verbindung. Login und Passwort sind nicht lesbar.
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;

3. UO.ProxyPort – 3 – Szenarioklasse

Parameter und Ablauf:

  • RequireRoute erhält die Adresse = „proxy.example.invalid“, Port = 1080. Überprüft alle drei Einstellungen bis UO.Connect. Eine Nichtübereinstimmung ergibt 0 ohne Verbindung. Das Match bittet um eine Verbindung und gibt 1; Dies ist eine Anfrage, keine Bestätigung der Teilnahme am Spiel. Ersetzen Sie beide Stecker. UO.Connected separat prüfen.
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;
}

Implementierung des Befehls

C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.

UO.ProxyPort() — UO.ProxyPort()

Parameter: Keine Parameter.

Ergebnis: dynamic / Any.

Beim Aufruf:

Interner Implementierungscode; kein eigenständiges Skript.

case "proxyport": return new InjectionValue((bridge as IProxyMetadataBridge)?.ProxyPort ?? 0);

UO.UseProxy

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

C#-Signaturen

dynamic UO.UseProxy();

Überprüft, ob diese Sitzung für die Verbindung über einen Proxy konfiguriert ist.

Parameter

Es gibt keine Parameter.

Rückgabewert

int 1 (true) wenn Proxy konfiguriert ist, andernfalls 0 (false). Überprüfen Sie in C#, ob (Ergebnis != 0) oder ob (Ergebnis == 1); Das Ergebnis ist vom Typ int, daher sind if (Ergebnis) und ein Vergleich mit true nicht zulässig. Das Gerät bestätigt weder die Proxy-Verfügbarkeit noch die erfolgreiche Autorisierung.

Verhalten

  • Es gibt keine Parameter. Liest die Einstellungen des Besitzers dieser Sitzung, auch ohne Verbindung. Aktiviert oder deaktiviert den Proxy nicht, greift nicht darauf zu, stellt keine erneute Verbindung her und gibt das Passwort nicht preis. Ein regulärer Full ohne verwalteten Proxy gibt direkte Verbindungswerte zurück. Um Verbindungsänderungen zu übernehmen, ändern Sie das Profil und starten Sie die Sitzung neu. Das Profil wird sowohl für die Anmeldung als auch für die Spieleverbindung verwendet.

Eigenständige C#-Skripte

Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.

Einfaches Beispiel

Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.

Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.

object? result = UO.UseProxy();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. UO.UseProxy – 1 – direktes Skript

Parameter und Ablauf:

  • Main gibt die aktuelle Einstellung zurück. Für Proxy.example.invalid:1080 lautet die Adresse „proxy.example.invalid“, Port 1080, UseProxy == 1. Für Direktverbindung jeweils „“, 0, 0. Die Beispieldomäne ist ein Stub, kein funktionierender Proxy.
return UO.UseProxy();

2. UO.UseProxy — 2 — Skriptfunktion

Parameter und Ablauf:

  • RouteLabel erstellt die Signatur der konfigurierten Route: Adresse:Port oder „direkt“ für eine direkte Verbindung. Login und Passwort sind nicht lesbar.
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;

3. UO.UseProxy – 3 – Szenarioklasse

Parameter und Ablauf:

  • RequireRoute erhält die Adresse = „proxy.example.invalid“, Port = 1080. Überprüft alle drei Einstellungen bis UO.Connect. Eine Nichtübereinstimmung ergibt 0 ohne Verbindung. Das Match bittet um eine Verbindung und gibt 1; Dies ist eine Anfrage, keine Bestätigung der Teilnahme am Spiel. Ersetzen Sie beide Stecker. UO.Connected separat prüfen.
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;
}

Implementierung des Befehls

C# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.

UO.UseProxy() — UO.UseProxy()

Parameter: Keine Parameter.

Ergebnis: dynamic / Any.

Beim Aufruf:

Interner Implementierungscode; kein eigenständiges Skript.

case "useproxy": return new InjectionValue((bridge as IProxyMetadataBridge)?.UsesProxy == true ? 1 : 0);

Clone this wiki locally