Далее от Tie-Platoon про то как делать макросы.
Профессия "Макросер".
Начал я недавно качать DE и пришлось начать втыкать в макросинг в СВГ.
После пары часов поиска понял, что проще пользоваться своими собственными программами-макросерами, внутренних скриптов самой СВГ всеравно на все нехватает.
Более-менее нормального мануаля по использованию макросов мне найти так же не удалось, а видеть сплошь и рядом жалобных воззваний к "отцам" типа "надоело тыкаться мышкой - как автоматически крафтить?" и т.п. приходилось достаточно.
Поэтому, недолго думая, я решил написать свой собственный мануаль для создания скриптов для авто-крафтинга или прокачке того-же сурвея и т.п.
Я использовал макросер Macro Express (далее ME), и все примеры далее буду приводить именно на нем (хотя пользоваться можно чем угодно, т.к. большинство макросеров имеют схожие возможности).
Вот ссыль на сам макросер:
http://tucows.nordnet.ru/preview/195739.html
Для регистрации используйте следующие данные:
Name: "www.ttdown.com"
Code: "0E32CD47-ED281C27"
Весь мануаль я разделил на две части: "Novice Macroser" и "Master Macroser"
"Novice Macroser" - часть для тех, кто не хочет особо заморачиваться всеми тонкостями написаний макросов и хочет по-быстрому сделать "чтоб все хоть как-то да работало". Тут я не буду рассматривать способы авто-отслеживания правильности выполнения макроса самим макросом - если что-то собъется, то макрос так и будет шпарить дальше соответственно надо хотябы следить за его выполнением и изредка поправлять. Думаю, многих и это устроит.
Для настройки макроса в этом случае потребуется минут 5.
"Master Macroser" - Это уже часть для тех, кто хочет, чтобы все делалось само с их минимальным участием. Тут я рассмотрю возможности отслеживания ошибок типа "critical falure" и проверки на открытие очередного интерфейсного окна. Эта часть особенно пригодится для крафтеров.
Но в, данном случае, время настройки скрипта сильно увеличится.
Итак, поехали.
Общие советы:
Вообще, использование сторонних программ, помогающих совершать некие рутинные действия в игре, запрещено, поэтому не светитесь и не кричите всем как вы классно крафтите на автопилоте.
Если вы собираетесь отходить от компьютера на длительное время то лучше всего крафтить у себя дома или где-нибудь в отдаленном месте, например встав перед своим харвестером (типа проверяю накопанное )
Но в общем, если не светиться, то очень маловероятно, что кто-то вас засечет.
---------------"Novice Macroser"---------------
Несколько слов о самом ME.
По умолчанию Macro Express записывает все нажатия кнопок на клавиатуре и движения мыши, что нам собственно и нада .
Ничего сложного в его интерфейсе нет - в основном окне находятся все созданные вами скрипты плюс несколько служебных.
Слева находится панель для редактирования выделенного макроса.
Scripting Editor - для добавления/удаления стандартных команд из списка (там как раз и придется работать).
Direct Editor - для редактирования исходного текста скрипта.
ME имеет в себе возможность встраивания логических условий (типа if, and, case и т.п.), что может позволить проверять выполнение или не выполнение каких-то условий по ходу выполнения макроса, можно вводить переменные и различным образом манипулировать ходом выполнения макроса и т.п. (но это уже скил для Master Macroser ).
В общем, кому интересно - полазиет по настройкам и найдет кучу интересных функций.
Принципы создания макроса на крафтинг.
Потому как на создание одного предмета требуется какое-то время, то лучше использовать несколько crafting tool-ов для обеспечения непрерывного процесса крафта. Например на верхней панели размещаете по клеткам штук 5 тулов и юзаете их по очереди - например начали клепать предмет в одном, сразу кликаем на следующий и т.д.
До записи макроса делаем один "тестовый" экземпляр, чтобы удобно расставить необходимые ресурсы, выбрать нужную деталь в меню доступных схематиков и т.п.
Для того, чтобы начать запись макроса жмем Ctrl+Alt+Shift+х и начинаем выполнять блок необходимых действий, который будет затем выполнять макрос.
Так как сейчас мы не рассматриваем возможности контроля выполнения макроса, то необходимо делать достаточные паузы между нажатиями на кнопочки "next" в интерфейсных окнах крафтинга и вообще между любыми действиями следует делать небольшие паузы. В противном случае может произойти сбой в работе макроса (например, при создании какой-нибудь детали очередное окно появилось с бОльшей задержкой чем обычно, вследствие чего макрос попытается кликнуть "next" раньше, чем нужно).
После того, как вы выполнили блок необходимых дествий выключаем запись макроса тем же сочетанием клавиш, назначаем ему какой-нибудь хоткей и переходим к его редактированию и доводке.
!Для того, чтобы макрос автоматически переключался в окно с СВГ рекомендуется через Script Editor в самом начале макроса добавить строчку
Windows/program->WindowActivate и там пишете "swgclient".
!Для того, чтобы заставить отработать макрос строго определенное количество добавляем в начале блока для повторения ScriptEditor->Repeat->RepeatStart, и в конце блока ...->RepeatEnd.
ПОсле этого самой нижней строчкой можно добавить команду, например, проигрывания звукого файла, для сигнализации завершения скрипта, делается это здесь: Multimedia->SoundWaveFile.
(таким же образом можно "зациклить" макрос, поставив количество повторений тысяч 10 )
!Для остановки макроса, по умолчанию, используются клавиши ScrollLock+Pause изменить это можно здесь: Options->Preferences->Miscellaneous и в самом верху "Abort Macro HotKey".
!Перед тем, как оставлять макрос на длительное время одного, всетаки, имеет смысл проконтролировать 3-5 циклов, чтобы убедится, что все сделано правильно.
!В макрос можно встроить текст внутренних СВГ-шных команд или скриптов, или же просто тект, сделать это можно, опять же в ScriptEditor-e в разделе "Keyboard".
!В конце макроса лучше добавить несколько нажатий Esc-ейпа - это поможет как-бы начать скрипт заново и закрыть ненужные окошки если скрипт слетел.
Принципы создания "не совсем крафтерских" макросов (например surveying или dancing), требующих контроля HAM.
Пусть нам нужно создать макро для прокачки surveyingа.
Как известно, на сурвеинг и т.п. тратится один из пулов, в данном случае экшен. В этом случае нам нужно проверять сколько у нас осталось поинтов в экшене, чтобы сделать или паузу (сесть), или использовать медпак (что предпочтительней ).
Для этого можно воспользоваться такой штатной фишкой ME, как проверка изменения цвета пиксела в определенной части экрана.
Для этого в ScriptEditor открываете System->GetPixelColor, там в открывшемся окне ставите точку на "At Specific Coordinates" и, ниже, на "Relative To Window" и жмете "Launch Mouse Locator". Появится окно, в котором будет высвечиваться информация о местоположении мыши на экране и цвет пиксела в месте положения курсора. Курсор мыши подводите к точке на экране, в которой надо проверить цвет пиксела и нажимаете Ctrl+Space, тогда в окне автоматически запишутся координаты мыши.
Таким образом, эта функция будет брать значение цвета в определенной части экрана и присваивать этому значению некую переменную, которую затем можно будет встроить в логическое условие if (т.е. if значение цвета такое-то, то делаем то-то).
Приведу пример такого скрипта для прокачки все того же сурвеинга:
(В примере указаны просто "названия" команд как они выглядят в Script Editore, а не их реальный синтаксис, т.е. скопировать это дело себе в макрос не получится - пишите по подобию).
Activate Window: "swgclient"
Repeat Start (Repeat 10000 times)
Delay 30 Seconds
Get Pixel: Window Coords: 85,47 into %N1%
If Variable %N1% <> 50944
Text Type: /healdamage self<ENTER>
End If
Repeat End
Некоторые пояснения:
Get Pixel: Window Coords: 85,47 into %N1% - это значит мы взяли значение цвета пиксела в точке окна СВГклиента с координатами X:85,Y:47 (там у меня находится примерно середина зеленой полоски экшена) и приравняли значение цвета пиксела переменной N1.
If Variable %N1% <> 50944
Text Type: /healdamage self<ENTER>
End If
эти 3 строки делают проверку: если значение переменной N1 неравно 50944 (50944 - это значение зеленого цвета пиксела в полоске экшена), то это значит экшена стало меньше половины и мы пишем в консоли /healdamage self и нажимаем "ентер" - лечим себя.
Вот и все
Так же можно использовать МЕ и для прокачки сурвивала (любимые палатки )
Ну тут вообще нет особых проблем: расставляем штук 15 палаток в верхний тулбар и пишем скриптик для того, чтобы он кликал по ним по очереди с задержкой в минут 30 (или сколько там надо, чтобы лагерь исчез).
Единственное что: если не нажимать никаких кнопок на клавиатуре или не трогать мышь, то игра автоматически вас отлогинивает как раз через минут 30 (точно не проверял), поэтому можно встроить в скрипт какое-нибудь "бесполезное действие" с промежутком в минут десять, например, переключение окна гилдчата в спэйс чат и обратно или просто открытие и закрытие инвентори
---------------"Master Macroser"---------------
Для того, чтобы вообще не обращять внимание на скрипт, и запускать его скажем на всю ночь, нужно ввести проверку на отрабатывание каждой команды.
Сам принцип:
Самый очевидный способ - это, опять же , проверка на изменение цвета пиксела в определенной части экрана.
Для этого для каждого этапа крафтинга берем значение пиксела в какой-то области экрана (обязательно на непрозрачном фоне!, т.е. на фоне самих интерфейсных окон), например, в момент когда идет надпись "logging to crafting station" и т.п. экран темнеет и это будет являться "отличительной чертой" этого момента. Затем вводим условие для каждого этапа крафтинга, что если в такой-то части экрана (именно в той части где мы брали "пробу" пиксела в момент "потемневшего" экрана) цвет такой-то (т.е. именно тот цвет, которым закрашен этот пиксел в процессе "потемневшего экрана"), тогда ждем еще немного (т.е. это значит, что процесс загрузки следующего окна еще не завершен и нам надо еще подождать).
Само собой, можно сделать проверку на завершение "загрузки", взяв "пробу" пиксела в окне, которое должно открыться, но принцип это не меняет - это уже кому как больше нравится.
Так же можно избавиться от дебильной таблички "critical error" - берем пробу пиксела из окошка с этим еррором или из окна, которое должно появится следом (если "критикал еррор" не произошел) и вводим условие - что если критикал еррор возник - то все по новой, если нет - продолжаем.
Страдающие манией преследования могут еще сильнее извратиться - можно сделать кликанье "немного" рандомным, т.е. чтобы макро кликал мышкой не в одну и ту же точку экрана, а с небольшой "размытостью" и каждый раз с разными задержками. (Понятно, что человек не сможет кликать точно в одну и ту же точку экрана на одних и тех же этапах создания итема, поэтому есть вероятность, что таким образом разработчики попытаются поймать макросеров, но вероятность этого, по-моему, очень мала ибо нафик им это надо ).
Сделать это можно следующим образом:
1. Присваиваем переменным N1 и N2 значения точки в окрестности которой должен кликать макросер (делается это с помощью GetMousePosition).
2. Вводим 2 рандомные переменные N3 и N4 (VariableSetInteger, там выбираем "Set a Random Value" и максимальное значение например 5 - т.е. переменная будет принимать случайные величины от 0 до 5).
3. Складываем координату N1 и N2 с N3 и N4 соответственно и присваиваем им значение N5 и N6 (VariableModifyInteger).
4. Подставляем в команду для клика значения N5 и N6.
Таким же образом можно "рандомить" и значения задержек.
-----------------------------------------
Несколько слов напоследок.
Впринципе, большинству хватит возможностей, описанных в первой части.
Я например тоже довольствуюсь макросингом с "грубой" защитой от ошибок в виде Esc-ейпов в конце скрипта. Хотя, быть может, 2-я часть тоже будет кому-то интересна - имея немного фантазии можно писать действительно прикольные макросы (как вам например автоматическая посылка почтового сообщения о том, что у вас прокачался очередной кубик профессии? ).
Короче, пробуйте
__________________
/tell TIE-Platoon