From Stealth Client

Jump to: navigation, search


S

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)

For reset context menu hook use VendorID = 0:

SetContextMenuHook(0, 0);


SetDress

procedure SetDress()

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

SetEasyUO

procedure SetEasyUO(num: Integer; Regvalue : String)

Creates\changes Windows registry variable in a partition: HKEY_CURRENT_USER\Software\EasyUO. Such variable can be accessed (read\write) from the EasyUO scripts, which creates a sort of compatibility between Stealth and EasyUO.

Python example:

SetEasyUO(56, "Kill them all!")

creates *56 variable in a registry with the value "Kill them all!".

Can be accessed from EasyUO:

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

Note! SetEasyUO num parameter can only be an integer, while EasyUO can work with text variables as well: *database, *alert, *any_other_text. Such text variables can not be accesed from the Stealth scripts.

Use Doc:RU/Api/GetEasyUO to read *-value from the system registry.

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] - запрет драг\дропа
  • 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.


SetGlobal

procedure SetGlobal(GlobalRegion : String; VarName : String; VarValue : String)

Устанавливает глобальной переменной с именем VarName значение VarValue в области видимости GlobalRegion. Область видимости может быть 'char' или 'stealth'. Если область видимости 'char', то переменная видна всем скриптам запущенном на данном чаре, область видимости 'stealth' делает переменную видимой для всех чаров и скриптов. GlobalRegion и VarName не чувствительны к регистру.

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

См. также

SetGoodLocation

procedure SetGoodLocation(X, Y : Word);

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

SetJournalLine

procedure SetJournalLine(StringIndex : Integer; Text : String)

меняем содержимое строки в журнале


SetPauseScriptOnDisconnectStatus

procedure SetPauseScriptOnDisconnectStatus(Value : Boolean)

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

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

См. также

SetRunMountTimer

procedure SetRunMountTimer(Value: Word)

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

SetRunUnmountTimer

procedure SetRunUnmountTimer(Value: Word)

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

SetSilentMode

procedure SetSilentMode(Value : Boolean)

SetSkillLockState

// v7.9.1+
procedure SetSkillLockState(SkillName : String; skillState : Byte);

Set Lock State of SkillName.

SetStatLockState

// v7.9.1+
procedure SetStatLockState(statNum : Byte; statState : Byte);

Set Lock State of statNum.

SetWalkMountTimer

procedure SetWalkMountTimer(Value: Word)

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

SetWalkUnmountTimer

procedure SetWalkUnmountTimer(Value: Word)

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

SetWarMode

procedure SetWarMode(Value : Boolean)

Установить/сбросить режим боя.

Пример:

if (WarMode = false) then
  SetWarMode(true);

Sex

function Sex() : Byte

Returns the character - Gender (Sex).

If 0 is returned - male, if 1 is returned - female

If there is no connection with the UO server - returns 0.

Example:

case Sex of
  0: AddToSystemJournal('Male')
  1: AddToSystemJournal('Female')
  else AddToSystemJournal('Undecided :)');


ShardName

function ShardName : String

Возвращает название шарда указанное в настройках стелса.

Пример:

  AddToSystemJournal(ShardName);

ShardPath

function ShardPath : String;

Returns the path where data and infos of the shard linked to the current profile is saved.

Example:

AddToSystemJournal(ShardPath);

Result:

C:\Users\Boydon\AppData\Roaming\Stealth\MyCoolShard\


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));

Stat Nums

	statSTR = 0
	statDEX = 1
	statINT = 2

StealthPath

function StealthPath: String;

Returns the path to the folder where the executable is located Stealth.

Example:

AddToSystemJournal(StealthPath());

Result:

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

StealthProfilePath

function StealthProfilePath : String;

Returns the path where Stealth save its profile informations according to Microsoft guide lines.

Example:

AddToSystemJournal(StealthProfilePath);

Result:

C:\Users\Boydon\AppData\Roaming\Stealth\

Step

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

Если направление чара и Direction совпадает делает шаг в данном направлении, иначе разворачивает чара в этом направлении. Running определяет бежит чар (True) или идет (False).

Возвращает следующие значения:

  • 0 - Неизвестная ошибка
  • 1 - Отправлен запрос на ресинк, запрос не обработан.
  • 2 - Буфер шагов заполнен, запрос не обработан.
  • 3 - Стелс считает шаг в данном направлении невозможным, запрос не отсылается.
  • 4 - Таймаут ожидания ответа от сервера.
  • 5 - Сервер запретил перемещение в этом направлении.
  • 6 - Запрос принят, ожидание ответа сервера.
  • 7 - Сервер разрешил перемещение в этом направлении.

Если функция вернула, что-то отличное от 7, можно считать что шаг сделать не удалось.

Направление шагов

Uo-directions.png

StepQ

function StepQ(Direction : Byte; Running : Boolean) : Integer

По параметрам аналогична функциям Doc:Api/Step и Doc:Api/Raw_Move, но в отличии от них сразу же возвращает управление не дожидаясь ответа от сервера.

Возвращает следующие значения:

  • 0-255 - Запрос на шаг отправлен
  • 256 - Была предпринята попытка открыть дверь, и чар развернулся в нужном направлении.
  • -1 - Очередь шагов полна, запрос проигнорирован
  • -2 - Стелс считает шаг в данном направлении невозможным

Поскольку функция не дожидается ответа от сервера, координаты чара возвращаемые функциями Doc:Api/GetX, Doc:Api/GetY, Doc:Api/GetZ и Doc:Api/GetDirection изменяются не сразу. Что бы получить координаты с учетом сделанных шагов надо воспользоваться функциями Doc:Api/PredictedX, Doc:Api/PredictedY, Doc:Api/PredictedZ и Doc:Api/PredictedDirection

Uo-directions.png

Пример 1:

if StepQ(0, True) < 0 then
  AddToSystemJournal('Не удалось шагнуть');
end;


Str

function Str() : Integer

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

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

Пример 1:

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

Пример 2:

AddToSystemJournal('Сила чара(Char strength): ' + IntToStr(Str));

StrBreakApart

procedure StrBreakApart(const S, Delimeter : string; Parts : TStrings)

Разбивает строки на под-строки.

Пример:

Program StrBreakApartDemo;
var i : Integer;
    SL : TStringList;
 
Begin
{Before working with TStringList Object - You must CREATE it!}
SL := TStringList.Create;
 
StrBreakApart('This is a StrBreakApart Demo', ' ', SL);
if SL.Count > 0 then for i := 0 to SL.Count - 1 do
    begin
    AddToSystemJournal(SL.Strings[i]);
    end;
 
{Note:
When you finish working with TStringList Object - You must FREE it!}
SL.Free;
 
End.

StrToBool

function StrToBool(constS : string) : Boolean;

StrToDateTime

function StrToDateTime(const s: string): TDateTime

StrToTime

function StrToTime(const s: String): TDateTime