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

Materials, references, tutorials

Moderators: Murderator+, Murderator

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

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

Post by Scripts Writer »

Меню.

В этом уроке речь пойдёт о работе с меню(крафта),переодически появляющимися в повседневном мире уо.Разберу на конкретных примерах команды для работы ,а так же различные способы обрабатывания. Но сначала объясню "чайникам" на пальцах.

Меню - графический объект,содержащий в себе информацию, о возможном действии(превращении) над предметом. Другими словами:
1.Nightshade-предмет
2.Двойным кликом по реагенту, обрабатываем его и получаем долгожданное меню.
3.На большенстве шардов появится "рамочка с выбором" в верхнем левом углу(Меню крафта алхимии),теперь попродробнее как воплотить это в скриптах.



uo.WaitMenu('Заголовок','Выбор'['Заголовок2','Выбор2'])

Команда uo.WaitMenu содержит в себе информацию, по которой Injection будет посылать ответы при появлении того или иного меню.Сервер выдал меню- а инжект уже сам распорядился куда ему надо зайти и что скрафтить.

Заголовок -название самого меню,обычно пишется в верхней части меню.

Выбор -то что крафтим,или в какое следующее меню переходим из предыдущего.

Приведу несколько примеров:

Алхимия.

Code: Select all

sub Alchemy()
var garlick=' type '
  uo.WaitMenu('What sort of potion do you want to','Cure')
  uo.UseType(garlick)
end sub


В скрипте на алхимию,в уо при х2 клике на гарлик, появится меню которое обработает команда uo.WaitMenu -заглавием меню будет What sort of potion do you want to а выбором Cure

Инскрипт.

Code: Select all

sub Inscription()
var blanc=' type '
  uo.WaitMenu('Spell Circle','First Circle','Spell Circle 1','Magic')
  uo.UseType(blanc)
end sub



Заглавие Spell Circle Выбор First Circle Заглавие второго меню Spell Circle 1 Выбор во втором меню Magic Arrow

Тинкер.

Code: Select all

sub Tinkering()
var tools=' type '
  uo.WaitMenu('Tinkering','Tools','Tools','empty bottle')
  uo.UseType(tools)
end sub


Заглавие Tinkering выбор Tools заглавие Tools выбор empty bottle

Думаю хватит об этом, уже должно было зарубиться на носу,-приступим к следующей команде, которая разобьёт uo.WaitMenu на uo.AutoMenu ...

uo.AutoMenu (' Заголовок ',' Выбор ')
uo.AutoMenu (' Заголовок2 ',' Выбор2 ')

Принцип этой команды остаётся тем же, как и uo.WaitMenu , только она разбита на несколько пунктов.Приведу несколько примеров с теми же скриптами:

Code: Select all

sub Tinkering()
var tools=' type '
  uo.CancelMenu()
  uo.AutoMenu('Tinkering','Tools')
  wait(500)
  uo.AutoMenu('Tools','empty bottle')
  wait(500)
  uo.UseType(tools)
end sub

Code: Select all

sub Alchemy() 
var garlick=' type '
  uo.CancelMenu()
  uo.AutoMenu('What sort of potion do you want to','Cure')
  uo.UseType(garlick)
end sub

Code: Select all

sub Inscription() 
var blanc=' type '
  uo.CancelMenu()
  uo.AutoMenu('Spell Circle','First Circle')
  wait(500)
  uo.AutoMenu('Spell Circle 1','Magic')
  uo.UseType(blanc)
end sub


Между AutoMenu разумно будет использовать паузу, дабы уменьшить вероятность сбивания скрипта.
А чтобы свести вероятность сбивания скрипта к нулю, перед меню ставим uo.CancelMenu -команда,которая уберёт все лишние меню, которые могут появиться в результате игрового процесса(ворлд сейвов и лаг).

Ну вобщемто и всё,напоследок лишь скажу что оформлять Выбор можно как:

а)

Code: Select all

(1),(2),(3)
... Цифрой, в порядке которой стоит нужный вам выбор, допустим:

Алхимия. Вам нужен Potion, который получается при двойном клике на 2ую менюшку, в порядке слева-направо:

Code: Select all

uo.WaitMenu('What sort',(2))


Если у вас в меню будут стоять: Lesser Poison , Poison , Deadly Poison , то поставив (3) -вы сварите Deadly Poison. Думаю понятно.

б)

Code: Select all

(first),(second)
...

Аналогично, только не цифрами а английскими числительными (первое,второе)

в)

Code: Select all

