Поясню сразу LF - Little Fighters
Данный гайд я не писал собвственно ручно (скачан с офф сайта LF), поэтому если какие-то вопросы вы задавайте я попробую ответить Честно скажу сам лично пока не пробывал все руки никак не дойдут...
1. Введение. Этот гайд предназначен для тех, кто хочет создать нового персонажа в LF2, но не знает как.
2. Необходимые программы. Для создания персонажа вам обязательно потребуется кодировщик и декодировщик для редактирования *.dat файлов из LF2. Одной из лучших программ для этого я считаю Data Changer by Jiquera Mondilano. Конечно можно использовать и программы Decrypt и Encrypt, но в них не так удобно работать, как в Data Changer. Также потребуется хороший редактор графики и просмоторщик, например Adobe Photoshop и ACDSee.
3. Начинаем работу. Ну что, если вы готовы приступить, то запускайте Data Changer и открывайте davis.dat (мы будем использовать персонажа Davis в качестве примера). Когда программа загрузит файл, в окне редактора мы увидим примерно следующее:
name: Davis
head: sprite\sys\davis_f.bmp
small: sprite\sys\davis_s.bmp file(0-69): sprite\sys\davis_0.bmp w: 79 h: 79 row: 10 col: 7
file(70-139): sprite\sys\davis_1.bmp w: 79 h: 79 row: 10 col: 7
file(140-209): sprite\sys\davis_2.bmp w: 79 h: 79 row: 10 col: 7
walking_frame_rate 3
walking_speed 5.000000
walking_speedz 2.500000
running_frame_rate 3
running_speed 10.000000
running_speedz 1.600000
heavy_walking_speed 3.700000
heavy_walking_speedz 1.850000
heavy_running_speed 6.200000
heavy_running_speedz 1.000000
jump_height -16.299999
jump_distance 10.000000 jump_distancez 3.750000
dash_height -10.000000
dash_distance 18.000000
dash_distancez 5.000000
rowing_height -2.000000 rowing_distance 5.000000
Эта часть - самая главная часть кода персонажа, сейчас я подробно объясню вам, что означает каждая строка в этом коде: name: Davis --> Имя персонажа. head: sprite\sys\davis_f.bmp --> Путь к спрайту davis_f.bmp в папке LF2. Этот спрайт отвечает за картинку при выборе персонажа в LF2. small: sprite\sys\davis_s.bmp --> Путь к спрайту davis_s.bmp в папке LF2. Этот спрайт отвечает за маленькую картинку персонажа на статус баре во время игры.
file(0-69): sprite\sys\davis_0.bmp w: 79 h: 79 row: 10 col: 7
file(70-139): sprite\sys\davis_1.bmp w: 79 h: 79 row: 10 col: 7 file(140-209): sprite\sys\davis_2.bmp w: 79 h: 79 row: 10 col: 7 Эти строчки показывают путь к спрайтам davis_0, davis_1, davis_2. В этих спрайтах содержаться анимация персонажа. Параметр w: 79 означает, что ширина одной яйчейки под картинку, в файле спрайта, равна 79. Параметр h: 79 означает, что высота одной яйчейки под картинку, в файле спрайта, равна 79. Параметры row: 10 и col:7 показывают сколько всего рядов и колонок в файле спрайта. В случае с Davis - 10 рядов и 7 колонок.
walking_speed --> Скорость ходьбы. walking_speedz --> Скорость ходьбы по кооординате Z (вверх/вниз), во время ходьбы по координате X (влево/вправо). running_speed --> Скорость бега. running_speedz --> Скорость бега по кооординате Z (вверх/вниз), во время бега по координате X (влево/вправо). heavy_walking_speed --> Скорость ходьбы, когда персонаж держит тяжелый предмет (например камень). heavy_walking_speedz --> Скорость ходьбы по координате Z, когда персонаж держит тяжелый предмет (например камень) и двигается по координате X. heavy_running_speed --> Скорость бега, когда персонаж держит тяжелый предмет. heavy_running_speedz --> Скорость бега по координате Z, когда персонаж держит тяжелый предмет. jump_height --> Высота прыжка. jump_distance --> Дистанция прыжка по оси X. jump_distancez --> Смещение по координате Z во время прыжка в дистанцию с нажатой кнопкой Up или Down. dash_height --> Высота прыжка во время бега. dash_distance --> Дистанция прыжка во время бега. dash_distancez --> Смещение по координате Z во время прыжка в дистанцию во время бега с нажатой кнопкой Up или Down. rowing_distance --> Дистанция подката.
===================================================================== -Мы будем использовать бег и удар Дєвиса для следующих нескольких примеров. _________________________________________________________________________________
72 super_punch
pic: 8 state: 3 wait: 2 next: 73 dvx: 0 dvy: 0 dvz: 0 centerx: 28 centery: 79 hit_a: 0 hit_d: 0 hit_j: 0
itr:
kind: 0 x: 40 y: 5 w: 35 h: 45 dvx: 3 dvy: -10 fall: 70 arest: 15 bdefend: 60 injury: 40
itr_end:
bdy:
kind: 0 x: 26 y: 12 w: 35 h: 66
bdy_end:
_________________________________________________________________________________ 72 super_punch ---> номер кадра и название движения (имя обычно сокращенное)+(название движения здесь только для того чтоб было легче найти нужный кадр) pic: 8 ---> картинка которую загружает кадр (!картинки в спрайтах считаются от левого угла до правого и первая картинка не 1 а 0!) state: 3 ---> состояние персонажа* wait: 2 ---> как долго длится кадр next: 73 ---> следующий кадр dvx: 0 ---> насколько персонаж продвигается в перед dvy: 0 ---> насколько персонаж продвигается вверх \ вниз (!Когда в небе и на земле НЕ вверх и вниз вовремя ходьбы!) dvz: 0 ---> насколько персонаж продвигается вверх \ вниз (!теперь это верх и вниз вовремя ходьбы!) centerx: 28 ---> centerx используется чтоб показать где центр персонажа (!Я не советую вам парится с этим!) centery: 79 ---> точка в которой ноги персонажа (если показатель больше 79 то персонаж окажется в воздухе)
----------------------------------------------------------------------------------------------------------------- hit_a: 0 ---> указывает какой кадр последует дальше если вы нажмете атаку hit_d: 0 ---> указывает какой кадр последует дальше если вы нажмете защиту hit_j: 0 ---> указывает какой кадр последует дальше если вы нажмете прыжок +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ hit_fj: ---> указывает какой кадр последует дальше если вы нажмете d>j вовремя этого кадра hit_uj: ---> указывает какой кадр последует дальше если вы нажмете d^j вовремя этого кадра hit_dj: ---> указывает какой кадр последует дальше если вы нажмете dvj вовремя этого кадра hit_fa: ---> указывает какой кадр последует дальше если вы нажмете d>a вовремя этого кадра hit_ua: ---> указывает какой кадр последует дальше если вы нажмете d^a вовремя этого кадра hit_da: ---> указывает какой кадр последует дальше если вы нажмете dva at вовремя этого кадра hit_ja: ---> указывает какой кадр последует дальше если вы нажмете dja вовремя этого кадра
----------------------------------------------------------------------------------------------------------------- itr: ---> атака начинается kind: 0 ---> тип атаки* x: 40, w: 35 ---> как далеко атакует (!вперед и назад!) (если вы учили алгебру то должны знать что ось х это движение влево и вправо ,а w это ширина) y: 5, h: 45 ---> как высоко атакует (!вверх и вниз на земле и в небе!) (y – верх низ h - высота) dvx: 3 ---> как далеко падает враг от удара (допустимы негативные значения) dvy: -10 ---> как высоко подлетит противник после удара (!негативное значение допустимо!) fall: 70 ---> шанс того что противник упадет arest: 15 ---> хз bdefend: 60 ---> шанс пробить защиту противника injury: 40 ---> сколько атака наносит урона* itr_end: ---> конец атаки ---------------------------------------------------------------------------------------------------------------- bdy: ---> начяло команд относящихся к телу (действия тела) kind: 0 ---> ?Special Effect? (I'm not sure what will happen, maybe I'll experiment with it later) x: 26, w: 35 ---> How far when attacked y: 12, h: 66 ---> How far when attacked bdy_end ---> конец команд относящихся к телу
---------------------------------------------------------------------------------------------------------------- mp: сколько манны жрет скил ============================================================== ЗВУК ---------------------------------------------------------------- ----------------------------------------------- Добавить звук в игру не трудно, труднее сделать чтоб звук использовался в нужный момент Чтобы добавить новый звук нужно скопировать его в папку "Data" Чтобы добавить движению звук нужно в кадре во второй строке (после pic:, etc): !sound: data\(sound name).wav!
Пример: У меня есть звук "beep.wav" в папке "Data" Теперь я хочю чтоб этот звук играл когда мой персонаж идет Я ставлю!sound: data\beep.wav! во вторую линию кадра ходьбы Теперь когда персонаж идет звук играет.
============================================================== УРОН
--------------------------------------------------------- ------------------------------------------------------ Мы знаем что увеличивая значение параметра injury мы увеличиваем урон наносимый противнику но есть еще спец команды для этого параметра: effect: 0 --> просто удар effect: 1 --> Острое оружие (эффект крови) effect: 2 --> Огонь effect: 3 --> Лед effect: 4 проходит сквозь врагов (?используется например для отхиливающих магий чтоб не хилило врагов?) effect: 5 или выше ---> ? effect: 20 огонь _______________________________________________________________________________
injury: 40
+++++++++++++++++++ Потом добавляем effect: 2
+++++++++++++++++++
injury: 40 effect: 2
-------------------- Теперь атака бет на 40 урона и поджигает
________________________________________________________________________________
=========================================== =================== СПРАЙТЫ
------------------------------------------------------------------------------------------------------------ ---- The Высота и ширина спрайта может бить изменена в начале даты. Стандартно 79 на 79 пикселей. !первая картинка спрайта 0 не 1! Когда говорят 2 ряда это значит не количество рядов а количество картинок
==============================================================
$ $ $Здесь заканчивается базовый курс. $
Продолжаем.......
$ $
x: ширина стартовой точки в спрайте y: высота стартовой точки в спрайте
-1
-1 -0---------------------79
-----------------------
-----------------------
-----------------------
79 Но всё место 79x79 чаще всего не используется. К примеру ударDavisа
72 super_punch
pic: 8 state: 3 wait: 2 next: 73 dvx: 0 dvy: 0 dvz: 0 centerx: 28 centery: 79 hit_a: 0 hit_d: 0 hit_j: 0
itr:
kind: 0 x: 40 y: 5 w: 35 h: 45 dvx: 3 dvy: -10 fall: 70 arest: 15 bdefend: 60 injury: 40
itr_end:
bdy:
kind: 0 x: 26 y: 12 w: 35 h: 66 bdy_end:
>pic: 8
the pic no. from 0 to the no.
>state: 3 Состояние персонажа state: 0 = стоит state: 1 = идет state: 2 = бежит state: 3 = атакует state: 7 = защита state: 1700 = хил самого себя
>wait: 2 Как долго длится кадр.
>next: 73 Номер картинки в спрайте.
>dvx: 0 dvy: 0 dvz: 0
example: dvx: 10 перемещается вперед на 10 кубов ,если -10 это значит движение назад dvy: -10 движение вверх на 10(like jump) если 10 движение на землю на 10 dvz: - это позиция движения относительно земли
>centerx: 28 centery: 79 centerx: 28 не важно, centery: 79, высота персонажа (если больше 79 персонаж летает)
>hit_a: 0 hit_d: 0 hit_j: 0 hit_a: 0 смотрите выше
hit_fj: d>j
hit_uj: d^j
hit_dj: dvj
hit_fa: d>a
hit_ua: d^a
hit_da: dva
hit_ja: dja
> itr:
kind: 0 x: 40 y: 5 w: 35 h: 45 dvx: 3 dvy: -10 fall: 70 arest: 15 bdefend: 60 injury: 40
itr_end: kind: 0—тип атаки 0 – нормальная, 10 - флейта x: 40—стартовая точка x y: 5 стартовая точка y w: 35—ширина из x, h: 45—высота из y
>bdy:
kind: 0 x: 26 y: 12 w: 35 h: 66
bdy_end: kind: 0 – тип атаки
x: 26 y: 12 w: 35 h: 66> attack a bit effect—эффект атаки (см выше)
special:
4300: hp-40 mp-300
10100: hp-100 mp-100,etc
-5050: hp+500 mp+500,etc fall—падения персонажа если 70 персонаж падает если 60 персонаж згибается если 1 перс никогда не упадет, bdefend—сколько процентов защиты пробито у противника ,когда вы атакуете этот параметр увеличивается... Transform - трансформация state: 80xx xx=id перса
команда opoint сумонит оружие (как меч фриза), параметр oid указывает id оружия.
Создание лвлов
1 id: 0 #stage 1-1
2 bound: 900
3 id: 30 hp: 50 times: 2 ratio: 1.0
4
5 bound: 1300
6 id: 30 hp: 50 times: 2 ratio: 1.0
7 id: 31 hp: 50 times: 1
8 id: 31 hp: 50 times: 1 ratio: .4
9
10 bound: 1700
11 id: 3000 hp: 50 times: 2
12 id: 3000 hp: 50 times: 2 ratio: 1.0
13
14 bound: 2200
15 id: 122 x: 1100 #milk
16 id: 123 x: 1100 #beer
17 id: 30 hp: 50 ratio: 1
18 id: 30 hp: 50
19 id: 31 hp: 50
20 id: 31 hp: 50 ratio: .4
21 id: 31 hp: 50 ratio: .2
22
23 В строке 1, мы видим параметр "id: 0" and "#stage 1-1". "id: 0"означает какой это уровень. Значение "0" укажет на уровень 1, а "1" укажет на уровень 2 и тд. уровень 2 на самом деле в игре уровень 1-2 а уровень 7,в id: "8", будет уровнем 2-2. "#stage 1-1" это коментарій чтоб легче было понять что это за уровень. Все что пишется после знака # не влияет на код. В строках 2-4,мы видим параметры в которых показаны фазы появления врагов . кждая фаза в игре обозначается стрелочкой Go и сопровождается появлением врага если врагов больше нет то стрелка указывает на переход на следующий уровень. "bound: 900" указывает на длину участка одной фазы, в конце этой длинны пока фаза не закончилась нас остановит невидимая стена. Длинна второй фазы еще 1300, на фазе 2 можно бегать 900+1300.
Все параметры обозначают объекты в фазе. Это враги, заложники, оружие, бутылки. К примеру в фазе 1 мы видим:
id: 30 hp: 50 times: 2 ratio: 1.0 "id: 30"это id объекта . Все id прописаны в Data.txt "id:30"означает бандита. "hp: 50" Указывает на то что у бандита 50хп. "times: 2"Показывает сколько раз появляется объект. В данном случае после смерти первого бандита выйдет второй "ratio: 1.0"показывает ситуацию когда играет больше 1 человека. В данном случае по 1 бандиту на персонажа. Если параметр изменить на 5 то на каждого персонажа выйдет 5 бандитов, а если изменить до 0.5 то на 2 персонажей выйдет только 1 бандит а на 4 два и тд. В линиях 15 и 16 мы видим:
id: 122 x: 1100 #milk
id: 123 x: 1100 #beer
(x: 1100)- это указывает на то где на поле появится объект. Если установить длину поля 2200 то молоко появится по центру Посмотрим на другой пример, теперь это уровень 4-4 (id: 33).
bound: 1800
id: 300 hp: 100 act: 40 x: 1000 y: 0 reserve: 8
id: 300 hp: 100 act: 40 x: 1100 y: 0 reserve: 8
id: 122 x: 900 #milk ratio: 2
id: 123 x: 900 #beer ratio: 1
id: 3000 hp: 50 times: 2 ratio: 2
Рассмотрим строки:
id: 300 hp: 100 act: 40 x: 1000 y: 0 reserve: 8 Id 300 это criminal.dat (враг). act: 40указывает на то какой враг имеется ввиду . если мы посмотрим на criminal.txt, мы увидим:
40 bandit
pic: 20 state: 0 wait: 7 next: 41 dvx: 0 dvy: 0 dvz: 0 centerx: 38 centery: 78 hit_a: 0 hit_d: 0 hit_j: 0
bdy:
kind: 1043 x: 21 y: 18 w: 43 h: 62
bdy_end:
Сейчас мы не смотрим на код. Все что нам надо это"40 bandit".Это значит что act: 40 указывает на бандита. (0 монах, 10 is Марк... и тд.). "x"это точка где появится бандит. A негативное значение "x" # (ex. x: -1000) значит что враг появится сзади нас ...на 1000 сзади от конца экрана.
=======================================
=======================================
Автор НАСТОЯТЕЛЬНО рекомендует создать копию data.txt во избежание проблем
Активация всех персов:
Открываем data.txt.
Первый кусочек даты с персонажами. Найдите его
Вы должны увидеть Bandit, Hunter, Mark, LouisEX, Firzen, и тд.
Скопируйте эти строчки и перенесите их в центр даты .
Теперь меняем их id. Их стандартные id используются в режиме прохождения уровней. Чтоб не мучатся добавьте перед каждым "8". К примеру: Bandit номер 30, а будет номер 830. Только убедитесь что номер еще не использован (убедитесь что нет повторов) . If Теперь вам не надо прописывать код в игре для открытия персов .
Добавление персонажей:
Копируем дату нового персонажа в \data\
Открываем data.txt.
Теперь все что вам надо сделать так это придумать ему id и записать в части где у нас игровые персонажи(центр). Только убедитесь что номер еще не использован (убедитесь что нет повторов) .
Дальше тип, у персонажей всегда тип 0.
Если вы все правильно сделали то должно быть как тут :
id: Свой номер type: 0 file: data\"имя вашего перса(а точнее имя его файла даты)".dat
7.Ваш персонаж должен появится в игре.
|