From Stealth Client

Jump to: navigation, search

Функции

Abs

function Abs(X : Integer): Cardinal

Возвращает модуль числа X.

Пример 1:

AddToSystemJournal(IntToStr(Abs(-10)));
AddToSystemJournal(IntToStr(Abs(10)));
AddToSystemJournal(IntToStr(Abs(0)));

Результат выполнения:

10
10
0

AddChatUserIgnore

procedure AddChatUserIgnore(Str : String)

Добавляет обьект с ником (или названием) Str в список игнорируемых, после чего любое сообщение от его имени не будет добавлено в журнал.

Имя "System" нельзя поместить в игнор.

AddFigure

function AddFigure(const figure : TMapFigure) : Cardinal;

Принимает аргумент типа TMapFigure, добавляет его на карту, и возвращает номер добавленной фигуры.

AddGumpIgnoreByID

procedure AddGumpIgnoreByID(ID : Cardinal);

после добавления в игнор-лист, все входящие гампы, имеющие GumpID равный ID - игнорируются и не добавляются в список гампов.

Добавление в игнор-лист не затрагивает уже полученные гампы в списке гампов стелса.

Добавление в игнор-лист не затрагивает отображение гампов в подключенном клиенте.

AddGumpIgnoreBySerial

procedure AddGumpIgnoreBySerial(Serial : Cardinal);

после добавления в игнор-лист, все входящие гампы, имеющие GumpSerial равный Serial - игнорируются и не добавляются в список гампов.

Добавление в игнор-лист не затрагивает уже полученные гампы в списке гампов стелса.

Добавление в игнор-лист не затрагивает отображение гампов в подключенном клиенте.

AddJournalIgnore

procedure AddJournalIgnore(Str : String)

Добавляет подстроку Str в список игнорируемых, после чего любое сообщение, содержащее эту подстроку, не будет добавлено в журнал.

Пример: фльтр на сообщение от каста при прокачке, во избежание флуда в журнале:

AddJournalIgnore('In Nox');

AddToJournal

procedure AddToJournal(Text : String);

добавление строки Text в журнал стелса того чара, от имени которого выполняется скрипт.


AddToSystemJournal

procedure AddToSystemJournal(Text : String)

Добавить сообщение в системный журнал программы. (находится в нижней части окна и называется System Journal)

Пример:

AddToSystemJournal('Hello');

Alarm

procedure Alarm

При срабатывании иконка стелса в трее начинает мигать красным цветом. После разворачивания стелса из трея - "тревога" сбрасывается.


Armor

function Armor() : SmallInt

Возвращает параметр чара - кол-во "единиц" брони (Armor).

В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример:

  AddToSystemJournal('Armor rate: ' + IntToStr(Armor))


ArmsLayer

function ArmsLayer() : Byte

Возвращает номер слоя 0x13 - Руки (локти) (Arms)

Пример 1:

if ObjAtLayer(ArmsLayer) > 0 then 
  AddToSystemJournal('Arms ID: '+IntToStr(ObjAtLayer(ArmsLayer)));

Пример 2:

{Если на слое чтото есть, то снимаем}
if ObjAtLayer(ArmsLayer) <> 0 then
  begin
    unequip(ArmsLayer);
    wait(1000);
  end;

Attack

procedure Attack(ObjdID : Cardinal)

Кинуть атаку на обьект ObjdID.

В случае если вы не в War режиме, то клиент сам установит его перед атакой.

NB: Кидание атаки не гарантирует подтверждение ее сервером, поэтому рекомендуется после кидания атаки через 100-200 мс проверить, не сброшена ли атака (путем вызова Doc:RU/Api/WarTargetID)

Пример:

if (WarTargetID <> Enemy) then
  attack(Enemy);

AutoBuy

procedure AutoBuy(ItemType : Word; ItemColor : Word; Quantity : Word)

AutoBuyEx

procedure AutoBuyEx(ItemType : Word; ItemColor : Word; Quantity : Word; Price : Cardinal; Name : String)


ItemType может быть $FFFF для любого типа, либо точное число.

ItemColor тоже

Price тоже

Name - пустая строка для любого , либо точное название (с учетом регистра!)

Quantity - 0 или -1, либо точное нужное кол-во.

AutoMenu

procedure AutoMenu(UP, UC : String)

установить многоразовую ловушку на меню. Работает так же как Doc:RU/Api/WaitMenu, с единственным отличием, WaitMenu отрабатывает только раз, и ловушка снимается, AutoMenu - работает постоянно.

AutoSell

procedure AutoSell(ItemType : Word; ItemColor : Word; Quantity : Word)

BM

function BM : Word;

Returns reagent type: Blood Moss

BMCount

function BMCount : Word;

Returns Blood Moss count in backpack.

BMSearch

function BMSearch(StartPos: Integer; const S, P: String): Integer


Функция возвращает первое вхождение подстроки в строку работает быстро.

Например: BMSearch(1, 'dsade', 'de') в данном примере ф-ия возвратит число 4

1 - это позиция с которой ищем подстроку в строке

BP

function BP : Word;

Returns reagent type: Black Pearl

BPCount

function BPCount : Word;

Returns Black Pearl count in backpack.

Backpack

function Backpack() : Cardinal

Возвращает параметр чара - ID рюкзака (Backpack ID).

В случае, если отсутствует соединение с UO сервером - вернет 0.

Часто используется, например, в поиске, указателем получателя для перетаскивания вещей, и прочее.

Пример 1:

if Count(runes) < 10 then
begin
   MoveItem(runestack,10-Count(runes),Backpack,0,0,0)
end;

Пример 2:

  FindType($EED,Backpack)


BankLayer

function BankLayer() : Byte

Возвращает номер слоя 0x1C - Свой банковский контейнер (PC Bank Box).

По контейнеру этого слоя:

  • Доступна информация по этому слою только для своего чара.
  • Не снимается.
  • Не открывается через Doc:RU/Api/UseObject и подобные функции.

Пример 1:

if ObjAtLayer(BankLayer) > 0 then 
  AddToSystemJournal('Bank Box ID: '+IntToStr(ObjAtLayer(BankLayer)));


BeardLayer

function BeardLayer() : Byte

Возвращает номер слоя 0x10 - Борода (Facial Hair Beard).

Этот слой средствами клиента напрямую снять нельзя!

Пример:

if ObjAtLayer(BeardLayer) > 0 then 
  AddToSystemJournal('Beard ID: '+IntToStr(ObjAtLayer(BeardLayer)));

Beep

procedure Beep

Пищит спикером.


Bow

function Bow

Bow (поклониться) - это жест, который сделает ваш персонаж

Пример:

  Bow;


BpackLayer

function BpackLayer() : Byte

Возвращает номер слоя 0x15 - Сумка персонажа (Backpack).

Результат выполнения ObjAtLayer(BpackLayer) должен быть аналогичен Doc:RU/Api/Backpack


Пример:

if ObjAtLayer(BpackLayer) > 0 then 
  AddToSystemJournal('Backpack ID: '+IntToStr(ObjAtLayer(BpackLayer)));


BraceLayer

function BraceLayer() : Byte

Возвращает номер слоя 0x0E - Браслет (Bracelet).

Пример 1:

if ObjAtLayer(BraceLayer) > 0 then 
  AddToSystemJournal('Bracelet ID: '+IntToStr(ObjAtLayer(BraceLayer)));

Пример 2:

{Если на слое чтото есть, то снимаем}
if ObjAtLayer(BraceLayer) <> 0 then
  begin
    unequip(BraceLayer);
    wait(1000);
  end;


CalcDir

function CalcDir(Xfrom, Yfrom, Xto, Yto: Integer): Byte

Возвращает направление для шага из точки (Xfrom, Yfrom) в точку (Xto, Yto). Если Xfrom=Xto и Yfrom=Yto функция вернет 100.

Пример 1:

Step(CalcDir(GetX(Self), GetY(Self), GetX(Self)+1, GetY(Self)), True);

Пример 2:

Повернутся к объекту.

a := CalcDir(GetX(Self), GetY(Self), GetX(Object), GetY(Object));
if a <> GetDirection(Self) then
Step(a,false);

CancelMenu

procedure CancelMenu

отмена всех установленных ловушек на меню

CancelTarget

procedure CancelTarget

Сбрасывает таргет.

Пример:

if targetpresent then
   begin
   canceltarget;
   end;

CancelTrade

procedure CancelTrade(TradeNum : Byte)

CancelWaitTarget

procedure CancelWaitTarget

Отменяеться ловушка на прицел. Не путайте с CancelTarget.


See also: Doc:RU/Api/CancelTarget

Cast

procedure Cast(Spell : String)

кроме обычных спеллов умеет кастовать и заклинания из мистик-буки:

  • nether bolt
  • healing stone
  • pure magic
  • enchant
  • sleep
  • eagle strike
  • animated weapon
  • stone form
  • spell trigger
  • mass sleep
  • cleansing winds
  • bombard
  • spell plague
  • hail storm
  • nether cyclone
  • rising colossus

Пример:

Cast('Cure');

CastToObject

function CastToObject( SpellName : String; ObjectID : Cardinal ): Boolean

Кинуть заклинание с названием SpellName на объект ObjectID.

См Doc:RU/Api/Cast

ChangeProfile

function ChangeProfile(ProfileName : String) : Integer

Эта функция позволяет изменить текущий профиль, те выбрать другого персонажа. Для ее успешной работы необходимо выполнение следующих условий:

  • Текущий чар должен быть отключен
  • У него должен выполнятся только один скрипт
  • Указанный профиль должен существовать. Важно - название профиля чувствительно к регистру.

В случае успешной смены профиля, функция вернет 0, иначе вернет код ошибки:

  • -1 - Внутренняя ошибка
  • -2 - Чар подключен или находится в процессе подключения
  • -3 - Выполняется больше одного скрипта
  • -4 - Указанного профиля не существует


CharName

function CharName() : String

Возвращает параметр чара - имя (Name).

В случае, если отсутствует соединение с UO сервером - вернет пустую строку ().

Пример 1:

if (CharName = 'MyChar') then
begin
  ''Do something
end;

Пример 2:

AddToSystemJournal('Имя чара: ' + CharName);


CharTitle

function CharTitle : string;

Возвращает параметр чара - Титул.

Пример:

  AddToSystemJournal(CharTitle);

CheckLag

function CheckLag(timeoutMS : Integer) : Boolean;

CheckLagBegin

procedure CheckLagBegin;

CheckLagEnd

function CheckLagEnd : Boolean;


ClearBadLocationList

procedure ClearBadLocationList

Очищает список непроходимых точек, сформированный:

 - в результате работы функции SetBadLocation 
 - если 3 попытки шагнуть на одну и ту же точку - неудачны.


ClearBadObjectList

procedure ClearBadObjectList

Очищает список непроходимых объектов, сформированный:

 - в результате работы функции SetBadObject 
 - если 3 попытки шагнуть на одну и ту же точку - неудачны.

ClearChatUserIgnore

procedure ClearChatUserIgnore(Str : String)

ClearContextMenu

procedure ClearContextMenu

Очищает содержимое контекстного меню. После вызова этой процедуры Doc:RU/Api/GetContextMenu будет возвращать пустой TStringList, пока не появится новое меню.

RemoveFigure

procedure ClearFigures;

Удаляет все добавленные ранее фигуры.

ClearGumpsIgnore

procedure ClearGumpsIgnore;

ClearJournal

procedure ClearJournal

очистить журнал

ClearJournalIgnore

procedure ClearJournalIgnore

ClearShopList

procedure ClearShopList

ClickOnObject

procedure ClickOnObject(ObjectID: Cardinal)

Одиночный клик на объект.

Пример:

ClickOnObject(FindType($0DE1,Ground));

ClientPrint

procedure ClientPrint(Text : String)

Вывод текст Text в клиент Ultima Online. Не передавая его серверу.

Пример:

ClientPrint('Script loaded :)');

ClientPrintEx

procedure ClientPrintEx(SenderID: Cardinal; Color: Word; Font: Word; Text: String);

Вывод текст Text в клиент Ultima Online. Не передавая его серверу. Более функциональная альтернатива ClientPrint

ClientRequestObjectTarget

Используется перед вызовом Doc:RU/Api/ClientTargetResponse.

def ClientRequestObjectTarget() -> None

Просит целевой курсор.

See also: Doc:RU/Api/ClientTargetResponsePresent и Doc:RU/Api/ClientTargetResponse

ClientRequestTileTarget

def ClientRequestTileTarget() -> None


See also: Doc:RU/Api/ClientRequestObjectTarget, Doc:RU/Api/ClientTargetResponsePresent and Doc:RU/Api/ClientTargetResponse

ClientTargetResponse

Используется после вызова Doc:RU/Api/ClientRequestObjectTarget.

def ClientTargetResponse() -> Dictionary

Возвращает словарь, содержащий ключи ['Tile', 'X', 'Z', 'Y', 'ID'].

See also: Doc:RU/Api/ClientTargetResponsePresent

ClientTargetResponsePresent

def ClientTargetResponsePresent() -> Boolean

Возвращает False в то время как курсор находится мишенью курсор.

See also: Doc:RU/Api/ClientTargetResponse


CloakLayer

function CloakLayer() : Byte

Возвращает номер слоя 0x14 - Плащ (Cloak).

Пример 1:

if ObjAtLayer(CloakLayer) > 0 then 
  AddToSystemJournal('Cloak ID: '+IntToStr(ObjAtLayer(CloakLayer)));

Пример 2:

{Если на слое чтото есть, то снимаем}
if ObjAtLayer(CloakLayer) <> 0 then
  begin
    unequip(CloakLayer);
    wait(1000);
  end;

CloseClientGump

def CloseClientGump( ID : Integer) -> None

CloseMenu

def CloseMenu() -> None

CloseSimpleGump

procedure CloseSimpleGump(GumpIndex : Word)

Закрывает "простой" гамп с индексом GumpIndex

Закрывает спец. путем, без нажатия каких-либо кнопок на них - как это происходит в клиенте при нажатии правой кнопки мыши.

Пример:

If IsGump then
  if IsGumpCanBeClosed(GetGumpsCount-1) then
    CloseSimpleGump(GetGumpsCount-1);


ColdResist

function ColdResist() : Word

Возвращает параметр чара - сопротивление холоду (Cold Resist).

Работает только начиная с версии клиента Samurie Empire + на сервере должен быть включен режим расширенных статов,отсылаемых клиенту, иначе вернет 0.


В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример 1:

if ColdResist> 0 then
begin
  ''do something, like go home, or drop, etc.
end;

Пример 2:

  AddToSystemJournal('Текущий Cold Resist: ' + IntToStr(ColdResist))

ConfirmTrade

procedure ConfirmTrade(TradeNum : Byte)


Connect

procedure Connect

Подключает текущего чара к серверу

Пример 1: {{page>:examples:connect&nofooter}}

См. также


Connected

function Connected : boolean

Статус соединения с UO сервером: True - чар подключен, False - не подключен

Пример 1: {{page>:examples:connect&nofooter}}

См. также


ConnectedTime

function ConnectedTime() : TDateTime

Возвращает параметр чара - Время последнего подключения к серверу (ConnectedTime).

возвращает время последнего удачного коннекта к серверу.

В случае, если отсутствует соединение с UO сервером - вернет '30.12.1899' без времени. в формате даты это есть эквивалент нуля.

Пример:

  AddToSystemJournal('Последнее удачное подключение было в (Last Connect Time): ' + DateTimeToStr(ConnectedTime))

ConsoleEntryReply

procedure ConsoleEntryReply(Text : String)

ConsoleEntryUnicodeReply

procedure ConsoleEntryUnicodeReply(Text : String)

Функция используется для вывода текста в консоль Клиента. Например это может быть использовано для переименования Bulk Order Book (Python):

SetContextMenuHook(book_to_rename_ID, 0)  # ставим ловушку на автовыбор "Name Book"
RequestContextMenu(book_to_rename_ID)     # вызываем контекстное меню книги
Wait(1500)                                # немного ждем на всякий случай
ConsoleEntryUnicodeReply(("New book name"+"\r")) # вводим новое название книги

Note! Не забываем "\r"- символ перевода строки в конце введенного текста.

ConvertIntegerToFlags

function ConvertIntegerToFlags(group : byte; I : LongWord) : TTileDataFlagSet

Перевод числового значения флагов в набор флагов


Count

function Count(ObjType : Word) : Word

Ищем вещи в бекпаке по типу и в результате возвращаем FindFullQuantity.


CountEx

function CountEx(ObjType,Color : Word; Container : Cardinal) : Word

Ищем вещи в контейнере (Container) по типу (ObjType) и цвету (Color). В результате возвращаем FindFullQuantity найденных вещей.


CountGround

function CountGround(ObjType : Word) : Word

Ищем вещи на земле по типу и в результате возвращаем FindFullQuantity.

PauseCurrentScript

function CurrentLine : Integer;

Возвращает номер текущей строки в скрипте.

Пример:

 if something_wrong_happens then
   AddToSystemJournal('Problem in line ' + CurrentLine.ToString);

CurrentScriptPath

function CurrentScriptPath: String;

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

Пример:

AddToSystemJournal(CurrentScriptPath());

Результат:

22:50:48:546 [CharName]: V:\Stealth Client\Scripts\

DateTimeToStr

function DateTimeToStr(D: TDateTime): String


Dead

function Dead() : Boolean

