Runtime Helpers 6 - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki

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

Допоміжні функції 6

Внутрішній код реалізації, не самостійний скрипт.

ClassicUO.CSharp.CSharpCallbacks.Remove

Виконує показані виклики та оновлення стану.

Параметри: Listener listener

Джерело: Project_Full/src/ClassicUO.CSharp/CSharpCallbacks.cs:239.

private void Remove(Listener listener)

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

Умови:

  • listener.Closed

Виклики:

  • listeners.Remove
  • listener.Source.Dispose

Внутрішній код реалізації, не самостійний скрипт.

private void Remove(Listener listener)
    {
        lock (sync) { if (listener.Closed) return; listener.Closed = true; listeners.Remove(listener); }
        listener.Source.Dispose();
    }

ClassicUO.CSharp.CSharpCallbacks.RemoveState

Виконує показані виклики та оновлення стану.

Параметри: string name

Джерело: Project_Full/src/ClassicUO.CSharp/CSharpCallbacks.cs:386.

private void RemoveState(string name)

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

Виклики:

  • stateEvents.Remove
  • .Dispose

Внутрішній код реалізації, не самостійний скрипт.

private void RemoveState(string name)
    {
        StateEvent? state;
        lock (sync) { stateEvents.Remove(name, out state); }
        state?.Subscription?.Dispose();
    }

ClassicUO.CSharp.CSharpExecutionScope.VerifyActive

Виконує показані виклики та оновлення стану.

Параметри: Немає параметрів.

Джерело: Project_Full/src/ClassicUO.CSharp/CSharpScriptEngine.cs:576.

internal static void VerifyActive()

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

Умови:

  • CurrentFinalization.Value?.IsActive == true

Виклики:

  • .Verify

Внутрішній код реалізації, не самостійний скрипт.

internal static void VerifyActive()
    {
        Current.Value?.Verify();
        if (CurrentFinalization.Value?.IsActive == true)
            throw new InvalidOperationException("Game API calls are unavailable from a CLR finalizer.");
    }

ClassicUO.Configuration.ProfileManager.EncodePathSegment

Виконує показані виклики та оновлення стану.

Параметри: string value

Джерело: Project_Full/src/ClassicUO.Client/Configuration/ProfileManager.cs:321.

private static string EncodePathSegment(string value)

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

Умови:

  • string.IsNullOrWhiteSpace(value)

  • windowsInvalid || windowsTrimmedAtEnd

  • `baseName.Equals("CON", StringComparison.OrdinalIgnoreCase)

              || baseName.Equals("PRN", StringComparison.OrdinalIgnoreCase)
    
              || baseName.Equals("AUX", StringComparison.OrdinalIgnoreCase)
    
              || baseName.Equals("NUL", StringComparison.OrdinalIgnoreCase)
    
              || baseName.Length == 4
    
              && (baseName.StartsWith("COM", StringComparison.OrdinalIgnoreCase)
    
                  || baseName.StartsWith("LPT", StringComparison.OrdinalIgnoreCase))
    
              && baseName[3] is >= '1' and <= '9'`
    

Виклики:

  • string.IsNullOrWhiteSpace
  • IsWindowsTrimmedSuffix
  • builder.Append('~').Append
  • builder.Append
  • ((int)character).ToString
  • builder.ToString
  • result.Split
  • baseName.Equals
  • baseName.StartsWith

Внутрішній код реалізації, не самостійний скрипт.

private static string EncodePathSegment(string value)

        {

            if (string.IsNullOrWhiteSpace(value))

                return "UnknownServer";



            var builder = new StringBuilder(value.Length);



            for (int index = 0; index < value.Length; index++)

            {

                char character = value[index];

                bool windowsInvalid = character < 32

                                      || character is '<' or '>' or ':' or '"' or '/' or '\\' or '|' or '?' or '*' or '~';

                bool windowsTrimmedAtEnd = (character == '.' || character == ' ')

                                           && IsWindowsTrimmedSuffix(value, index);



                if (windowsInvalid || windowsTrimmedAtEnd)

                    builder.Append('~').Append(((int)character).ToString("X4"));

                else

                    builder.Append(character);

            }



            string result = builder.Length == 0 ? "UnknownServer" : builder.ToString();

            string baseName = result.Split('.')[0];



            if (baseName.Equals("CON", StringComparison.OrdinalIgnoreCase)

                || baseName.Equals("PRN", StringComparison.OrdinalIgnoreCase)

                || baseName.Equals("AUX", StringComparison.OrdinalIgnoreCase)

                || baseName.Equals("NUL", StringComparison.OrdinalIgnoreCase)

                || baseName.Length == 4

                && (baseName.StartsWith("COM", StringComparison.OrdinalIgnoreCase)

                    || baseName.StartsWith("LPT", StringComparison.OrdinalIgnoreCase))

                && baseName[3] is >= '1' and <= '9')

            {

                result = "~005F" + result;

            }



            return result;

        }

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ActivateHandle

Виконує показані виклики та оновлення стану.

Параметри: Немає параметрів.

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:1559.

public void ActivateHandle()

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

Виклики:

  • Invoke
  • SDL3.SDL.SDL_RaiseWindow
  • RequireGameView

Внутрішній код реалізації, не самостійний скрипт.

public void ActivateHandle() => Invoke(() => SDL3.SDL.SDL_RaiseWindow(RequireGameView("ActivateHandle").Window.Handle));

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.AddChatUserIgnore

Виконує показані виклики та оновлення стану.

Параметри: string name

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:2187.

public void AddChatUserIgnore(string name)

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

Виклики:

  • Invoke
  • JournalManager.AddYokoIgnoredUser

Внутрішній код реалізації, не самостійний скрипт.

public void AddChatUserIgnore(string name) => Invoke(() => JournalManager.AddYokoIgnoredUser(name));

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.AddMenuHook

Виконує показані виклики та оновлення стану.

Параметри: string caption, string item, bool persistent

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:699.

public void AddMenuHook(string caption, string item, bool persistent)

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

Виклики:

  • Invoke
  • _manager.AddMenuHook

Внутрішній код реалізації, не самостійний скрипт.

public void AddMenuHook(string caption, string item, bool persistent) => Invoke(() => _manager.AddMenuHook(caption, item, persistent));

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CloseClientWindow

Виконує показані виклики та оновлення стану.

Параметри: int uiWindowType, int id

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:3099.

public void CloseClientWindow(int uiWindowType, int id)

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

Умови:

  • uiWindowType == 2
  • uiWindowType == 0
  • uiWindowType == 3

Виклики:

  • Invoke

  • _world.CharacterPanels.Profile

  • .Close

  • _world.NativePopups.Close

  • _world.Containers.Close

  • `UIManager.Gumps.Where(gump => !gump.IsDisposed

                       && gump.LocalSerial == unchecked((uint)id) && MatchesType(gump)).ToArray`
    
  • UIManager.Gumps.Where

  • MatchesType

  • gump.Dispose

Внутрішній код реалізації, не самостійний скрипт.

public void CloseClientWindow(int uiWindowType, int id) => Invoke(() =>

        {

            if (uiWindowType == 2) _world.CharacterPanels.Profile(unchecked((uint)id))?.Close(true);

            if (uiWindowType == 0) _world.NativePopups.Close(SessionPopupKind.Paperdoll, unchecked((uint)id));

            if (uiWindowType == 3) _world.Containers.Close(unchecked((uint)id));

            bool MatchesType(Gump gump) => uiWindowType switch

            {

                0 => gump is PaperDollGump,

                1 => gump is StatusGumpBase,

                2 => gump is ProfileGump,

                3 => gump is ContainerGump,

                _ => false

            };



            foreach (Gump gump in UIManager.Gumps.Where(gump => !gump.IsDisposed

                         && gump.LocalSerial == unchecked((uint)id) && MatchesType(gump)).ToArray())

                gump.Dispose();

        });

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ConfirmTrade

Виконує показані виклики та оновлення стану.

Параметри: int tradeNumber

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:286.

public int ConfirmTrade(int tradeNumber)

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

Умови:

  • gump == null
  • !gump.ImAccepting

Виклики:

  • Invoke
  • FindNumberedTrade
  • GameActions.AcceptTrade

Внутрішній код реалізації, не самостійний скрипт.

public int ConfirmTrade(int tradeNumber) => Invoke(() =>

        {

            ISessionTrade gump = FindNumberedTrade(tradeNumber);

            if (gump == null) return 0;

            if (!gump.ImAccepting)

            {

                gump.ImAccepting = true;

                GameActions.AcceptTrade(gump.ID1, true);

            }

            return 1;

        });

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ContainerOf

Виконує показані виклики та оновлення стану.

Параметри: int id

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:2969.

public int ContainerOf(int id)

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

Виклики:

  • Invoke
  • _world.Items.Get

Внутрішній код реалізації, не самостійний скрипт.

public int ContainerOf(int id) => Invoke(() => _world.Items.Get((uint)id) is Item item ? (int)item.Container : 0);

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.DescribeControl

Виконує показані виклики та оновлення стану.

Параметри: Control control

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:4289.

private static string DescribeControl(Control control)

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

Умови:

  • control is SessionGumpControl logical
  • control is Button button
  • control is Checkbox checkbox

Виклики:

  • logical.Describe
  • control.GetType
  • GetControlText
  • string.IsNullOrWhiteSpace

