Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Восстановление уроков по Stealth

тут можно задать вопрос по скриптингу
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Re: Восстановление уроков по Stealth

Post by shinma »

Даблклик на молотке

тут есть много способов как это сделать. один я уже описал когда мы открывали сундук
UseObject ($12340000); //кликнуть два раза по объекту $12340000
но мы пойдем дальше и кликнем два раза на предмет в правой руке

Code: Select all

program Say; //начало программы всегда должно начинатся с этих двух слов. program пробел название программы точка с запятой.
//

// колличество пустых строк не имеет занчения
 Begin// начало программы

//ObjAtLayer(LayerType: Byte): Cardinal // вернет ID предмета одетого на слое LayerType. но нам надо будет еще кликнуть по этому ID
//http://stealth.od.ua/Doc:RU/Manual/Reference/Dress_Layers

UseObject (ObjAtLayer(RhandLayer)); //получили id предмета  в руке, и кликнули по нему два раза.

 End. //конец программы, обратите внимание - конец программы заканчивается точкой.
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Re: Восстановление уроков по Stealth

Post by shinma »

Как только появился прицел, даблклик на ингах. т.е. в этом уроке нам надо сказать программе - жди покане появится прицел и как только он появится кликни им на инготы.

Code: Select all

program Say; //начало программы всегда должно начинатся с этих двух слов. program пробел название программы точка с запятой.
//

// колличество пустых строк не имеет занчения
 Begin// начало программы

//задача усложняется, будем получать ID ингов в сумке автоматически без команды info
//http://stealth.od.ua/Doc:RU/Manual/Reference/Object_Search
//но нам все же придется  один раз применить info для того чтобы узнать тип инготов, тип у всех инготов в игре одинаковый, они отличаются только по цветам, но мы //пока не будем использовать поиск по цветам. ну поскольку тип ингота в уо одинаковый для всех серверов то скорее всего он у вас будет $1BF2, естьо конечно еще //пару типов но о них вам пока знать рано. если у вас не такой тип то пишите тот что у вас.
//FindType(ObjType: Word; Container: Cardinal) : Cardinal //вернуть ИД предмета с указанным типом лежащем в указанном контейнере и этот ид нам надо использовать.
//FindType( $1BF2, backpack)

WaitTargetObject (FindType( $1BF2, backpack) );//плавно перетекаем к таргетам. эта функция кликнет таргетом на указанный ID как только этот таргет появится. и тут //такой ньюанс, она ждет таргет чтобы его кликнуть, но программа на ней не остановится. нам надо как то указать паузу, чтобы программа дождалась появления //этого самого таргета. для этого используем следуюую функцию
//WaitForTarget(MaxWaitTimeMS : Integer) //пауза, стелс будет ждать столько времени сколько вы укажете, но прервет паузу при появлении таргета.
//http://stealth.od.ua/Doc:RU/Manual/Reference/Target
WaitForTarget(60000);

{
в итоге получится так:
как только появится таргет ткнуть им по предмету в сумке,
делаем паузу которая остановит скрипт пока не появится таргет либо пока не истечет указанное время.
как только таргет появляется стелс уже знает, что вы ему сказали что первый появившийся таргет должен быть применен к инготам в сумке. что он и сделает.
}

 End. //конец программы, обратите внимание - конец программы заканчивается точкой.
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Re: Восстановление уроков по Stealth

Post by shinma »

Ждем выполнения работы

вот тут даже хз чо вам предложить, потому, что сколько шардов столько и вариантов видов этого пункта, у всех админов свои тараканы.
Но буду исходить из варианта простого гампа с одной кнопкой. Итак предположительно у вас простой гамп с одной кнопкой. как заставить стелс по ней кликнуть.
нам нужно узнать номер этой кнопки. делается это просто. жмякаете на эту кнопку, потом спокойно вписываете команду [infogump . появится листинг с

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

в предыдущем уроке.

Code: Select all

program Say;
Begin
WaitGump('1'); //ждем появление любого гампа и жмем в нем кнопку 1. нажмет первую найденную кнопку с номером 1. включая уже открытые гампы.
//http://stealth.od.ua/Doc:RU/Manual/Reference/Gump
End.
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Re: Восстановление уроков по Stealth

Post by shinma »

и теперь самое главное обьеденим эти примеры в одну программу.
в ней добавятся две очень полезные функции
Wait(WaitTimeMS : Integer);
CheckLag(timeoutMS : Integer) : Boolean;

Wait(WaitTimeMS : Integer) // просто пауза в миллисекундах
CheckLag(timeoutMS : Integer) : Boolean; // проверяет лаги, если лаг то будет ждать указанное в скобках вермя в миллисекундах. если лага нет то ждать ничего не

будет. ее нужно применять как можно чаще перед использованием каких либо предметов в игре.
Все примеры описанные мной не являются оптимизированными и эталонными, это просто примеры для описания работы стелса. Если вы хотите дальше учиться писать скрипты для уо то используйте форум и смотрите как нужные вам функции используют другие кодеры в своих скриптах.

Code: Select all

program Say; //начало программы всегда должно начинатся с этих двух слов. program пробел название программы точка с запятой.
//

// количество пустых строк не имеет значения
 Begin// начало программы


NewMoveXY(1234, 4321,1, 1, 1) ;//подойти к сундуку,идти в 1234, 4321, остановится за 1 квадрат, бегом.
CheckLag(60000) ;
UseObject ($12345678); //кликнуть два раза по сундуку  $12345678 чтобы он открылся
CheckLag(60000) ;
MoveItem(FindType( $1BF2, $12345678), 10, backpack, 0,0,0);//взять 10 ингов из сундука и положить к себе в сумку
//подойти к плавильне
NewMoveXY(1111, 2222,1, 1, 1);  //подойти к точке хотябы в пределах 1 клетки вокруг нее
NewMoveXY(1111, 2222,1, 0, 1);  //попытаться встать в саму точку
CheckLag(60000) ;
Equipt(RhandLayer,$12340000);   //взять молоток в руку
Wait(500);//подождать пол  секунды чтобы дать время персонажу на одевание молотка.
WaitTargetObject (FindType( $1BF2, backpack) );//устанавливаем ловушку на таргет , как только этот таргет появится он будет применен на указанный ID, но сама функция таргета не //вызывает. это делает следующая строка кода.
CheckLag(60000) ;
UseObject (ObjAtLayer(RhandLayer)); //получили id предмета  в руке, и кликнули по нему два раза. чтобы вызвать таргет.
Wait(1000);//подождать секунду чтобы дать время персонажу применить таргет на инготе и дождаться появления гампа.
WaitGump('1'); //нажать кнопку с номером 1 в первом гампе в котором есть эта кнопка.
End. //конец программы, обратите внимание - конец программы заканчивается точкой.

--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
Post Reply