Сделай скрипт сам

В этой статье мы узнаем как создать собственный скрипт на заполнение войск в обзоре площади. Созданные таким образом скрипты разрешены правилами игры.

Мы рассмотрим:

  • Для чего нужны скрипты на обзоре площади?
  • Какие действия происходят в обзоре площади?
  • Основные используемые команды
    • selectAllUnits(boolean)
    • insertUnit(Unit, Quantity)
  • Обозначения начала и конца скрипта
  • Скрипт на офф-войска
  • Скрипт на деф-войска

Для чего нужны скрипты на обзоре площади?

Львиная доля действий в игре проходят через площадь. Оно и логично. Игра называется война племён, посему воевать в ней нужно постоянно. А атаки проходят через площадь, так что сами боги оптимизации завещали начать работы именно здесь.

Какие действия происходят в обзоре площади?

  1. выбор видов войск и количество юнитов для отправки;
  2. выбор цели;
  3. выбор между атакой и подкреплением выбранной цели.

Так как наш скрипт по правилам игры может производить лишь одно действие (клик), то в этой статье остановимся на первом действии.

Основные используемые команды:

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()

Вот и всё, ничего сложного.

Если остались вопросы или появились пожелания – оставьте комментарий.

С ув., Евгений

6 комментариев

  1. Даниил

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

    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 );

  2. Даниил

    Спасибо.
    Я хочу сделать скрипт, который бы показывал рейтинг за день по фарму только Моего Племени. Возможно такое, как считаешь?

  3. Даниил

    Как ты нашёл эти «встроенные функции»? Видел в других скриптах и другие.

    • Akkela

      Посмотрел как реализована кнопка «Выбрать всех» и немного углубился в js игры.

Добавить комментарий для ДаниилОтменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.