В этой статье мы узнаем как создать собственный скрипт на заполнение войск в обзоре площади. Созданные таким образом скрипты разрешены правилами игры.
Мы рассмотрим:
- Для чего нужны скрипты на обзоре площади?
- Какие действия происходят в обзоре площади?
- Основные используемые команды
- selectAllUnits(boolean)
- insertUnit(Unit, Quantity)
- Обозначения начала и конца скрипта
- Скрипт на офф-войска
- Скрипт на деф-войска
Для чего нужны скрипты на обзоре площади?
Какие действия происходят в обзоре площади?
- выбор видов войск и количество юнитов для отправки;
- выбор цели;
- выбор между атакой и подкреплением выбранной цели.
Так как наш скрипт по правилам игры может производить лишь одно действие (клик), то в этой статье остановимся на первом действии.
Основные используемые команды:
selectAllUnits(boolean);
insertUnit(Unit, Quantity);
Обе команды встроены в игру и используются быстрыми ссылками. Рассмотрим их подробнее.
selectAllUnits(boolean);
Эта команда выбирает или убирает все имеющиеся войска данной деревни. Оба варианта зависят от используемого булевого логического аргумента (boolean). Таким образом, мы можем выбирать между правдой (true) и ложью (false).
Для выбора всех войск используем
selectAllUnits(true);
Для выбора нулевого количества войск каждого типа используем
selectAllUnits(false);
Эта команда очень важна для нас, так как в разных деревнях будут ждать приказов разное количество войск. Таким образом мы можем выбрать максимальное значение, не имея представления сколько их будет в данном конкретном случае.
insertUnit(Unit, Quantity);
С помощью этой команды мы можем выбирать заданное количество (Quantity) указанного нами рода войск (Unit).
Параметр количества (Quantity) прост — положительные числа.
Перед отправкой игра проверит эти значения и округлит их до целых.
Второй параметр, вид войск (Unit), зависит от настроек мира.
Есть основные виды войск, придуманные и рассчитанные ещё на первых немецких серверах:
- копейщик — spear
- мечник — sword
- топорник — axe
- лазутчик — spy
- лёгкий кавалерист — light
- тяжёлый кавалерист — heavy
- таран — ram
- катапульта — catapult
- дворянин — snob
Так же есть новые виды войск:
- паладин — knight
- конный лучник — marcher
- лучник — archer
Так как этот параметр будет ссылаться на элемент в структуре страницы, то нужно уточнить его через DOM-дерево.
Есть несколько путей для этого, например, воспользуемся именем элемента. Для уточнения значения указываем в параметре (Quantity) не spear для копейщика, а document.forms[0].spear
Ниже приведён список команд для выставления нулевого значения каждого юнита:
insertUnit(document.forms[0].spear,0);
insertUnit(document.forms[0].sword,0);
insertUnit(document.forms[0].archer,0);
insertUnit(document.forms[0].axe,0);
insertUnit(document.forms[0].spy,0);
insertUnit(document.forms[0].light,0);
insertUnit(document.forms[0].marcher,0);
insertUnit(document.forms[0].heavy,0);
insertUnit(document.forms[0].ram,0);
insertUnit(document.forms[0].catapult,0);
insertUnit(document.forms[0].knight,0);
insertUnit(document.forms[0].snob,0);
Здесь важно помнить, что ваш код должен работать лишь с теми видами войск, которые вам доступны.
Использование кода для выставления значения лучникам в мире без них приведёт к ошибке выполнения кода.
Обозначения начала и конца скрипта
Каждый яваскрипт начинается с
javascript:
Далее идут ваши команды разделённые «;»
Полезно, но не обязательно обозначать конец кода через
end()
Итак, все нужные данные конструктора нам известны, можем приступать к построению своего собственного скрипта.
Далее приведены два примера, хотя для разных задач вы теперь легко сможете построить свои скрипты, пользуясь выше приведённой логикой.
Скрипт на офф-войска
Так как мы не знаем (да и не нужно) сколько точно войск будет у нас в деревне, для начала вставим всё что есть.
javascript:
selectAllUnits(true);
Теперь решаем, какие войска не пойдут в бой.
В этом примере исходим из мира с паладином и луками.
Все неатакующие войска (если они по той или иной причине имеются) должны остаться дома. Т.е. исключаем:
- копейщиков,
- мечников,
- лучников,
- лазутчиков,
- тяжёлую кавалерию,
- паладина,
- дворян.
Для этого выставим этим войскам нулевые значения.
insertUnit(document.forms[0].spear,0);
insertUnit(document.forms[0].sword,0);
insertUnit(document.forms[0].archer,0);
insertUnit(document.forms[0].spy,0);
insertUnit(document.forms[0].heavy,0);
insertUnit(document.forms[0].knight,0);
insertUnit(document.forms[0].snob,0);
Завершаем скрипт с end() и готово:
javascript:
selectAllUnits(true);
insertUnit(document.forms[0].spear,0);
insertUnit(document.forms[0].sword,0);
insertUnit(document.forms[0].archer,0);
insertUnit(document.forms[0].spy,0);
insertUnit(document.forms[0].heavy,0);
insertUnit(document.forms[0].knight,0);
insertUnit(document.forms[0].snob,0);
end()
Скрипт на деф-войска
Начинаем с вставки всех значений:
javascript:
selectAllUnits(true);
Исключаем ненужные войска.
Также уберём быстрый деф тяжёлой кавалерией, разведку и паладина (он один и весьма важен в дефе, его лучше посылать руками):
insertUnit(document.forms[0].axe,0);
insertUnit(document.forms[0].spy,0);
insertUnit(document.forms[0].light,0);
insertUnit(document.forms[0].marcher,0);
insertUnit(document.forms[0].heavy,0);
insertUnit(document.forms[0].ram,0);
insertUnit(document.forms[0].catapult,0);
insertUnit(document.forms[0].knight,0);
insertUnit(document.forms[0].snob,0);
Завершаем скрипт с end() и готово:
javascript:
selectAllUnits(true);
nsertUnit(document.forms[0].axe,0);
insertUnit(document.forms[0].spy,0);
insertUnit(document.forms[0].light,0);
insertUnit(document.forms[0].marcher,0);
insertUnit(document.forms[0].heavy,0);
insertUnit(document.forms[0].ram,0);
insertUnit(document.forms[0].catapult,0);
insertUnit(document.forms[0].knight,0);
insertUnit(document.forms[0].snob,0);
end()
Вот и всё, ничего сложного.
Если остались вопросы или появились пожелания – оставьте комментарий.
С ув., Евгений
Пример работает, если прописать его напрямую в закладку, но если пропустить через дропбокс, то скрипт не выполняется.
javascript:
script = document.createElement(‘script’);
script.type = ‘text/javascript’;
script.src = ‘https://www.dropbox.com/s/vlkpc5s500py54r/leaf.js’;
document.getElementsByTagName(«head»)[0].appendChild(script);
void( 0 );
Починил. Нужно использовать такую настройку:
javascript:
script = document.createElement(‘script’);
script.type = ‘text/javascript’;
script.src = ‘https://dl.dropboxusercontent.com/s/vlkpc5s500py54r/leaf.js’;
document.getElementsByTagName(«head»)[0].appendChild(script);
void( 0 );
Спасибо.
Я хочу сделать скрипт, который бы показывал рейтинг за день по фарму только Моего Племени. Возможно такое, как считаешь?
В мире кода возможно всё… Не очень понятно зачем и откуда данные брать?
Как ты нашёл эти «встроенные функции»? Видел в других скриптах и другие.
Посмотрел как реализована кнопка «Выбрать всех» и немного углубился в js игры.