Внутрішній код реалізації, не самостійний скрипт.

private static string DescribeControl(Control control)

        {

            if (control is SessionGumpControl logical) return logical.Describe();

            string common = $"{control.GetType().Name} page={control.Page} id=0x{control.LocalSerial:X8} "

                + $"x={control.X} y={control.Y} width={control.Width} height={control.Height}";



            if (control is Button button)

            {

                return common + $" ButtonID={button.ButtonID} action={button.ButtonAction} toPage={button.ToPage} "

                    + $"normal=0x{button.ButtonGraphicNormal:X4} pressed=0x{button.ButtonGraphicPressed:X4} over=0x{button.ButtonGraphicOver:X4}";

            }



            if (control is Checkbox checkbox)

            {

                string kind = checkbox is RadioButton ? "RadioButton" : "Checkbox";

                return $"{kind} page={control.Page} ID={control.LocalSerial} x={control.X} y={control.Y} "

                    + $"checked={checkbox.IsChecked} inactive=0x{checkbox.InactiveGraphic:X4} active=0x{checkbox.ActiveGraphic:X4}";

            }



            string text = GetControlText(control);

            return string.IsNullOrWhiteSpace(text) ? common : common + $" text={text}";

        }

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Exec

Виконує показані виклики та оновлення стану.

Параметри: string subrutineName

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:2954.

public void Exec(string subrutineName)

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

Виклики:

  • _manager.RunNamedProcedureFromScript

Внутрішній код реалізації, не самостійний скрипт.

public void Exec(string subrutineName)

        {

            _manager.RunNamedProcedureFromScript(subrutineName, _csharpGlobals?.Cancellation ?? _cancellationToken);

        }

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetDropDelay

Виконує показані виклики та оновлення стану.

Параметри: Немає параметрів.

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:209.

public int GetDropDelay()

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

Виклики:

—

Внутрішній код реалізації, не самостійний скрипт.

public int GetDropDelay() => State.GrabDelay;

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetFlags

Виконує показані виклики та оновлення стану.

Параметри: int id

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:625.

public int GetFlags(int id)

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

Виклики:

  • Invoke
  • _world.Get

Внутрішній код реалізації, не самостійний скрипт.

public int GetFlags(int id) => Invoke(() => _world.Get((uint)id) is Entity entity ? (int)entity.Flags : 0);

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpCount

Виконує показані виклики та оновлення стану.

Параметри: Немає параметрів.

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:3043.

public int GetGumpCount()

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

Виклики:

  • Invoke
  • ServerGumpsUnsafe

Внутрішній код реалізації, не самостійний скрипт.

public int GetGumpCount() => Invoke(() => ServerGumpsUnsafe().Count);

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetGumpSerial

Виконує показані виклики та оновлення стану.

Параметри: int index

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:3053.

public int GetGumpSerial(int index)

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

Виклики:

  • Invoke
  • ServerGumpsUnsafe().ElementAtOrDefault
  • ServerGumpsUnsafe

Внутрішній код реалізації, не самостійний скрипт.

public int GetGumpSerial(int index) => Invoke(() => (int)(ServerGumpsUnsafe().ElementAtOrDefault(index)?.LocalSerial ?? 0));

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetScriptPath

Виконує показані виклики та оновлення стану.

Параметри: int index

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:321.

public string GetScriptPath(int index)

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

Виклики:

  • _manager.GetScriptPath

Внутрішній код реалізації, не самостійний скрипт.

public string GetScriptPath(int index) => _manager.GetScriptPath(index);

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetStaticArt::Write16

Виконує показані виклики та оновлення стану.

Параметри: buffer, offset, value

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:3346.

static void Write16(byte[] buffer, int offset, int value)

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

Внутрішній код реалізації, не самостійний скрипт.

static void Write16(byte[] buffer, int offset, int value)

            {

                buffer[offset] = (byte)value;

                buffer[offset + 1] = (byte)(value >> 8);

            }

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetWaitTargetQueue

Виконує показані виклики та оновлення стану.

Параметри: Немає параметрів.

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:1297.

public int[] GetWaitTargetQueue()

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

Виклики:

  • _manager.GetPendingTargetSerials

Внутрішній код реалізації, не самостійний скрипт.

public int[] GetWaitTargetQueue() => _manager.GetPendingTargetSerials();

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.JournalEntryCount

Виконує показані виклики та оновлення стану.

Параметри: Немає параметрів.

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:2189.

public int JournalEntryCount()

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

Виклики:

  • Invoke

Внутрішній код реалізації, не самостійний скрипт.

public int JournalEntryCount() => Invoke(() => JournalManager.Entries.Count);

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.JournalMatchCount

Виконує показані виклики та оновлення стану.

Параметри: Немає параметрів.

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:2190.

public int JournalMatchCount()

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

Виклики:

—

Внутрішній код реалізації, не самостійний скрипт.

public int JournalMatchCount() => _journalMatchCount;

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastTarget

Виконує показані виклики та оновлення стану.

Параметри: Немає параметрів.

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:152.

public int LastTarget

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

Виклики:

  • Invoke

Внутрішній код реалізації, не самостійний скрипт.

public int LastTarget => Invoke(() => (int)_world.TargetManager.LastTargetInfo.Serial);

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastTile

Виконує показані виклики та оновлення стану.

Параметри: Немає параметрів.

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:1298.

public int[] LastTile()

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

Виклики:

  • Invoke

Внутрішній код реалізації, не самостійний скрипт.

public int[] LastTile() => Invoke(() =>

        {

            LastTargetInfo info = _world.TargetManager.LastTargetInfo;

            return new[] { (int)info.Graphic, (int)info.X, (int)info.Y, (int)info.Z };

        });

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.MoveTo

Повертає значення виразу нижче.

Параметри: x, y, z, accuracy, running, staminaThreshold, openDoor, throughCorner, throughNpcs, heuristicMultiplier, turnCost, exitOnDisconnect, accuracyZ, optimized, betweenTwoCorners

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:1463.

`public int MoveTo(int x, int y, int z, int accuracy, bool running, int staminaThreshold,

        bool openDoor, bool throughCorner, bool throughNpcs, int heuristicMultiplier,

        int turnCost, bool exitOnDisconnect, int accuracyZ = 255, bool optimized = true,

        bool betweenTwoCorners = false)`

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

Виклики: Invoke.

Внутрішній код реалізації, не самостійний скрипт.

public int MoveTo(int x, int y, int z, int accuracy, bool running, int staminaThreshold,

            bool openDoor, bool throughCorner, bool throughNpcs, int heuristicMultiplier,

            int turnCost, bool exitOnDisconnect, int accuracyZ = 255, bool optimized = true,

            bool betweenTwoCorners = false) => Invoke(() =>

        {

            if (_world.Player == null) return 0;

            _manager.StopFollowing();

            Pathfinder pathfinder = _world.Player.Pathfinder;

            bool started = pathfinder.WalkTo(

                x,

                y,

                z,

                Math.Clamp(accuracy, 0, 20),

                running,

                Math.Max(0, staminaThreshold),

                openDoor,

                throughCorner,

                throughNpcs,

                Math.Max(1, heuristicMultiplier),

                Math.Max(0, turnCost),

                exitOnDisconnect,

                Math.Clamp(accuracyZ, 0, 255),

                optimized,

                betweenTwoCorners,

                ScriptPathObstacles.Create(_csharpState, this), incremental: true);

            if (started)

            {

                _lastMovementPathfinder = pathfinder;

                _lastMovementPlayer = _world.Player;

                _lastMovementMap = _world.Map;

                _lastMovementMapIndex = _world.MapIndex;

                Interlocked.Exchange(ref _lastMovementRequestId, pathfinder.AutoWalkRequestGeneration);

                _pathCancellation.Unregister();

                long generation = pathfinder.AutoWalkGeneration;

                if (pathfinder.AutoWalking)

                    _pathCancellation = _cancellationToken.Register(() => _manager.ReleaseScriptMovement(pathfinder, generation));

            }

            return started ? 1 : 0;

        });

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ReceiveObjectName

Виконує показані виклики та оновлення стану.

Параметри: int id, int delay

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:1488.

public void ReceiveObjectName(int id, int delay)

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

Виклики:

  • Click
  • Stopwatch.StartNew
  • Math.Max
  • string.IsNullOrEmpty
  • GetName
  • Wait
  • Math.Min

Внутрішній код реалізації, не самостійний скрипт.

public void ReceiveObjectName(int id, int delay)

        {

            Click(id);

            var elapsed = Stopwatch.StartNew();

            while (elapsed.ElapsedMilliseconds < Math.Max(0, delay) && string.IsNullOrEmpty(GetName(id)))

                Wait((int)Math.Min(25, Math.Max(1L, delay - elapsed.ElapsedMilliseconds)));

        }

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RequestVirtuesGump

Виконує показані виклики та оновлення стану.

Параметри: Немає параметрів.

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:298.

public void RequestVirtuesGump()

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

Умови:

  • _world.Player != null

Виклики:

  • Invoke
  • GameActions.ReplyGump
  • Array.Empty<Tuple<ushort, string>>

Внутрішній код реалізації, не самостійний скрипт.