(last) 


Повторяем выбор предыдущего Potion'a

г)

Code: Select all

(random) 


Injection сам выберет за вас,что ему сварить.

-----------------------------------------------------------------
Если что то забыл-добавьте. Сори за ошипки.
GimFlex
Expert!
Posts: 766
Joined: 2005-01-07 13:22:19
Contact:

Post by GimFlex »

мясуешь
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

Маздаю респект :arrow: ...
Last edited by Sanch on 2006-04-26 14:56:56, edited 1 time in total.
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

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


дело в том что гампы это 7 урок =)
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

Сори ступил, мне почему то показалась что это как то имеет отношение к гампам, а когда 7ой бут готов? :wink:
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

Sanch wrote:Сори ступил, мне почему то показалась что это как то имеет отношение к гампам, а когда 7ой бут готов? :wink:


Вот этот вопрос уже к настоящим экспертам =) на этом уроке увы мой потенциал иссяк )

п.с. дестр,едред,флейк , ждём продолжения совместного дела =)
Toolmate
Posts: 104
Joined: 2005-08-18 09:09:18
Location: RUSSIA

Post by Toolmate »

А с трекингом как это провернуть?

You Must Die:

Code: Select all

sub Track()
  uo.WaitMenu('Tracking','Players')
  uo.UseSkill('Tracking')
end sub



Спасибо.
-=^NOVA RunUO 2 Server^=-
www.nova-uo.com
сферовское ПВП
IRC Server: irc.netbynet.ru; канал: #nova
omi4
Posts: 457
Joined: 2005-07-10 21:53:05

Post by omi4 »

Небольшая поправка к уроку, вот пример правильного использования UO.AutoMenu()

Code: Select all

sub Tinkering()
; чистим ловушки
   UO.CancelMenu()
; ставим ловушку.
   UO.AutoMenu('Tinkering','Tools')
   UO.AutoMenu('Tools','empty bottle')

   repeat
    UO.DeleteJournal()
      UO.UseType(tools)
      repeat
         wait(500)
      until UO.InJournal("false|true")
   until UO.Dead()
; чистим ловушки, иначе проблемы с менюхами обеспеченны
   UO.CancelMenu()
end sub
stickman
Posts: 139
Joined: 2005-04-05 04:13:24
Location: DRW
Contact:

Post by stickman »

вот такой вопросик.. решил все-таки научиться писать скрипты... для себя, да и чтоб просто знать, вас не достовать особо.. да и другим по возможности помочь. так вот: где уроки с 7 по 10? и если не сложно подскажите где еще можно инфы найти?! :) спасибо за внимание
Question_GimFlex
Posts: 188
Joined: 2007-03-24 08:12:51

Post by Question_GimFlex »

stickman wrote:вот такой вопросик.. решил все-таки научиться писать скрипты... для себя, да и чтоб просто знать, вас не достовать особо.. да и другим по возможности помочь. так вот: где уроки с 7 по 10? и если не сложно подскажите где еще можно инфы найти?! :) спасибо за внимание

лучшая инфа это: взять какойнить адский скрипт с инструкцией взять карандаш и посторчно напротив каждой строчки писать что каждая строка делает если ты так сделаешь ты будешь уже среднячок я так и освоил инжект с первого раза это лучший урок а все остальное потом придет уж поверь :wink:
stickman
Posts: 139
Joined: 2005-04-05 04:13:24
Location: DRW
Contact:

Post by stickman »

адский скрипт эт чтот вроде мининга или ламбера?))
но все ж хорошо было бы найти эти уроки, пригодятся
а так ща могу койче подправить в скрипте для себя, в несложных исправить чтото если не работает..чтото легкое написать. но хочу идти дальше!
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

? wrote:
stickman wrote:вот такой вопросик.. решил все-таки научиться писать скрипты... для себя, да и чтоб просто знать, вас не достовать особо.. да и другим по возможности помочь. так вот: где уроки с 7 по 10? и если не сложно подскажите где еще можно инфы найти?! :) спасибо за внимание

лучшая инфа это: взять какойнить адский скрипт с инструкцией взять карандаш и посторчно напротив каждой строчки писать что каждая строка делает если ты так сделаешь ты будешь уже среднячок я так и освоил инжект с первого раза это лучший урок а все остальное потом придет уж поверь :wink:

Адский способ! Проще выучить паскаль на уровне школьника (с пониманием дела). Тогда каждый следующий язык будет освоить все проще и проще!
DerMeister сейчас на нейрале!
stickman
Posts: 139
Joined: 2005-04-05 04:13:24
Location: DRW
Contact:

Post by stickman »

ок. возмемся за паскаль) я раньше программил на VB
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

stickman wrote:ок. возмемся за паскаль) я раньше программил на VB

А, ну фигле, в инжекте вродеб простейший бейсик. А паскаль тебе поможет стелсом овладеть - классная штука ;)
DerMeister сейчас на нейрале!
Question_GimFlex
Posts: 188
Joined: 2007-03-24 08:12:51

Post by Question_GimFlex »

ну в общем суть одна а толкований много а уроки полезно потом прочитать чтобы красиво програмировать :) точнее улучшить стиль :wink:
ADEPT_ABP
Posts: 223
Joined: 2006-05-12 08:03:45
Contact:

Post by ADEPT_ABP »

Паскаль - который поможет... гхмм... овладеть классной штукой - стелсом, VB, простейший бейсик...
Вы конечно всё знаете-понимаете, а мне это ни о чём не говорит.
Что такое:
* VB - VisualBasic что-ли?. Так по-моему это, как кто-то, когда-то мне сказал, - язык "высшего" программирования(есть простейшие, а есть сложные т.е. - "высшие" :wink: ).
* стелс - стелс-клиент?
* простейший бейсик - это который, как на ZX-Spectrum или как на... этих... как их... типа "Электроника" - вобщем русская ЭВМ?
Ни Чего Не Понимаю.
Туплю наверное... :(
Старею... :mrgreen:
ADEPT_ABP
Posts: 223
Joined: 2006-05-12 08:03:45
Contact:

Post by ADEPT_ABP »

Недавно осознал истинный смысл AutoMenu. :)
Суть такова - при помощи этой функции Вы "вбиваете поумолчанию" последовательность определённых действий. Иными словами достаточно "одноразового применения".
Пример:

Code: Select all

sub main()
uo.automenu('Tools','empty bottle') ;"Превым вошёл - последним вышел."
uo.automenu('Tinkering','Tools')
bs() ; Собственно дальше он и будет "работать", а main() прекратит использоваться
end sub

sub bs()
while uo.count(ingot) > 2 ; Пока Иготов больше двух
 ws()
   UO.DeleteJournal()
    UO.usetype(tint) ;Используем TinkerTools
while not uo.injournal("You put the") and not uo.injournal("Tinkering failed.")
wait(100)
wend
CheckLag()
wend
uo.cancelmenu() ; Перед завершением работы скрипта, "почистим".
end sub

Sub ws() ; Проверка на World save
 if uo.injournal("world is saving now...") then
   while not uo.injournal("world data saving")
      wait(100)
       if uo.injournal("You are starving") then
         main()
       endif
   wend
 endif
CheckLag()
end sub

sub CheckLag() ; Скопи-пастил :)
   UO.DeleteJournal() ; вытрем все сообщения в журнале (Inj, но не клиента)
   UO.Click('backpack') ; одиночный клик по вашему backpack
;       ждем сообщения в журнале
   repeat
      wait(100)
   until UO.InJournal("backpack")
;       этот цикл завершится, если это сообщение появится.... замечу "Backpack" и "backpack"
;       регистр важен Пишите точно что ждете
end sub


Возник вопрос для чего main() и bs()? Для наглядности. :)
Играю на drw.ru
Использую инжект 505.18 VeNd0r
Начинающий скриптер.
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

Истинный смысл автоменю не только в его автоматности, но и ещё в глубине вложения. Вайтменю может совершить только три вложения, то есть три последовательных меню обработать. Автоменю может больше трёх. Пример, если ещё не поменяли, на дрв крафт цветных арморов.
WazzupP
Posts: 15
Joined: 2009-09-01 20:01:00

Post by WazzupP »

люди, обьясните пожалуйста, где я тут ошибку делаю:

Code: Select all

sub Blacksmithing()
   UO.WaitMenu('Blacksmithing','Colored Armors & Weapons','Dull Copper Ringmail','Dull Copper Ringmail Gloves')
   uo.UseType(0x1BEF)
end sub

это блаксмити из дул купера. пишет meny choise not found
помогите, а то голова уже начинает болеть... вроде всё правильно пишу...
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

Разве после выбора

Code: Select all

Colored Armors & Weapons
в следующем меню заголовок

Code: Select all

Dull Copper Ringmail
а не заголовок

Code: Select all

Colored Armors & Weapons
и выбор в меню

Code: Select all

Dull Copper Ringmail
?
Post Reply