From Stealth Client

Jump to: navigation, search


F

FileExists

function FileExists(FileName : String) : Boolean

FillNewWindow

procedure FillNewWindow(str: String)

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

Пример на Python

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

FindAtCord

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

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

Пример:

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

FindCount

function FindCount() : Integer

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

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

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


Пример:

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

FindDistance

var FindDistance : Integer

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

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


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

Пример:

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

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

FindFullQuantity

function FindFullQuantity : Integer

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

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

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

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


Пример:

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

FindItem

function FindItem() : Cardinal

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

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


Пример 1:

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

Пример 2:

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

FindNotoriety

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

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

на земле.


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

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

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

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

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

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

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

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

Пример:

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


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

FindQuantity

function FindQuantity() : Integer

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

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

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


Пример:

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

FindType

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

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


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

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

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

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

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


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

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


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

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

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

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

Пример 1:

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

Пример 2:

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

FindTypeEx

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

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


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

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

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


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

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


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

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

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

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

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

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

Пример 1:

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

Пример 2:

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

FindTypesArrayEx

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

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

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

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

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

FindVertical

var FindVertical : Integer

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


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

Пример:

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

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


FireResist

function FireResist() : Word

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

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


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

Пример 1:

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

Пример 2:

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

FloatToStrF

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

FoundedParamId

FoundedParamId

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

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

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

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

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