public void RequestVirtuesGump() => Invoke(() =>

        {

            if (_world.Player != null)

                GameActions.ReplyGump(_world.Player, 0x000001CD, 0x00000001, new[] { _world.Player.Serial }, Array.Empty<Tuple<ushort, string>>());

        });

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ResolveGumpUnsafe

Виконує показані виклики та оновлення стану.

Параметри: int gumpId

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:4242.

private Gump ResolveGumpUnsafe(int gumpId)

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

Умови:

  • gumpId == -1

Виклики:

  • ServerGumpsUnsafe
  • gumps.LastOrDefault
  • gumps.FirstOrDefault

Внутрішній код реалізації, не самостійний скрипт.

private Gump ResolveGumpUnsafe(int gumpId)

        {

            List<Gump> gumps = ServerGumpsUnsafe();

            if (gumpId == -1)

            {

                return _selectedServerGump != null && !_selectedServerGump.IsDisposed ? _selectedServerGump : gumps.LastOrDefault();

            }

            return gumps.FirstOrDefault(g => g.LocalSerial == (uint)gumpId || g.ServerSerial == (uint)gumpId)

                ?? (gumpId >= 0 && gumpId < gumps.Count ? gumps[gumpId] : null);

        }

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SelectContainer

Виконує показані виклики та оновлення стану.

Параметри: Немає параметрів.

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:744.

public int SelectContainer()

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

Виклики:

  • SelectObject

Внутрішній код реалізації, не самостійний скрипт.

public int SelectContainer() => SelectObject() is Item item ? (int)item.Serial : 0;

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SendServerSpeech

Виконує показані виклики та оновлення стану.

Параметри: string command, string message

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:1575.

private void SendServerSpeech(string command, string message)

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

Виклики:

  • Invoke
  • GameActions.Say
  • ReportStatus

Внутрішній код реалізації, не самостійний скрипт.

private void SendServerSpeech(string command, string message) => Invoke(() =>

        {

            GameActions.Say(message ?? string.Empty, allowYokoCommand: SCRIPT_SAY_ALLOW_YOKO_COMMAND);

            ReportStatus($"{command} delivered through ClassicUO server speech");

        });

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.StartScript

Виконує показані виклики та оновлення стану.

Параметри: string path

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:324.

public int StartScript(string path)

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

Виклики:

  • _manager.StartScript

Внутрішній код реалізації, не самостійний скрипт.

public int StartScript(string path) => _manager.StartScript(path);

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ToClassicUOCastIndex

Виконує показані виклики та оновлення стану.

Параметри: int spellId

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:2420.

internal static int ToClassicUOCastIndex(int spellId)

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

Виклики:

—

Внутрішній код реалізації, не самостійний скрипт.

internal static int ToClassicUOCastIndex(int spellId) => spellId;

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TryMoveItemRequest

Виконує показані виклики та оновлення стану.

Параметри: int id, int amount, int destination, int x, int y, int z

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:1342.

private bool TryMoveItemRequest(int id, int amount, int destination, int x, int y, int z)

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

Виклики:

  • TryMoveItemRequest

Внутрішній код реалізації, не самостійний скрипт.

private bool TryMoveItemRequest(int id, int amount, int destination, int x, int y, int z)

            => TryMoveItemRequest(_world, id, amount, destination, x, y, z);

ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.UseAbility

Виконує показані виклики та оновлення стану.

Параметри: int abilityId

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs:2453.

public int UseAbility(int abilityId)

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

Умови:

  • _world.Player == null || abilityId < 1 || abilityId > AbilityData.Abilities.Length
  • abilityId == primary
  • abilityId == secondary

Виклики:

  • Invoke
  • GameActions.UsePrimaryAbility
  • GameActions.UseSecondaryAbility

Внутрішній код реалізації, не самостійний скрипт.

public int UseAbility(int abilityId) => Invoke(() =>

        {

            if (_world.Player == null || abilityId < 1 || abilityId > AbilityData.Abilities.Length)

                return 0;



            int primary = (byte)_world.Player.Abilities[0] & 0x7F;

            int secondary = (byte)_world.Player.Abilities[1] & 0x7F;

            if (abilityId == primary)

            {

                GameActions.UsePrimaryAbility(_world);

                return 1;

            }

            if (abilityId == secondary)

            {

                GameActions.UseSecondaryAbility(_world);

                return 1;

            }

            return 0;

        });

ClassicUO.Game.Managers.YokoIdeToolBuffers.AppendOutput

Виконує показані виклики та оновлення стану.

Параметри: string scriptKey, string text

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/YokoIdeToolBuffers.cs:124.

internal void AppendOutput(string scriptKey, string text)

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

Виклики:

  • _output.Add
  • _clock
  • NormalizeKey
  • NormalizeText
  • TrimOldest

Внутрішній код реалізації, не самостійний скрипт.

internal void AppendOutput(string scriptKey, string text)
        {
            lock (_sync)
            {
                _output.Add(new YokoOutputEntry
                {
                    Sequence = ++_sequence,
                    Timestamp = _clock(),
                    ScriptKey = NormalizeKey(scriptKey),
                    Text = NormalizeText(text)
                });
                TrimOldest(_output);
                _revision++;
            }
        }

ClassicUO.Game.Managers.YokoInjectionManager.InvokeOnGameThread

Виконує показані виклики та оновлення стану.

Параметри: Action callback, CancellationToken cancellationToken

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/YokoInjectionManager.cs:3490.

internal void InvokeOnGameThread(Action callback, CancellationToken cancellationToken)

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

Виклики:

  • InvokeOnGameThread
  • callback

Внутрішній код реалізації, не самостійний скрипт.

internal void InvokeOnGameThread(Action callback, CancellationToken cancellationToken)

        {

            InvokeOnGameThread(() =>

            {

                callback();

                return true;

            }, cancellationToken);

        }

ClassicUO.Game.Managers.YokoInjectionManager.PauseResumeScript

Виконує показані виклики та оновлення стану.

Параметри: int index

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/YokoInjectionManager.cs:2841.

internal void PauseResumeScript(int index)

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

Умови:

  • script == null

Виклики:

  • ElementAt
  • RunningScripts
  • script.ToggleManualPause
  • MarkRuntimeStateChanged

Внутрішній код реалізації, не самостійний скрипт.

internal void PauseResumeScript(int index)

        {

            YokoRunningScript script = ElementAt(RunningScripts(), index);

            if (script == null)

                return;



            script.ToggleManualPause();

            MarkRuntimeStateChanged();

        }

ClassicUO.Game.Managers.YokoInjectionManager.SetStatus

Виконує показані виклики та оновлення стану.

Параметри: string text, string scriptKey = null

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/YokoInjectionManager.cs:3751.

internal void SetStatus(string text, string scriptKey = null)

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

Умови:

  • !IsScriptPublicationCurrent(scriptKey)

Виклики:

  • IsScriptPublicationCurrent
  • Volatile.Write
  • PublishStatus

Внутрішній код реалізації, не самостійний скрипт.

internal void SetStatus(string text, string scriptKey = null)

        {

            if (!IsScriptPublicationCurrent(scriptKey))

                return;

            Volatile.Write(ref _statusPriority, 1);

            PublishStatus(text, scriptKey);

        }

ClassicUO.Game.SerialHelper.IsMobile

Виконує показані виклики та оновлення стану.

Параметри: uint serial

Джерело: Project_Full/src/ClassicUO.Client/Game/SerialHelper.cs:16.

public static bool IsMobile(uint serial)

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

Виклики:

—

Внутрішній код реалізації, не самостійний скрипт.

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

ClassicUO.Game.World.ChangeSeason

Виконує показані виклики та оновлення стану.

Параметри: Season season, int music

Джерело: Project_Full/src/ClassicUO.Client/Game/World.cs:321.

public void ChangeSeason(Season season, int music)

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

Умови:

  • audio != null && (currentMusic == null || currentMusic.Index == audio.LoginMusicIndex)

Виклики:

  • Map.GetUsedChunks
  • .GetHeadObject
  • obj.UpdateGraphicBySeason
  • .GetCurrentMusic
  • audio.PlayMusic

Внутрішній код реалізації, не самостійний скрипт.

public void ChangeSeason(Season season, int music)

        {

            Season = season;



            foreach (Chunk chunk in Map.GetUsedChunks())

            {

                for (int x = 0; x < 8; x++)

                {

                    for (int y = 0; y < 8; y++)

                    {

                        for (GameObject obj = chunk?.GetHeadObject(x, y); obj != null; obj = obj.TNext)

                        {

                            obj.UpdateGraphicBySeason();

                        }

                    }

                }

            }



            //TODO(deccer): refactor this out into _audioPlayer.PlayMusic(...)

            var audio = Client.Game?.Audio;

            UOMusic currentMusic = audio?.GetCurrentMusic();

            if (audio != null && (currentMusic == null || currentMusic.Index == audio.LoginMusicIndex))

            {

                audio.PlayMusic(music, false);

            }

        }

InjectionScript.Runtime.InjectionApi.GetWord

Виконує показані виклики та оновлення стану.

Параметри: string value,int wordIndex

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApi.cs:41.

private static string GetWord(string value,int wordIndex)

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

Виклики:

  • GetWord

Внутрішній код реалізації, не самостійний скрипт.

private static string GetWord(string value,int wordIndex) => GetWord(value,wordIndex," ");

InjectionScript.Runtime.InjectionApi.SplitWords

Виконує показані виклики та оновлення стану.

