От временного безделья внедрили стрелы в Flash - теперь они видимые и летят куда надо. При проигрывания события "удаленная атака" вызываем функцию makeArrow. В функции четыре параметра - исходные координаты и цели.
В самой функции создается объект типа creature с типом -2, с анимацией передвижения. Количество шагов анимации (animate_num) зависит от расстояния (иначе каким не было расстояние - стрела летела одно и тоже время - и для выстрела в упор была очень замедленная анимация).
Всю неделю пристыковывал новый меч к новому образу героя, в принципе получилось очень неплохо.
Сегодня реализовали ключи и сундуки. Реализация сундуков уже была сделана, но теперь будут попадаться в лабиринтах сундуки запертые ключами.
Ключи можно купить в магазине, найти или получить в награду.
Сам факт открывания сундука может быть выполнен любым игроком (у него уменьшается количество необходимых для открытия ключей), а затем любой игрок может взять вещи из уже открытого сундука.
Внедрили анимацию огня из ямы-ловушки с газом, теперь наш движок умеет накладывать анимационные "проклятья".
Выглядит очень эффектно. В принципе ничего сложно, при проигрывании события - на клип героя (который является сборником нескольких клипов - основы, оружия) накладывается еще один - "эффекты".
Вчера был изменено управление геймплеем. Теперь практические любое действие в лабиринте делается в один клик, в качестве подсказок используются различной формы курсоры.
Например, для того чтобы идти - достаточно один раз нажать на тот квадрат, на котором курсор превратится в след. Для атаки - нажать на противника, причем для ближней курсор будет отображаться мечом только при возможности атаки (расстояние менее 1 клетки), то для дальней (артиллерии) курсор примет форму мишени, если есть возможность атаки стрелой (не закрывает стеной и прочее).
Добавили в инвентарь, новый вид подсказки, в виде фигурной рамки.
Возник вопрос как определить ширину текста в Flash, поискал в инете - ничего нету (либо плохо искал).
Потому нашел свой вариант. Для TextField'а (который ясен пень динамичный, либо вообще установлена переменная для отображения) - назначаем имя (instance name) например hint.
Скриптом устанавливаем у него свойство hint.autoSize = true, а затем считываем размер его hint._width.
И все.
На выходе получаем вот такое:
Вообще вроде бы для игрового чата, было уже все готово – и база и цвета и движок, но вот оказалось, что все вместе это не работало.
Во-первых, оказалось, что еще не совсем внедрена система передачи событий конкретному игроку, и вроде бы про это говорилось еще в реализации сундуков, но оказывается в коде этого нет. Либо не доделали, либо откатили в процессе разработки.
Легко решилось внедрением в события переменной кому, если 0 – то всем.
Изменил функцию тени на Flash-клиенте, теперь оно считается также как и на сервере – круговым просмотром, конечно не быстро – зато уж точно правильно.
Теперь на клиенте просмотр считается заполнением дополнительной карты, где 1 означает, что данный квадрат игрок видит, а 0 – что нет. Определение видит ли игрок, любой и объект – весьма простой – нужно посмотреть координаты и значение по этим координатам в этой карте.
Сейчас внедряем чат.
Также дописал алгоритм, поведения лучника – и теперь этот гад убивает меня быстрее, чем я его :)
Во время новогодней недели мы планировали сделать очень многое, но оказалось совсем наоборот - всем лень и некогда.
Оливье, шампанское - вот чем все заняты.
Из сделанного:
Сделал редизайн сундука и окончательный функционал по взятию вещей, на сервере.
Также теперь выводится артефакты на экране в зависимости от общего количества, один арт - выводится по середине, если два - то по краям.
Код примитивный :)
Зато так более красивее, мне кажется