Delphi scripts for Stealth 6
Posted: 05.08.2013 4:45
by Vizit0r
вобщем-то это раздел не для мануалов, но пока тут соберу до кучи, потом в вики буду скидывать понемногу.
в стелсе начиная с 6й версии есть возможность писать скрипты на обычных, полноценных языках программирования, любых - от Delphi и Python - до .Net и asm. Происходит это путем импорта скриптовых функций из длл. Для дельфей, c# и python сделали готовые обертки для удобного и легкого написания скриптов. Под другие языки создание аналогичных оберток тоже не представляет особых проблем.
Так вот, в этой теме я пишу про стелс-скрипты на Delphi. В дальнейшем Crome, возможно создаст аналогичную тему по c#, а Boydon по питону.
В обертке я решил раскидать все скрипты по категориям, что вообще-то с самого начала планировалось в стелсе, но вначале PS не позволял такое сделать, а в дальнейшем - обратная совместимость.
Итак, поехали (приватные методы не выкладываю, только публичные + properties). Properties есть только для чтения, есть чтение+запись - желающие все увидят в исходнике, тут не буду загромождать.
здесь вобщем-то все просто и понятно, пояснения дам только по двум вещам - TSkill и TUOObject, на примере TSkill.
Можно сделать так:
var AnatomySk : TSkill;
begin
AnatomySk := TSkill.Create('Anatomy');
и дальше работать напрямую с AnatomySk, например AnatomySk.GetValue и т.д.
это удобно, когда надо постоянно работать с одним скиллом (например, регулярно проверять). Если же какой-то отдельный скилл надо разово проверить, то удобнее написать
TSkill.GetValue('Magery').
Аналогично с TUOObject.
в стелсе начиная с 6й версии есть возможность писать скрипты на обычных, полноценных языках программирования, любых - от Delphi и Python - до .Net и asm. Происходит это путем импорта скриптовых функций из длл. Для дельфей, c# и python сделали готовые обертки для удобного и легкого написания скриптов. Под другие языки создание аналогичных оберток тоже не представляет особых проблем.
Так вот, в этой теме я пишу про стелс-скрипты на Delphi. В дальнейшем Crome, возможно создаст аналогичную тему по c#, а Boydon по питону.
В обертке я решил раскидать все скрипты по категориям, что вообще-то с самого начала планировалось в стелсе, но вначале PS не позволял такое сделать, а в дальнейшем - обратная совместимость.
Итак, поехали (приватные методы не выкладываю, только публичные + properties). Properties есть только для чтения, есть чтение+запись - желающие все увидят в исходнике, тут не буду загромождать.
TScript
TScript = record
public
{ public declarations }
MyChar : TMyChar; //maybe Character?
Target : TTargetWork;
LineFields : TLineFields;
Journal : TJournal;
FindEngine : TFindEngine;
UOObject : TUOObject;
MoveItemEngine : TMoveItemEngine;
Menu : TMenu;
Gump : TGump;
Shop : TShop;
Party : TParty;
HTTP : THTTP;
ICQ : TICQ;
Client : TClient;
Skill : TSkill;
Mover : TMover;
procedure AddToSystemJournal(Text : String);
procedure Connect;
procedure Disconnect;
function StealthInfo : TAboutData;
function MsToDateTime(TimeMS : Cardinal) : TDateTime;
function ChangeProfile(Name : String) : Integer;
function ProfileName : String;
procedure Wait(WaitTimeMS : Integer);
//maybe move to "Ability" ?
//maybe move to "TMyChar" ?
procedure UsePrimaryAbility;
procedure UseSecondaryAbility;
function GetActiveAbility : String;
procedure ToggleFly;
procedure ReqVirtuesGump;
procedure UseVirtue(VirtueName : String);
//maybe move to "TSpell" ?
function CastSpell(SpellName : String) : Boolean;
function CastSpellToObj(SpellName : String; ObjId : Cardinal) : Boolean;
function IsActiveSpellAbility(SpellName : String) : Boolean;
procedure UnsetCatchBag;
function SetCatchBag(ObjectID : Cardinal) : Byte;
procedure UseObject(ObjectID : Cardinal);
function UseType(ObjType : Word; Color : Word = $FFFF) : Cardinal;
function UseFromGround(ObjType : Word; Color : Word) : Cardinal;
procedure ClickOnObject(ObjectID : Cardinal);
function GetClilocByID(ClilocID : Cardinal) : String;
procedure OpenDoor;
procedure Bow;
procedure Salute;
function GetQuestArrow : TPoint;
function PlayWav(FileName : String) : Boolean;
procedure HelpRequest;
procedure QuestRequest;
procedure RenameMobile(Mob_ID : Cardinal; NewName : String);
function MobileCanBeRenamed(Mob_ID : Cardinal) : Boolean;
procedure ChangeStatLockState(statNum, statState : Byte);
function GetStaticArtBitmap(Id : LongWord; Hue : Word) : TBitmap;
procedure SetAlarm;
function CheckLag(timeoutMS : Integer) : Boolean;
procedure UOSay(Text : String);
procedure SendTextToUOColor(Text : String; Color : Word);
procedure SetEventProc(const eventname : TPacketEvent; const method : Pointer);
procedure ConsoleEntryReply(Text : String);
procedure ConsoleEntryUnicodeReply(Text : String);
property PauseScriptOnDisconnectStatus : Boolean;
property DressSpeed : Word;
property ARStatus : Boolean;
property Connected : Boolean;
property WorldNum : Byte;
property ConnectedTime : TDateTime;
property DisconnectedTime : TDateTime;
property LastContainer : Cardinal;
property LastTarget : Cardinal;
property LastAttack : Cardinal;
property LastStatus : Cardinal;
property LastObject : Cardinal;
property ShardName : String;
property ProxyIP : String;
property ProxyPort : Word;
property ProxyUsed : Boolean;
property Backpack : Cardinal;
property Ground : Cardinal;
end;
public
{ public declarations }
MyChar : TMyChar; //maybe Character?
Target : TTargetWork;
LineFields : TLineFields;
Journal : TJournal;
FindEngine : TFindEngine;
UOObject : TUOObject;
MoveItemEngine : TMoveItemEngine;
Menu : TMenu;
Gump : TGump;
Shop : TShop;
Party : TParty;
HTTP : THTTP;
ICQ : TICQ;
Client : TClient;
Skill : TSkill;
Mover : TMover;
procedure AddToSystemJournal(Text : String);
procedure Connect;
procedure Disconnect;
function StealthInfo : TAboutData;
function MsToDateTime(TimeMS : Cardinal) : TDateTime;
function ChangeProfile(Name : String) : Integer;
function ProfileName : String;
procedure Wait(WaitTimeMS : Integer);
//maybe move to "Ability" ?
//maybe move to "TMyChar" ?
procedure UsePrimaryAbility;
procedure UseSecondaryAbility;
function GetActiveAbility : String;
procedure ToggleFly;
procedure ReqVirtuesGump;
procedure UseVirtue(VirtueName : String);
//maybe move to "TSpell" ?
function CastSpell(SpellName : String) : Boolean;
function CastSpellToObj(SpellName : String; ObjId : Cardinal) : Boolean;
function IsActiveSpellAbility(SpellName : String) : Boolean;
procedure UnsetCatchBag;
function SetCatchBag(ObjectID : Cardinal) : Byte;
procedure UseObject(ObjectID : Cardinal);
function UseType(ObjType : Word; Color : Word = $FFFF) : Cardinal;
function UseFromGround(ObjType : Word; Color : Word) : Cardinal;
procedure ClickOnObject(ObjectID : Cardinal);
function GetClilocByID(ClilocID : Cardinal) : String;
procedure OpenDoor;
procedure Bow;
procedure Salute;
function GetQuestArrow : TPoint;
function PlayWav(FileName : String) : Boolean;
procedure HelpRequest;
procedure QuestRequest;
procedure RenameMobile(Mob_ID : Cardinal; NewName : String);
function MobileCanBeRenamed(Mob_ID : Cardinal) : Boolean;
procedure ChangeStatLockState(statNum, statState : Byte);
function GetStaticArtBitmap(Id : LongWord; Hue : Word) : TBitmap;
procedure SetAlarm;
function CheckLag(timeoutMS : Integer) : Boolean;
procedure UOSay(Text : String);
procedure SendTextToUOColor(Text : String; Color : Word);
procedure SetEventProc(const eventname : TPacketEvent; const method : Pointer);
procedure ConsoleEntryReply(Text : String);
procedure ConsoleEntryUnicodeReply(Text : String);
property PauseScriptOnDisconnectStatus : Boolean;
property DressSpeed : Word;
property ARStatus : Boolean;
property Connected : Boolean;
property WorldNum : Byte;
property ConnectedTime : TDateTime;
property DisconnectedTime : TDateTime;
property LastContainer : Cardinal;
property LastTarget : Cardinal;
property LastAttack : Cardinal;
property LastStatus : Cardinal;
property LastObject : Cardinal;
property ShardName : String;
property ProxyIP : String;
property ProxyPort : Word;
property ProxyUsed : Boolean;
property Backpack : Cardinal;
property Ground : Cardinal;
end;
TMyChar
TMyChar = record
public
function WarTargetID : Cardinal;
procedure Attack(AttackedID : Cardinal);
procedure UseSelfPaperdollScroll;
procedure UseOtherPaperdollScroll(ID : Cardinal);
function ObjAtLayer(LayerType : Byte) : Cardinal;
property CharName : String;
property Self : Cardinal;
property Sex : Byte;
property CharTitle : String;
property Gold : Cardinal;
property Armor : Word;
property Weight : Word;
property MaxWeight : Word;
property Race : Byte;
property PetsMax : Byte;
property PetsCurrent : Byte;
property Luck : Integer;
property FireResist : Word;
property ColdResist : Word;
property PoisonResist : Word;
property EnergyResist : Word;
property Backpack : Cardinal;
property Str : Integer;
property Int : Integer;
property Dex : Integer;
property Life : Integer;
property Mana : Integer;
property Stam : Integer;
property MaxLife : Integer;
property MaxMana : Integer;
property MaxStam : Integer;
property ExtInfo : TExtendedInfo;
property Hidden : Boolean;
property Poisoned : Boolean;
property Paralyzed : Boolean;
property Dead : Boolean;
property WarMode : Boolean;
end;
public
function WarTargetID : Cardinal;
procedure Attack(AttackedID : Cardinal);
procedure UseSelfPaperdollScroll;
procedure UseOtherPaperdollScroll(ID : Cardinal);
function ObjAtLayer(LayerType : Byte) : Cardinal;
property CharName : String;
property Self : Cardinal;
property Sex : Byte;
property CharTitle : String;
property Gold : Cardinal;
property Armor : Word;
property Weight : Word;
property MaxWeight : Word;
property Race : Byte;
property PetsMax : Byte;
property PetsCurrent : Byte;
property Luck : Integer;
property FireResist : Word;
property ColdResist : Word;
property PoisonResist : Word;
property EnergyResist : Word;
property Backpack : Cardinal;
property Str : Integer;
property Int : Integer;
property Dex : Integer;
property Life : Integer;
property Mana : Integer;
property Stam : Integer;
property MaxLife : Integer;
property MaxMana : Integer;
property MaxStam : Integer;
property ExtInfo : TExtendedInfo;
property Hidden : Boolean;
property Poisoned : Boolean;
property Paralyzed : Boolean;
property Dead : Boolean;
property WarMode : Boolean;
end;
TUOObject
TUOObject = class
public
constructor Create(ObjID : Cardinal);
function GetX : Integer; overload;
class function GetX(ObjID : Cardinal) : Integer; overload;
function GetY : Integer; overload;
class function GetY(ObjID : Cardinal) : Integer;overload;
function GetZ : ShortInt; overload;
class function GetZ(ObjID : Cardinal) : ShortInt; overload;
function GetName : String; overload;
class function GetName(ObjID : Cardinal) : String; overload;
function GetAltName : String; overload;
class function GetAltName(ObjID : Cardinal) : String;overload;
function GetTitle : String; overload;
class function GetTitle(ObjID : Cardinal) : String; overload;
function GetClilocRec : TClilocRec; overload;
class function GetClilocRec(ObjID : Cardinal) : TClilocRec; overload;
function GetTooltip : String; overload;
class function GetTooltip(ObjID : Cardinal) : String; overload;
function GetType : Word; overload;
class function GetType(ObjID : Cardinal) : Word; overload;
function GetQuantity : Integer; overload;
class function GetQuantity(ObjID : Cardinal) : Integer; overload;
function IsObjectExists : Boolean; overload;
class function IsObjectExists(ObjID : Cardinal) : Boolean; overload;
function IsNPC : Boolean; overload;
class function IsNPC(ObjID : Cardinal) : Boolean; overload;
function GetPrice : Cardinal; overload;
class function GetPrice(ObjID : Cardinal) : Cardinal; overload;
function GetDirection : Byte; overload;
class function GetDirection(ObjID : Cardinal) : Byte; overload;
function GetDistance : Integer; overload;
class function GetDistance(ObjID : Cardinal) : Integer; overload;
function GetColor : Word; overload;
class function GetColor(ObjID : Cardinal) : Word; overload;
function GetStr : Integer; overload;
class function GetStr(ObjID : Cardinal) : Integer; overload;
function GetInt : Integer; overload;
class function GetInt(ObjID : Cardinal) : Integer; overload;
function GetDex : Integer; overload;
class function GetDex(ObjID : Cardinal) : Integer; overload;
function GetHP : Integer; overload;
class function GetHP(ObjID : Cardinal) : Integer; overload;
function GetMaxHP : Integer; overload;
class function GetMaxHP(ObjID : Cardinal) : Integer; overload;
function GetMana : Integer; overload;
class function GetMana(ObjID : Cardinal) : Integer; overload;
function GetMaxMana : Integer; overload;
class function GetMaxMana(ObjID : Cardinal) : Integer; overload;
function GetStam : Integer; overload;
class function GetStam(ObjID : Cardinal) : Integer; overload;
function GetMaxStam : Integer; overload;
class function GetMaxStam(ObjID : Cardinal) : Integer; overload;
function GetNotoriety : Byte; overload;
class function GetNotoriety(ObjID : Cardinal) : Byte; overload;
function GetParent : Cardinal; overload;
class function GetParent(ObjID : Cardinal) : Cardinal; overload;
function IsWarMode : Boolean; overload;
class function IsWarMode(ObjID : Cardinal) : Boolean; overload;
function IsDead : Boolean; overload;
class function IsDead(ObjID : Cardinal) : Boolean; overload;
function IsRunning : Boolean; overload;
class function IsRunning(ObjID : Cardinal) : Boolean; overload;
function IsContainer : Boolean; overload;
class function IsContainer(ObjID : Cardinal) : Boolean; overload;
function IsHidden : Boolean; overload;
class function IsHidden(ObjID : Cardinal) : Boolean; overload;
function IsMovable : Boolean; overload;
class function IsMovable(ObjID : Cardinal) : Boolean; overload;
function IsYellowHits : Boolean; overload;
class function IsYellowHits(ObjID : Cardinal) : Boolean; overload;
function IsPoisoned : Boolean; overload;
class function IsPoisoned(ObjID : Cardinal) : Boolean; overload;
function IsParalyzed : Boolean; overload;
class function IsParalyzed(ObjID : Cardinal) : Boolean; overload;
function IsFemale : Boolean; overload;
class function IsFemale(ObjID : Cardinal) : Boolean; overload;
function ObjAtLayerEx(LayerType : Byte) : Cardinal; overload;
class function ObjAtLayerEx(LayerType : Byte; PlayerID : Cardinal) : Cardinal; overload;
function GetLayer : Byte; overload;
class function GetLayer(ObjID : Cardinal) : Byte; overload;
procedure RequestStats; overload;
class procedure RequestStats(ObjID : Cardinal); overload;
public
constructor Create(ObjID : Cardinal);
function GetX : Integer; overload;
class function GetX(ObjID : Cardinal) : Integer; overload;
function GetY : Integer; overload;
class function GetY(ObjID : Cardinal) : Integer;overload;
function GetZ : ShortInt; overload;
class function GetZ(ObjID : Cardinal) : ShortInt; overload;
function GetName : String; overload;
class function GetName(ObjID : Cardinal) : String; overload;
function GetAltName : String; overload;
class function GetAltName(ObjID : Cardinal) : String;overload;
function GetTitle : String; overload;
class function GetTitle(ObjID : Cardinal) : String; overload;
function GetClilocRec : TClilocRec; overload;
class function GetClilocRec(ObjID : Cardinal) : TClilocRec; overload;
function GetTooltip : String; overload;
class function GetTooltip(ObjID : Cardinal) : String; overload;
function GetType : Word; overload;
class function GetType(ObjID : Cardinal) : Word; overload;
function GetQuantity : Integer; overload;
class function GetQuantity(ObjID : Cardinal) : Integer; overload;
function IsObjectExists : Boolean; overload;
class function IsObjectExists(ObjID : Cardinal) : Boolean; overload;
function IsNPC : Boolean; overload;
class function IsNPC(ObjID : Cardinal) : Boolean; overload;
function GetPrice : Cardinal; overload;
class function GetPrice(ObjID : Cardinal) : Cardinal; overload;
function GetDirection : Byte; overload;
class function GetDirection(ObjID : Cardinal) : Byte; overload;
function GetDistance : Integer; overload;
class function GetDistance(ObjID : Cardinal) : Integer; overload;
function GetColor : Word; overload;
class function GetColor(ObjID : Cardinal) : Word; overload;
function GetStr : Integer; overload;
class function GetStr(ObjID : Cardinal) : Integer; overload;
function GetInt : Integer; overload;
class function GetInt(ObjID : Cardinal) : Integer; overload;
function GetDex : Integer; overload;
class function GetDex(ObjID : Cardinal) : Integer; overload;
function GetHP : Integer; overload;
class function GetHP(ObjID : Cardinal) : Integer; overload;
function GetMaxHP : Integer; overload;
class function GetMaxHP(ObjID : Cardinal) : Integer; overload;
function GetMana : Integer; overload;
class function GetMana(ObjID : Cardinal) : Integer; overload;
function GetMaxMana : Integer; overload;
class function GetMaxMana(ObjID : Cardinal) : Integer; overload;
function GetStam : Integer; overload;
class function GetStam(ObjID : Cardinal) : Integer; overload;
function GetMaxStam : Integer; overload;
class function GetMaxStam(ObjID : Cardinal) : Integer; overload;
function GetNotoriety : Byte; overload;
class function GetNotoriety(ObjID : Cardinal) : Byte; overload;
function GetParent : Cardinal; overload;
class function GetParent(ObjID : Cardinal) : Cardinal; overload;
function IsWarMode : Boolean; overload;
class function IsWarMode(ObjID : Cardinal) : Boolean; overload;
function IsDead : Boolean; overload;
class function IsDead(ObjID : Cardinal) : Boolean; overload;
function IsRunning : Boolean; overload;
class function IsRunning(ObjID : Cardinal) : Boolean; overload;
function IsContainer : Boolean; overload;
class function IsContainer(ObjID : Cardinal) : Boolean; overload;
function IsHidden : Boolean; overload;
class function IsHidden(ObjID : Cardinal) : Boolean; overload;
function IsMovable : Boolean; overload;
class function IsMovable(ObjID : Cardinal) : Boolean; overload;
function IsYellowHits : Boolean; overload;
class function IsYellowHits(ObjID : Cardinal) : Boolean; overload;
function IsPoisoned : Boolean; overload;
class function IsPoisoned(ObjID : Cardinal) : Boolean; overload;
function IsParalyzed : Boolean; overload;
class function IsParalyzed(ObjID : Cardinal) : Boolean; overload;
function IsFemale : Boolean; overload;
class function IsFemale(ObjID : Cardinal) : Boolean; overload;
function ObjAtLayerEx(LayerType : Byte) : Cardinal; overload;
class function ObjAtLayerEx(LayerType : Byte; PlayerID : Cardinal) : Cardinal; overload;
function GetLayer : Byte; overload;
class function GetLayer(ObjID : Cardinal) : Byte; overload;
procedure RequestStats; overload;
class procedure RequestStats(ObjID : Cardinal); overload;
TFindEngine
TFindEngine = record
public
function FindTypeEx(ObjType : Word; Color : Word; Container : Cardinal; InSub : Boolean) : Cardinal;
function FindType(ObjType : Word; Container : Cardinal) : Cardinal;
function FindNotoriety(ObjType : Word; Notoriety : Byte) : Cardinal;
function FindAtCoord(X, Y : Word) : Cardinal;
procedure Ignore(ObjID : Cardinal);
procedure IgnoreRemove(ObjID : Cardinal);
procedure IgnoreReset;
function GetIgnoreList : TArray<Cardinal>;
function GetFindedList : TArray<Cardinal>;
function FindItem : Cardinal;
function FindCount : Integer;
function FindQuantity : Integer;
function FindFullQuantity : Integer;
property FindDistance : Cardinal;
property FindVertical : Cardinal;
property FindInNulPoint : Boolean;
end;
public
function FindTypeEx(ObjType : Word; Color : Word; Container : Cardinal; InSub : Boolean) : Cardinal;
function FindType(ObjType : Word; Container : Cardinal) : Cardinal;
function FindNotoriety(ObjType : Word; Notoriety : Byte) : Cardinal;
function FindAtCoord(X, Y : Word) : Cardinal;
procedure Ignore(ObjID : Cardinal);
procedure IgnoreRemove(ObjID : Cardinal);
procedure IgnoreReset;
function GetIgnoreList : TArray<Cardinal>;
function GetFindedList : TArray<Cardinal>;
function FindItem : Cardinal;
function FindCount : Integer;
function FindQuantity : Integer;
function FindFullQuantity : Integer;
property FindDistance : Cardinal;
property FindVertical : Cardinal;
property FindInNulPoint : Boolean;
end;
TMoveItemEngine
TMoveItemEngine = record
public
function DragItem(ItemID : Cardinal; Count : Integer) : Boolean;
function DropItem(MoveIntoID : Cardinal; X, Y : Word; Z : ShortInt) : Boolean;
function MoveItem(ItemID : Cardinal; Count : Integer; MoveIntoID : Cardinal; X, Y : Word; Z : ShortInt) : Boolean;
function Grab(ItemID : Cardinal; Count : Integer) : Boolean;
function Drop(ItemID : Cardinal; Count : Integer; X, Y : Smallint; Z : ShortInt) : Boolean;
function DropHere(ItemID : Cardinal) : Boolean;
function MoveItems(Container : Cardinal; ItemsType : Word; ItemsColor : Word; MoveIntoID : Cardinal; X, Y : Word; Z : ShortInt; DelayMS : Integer) : Boolean;
function EmptyContainer(Container, DestContainer : Cardinal; delay_ms : Word) : Boolean;
property DropCheckCoord : Boolean;
property DropDelay : Cardinal;
end;
public
function DragItem(ItemID : Cardinal; Count : Integer) : Boolean;
function DropItem(MoveIntoID : Cardinal; X, Y : Word; Z : ShortInt) : Boolean;
function MoveItem(ItemID : Cardinal; Count : Integer; MoveIntoID : Cardinal; X, Y : Word; Z : ShortInt) : Boolean;
function Grab(ItemID : Cardinal; Count : Integer) : Boolean;
function Drop(ItemID : Cardinal; Count : Integer; X, Y : Smallint; Z : ShortInt) : Boolean;
function DropHere(ItemID : Cardinal) : Boolean;
function MoveItems(Container : Cardinal; ItemsType : Word; ItemsColor : Word; MoveIntoID : Cardinal; X, Y : Word; Z : ShortInt; DelayMS : Integer) : Boolean;
function EmptyContainer(Container, DestContainer : Cardinal; delay_ms : Word) : Boolean;
property DropCheckCoord : Boolean;
property DropDelay : Cardinal;
end;
TSecureTrade
TSecureTrade = record
public
function CheckTradeState : Boolean;
function GetTradeContainer(TradeNum, Num : Byte) : Cardinal;
function GetTradeOpponent(TradeNum : Byte) : Cardinal;
function GetTradeCount : Byte;
function GetTradeOpponentName(TradeNum : Byte) : String;
function TradeCheck(TradeNum, Num : Byte) : Boolean;
procedure ConfirmTrade(TradeNum : Byte);
function CancelTrade(TradeNum : Byte) : Boolean;
end;
public
function CheckTradeState : Boolean;
function GetTradeContainer(TradeNum, Num : Byte) : Cardinal;
function GetTradeOpponent(TradeNum : Byte) : Cardinal;
function GetTradeCount : Byte;
function GetTradeOpponentName(TradeNum : Byte) : String;
function TradeCheck(TradeNum, Num : Byte) : Boolean;
procedure ConfirmTrade(TradeNum : Byte);
function CancelTrade(TradeNum : Byte) : Boolean;
end;
TTargetWork
TTargetWork = record
public
function WaitForTarget(MaxWaitTimeMS : Integer) : Boolean;
procedure CancelTarget;
procedure TargetToObject(ObjectID : Cardinal);
procedure TargetToXYZ(X, Y : Word; Z : ShortInt);
procedure TargetToTile(TileModel,X,Y : Word; Z : ShortInt);
procedure WaitTargetObject(ObjID : Cardinal);
procedure WaitTargetTile(Tile,X, Y : Word; Z : ShortInt);
procedure WaitTargetXYZ(X, Y : Word; Z : ShortInt);
procedure WaitTargetSelf;
procedure WaitTargetType(ObjType : Word);
procedure CancelWaitTarget;
procedure WaitTargetGround(ObjType : Word);
procedure WaitTargetLast;
property TargetID : Cardinal;
property TargetPresent : Boolean;
end;
public
function WaitForTarget(MaxWaitTimeMS : Integer) : Boolean;
procedure CancelTarget;
procedure TargetToObject(ObjectID : Cardinal);
procedure TargetToXYZ(X, Y : Word; Z : ShortInt);
procedure TargetToTile(TileModel,X,Y : Word; Z : ShortInt);
procedure WaitTargetObject(ObjID : Cardinal);
procedure WaitTargetTile(Tile,X, Y : Word; Z : ShortInt);
procedure WaitTargetXYZ(X, Y : Word; Z : ShortInt);
procedure WaitTargetSelf;
procedure WaitTargetType(ObjType : Word);
procedure CancelWaitTarget;
procedure WaitTargetGround(ObjType : Word);
procedure WaitTargetLast;
property TargetID : Cardinal;
property TargetPresent : Boolean;
end;
TLineFields
TLineFields = record
public
property FoundedParamID : Integer;
property LineID : Cardinal;
property LineType : Word;
property LineName : String;
property LineTime : TDateTime;
property LineMsgType : Byte;
property LineTextColor : Word;
property LineTextFont : Word;
property LineIndex : Integer;
property LineCount : Integer;
end;
public
property FoundedParamID : Integer;
property LineID : Cardinal;
property LineType : Word;
property LineName : String;
property LineTime : TDateTime;
property LineMsgType : Byte;
property LineTextColor : Word;
property LineTextFont : Word;
property LineIndex : Integer;
property LineCount : Integer;
end;
TJournal
TJournal = record
public
procedure AddJournalIgnore(Str : String);
procedure ClearJournalIgnore;
procedure AddChatUserIgnore(User : String);
procedure ClearChatUserIgnore;
procedure ClearJournal;
function InJournal(Str : String) : Integer;
function InJournalBetweenTimes(Str : String; TimeBegin, TimeEnd : TDateTime) : Integer;
function WaitJournalLine(StartTime : TDateTime; Str : String; MaxWaitTimeMS : Integer) : Boolean;
function WaitJournalLineSystem(StartTime : TDateTime; Str : String; MaxWaitTimeMS : Integer) : Boolean;
property Low : Integer;
property High : Integer;
property Lines[Index: Cardinal] : String; default;
property LastJournalMessage : String;
end;
public
procedure AddJournalIgnore(Str : String);
procedure ClearJournalIgnore;
procedure AddChatUserIgnore(User : String);
procedure ClearChatUserIgnore;
procedure ClearJournal;
function InJournal(Str : String) : Integer;
function InJournalBetweenTimes(Str : String; TimeBegin, TimeEnd : TDateTime) : Integer;
function WaitJournalLine(StartTime : TDateTime; Str : String; MaxWaitTimeMS : Integer) : Boolean;
function WaitJournalLineSystem(StartTime : TDateTime; Str : String; MaxWaitTimeMS : Integer) : Boolean;
property Low : Integer;
property High : Integer;
property Lines[Index: Cardinal] : String; default;
property LastJournalMessage : String;
end;
TContextMenu
TContextMenu = record
public
procedure RequestContextMenu(ObjectID : Cardinal);
procedure SetContextMenuHook(MenuID : Cardinal; EntryNumber : Byte);
function GetContextMenu : TArray<String>;
procedure ClearContextMenu;
end;
public
procedure RequestContextMenu(ObjectID : Cardinal);
procedure SetContextMenuHook(MenuID : Cardinal; EntryNumber : Byte);
function GetContextMenu : TArray<String>;
procedure ClearContextMenu;
end;
TMenu
TMenu = record
public
procedure WaitMenu(MenuCaption, ElementCaption : String);
procedure AutoMenu(MenuCaption, ElementCaption : String);
function MenuHookPresent : Boolean;
function MenuPresent : Boolean;
procedure CancelMenu;
procedure CloseMenu;
function GetMenuItems(MenuCaption : String) : TArray<String>;
function GetLastMenuItems : TArray<String>;
end;
public
procedure WaitMenu(MenuCaption, ElementCaption : String);
procedure AutoMenu(MenuCaption, ElementCaption : String);
function MenuHookPresent : Boolean;
function MenuPresent : Boolean;
procedure CancelMenu;
procedure CloseMenu;
function GetMenuItems(MenuCaption : String) : TArray<String>;
function GetLastMenuItems : TArray<String>;
end;
TGump
TGump = record
public
procedure WaitGump(Value : Integer);
procedure WaitGumpStr(Value : String);
procedure WaitGumpTextEntry(Value : String);
procedure GumpAutoTextEntry(TextEntryID : Integer; Value : String);
procedure GumpAutoRadiobutton(RadiobuttonID, Value : Integer);
procedure GumpAutoCheckBox(CBID, Value : Integer);
function NumGumpButton(GumpIndex : Word; Value : Integer) : Boolean;
function NumGumpTextEntry(GumpIndex : Word; TextEntryID : Integer; Value : String) : Boolean;
function NumGumpRadiobutton(GumpIndex : Word; RadiobuttonID, Value : Integer) : Boolean;
function NumGumpCheckBox(GumpIndex : Word; CBID, Value : Integer) : Boolean;
function GetGumpsCount : Integer;
procedure CloseSimpleGump(GumpIndex : Word);
function IsGump : Boolean;
function GetGumpSerial(GumpIndex : Word) : Cardinal;
function GetGumpID(GumpIndex : Word) : Cardinal;
function GetGumpNoClose(GumpIndex : Word) : Boolean;
function GetGumpTextLines(GumpIndex : Word) : TArray<String>;
function GetGumpFullLines(GumpIndex : Word) : TArray<String>;
function GetGumpShortLines(GumpIndex : Word) : TArray<String>;
function GetGumpButtonsDescription(GumpIndex : Word) : TArray<String>;
function GetGumpInfo(GumpIndex : Word) : TGumpInfo;
procedure AddGumpIgnoreByID(GumpID : Cardinal);
procedure AddGumpIgnoreBySerial(GumpSerial : Cardinal);
procedure ClearGumpsIgnore;
end;
public
procedure WaitGump(Value : Integer);
procedure WaitGumpStr(Value : String);
procedure WaitGumpTextEntry(Value : String);
procedure GumpAutoTextEntry(TextEntryID : Integer; Value : String);
procedure GumpAutoRadiobutton(RadiobuttonID, Value : Integer);
procedure GumpAutoCheckBox(CBID, Value : Integer);
function NumGumpButton(GumpIndex : Word; Value : Integer) : Boolean;
function NumGumpTextEntry(GumpIndex : Word; TextEntryID : Integer; Value : String) : Boolean;
function NumGumpRadiobutton(GumpIndex : Word; RadiobuttonID, Value : Integer) : Boolean;
function NumGumpCheckBox(GumpIndex : Word; CBID, Value : Integer) : Boolean;
function GetGumpsCount : Integer;
procedure CloseSimpleGump(GumpIndex : Word);
function IsGump : Boolean;
function GetGumpSerial(GumpIndex : Word) : Cardinal;
function GetGumpID(GumpIndex : Word) : Cardinal;
function GetGumpNoClose(GumpIndex : Word) : Boolean;
function GetGumpTextLines(GumpIndex : Word) : TArray<String>;
function GetGumpFullLines(GumpIndex : Word) : TArray<String>;
function GetGumpShortLines(GumpIndex : Word) : TArray<String>;
function GetGumpButtonsDescription(GumpIndex : Word) : TArray<String>;
function GetGumpInfo(GumpIndex : Word) : TGumpInfo;
procedure AddGumpIgnoreByID(GumpID : Cardinal);
procedure AddGumpIgnoreBySerial(GumpSerial : Cardinal);
procedure ClearGumpsIgnore;
end;
TShop
TShop = record
public
procedure AutoBuy(ItemType, ItemColor, Quantity : Word);
function GetShopList : TArray<String>;
procedure ClearShopList;
procedure AutoBuyEx(ItemType : Word; ItemColor : Word; Quantity : Word; Price : Cardinal; Name : String);
procedure AutoSell(ItemType, ItemColor, Quantity : Word);
property AutoBuyDelay : Word;
property AutoSellDelay : Word;
end;
public
procedure AutoBuy(ItemType, ItemColor, Quantity : Word);
function GetShopList : TArray<String>;
procedure ClearShopList;
procedure AutoBuyEx(ItemType : Word; ItemColor : Word; Quantity : Word; Price : Cardinal; Name : String);
procedure AutoSell(ItemType, ItemColor, Quantity : Word);
property AutoBuyDelay : Word;
property AutoSellDelay : Word;
end;
TParty
TParty = record
public
procedure InviteToParty(ObjectID : Cardinal);
procedure RemoveFromParty(ObjectID : Cardinal);
procedure PartyMessageTo(ObjectID : Cardinal; Msg : String);
procedure PartySay(Msg : String);
procedure PartyCanLootMe(Value : Boolean);
procedure PartyAcceptInvite;
procedure PartyDeclineInvite;
procedure PartyLeave;
function InParty : Boolean;
function PartyMembersList : TArray<Cardinal>;
end;
public
procedure InviteToParty(ObjectID : Cardinal);
procedure RemoveFromParty(ObjectID : Cardinal);
procedure PartyMessageTo(ObjectID : Cardinal; Msg : String);
procedure PartySay(Msg : String);
procedure PartyCanLootMe(Value : Boolean);
procedure PartyAcceptInvite;
procedure PartyDeclineInvite;
procedure PartyLeave;
function InParty : Boolean;
function PartyMembersList : TArray<Cardinal>;
end;
THTTP
THTTP = record
public
procedure Get(URL : String);
function Post(URL, PostData : String) : String;
property Body : String;
property Header : String;
end;
public
procedure Get(URL : String);
function Post(URL, PostData : String) : String;
property Body : String;
property Header : String;
end;
TICQ
TICQ = record
public
procedure Connect(UIN : Cardinal; Password : String);
procedure Disconnect;
procedure SetStatus(Num : Byte);
procedure SetXStatus(Num : Byte);
procedure SendText(DestinationUIN : Cardinal; Text : String);
property Connected : Boolean;
end;
public
procedure Connect(UIN : Cardinal; Password : String);
procedure Disconnect;
procedure SetStatus(Num : Byte);
procedure SetXStatus(Num : Byte);
procedure SendText(DestinationUIN : Cardinal; Text : String);
property Connected : Boolean;
end;
TClient
TClient = record
public
procedure Print(Msg : String);
procedure PrintEx(SenderID : Cardinal; Color, Font : Word; Msg : String);
procedure CloseUIWindow(UIWindowType : TUIWindowType; ID : Cardinal);
procedure RequestObjectTarget;
procedure RequestTileTarget;
function TargetResponsePresent : Boolean;
function TargetResponse : TTargetInfo;
function WaitForTargetResponse(MaxWaitTimeMS : Integer) : Boolean;
end;
public
procedure Print(Msg : String);
procedure PrintEx(SenderID : Cardinal; Color, Font : Word; Msg : String);
procedure CloseUIWindow(UIWindowType : TUIWindowType; ID : Cardinal);
procedure RequestObjectTarget;
procedure RequestTileTarget;
function TargetResponsePresent : Boolean;
function TargetResponse : TTargetInfo;
function WaitForTargetResponse(MaxWaitTimeMS : Integer) : Boolean;
end;
TSkill
TSkill = class
public
constructor Create(SkillName : String);
function Use : Boolean; overload;
class function Use(SkillName : String) : Boolean; overload;
procedure ChangeLockState(skillState : Byte);overload;
class procedure ChangeLockState(SkillName : String; skillState : Byte); overload;
function GetCap : Double;overload;
class function GetCap(SkillName : String) : Double; overload;
function GetValue : Double; overload;
class function GetValue(SkillName : String) : Double;overload;
end;
public
constructor Create(SkillName : String);
function Use : Boolean; overload;
class function Use(SkillName : String) : Boolean; overload;
procedure ChangeLockState(skillState : Byte);overload;
class procedure ChangeLockState(SkillName : String; skillState : Byte); overload;
function GetCap : Double;overload;
class function GetCap(SkillName : String) : Double; overload;
function GetValue : Double; overload;
class function GetValue(SkillName : String) : Double;overload;
end;
TTileWord
TTileWord = record
public
function GetTileFlags(TileGroup : TileFlagsType; Tile : Word) : Cardinal;
function ConvertFlagsToFlagSet(TileGroup : TileFlagsType; Flags : LongWord) : TTileDataFlagSet;
function GetLandTileData(Tile : Word) : TLandTileData;
function GetStaticTileData(Tile : Word) : TStaticTileData;
function GetCell(X, Y : Word; WorldNum : Byte) : TMapCell;
function GetLayerCount(X, Y : word; WorldNum : byte) : Byte;
function ReadStaticsXY(X, Y : word; WorldNum : byte) : TStaticCellRealXY;
function GetSurfaceZ(X, Y : word; WorldNum : Byte) : ShortInt;
function IsWorldCellPassable(CurrX, CurrY : Word; CurrZ : ShortInt; DestX, DestY : Word; var DestZ : ShortInt; WorldNum : byte) : Boolean;
function GetStaticTilesArray(Xmin, Ymin, Xmax, Ymax : Word; WorldNum: Byte; TileType: Word; var FoundTilesArray: TFoundTilesArray): Word;
function GetLandTilesArray(Xmin, Ymin, Xmax, Ymax : Word; WorldNum : byte; TileType : Word; var FoundTilesArray: TFoundTilesArray): Word;
end;
public
function GetTileFlags(TileGroup : TileFlagsType; Tile : Word) : Cardinal;
function ConvertFlagsToFlagSet(TileGroup : TileFlagsType; Flags : LongWord) : TTileDataFlagSet;
function GetLandTileData(Tile : Word) : TLandTileData;
function GetStaticTileData(Tile : Word) : TStaticTileData;
function GetCell(X, Y : Word; WorldNum : Byte) : TMapCell;
function GetLayerCount(X, Y : word; WorldNum : byte) : Byte;
function ReadStaticsXY(X, Y : word; WorldNum : byte) : TStaticCellRealXY;
function GetSurfaceZ(X, Y : word; WorldNum : Byte) : ShortInt;
function IsWorldCellPassable(CurrX, CurrY : Word; CurrZ : ShortInt; DestX, DestY : Word; var DestZ : ShortInt; WorldNum : byte) : Boolean;
function GetStaticTilesArray(Xmin, Ymin, Xmax, Ymax : Word; WorldNum: Byte; TileType: Word; var FoundTilesArray: TFoundTilesArray): Word;
function GetLandTilesArray(Xmin, Ymin, Xmax, Ymax : Word; WorldNum : byte; TileType : Word; var FoundTilesArray: TFoundTilesArray): Word;
end;
TEasyUO
TEasyUO = record
public
function EUO2StealthType(EUO : String) : Word;
function EUO2StealthID(EUO : String) : Cardinal;
property EUOVar[VarNum : Byte] : String;
end;
public
function EUO2StealthType(EUO : String) : Word;
function EUO2StealthID(EUO : String) : Cardinal;
property EUOVar[VarNum : Byte] : String;
end;
TPath
TPath = record
public
property StealthPath : String;
property CurrentScriptPath : String;
property StealthProfilePath : String;
property ShardPath : String;
end;
public
property StealthPath : String;
property CurrentScriptPath : String;
property StealthProfilePath : String;
property ShardPath : String;
end;
TMover
TMover = record
public
function Step(Direction : Byte; Running : Boolean) : Byte;
function RawMove(Direction : Byte; Running : Boolean) : Boolean;
function StepQ(Direction : Byte; Running : Boolean) : Integer;
function MoveXYZ(Xdst, Ydst : Word; Zdst : ShortInt; AccuracyXY, AccuracyZ : Integer; Running : Boolean) : Boolean;
function newMoveXY(Xdst, Ydst : Word; Optimized : Boolean; Accuracy : Integer; Running : Boolean) : Boolean;
procedure SetBadLocation(X, Y : Word);
procedure SetGoodLocation(X, Y : Word);
procedure ClearBadLocationList;
procedure SetBadObject(ObjType, Color : Word; Radius : Byte);
procedure ClearBadObjectList;
function CheckLOS(xf, yf, zf, xt, yt, zt : Integer; WorldNum : Byte) : Boolean;
function GetPathArray(DestX, DestY : Word; Optimized : Boolean; Accuracy : Integer): TArray<TMyPoint>;
function GetPathArray3D(StartX, StartY : Word; StartZ : Shortint; FinishX, FinishY : Word; FinishZ : Shortint; WorldNum : Byte; AccuracyXY, AccuracyZ : Integer; Run : Boolean): TArray<TMyPoint>;
function Dist(x1, y1, x2, y2 : word) : word;
procedure CalcCoord(x, y : word; Dir : byte; var x2, y2 : word);
function CalcDir(Xfrom, Yfrom, Xto, Yto : integer) : byte;
function PredictedX : Word;
function PredictedY : Word;
function PredictedZ : ShortInt;
function PredictedDirection : Byte;
property RunUnmountTimer : Word;
property WalkMountTimer : Word;
property RunMountTimer : Word;
property WalkUnmountTimer : Word;
end;
public
function Step(Direction : Byte; Running : Boolean) : Byte;
function RawMove(Direction : Byte; Running : Boolean) : Boolean;
function StepQ(Direction : Byte; Running : Boolean) : Integer;
function MoveXYZ(Xdst, Ydst : Word; Zdst : ShortInt; AccuracyXY, AccuracyZ : Integer; Running : Boolean) : Boolean;
function newMoveXY(Xdst, Ydst : Word; Optimized : Boolean; Accuracy : Integer; Running : Boolean) : Boolean;
procedure SetBadLocation(X, Y : Word);
procedure SetGoodLocation(X, Y : Word);
procedure ClearBadLocationList;
procedure SetBadObject(ObjType, Color : Word; Radius : Byte);
procedure ClearBadObjectList;
function CheckLOS(xf, yf, zf, xt, yt, zt : Integer; WorldNum : Byte) : Boolean;
function GetPathArray(DestX, DestY : Word; Optimized : Boolean; Accuracy : Integer): TArray<TMyPoint>;
function GetPathArray3D(StartX, StartY : Word; StartZ : Shortint; FinishX, FinishY : Word; FinishZ : Shortint; WorldNum : Byte; AccuracyXY, AccuracyZ : Integer; Run : Boolean): TArray<TMyPoint>;
function Dist(x1, y1, x2, y2 : word) : word;
procedure CalcCoord(x, y : word; Dir : byte; var x2, y2 : word);
function CalcDir(Xfrom, Yfrom, Xto, Yto : integer) : byte;
function PredictedX : Word;
function PredictedY : Word;
function PredictedZ : ShortInt;
function PredictedDirection : Byte;
property RunUnmountTimer : Word;
property WalkMountTimer : Word;
property RunMountTimer : Word;
property WalkUnmountTimer : Word;
end;
Можно сделать так:
var AnatomySk : TSkill;
begin
AnatomySk := TSkill.Create('Anatomy');
и дальше работать напрямую с AnatomySk, например AnatomySk.GetValue и т.д.
это удобно, когда надо постоянно работать с одним скиллом (например, регулярно проверять). Если же какой-то отдельный скилл надо разово проверить, то удобнее написать
TSkill.GetValue('Magery').
Аналогично с TUOObject.