Параметри: string value,string delimiter

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApi.cs:36.

private static string[] SplitWords(string value,string delimiter)

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

Виклики:

  • string.IsNullOrEmpty
  • value.Split

Внутрішній код реалізації, не самостійний скрипт.

private static string[] SplitWords(string value,string delimiter)
        {
            value=value??string.Empty;
            return string.IsNullOrEmpty(delimiter)||delimiter==" "?value.Split((char[])null,StringSplitOptions.RemoveEmptyEntries):value.Split(new[]{delimiter},StringSplitOptions.RemoveEmptyEntries);
        }

InjectionScript.Runtime.InjectionApiUO.CalculateDirection

Виконує показані виклики та оновлення стану.

Параметри: int fromX, int fromY, int toX, int toY

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:2857.

private static int CalculateDirection(int fromX, int fromY, int toX, int toY)

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

Умови:

  • dx == 0 && dy == 0
  • dx == 0
  • dy == 0
  • dx > 0

Виклики:

  • Math.Sign

Внутрішній код реалізації, не самостійний скрипт.

private static int CalculateDirection(int fromX, int fromY, int toX, int toY)

        {

            int dx = Math.Sign(toX - fromX);

            int dy = Math.Sign(toY - fromY);

            if (dx == 0 && dy == 0) return 100;

            if (dx == 0) return dy < 0 ? 0 : 4;

            if (dy == 0) return dx > 0 ? 2 : 6;

            if (dx > 0) return dy < 0 ? 1 : 3;

            return dy > 0 ? 5 : 7;

        }

InjectionScript.Runtime.InjectionApiUO.CompactAttackNearest

Виконує показані виклики та оновлення стану.

Параметри: InjectionValue[] values

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:5068.

private int CompactAttackNearest(InjectionValue[] values)

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

Умови:

  • !TryResolveClassRules(classMask, out EquipmentClassRule[] rules)
  • serial != 0

Виклики:

  • ResolveCompactDistance
  • bridge.GetFindDistance
  • ResolveCompactMaxZ
  • bridge.GetFindVertical
  • ToBoolean
  • NumberConversions.ToInt
  • TryResolveClassRules
  • FilterMobiles
  • SelectClassCandidate
  • bridge.Attack

Внутрішній код реалізації, не самостійний скрипт.

private int CompactAttackNearest(InjectionValue[] values)

        {

            InjectionValue notoriety = values[0];

            int distance = values.Length > 1 ? ResolveCompactDistance(values[1]) : bridge.GetFindDistance();

            InjectionValue body = values.Length > 2 ? values[2] : InjectionValue.MinusOne;

            int maxZ = values.Length > 3 ? ResolveCompactMaxZ(values[3]) : bridge.GetFindVertical();

            bool nearest = values.Length <= 4 || ToBoolean(values[4]);

            int color = values.Length > 5 ? NumberConversions.ToInt(values[5]) : -1;

            InjectionValue classMask = values.Length > 6 ? values[6] : default(InjectionValue);

            bool aliveOnly = values.Length > 7 && ToBoolean(values[7]);

            bool visibleOnly = values.Length > 8 && ToBoolean(values[8]);



            // Resolve once, before any attack. A misspelled/undefined class must

            // never degrade into an unrestricted search or a name substring match.

            if (!TryResolveClassRules(classMask, out EquipmentClassRule[] rules))

                return 0;

            IEnumerable<int> mobiles = FilterMobiles(distance, notoriety, body, maxZ, color, false,

                false, aliveOnly, visibleOnly);

            int serial = SelectClassCandidate(mobiles, rules, nearest);

            if (serial != 0)

                bridge.Attack(serial);

            return serial;

        }

InjectionScript.Runtime.InjectionApiUO.CompactWaitGump

Виконує показані виклики та оновлення стану.

Параметри: InjectionValue[] values

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:3197.

private int CompactWaitGump(InjectionValue[] values)

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

Умови:

  • values == null || values.Length == 0
  • bridge is IApiGumpAutomation automation
  • value.Kind == InjectionValueKind.Array
  • CompactWaitGump(value.Array) == 0

Виклики:

  • CollectGumpButtons

  • automation.QueueGumpButtons

  • buttons.ToArray

  • CompactWaitGump

  • (value.String ?? string.Empty).Contains

  • `(value.String ?? string.Empty)

                      .Split(new[] { '|', ',' }, StringSplitOptions.RemoveEmptyEntries)
    
                      .Select(part => new InjectionValue(part.Trim())).ToArray`
    
  • `(value.String ?? string.Empty)

                      .Split(new[] { '|', ',' }, StringSplitOptions.RemoveEmptyEntries)
    
                      .Select`
    
  • `(value.String ?? string.Empty)

                      .Split`
    
  • part.Trim

  • NumberConversions.ToInt

  • bridge.WaitGumpSelect

Внутрішній код реалізації, не самостійний скрипт.

private int CompactWaitGump(InjectionValue[] values)

        {

            if (values == null || values.Length == 0)

                throw new NativeSubrutineException("UO.WaitGump requires at least one trigger/button id.");



            if (bridge is IApiGumpAutomation automation)

            {

                var buttons = new List<int>();

                CollectGumpButtons(values, buttons);

                automation.QueueGumpButtons(buttons.ToArray());

                return 1;

            }



            foreach (InjectionValue value in values)

            {

                if (value.Kind == InjectionValueKind.Array)

                {

                    if (CompactWaitGump(value.Array) == 0)

                        return 0;

                    continue;

                }



                if (value.Kind == InjectionValueKind.String

                    && ((value.String ?? string.Empty).Contains('|') || (value.String ?? string.Empty).Contains(',')))

                {

                    InjectionValue[] nested = (value.String ?? string.Empty)

                        .Split(new[] { '|', ',' }, StringSplitOptions.RemoveEmptyEntries)

                        .Select(part => new InjectionValue(part.Trim())).ToArray();

                    if (CompactWaitGump(nested) == 0)

                        return 0;

                    continue;

                }



                int triggerId = NumberConversions.ToInt(value);

                if (bridge.WaitGumpSelect(triggerId, 30_000) == 0)

                    return 0;

            }

            return 1;

        }

InjectionScript.Runtime.InjectionApiUO.ConvertLayer

Виконує показані виклики та оновлення стану.

Параметри: string layer

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:6523.

private int ConvertLayer(string layer)

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

Умови:

  • layerNameToNumber.TryGetValue((layer ?? string.Empty).Trim(), out int value)

Виклики:

  • layerNameToNumber.TryGetValue
  • (layer ?? string.Empty).Trim

Внутрішній код реалізації, не самостійний скрипт.

private int ConvertLayer(string layer)

        {

            if (layerNameToNumber.TryGetValue((layer ?? string.Empty).Trim(), out int value))

                return value;

            throw new NativeSubrutineException($"Unknown equipment layer '{layer}'. Use a documented layer such as Rhand, Lhand, Helmet, Necklace, Backpack, Robe, Legs, or Mount.");

        }

InjectionScript.Runtime.InjectionApiUO.ConvertMoveDestination

Виконує показані виклики та оновлення стану.

Параметри: InjectionValue containerId

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:6479.

private int ConvertMoveDestination(InjectionValue containerId)

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

Умови:

  • containerId.Kind != InjectionValueKind.String && containerId.Kind != InjectionValueKind.Integer

Виклики:

  • NumberConversions.TryStr2Int
  • .Trim
  • ResolveTransferDestination

Внутрішній код реалізації, не самостійний скрипт.

private int ConvertMoveDestination(InjectionValue containerId)

        {

            if (containerId.Kind != InjectionValueKind.String && containerId.Kind != InjectionValueKind.Integer)

                throw new NativeSubrutineException("A move destination must be an object name or serial ID.");

            // Preserve the legacy -1 backpack selector. Resolve names before

            // lifting: a misspelled or unset container must never become ground.

            bool backpack = containerId.Kind == InjectionValueKind.Integer

                ? containerId.Integer == -1

                : NumberConversions.TryStr2Int(containerId.String?.Trim() ?? string.Empty, out int literal) && literal == -1;

            return ResolveTransferDestination(backpack ? new InjectionValue("backpack") : containerId, allowGround: true);

        }

InjectionScript.Runtime.InjectionApiUO.Count

Виконує показані виклики та оновлення стану.

Параметри: InjectionValue type

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:5326.

public int Count(InjectionValue type)

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

Виклики:

  • Count
  • ResolveType

Внутрішній код реалізації, не самостійний скрипт.

public int Count(InjectionValue type) 

            => Count(ResolveType(type), -1, -1);

InjectionScript.Runtime.InjectionApiUO.DeleteJournal

Виконує показані виклики та оновлення стану.

Параметри: string text

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:5519.

public void DeleteJournal(string text)

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

Виклики:

  • bridge.DeleteJournal
  • SelectJournalEntry

Внутрішній код реалізації, не самостійний скрипт.

public void DeleteJournal(string text)

        {

            bridge.DeleteJournal(text);

            SelectJournalEntry(null);

        }

InjectionScript.Runtime.InjectionApiUO.DeleteObject

Виконує показані виклики та оновлення стану.

Параметри: string name

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:3927.

public void DeleteObject(string name)

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

Умови:

  • objects.TryGet(name, out int value)

Виклики:

  • objects.TryGet
  • objects.Remove
  • SystemMessage

