From Stealth Client
Функции
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 - -1, либо точное нужное кол-во. Если Quantity = 0, то ловушка удаляется.
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.
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 можно использовать:
- Doc:RU/Api/BackPack
- Doc:RU/Api/Ground
- $FFFFFFFF ( = -1)
- ID нужного контейнера.
Если указан 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 можно использовать:
- Doc:RU/Api/BackPack
- Doc:RU/Api/Ground
- $FFFFFFFF ( = -1)
- ID нужного контейнера.
Если указан 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
GetBuffBarInfo
function GetBuffBarInfo : TBuffBarInfo
Возвращает список активных (де)бафов.
где:
TBuffBarInfo = record
Count : Byte; Buffs : array of TBuffIcon;
end;
TBuffIcon = record
Attribute_ID : Word; TimeStart : TDateTime; Seconds : Word; ClilocID1 : Cardinal; ClilocID2 : Cardinal;
end;
Seconds - время действия.
ClilocID1, ClilocID2 - насколько помню, используются в показе хинта, что показывается в клиенте при наведении на иконку бафа.
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; Arguments : String; 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 навыка.
Возвращаемые значения: 0 - скилл растет, 1 - скилл понижается, 2 - скилл заблокирован.
GetSkillValue
function GetSkillValue(SkillName : String) : Double;
Получить значение скила. Список сколов
GetStam
function GetStam(ObjID : Cardinal) : Integer
параметр объекта: Stamina
GetStatLockState
// v7.9.1+ function GetStatLockState(statNum : Byte) : ShortInt;
Значение statNum : STR - 0, DEX - 1, INT - 2.
В стелсе есть уже три константы: statSTR=0, statDEX=1, statINT=2.
Возвращает состояние Lock State силы, ловкости или интеллекта.
Возвращаемые значения: 0 - стат растет, 1 - стат понижается, 2 - заблокирован.
В стелсе есть уже три константы: statUP=0, statDOWN=1, statLOCK=2.
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 угловых препятствия.
Используется во всех функция перемещения.
Значение умолчанию 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;
Переменная. Можно ли пройти через угловое препятствие.
Используется во всех функция перемещения.
Значение умолчанию 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
Функция просчитывает путь в точку и движется к ней.
Максимальная дистанция - 300 тайлов.
Xdst, Ydst - координаты точки, к которой нужно прийти.
Optimized - при True будет производиться более сложный просчет пути, поэтому рекомендуется включать только на дистанции до 200 тайлов. Параметр Optimizd оставлен для совместимости, см. Doc:RU/Api/MoveHeuristicMult
Accuracy - точность приближения: 0 - прямо на точку, 1 - рядом в радиусе одного тайла и т.д.
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
Функция просчитывает путь в точку и движется к ней.
Максимальная дистанция - 300 тайлов.
Преимущества по сравнению с Doc:RU/Api/MoveXY:
1) Огромное уменьшение времени на просчет длинного пути за счет того, что маршрут пересчитывается не на каждом шаге, а один раз и до препятствия.
2) Новая система шагов, дает некоторый прирост скорости за счет оптимизации.
3) Авто-открывание дверей (при включенной опции) (добавить ссылки!)
4) Поддержка опций (добавить ссылки!)
//Xdst, Ydst// - координаты точки, к которой нужно прийти.
//Optimized// - при //True// будет производиться более сложный просчет пути, поэтому рекомендуется включать только на дистанции до 200 тайлов. Параметр Optimizd оставлен для совместимости, см. Doc:RU/Api/MoveHeuristicMult
//Accuracy// - точность приближения: 0 - прямо на точку, 1 - рядом в радиусе одного тайла и т.д.
//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;
Предсказанное направление чара.
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)
Увеличивает задержку между шагами при беге на маунте.
Учтите, что это изменение влияет на всех чаров этого экземпляра Стелса, а также на передвижение из подключенных к стелсу клиентов!
SetRunUnmountTimer
procedure SetRunUnmountTimer(Value: Word)
Увеличивает задержку между шагами при беге без маунта.
Учтите, что это изменение влияет на всех чаров этого экземпляра Стелса, а также на передвижение из подключенных к стелсу клиентов!
SetSilentMode
procedure SetSilentMode(Value : Boolean)
SetSkillLockState
// v7.9.1+ procedure SetSkillLockState(SkillName : String; skillState : Byte);
Устанавливает Lock State навыку SkillName .
Значения skillState: 0 - скилл растет, 1 - скилл понижается, 2 - скилл заблокирован.
SetStatLockState
// v7.9.1+ procedure SetStatLockState(statNum : Byte; statState : Byte);
Устанавливает Lock State силе, ловкости или интеллекту.
Значение statNum : STR - 0, DEX - 1, INT - 2.
В стелсе есть уже три константы: statSTR=0, statDEX=1, statINT=2.
statState значения: 0 - стат растет, 1 - стат понижается, 2 - заблокирован.
В стелсе есть уже три константы: statUP=0, statDOWN=1, statLOCK=2.
SetWalkMountTimer
procedure SetWalkMountTimer(Value: Word)
Увеличивать задержку между шагами при шагании на маунте (не беге!).
Учтите, что это изменение влияет на всех чаров этого экземпляра Стелса, а также на передвижение из подключенных к стелсу клиентов!
SetWalkUnmountTimer
procedure SetWalkUnmountTimer(Value: Word)
Увеличивать задержку между шагами при шагании без маунте (не беге!).
Учтите, что это изменение влияет на всех чаров этого экземпляра Стелса, а также на передвижение из подключенных к стелсу клиентов!
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, можно считать что шаг сделать не удалось.
Направление шагов
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
Пример 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
Устаревшая функция, не рекомендуется к использованию.
Синоним функции GetTickCount
Пример использования
while (mana < 20) and (not dead) do begin if ((Timer > (MeditateTimer + (10 * 1000))) or (MeditateTimer = 0)) then begin UseSkill('Meditation') MeditateTimer :=Timer; end; wait(200); end;
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);
То же самое, что и нажатие на свиток на папердолле чужого чара\нпц , как отмечено на картинке.
UsePrimaryAbility
procedure UsePrimaryAbility
UseProxy
function UseProxy : Boolean;
UseSecondaryAbility
procedure UseSecondaryAbility
UseSelfPaperdollScroll
procedure UseSelfPaperdollScroll;
То же самое, что и нажатие на свиток на папердолле, как отмечено на картинке.
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 426 total.