Skip to content

RU Runtime Helpers 2

Codex edited this page Oct 12, 2026 · 1 revision

uk · ru · en · de · fr · it · es · zh-tw · ja · ko

Вспомогательные функции 2

Внутренний код реализации, не самостоятельный скрипт.

ClassicUO.CSharp.CSharpCallbacks.TryInvoke

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/src/ClassicUO.CSharp/CSharpCallbacks.cs:431.

Результат: false; true.

Условия: words.Length == 0; words.Length > offset && Exists(words[offset]); words.Length > offset && events is ICSharpScriptHost scriptHost && (offset == 1 || scriptHost.HasCSharpScript(words[offset])); words[0].Equals("_exec", StringComparison.OrdinalIgnoreCase).

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "Exec":
                var words = CommandWords(Convert.ToString(arguments[0]) ?? "");
                if (words.Length == 0) return false;
                int offset = words[0].Equals("exec", StringComparison.OrdinalIgnoreCase) || words[0].Equals("_exec", StringComparison.OrdinalIgnoreCase) ? 1 : 0;
                if (words.Length > offset && Exists(words[offset]))
                { Start(words[offset], words.Skip(offset + 1).ToArray()); return true; }
                if (words.Length > offset && events is ICSharpScriptHost scriptHost
                    && (offset == 1 || scriptHost.HasCSharpScript(words[offset])))
                {
                    string command = Convert.ToString(arguments[0]) ?? "";
                    if (words[0].Equals("_exec", StringComparison.OrdinalIgnoreCase)) command = "exec" + command.TrimStart()[5..];
                    scriptHost.ExecuteCSharpScript(command); return true;
                }
                return false;

ClassicUO.CSharp.CSharpCallbacks.TryInvoke

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/src/ClassicUO.CSharp/CSharpCallbacks.cs:423.

Результат: true.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "SetEventProc":
                SetStateEvent([arguments[0], !string.IsNullOrWhiteSpace(Convert.ToString(arguments[1])), true, arguments[1]]);
                return true;

ClassicUO.CSharp.CSharpCallbacks.Cancel

Возвращает значение выражения ниже.

Параметры: name

Источник: Project_Full/src/ClassicUO.CSharp/CSharpCallbacks.cs:217.

public bool Cancel(string name)

Результат: bool.

Результат: calls.Length != 0.

Вызовы: Verify, active.Where(call => call.Name.Equals((name ?? "").Trim(), StringComparison.OrdinalIgnoreCase)).ToArray, active.Where, call.Cancellation.Cancel.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public bool Cancel(string name)
    {
        Verify();
        Invocation[] calls;
        lock (sync) calls = active.Where(call => call.Name.Equals((name ?? "").Trim(), StringComparison.OrdinalIgnoreCase)).ToArray();
        foreach (var call in calls)
            try { call.Cancellation.Cancel(); } catch (ObjectDisposedException) { }
        return calls.Length != 0;
    }

ClassicUO.CSharp.CSharpCallbacks.SetStateEvent

Выполняет показанные вызовы и обновления состояния.

Параметры: arguments

Источник: Project_Full/src/ClassicUO.CSharp/CSharpCallbacks.cs:344.

private void SetStateEvent(object?[] arguments)

Результат: void.

Вызовы: EventName, RemoveState, Flag, name.ToLowerInvariant, native, Convert.ToString, NumberConversions.TryStr2Int, HandlerName.

Условия: name.Length == 0; !Flag(arguments[1]); sourceName == ""; arguments.Length == 3.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

private void SetStateEvent(object?[] arguments)
    {
        string name = EventName(arguments[0]);
        if (name.Length == 0) return;
        RemoveState(name);
        if (!Flag(arguments[1])) return;
        string? sourceName = name.ToLowerInvariant() switch
        {
            "changehitpoints" => "UO.HitPointsChanged", "changemana" => "UO.ManaChanged", "changestamina" => "UO.StaminaChanged",
            "death" or "seenewplayer" => null,
            _ => ""
        };
        if (sourceName == "")
        {
            native("Print", [$"SetEvent: unsupported event '{name}'. Supported: SeeNewPlayer, Death, ChangeHitPoints, ChangeMana, ChangeStamina."]);
            return;
        }
        bool repeat = true;
        string handler = "";
        if (arguments.Length == 3)
        {
            string text = Convert.ToString(arguments[2]) ?? "";
            if (text.Length != 0 && !NumberConversions.TryStr2Int(text, out _) && arguments[2] is not bool)
                handler = HandlerName(arguments[2]);
            else repeat = Flag(arguments[2]);
        }
        if (arguments.Length == 4) { repeat = Flag(arguments[2]); handler = HandlerName(arguments[3]); }
        var state = new StateEvent(name, repeat, handler);
        if (events is null || sourceName is null)
        {
            if (name.Equals("SeeNewPlayer", StringComparison.OrdinalIgnoreCase)) state.Mobiles = ReadMobiles();
            else state.Last = ReadState(name);
        }
        lock (sync)
        {
            Verify();
            if (events is not null && sourceName is not null)
                state.Subscription = Subscribe(sourceName, _ => { Trigger(state); return Task.CompletedTask; });
            stateEvents[name] = state;
        }
    }

ClassicUO.Configuration.BackNewbieRuleLists.BelongsTo

Возвращает значение выражения ниже.

Параметры: rule, listId

Источник: Project_Full/src/ClassicUO.Client/Configuration/BackNewbieRuleList.cs:23.

internal static bool BelongsTo(BackNewbieItemRule rule, string listId)

Результат: bool.

Вызовы: string.Equals, string.IsNullOrEmpty.

Внутренний код реализации, не самостоятельный скрипт.

internal static bool BelongsTo(BackNewbieItemRule rule, string listId) => rule != null
            && string.Equals(string.IsNullOrEmpty(rule.ListId) ? DefaultId : rule.ListId,
                listId, StringComparison.Ordinal);

ClassicUO.Game.GameActions.RequestMobileStatus

Выполняет показанные вызовы и обновления состояния.

Параметры: world, serial, force

Источник: Project_Full/src/ClassicUO.Client/Game/GameActions.cs:734.

public static void RequestMobileStatus(World world, uint serial, bool force = false)

Результат: void.

Вызовы: world.Get, SendCloseStatus, SerialHelper.IsValid, Socket.Send_StatusRequest.

Условия: world.InGame; ent != null; force; ent.HitsRequest >= HitsRequestStatus.Pending.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public static void RequestMobileStatus(World world, uint serial, bool force = false)
        {
            if (world.InGame)
            {
                Entity ent = world.Get(serial);

                if (ent != null)
                {
                    if (force)
                    {
                        if (ent.HitsRequest >= HitsRequestStatus.Pending)
                        {
                            SendCloseStatus(world, serial);
                        }
                    }

                    if (ent.HitsRequest < HitsRequestStatus.Received)
                    {
                        ent.HitsRequest = HitsRequestStatus.Pending;
                        force = true;
                    }
                }

                if (force && SerialHelper.IsValid(serial))
                {
                    //ent = ent ?? World.Player;
                    //ent.AddMessage(MessageType.Regular, $"PACKET SENT: 0x{serial:X8}", 3, 0x34, true, TextType.OBJECT);
                    Socket.Send_StatusRequest(serial);
                }
            }
        }

ClassicUO.Game.GameActions.UsePrimaryAbility

Выполняет показанные вызовы и обновления состояния.

Параметры: world

Источник: Project_Full/src/ClassicUO.Client/Game/GameActions.cs:933.

public static void UsePrimaryAbility(World world)

Результат: void.

Вызовы: SendAbility.

Условия: world?.Player == null; ((byte) ability & 0x80) == 0.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public static void UsePrimaryAbility(World world)
        {
            if (world?.Player == null)
                return;

            ref var ability = ref world.Player.Abilities[0];

            if (((byte) ability & 0x80) == 0)
            {
                for (int i = 0; i < 2; i++)
                {
                    world.Player.Abilities[i] &= (Ability) 0x7F;
                }

                SendAbility(world, (byte)ability, true);
            }
            else
            {
                SendAbility(world, 0, true);
            }

            ability ^= (Ability) 0x80;
        }

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CheckLosCell

Возвращает значение выражения ниже.

Параметры: x, y, z, map, options

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:3457.

public int CheckLosCell(int x, int y, int z, int map, int options)

Результат: int.

Вызовы: Invoke.