Внутрішній код реалізації, не самостійний скрипт.

public void DeleteObject(string name)

        {

            if (objects.TryGet(name, out int value))

            {

                objects.Remove(name);

                SystemMessage($"Object {name} has been deleted");

            }

            else

                SystemMessage($"Object {name} not found");

        }

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text

Повертає значення виразу нижче.

Параметри: index

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1144.

string Text(int index)

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

Результат: index < arguments.Length ? arguments[index].ToString() : string.Empty.

Виклики: arguments[index].ToString.

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

string Text(int index) => index < arguments.Length ? arguments[index].ToString() : string.Empty;

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1231.

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

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "addtojournal":

                case "addtosystemjournal":

                case "clientprint":

                    SystemMessage(Text(0)); return InjectionValue.Unit;

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1286.

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

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "autobuyex":

                    bridge.SetAutoBuyRule(Arg(0), Arg(1), Arg(2), Arg(3), Text(4)); return InjectionValue.Unit;

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1550.

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

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "canceltrade": return new InjectionValue(bridge.CancelTrade(Arg(0)));

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1306.

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

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "connect": bridge.ConnectClient(); return InjectionValue.Unit;

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1565.

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "dist": return new InjectionValue(arguments.Length >= 4

                    ? GetDistance(Arg(0), Arg(1), Arg(2), Arg(3))

                    : bridge.GetDistance(Arg(0)));

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1627.

Результат: new InjectionValue(ChangeEquipmentItems(ArrayArg(0), true)).

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "equipitems":

                    return new InjectionValue(ChangeEquipmentItems(ArrayArg(0), true));

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:2005.

new []

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

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "extendedinfo":

                    return new InjectionValue(new[] { new InjectionValue(bridge.ClientPath), new InjectionValue(bridge.CurrentProfilePath), new InjectionValue(bridge.GameServerAddress), new InjectionValue(bridge.GameServerPort) });

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1476.

Результат: new InjectionValue(bridge.FindType(ResolveType(arguments[0]), Arg(1), StealthContainer(2), -1, Arg(3) != 0)).

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "findtypeex": return new InjectionValue(bridge.FindType(ResolveType(arguments[0]), Arg(1), StealthContainer(2), -1, Arg(3) != 0));

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1587.

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

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "getactiveability": return new InjectionValue(bridge.GetActiveAbility());

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1590.

Результат: StringArray(bridge.GetMenuItems(Text(0), false)).

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "getmenuitems": return StringArray(bridge.GetMenuItems(Text(0), false));

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1919.

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

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "globalchatsendmsg": bridge.GlobalChatSend(Text(0)); return InjectionValue.Unit;

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1273.

Результат: new InjectionValue(InJournal(Text(0))).

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "injournal": return new InjectionValue(InJournal(Text(0)));

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:2043.

Результат: new InjectionValue(selectedJournalEntry?.Color ?? 0).

Внутрішній код реалізації, не самостійний скрипт.

case "linetextcolor":

                    return new InjectionValue(selectedJournalEntry?.Color ?? 0);

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1534.

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

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "predictedy": return new InjectionValue(ReadPredictedCoordinate(1));

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1594.

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

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "requestcontextmenu": bridge.RequestContextMenu(Arg(0)); return InjectionValue.Unit;

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1357.

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

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "setsilentmode": state.SilentMode = Arg(0) != 0 ? 1 : 0; return InjectionValue.Unit;

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1655.

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

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "setwarmode": WarMode(Arg(0)); return InjectionValue.Unit;

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1295.

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

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "targetid": return new InjectionValue(bridge.GetTargetCursorId());

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1250.

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

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "useobject": bridge.UseObject(Arg(0)); return InjectionValue.Unit;

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1681.

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

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "usesecondaryability": bridge.UseSecondaryAbility(); return InjectionValue.Unit;

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1642.

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

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "waitfortarget": return new InjectionValue(bridge.WaitUntilTargeting(Arg(0)));

InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1369.

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

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "weight": return new InjectionValue(bridge.Weight);

InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:2844.

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "adddir":

                case "addfindlist":

                case "addgate":

                case "addrecall":

                case "addstep":

                    LegacyList(name).Add(string.Join("|", arguments.Select(value => value.ToString())));

                    break;

InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:2876.

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "cancelmenu": bridge.ClearMenuHooks(); break;

InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:2858.

Умови: arguments.Length == 0.

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "clearfindlist":

                    if (arguments.Length == 0) LegacyList("AddFindList").Clear();

                    else LegacyList("AddFindList").RemoveAll(value => value.Split('|')[0]

                        .Equals(Text(0), StringComparison.OrdinalIgnoreCase));

                    break;

InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:2888.

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "closeuo": bridge.CloseHandle(); break;

InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:2991.

Умови: arguments.Length == 0.

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "massmove":

                    if (arguments.Length == 0) bridge.MassMove(-1, 0, 0, -1, -1, -1, 0);

                    else bridge.MassMove(NumberConversions.ToInt(arguments[0]),

                        arguments.Length > 1 ? NumberConversions.ToInt(arguments[1]) : 0,

                        arguments.Length > 2 ? ResolveType(arguments[2]) : 0,

                        arguments.Length > 3 ? ResolveTransferDestination(arguments[3], true) : -1,

                        arguments.Length > 4 ? NumberConversions.ToInt(arguments[4]) : -1,

                        arguments.Length > 5 ? NumberConversions.ToInt(arguments[5]) : -1,

                        arguments.Length > 6 ? NumberConversions.ToInt(arguments[6]) : 0);

                    break;

InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:3001.

Умови: arguments.Length == 0.

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "masspricemove":

                    if (arguments.Length == 0) bridge.MassPriceMove(-1, 0, 0, 0, -1, -1, -1, 0);

                    else bridge.MassPriceMove(NumberConversions.ToInt(arguments[0]),

                        NumberConversions.ToInt(arguments[1]), ResolveType(arguments[2]),

                        NumberConversions.ToInt(arguments[3]),

                        arguments.Length > 4 ? ResolveTransferDestination(arguments[4], true) : -1,

                        arguments.Length > 5 ? NumberConversions.ToInt(arguments[5]) : -1,

                        arguments.Length > 6 ? NumberConversions.ToInt(arguments[6]) : -1,

                        arguments.Length > 7 ? NumberConversions.ToInt(arguments[7]) : 0);

                    break;

InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias

Гілка обробляє лише вказане ім’я команди.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:3020.

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

case "resend": bridge.Resync(); break;

InjectionScript.Runtime.InjectionApiUO.Exists

Виконує показані виклики та оновлення стану.

Параметри: int id

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:3858.

public int Exists(int id)

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

Виклики:

  • bridge.Exists

Внутрішній код реалізації, не самостійний скрипт.

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

InjectionScript.Runtime.InjectionApiUO.GetLandTileAt

Виконує показані виклики та оновлення стану.

Параметри: InjectionValue x, InjectionValue y

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:6306.

public InjectionValue GetLandTileAt(InjectionValue x, InjectionValue y)

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

Виклики:

  • GetLandTileAt

Внутрішній код реалізації, не самостійний скрипт.

public InjectionValue GetLandTileAt(InjectionValue x, InjectionValue y)

            => GetLandTileAt(x, y, new InjectionValue(bridge.WorldNumber));

InjectionScript.Runtime.InjectionApiUO.GetObject

Виконує показані виклики та оновлення стану.

Параметри: string name

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:4006.

public int GetObject(string name)

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

Умови:

  • !TryGetObject(name, out int id)

Виклики:

  • TryGetObject

Внутрішній код реалізації, не самостійний скрипт.

public int GetObject(string name)

        {

            if (!TryGetObject(name, out int id))

                return 0;



            return id;

        }

InjectionScript.Runtime.InjectionApiUO.GetTileName

Виконує показані виклики та оновлення стану.

Параметри: InjectionValue group, InjectionValue tileId

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:6375.

public string GetTileName(InjectionValue group, InjectionValue tileId)

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

Виклики:

  • bridge.GetTileDataName
  • NumberConversions.ToInt

Внутрішній код реалізації, не самостійний скрипт.

public string GetTileName(InjectionValue group, InjectionValue tileId)

            => bridge.GetTileDataName(NumberConversions.ToInt(group), NumberConversions.ToInt(tileId));

InjectionScript.Runtime.InjectionApiUO.GetUserStatic

Виконує показані виклики та оновлення стану.

Параметри: InjectionValue id

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:6392.

public string GetUserStatic(InjectionValue id)

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

Виклики:

  • state.UserStatics.TryGetValue
  • NumberConversions.ToInt

Внутрішній код реалізації, не самостійний скрипт.

public string GetUserStatic(InjectionValue id)

            => state.UserStatics.TryGetValue(NumberConversions.ToInt(id), out string value) ? value : string.Empty;

InjectionScript.Runtime.InjectionApiUO.GetY

Виконує показані виклики та оновлення стану.

Параметри: string id

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:3682.

public int GetY(string id)

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

Виклики:

  • GetY
  • GetObject

Внутрішній код реалізації, не самостійний скрипт.

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

InjectionScript.Runtime.InjectionApiUO.Hidden

Виконує показані виклики та оновлення стану.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:3884.

public int Hidden()

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

Виклики:

  • Hidden

Внутрішній код реалізації, не самостійний скрипт.

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

