Десять уроков скриптинга (урок 4)

Materials, references, tutorials

Moderators: Murderator+, Murderator

Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Десять уроков скриптинга (урок 4)

Post by Scripts Writer »

Прицелы.

Начну с того что прицелом называется указатель - который указывает на предмет или область, над которым или которой в дальнейшем могут совершаться действия.

В инжекте, прицела как такового нету-он заменяется ловушкой для прицела. Чтобы объяснить приведу пример из жизни:

ключ-замочная скважина
ядерная ракета-пункт назначения

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

Вернёмся к ключу и ракете. Изначально вы задаёте прицел(ловушку) куда в дальнейшем пойдет ключ или ракета. Точно так же происходит и в инжекте- сначала мы прописываем ловушку для прицела, а затем уже само действие для предмета.

Если не понятно, объясню еще проще:

а)ловушка
б)действие,задающее прицел

ловушка поясняет инжекту, что как только появится прицел-читай меня, куда мне его направлять. Ну а действие предмета сами понимаете, выдаёт прицел который обработает ловушка. ( помоему уже проще некуда)
Причем отмечу что ловушки бывают не только для предметов,как я уже сказал ранее, но и для объектов и областей( тайлов ).

Ну а теперь поподробнее в инжект:

Первая команда с которой начну-

Code: Select all

uo.waittargetself()


Ловушка ставится на себя( тоесть прицел следует на вашего персонажа ).

Code: Select all

uo.waittargetself()
uo.Cast('Greater Heal')


или

Code: Select all

uo.waittargetself()
uo.UseType(bandages) # Бинты


Но сам я очень редко сталкиваюсь с такой ловушкой, практически никогда т.к. заменить всё это можно и проще:

Code: Select all

uo.Cast('Greater Heal','self')

uo.bandageself()


Думаю принцип вам понятен(если до сих пор не поняли что такое ловушка читайте пока не дойдет-дальше хуже).



Следующей командой будет

Code: Select all

uo.waittargettype(type,[color])


Ловушка ставится на объект найденый в бекпеке и подсумках по типу(и цвету). Другими словами- ищет объект и ставит ловушку на него.

примером может являтся скил Poisoning:

Code: Select all

uo.waittargettype(' Type ')
uo.UseSkill('Poisoning')



Выбираем тип предмета, и кликаем на него, когда появляется прицел от скила-" Что травим ".
Если же у вас несколько предметов одного типа,на которые ставится ловушка(2 меча например)-проставьте так же и цвет.
Думаю тут всё понятно.Продолжу




Code: Select all

uo.waittargetobject(object,[object2])

Эта команда, в отличии от предыдущей, ставит ловушку на определённый предмет(объект) который задаётся по ID.

Ну к примеру:

Code: Select all

uo.waittargetobject('ID Rune')
uo.Cast('Recall')

Задаём ID руны, и вот вам скрипт на то чтобы быстро улететь с поля боя, или вовсе для удобства ).

Чтоже касается 2ого объекта:

В некоторых случаях появляются несколько прицелов в последовательности,- для этого и предназначен второй объект.Как только появится прицел-он попадёт в ловушку на первый объект, и если указан второй объект-то при появившемся втором прицеле-его поймает ловушка второго объекта.Думаю вы поняли ) продолжаю:





Следующей командой будет:

Code: Select all

uo.waittargetground(type,[color])


Ищет на земле объект по типу и цвету(если задано), и устанавливает на указанный объект ловушку прицела. Аналогично предыдущей команде.





Продолжу командой:

Code: Select all

uo.waittargetobjecttype(object,type,[color])


Она же совмещает 2 предыдущих команды, и устанавливает прицел на объект который ищется и по ID и по Типу и по Цвету.




Ну чтож. С объектами почти закончили, приступаем к области(тайлу)
Думаю вам известно, что прицелы нужны не только для объектов но и для тайлов-в пример приведу скрипты на мининг,фишинг, копание кладов и т.д. Рассмотрим поподробнее:

Code: Select all

uo.waittargettile(lasttile/tilenum,[x],[y],[z])
- устанавливаем ловушку на тайл, который указан в параметрах. Это может быть как uo.waittargettile(lasttile) - тайл, на который кликали до этого, так и тайл который задаётся координатами- uo.waittargettile(tilenum,[x],[y],[z])

Что касается предыдущего тайла:

Code: Select all

  if uo.InJournal('You put') then
    uo.waittargettile(lasttile)
    uo.UseType( PickAxe )
  ...


Типичная похожая конструкция, в скрипте на мининг. Выкопали- пробуем копать еще.
Что же касается указанного тайла, то думаю тут и так понятно,-указываем, действуем :).

Ну вот и всё, что я вам могу рассказать о Прицелах,Ловушках и тому подобному =). В добавок прокоментирую следующие команды, которые возможно вам помогут:


Code: Select all

uo.waittargetlast()
Прицел следует на предшествующий объект, на котором стояла ловушка. Другими словами- повторяет предыдущую ловушку :).

Code: Select all

uo.CancelTarget()
Обнуляем прицел.

Code: Select all

uo.infotile
(,infotile) Узнаем информацию о тайле(координаты)
Last edited by Scripts Writer on 2006-03-10 03:42:13, edited 1 time in total.
LordTom
Posts: 256
Joined: 2006-02-03 11:32:16
Location: ND
Contact:

Post by LordTom »

где копирайты :?: :lol:
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

неужто так плохо написал )
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Прилепить или не прилепить, вот в чём вопрос...

Я вот, что думаю - все уроки отлепить и прилепить индексирующий топик 8)
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Destruction wrote:Прилепить или не прилепить, вот в чём вопрос...

Я вот, что думаю - все уроки отлепить и прилепить индексирующий топик 8)


На фиг. Не действуй по принципу: новая метла по-новому метет. Иначе и мести будет нечего. Вон старый мой учебник кто-то отлепил - где он теперь, хз.
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

uo.waittargettile(lasttile/tilenum,[x],[y],[z])


Можно про tilenum по подробней, от куда он берется и что это такое, а то во всех скриптах на миниг он есть, везде разный, а что значит мне не понятно, зарание благодарю.
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

Sanch wrote:
uo.waittargettile(lasttile/tilenum,[x],[y],[z])


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



,infotile и тыкаешь на тайл. будут координаты вида = 0 5412 658 30, соответствующие формату команды.
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

К вечеру опубликую 6ой урок.
andrey545
Posts: 21
Joined: 2006-08-02 21:35:11

Post by andrey545 »

они другова вида...инфа о тайле. вот я гамаю, и там тип тайла еще есть, и он разный. как заюзать такие тайлы вокруг не могу придумать.
andrey545
Posts: 21
Joined: 2006-08-02 21:35:11

Post by andrey545 »

1341 4036 466 3

1341 вот такой тип тайла, и они разные типы такие. как заюзать на копке эти тайлы?
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

Опиши поконкретнее, выложив все тайлы на которых ты будешь копать. Возможно можно использовать массивы, или же несколько циклов с опр. тайлом в каждом из них.
andrey545
Posts: 21
Joined: 2006-08-02 21:35:11

Post by andrey545 »

1339 4037 465 3



1340 4039 467 3

1339 4038 467 3

1340 4037 467 3

1341 4036 467 3

1342 4035 467 3

1347 4034 467 3

1341 4035 466 3

1341 4036 466 3

1342 4037 466 3

1340 4038 466 3

1342 4039 466 3

1341 4039 465 3

1342 4038 465 3

1340 4036 465 3

1343 4035 465 3

1342 4035 464 3

1341 4036 464 3

1340 4037 464 3

1343 4038 464 3

1339 4039 464 3

1341 4039 463 3

1342 4038 463 3

1339 4037 463 3

1341 4036 463 3

1340 4035 463 3
andrey545
Posts: 21
Joined: 2006-08-02 21:35:11

Post by andrey545 »

в принципе тайлы повторяются. сомтрел тайлы вокруг на две клетки все. 1347 только вот выпал откуда-то.))
SLAK
Posts: 182
Joined: 2005-08-19 16:12:23
Contact:

Post by SLAK »

andrey545 wrote:в принципе тайлы повторяются. сомтрел тайлы вокруг на две клетки все. 1347 только вот выпал откуда-то.))

А ты попробуй "-1" вместо номера тайла написать, мне обычно помогает:wink:
andrey545
Posts: 21
Joined: 2006-08-02 21:35:11

Post by andrey545 »

UO.WaitTargetTile( TileNum, STR( UO.GetX() + x ), STR( UO.GetY() + y ), 0)

тоесть вместо Tilenum сделать -1? не видел такой команды.)
SLAK
Posts: 182
Joined: 2005-08-19 16:12:23
Contact:

Post by SLAK »

Code: Select all

UO.WaitTargetTile(str(-1),str(x),str(y),str(z))
UO.WaitTargetTile("-1","2987","596","3")
UO.WaitTargetTile(-1,2987,596,3)

вот разные варианты , могит какой нить и заработает.. А , и ещё скажи какой версия инжа у тебя стоит.
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

andrey545 wrote:UO.WaitTargetTile( TileNum, STR( UO.GetX() + x ), STR( UO.GetY() + y ), 0)

тоесть вместо Tilenum сделать -1? не видел такой команды.)


Именно.
andrey545
Posts: 21
Joined: 2006-08-02 21:35:11

Post by andrey545 »

Yokoinjection 40?.? вот такая вот версия. в исходник засунул средний из трех файлов. DLL ку тоесть.) после эого выдал вот такую версию.
L@wbre@K
Posts: 15
Joined: 2005-03-17 02:25:11
Contact:

Post by L@wbre@K »

А вопрос тем временем актуальный... Надо как-то использовать 2-3 тайла...
L@wbre@K
Posts: 15
Joined: 2005-03-17 02:25:11
Contact:

Post by L@wbre@K »

Нашол выход, не много грамосткий...

Code: Select all

делит журнал
UO.WaitTargetTile(1343, STR( UO.GetX() + x ), STR( UO.GetY() + y ), 0))
         UO.UseType( Kirka )
иф нот уо.журнал (блаблабла, в общем все кроме пустоты в журнале) тогда,
UO.WaitTargetTile(1340, STR( UO.GetX() + x ), STR( UO.GetY() + y ), 0))
         UO.UseType( Kirka )
енд иф


Жаль что к переменным нельзя присваивать 2 значения...
Post Reply