Flash

Инвентарь

Главная задумка - сделать эту флэшку с минимум онлайна, т.к. на самом деле все легко и просто.

Флэшка вызывается с параметрами из которых главных два - один указывает на тип силуэта персонажа, а второй на его инвентарь.
В Flash это парсится переменная params. Скажем приходит строка ввиде hero|aaa|inv|bbb|, где aaa - указатель на образ, а bbb - закодированные данные инвенторя.

Про образ думаю и все так ясно - это может быть просто имя соотвествующего SWF файлика, например man или woman.
С вещами посложнее, но тоже просто. Думаю сделать это так:

Всплывающие подсказки

После того как паука стало можно убить, очень было интересно узнать сколько у него осталось жизни.
Нет, конечно это было видно и по передающим данным из лога a,11,6,1,51,4,8,0, что удар был(damage) 4 HP и у него осталось 8HP, но как-то это не кошерно.
информация о существе. 7 Лабиринтов

Правки

Избавился от пересчета нужно ли обновлять карту – теперь при открытии карты с сервера, запоминаются координаты, что с этого положения карта уже запрашивалась.
Пометка сохраняется в массиве watchmap.

На сервере связи с этим сделал, чтобы карта открывалась только по обозреваемой территории – алгоритм тут.

Анимация героя

Наконец-то вымученный герой хоть как-то получился, анимация в конец меня убила, но все же есть и результаты.
Сам герой/персонаж оформлен виде отдельного SWF файла с набором фреймов названных особым образом: stand_s, stand_se, stand_e и т.п.
Количество фреймов на анимацию ходьбы - 3, левой-стой-правой.

Загрузка простым образом через loadMovie уже не устраивает, т.к. необходимо отслеживать процесс загрузки. Клип загружаем через MovieClipLoader, на onLoadInit вешаем обработчик загрузки.

Осталось прикрутить эффект от ямы-ловушки к Flash

Собственно куда и зачем кто пошел Flash-клиенту неинтересно, а интересно ему принять событие - ACT_CR_DEAD. События у нас отлавливаются функцией playAction и в нем:
if (type_act == 0x05) //dead
{
var cid = toint(data_act[0]);
var how = toint(data_act[1]);
putCreatureInfo("i,"+cid+",h,0,");
addMessage("<font color='#1111ff'>>+getCreatureName(cid)+"</font> - гибнет");
if (cid==_root.userid)
showDead(how);
}

Правки в Flash

Собственно, необходимо прикрутить очередность хода уже в клиентскую часть.

Для начала была сделана информационная панель (MoveClip), которая должна рисоваться поверх карты, т.к. карта рисуется вся сразу (надеюсь что Flash умно не рисует невидимые клипы).

Для того, чтобы панель была сверху, а не под картой необходимо при запуске перестроить ее "глубину" вручную:_root["infoPanel"].swapDepths(999777);. Число взято с потолка.

Затем в режиме ожидание - была включена функция отрисовки(прорисовке этой панели), вернее счетчика таймера.

function refreshPanel()
{

Втупляю

До чегоже я иногда туплю, прям страшно.

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

Ну если в воскресенье еще простительно (ездили на свадьбу к родственникам - Марину и Лешу еще раз поздравляю)
и там я в субботу уверенно накачался водкой по самые уши, то сегодня - просто позор.

Во-первых была ошибка, которая приводила к 100% загрузке, в Flash-процедуре doServer выполнялись проверки
в idle даже при отсутствии заданий.

RSS-материал