» » » [PW] Вставляем свои смайлы в клиент

[PW] Вставляем свои смайлы в клиент [PW]

  • Автор: Puritan
  • 9-02-2011, 10:42
0

Можно использовать уже готовые наборы смайлов!

Что может пригодиться в процессе работы:

Внимание! У вас нет прав для просмотра скрытого текста.

Вместо фотошопа можно использовать DDS Converter

1. Исходный смайл, найденный на просторах интернета -
[PW] Вставляем свои смайлы в клиент

2. Разбиваем в любом gif редакторе наш смайлик на спрайты (кадры):
[PW] Вставляем свои смайлы в клиент


Далее, подчищаем фон кадров (делаем его прозрачным) и изменяем размер спрайтов - делаем его 32х32 пиксела (это важно!)
Естественно, все это делается в графическом редакторе (любом, на ваш вкус)

3. В том же графическом редакторе, создаем новый рисунок размером 512х512 пикселов с прозрачным фоном. Советую заранее настроить шаг сетки на 32 пиксела. Получается что-то похожее на это:

[PW] Вставляем свои смайлы в клиент


4. Перетаскиваем по-порядку наши 13 спрайтов полученных ранее на сделанную выше основу. Ход размещения - слева на право и сверху в низ. Вот как должно получиться в конечном итоге:

[PW] Вставляем свои смайлы в клиент


Сетка не позволяет промахнуться) (точное расположение спрайтов очень важно).

5. С графической частью закончили. Любым удобным способом создаем из получившегося рисунка dds файл (будь-то фотошоп или конвертер). Имеет смысл эксперементировать с настройками dds.

6. Не для кого не секрет, что наборы смайлов хранятся в клиенте игры в Perfect World\element\surfaces.pck. Распаковываем его и лезем в папку /ingame/
Сами наборы смайлов представлены 2 мя файлами - emotionsХ.dds (который мы уже сделали выше) и emotionsХ.txt, немного о формате последнего.
непосредственно для нашего изготовленного смайла emotionsХ.txt выглядит следующим образом:

0 13 "01hi" 10 20 30 40 50 60 70 80 90 100 110 120 130
13 1 "03test" 10
14 1 "03test" 10
15 1 "03test" 10
16 1 "03test" 10
17 1 "03test" 10
18 1 "03test" 10
19 1 "03test" 10
20 1 "03test" 10
21 1 "03test" 10
22 1 "03test" 10
23 1 "03test" 10
24 1 "03test" 10
25 1 "03test" 10
26 1 "03test" 10
27 1 "03test" 10
28 1 "03test" 10
29 1 "03test" 10
30 1 "03test" 10
31 1 "03test" 10
32 1 "03test" 10
33 1 "03test" 10
34 1 "03test" 10
35 1 "03test" 10
36 1 "03test" 10
37 1 "03test" 10
38 1 "03test" 10
39 1 "03test" 10
40 1 "03test" 10
41 1 "03test" 10
42 1 "03test" 10
43 1 "03test" 10
44 1 "03test" 10
45 1 "03test" 10
46 1 "03test" 10
47 1 "03test" 10
48 1 "03test" 10
49 1 "03test" 10
50 1 "03test" 10
51 1 "03test" 10
52 1 "03test" 10
53 1 "03test" 10
54 1 "03test" 10
55 1 "03test" 10
56 1 "03test" 10
57 1 "03test" 10
58 1 "03test" 10
59 1 "03test" 10
60 1 "03test" 10
61 1 "03test" 10


Условно формат можно разбить на 4 области (на примере первой строки):
0 - порядковый номер области начала смайла (первый спрайт, счет начинается с 0)... можно назвать это номер места в "шахматной доске" 16х16 квадратов, счет начинается слева на право и сверху вниз.
(если бы у меня был 2й смайл допустим, с 2 спрайтами, то 2я строка выглядела бы так:
13 2 "02hi2" 10 20, естественно, что сдвинется вся последующая нумерация).
13 - количество кадров (спрайтов) в смайле
"01hi" - наименование (произвольное значение)
10 20 30 40 50 60 70 80 90 100 110 120 130 - временные интервалы отображения каждого спрайта (точно не уверен, но, похоже что в десятых секунды) по нарастающей, т.е. время показа спрайта будет разницой между соседними соответствующими цифрами (знаю, не очень популярно объяснил ))), но как умею, поэкспериментируйте и сами разберетесь со временем .)
Важно, emotionsХ.txt должен быть заполнен для всех 50-ти смайлов из набора (у меня это "пустышки" 03test) даже если в текущем наборе всего 1 смайл, в противном случае - "светофор".

О расчёте время:
за время переноса смайлов из пв в гиф формат, понял, что время там китайское, и ПОЧТИ равно секунде
на самом деле в игре время немного замедленно, поэтому, если поставить время в секундах, то в игре они получаться ещё более замедленными, чем нужно
в ходе проверок, и замерений времени, понял, что время в клиенте течет на 160% медленней, тоесть секунду нужно делить на 1,6
пример:
у нас есть тайминг кадров
3 3 3 6
что бы перевести его в игру, нужно каждое число поделить на 1,6, тогда получим:
1,875 1,875 1,875 1,875 3,75
Файл в процесе загрузки на сайт. Ожидайте...

Объявления:



Загрузка. Пожалуйста, подождите...