Settings:
Save packets+debug logs // Запись логов packets и debug
Use Art.mul // Использовать Art.mul для отображения картинок во вкладке World
Show Cliloc text in journal // Показывать тексты клилоков
Profile_setup:
Profiles // Список чаров
Name // Отображение чара в списке
Login // Логин
Pass // Пароль
Shard // Шард
Reconnect time // Время для реконнектора
Ask for me // при подключении выбрать сервер и чара из списка
Always select // Всегда выбирать
Shard_setup:
Shards // Список серверов
Name // Имя сервера
IP // ИП адрес сервера
Port // Порт сервера
Encryption // криптование (No encryption - для изменения отображения версии клиента,
// надо править последнюю строку ("No encryption" 00000000 00000000 0 "6.0.13.0") в файле Encryption.cfg
UO mul-files path // путь к мул файлам клиента, обязательно правильно прописать для включения возможности движения и многих других
SphereServer Moving Fix // Обязательно ставьте, если играете на сфере. Иначе со стабильной периодичностью при хотьбе и беге будете получать MoveReject(и, как следствие, 5сек паузы)
KR-version shard // для версий МЛ и КР
AoP shard // для АоП
DiagonalMoveCheck // если у вас на шарде отбрасывает чара при движении по диагонали. Если же галка стоит -
// то в случае диагонального движения (1,3,5,7 направления) перед проверкой проходимости точки Y сначала
// проверяются на проходимость обе X, и если обе свободны - тогда уже проверяется Y.
Nul Targets // для шардов с измененными стандартными таргетами, на которые не реагирует стелс.
// при этом стелс даже с включенной галочкой обрабатывает эти "нулевые" таргеты ограниченным набором функций, в частности TargetToObject, TargetToXYZ, TargetToTile
// функции типа WaitTarget и проверки типа TargetPresent не поддерживают их ни в каком виде, ввиду архитектуры стелса
New Speak // включать на шардах версии ML и выше в случаях, когда обычная "говорилка" не работает для отсылки команд
// например, пишешь all release - в чат идет этот текст, а животное не реагирует совершенно, в таких и подобных случаях как раз и надо включать.
{Work with global vars}
procedure SetGlobal(GlobalRegion: String; VarName: String; VarValue: String); // Установка глобальной переменной, где
GlobalRegion - Область переменной ('stealth' - глобалка видна любому скрипту любого чара, 'char' - глобалка видна только для скриптов этого чара);
VarName - Имя переменной;
VarValue - Значение переменной.
в области глоб. пер. Stealth есть 5 заранее определенных названий переменных - от TestVar1 до TestVar5, при задании им значений - они автоматически появляются на закладке Main стелса в разделе ScriptVars
function GetGlobal(GlobalRegion: String; VarName: String): String; // Чтение значения глобальной переменной
Пример:
Code: Select all
SetGlobal('stealth','TestVar3',IntToStr(3434));
s:=GetGlobal('stealth','TestVar3');
AddToSystemJournal(s);
procedure SocketReset; // ????? закрывает соединение с сервером для подвисшего чара во время login-сессии ?????
procedure Connect; // Соедениться с UO сервером
procedure Disconnect; // Отключиться от UO сервера
Пример:
Code: Select all
If not Connected Then Connect;
If Connected and Dead Then Disconnect;
procedure SetARStatus(Value: Boolean); // Установить состояние реконнектора
function GetARStatus: Boolean; // Cостояние реконнектора
{Connected Status}
function Connected: Boolean; // Текущее состояние соединения с UO сервером. (True - если соеденены, иначе False)
function ConnectedTime: TDateTime; // Время подключения к серверу УО
{Char Name}
function CharName: String; // Имя Чара
Пример 1:
Code: Select all
LogName:=('D:\'+CharName+'.txt');
Code: Select all
Addtosystemjournal(CharName);
2:30:47 [KopUshKa_15]: KopUshKa
{Player Title}
function GetCharTitle: String; // Получения тайтла с папердола своего чара, возвращает приписку и весь остальной текст, длиной до 60 байт
Пример:
Code: Select all
Addtosystemjournal(GetCharTitle);
2:27:37 [KopUshKa_15]: KopUshKa, Legendary Miner
Для любых других НПЦ, у которых есть папердол:
при коннекте берется имя неписи, пишется в свойство, которое видно через закладку World и которое можно взять через GetName.
Если нужен тайтл с папердолла - значит шлете UseObject на непись, и ставите цикл типа
Code: Select all
S:=GetName($xxxxxxxx);
while GetName($xxxxxxxx) = S do wait(xxx)';
Соответственно кусок получения папердолла будет выглядеть как-то так:
Code: Select all
S:=GetName($xxxxxxxx);
UseObject($xxxxxxxx);
while GetName($xxxxxxxx) = S do wait(xxx)';
S:=GetName($xxxxxxxx);
function Self: Cardinal; // ID чара
function Sex: Byte; // Пол Чара (0=male, 1=female)
function Gold: Cardinal; // Золота (ГП) в БакПаке
function Armor: Word; // Армор
function Weight: Word; // Вес Текущий
function MaxWeight: Word; // Максимальный Вес
function Race: Byte; // Раса - 0=Humman, 1=Elf (на некоторых серверах с большим кол-вом рас эти стандартные значения могут быть изменены либо расширены)
function WorldNum: Byte; // Возвращает номер мира
0 - Felucca (Britannia)
1 - Trammel (Britannia_alt)
2 - Ilshenar
3 - Malas
4 - Tokuno
function ConnectedTime: TDateTime; // Время подключения к серверу УО
function DisconnectedTime: TDateTime; // Время отключения от сервера УО
function LastContainer: Cardinal; // ID последнего открытого контейнера
function Backpack: Cardinal; // указатель на БакПак Чара - используется в поиске и пр.
function Ground: Cardinal; // указатель на землю - используется в поиске и пр.
Состояние Чара:
Флаги:
function Hidden: Boolean; // Скрытность
function Poisoned: Boolean; // Отравленность
function Dead: Boolean; // Мертвый
Боевое Состояние:
function WarMode: Boolean; // Боевой режим (0-Мир, 1-Война)
function WarTargetID: Cardinal; // ID с кем идут боевые действия, иначе = 0
procedure SetWarMode(Value: Boolean); // Переключить боевой режим (True-Вкл, False-Выкл)
procedure Attack(ObjID: Cardinal); // Атаковать Врага по ID (Боевой режим включается автоматически)
Статы:
function Str: Integer; // Сила
function Dex: Integer; // Ловкость
function Int: Integer; // Интеллект
function Life: Integer; // Жизнь
function HP: Integer; // Жизнь
function Mana: Integer; // Мана
function Stam: Integer; // Стамина
function MaxLife: Integer; // Максимум Жизни
function MaxHP: Integer; // Максимум Жизни
function MaxMana: Integer; // Максимум Маны
function MaxStam: Integer; // Максимум Стамины
function Luck: Integer; // Удача
function PetsCurrent: Byte; // Текущее Количество Слотов прирученных животных
function PetsMax: Byte; // Максимальное Возможное Количество Слотов для Прирученных животных
function FireResist: Word; // Резист к Огню
function ColdResist: Word; // Резист к Холоду
function PoisonResist: Word; // Резист к Яду
function EnergyResist: Word; // Резист к Энергии
Пример:
Code: Select all
begin
Addtosystemjournal('Str '+IntToStr(Str)+' | HP '+IntToStr(HP)+'/'+IntToStr(MaxLife)+' | Stats '+IntToStr(Str+Dex+Int)+' | '+'Damage '+' || ');
Addtosystemjournal('Dex '+IntToStr(Dex)+' | Stam '+IntToStr(Stam)+'/'+IntToStr(MaxStam)+' | Luck '+IntToStr(Luck)+' | Gold '+IntToStr(Gold)+' || ');
Addtosystemjournal('Int '+IntToStr(Int)+' | Mana '+IntToStr(Mana)+'/'+IntToStr(MaxMana)+' | Weight '+IntToStr(Weight)+'/'+IntToStr(MaxWeight)+' | Pets '+IntToStr(PetsCurrent)+'/'+IntToStr(PetsMax)+' ||');
Addtosystemjournal('Armor '+IntToStr(Armor)+' | Fire '+IntToStr(FireResist)+' | Cold '+IntToStr(ColdResist)+' | Poison '+IntToStr(PoisonResist)+' | Energy '+IntToStr(EnergyResist)+' || ');
end.
3:30:48 [KopUshKa_15]: Str 130 | HP 115/115 | Stats 285 | Damage ||
3:30:48 [KopUshKa_15]: Dex 114 | Stam 117/117 | Luck 0 | Gold 0 ||
3:30:48 [KopUshKa_15]: Int 41 | Mana 41/41 | Weight 372/0 | Pets 0/5 ||
3:30:48 [KopUshKa_15]: Armor 40 | Fire 14 | Cold 14 | Poison 14 | Energy 14 ||
{Target}
function TargetPresent: Boolean; // Состояние таргета - если есть то true, в противном случае false
function TargetID: Cardinal; // ID таргета
procedure WaitForTarget(MaxWaitTimeMS: Integer); // Ожидает появления таргета, время задается в миллисекундах
procedure CancelTarget; // Отменить таргет
procedure TargetToObject(ObjectID: Cardinal); // Кликнуть таргетом на обьект
procedure TargetToXYZ(X,Y,Z: Integer); // Кликнуть таргетом по координатам на земле
procedure TargetToTile(TileModel: Word; X,Y,Z: Integer); // Кликнуть таргетом по Тайлу с координатами
Пример 1:
Code: Select all
If TargetPresent Then CancelTarget;
UseObject(PickAxe);
WaitForTarget(3000);
If TargetPresent Then TargetToTile(Tile,X,Y,Z);
Code: Select all
UseSkill('Poisoning');
WaitForTarget(3000);
If TargetPresent Then TargetToObject(FindType(PoisonBottle,BackPack));
WaitForTarget(3000);
If TargetPresent Then TargetToObject(FindType(Dagger,BackPack));
procedure WaitTargetObject(ObjID: Cardinal); // Ожидает появления таргета и клик им на обьект по ID
procedure WaitTargetTile(Tile: Word; X,Y,Z: Integer); // Ожидает появления таргета и клик им по Тайлу с координатами
procedure WaitTargetXYZ(X,Y,Z: Integer); // Ожидает появления таргета и клик им по координатам на земле
procedure WaitTargetSelf; // Ожидает появления таргета и клик им на себя
procedure WaitTargetType(ObjType: Word); // Ожидает появления таргета и клик им по обьекту (по типу)
procedure CancelWaitTarget; // Отменить ожидание таргета
procedure WaitTargetGround(ObjType: Word); // Ожидает появления таргета и клик им по обьекту на заемле
procedure WaitTargetLast; // Ожидает появления таргета, идентичную последнему
Пример:
Code: Select all
If TargetPresent Then CancelTarget;
UseSkill('Poisoning');
WaitTargetObject(FindType(PoisonBottle,BackPack));
WaitTargetObject(FindType(Dagger,BackPack));
procedure AddToSystemJournal(Text: String); // Добавить строку в системниый журнал
procedure Wait(WaitTimeMS: Integer); // Ожидать, время ожидания в миллисекундах
procedure UOSay(Text: String); // Сказать фразу
procedure ConsoleEntryReply(Text: String); // для переименовки рун и прочего, что использует текст из консоли
// Это полноценная ловушка - вызывать можно и до прихода пакета запроса, и после.
Пример:
Code: Select all
var
Time: TDateTime;
begin
Time:=Now;
useobject(Id);
checklag;
if IsSystemMsg('What is the new name',Time,Now) then ConsoleEntryReply(Text);
end;
procedure RuneRename(Id: Cardinal; Text: String); // Переименование руны
function UseSkill(SkillName: String): Boolean; // Использовать Скилл
function GetSkillValue(SkillName: String): Double; // Получить значения Скила
Список Скиллов:
Upd: Название скилла должно соответствовать написанию в клиенте.
Alchemy
Anatomy
Animal Lore
Animal Taming
Archery
Arms Lore
Begging
Blacksmithing
Bowcraft
Bushido
Camping
Carpentry
Cartography
Chivalry
Cooking
Detect Hidden
Enticement (Discordance)
Evaluate Intelligence
Fencing
Fishing
Focus
Forensic Evaluation
Healing
Herding
Hiding
Inscription
Item ID
Lockpicking
Lumberjacking
Mace Fighting
Magery
Magic Resistance
Meditation
Mining
Musicianship
Necromancy
Ninjitsu
Parrying
Peacemaking
Poisoning
Provocation
Remove Trap
Snooping
Spirit Speak
Stealing
Stealth
Swordsmanship
SpellWeaving
Tactics
Tailoring
Taste Identification
Tinkering
Tracking
Veterinary
Wrestling
procedure UseObject(ObjectID: Cardinal); // Использовать обьект (Двойной клик)
function UseType(ObjType: Word; Color: Word): Cardinal; // Использовать по типу из BackPack-a
function UseFromGround(ObjType: Word; Color: Word): Cardinal; // Использовать по типу с земли
procedure ClickOnObject(ObjectID: Cardinal); // Одиночный клик на обьекте
function Cast(SpellName: String): Boolean; // Кастовать заклинание
Список Заклинаний
-=magery spells=-
Clumsy
Create Food
Feeblemind
Heal
Magic Arrow
Night Sight
Reactive Armor
Weaken
Agility
Cunning
Cure
Harm
Magic Trap
Magic Untrap
Protection
Strength
Bless
Fireball
Magic Lock
Poison
Telekinesis
Teleport
Unlock
Wall of Stone
Arch Cure
Arch Protection
Curse
Fire Field
Greater Heal
Lightning
Mana Drain
Recall
Blade Spirit
Dispel Field
Incognito
Spell Reflection
Mind Blast
Paralyze
Poison Field
Summon Creature
Dispel
Energy Bolt
Explosion
Invisibility
Mark
Mass Curse
Paralyze Field
Reveal
Chain Lightning
Energy Field
Flame Strike
Gate Travel
Mana Vampire
Mass Dispel
Meteor Swarm
Polymorph
Earthquake
Energy Vortex
Resurrection
Summon Air Elemental
Summon Daemon
Summon Earth Elemental
Summon Fire Elemental
Summon Water Elemental
-=necromancer spells=-
Animate Dead
Blood Oath
Corpse Skin
Curse Weapon
Evil Omen
Horrific Beast
Lich Form
Mind Rot
Pain Spike
Poison Strike
Strangle
Summon Familiar
Vampiric Embrace
Vengeful Spirit
Wither
Wraith Form
-=paladin spells=-
Cleanse by Fire
Close Wounds
Consecrate Weapon
Dispel Evil
Divine Fury
Enemy of One
Holy Light
Noble Sacrifice
Remove Curse
Sacred Journey
-=Spellweaving=-
Arcane Circle
Gift of Renewal
Immolating Weapon
Attune Weapon
Thunderstorm
Nature’s Fury
Summon Fey
Summon Fiend
Reaper Form
Wildfire
Essence of Wind
Dryad Allure
Ethereal Voyage
Word of Death
Gift of Life
Arcane Empowerment
-=Ninjutsu=-
Focus Attack
Death Strike
Animal Form
Ki Attack
Surprise Attack
Backstab
Shadowjump
Mirror Image
-=Bushido=-
Weapon Parry
Honorable Execution
Confidence
Evasion
Counter Attack
Lightning Strike
Momentum Strike
{Ability}
function GetActiveAbility: String; // Узнать название активной абилки на оружии, возвращает '0' - если абилки нет
procedure UsePrimaryAbility; // Установить первичную абилку на оружии
procedure UseSecondaryAbility; // Установить вторичную абилку на оружии