Возвращает параметр чара - Мертвый (Dead).

Если True - мертв, если False - жив


В случае, если отсутствует соединение с UO сервером - вернет False.

Пример 1:

if Dead then
begin
  ''do something, like resurrect or something other
end;

Пример 2:

if (not Dead) then
  AddToSystemJournal('Чар жив')
else
  AddToSystemJournal('Чар мертв');


Dex

function Dex() : Integer

Возвращает параметр игрока - ловкость (DEX).

В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример 1:

if (Dex > 0) then
begin
  ''Do something
end;

Пример 2:

AddToSystemJournal('Ловкость чара: ' + IntToStr(Dex));


Disarm

function Disarm(): Boolean

{Разоружаем правую и левую руку}

Перебирает слои обоих рук, делая Doc:RU/Api/unequip обьекту из этих слоев.

В случае, если отсутствует соединение с UO сервером, либо перемещение обьекта из слоя в пак не удалось - вернет False.

Пример:

if ObjAtLayer(RhandLayer) <> 0 then
  begin
    disarm;
    wait(1000);
  end;


Disconnect

procedure Disconnect

Отключает текущего чара от сервера

Пример 1: {{page>:examples:connect&nofooter}}

См. также


DisconnectedTime

function DisconnectedTime() : TDateTime

Возвращает параметр чара - Время последнего отключения от сервера (DisconnectedTime).

возвращает время последнего отключения от сервера (независимо от причины).

В случае, если такового действия не происходило - вернет вернет '30.12.1899' без времени. в формате даты это есть эквивалент нуля.

Пример:

  AddToSystemJournal('Последнее отключение было в (Last Disconnect Time): ' + DateTimeToStr(DisconnectedTime))


Dist

function Dist(X1, Y1, X2, Y2: Word): Word

Возвращает расстояние между точками (X1, Y1) и (X2, Y2).

Пример 1:

if (Dist(GetX(Self), GetY(Self), GetX(creatureID), GetY(creatureID)) > 3 then
  AddToSystemJournal(GetName(creatureID) + ' too far');
end;

DragItem

function DragItem(ItemID : Cardinal; Count : Integer) : Boolean

Взять вещь в руки (на "палец"). Ф-ция вернет false, если: - у вас уже есть какой то айтим в руках; - айтим не найден (например если вы забыли открыть заранее контейнер, в котором находится айтим). Если Count > возможного, то возьмет в руки возможное кол-во. Если Count = 0, то возьмет всю стопку.

Важно: Обратите внимание, что эта ф-ция берет предмет именно в руки, а не перемешает его в другой контейнер. Также не забывайте, что эта ф-ция должна использоваться только в паре с DropItem.


DressSavedSet

function DressSavedSet: Boolean

Одеть набор одежды, сохраненный через Doc:RU/Api/SetDress

То же, что и Doc:RU/Api/EquipDressSet.


При удачном одевании возвращает True.

В случае, если отсутствует соединение с UO сервером, либо одевание не удалось - вернет False.


DressSpeed

var DressSpeed : Word

Пауза между снятием каждой вещи

В миллисекундах.

По умолчанию = 100мс.

Drop

function Drop(ItemID : Cardinal; Count : Integer; X,Y,Z : Integer) : Boolean

Бросить предмет с указанным ID (ItemID) и количеством (Count) на землю с координатами X, Y и Z.

Важно: Ф-ция построена на основе связки ф-ций: DragItem() + DropItem(), поэтому если вы желаете понимать, как это будет работать - изучите внимательно работу ф-ций Doc:RU/Api/DragItem, Doc:RU/Api/DropItem.

See also: Doc:RU/Api/DragItem, Doc:RU/Api/DropItem

DropDelay

DropDelay : Cardinal

задержка после выполнения функции dropItem

напомню, что любой grab,drop или moveitem это:

  • dragitem
  • dropitem

Значение не опустится меньше 50, и не поднимется выше 10000

DropHere

function DropHere(ItemID : Cardinal) : Boolean

Бросить предмет с указанным ID (ItemID) и количеством (Count) на землю под ноги.

Важно: Ф-ция построена на основе связки ф-ций: DragItem() + DropItem(), поэтому если вы желаете понимать, как это будет работать - изучите внимательно работу ф-ций Doc:RU/Api/DragItem, Doc:RU/Api/DropItem.

See also: Doc:RU/Api/DragItem, Doc:RU/Api/DropItem

DropItem

function DropItem(MoveIntoID : Cardinal; X,Y,Z : Integer) : Boolean

Бросить вещь из рук в место, куда вы укажете.

Ф-ция вернет false если у вас в руках ничего нету.

Если MoveIntoID = Ground, то кинет на землю с указанными координатами.

Если MoveIntoID не существует, то кинет в бекпак вашего персонажа.

В случае "земли" работают относительные координаты.

В случае если MoveIntoID - контейнер, то кинет его как в контейнер.

Если MoveIntoID - айтим, то клиент попытается состыковать айтимы.

В случае нулевых координат - клиент сам попытается подставит нужные.

Важно: Обратите внимание, что эта ф-ция просто бросает предмет из рук, а не перемешает его в другой контейнер.

Также не забывайте, что эта ф-ция должна использоваться только в паре с DragItem.

EUO2ID

function EUO2ID(EUO : String) : Cardinal

Описание аналогично Doc:RU/Api/EUO2Type.

EUO2Type

function EUO2Type(EUO : String) : Word

Функция переводит данные в формате EasyUO (SyS26) в обычный: EUO2Type("POF")=3821 # Gold coins

Разницы в работе EUO2Type и Doc:RU/Api/EUO2ID я лично не заметил. Привожу пример на Python 3.3 обратного перевода в SyS26:

def DecToEUO(val):
    i,s=(val ^ 69) +7, ""
    while i>0: s,i=s+chr(65+i%26), int(i/26)
    return s


EarLayer

function EarLayer() : Byte

Возвращает номер слоя 0x12 - Серьги (Earrings).

Пример 1:

if ObjAtLayer(EarLayer) > 0 then 
  AddToSystemJournal('Earrings ID: '+IntToStr(ObjAtLayer(EarLayer)));

Пример 2:

{Если на слое чтото есть, то снимаем}
if ObjAtLayer(EarLayer) <> 0 then
  begin
    unequip(EarLayer);
    wait(1000);
  end;


EggsLayer

function EggsLayer() : Byte

Возвращает номер слоя 0x17 - Юбка, килт (Skirt/Kilt).

Пример 1:

if ObjAtLayer(EggsLayer) > 0 then 
  AddToSystemJournal('Skirt ID: '+IntToStr(ObjAtLayer(EggsLayer)));

Пример 2:

{Если на слое чтото есть, то снимаем}
if ObjAtLayer(EggsLayer) <> 0 then
  begin
    unequip(EggsLayer);
    wait(1000);
  end;

EmptyContainer

function EmptyContainer(Container,DestContainer : Cardinal; delay_ms : Word) : Boolean;


EnergyResist

function EnergyResist() : Word

Возвращает параметр чара - сопротивление энергии (Energy Resist).

Работает только начиная с версии клиента Samurie Empire + на сервере должен быть включен режим расширенных статов,отсылаемых клиенту, иначе вернет 0.


В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример 1:

if EnergyResist> 0 then
begin
  ''do something, like go home, or drop, etc.
end;

Пример 2:

  AddToSystemJournal('Текущий Energy Resist: ' + IntToStr(EnergyResist))


Equip

function Equip(Layer: Byte; Obj: Cardinal): Boolean

Одеть вещь Obj на указанный слой Layer.

При удачном одевании возвращает True.

В случае, если отсутствует соединение с UO сервером, либо одевание не удалось - вернет False.

Пример:

if (getquantity(findtype(tweapon,ground)) > 0) 
    and (gettype(ObjAtLayer(RhandLayer)) <> gettype(finditem)) then 
  begin 
    addtosystemjournal('Weapon Change, осталось '+inttostr(findcount)); 
    UnEquip(RHandLayer); 
    wait(500); 
    Equip(RhandLayer,finditem); 
  end;


EquipDressSet

function EquipDressSet: Boolean

Одеть набор одежды, сохраненный через Doc:RU/Api/SetDress

То же, что и Doc:RU/Api/DressSavedSet.

При удачном одевании возвращает True.

В случае, если отсутствует соединение с UO сервером, либо одевание не удалось - вернет False.


Equipt

function Equipt(Layer: Byte; ObjType: Word): Boolean

Одеть вещь типа ObjType, найденную в рюкзаке на указанный слой Layer.

При удачном одевании возвращает True.

В случае, если отсутствует соединение с UO сервером, либо обьект не найден, либо одевание не удалось - вернет False.

Пример:

if (gettype(ObjAtLayer(RhandLayer)) <> gettype(tweapon)) then 
  begin 
    UnEquip(RHandLayer); 
    wait(500); 
    Equipt(RhandLayer,tweapon); 
  end;

FileExists

function FileExists(FileName : String) : Boolean

FillNewWindow

procedure FillNewWindow(str: String)

Вывод текста str в новое окно InfoWindow.

Пример на Python

FillNewWindow("\r\n".join(GetGumpTextLines(0)))

FindAtCord

function FindAtCoord(X : Word;Y : Word) : Cardinal

возвращает последний найденный в указанной точке объект.

Пример:

ObjId := FindAtCoord(GetX(Self), GetY(Self));

FindCount

function FindCount() : Integer

Возвращает кол-во айтемов, найденных с помощью функций Doc:RU/Api/FindType или Doc:RU/Api/FindTypeEx

При подсчете кол-ва надо учитывать, что стопка из нескольких "стекированных" айтемов считается как один айтем!

В случае, если ничего не найдено - вернет 0.


Пример:

FindType(runes,backpack);
  AddAddToSystemJournal('Runes found: ' + IntToStr(FindCount));

FindDistance

var FindDistance : Integer

задает дальность поиска функций Doc:RU/Api/FindType или Doc:RU/Api/FindTypeEx по горизонтали в клетках

Например, 3 - значит будет искать под собой и в радиусе трех клеток.


По умолчанию имеет значение 2 (принято за умолчание на большинстве серверов как максимальная дальность, с которой обычный игрок при обычных условиях может поднять или положить вещь)

Пример:

FindDistance := 0; ''искать только под собой
FindType(bandage_type,ground);
  AddAddToSystemJournal('Bandages found: ' + IntToStr(FindQuantity));

В Python эта функция разведена на две отдельные: GetFindDistance() и SetFindDistance(integer).

FindFullQuantity

function FindFullQuantity : Integer

Возвращает общее кол-во айтемов, найденных с помощью функций Doc:RU/Api/FindType или Doc:RU/Api/FindTypeEx

Суммируются также стекированные айтемы!

Если стопок (стеков) в результатах поиска нет, то функция вернет число, равное возвразаемому значению от Doc:RU/Api/FindCount

В случае, если ничего не найдено - вернет 0.


Пример:

FindType(BM,backpack);
  AddAddToSystemJournal('BM total found: ' + IntToStr(FindFullQuantity));

FindItem

function FindItem() : Cardinal

Возвращает последний обьект, найденный с помощью функций Doc:RU/Api/FindType или Doc:RU/Api/FindTypeEx

В случае, если ничего не найдено - вернет 0.


Пример 1:

if FindTypeEx(bottle_type,bottle_color,Ground,false) > 0 then
begin
  UseObject(FindItem);
end;

Пример 2:

  IF FindType($190,ground) > 0 THEN
    WaitTargetObject(FindItem);

FindNotoriety

function FindNotoriety(ObjType: Word; Notoriety: Byte) : Cardinal

Ищет обьект указанного типа ObjType и указанного "цвета"* Notoriety.

на земле.


Результаты поиска:

  • список найденных обьектов заносится в FindedList, который можно получить, ипользуя функцию Doc:RU/Api/GetFindedList
  • Последний найденный обьект заносится в Doc:RU/Api/FindItem
  • Последний найденный обьект возвращается резутатом выполнения ЭТОЙ функции
  • В Doc:RU/Api/FindCount заносится кол-во найденных айтемов
  • если найден хотя бы один обьект, то Doc:RU/Api/FindQuantity = 1, иначе ноль.
  • Doc:RU/Api/FindFullQuantity равно Doc:RU/Api/FindCount

На дальность поиска влияет:

  • Doc:RU/Api/FindDistance - задает дальность поиска по горизонтали в клетках. 3 - значит будет искать под собой и в радиусе трех клеток. По умолчанию имеет значение 2 (принято за умолчание на большинстве серверов как максимальная дальность, с которой обычный игрок при обычных условиях может поднять или положить вещь)
  • Doc:RU/Api/FindVertical - задает дальность поиска по вертикали. По умолчанию принято 5, чтобы не задевать соседние этажи при поиске.

В случае, если ничего не найдено - вернет 0.

В качестве параметра Notoriety можно использовать:

  • 1 - innocent (blue)
  • 2 - guilded/ally (green)
  • 3 - attackable but not criminal (gray)
  • 4 - criminal (gray)
  • 5 - enemy (orange)
  • 6 - murderer (red)

0 и 7 клиент получить не может

Пример:

if FindNotoriety($190,6) > 0 then
begin
  AddAddToSystemJournal('Murderer found!');
  '' make something 
end;


  • Вообще-то Notoriety - переводится как "дурная слава". Но здесь этот перевод как-то не очень применим.

FindQuantity

function FindQuantity() : Integer

Возвращает кол-во айтемов в стеке последнего обьекта, найденного с помощью функций Doc:RU/Api/FindType или Doc:RU/Api/FindTypeEx

Если последний айтем не стек (стопка), то вернет 1

В случае, если ничего не найдено - вернет 0.


Пример:

FindType(BM,backpack);
  AddAddToSystemJournal('BM in last found stack: ' + IntToStr(FindQuantity));

FindType

function FindType(ObjType: Word; Container: Cardinal) : Cardinal

Ищет обьект указанного типа ObjType в указанном контейнере Container.


НЕ ищет в подсумках (контейнерах внутри заданного контейнера). Для такого поиска есть Doc:RU/Api/FindTypeEx

Фактически, Findtype = FindTypeEx(ObjType,$FFFF,Container,false);

Если обьект удовлетворяет всем условиям, то перед внесением в FindedList проверяется его наличие в IgnoreList. Если там он есть - значит отбор не проходит. Подробнее смотреть Doc:RU/Api/Ignore

Результаты поиска:

  • список найденных обьектов заносится в FindedList, который можно получить, ипользуя функцию Doc:RU/Api/GetFindedList
  • Последний найденный обьект заносится в Doc:RU/Api/FindItem
  • Последний найденный обьект возвращается резутатом выполнения ЭТОЙ функции
  • В Doc:RU/Api/FindCount заносится кол-во найденных айтемов (стопка из нескольких "стекированных" айтемов считается как один айтем!)
  • В Doc:RU/Api/FindQuantity заносится кол-во айтемов в стеке (стопке), если последний айтем является стеком (стопкой)
  • В Doc:RU/Api/FindFullQuantity заносится общее кол-во айтемов во всех найденых стопках (если таких в результатах нет, то будет равно Doc:RU/Api/FindCount


На дальность поиска влияет:

  • Doc:RU/Api/FindDistance - задает дальность поиска по горизонтали в клетках. 3 - значит будет искать под собой и в радиусе трех клеток. По умолчанию имеет значение 2 (принято за умолчание на большинстве серверов как максимальная дальность, с которой обычный игрок при обычных условиях может поднять или положить вещь)
  • Doc:RU/Api/FindVertical - задает дальность поиска по вертикали. По умолчанию принято 5, чтобы не задевать соседние этажи при поиске.


В случае, если ничего не найдено - вернет 0.

В качестве параметра Container можно использовать:

Если указан ID несуществующего контейнера, то поиск производится в рюкзаке чара

Если ObjType = -1 поиск вернет ВСЕ доступные объекты в контейнере \ на земле(с учетом FindDistance и FindVertical)

Пример 1:

if FindType(bottle_type,Ground) > 0 then
begin
  UseObject(FindItem);
end;

Пример 2:

  FindType(runes,backpack);
  AddAddToSystemJournal('Runes found: ' + IntToStr(FindCount));

FindTypeEx

function FindTypeEx(ObjType: Word; Color: Word; Container: Cardinal; InSub: Boolean): Cardinal

Ищет обьект указанного типа ObjType и цвета Color в указанном контейнере Container.


InSub включает режим поиска в подсумках (контейнерах внутри заданного контейнера).

Результаты поиска:

  • список найденных обьектов заносится в FindedList, который можно получить, ипользуя функцию Doc:RU/Api/GetFindedList
  • Последний найденный обьект заносится в Doc:RU/Api/FindItem
  • Последний найденный обьект возвращается резутатом выполнения ЭТОЙ функции
  • В Doc:RU/Api/FindCount заносится кол-во найденных айтемов (стопка из нескольких "стекированных" айтемов считается как один айтем!)
  • В Doc:RU/Api/FindQuantity заносится кол-во айтемов в стеке (стопке), если последний айтем является стеком (стопкой)
  • В Doc:RU/Api/FindFullQuantity заносится общее кол-во айтемов во всех найденых стопках (если таких в результатах нет, то будет равно Doc:RU/Api/FindCount


На дальность поиска влияет:

  • Doc:RU/Api/FindDistance - задает дальность поиска по горизонтали в клетках. 3 - значит будет искать под собой и в радиусе трех клеток. По умолчанию имеет значение 2 (принято за умолчание на большинстве серверов как максимальная дальность, с которой обычный игрок при обычных условиях может поднять или положить вещь)
  • Doc:RU/Api/FindVertical - задает дальность поиска по вертикали. По умолчанию принято 5, чтобы не задевать соседние этажи при поиске.


В случае, если ничего не найдено - вернет 0.

В качестве параметра Container можно использовать:

Если указан ID несуществующего контейнера, то поиск производится в рюкзаке чара

В качестве параметра Color можно использовать:

  • $FFFF (-1) - тогда цвет в поиске не учитывается
  • нужный цвет айтема

FindTypeEx с параметрами Color = $FFFF и InSub = False равно функции Doc:RU/Api/FindType

Пример 1:

if FindTypeEx(bottle_type,bottle_color,Ground,false) > 0 then
begin
  UseObject(FindItem);
end;

Пример 2:

  FindTypeEx(runes,runes_color,backpack,true);
  AddAddToSystemJournal('Runes found: ' + IntToStr(FindCount));

FindTypesArrayEx

FindTypesArrayEx(ObjTypes,Colors : Array of Word; Containers : Array of Cardinal; InSub : Boolean) : Cardinal

Ищет по заданному массиву типов ObjTypes и массиву цветов Colors в массиве контейнеров Containers. Если InSub включено, то поиск будет осуществляться в сабконтейнерах (рекурсивно).

Внутри метод перебором проходит через все типы\цвета\контейнеры и выполняет обычный Findtypeex.

Example 1 - ищет на земле заданные типы (животные, чаты и т.д.):

FindDistance := 20;
FindVertical := 10;
FindTypesArrayEx([$29A, $29B, $190, $191, $25d, $25e, $192, $193, $25f, $260, $2ea, $2ec, $2ed, $84, $f6, $19, $db, $51, $7a, $2ee, $2e8, $2e9, $2eb, $117, $116, $115],[$FFFF],[Ground],false);
AddToSystemJournal('FindCount = ' + IntToStr(FindCount));

FindVertical

var FindVertical : Integer

задает дальность поиска функций Doc:RU/Api/FindType или Doc:RU/Api/FindTypeEx по вертикали


По умолчанию принято 5, чтобы не задевать соседние этажи при поиске.

Пример:

FindVertical := 25; ''искать этажом выше и ниже
FindType(sheep_type,ground);
  AddAddToSystemJournal('На трех этажах найдено овец: ' + IntToStr(FindQuantity));

В Python это две отдельные функции: GetFindVertical() and SetFindVertical(integer).


FireResist

function FireResist() : Word

Возвращает параметр чара - огнеупорность (Fire Resist).

Работает только начиная с версии клиента Samurie Empire + на сервере должен быть включен режим расширенных статов,отсылаемых клиенту, иначе вернет 0.


В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример 1:

if FireResist > 0 then
begin
  ''do something, like go home, or drop, etc.
end;

Пример 2:

  AddToSystemJournal('Текущий Fire Resist: ' + IntToStr(FireResist))

FloatToStrF

function FloatToStrF(Value: Extended; Format: TFloatFormat; Precision, Digits: Integer): string

FoundedParamId

FoundedParamId

в результате работы функций WaitJournalLine, InJournal, и им подобных функций при удачном нахождении заполняются поля типа LineID, LineType, LineTime и прочие. к ним добавил FoundedParamID.

например в поиск дается строка типа 'create|make|destroy|already'

обнаружена строка со словом destroy.

тогда в FoundedParamID будет число 2 (счет от нуля).

нашлось бы create - было бы ноль.

GA

function GA : Word;

Returns reagent type: Garlic

GACount

function GACount : Word;

Returns Garlic count in backpack.

GS

function GS : Word;

Returns reagent type: Ginsing

GSCount

function GSCount : Word;

Returns Ginsing count in backpack.


GetARStatus

function GetARStatus : Boolean

Возвращает режим реконнектора: True - реконектор включен, False - выключен

Пример 1: {{page>:examples:connect&nofooter}}

См. также


GetActiveAbility

function GetActiveAbility : String


GetAltName

function GetAltName(ObjID : Cardinal) : String;

GetAutoBuyDelay

function GetAutoBuyDelay : Word

GetAutoSellDelay

function GetAutoSellDelay : Word


GetCliloc

function GetCliloc(ObjID : Cardinal) : String;


GetColor

function GetColor(ObjID : Cardinal) : Word

параметр объекта: цвет

GetContextMenu

procedure GetContextMenu(var list : TStringList)

Возвращает пункты последнего контекстного меню. Формат возвращаемых строк следующий "tag|clilocID|clilocText|flags|color". Все числа представлены в десятичном виде.

Пример:

0|6123|Open Paperdoll|0|0
1|6146|Talk|0|0

ВНИМАНИЕ! list должен быть предварительно создан через var_list_name := TStringList.Create и обязательно удален после окончания пользования через var_list_name.Free;


GetDex

function GetDex(ObjID : Cardinal) : Integer

параметр объекта: Dex


GetDirection

function GetDirection(ObjID : Cardinal) : Byte

параметр объекта: направление


GetDistance

function GetDistance(ObjID : Cardinal) : Integer

параметр объекта: дистанция

GetEasyUO

function GetEasyUO(num: Integer) : String

Подробно использование этой функции можно найти тут: Doc:RU/Api/SetEasyUO

GetFindedList

function GetFindedList(var UserList : TStringList) : Boolean

Заполняет строковый список UserList результатами поиска.


В UserList заносится список найденных обьектов, найденных с помощью Doc:RU/Api/FindType или Doc:RU/Api/FindTypeEx

ВНИМАНИЕ! UserList должен быть предварительно создан через var_list_name := TStringList.Create и обязательно удален после окончания пользования через var_list_name.Free;

ВНИМАНИЕ! ID обьектов, занесенных этот список, имеют hex-формат!

В случае, если ничего не найдено - вернет False и пустой список в UserList.

Пример:

function GetFoundItemsFromStringList(var Items: Array Of Cardinal): Integer;
var List: TStringList; i: Integer;
begin
  List := TStringList.Create;
  if GetFindedList(List) = False then Result := 0
  else begin
    SetLength(Items, List.Count);
    for i := 0 to Length(Items)-1 do Items[i] := StrToInt('$'+List.Strings[i]);
    Result := Length(Items);
  end;
  List.Free;
end;

Примечание: Начиная с версии 7.9.0 вы можете использовать следующий вид этой функции:

type TCardinalDynArray = Array of Cardinal;
function GetFoundItems():TCardinalDynArray;


GetGlobal

function GetGlobal(GlobalRegion : String; VarName : String) : String

Считывает значение глобальной переменной VarName с областью видимости GlobalRegion. Область видимости может быть 'char' или 'stealth'. GlobalRegion и VarName не чувствительны к регистру.

Пример 1: {{page>:examples:globals&nofooter}}

См. также:

GetGumpButtonsDescription

procedure GetGumpButtonsDescription(GumpIndex : Integer; var TL : TStringList)

Заносит в текстовый список TL сокращенное содержимое гампа, находящимся в списке стелса под номером GumpIndex

В отличие от Doc:RU/Api/GetGumpShortLines, в результате работы этой функции в список, кроме общих параметров гампа, попадают только кнопки (Buttons)

ВНИМАНИЕ! UserList должен быть предварительно создан через var_list_name := TStringList.Create и обязательно удален после окончания пользования через var_list_name.Free;

Если указан неверный индекс гампа (или гампов нет), то в TLбудет пусто.

Пример:

Program takegump; 
 
var 
b : TStringList; 
i : Integer; 
 
Begin 
b := TStringList.Create; 
SetSilentMode(False); 
for  i := 0 to GetGumpsCount - 1 do 
  GetGumpButtonsDescription(i,b); 
b.free; 
End.

GetGumpFullLines

procedure GetGumpFullLines(GumpIndex : Integer; var TL : TStringList)

Заносит в текстовый список TL ВСЁ содержимое гампа, находящимся в списке стелса под номером GumpIndex

ВНИМАНИЕ! UserList должен быть предварительно создан через var_list_name := TStringList.Create и обязательно удален после окончания пользования через var_list_name.Free;

Если указан неверный индекс гампа (или гампов нет), то в TLбудет пусто.

Пример:

Program takegump; 
 
var 
b : TStringList; 
i : Integer; 
 
Begin 
b := TStringList.Create; 
SetSilentMode(False); 
for  i := 0 to GetGumpsCount - 1 do 
  GetGumpFullLines(i,b); 
b.free; 
End.

В результате работы примера в строковом списке будет что-то типа:

Serial: 1A1B9F 
GumpID: 11CC34F 
X: 0000 
Y: 0000 
Pages: 13 
Gump Options: NoDispose NoClose 
 
GumpPics: X Y ID  Page 
GumpPic: 480  367  2443  0 
 
TilePics: X   Y   ID   Page 
0   TilePic: 80  94  5099  2 
1   TilePic: 230  94  5103  2 
... 
47   TilePic: 230  184  5176  12 
48   TilePic: 80  274  5181  12 
 
ResizePics: X   Y   ID   Width   Height   Page 
0   ResizePic: 20  20  5054  540  40  0 
1   ResizePic: 20  60  5054  360  300  0 
2   ResizePic: 380  60  5054  180  300  0 
3   ResizePic: 20  360  5054  540  70  0 
 
 
CheckBoxes: X   Y   Released_ID  Pressed_ID   Status   Return_value   Page 
0   CheckBox: 140  395  210  211  0  1537  0 
 
 
GumpTexts: X   Y   Color   Text_ID   Page 
0   GumpText: 159  30  51  0  0 
1   GumpText: 60  371  900  1  0 
... 
61   GumpText: 223  229  900  62  12 
62   GumpText: 73  319  900  63  12 
 
TextEntries: X   Y   Width   Height   Status   Color   Return_value   Default_text_id   Page 
0   TextEntry: 487  370  100  30  0  513  5  0 
 
Text Lines: 
BLACKSMITH SELECTION MENU 
Make last (ringmail gloves) 
Repair Item 
Hardening 
How Many? 
1 
 
... 
 
War Hammer 
Hammer Pick 
 
GumpButtons: X   Y   Released_ID  Pressed_ID   Quit   Page_ID   Return_value   Page 
0   GumpButton: 40  372  208  209  1  0  1025  0 
1   GumpButton: 40  395  208  209  1  0  1026  0 
... 
50   GumpButton: 200  164  1209  1210  1  0  5176  12 
51   GumpButton: 50  254  1209  1210  1  0  5180  12

GetGumpID

function GetGumpID(GumpIndex : Integer) : Cardinal

Возвращает параметр гампа - Ид. номер (Gump ID).

В случае, если отсутствует соединение с UO сервером либо задан неверный номер гампа - вернет 0.

Пример:

If GetGumpsCount > 0 then
  if GetGumpID(GetGumpsCount-1) = $15A7DDF then
    CloseSimpleGump(GetGumpsCount-1);


GetGumpInfo

procedure GetGumpInfo(GumpIndex : Word; var gumpInfo : TGumpInfo);

Заполняет структуру gumpInfo информацией гампа находящимся в списке стелса под номером GumpIndex Для определения количества тех или иных элементов используется функция Length.

Пример:

GetGumpInfo(0, gi);
AddToSystemJournal('Gump has ' + IntToStr(Length(gi.GumpButtons)) + ' buttons');

Структура TGumpInfo:

TGumpInfo = record
    Serial : Cardinal;
    GumpID : Cardinal;
    X : Word;
    Y : Word;
    Pages : Integer;
    NoMove : Boolean;
    NoResize : Boolean;
    NoDispose : Boolean;
    NoClose : Boolean;
 
 
    Groups : array of TGroup;
    EndGroups : array of TEndGroup;
    GumpButtons : array of TGumpButton;
    ButtonTileArts : array of TButtonTileArt;
    CheckBoxes : array of TCheckBox;
    CheckerTrans : array of TCheckerTrans;
    CroppedText : array of TCroppedText;
    GumpPics : array of TGumpPic;
    GumpPicTiled : array of TGumpPicTiled;
    RadioButtons : array of TRadio;
    ResizePics : array of TResizePic;
    GumpText : array of TGumpText;
    TextEntries : array of TTextEntry;
    Text : array of string;
    TextEntriesLimited : array of TTextEntryLimited;
    TilePics : array of TTilePic;
    TilePicHue : array of TTilePicHue;
    Tooltips : array of TTooltip;
    HtmlGump : array of THtmlGump;
    XmfHtmlGump : array of TXmfHtmlGump;
    XmfHTMLGumpColor : array of TXmfHTMLGumpColor;
    XmfHTMLTok : array of TXmfHTMLTok;
    ItemProperties : array of TItemProperty;
end;

Описание используемых структур:

  TGroup = record
    groupnumber : Integer;
    Page : Integer;
    ElemNum : Integer;
  end;
 
  TEndGroup = record
    groupnumber : Integer;
    Page : Integer;
    ElemNum : Integer;
  end;
 
  TPage =  record
    Page : Integer;
    ElemNum : Integer;
  end;
 
  TMasterGump =  record
    ID : Cardinal;
    ElemNum : Integer;
 end;
 
  TGumpButton =  record
    x, y : Integer;
    released_id : Integer;
    pressed_id : Integer;
    quit : Integer;
    page_id : Integer;
    return_value : Integer;
    Page : Integer;
    ElemNum : Integer;
  end;
 
  TButtonTileArt =  record
    x, y : Integer;
    released_id : Integer;
    pressed_id : Integer;
    quit : Integer;
    page_id : Integer;
    return_value : Integer;
    art_id : Integer;
    Hue :  Integer;
    art_x, art_y : Integer;
    ElemNum : Integer;
  end;
 
  TCheckBox =  record
    x, y : Integer;
    released_id : Integer;
    pressed_id : Integer;
    status : Integer;
    return_value : Integer;
    Page : Integer;
    ElemNum : Integer;
  end;
 
  TCheckerTrans =  record
    x, y : Integer;
    width, height : Integer;
    Page : Integer;
    ElemNum : Integer;
  end;
 
  TCroppedText =  record
    x, y,width, height,color,text_id : Integer;
    Page : Integer;
    ElemNum : Integer;
  end;
 
  TGumpPic =  record
    x, y : Integer;
    id : Integer;
    Hue : Integer;
    Page : Integer;
    ElemNum : Integer;
  end;
 
  TGumpPicTiled =  record
    x, y : Integer;
    width, height : Integer;
    gump_id : Integer;
    Page : Integer;
    ElemNum : Integer;
  end;
 
  TRadio =  record
    x, y : Integer;
    released_id : Integer;
    pressed_id : Integer;
    status : Integer;
    return_value : Integer;
    Page : Integer;
    ElemNum : Integer;
  end;
 
  TResizePic =  record
    x, y : Integer;
    gump_id : Integer;
    width, height : Integer;
    Page : Integer;
    ElemNum : Integer;
  end;
 
  TGumpText =  record
    x, y, color : Integer;
    text_id : Integer;
    Page : Integer;
    ElemNum : Integer;
  end;
 
  TTextEntry =  record
    x, y, width, height, color : Integer;
    return_value : Integer;
    default_text_id : Integer;
    Page : Integer;
    ElemNum : Integer;
  end;
 
  TTextEntryLimited =  record
    x, y, width, height, color : Integer;
    return_value : Integer;
    default_text_id : Integer;
    Limit : Integer;
    Page : Integer;
    ElemNum : Integer;
  end;
 
  TTilePic =  record
    x, y : Integer;
    id : Integer;
    Page : Integer;
    ElemNum : Integer;
  end;
 
  TTilePichue =  record
    x, y : Integer;
    id : Integer;
    color : Integer;
    Page : Integer;
    ElemNum : Integer;
  end;
 
  TTooltip =  record
    Cliloc_ID : Cardinal;
    Page : Integer;
    ElemNum : Integer;
  end;
 
  THtmlGump =  record
    x, y : Integer;
    width, height : Integer;
    text_id : Integer;
    background : Integer;
    scrollbar : Integer;
    Page : Integer;
    ElemNum : Integer;
  end;
 
  TXmfHTMLGump =  record
    x, y : Integer;
    width, height : Integer;
    Cliloc_id : Cardinal;
    background : Integer;
    scrollbar : Integer;
    Page : Integer;
    ElemNum : Integer;
  end;
 
  TXmfHTMLGumpColor =  record
    x, y : Integer;
    width, height : Integer;
    Cliloc_id : Cardinal;
    background : Integer;
    scrollbar : Integer;
    Hue :  Integer;
    Page : Integer;
    ElemNum : Integer;
  end;
 
  TXmfHTMLTok =  record
    x, y : Integer;
    width, height : Integer;
    background : Integer;
    scrollbar : Integer;
    Color : Integer;
    Cliloc_id : Cardinal;
    Arguments : String;
    Page : Integer;
    ElemNum : Integer;
  end;
 
  TItemProperty = packed record
    Prop : Cardinal;
    ElemNum : Integer;
  end;

GetGumpSerial

function GetGumpSerial(GumpIndex : Integer) : Cardinal

Возвращает параметр гампа - Серийный номер (Serial ID).

В случае, если отсутствует соединение с UO сервером либо задан неверный номер гампа - вернет 0.

Пример:

If GetGumpsCount > 0 then
  if GetGumpSerial(GetGumpsCount-1) = $15A7DDF then
    CloseSimpleGump(GetGumpsCount-1);

GetGumpShortLines

procedure GetGumpShortLines(GumpIndex : Integer; var TL : TStringList)

Заносит в текстовый список TL сокращенное содержимое гампа, находящимся в списке стелса под номером GumpIndex

В отличие от Doc:RU/Api/GetGumpFullLines, в котором в список идет все содержимое гампа, в результате работы этой функции в список, кроме общих параметров гампа, попадают следующие элементы:

  • TextEntries
  • TextLines
  • Buttons

ВНИМАНИЕ! UserList должен быть предварительно создан через var_list_name := TStringList.Create и обязательно удален после окончания пользования через var_list_name.Free;

Если указан неверный индекс гампа (или гампов нет), то в TLбудет пусто.

Пример:

Program takegump; 
 
var 
b : TStringList; 
i : Integer; 
 
Begin 
b := TStringList.Create; 
SetSilentMode(False); 
for  i := 0 to GetGumpsCount - 1 do 
  GetGumpShortLines(i,b); 
b.free; 
End.

GetGumpTextLines

procedure GetGumpTextLines(GumpIndex : Integer; var TL : TStringList)

Заносит в текстовый список TL все текстовые строки из гампа, находящимся в списке стелса под номером GumpIndex

ВНИМАНИЕ! UserList должен быть предварительно создан через var_list_name := TStringList.Create и обязательно удален после окончания пользования через var_list_name.Free;

Если указан неверный индекс гампа (или гампов нет), то в TLбудет пусто.

Пример:

TempSL := TStringList.Create;
WaitTargetGround($1BDD);
UseObject(FindType($1EB9,ground));
GetGumpTextLines(GetGumpsCount-1,TempSL);
{тут обрабатываем полученный список}
TempSL.Free;

GetGumpsCount

function GetGumpsCount() : Word

Возвращает количество висящих на чаре гампов

В случае, если отсутствует соединение с UO сервером либо гампов нет - вернет 0, иначе возвращает количество.

В скриптах очень часто используется выражение GetGumpsCount-1, которое идет параметром GumpIndex к функциям, что означает последний гамп в списке.

Пример:

If IsGump then
  if IsGumpCanBeClosed(GetGumpsCount-1) then
    CloseSimpleGump(GetGumpsCount-1);


GetHP

function GetHP(ObjID : Cardinal) : Integer

параметр объекта: HP

GetIgnoreList

function GetIgnoreList(var UserList : TStringList) : Boolean

Заполняет строковый список UserList обьектами из IgnoreList.


В UserList заносится список обьектов, расположенных в IgnoreList

ВНИМАНИЕ! UserList должен быть предварительно создан через var_list_name := TStringList.Create и обязательно удален после окончания пользования через var_list_name.Free;

В случае, если IgnoreList пустой и заполнять нечем - вернет False и пустой список в UserList.

Пример работы со строковым списком можно посмотреть в Doc:RU/Api/GetFindedList


GetInt

function GetInt(ObjID : Cardinal) : Integer

параметр объекта: INT

GetLandTileData

function GetLandTileData(Tile : Word) :TLandTileData

Подробная информация о тайле земли

GetLandTilesArray

function GetLandTilesArray(Xmin, Ymin, Xmax, Ymax : Word; WorldNum : byte; TileType : Word; var LandTilesArray : TFoundTilesArray) : Word

Поиск по заданному тайлу земли


GetLayer

function GetLayer(ObjID: Cardinal): Byte

Возвращает слой layer в котором находится обьект ObjID.

Перебирает все слои чара, сравнивая айди обьектов, находящихся там с заданным айди.

В случае, если отсутствует соединение с UO сервером, либо обьект не найдет - вернет 0.

Пример:

if GetLayer(my_relik_shield_ID') = 0 then 
  AddToSystemJournal('My mega-shiled not found')
else
  AddToSystemJournal('My mega-shiled found!');

GetLayerCount

function GetLayerCount(x, y:word; WorldNum : byte):byte

Кол-во слоев статики в точке


GetMana

function GetMana(ObjID : Cardinal) : Integer

параметр объекта: Mana

GetMapCell

function GetMapCell(X,Y : Word; WorldNum : Byte) : TMapCell

Получение информации по ячейке земли


GetMaxHP

function GetMaxHP(ObjID : Cardinal) : Integer

параметр объекта: MaxHP


GetMaxMana

function GetMaxMana(ObjID : Cardinal) : Integer

параметр объекта: MaxMana


GetMaxStam

function GetMaxStam(ObjID : Cardinal) : Integer

параметр объекта: MaxStam

GetName

function GetName(ObjID : Cardinal) : String

параметр объекта: имя

Возвращает имя объекта в следующих случаях:

1. Объект это "живой" персонаж, т.е. такой, у которого IsNPC(ObjID) = true

2. "Не живой" объект, на который кликнули в клиенте или сделали вызов ClickOnObject(ObjID). Как только вы кликнули на объект, вы запросили от сервера "подсказку" отображаемый hint с текстом описания объекта. Stealth вырезает из текста подсказки непосредственно имя и запоминает его до тех пор, пока объект в зоне видимости IsObjectExists(ObjId) = True.

Важно заметить, что GetName с "не живыми" объектами работает не на всех клиентах. Это объясняется тем, что сервер может вообще не присылать имя. Это, как правило проходит в UO Client версий 4 и выше. В таких случаях имя объекта можно получить используя GetCliloc или GetTooltip.

3. Есть ряд случаев, когда сервер присылает имя объекта самостоятельно. В основном это ситуации когда объект отображается в гампе. Характерный пример - окно торговли с NPC.

Если имя объекта сервером не возвращалось, то Stealth задает объекту условное имя 'NoName', которое и возвращает эта функция.

Пример:

function GetSrvName(Id: Cardinal): String;
var _HighJournal, _Timer : Integer;
begin
  Result := GetCliloc(Id); // Для клиентов версии >4.x.x.x
  if Result = '' then begin  // Для старых клиентов <4.x.x.x
    Result := GetName(Id);
    if Result = 'NoName' then begin // Если имя сразу выяснить не удалось
      _HighJournal := HighJournal; // Запоминаем последнюю строку журнала
      ClickOnObject(Id); // Кликаем, чтобы получить ответ от сервера
      _Timer := Timer+15000; // Задаем максимальное время ожидания ответа 
      while (Timer < _Timer) and (_HighJournal = HighJournal) do Wait(100); // Ждем, когда измениться журнал
      Result := GetName(Id); // Если имя можно узнать, то оно будет возвращено
    end;
  end;
end;

GetNextStepZ

function GetNextStepZ(CurrX,CurrY, DestX, DestY : Word; WorldNum : byte; Z : ShortInt) : ShortInt


GetNotoriety

function GetNotoriety(ObjID : Cardinal) : Byte

параметр объекта: злобность (notoriety)


GetParent

function GetParent(ObjID : Cardinal) : Cardinal

параметр объекта: ID контейнера, содержащего данный объект


Пример использования на Python 3.3. Модуль определения полного "пути" предмета во вложенных сумках:

def FullParentPath(p):
    if type(p)!=list or not p: p=[p]
    if not p[-1]: return p[1:-1]
    return FullParentPath(p+[GetParent(p[-1])])

p-ObjID

Возвращает list: [BagID1, BagID2, BagIDpreGround], где BagID1 - сумка в которой лежит ObjID, BagIDpreGround - последняя перед землей (если искали в одежде или рюкзаке чара - вернет ID чара).

GetPathArray

function GetPathArray(DestX : Word;DestY : Word;Optimized : Boolean;Accuracy : integer;var PathArray : TPathArray) : Integer;

Эта функция просчитывает маршрут до точки с координатами DestX и DestY и заполняет специальный массив TPathArray координатами точек через которые можно добраться до цели.

  • DestX - координата цели по X
  • DestY - координата цели по Y
  • Optimized - при True будет производиться более сложный просчет пути, поэтому рекомендуется включать только на дистанции до 200 тайлов. Параметр Optimizd оставлен для совместимости, см. Doc:RU/Api/MoveHeuristicMult
  • Accuracy - точность приближения: 0 - прямо на точку, 1 - рядом в радиусе одного тайла и т.д. Длина ограничена 1000 тайлами.
  • PathArray - массив типа TPathArray.
  • функция возвращает количество шагов до цели.

mPathArr : TPathArray; массив типа TPathArray отличается тем, что заполняется элементами у которых есть два свойства X и Y.

Пример:

function easyMoveXY(X,Y: integer; Optimized: boolean; Accuracy : Integer; Running: boolean): boolean; 
var 
   StepCnt,i : Integer; 
   mPathArr : TPathArray;
 
Begin 
Result:=false; 
While true do 
   begin 
   ''AddToSystemJournal('pathfinding...') 
   StepCnt:=GetPathArray(X,Y,Optimized,Accuracy,mPathArr); 
   If StepCnt<0 then Exit; 
   If StepCnt=0 then 
      begin 
      Result:= true; 
      Exit; 
      end; 
   For i:=0 to StepCnt do 
      begin 
 
      If Not IsWorldCellPassable(getX(self),getY(self),mPathArr[i].X,mPathArr[i].Y,WorldNum,getZ(self)) then  Break; 
      If Not MoveToPoint(mPathArr[i].X,mPathArr[i].Y,Running) then  Break; 
      If Dist(X,Y)<=Accuracy then 
         begin 
    AddToSystemJournal('Location reached!'); 
    Result:=true; 
    Exit; 
    end; 
      end; 
    end; 
End;

GetPathArray3D

function GetPathArray3D(StartX, StartY : Word; StartZ : Shortint; FinishX, FinishY : Word; FinishZ : Shortint; WorldNum : Byte; AccuracyXY, AccuracyZ : Integer; Run : Boolean; var PathArray : TPathArray) : Integer

Эта функция просчитывает маршрут до точки с координатами FinishX, FinishY и FinishZ и заполняет специальный массив TPathArray координатами точек через которые можно добраться до цели.

  • StartX, StartY, StartZ - координаты откуда будет начинаться маршрут.
  • FinishX, FinishY, FinishZ - координата конечной точки маршрута.
  • WorldNum - номер мира для которого будет просчитываться маршрут.
  • AccuracyXY, AccuracyZ - точность подхода к конечной точке: 0 - прямо на точку, 1 - рядом в радиусе одного тайла и т.д. Возможные значения: AccuracyXY - 0..20, AccuracyZ - 0..255
  • Run - будет ли персонаж бежать по этому маршруту или идти пешком (нужно для оптимизации поворотов при движении).
  • PathArray - массив типа TPathArray.
  • функция возвращает количество шагов до цели.


GetPauseScriptOnDisconnectStatus

function GetPauseScriptOnDisconnectStatus : Boolean

Задает поведение скрипта при дисконнекте. если Value True то при дисконнекте, все запущенные скрипты встанут на паузу.

Пример 1:

{{page>:examples:pausescript&nofooter}}

См. также


GetPrice

function GetPrice(ObjID : Cardinal) : Cardinal;


GetQuantity

function GetQuantity(ObjID : Cardinal) : Integer

параметр объекта: кол-во в стопке

GetRunMountTimer

function GetRunMountTimer : Word

Timer to slow\speed up walking\running with Move* functions

GetRunUnMountTimer

function GetRunUnMountTimer : Word

Timer to slow\speed up walking\running with Move* functions

GetShopList

function GetShopList : TStringList

GetSkillLockState

// v7.9.1+
function GetSkillLockState(SkillName : String) : ShortInt;

Возвращает состояние Lock State навыка.

GetSkillValue

function GetSkillValue(SkillName : String) : Double;

Получить значение скила. Список сколов


GetStam

function GetStam(ObjID : Cardinal) : Integer

параметр объекта: Stamina

GetStatLockState

// v7.9.1+
function GetStatLockState(statNum : Byte) : ShortInt;

Возвращает состояние Lock State силы, ловкости или интеллекта.

GetStaticTileData

function GetStaticTileData(Tile : Word) :TStaticTileData

Подробная информация о тайле статики

GetStaticTilesArray

function GetStaticTilesArray(Xmin, Ymin, Xmax, Ymax : Word; WorldNum : byte; TileType : Word;var FoundTilesArray : TFoundTilesArray) : Word

Поиск по заданному тайлу статики


GetStr

function GetStr(ObjID : Cardinal) : Integer

параметр объекта: STR

GetSurfaceZ

function GetSurfaceZ(X,Y : Word;WorldNum : Byte) : ShortInt

Узнать Z координату в точке мира

GetTickCount

function GetTickCount : Cardinal;

GetTileFlags

function GetTileFlags(Group : byte; Tile : Word) : Cardinal

Получение флагов тайла


GetTitle

function GetTitle(ObjID : Cardinal) : String;

Возвращает полное имя, или, по другому титул персонажа. Текст этого имени становиться виден, если открыть в UO-клиенте окно "Character". Тогда, под изображением персонажа, будет видна надпись вида 'The Lord Che-Burahka, Grandmaster Chef'. Функция возвращает не пустую строку ТОЛЬКО после того, как окно персонажа было открыто, до этого момента титул неизвестен и возвращать просто нечего. C точки зрения скрипта Stealth открыть окно "Character" можно вызовами функций Doc:RU/Api/UseObject или Doc:RU/Api/UseOtherPaperdollScroll.

Пример

function GetProfile(Id: Cardinal): String;
var _Timer : Integer;
begin
  Result := GetTitle(Id);
  if (Result = '') and IsNPC(Id) then begin
    UseObject(Id);
    _Timer := Timer+15000; // Задаем максимальное время ожидания ответа 
    while (Timer < _Timer) and (GetTitle(Id) = '') do Wait(100); // Ждем, когда истечет тамаут или обновиться GetTitle
    Result := GetTitle(Id);// Если титул можно узнать, то он будет возвращен
  end
end;

Многие начинающие скрипторы, бояться, что вызов UseObject может спровоцировать атаку на объект, если включен боевой режим WarMode = True. Эти опасения безосновательны, для атаки нужен явный вызов функции Attack.


GetTooltip

function GetTooltip(ObjID : Cardinal) : String;

GetTradeContainer

function GetTradeContainer(TradeNum,Num : Byte) : Cardinal

GetTradeOpponent

function GetTradeOpponent(TradeNum : Byte) : Cardinal

GetTradeOpponentName

function GetTradeOpponentName(TradeNum : Byte) : String


GetType

function GetType(ObjID : Cardinal) : Word

параметр объекта: type

GetWalkMountTimer

function GetWalkMountTimer : Word

Timer to slow\speed up walking\running with Move* functions

GetWalkUnmountTimer

function GetWalkUnmountTimer : Word

Timer to slow\speed up walking\running with Move* functions


GetX

function GetX(ObjID : Cardinal) : Integer

параметр объекта: Х координата


GetY

function GetY(ObjID : Cardinal) : Integer

параметр объекта: Y координата


GetZ

function GetZ(ObjID : Cardinal) : Byte

параметр объекта: Z координата


GlovesLayer

function GlovesLayer() : Byte

Возвращает номер слоя 0x07 - Перчатки (Gloves).

Пример 1:

if ObjAtLayer(GlovesLayer) > 0 then 
  AddToSystemJournal('Gloves ID: '+IntToStr(ObjAtLayer(GlovesLayer)));

Пример 2:

{Если на слое чтото есть, то снимаем}
if ObjAtLayer(GlovesLayer) <> 0 then
  begin
    unequip(GlovesLayer);
    wait(1000);
  end;


Gold

function Gold() : Cardinal

Возвращает параметр чара - кол-во денег в паке (Gold amount).

В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример 1:

if Gold < 60000 then
begin
  Grab(FindType($OEED,ground),60000-Gold);
end;

Пример 2:

  AddToSystemJournal('Денег в паке(Gold in backpack): ' + IntToStr(Gold))

Grab

function Grab(ItemID : Cardinal; Count : Integer) : Boolean

Переместить предмет с указанным ID (ItemID) и количеством (Count) в бекпак персонажа.

Важно: Ф-ция построена на основе связки ф-ций: DragItem() + DropItem(), поэтому если вы желаете понимать, как это будет работать - изучите внимательно работу ф-ций Doc:RU/Api/DragItem и Doc:RU/Api/DropItem.

See also: Doc:RU/Api/DragItem, Doc:RU/Api/DropItem

Ground

function Ground() : Cardinal

Указатель на землю. Часто используется, например, в поиске.

В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример 1: Поиск золотых монет на земле (установить радиус поиска можно используя FindDistance и FindVertical)

  FindType($EED, Ground);

GumpAutoCheckBox

procedure GumpAutoCheckBox(CheckBoxID, Value : Integer)

Принцип работы похож на Doc:RU/Api/WaitGump, с тем лишь отличием, что ищется не return_value кнопки, а return_value "галочек" (CheckBox). Если найдено - то старое значение status этого CheckBox заменяется на Value.

При этом ответ на гамп серверу НЕ отправляется! Это надо сделать через Doc:RU/Api/WaitGump либо Doc:RU/Api/NumGumpButton

Работает и как ловушка, и как для обработки уже пришедшего гампа.

Пример:

  WaitTargetGround($1BF5);  
  GumpAutoCheckBox(1537, 1);
  WaitGump('7956');
  UseObject(FindType($1EB9,backpack));

GumpAutoRadiobutton

procedure GumpAutoRadiobutton(RadiobuttonID , Value : Integer);

GumpAutoTextEntry

procedure GumpAutoTextEntry(TextEntryID: Integer; Value: String)

Принцип работы похож на Doc:RU/Api/WaitGump, с тем лишь отличием, что ищется не return_value кнопки, а return_value поля ввода (textentry). Если найдено - то старое значение этого textentry заменяется на Value. При этом ответ на гамп серверу НЕ отправляется! Это надо сделать через Doc:RU/Api/WaitGump либо Doc:RU/Api/NumGumpButton

Работает и как ловушка, и как для обработки уже пришедшего гампа.

Пример:

{кусок крафтерского скрипта. 
Сначала ставится ловушка на таргет на инготы на полу, 
потом ловушка на входящий гамп, для замены значения TextEntry, 
затем ловушка на гамп на кнопку, 
и только потом использование тинкертулзов для вызова гампа.}
  WaitTargetGround($1BF5);  
  GumpAutoTextEntry(513, '30');
  WaitGump('7956');
  UseObject(FindType($1EB9,backpack));

Принцип схож с Doc:RU/Api/NumGumpTextEntry.


HP

function HP() : Integer

То же, что и Doc:RU/Api/Life.

Возвращает параметр чара - здоровье (HITS).

В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример 1:

if (HP > 0) then
begin
  ''Do something
end;

Пример 2:

AddToSystemJournal('Здоровье чара: ' + IntToStr(HP));

HTTP_Body

function HTTP_Body : String

HTTP_Get

procedure HTTP_Get(URL : String; LStream : TMemoryStream = nil)

Процедура заполняющая HTTP_BODY, HTTP_HEADER данными которые получает выполняя запрос по заданному URL Параметр LStream - опциональный (необязательный), используется для получения необработанных байт в виде TMemoryStream, например для получения файлов (пример 2).

//Пример1: получим текущую дату и время от сайта timeapi.org
procedure SayCurrentDateAndTime;
begin
  //Делаем запрос
  HTTP_Get('http://www.timeapi.org/pdt/in+nine+hours');
  //Выводим содержание ответа
  AddToSystemJournal(HTTP_Header);
end;
 
//Вывод:
//19:20:02:063 [Stealth]: Compiled succesfully
//19:20:02:383 [Stealth]: 2016-12-23T19:20:00-07:00
//19:20:02:393 [Stealth]: Succesfully executed


Пример2: скачать и сохранить кодированный стелсом скрипт (обновление скрипта)

procedure GetAndSaveSomeData;
var 
  Stream : TMemoryStream;
begin
  try
    //Создаем поток
    Stream := TMemoryStream.Create;  
    //Наш запрос выполнится и заполнит своим ответом поток
    HTTP_GET('https://raw.githubusercontent.com/drabadan/Stealth780Scripts/master/autoUpdaterTestScriptCompiled.sc.cps', Stream);   
    //Сохраняем поток в файл, аргумент = путь к файлу на диске
    Stream.SaveToFile('c:\helloWorld.cps');
  finally
    //Освобождаем объект
    Stream.Free;
  end;  
end;

HTTP_Header

function HTTP_Header : String

HTTP_Post

function HTTP_Post(URL : String; PostData: TStringList) : String


HairLayer

function HairLayer() : Byte

Возвращает номер слоя 0x0B - Прическа (Hair).

Этот слой средствами клиента напрямую снять нельзя!

Пример:

if ObjAtLayer(HairLayer) > 0 then 
  AddToSystemJournal('Hair ID: '+IntToStr(ObjAtLayer(HairLayer)));

Halt

procedure Halt;

Немедленная остановка выполнения PAX скрипта.


HatLayer

function HatLayer() : Byte

Возвращает номер слоя 0x06 - Головной убор - шлем, шляпа и т.д. (Hat).

Пример 1:

if ObjAtLayer(HatLayer) > 0 then 
  AddToSystemJournal('Hat ID: '+IntToStr(ObjAtLayer(HatLayer)));

Пример 2:

{Если на слое чтото есть, то снимаем}
if ObjAtLayer(HatLayer) <> 0 then
  begin
    unequip(HatLayer);
    wait(1000);
  end;

HelpRequest

procedure HelpRequest

То же самое, что и кнопка "Help" на папердолле в клиенте.


Hidden

function Hidden() : Boolean

Возвращает параметр чара - Скрытность (Hidden).

В случае, если отсутствует соединение с UO сервером - вернет False.

Пример 1:

if (not Hidden) then
begin
  UseSkill('Hiding');
end;

Пример 2:

if (not Hidden) then
  AddToSystemJournal('Чар не в хайде')
else
  AddToSystemJournal('Чар в хайде');

HighJournal

function HighJournal : Integer

старший индекс строк журнала


HorseLayer

function HorseLayer() : Byte

Возвращает номер слоя 0x19 - ID седла (если чар верхом) (Mount).

Результат выполнения ObjAtLayer(HorseLayer) не равно ID ездовой НПЦ, на которую садится чар.

Пример 1:

if ObjAtLayer(HorseLayer) > 0 then 
  AddToSystemJournal('Mount ID: '+IntToStr(ObjAtLayer(HorseLayer)));

ICQConnect

procedure ICQConnect(UIN,password : String)

ICQConnected

function ICQConnected : Boolean

ICQDisconnect

procedure ICQDisconnect

ICQSendText

procedure ICQSendText(DestinationUIN, Text : String)

ICQSetStatus

procedure ICQSetStatus(Num : Byte)

ICQSetXStatus

procedure ICQSetXStatus(Num : Byte)

IRCConnect

procedure IRCConnect(Host : String;Port : Word);

Подключиться к IRC серверу, адрес и порт в параметрах.


Пример:

 if not IRCConnected then
  begin        
    IRCSetNickName('Vizzz');
    IRCConnect('irc.quakenet.org',6667);
    while not IRCConnected do
      wait(300);
  end;   

IRCConnected

function IRCConnected : Boolean;

Статус подключения к IRC-серверу: True - подключен, False - не подключен

Пример:

if IRCConnected then
    IRCSay('some1', 'New test from Vizzzz');

IRCDisconnect

procedure IRCDisconnect;

Отключается от сервера.


Пример:

 if not IRCConnected then
  IRCDisconnect;   

IRCJoin

procedure IRCJoin(AChannel : String; AKey : String = '' );

Подключиться к каналу с названием AChannel (префикс # обязателен). Можно указать пароль в параметре AKey.

Пример:

if IRCConnected then
  IRCJoin('#uos');

IRCRaw

procedure IRCRaw(ALine: String);

Отправить "сырой" текст серверу, включая команду.

Формат: COMAND_NAME value_text

Пример установки статуса AWAY:

if IRCConnected then
    IRCRaw('AWAY :Games');

Пример покидания канала:

if IRCConnected then
    IRCRaw('PART #uos');

IRCSay

procedure IRCSay(ATarget : String; AMsg : String);

Отправить сообщение нику\в канал.

Ник указывается без префикса, название канала с префиксом #

Пример личного сообщения:

if IRCConnected then
    IRCSay('some1', 'New test from Vizzzz');


Пример сообщения в канал:

if IRCConnected then
    IRCSay('#uos', 'CH test from Vizzzz');

IRCSetNickName

procedure IRCSetNickName(NickName : String);

Поменять\установить свой ник.

Обязательно выставлять свой ник ДО подключения к серверу - иначе некоторые (большинство) сервера вам откажут в подключении.

Пример:

 if not IRCConnected then
  begin        
    IRCSetNickName('Vizzz');
    IRCConnect('irc.quakenet.org',6667);
    while not IRCConnected do
      wait(300);
  end;   

Ignore

procedure Ignore(ObjID : Cardinal)

Добавляет объект ObjID в IgnoreList

В результате до сброса игнора или перезапуска скрипта объект не будет находиться функциями Doc:RU/Api/FindType, Doc:RU/Api/FindTypeEx и Doc:RU/Api/FindNotoriety

Примеры не требуются.

IgnoreOff

procedure IgnoreOff(ObjID : Cardinal)

Удаляет объект ObjID из IgnoreList

После выполнения процедуры объект будет находиться функциями Doc:RU/Api/FindType, Doc:RU/Api/FindTypeEx и Doc:RU/Api/FindNotoriety

Примеры не требуются.

IgnoreReset

procedure IgnoreReset()

Очищает IgnoreList

В результате игнорлист полностью очищается, и все объекты будут находиться функциями Doc:RU/Api/FindType, Doc:RU/Api/FindTypeEx и Doc:RU/Api/FindNotoriety

Примеры не требуются.

InJournal

function InJournal(Str : String) : Integer

поиск последней строки в журнале по слову (или по словам)

InJournalBetweenTimes

function InJournalBetweenTimes(Str : String; TimeBegin,TimeEnd : TDateTime) : Integer

поиск последней строки в журнале по слову (или по словам) во временном интервале

InParty

function InParty : Boolean;

Проверяем - в отряде наш чар или нет.


Int

function Int() : Integer

Возвращает параметр игрока - интеллект (INT).

В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример 1:

if (Int > 0) then
begin
  ''Do something
end;

Пример 2:

AddToSystemJournal('Интеллект чара: ' + IntToStr(Int));

IntToHex

function IntToHex(Value: Integer; Digits: Integer): String;

InviteToParty

procedure InviteToParty(ID : Cardinal);

Пригласить чара с указанным ID в отряд (party)


IsContainer

function IsContainer(ObjID : Cardinal) : Boolean

параметр объекта: container?


IsDead

function IsDead(ObjID : Cardinal) : Boolean

параметр объекта: dead


IsFemale

function IsFemale(ObjID : Cardinal) : Boolean

параметр объекта: пол

IsFigureText

function IsFigureText(s: string): boolean

IsGump

function IsGump() : Boolean

Возвращает наличие на чаре хотя бы одного висящего гампа

В случае, если отсутствует соединение с UO сервером либо гампов нет - вернет False, если есть хотя бы один - True.

Пример:

If IsGump then
  if IsGumpCanBeClosed(GetGumpsCount-1) then
    CloseSimpleGump(GetGumpsCount-1);

IsGumpCanBeClosed

function IsGumpCanBeClosed(GumpIndex : Integer) : Boolean

Возвращает наличие свойства гампа - NoClose

В случае, если отсутствует соединение с UO сервером либо задан неверный номер гампа - вернет False.

Если свойство NoClose присутсвует - то гамп НЕ может закрыт с помощью Doc:RU/Api/CloseSimpleGump

Пример:

If GetGumpsCount > 0 then
  if GetGumpID(GetGumpsCount-1) = $15A7DDF then
    CloseSimpleGump(GetGumpsCount-1);


IsHidden

function IsHidden(ObjID : Cardinal) : Boolean

параметр объекта: hidden?


IsMovable

function IsMovable(ObjID : Cardinal) : Boolean

параметр объекта: movable?


IsNPC

function IsNPC(ObjID : Cardinal) : Boolean

параметр объекта: вещь или персонаж?

IsObjectExists

function IsObjectExists(ObjID : Cardinal) : Boolean

Существует ли объект в мире (пришел от сервера) или нет


IsPoisoned

function IsPoisoned(ObjID : Cardinal) : Boolean

параметр объекта: poisoned?


IsRunning

function IsRunning(ObjID : Cardinal) : Boolean

параметр объекта: бег

IsTrade

function IsTrade : Boolean


IsWarMode

function IsWarMode(ObjID : Cardinal) : Boolean

параметр объекта: war режим

IsWorldCellPassable

function IsWorldCellPassable (CurrX, CurrY : Word; Z : ShortInt; DestX, DestY : Word; var DestZ : ShortInt; WorldNum : Byte) : Boolean

Проверка проходимости соседней точки.

Для проверки проходимости удаленной точки используется функция Doc:RU/Api/GetPathArray


IsYellowHits

function IsYellowHits(ObjID : Cardinal) : Boolean

параметр объекта: yellowhits?

Journal

function Journal(StringIndex : Integer) : String

чтение строки в журнале по индексу

LastContainer

function LastContainer() : Cardinal

Возвращает параметр чара - ID последнего открытого контейнера (Last Opened Container).

В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример 1:

if LastContainer <>MyGoldContainer then
begin
  UseObject(MyGoldContainer)
end;

Пример 2:

  AddToSystemJournal('Последний открытый контейнер(Last Opened Container): ' + IntToStr(LastContainer))

LastJournalMessage

function LastJournalMessage: String

последнее сообщение в журнале Пример:

 


LegsLayer

function LegsLayer() : Byte

Возвращает номер слоя 0x18 - Ноги плейтовые (Legs Armor)).

Пример 1:

if ObjAtLayer(LegsLayer) > 0 then 
  AddToSystemJournal('Legs Armor ID: '+IntToStr(ObjAtLayer(LegsLayer)));

Пример 2:

{Если на слое чтото есть, то снимаем}
if ObjAtLayer(LegsLayer) <> 0 then
  begin
    unequip(LegsLayer);
    wait(1000);
  end;


LhandLayer

function LhandLayer() : Byte

Возвращает номер слоя 0x02 - Левая рука (Left Hand).

Внимание!!! ВСЕ ДВУРУЧНЫЕ Итемы (топоры и тд) одеваются в левую руку (LhandLayer), несмотря на картинку папердола в клиенте!!!

Пример 1:

if (getquantity(findtype(tweapon,ground)) > 0) 
    and (gettype(ObjAtLayer(LhandLayer)) <> gettype(finditem)) then 
  begin 
    addtosystemjournal('Weapon Change, осталось '+inttostr(findcount)); 
    UnEquip(RHandLayer); 
    wait(500); 
    Equip(LhandLayer,finditem); 
  end;

Пример 2:

{Если на слое чтото есть, то снимаем}
if ObjAtLayer(LhandLayer) <> 0 then
  begin
    disarm;
    wait(1000);
  end;


Life

function Life() : Integer

То же, что и Doc:RU/Api/HP.

Возвращает параметр чара - здоровье (HITS).

В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример 1:

if (Life > 0) then
begin
  ''Do something
end;

Пример 2:

AddToSystemJournal('Здоровье чара: ' + IntToStr(Life));

LineCount

function LineCount: Integer

количество найденных строк в журнале

LineID

function LineID: Cardinal

ID чара, который сказал данную фразу

LineIndex

function LineIndex: Integer

индекс последней найденной строки

LineMsgType

function LineMsgType: Byte

тип сообщения

LineName

function LineName: String

имя адресата

LineTextColor

function LineTextColor: Word

цвет текста сообщения

LineTextFont

function LineTextFont: Word

шрифт текста

LineTime

function LineTime: TDateTime

дата и время получения сообщения

LineType

function LineType: Word

type адресата

LowJournal

function LowJournal : Integer

младший индекс строк журнала


Luck

function Luck() : Word

Возвращает параметр чара - Удача (Luck).

Работает только начиная с версии клиента Samurie Empire + на сервере должен быть включен режим расширенных статов,отсылаемых клиенту, иначе вернет 0.

В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример:

  AddToSystemJournal('Удача чара (Char Luck): ' + IntToStr(Luck))

MR

function MR : Word;

Returns reagent type: Mandrake Root

MRCount

function MRCount : Word;

Returns Mandrake Root count in backpack.


Mana

function Mana() : Integer

Возвращает параметр чара - Мана (Mana points).

В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример 1:

if (Mana < 30) then
begin
  UseSkill('Meditation');
end;

Пример 2:

AddToSystemJournal('Кол-во маны: ' + IntToStr(Mana));


MaxHP

function MaxHP() : Integer

То же, что и Doc:RU/Api/MaxLife.

В 99% случаев равно Str. Может отличаться, только если админ специально меняет параметры обьекта (чара, НПЦ) и руками выставляет MaxHP отличное от Str(обычно в бОльшую сторону).

Возвращает параметр чара - максимальное кол-во здоровья (Max HITS).

В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример 1:

if (Life < MaxHP) then
begin
  UOSay('Man, some problem with HP here');
end;

Пример 2:

AddToSystemJournal('Максимум здоровья чара: ' + IntToStr(MaxHP));


MaxLife

function MaxLife() : Integer

То же, что и Doc:RU/Api/MaxHP.

В 99% случаев равно Str. Может отличаться, только если админ специально меняет параметры обьекта (чара, НПЦ) и руками выставляет MaxHP отличное от Str(обычно в бОльшую сторону).

Возвращает параметр чара - максимальное кол-во здоровья (Max HITS).

В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример 1:

if (Life < MaxLife) then
begin
  UOSay('Man, some problem with HP here');
end;

Пример 2:

AddToSystemJournal('Максимум здоровья чара: ' + IntToStr(MaxLife));


MaxMana

function MaxMana() : Integer

В 99% случаев равно Int. Может отличаться, только если админ специально меняет параметры обьекта (чара, НПЦ) и руками выставляет MaxMana отличное от Int(обычно в бОльшую сторону).

Возвращает параметр чара - максимальное кол-во маны (Max Mana).

В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример 1:

if (Mana < MaxMana) then
begin
  UOSay('It's time for meditation');
end;

Пример 2:

AddToSystemJournal('Максимум маны чара: ' + IntToStr(MaxMana));


MaxStam

function MaxStam() : Integer

В 99% случаев равно Dex. Может отличаться, только если админ специально меняет параметры обьекта (чара, НПЦ) и руками выставляет MaxStam отличное от Dex(обычно в бОльшую сторону).

Возвращает параметр чара - максимальное кол-во стамины (Max Stamina).

В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример 1:

if (Stam < MaxStam) then
begin
  UOSay('Not full stamina');
end;

Пример 2:

AddToSystemJournal('Максимум стамины чара: ' + IntToStr(MaxStam));


MaxWeight

function MaxWeight() : Word

Возвращает параметр чара - Максимальный Вес (Weight).

Работает только начиная с версии клиента Samurie Empire + на сервере должен быть включен режим расширенных статов,отсылаемых клиенту, иначе вернет 0.


В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример 1:

if Weight > MaxWeight - 20 then
begin
  ''do something, like go home, or drop, etc.
end;

Пример 2:

  AddToSystemJournal('Максимальный Вес (Your Max weight): ' + IntToStr(MaxWeight))


MenuHookPresent

function MenuHookPresent : Boolean

В случае, если на меню были установлены ловушки (Doc:RU/Api/WaitMenu, Doc:RU/Api/AutoMenu) возвращает True, иначе False.


MenuPresent

function MenuPresent : Boolean

Возвращает True, если есть активное меню. False - нету.

MobileCanBeRenamed

 function MobileCanBeRenamed(Mob_ID: Cardinal): Boolean;

Параметр NPC: Можно ли переименовать?

Пример на Python:

mob_id = 0x4020ae30
 
print(str(MobileCanBeRenamed(mob_id)));

Результат:

22:50:48:546 [CharName]: 0

MoveBetweenTwoCorners

MoveBetweenTwoCorners : Boolean;

Переменная. Можно ли проходить через 2 угловых препятствия.

Beetwen.gif

Используется во всех функция перемещения.

Значение умолчанию False.

MoveCheckStamina

MoveCheckStamina : Word;

Переменная. Минимальное значение стамины при котором можно ходить.

Проверка от перегруза. Определяет минимальное значение стамины, при котором чар ещё может ходить.

Используется в функциях Doc:RU/Api/Step, Doc:RU/Api/StepQ, Doc:RU/Api/MoveXY и Doc:RU/Api/NewMoveXY. Если чар мертвый, то проверка не производится.

Значение умолчанию 1.

MoveHeuristicMult

MoveHeuristicMult : Integer;

Переменная. Эвристический коэффициент.

Коэффициент эвристической оценки при поиске пути.

При значении 0 - будет найден кратчайший маршрут до цели, но это займет больше времени. При значениях >100 - маршрут будет найден быстрее, но он может существенно отличатся от кратчайшего. Значения больше 500 как правило уже не оказывают влияния на маршрут, но бывают и исключения.

Используется при поиске пути в Doc:RU/Api/NewMoveXY, Doc:RU/Api/MoveXY и Doc:RU/Api/GetPathArray вместо параметра Optimized.

Значение по умолчанию 93.

MoveItem

function MoveItem(ItemID : Cardinal; Count : Integer; MoveIntoID : Cardinal; X,Y,Z : Integer) : Boolean

Переместить предмет.

Важно: Ф-ция построена на основе связки ф-ций: DragItem() + DropItem(), поэтому если вы желаете понимать, как это будет работать - изучите внимательно работу ф-ций Doc:RU/Api/DragItem, Doc:RU/Api/DropItem. Некоторые шарды некоректно реагируют на координаты 0,0,0, в случае ошибки переноса следует заменить их на 1,1,0

See also: Doc:RU/Api/DragItem, Doc:RU/Api/DropItem

MoveItems

function MoveItems(Container : Cardinal; ItemsType : Word; ItemsColor : Word; MoveIntoID : Cardinal; X,Y,Z : Integer; DelayMS : Integer) : Boolean

Переместить с задержкой DelayMS предметы типа ItemsType из контейнера Container в контейнер MoveIntoID

MoveOpenDoor

MoveOpenDoor : Boolean;

Переменная. Открывать двери при движении.

Если True - чар пытается открыть дверь, возникшую у него на пути. Если при трёх попытках дверь не открлась, она считается залоченной. При значении True чар не будет срезать углы.

Используется только в Doc:RU/Api/StepQ и Doc:RU/Api/NewMoveXY. Функции Doc:RU/Api/MoveXY, Doc:RU/Api/Step и Doc:RU/Api/Raw_Move игнорируют значение этой переменной и двери не открывают.

Значение по умолчанию False.

MoveThroughCorner

MoveThroughCorner : Boolean;

Переменная. Можно ли пройти через угловое препятствие.

Beetwen2.gif

Используется во всех функция перемещения.

Значение умолчанию False.

MoveThroughNPC

MoveThroughNPC : Word;

Переменная. Минимальное значение стамины при котором можно проходить через чара/NPC.

Если задан ноль, пытается пройти сквозь чара при любом значении стамины.

Используется во всех функциях перемещения.

Значение по умолчанию 1000.

MoveTurnCost

MoveTurnCost : Integer;

Переменная. Штраф на поворот во время движения.

Учитывается при построении маршрута движения функцией Doc:RU/Api/GetPathArray. Значение отлично от нуля, немного замедлит поиск, но найденный маршрут будет содержать меньшее количество поворотов, что ускорит перемещение. Отрицательные значение наоборот позволят делать больше поворотов в маршруте.

Значение по умолчанию 14.

MoveXY

function MoveXY(Xdst, Ydst : Word; Optimized : Boolean; Accuracy : Integer; Running : Boolean) : Boolean

Функция просчитывает путь в точку и движется к ней.

Xdst, Ydst - координаты точки, к которой нужно прийти.

Optimized - при True будет производиться более сложный просчет пути, поэтому рекомендуется включать только на дистанции до 200 тайлов. Параметр Optimizd оставлен для совместимости, см. Doc:RU/Api/MoveHeuristicMult

Accuracy - точность приближения: 0 - прямо на точку, 1 - рядом в радиусе одного тайла и т.д. Длина ограничена 1000 тайлами.

Running - бежать/идти в точку.

Если путь был успешно пройден, то функция вернет True, иначе False.

Данная функция не подходит для шардов, где для выхода с корабля требуется пройти на трап. В этом случае нужно стать перед трапом и использовать Doc:RU/Api/Step в направлении открытого трапа

Функция является устаревшей, более новый аналог Doc:RU/Api/NewMoveXY


MoveXYZ

function MoveXYZ(Xdst, Ydst : Word; Zdst : ShortInt; AccuracyXY, AccuracyZ : Integer; Running : Boolean) : Boolean

Функция просчитывает путь в точку и движется к ней.

Xdst, Ydst, Zdst - координаты точки, к которой нужно прийти.

AccuracyXY, AccuracyZ - точность приближения: 0 - прямо на точку, 1 - рядом в радиусе одного тайла и т.д. Длина ограничена 1000 тайлами.

Running - бежать/идти в точку.

Если путь был успешно пройден, то функция вернет True, иначе False.

Данная функция не подходит для шардов, где для выхода с корабля требуется пройти на трап. В этом случае нужно стать перед трапом и использовать Doc:RU/Api/Step в направлении открытого трапа

MsToDateTime

function MsToDateTime(TimeMS : Word) : TDateTime


NRstkLayer

function NRstkLayer() : Byte

Возвращает номер слоя 0x1B - Товарный бекпак 2 у вендора (NPC Buy no restock container).

У обычных игровых чаров контейнер на этом слое отсутствует, т.е. ObjAtLayer(NRstkLayer) = 0.

Пример 1:

if ObjAtLayer(NRstkLayer) > 0 then 
  AddToSystemJournal('NRstkLayer ID: '+IntToStr(ObjAtLayer(NRstkLayer)));

NS

function NS : Word;

Returns reagent type: Nightshade

NSCount

function NSCount : Word;

Returns Nightshade count in backpack.


NeckLayer

function NeckLayer() : Byte

Возвращает номер слоя 0x0A - Ожерелье, Горжетка (Neck).

Пример 1:

if ObjAtLayer(NeckLayer) > 0 then 
  AddToSystemJournal('Neck ID: '+IntToStr(ObjAtLayer(NeckLayer)));

Пример 2:

{Если на слое чтото есть, то снимаем}
if ObjAtLayer(NeckLayer) <> 0 then
  begin
    unequip(NeckLayer);
    wait(1000);
  end;

NewMoveXY

function NewMoveXY(Xdst, Ydst : Word; Optimized : Boolean; Accuracy : Integer; Running : Boolean) : Boolean

Функция просчитывает путь в точку и движется к ней.

Преимущества по сравнению с Doc:RU/Api/MoveXY:

1) Огромное уменьшение времени на просчет длинного пути за счет того, что маршрут пересчитывается не на каждом шаге, а один раз и до препятствия.

2) Новая система шагов, дает некоторый прирост скорости за счет оптимизации.

3) Авто-открывание дверей (при включенной опции) (добавить ссылки!)

4) Поддержка опций (добавить ссылки!)

//Xdst, Ydst// - координаты точки, к которой нужно прийти.

//Optimized// - при //True// будет производиться более сложный просчет пути, поэтому рекомендуется включать только на дистанции до 200 тайлов. Параметр Optimizd оставлен для совместимости, см. Doc:RU/Api/MoveHeuristicMult

//Accuracy// - точность приближения: 0 - прямо на точку, 1 - рядом в радиусе одного тайла и т.д. Длина ограничена 1000 тайлами.

//Running// - бежать/идти в точку.

Если путь был успешно пройден, то функция вернет //True//, иначе //False//.

Данная функция не подходит для шардов, где для выхода с корабля требуется пройти на трап. В этом случае нужно стать перед трапом и использовать Doc:RU/Api/Step в направлении открытого трапа

Пример:

  NewMoveXY(100,100,True,0,True);

NumGumpButton

function NumGumpButton(GumpIndex, Value : Integer) : Boolean

Не работает как ловушка на гамп, а только для обработки уже пришедших гампов.

Принцип работы такой же, как и у Doc:RU/Api/WaitGump, с тем лишь отличием, что нет перебора ВСЕХ гампов в списке, а перебираются кнопки только того гампа, индекс которого указан в GumpIndex

Если такая кнопка не найдена - то ничего серверу не отсылается, а функция вернет False.


Пример:

{кусок крафтерского скрипта. 
Сначала ставится ловушка на таргет на инготы на полу, 
потом использование тинкертулзов для вызова гампа,
затем замена значения TextEntry гампа, 
затем жмется кнопка гампа.}
  WaitTargetGround($1BF5); 
  a := GetGumpsCount; 
  UseObject(FindType($1EB9,backpack));
  while a = GetGumpsCount do
    Wait(50);
  NumGumpTextEntry(GetGumpsCount-1,513, '30');
  NumGumpButton(GetGumpsCount-1,7956);

NumGumpCheckBox

function NumGumpCheckBox(GumpIndex, CBID, Value : Integer) : Boolean

Не работает как ловушка на гамп, а только для обработки уже пришедших гампов.

Принцип работы такой же, как и у Doc:RU/Api/GumpAutoCheckBox, с тем лишь отличием, что нет перебора ВСЕХ гампов в списке, а перебираются CheckBox только того гампа, индекс которого указан в GumpIndex

Если такой CheckBox не найдена, то функция вернет False.

При этом ответ на гамп серверу НЕ отправляется! Это надо сделать через Doc:RU/Api/WaitGump либо Doc:RU/Api/NumGumpButton

Пример:

  WaitTargetGround($1BF5); 
  a := GetGumpsCount; 
  UseObject(FindType($1EB9,backpack));
  while a = GetGumpsCount do
    Wait(50);
  NumGumpCheckBox(GetGumpsCount-1,1537, 1);
  NumGumpButton(GetGumpsCount-1,'7956');

NumGumpRadiobutton

function NumGumpRadiobutton(GumpIndex : Word; RadiobuttonID,Value : Integer): Boolean;

NumGumpTextEntry

function NumGumpTextEntry(GumpIndex, TextEntryID : Integer; Value : String) : Boolean

Не работает как ловушка на гамп, а только для обработки уже пришедших гампов.

Принцип работы такой же, как и у Doc:RU/Api/GumpAutoTextEntry, с тем лишь отличием, что нет перебора ВСЕХ гампов в списке, а перебираются TextEntry только того гампа, индекс которого указан в GumpIndex

Если такой TextEntry не найдена, то функция вернет False.

Пример:

{кусок крафтерского скрипта. 
Сначала ставится ловушка на таргет на инготы на полу, 
потом ловушка на входящий гамп, для замены значения TextEntry, 
затем ловушка на гамп на кнопку, 
и только потом использование тинкертулзов для вызова гампа.}
  WaitTargetGround($1BF5); 
  a := GetGumpsCount; 
  UseObject(FindType($1EB9,backpack));
  while a = GetGumpsCount do
    Wait(50);
  NumGumpTextEntry(GetGumpsCount-1,513, '30');
  NumGumpButton(GetGumpsCount-1, 7956);


ObjAtLayer

function ObjAtLayer(LayerType: Byte): Cardinal

Возвращает ID обьекта находящегося на своем чаре на указаном слое LayerType

В случае, если отсутствует соединение с UO сервером, либо в слое ничего не одето - вернет 0.

Пример:

if ObjAtLayer(EggsLayer) > 0 then 
  AddToSystemJournal('Skirt ID: '+IntToStr(ObjAtLayer(EggsLayer)));


ObjAtLayerEx

function ObjAtLayerEx(LayerType: Byte; PlayerID: Cardinal): Cardinal

Возвращает ID обьекта для чара PlayerID, находящегося на указаном слое LayerType

В случае, если отсутствует соединение с UO сервером, либо в слое ничего не одето - вернет 0.

Пример:

if ObjAtLayerEx(RhandLayer,sparring_partner) = 0 then 
  AddToSystemJournal('Sparring partner has no weapon in hand!');


OpenDoor

Работает как аналогичная команда в клиенте.

Пример:

OpenDoor;


PantsLayer

function PantsLayer() : Byte

Возвращает номер слоя 0x04 - Штаны (Pants).

Пример 1:

if ObjAtLayer(PantsLayer) > 0 then 
  AddToSystemJournal('Pants ID: '+IntToStr(ObjAtLayer(PantsLayer)));

Пример 2:

{Если на слое чтото есть, то снимаем}
if ObjAtLayer(PantsLayer) <> 0 then
  begin
    unequip(PantsLayer);
    wait(1000);
  end;


Paralyzed

function Paralyzed() : Boolean

Возвращает параметр чара - парализованность (Paralyzed).

В случае, если отсутствует соединение с UO сервером - вернет False.

Пример 1:

if Paralyzed then
begin
  ''do something, like cast Cure or drink cure potion
end;

Пример 2:

if (not Paralyzed) then
  AddToSystemJournal('Чар не парализован');
else
  AddToSystemJournal('Чар парализован');

PartyAcceptInvite

procedure PartyAcceptInvite;

Принять приглашение в отряд

PartyCanLootMe

procedure PartyCanLootMe(Value : Boolean);

Разрешение\запрет другим членам отряда лутить ваш труп.

PartyDeclineInvite

procedure PartyDeclineInvite;

Отклонить приглашение в отряд.

PartyLeave

procedure PartyLeave;

Выйти из отряда, в которым состоит чар.

PartyMembersList

function PartyMembersList : TStringList;

Возвращает список участников отряда.

PartyMessageTo

procedure PartyMessageTo(ID : Cardinal; Msg : String);

Отправить party-сообщение MSG члену отряда с идентификатором ID

PartySay

procedure PartySay(Msg : String);

Отправить сообщение Msg в чат отряда

PauseCurrentScript

procedure PauseCurrentScript;

Ставит текущий скрипт на паузу


PetsCurrent

function PetsCurrent() : Byte

Возвращает параметр чара - количество животных (Pets).


В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример:

 if PetsCurrent > 2 then
  UOSay('У меня больше 2-х животных');


PetsMax

function PetsMax() : Byte

Возвращает параметр чара - максимальное количество животных (Pets Maximum).


В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример:

 if PetsCurrent < PetsMaximum then
  UOSay('Я еще могу приручить животное);

PlayWav

function PlayWav(FileName : String) : Boolean


PoisonResist

function PoisonResist() : Word

Возвращает параметр чара - сопротивление яду (Poison Resist).

Работает только начиная с версии клиента Samurie Empire + на сервере должен быть включен режим расширенных статов,отсылаемых клиенту, иначе вернет 0.


В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример 1:

if PoisonResist> 0 then
begin
  ''do something, like go home, or drop, etc.
end;

Пример 2:

  AddToSystemJournal('Текущий Poison Resist: ' + IntToStr(PoisonResist))


Poisoned

function Poisoned() : Boolean

Возвращает параметр чара - Отравленность (Poisoned).

В случае, если отсутствует соединение с UO сервером - вернет False.

Пример 1:

if Poisoned then
begin
  ''do something, like cast Cure or drink cure potion
end;

Пример 2:

if (not Poisoned) then
  AddToSystemJournal('Чар не отравлен')
else
  AddToSystemJournal('Чар отравлен');

Power

function Power(Base : Extended;Exponent : Extended) : Extended;

PredictedDirection

function PredictedDirection : Byte;

Предсказанное направление чара.

Uo-directions.png

PredictedX

function PredictedX : Word;

Предсказанная координата X чара.

PredictedY

function PredictedY : Word;

Предсказанная координата Y чара.

PredictedZ

function PredictedZ : ShortInt;

Предсказанная координата Z чара.

PrintScriptMethodsList

procedure PrintScriptMethodsList(FileName : String = ''; SortedList : Boolean = False);

Выводит список всех скриптовых методов с параметрами. Параметры опциональны(необязательны). FileName - имя файла, куда будет записаны все методы. SortedList - сортировать список по алфавиту или нет, если не задано - не сортируется.


Пример 1 - Простой вывод всех методов в окно без сортировки:

PrintScriptMethodsList;

Пример 2 - Запись всех скриптовых методов с сортировкой по алфавиту в файл '0000.txt' в каталоге стелса:

PrintScriptMethodsList('0000.txt',True);

ProxyIP

function ProxyIP : String;

ProxyPort

function ProxyPort : Word;

QuestRequest

procedure QuestRequest

То же самое, что и кнопка "Quest" на папердолле в клиенте.


Race

function Race() : Byte

Возвращает параметр чара - Раса (Race).

Работает только начиная с версии клиента Samurie Empire + на сервере должны быть включены расы, иначе вернет 0.

Значения: 0=Human, 1=Elf (на некоторых серверах эти стандартные значения могут быть изменены либо расширены)


В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример:

  AddToSystemJournal('Раса чара (Char Race): ' + IntToStr(Race))

Random

function Random(const ARange: Integer): Integer;

RandomRange

function RandomRange(const AFrom, ATo: Integer): Integer;

Randomize

процедура отсутствует за ненадобностью (уже выполняется в стелсе)


Raw_Move

function Raw_Move(Direction : Byte; Running : Boolean) : Boolean

Функция во всем аналогична Doc:RU/Api/Step кроме возвращаемого результата. В случае если шаг успешно сделан, возвращает True, иначе False

ReadStaticsXY

function ReadStaticsXY(X,Y:word; WorldNum : byte):TStaticCell

Получение массива статики в точке мира

TStaticCell = record 
 Statics : array of TStaticItem;
 StaticCount : Byte;
end;

где

TStaticItem = record 
 Tile : Word; 
 X : Word; 
 Y : Word; 
 Z : ShortInt; 
 Color : Word; 
end;

RemoveFigure

function RemoveFigure(id : Cardinal) : boolean;

Принимат аргумент типа кардинал, это номер возвращенный функцией AddFigure, в случае если фигура с таким номером есть, возвращает True, иначе False.

RemoveFromParty

procedure RemoveFromParty(ID : Cardinal);

Убрать персонажа из отряда.

RenameMobile

procedure RenameMobile(Mob_ID : Cardinal; NewName : String)

RequestContextMenu

procedure RequestContextMenu(ID : Cardinal)

RequestStats

procedure RequestStats(ObjID : Cardinal)


RhandLayer

function RhandLayer() : Byte

Возвращает номер слоя 0x01 - Правая рука (Right Hand).

Внимание!!! ВСЕ ДВУРУЧНЫЕ Итемы (топоры и тд) одеваются в левую руку (LhandLayer), несмотря на картинку папердола в клиенте!!!

Пример 1:

if (getquantity(findtype(tweapon,ground)) > 0) 
    and (gettype(ObjAtLayer(RhandLayer)) <> gettype(finditem)) then 
  begin 
    addtosystemjournal('Weapon Change, осталось '+inttostr(findcount)); 
    UnEquip(RHandLayer); 
    wait(500); 
    Equip(RhandLayer,finditem); 
  end;

Пример 2:

{Если на слое чтото есть, то снимаем}
if ObjAtLayer(RhandLayer) <> 0 then
  begin
    disarm;
    wait(1000);
  end;


RingLayer

function RingLayer() : Byte

Возвращает номер слоя 0x08 - Кольцо (Ring).

Пример 1:

if ObjAtLayer(RingLayer) > 0 then 
  AddToSystemJournal('Ring ID: '+IntToStr(ObjAtLayer(RingLayer)));

Пример 2:

{Если на слое чтото есть, то снимаем}
if ObjAtLayer(RingLayer) <> 0 then
  begin
    unequip(RingLayer);
    wait(1000);
  end;


RobeLayer

function RobeLayer() : Byte

Возвращает номер слоя 0x16 - Роба (Robe).

Пример 1:

if ObjAtLayer(RobeLayer) > 0 then 
  AddToSystemJournal('Robe ID: '+IntToStr(ObjAtLayer(RobeLayer)));

Пример 2:

{Если на слое чтото есть, то снимаем}
if ObjAtLayer(RobeLayer) <> 0 then
  begin
    unequip(RobeLayer);
    wait(1000);
  end;


RstkLayer

function RstkLayer() : Byte

Возвращает номер слоя 0x1A - Товарный бекпак 1 у вендора (NPC Buy Restock container).

У обычных игровых чаров контейнер на этом слое отсутствует, т.е. ObjAtLayer(RstkLayer) = 0.

Пример 1:

if ObjAtLayer(RstkLayer) > 0 then 
  AddToSystemJournal('RstkLayer ID: '+IntToStr(ObjAtLayer(RstkLayer)));

SA

function SA : Word;

Returns reagent type: Sulphurous Ash

SACount

function SACount : Word;

Returns Sulphurous Ash count in packpack.

SS

function SS : Word;

Returns reagent type: Spider Silk

SSCount

function SSCount : Word;

Returns Spider Silk count in backpack.


Salute

function Salute

Salute - это жест, который сделает ваш персонаж

Пример:

  Salute;


Self

function Self() : Cardinal

Возвращает параметр чара - ID чара (Char ID).

В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример:

  WaitTargetObject(Self);
  CastSpell('Bless');


SellLayer

function SellLayer() : Byte

Возвращает номер слоя 0x1C - Товарный бекпак 3 у вендора (NPC Sell container).

У обычных игровых чаров контейнер на этом слое отсутствует, т.е. ObjAtLayer(SellLayer) = 0.

Пример 1:

if ObjAtLayer(SellLayer) > 0 then 
  AddToSystemJournal('NPC Sell container ID: '+IntToStr(ObjAtLayer(SellLayer)));


SetARStatus

procedure SetARStatus(Value : Boolean)

Устанавливает режим реконнектора: True - реконектор включен, False - выключен

Пример 1: {{page>:examples:connect&nofooter}}

См. также

SetAutoBuyDelay

procedure SetAutoBuyDelay(Value : Word)

SetAutoSellDelay

procedure SetAutoSellDelay(Value : Word)


SetBadLocation

procedure SetBadLocation(X,Y: Word)

Помечает точку с координатами X, Y как непроходимую.

Таймаут 15 минут, после - флаг непроходимости снимается.

Пример:

if FindType($0190,Ground) > 0 then
  SetBadLocation(GetX(FindItem),GetY(FindItem));


SetBadObject

procedure SetBadObject(ObjType : Word;Color : Word;Radius : Byte);

Помечает объект как "плохой". Functions хождения это учитывают при построении маршрута.

Таймаут 15 минут, после - флаг непроходимости снимается.

Пример:

if FindType($0190,Ground) > 0 then
  SetBadLocation(GetX(FindItem),GetY(FindItem));

SetCatchBag

function SetCatchBag(ObjID : Cardinal) : Byte;

SetCmdPrefix

procedure SetCmdPrefix(Value : Char);

устанавливает символ-префикс после которого можно ввести команду, по умолчанию «запятая» : ,useobject

SetContextMenuHook

procedure SetContextMenuHook(VendorID : Cardinal; EntryNumber : Byte)

Для сброса ловушки контекстного меню используйте VendorID = 0:

SetContextMenuHook(0, 0);


SetDress

procedure SetDress()

Сохранение набора одежды/екипировки

SetEasyUO

procedure SetEasyUO(num: Integer; Regvalue : String)

Создает, если не было, или изменяет переменную, со звездочкой (*) в начале в регистре Windows в ветке HKEY_CURRENT_USER\Software\EasyUO. Такая переменная может быть считана или поменяна из EasyUO, создавая таким образом некий вариант совместимости.

Пример (Python):

SetEasyUO(56, "Kill them all!")

создаст в ветке реестра переменную *56 со значением "Kill them all!". Из EasyUO считать можно:

display This is your text: *56
 
set %myvar *56
display This is your text: %myvar

SetEasyUO в качестве параметра num, принимает только Integer, хотя EasyUO нормально работает и с текстовыми переменными типа: *database, *alert, *any_other_text. Такие текстовые переменные недоступны из скриптов Stealth.

Функция обратного действия: Doc:RU/Api/GetEasyUO

SetEventProc

procedure SetEventProc(Event : EventType, FunctionName : String);

простой пример - шард с антимакрос-гампами. крафт стоит на макросе (неважно каком). Ему прилетает гамп. Сейчас чар должен постоянно проверять (через каждое действие) наличие гампа, а так он себе возится неспеша, а тем временем ивент на приход гампа сработал, и процедура в скрипте моментально обработает этот гамп и отправит ответ, а основной скрипт ничего и не заметит.

Еще один пример - ивент на дисконнект(или ошибку) аси - чтобы отдельно от основного скрипта отслеживать состояние аси, дабы постоянно держать ее в рабочем состоянии.

Список доступных событий(EventType):

  • evItemInfo, evItemDeleted  : [ID] - понятно
  • evSpeech : [Text,SenderName,SenderID] - приход сообщения не юникод(пакет 0x1C)
  • evUnicodeSpeech : [Text,SenderName,SenderID] - сообщение в юникоде (пакет 0xAE).
  • зачастую на серверах используются оба пакета.
  • evDrawGamePlayer : [ID] - пакет 0x20, в основном используется для отрисовки нашего чара, но не всегда.
  • evMoveRejection : [Xorig, Yorig, Dir, XDest, YDest] (все Word) - сервер отбросил, не разрешил шагнуть.
  • evDrawContainer : [ID, ModelGump] - отрисовка контейнера (0x24 пакет)
  • evAddItemToContainer : [ObjID, ContainerID] - добавление айтема в контейнер (0x25);
  • evAddMultipleItemsInCont : [ContainerID] - отрисовка контейнера, пакет 0x3C
  • evRejectMoveItem :[Reason] - запрет драг\дропа.
    • 0-you can not pick that up.
    • 1-that is too far away.
    • 2-That is out of sight.
    • 3-that item does not belong to you. You'll have to steal it
    • 4-you are already holding an item.
    • 5-you must wait to perform another action.
  • evUpdateChar, evDrawObject : [ID] - отрисовка чара (не обязательно нашего!)
  • evMenu : [DialogID,MenuID] (DialogID : Cardinal;MenuID : Word;) - понятно
  • evMapMessage : [ID,centerx,centery] - карта открылась
  • evAllow_RefuseAttack [ID,Attack_OK] Attack_OK: Boolean(ID = 0,если Attack_OK = False) - понятно
  • evClilocSpeech : [SenderID,SenderName,ClilocID,Text] (ClilocID : Cardinal;) - клилок\тултип сообщение (текст, не тултип от айтема!)
  • evClilocSpeechAffix : [SenderID,SenderName,ClilocID,Affix,ClilocText] (Affix : String, ClilocID : Cardinal) - то же самое, с мелкими отличиями
  • evBuff_DebuffSystem : [ID,Attribute_ID,IsEnabled] (Attribute_ID : Word;IsEnabled : Boolean;) - при изменении состояния (касты и все такое)
  • evClientSendResync : [] (нет параметров, голый вызов функции) - стелс (или клиент через него) отослали ресинк
  • evCharAnimation : [ID,Action] (Action : Word;)
  • evIncomingGump : [Serial,GumpID,X,Y] (все Cardinal)
  • evICQIncomingText, 'ICQ Disconnect' - понятно.
  • evICQDisconnect,
  • evICQConnect,
  • evICQIncomingText,
  • evICQError
  • evTimer1, evTimer2 - никаких параметров, просто вызов каждые 100 мс.
  • evWindowsMessage : [Dword] - подробности отдельно

ID, SenderID, ContainerID и прочие ID - все Cardinal.

Пример:

Program Test; 
 
procedure Unicode_Speech(text,SenderName : String; SenderID : Cardinal); 
begin 
AddToSystemJournal('Event! Unicode Speech: SenderID = $'+ IntToHex(SenderID,8) + ' ; SenderName =  ' + SenderName + '; SenderText : ' + text); 
end; 
 
procedure Char_Animation(ID : Cardinal; Action : Word); 
begin 
AddToSystemJournal('Event! Char Animation: ID = $'+ IntToHex(ID,8) + ' ; Action =  ' + IntToStr(Action)); 
end; 
 
procedure multiple_Items(ContainerID : Cardinal); 
begin 
AddToSystemJournal('Event! Add multiple Items In Cont: ContID = $'+ IntToHex(ContainerID,8)); 
end; 
 
begin 
SetEventProc(evUnicodeSpeech,'Unicode_Speech'); 
SetEventProc(evCharAnimation,'Char_Animation'); 
SetEventProc(evAddMultipleItemsInCont,'multiple_Items'); 
 
while True do 
wait(50); 
end.

Ещё один нюанс для Python. Передать информацию из сработавшего Event-а в основной скрипт можно или через Doc:RU/Api/SetGlobal или внутри Event-а объявлять питоновскую global:

ItemID, BagID=0,0
 
def AddItemToContainer(ObjID, ContainerID):
  global ItemID, BagID
 
SetEventProc(evAddItemToContainer, AddItemToContainer)

В этом случае ItemID, BagID могут быть оперативно использованы из других частей скрипта.


SetGlobal

procedure SetGlobal(GlobalRegion : String; VarName : String; VarValue : String)

Устанавливает глобальной переменной с именем VarName значение VarValue в области видимости GlobalRegion. Область видимости может быть 'char' или 'stealth'. Если область видимости 'char', то переменная видна всем скриптам запущенном на данном чаре, область видимости 'stealth' делает переменную видимой для всех чаров и скриптов. GlobalRegion и VarName не чувствительны к регистру.

Пример 1: {{page>:examples:globals&nofooter}}

См. также

SetGoodLocation

procedure SetGoodLocation(X, Y : Word);

Помечает точку (X, Y) как проходимую.

SetJournalLine

procedure SetJournalLine(StringIndex : Integer; Text : String)

меняем содержимое строки в журнале


SetPauseScriptOnDisconnectStatus

procedure SetPauseScriptOnDisconnectStatus(Value : Boolean)

Задает поведение скрипта при дисконнекте. если Value True то при дисконнекте, все запущенные скрипты встанут на паузу.

Пример 1: {{page>:examples:pausescript&nofooter}}

См. также

SetRunMountTimer

procedure SetRunMountTimer(Value: Word)

Timer to slow\speed up walking\running with Move* functions

SetRunUnmountTimer

procedure SetRunUnmountTimer(Value: Word)

Timer to slow\speed up walking\running with Move* functions

SetSilentMode

procedure SetSilentMode(Value : Boolean)

SetSkillLockState

// v7.9.1+
procedure SetSkillLockState(SkillName : String; skillState : Byte);

Устанавливает Lock State навыку SkillName .

SetStatLockState

// v7.9.1+
procedure SetStatLockState(statNum : Byte; statState : Byte);

Устанавливает Lock State силе, ловкости или интеллекту.

SetWalkMountTimer

procedure SetWalkMountTimer(Value: Word)

Timer to slow\speed up walking\running with Move* functions

SetWalkUnmountTimer

procedure SetWalkUnmountTimer(Value: Word)

Timer to slow\speed up walking\running with Move* functions

SetWarMode

procedure SetWarMode(Value : Boolean)

Установить/сбросить режим боя.

Пример:

if (WarMode = false) then
  SetWarMode(true);


Sex

function Sex() : Byte

Возвращает параметр чара - Пол (Sex).

Если возврщает 0 - male мужской, 1- female женский

В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример:

case Sex of
  0: AddToSystemJournal('Чар мужского пола')
  1: AddToSystemJournal('Чар женского пола')
  else AddToSystemJournal('Чар еще не определился :)');


ShardName

function ShardName : String

Возвращает название шарда указанное в настройках стелса.

Пример:

  AddToSystemJournal(ShardName);


ShirtLayer

function ShirtLayer() : Byte

Возвращает номер слоя 0x05 - Рубашка (Shirt).

Пример 1:

if ObjAtLayer(ShirtLayer) > 0 then 
  AddToSystemJournal('Shirt ID: '+IntToStr(ObjAtLayer(ShirtLayer)));

Пример 2:

{Если на слое чтото есть, то снимаем}
if ObjAtLayer(ShirtLayer) <> 0 then
  begin
    unequip(ShirtLayer);
    wait(1000);
  end;


ShoesLayer

function ShoesLayer() : Byte

Возвращает номер слоя 0x03 - Обувь (Shoes).

Пример 1:

if ObjAtLayer(ShoesLayer) > 0 then 
  AddToSystemJournal('Shoes ID: '+IntToStr(ObjAtLayer(ShoesLayer)));

Пример 2:

{Если на слое чтото есть, то снимаем}
if ObjAtLayer(ShoesLayer) <> 0 then
  begin
    unequip(ShoesLayer);
    wait(1000);
  end;

ShowMessage

procedure ShowMessage

Sign

function Sign(constAValue : Integer) : ShortInt;


Stam

function Stam() : Integer

Возвращает параметр чара - стамина (Stamina).

В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример 1:

if (Stam > 0) then
begin
  ''Do something
end;

Пример 2:

AddToSystemJournal('Стамина чара: ' + IntToStr(Stam));

StealthPath

function StealthPath: String;

Возвращает путь к папке, в которой находится исполняемый файл Stealth.

Пример:

AddToSystemJournal(StealthPath());

Результат:

22:50:48:546 [CharName]: V:\Stealth Client\

Step

function Step(Direction : Byte; Running : Boolean) : Byte

Если направление чара и Direction совпадает делает шаг в данном направлении, иначе разворачивает чара в этом направлении. Running определяет бежит чар (True) или идет (False).

Возвращает следующие значения:

  • 0 - Неизвестная ошибка
  • 1 - Отправлен запрос на ресинк, запрос не обработан.
  • 2 - Буфер шагов заполнен, запрос не обработан.
  • 3 - Стелс считает шаг в данном направлении невозможным, запрос не отсылается.
  • 4 - Таймаут ожидания ответа от сервера.
  • 5 - Сервер запретил перемещение в этом направлении.
  • 6 - Запрос принят, ожидание ответа сервера.
  • 7 - Сервер разрешил перемещение в этом направлении.

Если функция вернула, что-то отличное от 7, можно считать что шаг сделать не удалось.

Направление шагов

Uo-directions.png

StepQ

function StepQ(Direction : Byte; Running : Boolean) : Integer

По параметрам аналогична функциям Doc:RU/Api/Step и Doc:RU/Api/Raw_Move, но в отличии от них сразу же возвращает управление не дожидаясь ответа от сервера.

Возвращает следующие значения:

  • 0-255 - Запрос на шаг отправлен
  • 256 - Была предпринята попытка открыть дверь, и чар развернулся в нужном направлении.
  • -1 - Очередь шагов полна, запрос проигнорирован
  • -2 - Стелс считает шаг в данном направлении невозможным

Поскольку функция не дожидается ответа от сервера, координаты чара возвращаемые функциями Doc:RU/Api/GetX, Doc:RU/Api/GetY, Doc:RU/Api/GetZ и Doc:RU/Api/GetDirection изменяются не сразу. Что бы получить координаты с учетом сделанных шагов надо воспользоваться функциями Doc:RU/Api/PredictedX, Doc:RU/Api/PredictedY, Doc:RU/Api/PredictedZ и Doc:RU/Api/PredictedDirection

Uo-directions.png

Пример 1:

if StepQ(0, True) < 0 then
  AddToSystemJournal('Не удалось шагнуть');
end;


Str

function Str() : Integer

Возвращает параметр чара - сила (STR).

В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример 1:

if (Str > 0) then
begin
  ''Do something
end;

Пример 2:

AddToSystemJournal('Сила чара(Char strength): ' + IntToStr(Str));

StrBreakApart

procedure StrBreakApart(const S, Delimeter : string; Parts : TStrings)

Разбивает строки на под-строки.

Пример:

Program StrBreakApartDemo;
var i : Integer;
    SL : TStringList;
 
Begin
{Before working with TStringList Object - You must CREATE it!}
SL := TStringList.Create;
 
StrBreakApart('This is a StrBreakApart Demo', ' ', SL);
if SL.Count > 0 then for i := 0 to SL.Count - 1 do
    begin
    AddToSystemJournal(SL.Strings[i]);
    end;
 
{Note:
When you finish working with TStringList Object - You must FREE it!}
SL.Free;
 
End.

StrToBool

function StrToBool(constS : string) : Boolean;

StrToDateTime

function StrToDateTime(const s: string): TDateTime

StrToTime

function StrToTime(const s: String): TDateTime


TalismanLayer

function TalismanLayer() : Byte

Возвращает номер слоя 0x09 - Амулет (Talisman).

Пример 1:

if ObjAtLayer(TalismanLayer) > 0 then 
  AddToSystemJournal('Talisman ID: '+IntToStr(ObjAtLayer(TalismanLayer)));

Пример 2:

{Если на слое чтото есть, то снимаем}
if ObjAtLayer(TalismanLayer) <> 0 then
  begin
    unequip(TalismanLayer);
    wait(1000);
  end;

TargetID

function TargetID: Cardinal

Возвращает ID прицела.

TargetPresent

function TargetPresent: Boolean

Состояние таргета.

Пример:

if targetpresent then
   begin
   targettoobject(self);
   end;

TargetToObject

procedure TargetToObject(ObjectID : Cardinal)

Кликнуть таргетом на обьект.

Пример:

useskill('Anatomy');
WaitForTarget(5000);
if targetpresent then
   begin
   TargetToObject(self);
   end;

TargetToTile

procedure TargetToTile(TileModel : Word; X,Y,Z : Integer)

Кликнуть по тайлу.

Пример:

useobject(Pickaxe);
WaitForTarget(5000);
if targetpresent then
   begin
   TargetToTile(Tile,X,Y,Z);
   end;

TargetToXYZ

procedure TargetToXYZ(X,Y,Z : Integer)

Кликнуть по карте. Координаты мировые.

Пример:

useobject(ExplosionPotion);
WaitForTarget(5000);
if targetpresent then
   begin
   TargetToXYZ(X,Y,Z);
   end;

TimeToStr

function TimeToStr(D: TDateTime): String

Timer

function Timer: Cardinal


ToggleFly

procedure ToggleFly


TorsoHLayer

function TorsoHLayer() : Byte

Возвращает номер слоя 0x11 - Полный передник (Torso middle surcoat, tunic, full apron, sash).

Пример 1:

if ObjAtLayer(TorsoHLayer) > 0 then 
  AddToSystemJournal('surcoat ID: '+IntToStr(ObjAtLayer(TorsoHLayer)));

Пример 2: {Если на слое чтото есть, то снимаем} if ObjAtLayer(TorsoHLayer) <> 0 then

 begin
   unequip(TorsoHLayer);
   wait(1000);
 end;

</source>


TorsoLayer

function TorsoLayer() : Byte

Возвращает номер слоя 0x0D - Нагрудник (Torso (inner) (chest armor)).

Пример 1:

if ObjAtLayer(TorsoLayer) > 0 then 
  AddToSystemJournal('Torso ID: '+IntToStr(ObjAtLayer(TorsoLayer)));

Пример 2:

{Если на слое чтото есть, то снимаем}
if ObjAtLayer(TorsoLayer) <> 0 then
  begin
    unequip(TorsoLayer);
    wait(1000);
  end;

TradeCheck

function TradeCheck(TradeNum,Num : Byte) : Boolean

TradeCount

function TradeCount : Byte


UOSay

procedure UOSay(Text : String);

При вызове этой функции персонаж произнесет переданную функции фразу.

Пример:

  UOsay('Hello');


UnDress

function UnDress: Boolean

Снять все вещи.

При удачном раздевании возвращает True.

В случае, если отсутствует соединение с UO сервером, либо раздевание не удалось - вернет False.

Используется обычно в начале скриптов спраррингов, полностью разделись, потом правильно оделись.


UnEquip

function UnEquip(Layer: Byte): Boolean

Снять вещь с указанного слоя Layer (вещь падает в пак)

При удачном снятии возвращает True.

В случае, если отсутствует соединение с UO сервером, либо снятие не удалось - вернет False.

Пример:

if (getquantity(findtype(tweapon,ground)) > 0) 
    and (gettype(ObjAtLayer(RhandLayer)) <> gettype(finditem)) then 
  begin 
    addtosystemjournal('Weapon Change, осталось '+inttostr(findcount)); 
    UnEquip(RHandLayer); 
    wait(500); 
    Equip(RhandLayer,finditem); 
  end;

UnsetCatchBag

procedure UnsetCatchBag;

UpdateFigure

function UpdateFigure(id : Cardinal; const figure : TMapFigure) : boolean;

Принимает 2 аргумента, первый это номер изменяемой фигуры, второй это новые параметры для фигуры. Возвращает True если удалось обновить. Если такой фигуры нет, то вернет False, фигура при этом не добавиться.

UseFromGround

function UseFromGround(ObjType : Word;Color : Word) : Cardinal;

Найти на земле предмет по типу и использовать его. Возвращает ИД использованного обьекта.

Пример:

ObjectID := UseFromGround($0DE1,$0000);

UseObject

procedure UseObject(ObjectID: Cardinal)

Использовать объект (двойной клик на него).

Пример:

while not Dead do
   begin
   UseObject(FindType($0DE1,Ground));
   wait(3000);
   end;

Примечание: В случае, если объект не существует, то Stealth клиент проигнорирует выполнение данной комманды и зафиксирует это в System журнале.


UseOtherPaperdollScroll

procedure UseOtherPaperdollScroll(ID : Cardinal);


Pd.png

То же самое, что и нажатие на свиток на папердолле чужого чара\нпц , как отмечено на картинке.


UsePrimaryAbility

procedure UsePrimaryAbility

UseProxy

function UseProxy : Boolean;


UseSecondaryAbility

procedure UseSecondaryAbility


UseSelfPaperdollScroll

procedure UseSelfPaperdollScroll;


Pd.png

То же самое, что и нажатие на свиток на папердолле, как отмечено на картинке.

UseSkill

function UseSkill(SkillName : String) : Boolean

Использовать указанный скил. Список скилов

UseSkill('Anatomy');

UseType

function UseType(ObjType : Word;Color : Word) : Cardinal;

Найти в рюкзаке предмет по типу и использовать его. Возвращает ИД использованного обьекта.

Пример:

ObjectID := UseType($0DE1,$0000);


WaistLayer

function WaistLayer() : Byte

Возвращает номер слоя 0x0C - Малый передник (Half Apron).

Пример 1:

if ObjAtLayer(WaistLayer) > 0 then 
  AddToSystemJournal('Half Apron ID: '+IntToStr(ObjAtLayer(WaistLayer)));

Пример 2:

{Если на слое чтото есть, то снимаем}
if ObjAtLayer(WaistLayer) <> 0 then
  begin
    unequip(WaistLayer);
    wait(1000);
  end;


Wait

procedure Wait(WaitTimeMS : Integer)

Скрипт ставится на паузу на WaitTimeMS миллисекунд, потом продолжает выполнение команд дальше.


В одной секунде 1000 миллисекунд.

Пример:

Wait(5000); ''ждать 5 секунд

WaitForTarget

procedure WaitForTarget(MaxWaitTimeMS : Integer)

Подождать таргет. Время задается в миллисекундах.

Пример:

useskill('Anatomy');
WaitForTarget(5000);
if targetpresent then
   begin
   TargetToObject(self);
   end;

WaitGump

procedure WaitGump(Value : String)

Ловушка на гамп. Впрочем, абсолютно так же может использоваться и для обработки уже пришедших гампов.

Работает так:

начинает перебирать гампы от первого пришедшего до последнего пришедшего. В каждом из перебираемых гампов идет просмотр всех имеющихся на нем кнопок на предмет совпадения параметра функции Value со значением return_value кнопки. Если есть совпадение - то перебор прекращается, и отсылается ответ на гамп серверу, а в стелсе гамп уничтожается.

Если такая кнопка не найдена - то ничего серверу не отсылается. При этом процедура не возвращает в скрипт ничего для определения успешности выполнения, и это есть одна из недоработок этой процедуры, исправленная в Doc:RU/Api/NumGumpButton

Пример 1:

WaitTargetGround($1BDD);
WaitGump('3636');
UseObject(FindType($1EB9,ground));

Пример 2:

if Dead then 
  WaitGump('1'); ''gump of ressurection

WaitJournalLine

function WaitJournalLine(StartTime : TDateTime; Str : String; MaxWaitTimeMS : Integer) : Boolean

ожидание появления строки в журнале

WaitJournalLineSystem

function WaitJournalLineSystem(StartTime : TDateTime; Str : String; MaxWaitTimeMS : Integer) : Boolean


WaitMenu

procedure WaitMenu(MenuCaption, ElementCaption: String)

Установить одноразовую ловушку на меню. Является частным случаем многоразовой ловушки Doc:RU/Api/AutoMenu. Впрочем, абсолютно так же может использоваться и для обработки уже пришедших меню.

Работает так:

начинает перебирать меню от первого пришедшего до последнего пришедшего. В каждом из перебираемых меню сверяет заголовок меню на предмет совпадения заголовка с параметром функции MenuCaption. Если есть совпадение - то в этом меню ищется элемент с названием ElementCaption. Если таковой имеется - то перебор прекращается, и отсылается ответ на меню серверу с этим элементом, а в стелсе меню уничтожается.

Если такой элемент (или меню) не найден - то ловушка устанавливается для сверки с вновь приходящими меню.

function TrackPlayer() : Boolean;
begin
  if MenuHookPresent() = True then CancelMenu();
  WaitMenu('Tracking', 'Players');
  UseSkill('Tracking');
  Wait(500);
  WaitMenu('Tracking','(first)');
  Wait(500);
  if MenuHookPresent() = True then CancelMenu();
  Result := True;
end;

Вы можете использовать: (first) , (second) , (random)...

WaitTargetGround

procedure WaitTargetGround(ObjType : Word)

Производится поиск обьекта указаного типа на земле и устанавливается ловушка таргета на него. Если в момент установки прицел уже есть то ловушка сразу же срабатывает.


Пример:

UseObject(Dager); WaitTargetGround($2006);

WaitTargetLast

procedure WaitTargetLast

Повторяется последняя ловушка.

WaitTargetObject

procedure WaitTargetObject(ObjID : Cardinal)

Устанавливается ловушка таргета на конкретный объект. Если в момент установки прицел уже есть то ловушка сразу же срабатывает. Пример:

useskill('Anatomy'); WaitTargetObject(ObjectID);

WaitTargetSelf

procedure WaitTargetSelf

Устанавливается ловушка таргета на вашего персонажа. Если в момент установки прицел уже есть то ловушка сразу же срабатывает. Пример:

useobject(bandages); WaitTargetSelf;

WaitTargetTile

procedure WaitTargetTile(Tile : Word; X,Y,Z : Integer)

Устанавливается ловушка таргета на конкретный тайл. Если в момент установки прицел уже есть то ловушка сразу же срабатывает. Пример:

useobject(fishing_pole); WaitTargetTile(Tile, X, Y, Z);

WaitTargetType

procedure WaitTargetType(ObjType : Word)

Производится поиск обьекта указаного типа в бекпаке вашего персонажа и устанавливается ловушка таргета на него. Если в момент установки прицел уже есть то ловушка сразу же срабатывает. Пример:

UseSkill('item identification'); WaitTargetType(DagerType);

WaitTargetXYZ

procedure WaitTargetXYZ(X,Y,Z : Integer)

Устанавливается ловушка таргета на точку с координатами XYZ. Если в момент установки прицел уже есть то ловушка сразу же срабатывает.

WaitTextEntry

procedure WaitTextEntry(Value : String)

Обработка слегка особенного гампа, состоящего ТОЛЬКО из поля ввода и 2 кнопок - ОК и Cancel.

Работает и как ловушка, и для обработки уже пришедших полей ввода.

Если поле ввода уже есть - пакет с ответом отсылается серверу, в стелсе уничтожается поле ввода. Если еще не пришло - ставится ловушка, которая срабатывает сразу по приходу.

Пример:

WaitTargetGround($XXXX);
WaitTextEntry('20');
UseObject(FindType(pestyle_type,backpack));

WarMode

function WarMode(): Boolean

Возвращает состояние режима боя (War).

Пример:

if WarMode then
  addtosystemjournal('я в режиме войны');
else 
  addtosystemjournal('я в режиме мира');

WarTargetID

function WarTargetID() : Cardinal

Возвращает ID чара, на котором висит атака.

Если WarMode выключен, либо чар не подключен к серверу - возвращается 0

Пример:

if (WarTargetID <> Enemy) then
  attack(Enemy);


WearItem

function WearItem(Layer : Byte; Obj : Cardinal) : Boolean

Кладет обьект Obj, висящий "на пальце" на слой Layer

В случае, если отсутствует соединение с UO сервером, либо на пальце не висит ничего - вернет False и ничего не оденет.

Применять следует ОЧЕНЬ осторожно. И вообще, в большинстве случаев команда Doc:RU/Api/equip удобнее и универсальнее. Эта же оставлена для совместимости и некоторых кривых шардов.

Потому и примера нет.


Weight

function Weight() : Word

Возвращает параметр чара - Вес (Weight).

В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример 1:

if Weight > 190 then
begin
  ''do something, like go home, or drop, etc.
end;

Пример 2:

  AddToSystemJournal('Вес (Your weight): ' + IntToStr(Weight))

WinExec

procedure WinExec(FileName: String; Parameters: String = '');

Запускает файл на выполнение. Необязательный параметр Parameters - это параметры, с которыми файл запустится

Пример:

WinExec('stealth.exe', 'fw');  //запустить stealth.exe fw

WorldNum

function WorldNum() : Byte

Возвращает параметр чара - Номер мира (WorldNum).

Работает на серверах, где кол-во мировых карт( или миров, как их обычно называют) больше одной.

Значения:

  • 0 - Felucca (Britannia)
  • 1 - Trammel (Britannia_alt)
  • 2 - Ilshenar
  • 3 - Malas
  • 4 - Tokuno

номера миров из версии SA добавлю позже.

В случае, если отсутствует соединение с UO сервером - вернет 0.

Пример:

  AddToSystemJournal('Номер мира (Your World number is): ' + IntToStr(WorldNum))



(previous 200) (next 200)

Pages in category "Функции"

The following 200 pages are in this category, out of 425 total.

D

D cont.

D cont.

(previous 200) (next 200)

Contents