InjectionScript.Runtime.InjectionApiUO.Ignore

Виконує показані виклики та оновлення стану.

Параметри: int id

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:5340.

public void Ignore(int id)

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

Виклики:

  • bridge.Ignore

Внутрішній код реалізації, не самостійний скрипт.

public void Ignore(int id) => bridge.Ignore(id);

InjectionScript.Runtime.InjectionApiUO.InJournal

Виконує показані виклики та оновлення стану.

Параметри: string pattern, int maxLinesOrIgnoreCase

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:5463.

public int InJournal(string pattern, int maxLinesOrIgnoreCase)

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

Виклики:

  • InJournalCore
  • Math.Max

Внутрішній код реалізації, не самостійний скрипт.

public int InJournal(string pattern, int maxLinesOrIgnoreCase)

            => InJournalCore(pattern,

                maxLinesOrIgnoreCase == -1 ? -1 : Math.Max(0, maxLinesOrIgnoreCase),

                ignoreCase: maxLinesOrIgnoreCase == -1);

InjectionScript.Runtime.InjectionApiUO.IsHumanBody

Виконує показані виклики та оновлення стану.

Параметри: int graphic

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:3849.

private static bool IsHumanBody(int graphic)

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

Виклики:

—

Внутрішній код реалізації, не самостійний скрипт.

private static bool IsHumanBody(int graphic) => graphic == 0x0190 || graphic == 0x0191

            || graphic == 0x0192 || graphic == 0x0193 || graphic == 0x025D || graphic == 0x025E

            || graphic == 0x025F || graphic == 0x0260 || graphic == 0x029A || graphic == 0x029B

            || graphic == 0x02B6 || graphic == 0x02B7;

InjectionScript.Runtime.InjectionApiUO.IsTreeTile

Виконує показані виклики та оновлення стану.

Параметри: InjectionValue x, InjectionValue y

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:3436.

public int IsTreeTile(InjectionValue x, InjectionValue y)

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

Виклики:

  • bridge.IsTreeTile
  • NumberConversions.ToInt

Внутрішній код реалізації, не самостійний скрипт.

public int IsTreeTile(InjectionValue x, InjectionValue y) => bridge.IsTreeTile(NumberConversions.ToInt(x), NumberConversions.ToInt(y));

InjectionScript.Runtime.InjectionApiUO.JournalEntryTime

Виконує показані виклики та оновлення стану.

Параметри: int index

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:5630.

private int JournalEntryTime(int index)

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

Виклики:

  • JournalEntryTime
  • bridge.JournalTimestamp

Внутрішній код реалізації, не самостійний скрипт.

private int JournalEntryTime(int index)

            => JournalEntryTime(bridge.JournalTimestamp(index));

InjectionScript.Runtime.InjectionApiUO.Morph

Виконує показані виклики та оновлення стану.

Параметри: int type

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:6017.

public void Morph(int type)

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

Виклики:

  • bridge.Morph
  • Timer

Внутрішній код реалізації, не самостійний скрипт.

public void Morph(int type)

        {

            bridge.Morph(type);

            ticksAnim = Timer();

        }

InjectionScript.Runtime.InjectionApiUO.MoveItemChecked

Виконує показані виклики та оновлення стану.

Параметри: int id, int amount, int targetContainer, int x, int y, int z

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:4684.

private bool MoveItemChecked(int id, int amount, int targetContainer, int x, int y, int z)

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

Умови:

  • id == 0
  • targetContainer == 0 && state.DropCheckCoord != 0
  • Math.Max(Math.Abs(x - playerX), Math.Abs(y - playerY)) > 2

Виклики:

  • bridge.GetX
  • bridge.GetY
  • Math.Max
  • Math.Abs
  • SystemMessage
  • bridge.MoveItem

Внутрішній код реалізації, не самостійний скрипт.

private bool MoveItemChecked(int id, int amount, int targetContainer, int x, int y, int z)

        {

            if (id == 0)

                return false;

            if (targetContainer == 0 && state.DropCheckCoord != 0)

            {

                int playerX = bridge.GetX(bridge.Self);

                int playerY = bridge.GetY(bridge.Self);

                if (Math.Max(Math.Abs(x - playerX), Math.Abs(y - playerY)) > 2)

                {

                    SystemMessage("Drop cancelled: destination is more than 2 tiles away (DropCheckCoord is enabled).");

                    return false;

                }

            }



            return bridge.MoveItem(id, amount, targetContainer, x, y, z) != 0;

        }

InjectionScript.Runtime.InjectionApiUO.NormalizeApiName

Виконує показані виклики та оновлення стану.

Параметри: string name

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:5321.

private static string NormalizeApiName(string name)

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

Виклики:

  • (name ?? string.Empty).Trim

Внутрішній код реалізації, не самостійний скрипт.

private static string NormalizeApiName(string name)

        {

            return (name ?? string.Empty).Trim();

        }

InjectionScript.Runtime.InjectionApiUO.RDblClick

Виконує показані виклики та оновлення стану.

Параметри: int x, int y

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:5360.

public void RDblClick(int x, int y)

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

Виклики:

  • bridge.RDblClick

Внутрішній код реалізації, не самостійний скрипт.

public void RDblClick(int x, int y) => bridge.RDblClick(x, y);

InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases::AddText

Ці функції створюють реєстрацію API; вони не виконуються заново під час кожного виклику команди.

Параметри: getter, names

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:993.

void AddText(Func<string> getter, params string[] names)

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

Виклики: metadata.NativeSubrutineExists, metadata.Add, metadata.IntrinsicVariableExists, metadata.AddIntrinsicVariable.

Умови: !metadata.NativeSubrutineExists(name, 0); !metadata.IntrinsicVariableExists(name).

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

void AddText(Func<string> getter, params string[] names)

            {

                foreach (string shortName in names)

                {

                    string name = "UO." + shortName;

                    if (!metadata.NativeSubrutineExists(name, 0))

                        metadata.Add(new NativeSubrutineDefinition(name, getter));

                    if (!metadata.IntrinsicVariableExists(name))

                        metadata.AddIntrinsicVariable(new NativeSubrutineDefinition(name, getter));

                }

            }

InjectionScript.Runtime.InjectionApiUO.ResolveCompactDistance

Виконує показані виклики та оновлення стану.

Параметри: InjectionValue value

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:5211.

private int ResolveCompactDistance(InjectionValue value)

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

Виклики:

  • NumberConversions.ToInt
  • bridge.GetFindDistance
  • Math.Max

Внутрішній код реалізації, не самостійний скрипт.

private int ResolveCompactDistance(InjectionValue value)

        {

            int parsed = NumberConversions.ToInt(value);

            return parsed < 0 ? bridge.GetFindDistance() : Math.Max(0, parsed);

        }

InjectionScript.Runtime.InjectionApiUO.SetArm

Виконує показані виклики та оновлення стану.

Параметри: string name

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:5705.

public void SetArm(string name)

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

Виклики:

  • SetEquip

Внутрішній код реалізації, не самостійний скрипт.

public void SetArm(string name)

            => SetEquip(name, armSets, weaponLayers, "Arm set.");

InjectionScript.Runtime.InjectionApiUO.SetEvent

Виконує показані виклики та оновлення стану.

Параметри: InjectionValue name, InjectionValue stateValue, InjectionValue repeatOrHandler

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:6122.

public void SetEvent(InjectionValue name, InjectionValue stateValue, InjectionValue repeatOrHandler)

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

Умови:

  • !string.IsNullOrWhiteSpace(raw) && !NumberConversions.TryStr2Int(raw, out _)

Виклики:

  • repeatOrHandler.ToString
  • string.IsNullOrWhiteSpace
  • NumberConversions.TryStr2Int
  • SetEvent

Внутрішній код реалізації, не самостійний скрипт.

public void SetEvent(InjectionValue name, InjectionValue stateValue, InjectionValue repeatOrHandler)

        {

            string raw = repeatOrHandler.ToString() ?? string.Empty;

            if (!string.IsNullOrWhiteSpace(raw) && !NumberConversions.TryStr2Int(raw, out _))

                SetEvent(name, stateValue, InjectionValue.True, repeatOrHandler);

            else

                SetEvent(name, stateValue, repeatOrHandler, new InjectionValue(string.Empty));

        }

InjectionScript.Runtime.InjectionApiUO.SetJournalLine

Виконує показані виклики та оновлення стану.

Параметри: int index

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:5532.

public void SetJournalLine(int index)

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

Виклики:

  • bridge.SetJournalLine

Внутрішній код реалізації, не самостійний скрипт.

public void SetJournalLine(int index) => bridge.SetJournalLine(index);

InjectionScript.Runtime.InjectionApiUO.Terminate

Виконує показані виклики та оновлення стану.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:6030.

public void Terminate()

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

Виклики:

  • bridge.Terminate

Внутрішній код реалізації, не самостійний скрипт.

public void Terminate() => bridge.Terminate(string.Empty);

InjectionScript.Runtime.InjectionApiUO.Terminate

Виконує показані виклики та оновлення стану.

Параметри: string subrutineName

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:6029.

public void Terminate(string subrutineName)

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

Виклики:

  • bridge.Terminate

Внутрішній код реалізації, не самостійний скрипт.

public void Terminate(string subrutineName) => bridge.Terminate(subrutineName);

