Доброго времени суток, уничтожители компьютерных игроков. В сегодняшнем третьем уроке из цикла «Советы картостроителям в HOMM IV» мы придумаем для нашего героя необычную способность и реализуем её с помощью скриптов. Не будем тревожить яйца дракона, просто начнём!
Дар Мидаса
«Я готов исполнить любое твоё желание, о, спаситель, — молвил могущественный джинн — Но сделать свой выбор ты должен с умом, ведь…
— Молчать, синяк! Ты мешать моя думать… Что хочут варвар? Варвар хочут убивать и много-много золота…
*извилины скрипят по-варварски*
— …Точно, пусть трупы моих врагов делаются золотом!
— Но не проще ли сразу пожелать бесконечно много…
— Захлопни котелок!!! Делай, как моя сказал!
Это была лирика, теперь перейдём к сути. Как вы могли понять, способность позволяет получить золото за убитых армией героя врагов. Пусть, баланса ради, каждое убитое существо будет приносить, скажем, 25 золота.
- Заходим в «Свойства героя» (именно героя, это важно!) → «Скрипты» → «Обнаружение» → создаем численную переменную «Midas_army» и устанавливаем ей значение «Общее количество существ во вражеском отряде».
2. Заходим в «Свойства героя» → «Скрипты» → «Победа» → создаем условие (если «Midas_army» > 25 то запустить триггер «Midas_check»).
3. После победы над врагом необходимо дать игроку столько золота, сколько он захочет убил существ, умноженное на 25. Для этого мы создаём триггер «Midas_check», который закольцован сам в себя, т.е. он будет самовызываться, пока не выполнит определённые условия. А конкретно, (если «Midas_army» ≥ 25, то отнять от «Midas_army» 25, и дать красному игроку 625 золота).
Мы выплатили игроку 625 золота единожды, но почти наверняка вражеских существ будет больше, нежели 25 (а на меньшее кол-во триггер не срабатывает). Работаем дальше.
4. В триггере создаем второе условие («Midas_army» ≥ 25) и запускаем триггер «Midas_check». Теперь мы закольцевали его, и триггер будет выполнять сам себя, пока не выплатит «красному» всё до последней копейки. Он завершит свою работу в цикле, когда остаток достигнет числа ≤ 25.
Nota bene: Для чего мы вообще сделали привязку к 25 существам? Увы, совершать вычисления по 1 существу — слишком ресурсозатратно. Игра не заточена под такие тонкие операции, поэтому мы облегчаем работу и себе, и ей. Делаем запуск триггера намного реже. Если у врага 100 существ — триггер запустится всего 4 раза. Тестил на 10 000 существах — результатом стал небольшой лаг длиной в секунду, а это хороший показатель.
5. Теперь мы можем поделиться нашей способностью с игроком, отметив её в описании героя, или там, где нам вздумается.
Наш урок о создании нестандартной способности подошёл к концу. В будущем я покажу вам другие, не менее интересные. А пока что пока. Экспериментируйте и вдохновляйтесь! До новых встреч!