Вызовы:

  • ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Invoke: Invoke(() => { if (_world.Map == null || map != _world.MapIndex) return 0; int algorithm = options & 0xFF; if (algorithm < 1 || algorithm > 4) algorithm = 3; bool useNoShoot = algorithm == 3 || (algorithm == 4 && (options & 0x200) != 0); bool allowWindow = algorithm == 4 && (options & 0x400) != 0; bool Blocks(StaticTiles data, int tileZ) { int height = Math.Max(1, (int)data.Height); bool overlapsRay = z >= tileZ - 2 && z <= tileZ + height + 2; if (!overlapsRay) return false; if (data.IsWindow && allowWindow) return false; return data.IsWall || data.IsImpassable || useNoShoot && data.IsNoShoot; } for (GameObject tile = _world.Map.GetTile(x, y); tile != null; tile = tile.TNext) { if (tile is Land land) { if (land.TileData.IsImpassable && Math.Abs(z - land.Z) <= 20) return 0; continue; } if (tile is Static staticTile && Blocks(staticTile.ItemData, staticTile.Z)) return 0; if (tile is Multi multi && Blocks(multi.ItemData, multi.Z)) return 0; if (tile is Item item && Blocks(item.ItemData, item.Z)) return 0; } return 1; }). Кандидаты перегрузки: источник не подтверждает выбор конкретного варианта.
  • ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Invoke: Invoke(() => { if (_world.Map == null || map != _world.MapIndex) return 0; int algorithm = options & 0xFF; if (algorithm < 1 || algorithm > 4) algorithm = 3; bool useNoShoot = algorithm == 3 || (algorithm == 4 && (options & 0x200) != 0); bool allowWindow = algorithm == 4 && (options & 0x400) != 0; bool Blocks(StaticTiles data, int tileZ) { int height = Math.Max(1, (int)data.Height); bool overlapsRay = z >= tileZ - 2 && z <= tileZ + height + 2; if (!overlapsRay) return false; if (data.IsWindow && allowWindow) return false; return data.IsWall || data.IsImpassable || useNoShoot && data.IsNoShoot; } for (GameObject tile = _world.Map.GetTile(x, y); tile != null; tile = tile.TNext) { if (tile is Land land) { if (land.TileData.IsImpassable && Math.Abs(z - land.Z) <= 20) return 0; continue; } if (tile is Static staticTile && Blocks(staticTile.ItemData, staticTile.Z)) return 0; if (tile is Multi multi && Blocks(multi.ItemData, multi.Z)) return 0; if (tile is Item item && Blocks(item.ItemData, item.Z)) return 0; } return 1; }). Кандидаты перегрузки: источник не подтверждает выбор конкретного варианта.
  • ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CheckLosCell::Blocks: Blocks(staticTile.ItemData, staticTile.Z).
  • ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CheckLosCell::Blocks: Blocks(multi.ItemData, multi.Z).
  • ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CheckLosCell::Blocks: Blocks(item.ItemData, item.Z).

Внутренний код реализации, не самостоятельный скрипт.

public int CheckLosCell(int x, int y, int z, int map, int options) => Invoke(() =>

        {

            if (_world.Map == null || map != _world.MapIndex)

                return 0;



            int algorithm = options & 0xFF;

            if (algorithm < 1 || algorithm > 4)

                algorithm = 3;

            bool useNoShoot = algorithm == 3 || (algorithm == 4 && (options & 0x200) != 0);

            bool allowWindow = algorithm == 4 && (options & 0x400) != 0;



            bool Blocks(StaticTiles data, int tileZ)

            {

                int height = Math.Max(1, (int)data.Height);

                bool overlapsRay = z >= tileZ - 2 && z <= tileZ + height + 2;

                if (!overlapsRay)

                    return false;

                if (data.IsWindow && allowWindow)

                    return false;

                return data.IsWall || data.IsImpassable || useNoShoot && data.IsNoShoot;

            }



            for (GameObject tile = _world.Map.GetTile(x, y); tile != null; tile = tile.TNext)

            {

                if (tile is Land land)

                {

                    if (land.TileData.IsImpassable && Math.Abs(z - land.Z) <= 20)

                        return 0;

                    continue;

                }



                if (tile is Static staticTile && Blocks(staticTile.ItemData, staticTile.Z))

                    return 0;

                if (tile is Multi multi && Blocks(multi.ItemData, multi.Z))

                    return 0;

                if (tile is Item item && Blocks(item.ItemData, item.Z))

                    return 0;

            }



            return 1;

        });

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CheckLosCell::Blocks

Проверяет условия ниже и возвращает показанный результат.

Параметры: data, tileZ

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:3468.

bool Blocks(StaticTiles data, int tileZ)

Результат: bool.

Результат: false; data.IsWall || data.IsImpassable || useNoShoot && data.IsNoShoot.

Вызовы: Math.Max.

Условия: !overlapsRay; data.IsWindow && allowWindow.

Внутренний код реализации, не самостоятельный скрипт.

bool Blocks(StaticTiles data, int tileZ)

            {

                int height = Math.Max(1, (int)data.Height);

                bool overlapsRay = z >= tileZ - 2 && z <= tileZ + height + 2;

                if (!overlapsRay)

                    return false;

                if (data.IsWindow && allowWindow)

                    return false;

                return data.IsWall || data.IsImpassable || useNoShoot && data.IsNoShoot;

            }

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ClearUserStatics

Выполняет показанные вызовы и обновления состояния.

Параметры: Параметров нет.

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:3566.

public void ClearUserStatics()

Результат: void.

Вызовы: Invoke.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public void ClearUserStatics() => Invoke(_manager.ClearUserStatics);

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ClientHide

Выполняет показанные вызовы и обновления состояния.

Параметры: serial

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:1642.

public void ClientHide(int serial)

Результат: void.

Вызовы: Invoke.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public void ClientHide(int serial) => Invoke(() =>

        {

            Entity entity = _world.Get(unchecked((uint)serial)) as Entity;

            if (entity == null || entity.IsDestroyed)

            {

                Error($"UO.ClientHide: object 0x{unchecked((uint)serial):X8} is not loaded.");

                return;

            }

            if (entity.Serial == _world.Player?.Serial)

            {

                Error("UO.ClientHide: refusing to hide the player locally.");

                return;

            }

            HideLocally(entity);

        });

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.DisconnectClient

Выполняет показанные вызовы и обновления состояния.

Параметры: Параметров нет.

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:424.

public void DisconnectClient()

Результат: void.

Вызовы: Invoke.