InjectionScript.Runtime.InjectionApiUO.TextOpen

Виконує показані виклики та оновлення стану.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:5433.

public void TextOpen()

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

Виклики:

  • bridge.TextOpen

Внутрішній код реалізації, не самостійний скрипт.

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

InjectionScript.Runtime.InjectionApiUO.Track

Виконує показані виклики та оновлення стану.

Параметри: InjectionValue flag

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:6107.

public void Track(InjectionValue flag)

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

Виклики:

  • Track
  • NumberConversions.ToInt
  • GetX
  • GetY

Внутрішній код реалізації, не самостійний скрипт.

public void Track(InjectionValue flag) => Track(NumberConversions.ToInt(flag), GetX(), GetY());

InjectionScript.Runtime.InjectionApiUO.TradeCheck

Виконує показані виклики та оновлення стану.

Параметри: InjectionValue windowIndex, InjectionValue checkbox, InjectionValue stateValue

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:3424.

public int TradeCheck(InjectionValue windowIndex, InjectionValue checkbox, InjectionValue stateValue)

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

Виклики:

  • bridge.TradeCheck
  • NumberConversions.ToInt

Внутрішній код реалізації, не самостійний скрипт.

public int TradeCheck(InjectionValue windowIndex, InjectionValue checkbox, InjectionValue stateValue)

            => bridge.TradeCheck(NumberConversions.ToInt(windowIndex), NumberConversions.ToInt(checkbox), NumberConversions.ToInt(stateValue), true);

InjectionScript.Runtime.InjectionApiUO.Unequip

Виконує показані виклики та оновлення стану.

Параметри: int[] supportedLayers, string successMessage

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:5817.

private int Unequip(int[] supportedLayers, string successMessage)

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

Умови:

  • bridge.ObjAtLayer(layer) != 0
  • state.DressSpeed > 0

Виклики:

  • bridge.ObjAtLayer
  • bridge.Unequip
  • injectionApi.Wait
  • SystemMessage

Внутрішній код реалізації, не самостійний скрипт.

private int Unequip(int[] supportedLayers, string successMessage)

        {

            bool success = true;

            foreach (var layer in supportedLayers)

            {

                if (bridge.ObjAtLayer(layer) != 0)

                {

                    success &= bridge.Unequip(layer) != 0;

                    if (state.DressSpeed > 0)

                        injectionApi.Wait(state.DressSpeed);

                }

            }



            SystemMessage(success ? successMessage : "Some equipment could not be removed.");

            return success ? 1 : 0;

        }

InjectionScript.Runtime.InjectionApiUO.UnsetReceivingContainer

Виконує показані виклики та оновлення стану.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:4486.

public void UnsetReceivingContainer()

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

Виклики:

  • bridge.UnsetReceivingContainer

Внутрішній код реалізації, не самостійний скрипт.

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

InjectionScript.Runtime.InjectionApiUO.UseObject

Виконує показані виклики та оновлення стану.

Параметри: string id

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:4036.

public void UseObject(string id)

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

Виклики:

  • UseObject
  • GetObject

Внутрішній код реалізації, не самостійний скрипт.

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

InjectionScript.Runtime.InjectionApiUO.UseType

Виконує показані виклики та оновлення стану.

Параметри: int type, int color

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:4093.

public int UseType(int type, int color)

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

Виклики:

  • CompactUseType

Внутрішній код реалізації, не самостійний скрипт.

public int UseType(int type, int color) => CompactUseType(new[]

        {

            new InjectionValue(type),

            new InjectionValue(color)

        });

InjectionScript.Runtime.InjectionApiUO.WaitingForJournalText

Виконує показані виклики та оновлення стану.

Параметри: int startTime, int maxDelay, string text

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:5535.

public void WaitingForJournalText(int startTime, int maxDelay, string text)

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

Виклики:

  • WaitingForJournalText

Внутрішній код реалізації, не самостійний скрипт.

public void WaitingForJournalText(int startTime, int maxDelay, string text)

            => WaitingForJournalText(startTime, maxDelay, text, 0, 0, InjectionValue.Zero);

InjectionScript.Runtime.InjectionApiUO.WaitingForMenu

Виконує показані виклики та оновлення стану.

Параметри: InjectionValue delayValue, InjectionValue menuCountValue, InjectionValue blockMenuValue, InjectionValue menuNameValue, InjectionValue skillOrSerial

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:3443.

public int WaitingForMenu(InjectionValue delayValue, InjectionValue menuCountValue, InjectionValue blockMenuValue, InjectionValue menuNameValue, InjectionValue skillOrSerial)

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

Умови:

  • identity.Length == 0
  • !identity.Equals(previousIdentity, StringComparison.Ordinal)
  • observedMenuCount >= requiredMenuCount && nameMatches
  • blockMenu

Виклики:

  • Math.Max
  • NumberConversions.ToInt
  • menuNameValue.ToString
  • timeSource.Now.AddMilliseconds
  • TriggerWaitAction
  • bridge.GetLastMenuIdentity
  • identity.Equals
  • bridge.GetLastMenuCaption
  • caption.Equals
  • bridge.CloseMenu
  • bridge.Wait
  • Math.Min

Внутрішній код реалізації, не самостійний скрипт.

public int WaitingForMenu(InjectionValue delayValue, InjectionValue menuCountValue, InjectionValue blockMenuValue, InjectionValue menuNameValue, InjectionValue skillOrSerial)

        {

            int delay = Math.Max(0, NumberConversions.ToInt(delayValue));

            int requiredMenuCount = Math.Max(1, NumberConversions.ToInt(menuCountValue));

            bool blockMenu = NumberConversions.ToInt(blockMenuValue) != 0;

            string expectedName = menuNameValue.ToString() ?? string.Empty;

            DateTime deadline = timeSource.Now.AddMilliseconds(delay);

            string previousIdentity = string.Empty;

            int observedMenuCount = 0;



            TriggerWaitAction(skillOrSerial);



            do

            {

                string identity = bridge.GetLastMenuIdentity() ?? string.Empty;

                if (identity.Length == 0)

                {

                    // Reset between server menus so an identical menu opened again

                    // still counts as a new appearance.

                    previousIdentity = string.Empty;

                }

                else if (!identity.Equals(previousIdentity, StringComparison.Ordinal))

                {

                    previousIdentity = identity;

                    observedMenuCount++;

                    string caption = bridge.GetLastMenuCaption() ?? string.Empty;

                    bool nameMatches = expectedName.Length == 0

                        || caption.Equals(expectedName, StringComparison.Ordinal);

                    if (observedMenuCount >= requiredMenuCount && nameMatches)

                    {

                        if (blockMenu)

                            bridge.CloseMenu();

                        return 1;

                    }

                }



                if (timeSource.Now >= deadline)

                    break;

                bridge.Wait(Math.Min(25, Math.Max(1, delay)));

            }

            while (true);



            return 0;

        }

InjectionScript.Runtime.InjectionApiUO.WaitingMenu

Виконує показані виклики та оновлення стану.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:3438.

public int WaitingMenu()

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

Виклики:

  • bridge.WaitingMenu

Внутрішній код реалізації, не самостійний скрипт.

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

InjectionScript.Runtime.InjectionApiUO.RegisterCompactSearchApi [FindMan]

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:4667.

values

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

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

Виклики: CompactFindMan.

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

values => new InjectionValue(CompactFindMan(values))

InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases [GetFollowersMax]

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1049.

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

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

() => bridge.FollowersMax

InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases [GetIntelligence]

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1031.

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

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

() => bridge.Intelligence

InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases [GetStamina]

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1028.

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

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

() => bridge.Stamina

InjectionScript.Runtime.InjectionApiUO.Register [SkillVal]

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:693.

values

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

Результат: new InjectionValue(SkillVal(values[0].ToString(), NumberConversions.ToInt(values[1]))).

Виклики: SkillVal, values[0].ToString, NumberConversions.ToInt.

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

values => new InjectionValue(SkillVal(values[0].ToString(), NumberConversions.ToInt(values[1])))

InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases [Stamina]

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1028.

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

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

() => bridge.Stamina

InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases [Strength]

Виклик виконує збережений delegate обробника. Метод реєстрації створює цей delegate під час побудови API.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs:1030.

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

Виклики:

Внутрішній код реалізації, не самостійний скрипт.

() => bridge.Strength

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.InjectionRuntime.CallNativeSubrutine

Виконує показані виклики та оновлення стану.

Параметри: string name, params InjectionValue[] args

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/NativeConsoleDispatch.cs:358.

private void CallNativeSubrutine(string name, params InjectionValue[] args)

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

Умови:

  • !Metadata.TryGetNativeSubrutine("UO." + name, args, out var nativeSubrutine)
  • result.Kind != InjectionValueKind.Unit && name.IndexOf("Info", StringComparison.OrdinalIgnoreCase) < 0

Виклики:

  • Checkpoint
  • Metadata.TryGetNativeSubrutine
  • nativeSubrutine.Call
  • name.IndexOf
  • bridge.Print
  • result.ToString

Внутрішній код реалізації, не самостійний скрипт.