Вызовы:

  • ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Invoke: Invoke(() => { // With AR enabled, let the automatic disconnect pause resume on // login. With AR disabled, this worker must reach its own Connect. if (!(_world.SessionControl?.AutoReconnect ?? Settings.GlobalSettings.Reconnect)) _manager.BeginScriptControlledDisconnect(_scriptKey); if (_world.SessionControl is { } session) { session.RequestDisconnect(); _manager.PrepareForReconnect(); return; } LoginScene loginScene = Client.Game.GetScene<LoginScene>(); // Disconnect also cancels any active or in-flight transport. NetClient.Socket.Disconnect(); _manager.PrepareForReconnect(); // Socket.Disconnect detaches its callback, so it does not trigger // GameScene's normal connection-loss handler. Schedule the same // preserving transition explicitly when automatic reconnect is on. // With AR off, keep the worker alive for a later UO.Connect call. if (Settings.GlobalSettings.Reconnect) Client.Game?.GetScene<GameScene>()?.RequestReconnectPreservingYoko(); if (loginScene != null) { loginScene.Reconnect = Settings.GlobalSettings.Reconnect; loginScene.PopupMessage = null; loginScene.CurrentLoginStep = LoginSteps.Main; } }). Кандидаты перегрузки: источник не подтверждает выбор конкретного варианта.
  • ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Invoke: Invoke(() => { // With AR enabled, let the automatic disconnect pause resume on // login. With AR disabled, this worker must reach its own Connect. if (!(_world.SessionControl?.AutoReconnect ?? Settings.GlobalSettings.Reconnect)) _manager.BeginScriptControlledDisconnect(_scriptKey); if (_world.SessionControl is { } session) { session.RequestDisconnect(); _manager.PrepareForReconnect(); return; } LoginScene loginScene = Client.Game.GetScene<LoginScene>(); // Disconnect also cancels any active or in-flight transport. NetClient.Socket.Disconnect(); _manager.PrepareForReconnect(); // Socket.Disconnect detaches its callback, so it does not trigger // GameScene's normal connection-loss handler. Schedule the same // preserving transition explicitly when automatic reconnect is on. // With AR off, keep the worker alive for a later UO.Connect call. if (Settings.GlobalSettings.Reconnect) Client.Game?.GetScene<GameScene>()?.RequestReconnectPreservingYoko(); if (loginScene != null) { loginScene.Reconnect = Settings.GlobalSettings.Reconnect; loginScene.PopupMessage = null; loginScene.CurrentLoginStep = LoginSteps.Main; } }). Кандидаты перегрузки: источник не подтверждает выбор конкретного варианта.
  • ClassicUO.Game.Managers.YokoInjectionManager.BeginScriptControlledDisconnect: _manager.BeginScriptControlledDisconnect(_scriptKey).
  • ClassicUO.Game.Managers.YokoInjectionManager.PrepareForReconnect: _manager.PrepareForReconnect().

Внутренний код реализации, не самостоятельный скрипт.

public void DisconnectClient() => Invoke(() =>

        {

            // With AR enabled, let the automatic disconnect pause resume on

            // login. With AR disabled, this worker must reach its own Connect.

            if (!(_world.SessionControl?.AutoReconnect ?? Settings.GlobalSettings.Reconnect))

                _manager.BeginScriptControlledDisconnect(_scriptKey);

            if (_world.SessionControl is { } session)

            {

                session.RequestDisconnect();

                _manager.PrepareForReconnect();

                return;

            }

            LoginScene loginScene = Client.Game.GetScene<LoginScene>();



            // Disconnect also cancels any active or in-flight transport.

            NetClient.Socket.Disconnect();

            _manager.PrepareForReconnect();



            // Socket.Disconnect detaches its callback, so it does not trigger

            // GameScene's normal connection-loss handler. Schedule the same

            // preserving transition explicitly when automatic reconnect is on.

            // With AR off, keep the worker alive for a later UO.Connect call.

            if (Settings.GlobalSettings.Reconnect)

                Client.Game?.GetScene<GameScene>()?.RequestReconnectPreservingYoko();

            if (loginScene != null)

            {

                loginScene.Reconnect = Settings.GlobalSettings.Reconnect;

                loginScene.PopupMessage = null;

                loginScene.CurrentLoginStep = LoginSteps.Main;

            }

        });

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Dismount

Выполняет показанные вызовы и обновления состояния.

Параметры: Параметров нет.

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:778.

public void Dismount()

Результат: void.

Вызовы: Invoke.

Вызовы:

  • ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Invoke: Invoke(() => _manager.MountRequests.Request( _world, 0, mount: false, serial => NetClient.Socket.Send_DoubleClick(serial), Environment.TickCount64)). Кандидаты перегрузки: источник не подтверждает выбор конкретного варианта.
  • ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Invoke: Invoke(() => _manager.MountRequests.Request( _world, 0, mount: false, serial => NetClient.Socket.Send_DoubleClick(serial), Environment.TickCount64)). Кандидаты перегрузки: источник не подтверждает выбор конкретного варианта.

Внутренний код реализации, не самостоятельный скрипт.

public void Dismount() => Invoke(() => _manager.MountRequests.Request(

            _world, 0, mount: false,

            serial => NetClient.Socket.Send_DoubleClick(serial), Environment.TickCount64));

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.EmptyContainer

Проверяет условия ниже и возвращает показанный результат.

Параметры: sourceContainerId, targetContainerId, delayMs

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:1238.

public int EmptyContainer(int sourceContainerId, int targetContainerId, int delayMs)

Результат: int.

Результат: 0; result.Selected > 0 && result.Sent == result.Selected ? 1 : 0.

Вызовы: Invoke, Stopwatch.StartNew, Wait, Error, MoveContainerItems.

Условия: sourceContainerId == 0 || targetContainerId == 0 || sourceContainerId == targetContainerId; !ready; !requested; `Invoke(() => _world.Items.Get((uint)sourceContainerId) is Item source

                    && source.ContainerContentsReceived)`.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public int EmptyContainer(int sourceContainerId, int targetContainerId, int delayMs)

        {

            if (sourceContainerId == 0 || targetContainerId == 0 || sourceContainerId == targetContainerId)

                return 0;

            bool ready = Invoke(() => _world.Items.Get((uint)sourceContainerId) is Item source

                && source.ContainerContentsReceived);

            if (!ready)

            {

                bool requested = Invoke(() =>

                {

                    Item source = _world.Items.Get((uint)sourceContainerId);

                    if (source == null || source.IsDestroyed || _world.Get((uint)targetContainerId) == null

                        || (!source.IsCorpse && !source.ItemData.IsContainer)) return false;

                    GameActions.DoubleClick(_world, source.Serial);

                    return true;

                });

                if (!requested) return 0;

                var elapsed = Stopwatch.StartNew();

                while (elapsed.ElapsedMilliseconds < 3000)

                {

                    Wait(25);

                    if (Invoke(() => _world.Items.Get((uint)sourceContainerId) is Item source

                        && source.ContainerContentsReceived))

                    { ready = true; break; }

                }

                if (!ready)

                {

                    Error("UO.EmptyContainer: no complete container contents arrived within 3000 ms.");

                    return 0;

                }

            }

            var result = MoveContainerItems(sourceContainerId, -1, -1, targetContainerId, -1, -1, 0, delayMs, false);

            return result.Selected > 0 && result.Sent == result.Selected ? 1 : 0;

        }

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.EquipLastWeapon

Выполняет показанные вызовы и обновления состояния.

Параметры: Параметров нет.

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:2047.

public void EquipLastWeapon()

Результат: void.

Вызовы: Equip.

Условия: _lastRightHand != 0; _lastLeftHand != 0.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public void EquipLastWeapon()

        {

            if (_lastRightHand != 0) Equip((int)Layer.OneHanded, _lastRightHand);

            if (_lastLeftHand != 0) Equip((int)Layer.TwoHanded, _lastLeftHand);

        }

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.FindList::MatchesZ

Проверяет условия ниже и возвращает показанный результат.

Параметры: entity

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:2600.

bool MatchesZ(Entity entity)

Результат: bool.

Результат: true; Math.Abs(zEntity.Z - player.Z) <= effectiveMaxZ.

Вызовы: _world.Get, Math.Abs.

Условия: player == null || effectiveMaxZ < 0; entity is Item && containerId > 1.

Внутренний код реализации, не самостоятельный скрипт.

bool MatchesZ(Entity entity)

                {

                    if (player == null || effectiveMaxZ < 0)

                        return true;

                    Entity zEntity = entity;

                    if (entity is Item && containerId > 1)

                        zEntity = _world.Get(unchecked((uint)containerId)) ?? entity;

                    return Math.Abs(zEntity.Z - player.Z) <= effectiveMaxZ;

                }

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.FormatTileInfo

Возвращает значение выражения ниже.

Параметры: tile, map

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:1077.

private static string FormatTileInfo(GameObject tile, int map)

Результат: string.

Вызовы: tile.GetType.

Внутренний код реализации, не самостоятельный скрипт.

private static string FormatTileInfo(GameObject tile, int map)

        {

            string details = $"ObjectType={tile.GetType().Name}\n"

                + $"Graphic/Tile=0x{tile.Graphic:X4} ({tile.Graphic})\n"

                + $"Hue/Colour=0x{tile.Hue:X4} ({tile.Hue})\n"

                + $"X={tile.X} Y={tile.Y} Z={tile.Z} Map={map}\n"

                + $"PriorityZ={tile.PriorityZ}\n"

                + $"Distance={tile.Distance}\n"

                + $"AllowedToDraw={tile.AllowedToDraw}\n"

                + $"AlphaHue={tile.AlphaHue}";

            return tile switch

            {

                Land land => details

                    + $"\nName={land.TileData.Name ?? string.Empty}"

                    + $"\nFlags={land.TileData.Flags}"

                    + $"\nIsFlat={!land.IsStretched}"

                    + $"\nNormalLeft={land.NormalLeft}"

                    + $"\nNormalRight={land.NormalRight}"

                    + $"\nNormalTop={land.NormalTop}"

                    + $"\nNormalBottom={land.NormalBottom}"

                    + $"\nMinZ={land.MinZ}"

                    + $"\nAverageZ={land.AverageZ}"

                    + $"\nYOffsets={land.YOffsets}",

                Static staticTile => details

                    + $"\nName={staticTile.ItemData.Name ?? string.Empty}"

                    + $"\nFlags={staticTile.ItemData.Flags}"

                    + $"\nHeight={staticTile.ItemData.Height}"

                    + $"\nIsVegetation={staticTile.IsVegetation}",

                Multi multi => details

                    + $"\nState={multi.State}"

                    + $"\nIsMovable={multi.IsMovable}",

                _ => details

            };

        }

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetAltName

Возвращает значение выражения ниже.

Параметры: id

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:239.

public string GetAltName(int id)

Результат: string.

Результат: GetTitle(id).

Вызовы: GetTitle.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public string GetAltName(int id) => GetTitle(id);

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetAutoBuyDelay

Возвращает значение выражения ниже.

Параметры: Параметров нет.

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:3631.

public int GetAutoBuyDelay()

Результат: int.

Результат: Invoke(() => ProfileManager.CurrentProfile?.BackNewbieAutoBuyDelay ?? 3).

Вызовы: Invoke.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public int GetAutoBuyDelay() => Invoke(() => ProfileManager.CurrentProfile?.BackNewbieAutoBuyDelay ?? 3);

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetContent

Возвращает значение выражения ниже.

Параметры: containerId

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:2275.

public int[] GetContent(int containerId)

Результат: int[].

Вызовы: Invoke.

Вызовы:

  • ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Invoke: Invoke(() => _world.Items.Values .Where(item => !item.IsDestroyed && (containerId == 0 ? item.OnGround : item.Container == (uint)containerId)) .Select(item => (int)item.Serial).ToArray()). Кандидаты перегрузки: источник не подтверждает выбор конкретного варианта.
  • ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Invoke: Invoke(() => _world.Items.Values .Where(item => !item.IsDestroyed && (containerId == 0 ? item.OnGround : item.Container == (uint)containerId)) .Select(item => (int)item.Serial).ToArray()). Кандидаты перегрузки: источник не подтверждает выбор конкретного варианта.

Внутренний код реализации, не самостоятельный скрипт.

public int[] GetContent(int containerId) => Invoke(() => _world.Items.Values

            .Where(item => !item.IsDestroyed && (containerId == 0 ? item.OnGround : item.Container == (uint)containerId))

            .Select(item => (int)item.Serial).ToArray());

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetControlText

Возвращает значение выражения ниже.

Параметры: control

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:3938.

private static string GetControlText(Control control)

Результат: string.

Внутренний код реализации, не самостоятельный скрипт.

private static string GetControlText(Control control)

        {

            return control switch

            {

                SessionGumpControl logical => logical.Text,

                Label label => label.Text,

                HtmlControl html => html.Text,

                StbTextBox textBox => textBox.Text,

                Checkbox checkbox => checkbox.Text,

                _ => null

            };

        }

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGraphics

Возвращает значение выражения ниже.

Параметры: id

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:2726.

public int GetGraphics(int id)

Результат: int.

Результат: WithEntity(id, e => e.Graphic).

Вызовы: WithEntity.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public int GetGraphics(int id) => WithEntity(id, e => e.Graphic);

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetNotoriety

Возвращает значение выражения ниже.

Параметры: id

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:322.

public int GetNotoriety(int id)

Результат: int.

Результат: Invoke(() => (_world.Get(unchecked((uint)id)) as Mobile) is Mobile m ? (int)m.NotorietyFlag : 0).

Вызовы: Invoke.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public int GetNotoriety(int id) => Invoke(() => (_world.Get(unchecked((uint)id)) as Mobile) is Mobile m ? (int)m.NotorietyFlag : 0);

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetQuestArrow

Возвращает значение выражения ниже.

Параметры: Параметров нет.

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:3508.

public int[] GetQuestArrow()

Результат: int[].

Результат: Invoke(() => _world.CharacterPanels.QuestArrow()).

Вызовы: Invoke.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public int[] GetQuestArrow() => Invoke(() => _world.CharacterPanels.QuestArrow());

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetWorldItems

Возвращает значение выражения ниже.

Параметры: Параметров нет.

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:2269.

public int[] GetWorldItems()

Результат: int[].

Вызовы: Invoke.

Вызовы:

  • ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Invoke: Invoke(() => _world.Items.Values .Where(item => !item.IsDestroyed && item.OnGround) .Select(item => (int)item.Serial).ToArray()). Кандидаты перегрузки: источник не подтверждает выбор конкретного варианта.
  • ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Invoke: Invoke(() => _world.Items.Values .Where(item => !item.IsDestroyed && item.OnGround) .Select(item => (int)item.Serial).ToArray()). Кандидаты перегрузки: источник не подтверждает выбор конкретного варианта.

Внутренний код реализации, не самостоятельный скрипт.

public int[] GetWorldItems() => Invoke(() => _world.Items.Values

            .Where(item => !item.IsDestroyed && item.OnGround)

            .Select(item => (int)item.Serial).ToArray());

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetZ

Возвращает значение выражения ниже.

Параметры: id

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:226.

public int GetZ(int id)

Результат: int.

Результат: WithEntity(id, e => e.Z).

Вызовы: WithEntity.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public int GetZ(int id) => WithEntity(id, e => e.Z);

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.NormalizeAbilityName

Возвращает значение выражения ниже.

Параметры: value

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:2195.

private static string NormalizeAbilityName(string value)

Результат: string.

Вызовы: `string.Concat(

        (value ?? string.Empty).Where(char.IsLetterOrDigit)).ToUpperInvariant`, `string.Concat`, `(value ?? string.Empty).Where`.

Внутренний код реализации, не самостоятельный скрипт.

private static string NormalizeAbilityName(string value) => string.Concat(

            (value ?? string.Empty).Where(char.IsLetterOrDigit)).ToUpperInvariant();

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.OpenInteractiveInfoGump

Выполняет показанные вызовы и обновления состояния.

Параметры: title, text

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:1027.

private void OpenInteractiveInfoGump(string title, string text)

Результат: void.

Вызовы: _infoGumpOpener.

Условия: _interactiveCommands.

Внутренний код реализации, не самостоятельный скрипт.

private void OpenInteractiveInfoGump(string title, string text)

        {

            if (_interactiveCommands)

                _infoGumpOpener(_world, title, text);

        }

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.PartyAcceptInvite

Выполняет показанные вызовы и обновления состояния.

Параметры: Параметров нет.

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:1542.

public void PartyAcceptInvite()

Результат: void.

Вызовы: Invoke.

Вызовы:

  • ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Invoke: Invoke(() => { if (_world.Party.Inviter == 0) return; GameActions.RequestPartyAccept(_world.Party.Inviter); _world.Party.Leader = _world.Party.Inviter; _world.Party.Inviter = 0; }). Кандидаты перегрузки: источник не подтверждает выбор конкретного варианта.
  • ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Invoke: Invoke(() => { if (_world.Party.Inviter == 0) return; GameActions.RequestPartyAccept(_world.Party.Inviter); _world.Party.Leader = _world.Party.Inviter; _world.Party.Inviter = 0; }). Кандидаты перегрузки: источник не подтверждает выбор конкретного варианта.
  • ClassicUO.Game.GameActions.RequestPartyAccept: GameActions.RequestPartyAccept(_world.Party.Inviter).

Внутренний код реализации, не самостоятельный скрипт.

public void PartyAcceptInvite() => Invoke(() =>

        {

            if (_world.Party.Inviter == 0) return;

            GameActions.RequestPartyAccept(_world.Party.Inviter);

            _world.Party.Leader = _world.Party.Inviter;

            _world.Party.Inviter = 0;

        });

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RegisterFound

Выполняет показанные вызовы и обновления состояния.

Параметры: mobile

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:3834.

private void RegisterFound(Mobile mobile)

Результат: void.

Вызовы: RegisterFoundSerial.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

private void RegisterFound(Mobile mobile)

        {

            _findCount++;

            _findFullQuantity++;

            RegisterFoundSerial(unchecked((int)mobile.Serial));

        }

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RequestClientTarget

Выполняет показанные вызовы и обновления состояния.

Параметры: tileTarget

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:880.

public void RequestClientTarget(bool tileTarget)

Результат: void.

Вызовы: Interlocked.Increment, Array.Empty<int>, Invoke.

Вызовы:

  • ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Invoke: Invoke(() => { _clientTargetCancellation.Unregister(); Action<GameObject> callback = target => { if (request != Volatile.Read(ref _clientTargetRequest)) return; _clientTargetCancellation.Unregister(); if (target == null || (!tileTarget && !(target is Entity))) _clientTargetResponse = Array.Empty<int>(); else { int serial = target is Entity entity ? (int)entity.Serial : 0; _clientTargetResponse = new[] { serial, (int)target.Graphic, target.X, target.Y, target.Z }; } _clientTargetResponsePresent = true; }; _world.TargetManager.SetTargeting(callback, 0, TargetType.Neutral); // Cancellation may run on a worker thread. Queue ownership-checked // cleanup without waiting for the game thread or clearing a newer cursor. _clientTargetCancellation = _cancellationToken.Register( () => _manager.ReleaseObjectSelection(callback)); }). Кандидаты перегрузки: источник не подтверждает выбор конкретного варианта.
  • ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Invoke: Invoke(() => { _clientTargetCancellation.Unregister(); Action<GameObject> callback = target => { if (request != Volatile.Read(ref _clientTargetRequest)) return; _clientTargetCancellation.Unregister(); if (target == null || (!tileTarget && !(target is Entity))) _clientTargetResponse = Array.Empty<int>(); else { int serial = target is Entity entity ? (int)entity.Serial : 0; _clientTargetResponse = new[] { serial, (int)target.Graphic, target.X, target.Y, target.Z }; } _clientTargetResponsePresent = true; }; _world.TargetManager.SetTargeting(callback, 0, TargetType.Neutral); // Cancellation may run on a worker thread. Queue ownership-checked // cleanup without waiting for the game thread or clearing a newer cursor. _clientTargetCancellation = _cancellationToken.Register( () => _manager.ReleaseObjectSelection(callback)); }). Кандидаты перегрузки: источник не подтверждает выбор конкретного варианта.
  • ClassicUO.Game.Managers.YokoInjectionManager.ReleaseObjectSelection: _manager.ReleaseObjectSelection(callback).

Внутренний код реализации, не самостоятельный скрипт.

public void RequestClientTarget(bool tileTarget)

        {

            int request = Interlocked.Increment(ref _clientTargetRequest);

            _clientTargetResponsePresent = false;

            _clientTargetResponse = Array.Empty<int>();

            Invoke(() =>

            {

                _clientTargetCancellation.Unregister();

                Action<GameObject> callback = target =>

                {

                    if (request != Volatile.Read(ref _clientTargetRequest))

                        return;

                    _clientTargetCancellation.Unregister();

                    if (target == null || (!tileTarget && !(target is Entity)))

                        _clientTargetResponse = Array.Empty<int>();

                    else

                    {

                        int serial = target is Entity entity ? (int)entity.Serial : 0;

                        _clientTargetResponse = new[] { serial, (int)target.Graphic, target.X, target.Y, target.Z };

                    }

                    _clientTargetResponsePresent = true;

                };

                _world.TargetManager.SetTargeting(callback, 0, TargetType.Neutral);

                // Cancellation may run on a worker thread. Queue ownership-checked

                // cleanup without waiting for the game thread or clearing a newer cursor.

                _clientTargetCancellation = _cancellationToken.Register(

                    () => _manager.ReleaseObjectSelection(callback));

            });

        }

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ResolveSpell

Разбирает или находит значение аргумента по правилам, показанным в коде.

Параметры: spellNameOrId

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:2246.

public int ResolveSpell(string spellNameOrId)

Результат: int.

Результат: ResolveClassicUOSpellId(spellNameOrId).

Вызовы: ResolveClassicUOSpellId.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public int ResolveSpell(string spellNameOrId) => ResolveClassicUOSpellId(spellNameOrId);

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetContextMenuHook

Выполняет показанные вызовы и обновления состояния.

Параметры: id, entry

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:703.

public void SetContextMenuHook(int id, int entry)

Результат: void.

Вызовы: Invoke.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public void SetContextMenuHook(int id, int entry) => Invoke(() => _manager.SetContextMenuHook((uint)id, entry));

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Snap

Возвращает значение выражения ниже.

Параметры: name, quality, includeUi

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:3655.

public int Snap(string name, int quality, bool includeUi)

Результат: int.

Результат: Invoke(() => RequireGameView("Snap").TakeScreenshot(name, quality, includeUi)).

Вызовы: Invoke.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public int Snap(string name, int quality, bool includeUi)

            => Invoke(() => RequireGameView("Snap").TakeScreenshot(name, quality, includeUi));

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.StopAllScripts

Выполняет показанные вызовы и обновления состояния.

Параметры: Параметров нет.

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:320.

public void StopAllScripts()

Результат: void.

Вызовы: _manager.StopAll.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public void StopAllScripts() => _manager.StopAll();

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SubExists

Возвращает значение выражения ниже.

Параметры: subrutineName

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:2724.

public bool SubExists(string subrutineName)

Результат: bool.

Результат: _manager.FindProcedureByName(subrutineName) != null.

Вызовы: _manager.FindProcedureByName.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public bool SubExists(string subrutineName) => _manager.FindProcedureByName(subrutineName) != null;

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TrackOff

Выполняет показанные вызовы и обновления состояния.

Параметры: Параметров нет.

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:3658.

public void TrackOff()

Результат: void.

Вызовы: Invoke.

Вызовы:

  • ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Invoke: Invoke(() => _world.CharacterPanels.SetArrow(SessionCharacterPanels.TrackSerial, false, 0, 0)). Кандидаты перегрузки: источник не подтверждает выбор конкретного варианта.
  • ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Invoke: Invoke(() => _world.CharacterPanels.SetArrow(SessionCharacterPanels.TrackSerial, false, 0, 0)). Кандидаты перегрузки: источник не подтверждает выбор конкретного варианта.

Внутренний код реализации, не самостоятельный скрипт.

public void TrackOff() => Invoke(() => _world.CharacterPanels.SetArrow(SessionCharacterPanels.TrackSerial, false, 0, 0));

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TradeContainer

Возвращает значение выражения ниже.

Параметры: windowIndex

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:636.

public int TradeContainer(int windowIndex)

Результат: int.

Вызовы: Invoke.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public int TradeContainer(int windowIndex) => Invoke(() =>

        {

            ISessionTrade gump = FindTrade(windowIndex);

            return (int)(gump?.ID1 ?? 0);

        });

ClassicUO.Game.Managers.YokoInjectionManager.DiscoverProcedures

Проверяет условия ниже и возвращает показанный результат.

Параметры: content, filePath, relativeFileName

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/YokoInjectionManager.cs:3952.

internal static IReadOnlyList<YokoProcedureInfo> DiscoverProcedures(string content, string filePath, string relativeFileName)

Результат: IReadOnlyList<YokoProcedureInfo>.

Результат: DiscoverCompiledProcedures(filePath, relativeFileName); DiscoverCSharpAutoloadProcedures(originalScript, filePath, relativeFileName); Array.Empty<YokoProcedureInfo>().

Вызовы: IsCompiledScriptFilePath, DiscoverCompiledProcedures, IsSupportedScriptFilePath, DiscoverCSharpAutoloadProcedures, Array.Empty<YokoProcedureInfo>.

Условия: IsCompiledScriptFilePath(filePath); IsSupportedScriptFilePath(filePath).

Внутренний код реализации, не самостоятельный скрипт.

internal static IReadOnlyList<YokoProcedureInfo> DiscoverProcedures(string content, string filePath, string relativeFileName)
        {
            string originalScript = content ?? string.Empty;
            if (IsCompiledScriptFilePath(filePath)) return DiscoverCompiledProcedures(filePath, relativeFileName);
            if (IsSupportedScriptFilePath(filePath))
            {
                return DiscoverCSharpAutoloadProcedures(originalScript, filePath, relativeFileName);
            }
            return Array.Empty<YokoProcedureInfo>();
        }

ClassicUO.Game.Managers.YokoInjectionManager.QueueTargetTile

Выполняет показанные вызовы и обновления состояния.

Параметры: graphic, x, y, z, owner

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/YokoInjectionManager.cs:3296.

internal void QueueTargetTile(ushort graphic, ushort x, ushort y, short z, CancellationToken owner = default)

Результат: void.

Вызовы: owner.ThrowIfCancellationRequested, _pendingTargets.Enqueue.

Внутренний код реализации, не самостоятельный скрипт.

internal void QueueTargetTile(ushort graphic, ushort x, ushort y, short z, CancellationToken owner = default)
        {
            lock (_pendingTargetLock)
            {
                owner.ThrowIfCancellationRequested();
                _pendingTargets.Enqueue(new PendingTarget(graphic, x, y, z, owner));
            }
        }

ClassicUO.Game.Managers.YokoInjectionManager.TerminateProcedures

Проверяет условия ниже и возвращает показанный результат.

Параметры: selector

Источник: Project_Full/src/ClassicUO.Client/Game/Managers/YokoExecutionControl.cs:110.

internal int TerminateProcedures(string selector)

Результат: int.

Результат: stopped + cancelledPending.

Вызовы: .Trim, selector.Equals, .Stop, .RequestStop, _running.Values.Where(run => run.IsProcedure && !run.Cancellation.IsCancellationRequested) .OrderByDescending(run => run.Sequence).Take(1).ToArray, _running.Values.Where(run => run.IsProcedure && !run.Cancellation.IsCancellationRequested) .OrderByDescending(run => run.Sequence).Take, _running.Values.Where(run => run.IsProcedure && !run.Cancellation.IsCancellationRequested) .OrderByDescending, _running.Values.Where.

Условия: all; selector.Length == 0; all || (selector.Length != 0 && MatchesProcedureSelector(selector, request.Selector)) || selected.Any(run => MatchesProcedureSelector(run.Key, request.Selector)); run.TryStop().

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

internal int TerminateProcedures(string selector)
        {
            selector = selector?.Trim() ?? string.Empty;
            bool all = selector.Equals("all", StringComparison.OrdinalIgnoreCase);
            if (all) _massMover?.Stop();
            if (all) _vendorPricer?.Stop();
            if (all) _follow?.RequestStop();
            YokoRunningScript[] selected;
            int cancelledPending = 0;
            lock (_executionControlLock)
// …
                if (all) _launchGeneration++;
                if (selector.Length == 0)
// …
                    if (all || (selector.Length != 0
// …
                if (run.TryStop())
// …
            if (all)
// …
            else if (selector.Length != 0) ClearGumpAutomation(selector);
// …
            return stopped + cancelledPending;
// …

Полный код сохранён в файле источника; ниже приведены точные фрагменты.

ClassicUO.Game.SerialHelper.IsValid

Возвращает значение выражения ниже.

Параметры: serial

Источник: Project_Full/src/ClassicUO.Client/Game/SerialHelper.cs:10.

public static bool IsValid(uint serial)

Результат: bool.

Результат: serial > 0 && serial < 0x80000000.

Внутренний код реализации, не самостоятельный скрипт.

[MethodImpl(MethodImplOptions.AggressiveInlining)]
        public static bool IsValid(uint serial)
        {
            return serial > 0 && serial < 0x80000000;
        }

ClassicUO.Game.World.Get

Проверяет условия ниже и возвращает показанный результат.

Параметры: serial

Источник: Project_Full/src/ClassicUO.Client/Game/World.cs:525.

public Entity Get(uint serial)

Результат: Entity.

Результат: ent.

Вызовы: SerialHelper.IsMobile, Mobiles.Get, Items.Get.

Условия: SerialHelper.IsMobile(serial); ent == null; ent != null && ent.IsDestroyed.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public Entity Get(uint serial)

        {

            Entity ent;



            if (SerialHelper.IsMobile(serial))

            {

                ent = Mobiles.Get(serial);



                if (ent == null)

                {

                    ent = Items.Get(serial);

                }

            }

            else

            {

                ent = Items.Get(serial);



                if (ent == null)

                {

                    ent = Mobiles.Get(serial);

                }

            }



            if (ent != null && ent.IsDestroyed)

            {

                ent = null;

            }



            return ent;

        }

InjectionScript.Runtime.InjectionApiUO.ActivateHandle

Выполняет показанные вызовы и обновления состояния.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:5271.

public void ActivateHandle()

Результат: void.

Вызовы: bridge.ActivateHandle.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public void ActivateHandle() => bridge.ActivateHandle();

InjectionScript.Runtime.InjectionApiUO.AddUserStatic

Проверяет условия ниже и возвращает показанный результат.

Параметры: graphic, x, y, z, hue, map

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:6285.

private int AddUserStatic(int graphic, int x, int y, int z, int hue, int map)

Результат: int.

Результат: -1; id.

Вызовы: string.Join, bridge.AddUserStatic.

Условия: graphic < 0 || graphic > ushort.MaxValue || x < 0 || y < 0 || map < 0.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

private int AddUserStatic(int graphic, int x, int y, int z, int hue, int map)

        {

            if (graphic < 0 || graphic > ushort.MaxValue || x < 0 || y < 0 || map < 0)

                return -1;

            int id = state.NextUserStaticId++;

            state.UserStatics[id] = string.Join("|", graphic, x, y, z, hue, map);

            bridge.AddUserStatic(id, graphic, x, y, z, hue, map);

            return id;

        }

InjectionScript.Runtime.InjectionApiUO.BandageSelf

Выполняет показанные вызовы и обновления состояния.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:5976.

public void BandageSelf()

Результат: void.

Вызовы: FindType, WaitTargetSelf, UseObject, SystemMessage.

Условия: foundBandages != string.Empty.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public void BandageSelf()

        {

            var foundBandages = FindType(new InjectionValue(0x0e21), new InjectionValue(0), new InjectionValue("my"));

            if (foundBandages != string.Empty)

            {

                WaitTargetSelf();

                UseObject(foundBandages);

            }

            else

                SystemMessage("No bandages found.");

        }

InjectionScript.Runtime.InjectionApiUO.CharPrint

Выполняет показанные вызовы и обновления состояния.

Параметры: id, color, msg

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:5340.

public void CharPrint(InjectionValue id, InjectionValue color, InjectionValue msg)

Результат: void.

Вызовы: CharPrint, GetObject, NumberConversions.ToInt.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public void CharPrint(InjectionValue id, InjectionValue color, InjectionValue msg) 

            => CharPrint(GetObject(id), NumberConversions.ToInt(color), (string)msg);

InjectionScript.Runtime.InjectionApiUO.ConsolePrint

Выполняет показанные вызовы и обновления состояния.

Параметры: msg

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:5334.

public void ConsolePrint(InjectionValue msg)

Результат: void.

Вызовы: bridge.Print, msg.ToString.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public void ConsolePrint(InjectionValue msg) => bridge.Print(msg.ToString());

InjectionScript.Runtime.InjectionApiUO.Equip

Проверяет условия ниже и возвращает показанный результат.

Параметры: name, equipSets, supportedLayers, successMessage, missingMessage

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:5641.

private int Equip(string name, RuntimeDictionary<EquipSet> equipSets, int[] supportedLayers, string successMessage, string missingMessage)

Результат: int.

Результат: 0; success ? 1 : 0.

Вызовы: equipSets.TryGet, bridge.IsOnline, SystemMessage, equipSet.GetAtLayer, bridge.ObjAtLayer, actions.EquipSavedItem, bridge.Equip, bridge.UseObject.

Условия: equipSets.TryGet(name, out var equipSet); bridge.IsOnline() == 0; id == current; id != 0.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

private int Equip(string name, RuntimeDictionary<EquipSet> equipSets, int[] supportedLayers, string successMessage, string missingMessage)

        {

            if (equipSets.TryGet(name, out var equipSet))

            {

                if (bridge.IsOnline() == 0)

                {

                    SystemMessage("Equipment set requires an active connection.");

                    return 0;

                }

                bool success = true;

                foreach (var layer in supportedLayers)

                {

                    var id = equipSet.GetAtLayer(layer);

                    int current = bridge.ObjAtLayer(layer);

                    if (id == current) continue;

                    int accepted;

                    if (id != 0)

                    {

                        if (bridge is IApiEquipmentSetActions actions)

                            accepted = actions.EquipSavedItem(layer, id, state.UseEquipForDress != 0);

                        else if (state.UseEquipForDress != 0)

                            accepted = bridge.Equip(layer, id);

                        else

                        {

                            // Older bridge implementations expose only a void

                            // use call; successful dispatch is all they report.

                            bridge.UseObject(id);

                            accepted = 1;

                        }

                    }

                    else

                    {

                        accepted = bridge is IApiEquipmentActions actions

                            ? actions.UnequipItem(current) : bridge.Unequip(layer);

                    }

                    success &= accepted != 0;

                    if (accepted != 0 && state.DressSpeed > 0)

                        injectionApi.Wait(state.DressSpeed);

                }



                SystemMessage(success ? successMessage : "Some equipment set requests were rejected.");

                return success ? 1 : 0;

            }



            SystemMessage(missingMessage);

            return 0;

        }

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1776.

Результат: InjectionValue.Unit.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "addgumpignorebyid": state.IgnoredGumpIds.Add(Arg(0)); return InjectionValue.Unit;

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1245.

Результат: InjectionValue.Unit.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "attack": bridge.Attack(Arg(0)); return InjectionValue.Unit;

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1593.

Результат: InjectionValue.Unit.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "closemenu": bridge.CloseMenu(); return InjectionValue.Unit;

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1987.

Результат: new InjectionValue(Equip("__stealth_saved_set__", dressSets, dressLayers, "Clothing set requests processed.", "No clothing set with setdress.")).

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "dresssavedset":

                case "equipdressset": return new InjectionValue(Equip("__stealth_saved_set__", dressSets, dressLayers, "Clothing set requests processed.", "No clothing set with setdress."));

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1379.

Результат: InjectionValue.Unit; new InjectionValue(bridge.GetFindDistance()).

Условия: arguments.Length > 0.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "finddistance":

                    if (arguments.Length > 0) { bridge.SetFindDistance(Arg(0)); return InjectionValue.Unit; }

                    return new InjectionValue(bridge.GetFindDistance());

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1323.

Результат: new InjectionValue(bridge.GetAutoSellDelay()).

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "getautoselldelay":

                    return new InjectionValue(bridge.GetAutoSellDelay());

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1387.

Результат: new InjectionValue(bridge.GetFoundItems().Select(serial => new InjectionValue(serial)).ToArray()).

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "getfounditems":

                    return new InjectionValue(bridge.GetFoundItems().Select(serial => new InjectionValue(serial)).ToArray());

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1600.

Результат: new InjectionValue(bridge.GetGumpSerial(Arg(0))).

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "getgumpserial": return new InjectionValue(bridge.GetGumpSerial(Arg(0)));

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1568.

Результат: new InjectionValue(bridge.GetHP(Arg(0, bridge.Self))).

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "gethp": return new InjectionValue(bridge.GetHP(Arg(0, bridge.Self)));

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1569.

Результат: new InjectionValue(bridge.GetMaxHP(Arg(0, bridge.Self))).

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "getmaxhp": return new InjectionValue(bridge.GetMaxHP(Arg(0, bridge.Self)));

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1496.

Результат: new InjectionValue(bridge.GetMaxStamina(Arg(0, bridge.Self))).

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "getmaxstam": return new InjectionValue(bridge.GetMaxStamina(Arg(0, bridge.Self)));

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1523.

Результат: new InjectionValue(bridge.GetScriptPath(Arg(0))).

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "getscriptpath": return new InjectionValue(bridge.GetScriptPath(Arg(0)));

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1521.

Результат: new InjectionValue(bridge.GetScriptsList().Select(value => new InjectionValue(value)).ToArray()).

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "getscriptslist": return new InjectionValue(bridge.GetScriptsList().Select(value => new InjectionValue(value)).ToArray());

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1917.

Результат: InjectionValue.Unit.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "globalchatjoinchannel": bridge.GlobalChatJoin(Text(0)); return InjectionValue.Unit;

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1909.

Результат: InjectionValue.Unit.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "gumpautocheckbox": QueueGumpControl("checkbox", Arg(0), Text(1)); return InjectionValue.Unit;

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1955.

Результат: new InjectionValue(httpBody).

Внутренний код реализации, не самостоятельный скрипт.

case "http_body": return new InjectionValue(httpBody);

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1363.

Результат: new InjectionValue(bridge.Poisoned(Arg(0, bridge.Self))).

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "ispoisoned": return new InjectionValue(bridge.Poisoned(Arg(0, bridge.Self)));

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1494.

Результат: new InjectionValue(bridge.MaxStamina).

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "maxstam": return new InjectionValue(bridge.MaxStamina);

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1265.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "objatlayer":

                    return new InjectionValue(arguments[0].Kind == InjectionValueKind.String

                        ? GetObject(ObjAtLayer(Text(0))) : bridge.ObjAtLayer(Arg(0)));

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1650.

Результат: InjectionValue.Unit.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "targettotile":

                    bridge.TargetToTile(Arg(0), Arg(1), Arg(2), Arg(3)); return InjectionValue.Unit;

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1682.

Результат: InjectionValue.Unit.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "togglefly": bridge.ToggleFly(); return InjectionValue.Unit;

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1676.

Результат: InjectionValue.Unit.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "useselfpaperdollscroll": bridge.UseObject(bridge.Self); return InjectionValue.Unit;

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1648.

Результат: new InjectionValue(bridge.WaitForClientTargetResponse(Arg(0))).

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "waitforclienttargetresponse": return new InjectionValue(bridge.WaitForClientTargetResponse(Arg(0)));

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1296.

Результат: new InjectionValue(bridge.LastAttack).

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "lastattack":

                case "wartargetid": return new InjectionValue(bridge.LastAttack);

InjectionScript.Runtime.InjectionApiUO.ExecuteEmptyContainer

Проверяет условия ниже и возвращает показанный результат.

Параметры: values

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:4418.

private InjectionValue ExecuteEmptyContainer(InjectionValue[] values)

Результат: InjectionValue.

Результат: InjectionValue.Zero; new InjectionValue(bridge.EmptyContainer(source, destination, delay)).

Вызовы: Math.Max, NumberConversions.ToInt, ResolveTransferObject, bridge.SelectContainer, ResolveTransferDestination, bridge.EmptyContainer.

Условия: source == 0.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

private InjectionValue ExecuteEmptyContainer(InjectionValue[] values)

        {

            int delay = Math.Max(0, NumberConversions.ToInt(values[0]));

            int source = values.Length > 1 ? ResolveTransferObject(values[1]) : 0;

            if (source == 0) source = bridge.SelectContainer();

            if (source == 0) return InjectionValue.Zero;

            int destination = values.Length > 2 ? ResolveTransferDestination(values[2]) : bridge.Backpack;

            return new InjectionValue(bridge.EmptyContainer(source, destination, delay));

        }

InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:2942.

Условия: arguments.Length > 1.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "dye":

                    if (arguments.Length > 1) bridge.WaitTargetObject(Arg(1));

                    bridge.UseObject(Arg(0, bridge.GetLastObject()));

                    break;

InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias

Ветка обрабатывает только указанное имя команды.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:2976.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

case "loadhotkeys": bridge.LoadHotkeys(); break;

InjectionScript.Runtime.InjectionApiUO.FindCount

Возвращает значение выражения ниже.

Параметры: id

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:5179.

public int FindCount(InjectionValue id)

Результат: int.

Результат: bridge.GetQuantity(GetObject(id)).

Вызовы: bridge.GetQuantity, GetObject.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public int FindCount(InjectionValue id) => bridge.GetQuantity(GetObject(id));

InjectionScript.Runtime.InjectionApiUO.FindType

Проверяет условия ниже и возвращает показанный результат.

Параметры: type, color, container, range

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:4606.

public string FindType(InjectionValue type, InjectionValue color, InjectionValue container, InjectionValue range)

Результат: string.

Результат: FindType(ResolveType(type), NumberConversions.ToInt(color), ConvertContainer(container), NumberConversions.ToInt(range), true); FindType(ResolveType(type), NumberConversions.ToInt(color), ConvertContainer(container), NumberConversions.ToInt(range), false).

Вызовы: container.String.Equals, FindType, ResolveType, NumberConversions.ToInt, ConvertContainer.

Условия: container.Kind == InjectionValueKind.String && container.String.Equals("my", StringComparison.OrdinalIgnoreCase).

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public string FindType(InjectionValue type, InjectionValue color, InjectionValue container, InjectionValue range)

        {

            if (container.Kind == InjectionValueKind.String && container.String.Equals("my", StringComparison.OrdinalIgnoreCase))

                return FindType(ResolveType(type), NumberConversions.ToInt(color), ConvertContainer(container), NumberConversions.ToInt(range), true);

            else

                return FindType(ResolveType(type), NumberConversions.ToInt(color), ConvertContainer(container), NumberConversions.ToInt(range), false);

        }

InjectionScript.Runtime.InjectionApiUO.GetDistance

Возвращает значение выражения ниже.

Параметры: id

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:3572.

public int GetDistance(int id)

Результат: int.

Результат: bridge.GetDistance(id).

Вызовы: bridge.GetDistance.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public int GetDistance(int id) => bridge.GetDistance(id);

InjectionScript.Runtime.InjectionApiUO.GetEasyUO

Возвращает значение выражения ниже.

Параметры: number

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:3790.

public string GetEasyUO(InjectionValue number)

Результат: string.

Результат: bridge.GetEasyUO(NumberConversions.ToInt(number)).

Вызовы: bridge.GetEasyUO, NumberConversions.ToInt.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public string GetEasyUO(InjectionValue number) => bridge.GetEasyUO(NumberConversions.ToInt(number));

InjectionScript.Runtime.InjectionApiUO.GetFoundedTextColor

Возвращает значение выражения ниже.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:5493.

public string GetFoundedTextColor()

Результат: string.

Результат: selectedJournalEntry != null ? $"0x{selectedJournalEntry.Color:X4}" : "0x0000".

Внутренний код реализации, не самостоятельный скрипт.

public string GetFoundedTextColor() => selectedJournalEntry != null ? $"0x{selectedJournalEntry.Color:X4}" : "0x0000";

InjectionScript.Runtime.InjectionApiUO.GetNotoriety

Возвращает значение выражения ниже.

Параметры: id

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:3600.

public int GetNotoriety(int id)

Результат: int.

Результат: bridge.GetNotoriety(id).

Вызовы: bridge.GetNotoriety.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public int GetNotoriety(int id) => bridge.GetNotoriety(id);

InjectionScript.Runtime.InjectionApiUO.GetX

Возвращает значение выражения ниже.

Параметры: id

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:3560.

public int GetX(string id)

Результат: int.

Результат: GetX(GetObject(id)).

Вызовы: GetX, GetObject.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public int GetX(string id) => GetX(GetObject(id));

InjectionScript.Runtime.InjectionApiUO.GetY

Возвращает значение выражения ниже.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:3563.

public int GetY()

Результат: int.

Результат: GetY("self").

Вызовы: GetY.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public int GetY() => GetY("self");

InjectionScript.Runtime.InjectionApiUO.Grab

Возвращает значение выражения ниже.

Параметры: amount, id

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:4371.

public int Grab(int amount, string id)

Результат: int.

Результат: CompactGrab(new[] { new InjectionValue(amount), new InjectionValue(id) }).

Вызовы: CompactGrab.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public int Grab(int amount, string id) => CompactGrab(new[] { new InjectionValue(amount), new InjectionValue(id) });

InjectionScript.Runtime.InjectionApiUO.MatchesTextMask

Проверяет условия ниже и возвращает показанный результат.

Параметры: source, mask

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:5073.

private static bool MatchesTextMask(string source, InjectionValue mask)

Результат: bool.

Результат: true; NumberConversions.ToInt(mask) <= 0; false.

Вызовы: NumberConversions.ToInt, (mask.String ?? string.Empty).Trim, raw.Equals, raw.Split, token.Trim, haystack.IndexOf.

Условия: mask.Kind == InjectionValueKind.Unit || mask.Kind == InjectionValueKind.Any; mask.Kind != InjectionValueKind.String; raw.Length == 0 || raw == "-1" || raw.Equals("any", StringComparison.OrdinalIgnoreCase); wanted.Length > 0 && haystack.IndexOf(wanted, StringComparison.OrdinalIgnoreCase) >= 0.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

private static bool MatchesTextMask(string source, InjectionValue mask)

        {

            if (mask.Kind == InjectionValueKind.Unit || mask.Kind == InjectionValueKind.Any)

                return true;

            if (mask.Kind != InjectionValueKind.String)

                return NumberConversions.ToInt(mask) <= 0;



            string raw = (mask.String ?? string.Empty).Trim();

            if (raw.Length == 0 || raw == "-1" || raw.Equals("any", StringComparison.OrdinalIgnoreCase))

                return true;

            string haystack = source ?? string.Empty;

            foreach (string token in raw.Split(new[] { '|', ',', ';' }, StringSplitOptions.RemoveEmptyEntries))

            {

                string wanted = token.Trim();

                if (wanted.Length > 0 && haystack.IndexOf(wanted, StringComparison.OrdinalIgnoreCase) >= 0)

                    return true;

            }

            return false;

        }

InjectionScript.Runtime.InjectionApiUO.MoveToCanonical::IsCurrentRequest

Возвращает значение выражения ниже.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:2135.

bool IsCurrentRequest()

Результат: bool.

Результат: ownership == null || ownership.IsMovementRequestCurrent(requestId).

Вызовы: ownership.IsMovementRequestCurrent.

Внутренний код реализации, не самостоятельный скрипт.

bool IsCurrentRequest() => ownership == null || ownership.IsMovementRequestCurrent(requestId);

InjectionScript.Runtime.InjectionApiUO.ResolveTransferDestination

Разбирает или находит значение аргумента по правилам, показанным в коде.

Параметры: value, allowGround

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:4428.

private int ResolveTransferDestination(InjectionValue value, bool allowGround = false)

Результат: int.

Результат: bridge.Backpack; receiving; 0; serial; ResolveTransferObject(value, allowGround).

Вызовы: .Trim, name.Equals, NumberConversions.TryStr2Int, TryGetObject, ResolveTransferObject.

Условия: value.Kind == InjectionValueKind.String; `name.Equals("self", StringComparison.OrdinalIgnoreCase)

                || name.Equals("my", StringComparison.OrdinalIgnoreCase)

                || name.Equals("backpack", StringComparison.OrdinalIgnoreCase)`; `bridge.Backpack > 0`; `name.Equals("receiving", StringComparison.OrdinalIgnoreCase)

                || name.Equals("catchbag", StringComparison.OrdinalIgnoreCase)`.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

private int ResolveTransferDestination(InjectionValue value, bool allowGround = false)

        {

            // "self" as a transfer destination means the player's inventory.

            // Keep normal object lookup unchanged: GetX('self') still means the player.

            if (value.Kind == InjectionValueKind.String)

            {

                string name = value.String?.Trim() ?? string.Empty;

                if (name.Equals("self", StringComparison.OrdinalIgnoreCase)

                    || name.Equals("my", StringComparison.OrdinalIgnoreCase)

                    || name.Equals("backpack", StringComparison.OrdinalIgnoreCase))

                {

                    if (bridge.Backpack > 0) return bridge.Backpack;

                    throw new NativeSubrutineException("No player backpack is available.");

                }

                if (name.Equals("receiving", StringComparison.OrdinalIgnoreCase)

                    || name.Equals("catchbag", StringComparison.OrdinalIgnoreCase))

                {

                    int receiving = state.ReceivingContainer > 0 ? state.ReceivingContainer : bridge.Backpack;

                    if (receiving > 0) return receiving;

                    throw new NativeSubrutineException("No receiving container or player backpack is available.");

                }

                if (allowGround && name.Equals("ground", StringComparison.OrdinalIgnoreCase)) return 0;

                // A missing named target must never become a ground drop merely

                // because coordinates were supplied. Only explicit ground/0 does.

                if (!NumberConversions.TryStr2Int(name, out int literal))

                {

                    if (TryGetObject(name, out int serial) && serial > 0) return serial;

                    throw new NativeSubrutineException("Unknown transfer destination: " + name);

                }

                value = new InjectionValue(literal);

            }

            return ResolveTransferObject(value, allowGround);

        }

InjectionScript.Runtime.InjectionApiUO.StealthCnt

Возвращает значение выражения ниже.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:3779.

public int StealthCnt()

Результат: int.

Результат: bridge.StealthCnt().

Вызовы: bridge.StealthCnt.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public int StealthCnt() => bridge.StealthCnt();

InjectionScript.Runtime.InjectionApiUO.TryResolveWorldItemQueryContainer

Проверяет условия ниже и возвращает показанный результат.

Параметры: value, container

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:4888.

private bool TryResolveWorldItemQueryContainer(InjectionValue value, out int container)

Результат: bool.

Результат: true; container > 0; TryGetObject(new InjectionValue(text), out container) && container > 0; false.

Вызовы: value.String.Trim, text.Equals, NumberConversions.TryStr2Int, TryGetObject.

Условия: value.Kind == InjectionValueKind.String; text.Equals("ground", StringComparison.OrdinalIgnoreCase); text.Equals("my", StringComparison.OrdinalIgnoreCase) || text.Equals("backpack", StringComparison.OrdinalIgnoreCase); !NumberConversions.TryStr2Int(text, out literal).

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

private bool TryResolveWorldItemQueryContainer(InjectionValue value, out int container)

        {

            container = 0;

            int literal;

            if (value.Kind == InjectionValueKind.String)

            {

                string text = value.String.Trim();

                if (text.Equals("ground", StringComparison.OrdinalIgnoreCase))

                    return true;

                if (text.Equals("my", StringComparison.OrdinalIgnoreCase) || text.Equals("backpack", StringComparison.OrdinalIgnoreCase))

                {

                    container = bridge.Backpack;

                    return container > 0;

                }

                if (!NumberConversions.TryStr2Int(text, out literal))

                    return TryGetObject(new InjectionValue(text), out container) && container > 0;

            }

            else if (value.Kind == InjectionValueKind.Integer)

                literal = value.Integer;

            else

                return false;

            // Preserve explicit numeric ground selectors; -1 is the legacy bag selector.

            if (literal == 0 || literal == 1)

                return true;

            container = literal == -1 ? bridge.Backpack : literal;

            return container > 0;

        }

InjectionScript.Runtime.InjectionApiUO.WaitGump

Выполняет показанные вызовы и обновления состояния.

Параметры: triggerId

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:3117.

public void WaitGump(int triggerId)

Результат: void.

Вызовы: automation.QueueGumpButtons, bridge.WaitGumpSelect.

Условия: bridge is IApiGumpAutomation automation.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public void WaitGump(int triggerId)

        {

            if (bridge is IApiGumpAutomation automation) automation.QueueGumpButtons(new[] { triggerId });

            else bridge.WaitGumpSelect(triggerId, 30_000);

        }

InjectionScript.Runtime.InjectionApiUO.WaitMenu

Выполняет показанные вызовы и обновления состояния.

Параметры: prompt1, choice1, prompt2, choice2

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:3261.

public void WaitMenu(string prompt1, string choice1, string prompt2, string choice2)

Результат: void.

Вызовы: bridge.WaitMenu.

Внутренний код реализации, не самостоятельный скрипт.

public void WaitMenu(string prompt1, string choice1, string prompt2, string choice2)

            => bridge.WaitMenu(prompt1, choice1, prompt2, choice2);

InjectionScript.Runtime.InjectionApiUO.WaitTargetGround

Выполняет показанные вызовы и обновления состояния.

Параметры: type

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:4228.

public void WaitTargetGround(InjectionValue type)

Результат: void.

Вызовы: WaitTargetGround.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public void WaitTargetGround(InjectionValue type) => WaitTargetGround(type, new InjectionValue(-1));

InjectionScript.Runtime.InjectionApiUO.WaitTargetObject

Выполняет показанные вызовы и обновления состояния.

Параметры: id

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:4169.

public void WaitTargetObject(string id)

Результат: void.

Вызовы: WaitTargetObject, GetObject.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public void WaitTargetObject(string id) => WaitTargetObject(GetObject(id));

InjectionScript.Runtime.InjectionApiUO.WarMode

Возвращает значение выражения ниже.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:5751.

public int WarMode()

Результат: int.

Результат: bridge.WarMode().

Вызовы: bridge.WarMode.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public int WarMode() => bridge.WarMode();

InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases [CharacterTitle]

Вызов выполняет сохранённый delegate обработчика. Метод регистрации создаёт этот delegate при построении API.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1071.

Результат: bridge.CharacterTitle.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

() => bridge.CharacterTitle

InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases [Direction]

Вызов выполняет сохранённый delegate обработчика. Метод регистрации создаёт этот delegate при построении API.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1056.

Результат: bridge.GetDir(bridge.Self).

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

() => bridge.GetDir(bridge.Self)

InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases [GetMaxLife]

Вызов выполняет сохранённый delegate обработчика. Метод регистрации создаёт этот delegate при построении API.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1025.

Результат: bridge.GetMaxHP(bridge.Self).

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

() => bridge.GetMaxHP(bridge.Self)

InjectionScript.Runtime.InjectionApiUO.RegisterCompactSearchApi [GetMobiles]

Вызов выполняет сохранённый delegate обработчика. Метод регистрации создаёт этот delegate при построении API.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:4649.

values

Результат: values.

Результат: CompactGetMobiles(values).

Вызовы: CompactGetMobiles.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

values => CompactGetMobiles(values)

InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases [GetPetsMax]

Вызов выполняет сохранённый delegate обработчика. Метод регистрации создаёт этот delegate при построении API.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1049.

Результат: bridge.FollowersMax.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

() => bridge.FollowersMax

InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases [GetResistPhysical]

Вызов выполняет сохранённый delegate обработчика. Метод регистрации создаёт этот delegate при построении API.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1042.

Результат: bridge.Armor.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

() => bridge.Armor

InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases [ResistCold]

Вызов выполняет сохранённый delegate обработчика. Метод регистрации создаёт этот delegate при построении API.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1044.

Результат: bridge.ColdResistance.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

() => bridge.ColdResistance

InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases [ResistEnergy]

Вызов выполняет сохранённый delegate обработчика. Метод регистрации создаёт этот delegate при построении API.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1046.

Результат: bridge.EnergyResistance.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

() => bridge.EnergyResistance

InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases [X]

Вызов выполняет сохранённый delegate обработчика. Метод регистрации создаёт этот delegate при построении API.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1053.

Результат: bridge.GetX(bridge.Self).

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

() => bridge.GetX(bridge.Self)

InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases [Y]

Вызов выполняет сохранённый delegate обработчика. Метод регистрации создаёт этот delegate при построении API.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1054.

Результат: bridge.GetY(bridge.Self).

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

() => bridge.GetY(bridge.Self)

InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases

Возвращает значение выражения ниже.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1007.

Результат: getter(bridge.Self).

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

() => getter(bridge.Self)

InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases

Возвращает значение выражения ниже.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1013.

value

Результат: value.

Результат: getter(GetObject(value)).

Вызовы: getter, GetObject.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

value => getter(GetObject(value))

InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases

Возвращает значение выражения ниже.

Параметры: Параметров нет.

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1013.

value

Результат: value.

Результат: getter(GetObject(value)).

Вызовы: getter, GetObject.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

value => getter(GetObject(value))

InjectionScript.Runtime.State.IgnoreTypeFilter.Matches

Возвращает значение выражения ниже.

Параметры: type, hue

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/State/NamedIgnoreLists.cs:17.

public bool Matches(int type, int hue)

Результат: bool.

Вызовы: rules.Contains.

Внутренний код реализации, не самостоятельный скрипт.

public bool Matches(int type, int hue) => rules.Contains((type, hue)) || rules.Contains((type, -1))
            || rules.Contains((-1, hue)) || rules.Contains((-1, -1));

InjectionScript.Runtime.State.NamedTypes.Set

Выполняет показанные вызовы и обновления состояния.

Параметры: name, graphic

Источник: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/State/NamedTypes.cs:22.

public void Set(string name, int graphic)

Результат: void.

Вызовы: ValidateName.

Условия: graphic < 0 || graphic > ushort.MaxValue.

Вызовы:

Внутренний код реализации, не самостоятельный скрипт.

public void Set(string name, int graphic)
        {
            string key = ValidateName(name);
            if (graphic < 0 || graphic > ushort.MaxValue)
                throw new NativeSubrutineException("UO.AddType requires a graphic in 0..65535, not an object serial.");
            lock (gate) values[key] = graphic;
        }

Clone this wiki locally