private void CallNativeSubrutine(string name, params InjectionValue[] args)

        {

            Checkpoint();

            if (!Metadata.TryGetNativeSubrutine("UO." + name, args, out var nativeSubrutine))

                throw new NativeSubrutineException($"Native UO command '{name}' with {args.Length} argument(s) was not found.");

            InjectionValue result = nativeSubrutine.Call(args);

            if (result.Kind != InjectionValueKind.Unit && name.IndexOf("Info", StringComparison.OrdinalIgnoreCase) < 0)

                bridge.Print(result.ToString());

            Checkpoint();

        }

InjectionScript.Runtime.InjectionRuntime.Exec

Виконує показані виклики та оновлення стану.

Параметри: string parameters

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/NativeConsoleDispatch.cs:10.

public void Exec(string parameters)

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

Умови:

  • parts.Length == 0
  • command.StartsWith("UO.", StringComparison.OrdinalIgnoreCase)
  • command.Equals("exec", StringComparison.OrdinalIgnoreCase)
  • parts.Length != 2 || string.IsNullOrWhiteSpace(parts[1].Text)

Виклики:

  • Tokenize(parameters).ToArray

  • Tokenize

  • command.StartsWith

  • command.Substring

  • command.Equals

  • string.IsNullOrWhiteSpace

  • bridge.Exec

  • parts.Skip(1).ToArray

  • parts.Skip

  • NormalizeCompoundConsoleAlias

  • arguments.Select(token => token.Text).ToArray

  • arguments.Select

  • TryHandleLegacyConsoleCommand

  • NormalizeConsoleAlias

  • IsRemainderTextCommand

  • string.Join

  • rawArguments.Skip

  • `arguments.Select(token => token.Quoted

              ? new InjectionValue(token.Text) : ToConsoleValue(token.Text)).ToArray`
    
  • ToConsoleValue

  • CallNativeSubrutine

Внутрішній код реалізації, не самостійний скрипт.

public void Exec(string parameters)

        {

            ConsoleToken[] parts = Tokenize(parameters).ToArray();

            if (parts.Length == 0)

                return;



            string command = parts[0].Text;

            if (command.StartsWith("UO.", StringComparison.OrdinalIgnoreCase)) command = command.Substring(3);

            if (command.Equals("exec", StringComparison.OrdinalIgnoreCase))

            {

                if (parts.Length != 2 || string.IsNullOrWhiteSpace(parts[1].Text))

                    throw new NativeSubrutineException("Usage: exec script_function");

                bridge.Exec(parts[1].Text);

                return;

            }



            ConsoleToken[] arguments = parts.Skip(1).ToArray();

            (command, arguments) = NormalizeCompoundConsoleAlias(command, arguments);

            string[] rawArguments = arguments.Select(token => token.Text).ToArray();

            if (TryHandleLegacyConsoleCommand(command, rawArguments))

                return;



            command = NormalizeConsoleAlias(command);

            if (IsRemainderTextCommand(command) && rawArguments.Length > 0)

                arguments = new[] { new ConsoleToken(string.Join(" ", rawArguments), true) };

            else if (command.Equals("ColorPrint", StringComparison.OrdinalIgnoreCase) && rawArguments.Length > 1)

                arguments = new[] { arguments[0], new ConsoleToken(string.Join(" ", rawArguments.Skip(1)), true) };

            else if (command.Equals("CharPrint", StringComparison.OrdinalIgnoreCase) && rawArguments.Length > 2)

                arguments = new[] { arguments[0], arguments[1], new ConsoleToken(string.Join(" ", rawArguments.Skip(2)), true) };

            else if (command.Equals("SetGlobal", StringComparison.OrdinalIgnoreCase) && rawArguments.Length > 2)

                // Chat parameters are space-separated.  Preserve a human-readable

                // global value after its key without forcing the player to quote it.

                arguments = new[] { arguments[0], new ConsoleToken(string.Join(" ", rawArguments.Skip(1)), true) };



            InjectionValue[] args = arguments.Select(token => token.Quoted

                ? new InjectionValue(token.Text) : ToConsoleValue(token.Text)).ToArray();

            CallNativeSubrutine(command, args);

        }

InjectionScript.Runtime.InjectionValue.ToString

Виконує показані виклики та оновлення стану.

Параметри: Немає параметрів.

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/InjectionValue.cs:405.

public override string ToString()

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

Виклики:

  • Integer.ToString
  • Decimal.ToString
  • FormatArray

Внутрішній код реалізації, не самостійний скрипт.

public override string ToString()

        {

            switch (Kind)

            {

                case InjectionValueKind.Unit:

                    return "<unit>";

                case InjectionValueKind.Integer:

                    return Integer.ToString(System.Globalization.CultureInfo.InvariantCulture);

                case InjectionValueKind.String:

                    return String;

                case InjectionValueKind.Decimal:

                    return Decimal.ToString(System.Globalization.CultureInfo.InvariantCulture);

                case InjectionValueKind.Array:

                    return FormatArray(Array, new HashSet<InjectionValue[]>(), 0);

                case InjectionValueKind.Object:

                    return Object?.Name ?? string.Empty;

                default:

                    throw new InvalidOperationException($"Unknown InjectionValue kind {Kind}.");

            }

        }

InjectionScript.Runtime.NumberConversions.ToHex

Виконує показані виклики та оновлення стану.

Параметри: short id

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/NumberConversions.cs:80.

public static string ToHex(short id)

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

Виклики:

—

Внутрішній код реалізації, не самостійний скрипт.

public static string ToHex(short id) => $"0x{id:X4}";

InjectionScript.Runtime.ObjectTypes.MemoryStreamObject.ReplaceBytes

Виконує показані виклики та оновлення стану.

Параметри: byte[] bytes

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/ObjectTypes/MemoryStreamObject.cs:26.

internal void ReplaceBytes(byte[] bytes)

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

Умови:

  • bytes == null

Виклики:

  • stream.SetLength
  • Array.Empty<byte>
  • stream.Write

Внутрішній код реалізації, не самостійний скрипт.

internal void ReplaceBytes(byte[] bytes)
        {
            stream.SetLength(0);
            stream.Position = 0;
            if (bytes == null)
                bytes = Array.Empty<byte>();
            stream.Write(bytes, 0, bytes.Length);
            stream.Position = 0;
        }

InjectionScript.Runtime.State.Globals.GetGlobal

Виконує показані виклики та оновлення стану.

Параметри: string name

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/State/Globals.cs:45.

public string GetGlobal(string name)

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

Виклики:

  • GetGlobalShared

Внутрішній код реалізації, не самостійний скрипт.

public string GetGlobal(string name) => GetGlobalShared(name);

InjectionScript.Runtime.State.NamedIgnoreLists.RequireName

Виконує показані виклики та оновлення стану.

Параметри: string name

Джерело: Project_Full/external/InjectionScript/src/InjectionScript/Runtime/State/NamedIgnoreLists.cs:115.

private static string RequireName(string name)

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

Умови:

  • string.IsNullOrWhiteSpace(name)

Виклики:

  • string.IsNullOrWhiteSpace
  • nameof
  • name.Trim

Внутрішній код реалізації, не самостійний скрипт.

private static string RequireName(string name)
        {
            if (string.IsNullOrWhiteSpace(name)) throw new ArgumentException("Ignore list name must not be empty.", nameof(name));
            return name.Trim();
        }

ClassicUO.Game.Managers.NativeMountController.Request

Виконує показані виклики та оновлення стану.

Параметри: World world, uint target, bool mount, Action<uint> sendUse, long now

Джерело: Project_Full/src/ClassicUO.Client/Game/Managers/NativeMountController.cs:25.

internal bool Request(World world, uint target, bool mount, Action<uint> sendUse, long now)

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

Умови:

  • player == null || player.IsDestroyed || player.IsDead || !world.InGame
  • _pendingPlayer != null
  • !ReferenceEquals(_pendingPlayer, player) || layerSerial != _pendingLayer || now >= _pendingUntil
  • mount

Виклики:

  • Clear
  • player.FindItemByLayer
  • ReferenceEquals
  • world.Get
  • Math.Max
  • Math.Abs
  • IsCarriedBy
  • sendUse

Повний код зберігається у файлі джерела; нижче наведено точні фрагменти.

Внутрішній код реалізації, не самостійний скрипт.

internal bool Request(World world, uint target, bool mount, Action<uint> sendUse, long now)
        {
            PlayerMobile player = world?.Player;
            if (player == null || player.IsDestroyed || player.IsDead || !world.InGame)
            {
                Clear();
                return false;
            }
// …
            if (_pendingPlayer != null)
// …
                if (!ReferenceEquals(_pendingPlayer, player) || layerSerial != _pendingLayer
// …
                    return false;
// …
            if (mount)
// …
                if (layerSerial != 0 || target == 0 || target == player.Serial)
                    return false;
// …
                if (entity == null || entity.IsDestroyed)
                    return false;
                if (entity is Mobile mobile)
// …
                    if (mobile.IsDead || Math.Max(Math.Abs((int)mobile.X - player.X),
// …
                        return false;
// …
                else if (entity is Item item)
// …
                    if (!IsCarriedBy(world, item, player.Serial))
                        return false;
// …
                    return false;
// …
                if (layerSerial == 0 || layer.Graphic == 0x3E96)
                    return false;
// …
            }

            sendUse(target);
            _pendingPlayer = player;
            _pendingLayer = layerSerial;
            _pendingUntil = now + ConfirmationTimeoutMilliseconds;
            return true;
        }
⚠️ **GitHub.com Fallback** ⚠️