Среда, 25 Декабря 2024, 16:19

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Little Fighter 2 - для создания фатингов
loxvekaДата: Воскресенье, 29 Августа 2010, 17:22 | Сообщение # 1
был не раз
Сейчас нет на сайте
Litlle Fighter 2

Движок в котором основу берёт файтинг.На двежке можно создать до 56 персонажей с разными приёмами.Кодинг в программе не сложный.

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.Ваш персонаж должен появится в игре.
_____________________________________

Создание уровня

(Stage Mode)Разбираем файл stage.dat , расположенный в корневой папке data.

Вначале уточним некоторые моменты.
Во-первых в стадиях, как и в любом элементе игры идет присвоение id номера каждому элементу. В стадиях же присваивается каждая стадия и подстадия. Например стадии 1-1, 1-2 и 3-4 имеют каждый свой сосбственный id.
id - номер индетификации.
Итак, приступим.
Открыв файл stage.dat вы сразу же увидите верхнюю строчку:

<stage> id: 44 #stage 5-5

это как раз то о чем мы говорили выше.
уровню с азванием 5-5 присвивается id: 44
номера id нужны для того чтобы упорядочить проходимость стадий, т.е. чтобы они были по порядку.
но есть не менее важный элемент. Отсчет id ведется от нуля.
Т.е. самая-самая первая стадия какая будет в игре будет иметь id: 0
Но если вы присмотритесь, то вы никак не сможете набрать все 44 id, хоть 5-5 и есть последняя стадия.
причина же этого явления в том, что изначально разработчики не использовали все id.
таким образом например первые две стадии будут иметь следующие id:

id 0 = 1-1
id 1 = 1-2
id 2 = 1-3
id 3 = 1-4
id 4 = 1-5
id 10 = 2-1
id 11 = 2-2
id 12 = 2-3
id 13 = 2-4
id 14 = 2-5

почему при переходе на стадию 2 id увеличилось на 10?
игра имеет кодировку в виде xyxy, т.е. например стадия 2-4 имеет id: 13.
тройка указывает на порядок подстадии в стадии, а на то какая стадия используется указывает единица.
в стадиях по типу 1-1 всего одна цифра, но выше мы писали, что отсчет идет от нуля.
таким образом когда мы пишем например id: 2 , код воспринимается как id: 02.

данные моменты очень важны не только в стадиях, но и среднем по сложности кодинге обычных персонажей.

Итак, возмем в пример один большой кусок сверху:

<stage> id: 44 #stage 5-5
<phase> bound: 1500
id: 300 hp: 100 act: 40 x: 900 y: 0 reserve: 5
id: 300 hp: 100 act: 50 x: 900 y: 0 reserve: 5
id: 300 hp: 100 act: 50 x: 900 y: 0 reserve: 5
id: 122 x: 300 #milk
id: 122 x: 300 #milk
id: 122 x: 300 #milk
id: 122 x: 300 #milk ratio: .7
id: 123 x: 300 #beer
id: 123 x: 300 #beer ratio: .7
id: 3000 hp: 50 times: 3 ratio: 1
id: 34 hp: 100 times: 3
id: 34 hp: 100 times: 3 ratio: .5
<phase_end>

<phase> bound: 1800
id: 1000 hp: 250 <boss>
id: 1000 hp: 250 <boss>
id: 1000 hp: 250 <boss>
id: 1000 hp: 250 <boss> ratio: .2
id: 33 hp: 150 x: -1000 ratio: .5
id: 34 hp: 100 x: -1000 ratio: .6
id: 33 hp: 150 x: -1000
id: 31 hp: 50 x: -1000
id: 31 hp: 50 x: -1000

id: 37 hp: 200 ratio: .4
id: 37 hp: 200
<phase_end>
<phase> bound: 2000
id: 122 x: 300 #milk
id: 122 x: 300 #milk
id: 122 x: 300 #milk
id: 122 x: 300 #milk ratio: .7
id: 123 x: 300 #beer
id: 123 x: 300 #beer ratio: .7
id: 3000 hp: 50 times: 2 ratio: 1
id: 34 hp: 100 times: 2
id: 34 hp: 100 times: 2 ratio: .5
<phase_end>
<phase> bound: 2200
id: 52 hp: 2500 <boss>
id: 1000 hp: 250 times: 3 ratio: .2 <soldier>
id: 33 hp: 150 x: -1000 <soldier> times: 7 ratio: .4
id: 34 hp: 100 x: -1000 <soldier> times: 13 ratio: .6
id: 33 hp: 150 x: -1000 <soldier> times: 13
id: 31 hp: 50 x: -1000 <soldier> times: 7
id: 37 hp: 200 <soldier> times: 13 ratio: .5
id: 37 hp: 200 <soldier> times: 7
id: 39 hp: 150 x: -1000 <soldier>
id: 39 hp: 150 x: -1000 <soldier> ratio: .4
<phase_end>
<stage_end>

как видите в коде есть тэги:

<stage> и <stage_end> - указывает на саму стадию, т.е. например на то что все между этими тегами это стадия 1-2 там, или 4-5. в id как раз и указывается что за стадия, а содержимое стадии прописывается между этими тэгами.

<phase> и <phase_end> - стадии нападения или будем называть это "фазы". Фазы могут быть довольно большых колличесв, но всё же если их слишком много есть шанс, что игра просто будет выдавать ошибку и вылетать. каждая фаза имеет показатель bound. числовое значение этого показателя пиксельно определяют как далеко открыта карта от левого края (начала). Если показатель слишком маленький (меньше 600~700), то появится эффект невидимой стены и игрок не сможет продвигаться дальше этих координат. Данный параметр приписывают к каждой фазе, постепенно увеличивая числовое значения координат, чтобы игрок смог продвигаться по карте дальше и дальше.
Каждая фаза это отдельная волна и пока она не будет полностью уничтожена перехода к следующей фазе не произойдёт.
P.S. начало карты (левый край) это координата с показателем ноль.
P.P.S. показатель bound можно изменять по своему желанию не только для увеличения территории, но и для её резкого сокращения. Однако если игрок оказался дальше, чем новый допустимый показатель, то есть просто автоматически сместит назад.

Для разбора возмем самую первую фазу из этой стадии.

<phase> bound: 1500
id: 300 hp: 100 act: 40 x: 900 y: 0 reserve: 5
id: 300 hp: 100 act: 50 x: 900 y: 0 reserve: 5
id: 300 hp: 100 act: 50 x: 900 y: 0 reserve: 5
id: 122 x: 300 #milk
id: 122 x: 300 #milk
id: 122 x: 300 #milk
id: 122 x: 300 #milk ratio: .7
id: 123 x: 300 #beer
id: 123 x: 300 #beer ratio: .7
id: 3000 hp: 50 times: 3 ratio: 1
id: 34 hp: 100 times: 3
id: 34 hp: 100 times: 3 ratio: .5
<phase_end>

bound: 1500 - показывает, чтоот левого края вы можете продвинуться на 1500 пикселей вправо. В игре на экране помещается примерно 600~700 пикселей в ширину.

Далее идет описание того, что появляется в данной волне.
между тэгами волны указываются id объектов, которые появяться.
разберем эту строчку:

id: 34 hp: 100 times: 3 ratio: .5

id: 34 - указание id объекта т.е. таки образом вы указываете кто или что появится на карте. все id прописываются в блокноте data.txt в папке data.
вот содержимое блокнота, откуда будут считываться данные о том что вы "призываете" на карту:

<object>
id: 0 type: 0 file: data\template.dat
id: 52 type: 0 file: data\julian.dat
id: 51 type: 0 file: data\firzen.dat
id: 50 type: 0 file: data\louisEX.dat
id: 38 type: 0 file: data\bat.dat
id: 39 type: 0 file: data\justin.dat
id: 37 type: 0 file: data\knight.dat
id: 36 type: 0 file: data\jan.dat
id: 35 type: 0 file: data\monk.dat
id: 34 type: 0 file: data\sorcerer.dat
id: 33 type: 0 file: data\jack.dat
id: 32 type: 0 file: data\mark.dat
id: 31 type: 0 file: data\hunter.dat
id: 30 type: 0 file: data\bandit.dat
id: 1 type: 0 file: data\deep.dat
id: 2 type: 0 file: data\john.dat
id: 4 type: 0 file: data\henry.dat
id: 5 type: 0 file: data\rudolf.dat
id: 6 type: 0 file: data\louis.dat
id: 7 type: 0 file: data\firen.dat
id: 8 type: 0 file: data\freeze.dat
id: 9 type: 0 file: data\dennis.dat
id: 10 type: 0 file: data\woody.dat
id: 11 type: 0 file: data\davis.dat

id: 100 type: 1 file: data\weapon0.dat #stick
id: 101 type: 1 file: data\weapon2.dat #hoe
id: 120 type: 1 file: data\weapon4.dat #knife
id: 121 type: 4 file: data\weapon5.dat #baseball
id: 122 type: 6 file: data\weapon6.dat #milk
id: 150 type: 2 file: data\weapon1.dat #stone
id: 151 type: 2 file: data\weapon3.dat #wooden_box
id: 123 type: 6 file: data\weapon8.dat #beer
id: 124 type: 1 file: data\weapon9.dat #<
id: 217 type: 2 file: data\weapon10.dat #louis_armour
id: 218 type: 2 file: data\weapon11.dat #louis_armour
id: 300 type: 5 file: data\criminal.dat #criminal

id: 200 type: 3 file: data\john_ball.dat
id: 201 type: 1 file: data\henry_arrow1.dat
id: 202 type: 1 file: data\rudolf_weapon.dat
id: 203 type: 3 file: data\deep_ball.dat
id: 204 type: 3 file: data\henry_wind.dat
id: 205 type: 3 file: data\dennis_ball.dat
id: 206 type: 3 file: data\woody_ball.dat
id: 207 type: 3 file: data\davis_ball.dat
id: 208 type: 3 file: data\henry_arrow2.dat
id: 209 type: 3 file: data\freeze_ball.dat
id: 210 type: 3 file: data\firen_ball.dat
id: 211 type: 3 file: data\firen_flame.dat
id: 212 type: 3 file: data\freeze_column.dat
id: 213 type: 1 file: data\weapon7.dat #ice_sword
id: 214 type: 3 file: data\john_biscuit.dat
id: 215 type: 3 file: data\dennis_chase.dat
id: 216 type: 3 file: data\jack_ball.dat
id: 219 type: 3 file: data\jan_chaseh.dat
id: 220 type: 3 file: data\jan_chase.dat
id: 221 type: 3 file: data\firzen_chasef.dat
id: 222 type: 3 file: data\firzen_chasei.dat
id: 223 type: 3 file: data\firzen_ball.dat
id: 224 type: 3 file: data\bat_ball.dat
id: 225 type: 3 file: data\bat_chase.dat
id: 226 type: 3 file: data\justin_ball.dat
id: 228 type: 3 file: data\julian_ball.dat
id: 229 type: 3 file: data\julian_ball2.dat

id: 998 type: 5 file: data\etc.dat
id: 999 type: 5 file: data\broken_weapon.dat
<object_end>

заметьте, что лишь между тэгами <object> и <object_end> будет проводиться считывание. в data.txt есть и другие тэги, но на карту считывается только то что указано между этими тэгами.

Итак, ищем наш id: 34 и находим вот что:

id: 34 type: 0 file: data\sorcerer.dat

вуаля...
командой

id: 34 hp: 100 times: 3 ratio: .5

мы вызываем на карту sorcerer. не сложно, ведь правда?

hp - показатель сколько будет выдано ему жизней.

times - показатель, который отображает сколько раз после смерти данного объекта он будет вызван повторно. т.е. вы убили одного sorcerer, появился ещё 1 такой же. колличество таких повторов появления как раз указывается в показателе times. в данном случае у нас имеется 3 повтора times.

ratio - один из самых моторных показателей. указывает сколько будет выпущено на карту тех или иных объектов в определенных соотношениях. вы наверняка замечали, что когда вы играете один, то врагов на карте куда меньше, если вас двое или больше. как раз этот показтель и определяет что на каждого игрока (только самх игроков, заложники не учитываются!!) будет выдаваться определенная кучка врагов. В начале статьи мы писали что отсчет ведется от нуля, а ночь в свою очередь можно и не обозначать.
так вот, сейчас мы имеем

ratio: .5

это равносильно

ratio: 0.5

т.е. на каждого игрока будет выдано по 5 врагов.
иными словами данный показатель определяет соотношение игроки\враги в игре.
причем это идет с учетом показателя times. т.е. допустим у нс times имеет показатель 3, а ratio на 1 игрока выпускает 5 вграгов. значит 3*5=15. В итоге 15 врагов придется уложить одному бедолаге.

главное эксперементировать)

разберем чуть более сложную строку:

id: 300 hp: 100 act: 40 x: 900 y: 0 reserve: 5

про id, hp мы уже всё хорошо знаем, так обсудим другие показатели.

act - показатель определяет какой кадр будет использоваться у бойца когда он появится. Таким образом вы можете например Джона который только появился тут же заставить пустить один свой диск. Потом он будет действовать дальше сам. Подробнее о том какие кадры бывают у бойцов мы разберем в других статьях. Главное запомните. act определяет первый кадр который будет выполняться при появлении объекта.

x - числовой показатель. он так же как и bound берет отсчет с левого края (начала) карты. Обычно x всегда больше, чем bound, чтобы враги приходили к вам, а не появлялись из неоткуда. Если же вы укажите х меньше чем bound, то вы увидите, что враг появися из неоткуда. Можно использовать на руку, всё зависит от вашей фантазии.
P.S. Если показатель х меньше нуля, т.е в минусе, то враг придет слева карты (ведь начало карты это ночь, начало отсчета).
P.P.S. если х не прописан вообще, это будет означать что враг появится с правого края карты.

y - показывает высоту. или появление на определенной высоте над уровнем земли. если он не прописывается, то объект появляется согласно базовым данным. Т.е. бойцы на земле, а вещи упадут с воздуха.

reserve - особый показатель. Если вы посмотрите id 300 ,то увидите, что это id для заложников. Это означает, что когда вы ударите по заложнику и освободите его, ему будут присвоены указанные вами hp и reserve. Reserv - это запас восрешений заложника, т.е. когда его убьют, он сможет появится вновь и есть reserv.

В принципе разбор кода приведенного выше на этом заканчивается.
Но разберем ещё вот какие строки:

id: 50 hp: 1000 <boss> join: 1000
id: 33 hp: 150 x: -1000 <soldier>

новые показатели:

join: когда враг будет убит, он присоединится к вам. Число которое вы присвоете в Join будет количество жизей, которые боец получит когда присоединится к вам.

<boss> - босс, так и называется, подсвечивается розовым именем Com

<soldier> - солдаты или в народе "охрана". Бойцы с такой пометкой не будут прекращать появляться после смерти снова и снова до тех пор, пока все бойцы с показателем <boss> не будут убиты. Можно считать что показатель <soldier> дает неограниченный показатель times, пока босс(ы) жив(ы).

В принципе на этом всё.
Есть ещё способ пометок, например:

id: 122 x: 400 #milk

тут #milk указывается что это падает молоко. сама надпись ничего для кода не значит, это лично ваши пометки, чтобы не запутаться лишний раз. Пометки делаются с использованием знака # .

Позравляем, всю основу кодинка в stage вы изучили)
Но всё же несколько моментов надо чтобы вы помнили всегда.
Самое главное это то, что все ваши показатели hp и колличество врагов будут точь-в-точь такими же в игре только в режиме normal.
В режиме Easy показатели будут уменьшены на 25%-50%
В режиме Difficult будут увеличены на 25%-50%
В режиме Crazy будут увеличены на 50%-75%.

Т.е. например задав врагу показатель hp: 100 , врагбудет иметь в режиме normal как раз эти 100 hp, а в режиме Crazy 175 hp.
В принципе если вы берете заоблачные цифры вы можете бысренько просчитать проценты для себя или попробовать поэксперементировать.

На этом всё, дорогие кодеры, пробуйте свои навыки и тренеруйтесь wink
______________________________________________________________

Справочная по типам itr.

0 - простая атака
1 - захватывает врага в тб, при присутствии catching и caught показателях
2 - если под ногами оружие, он его поднимет
3 - захватывает врага БЕЗ тб, при присутствии catching и caught показателях
4 - используется при паденнии, когда вас швырнули в кого-то, вы повредите этим тех в кого влетите
10 - поднимает врага в воздух (вытягивая жизни)
11 - держит врага в воздухе (просто поднимает)
14 - создает границу (читать интервью с Матри Вонгом)
15 - засасывающий эффект (как в вихре Фриза)
16 - превращает врага в лед без использования показателя effec: 3
6 - добивающий удар (данный показатель заставляет персонажа выполнить добивающий удар, если враг в танце боли)
7 - поднимает оружие без использование кадров поднятия оружия (используется в кадрах с подкатом)ъ
8 - лечащий шар (данный шар будет лечить как врагов, так и союзников)
9 - отражающий щит (использовать вместе с эффектом "effect: 4". Тогда щит будет отращать все объекты со статусом 3000)
____________________________________________________________________________________________________________
Справочная по статусам:

0 - стоит (может свободно передвигаться вправо и влево, а если в воздухе, то при нажатии клавиши перейдет в кадр 212)
1 - хождение (свободное нажатие любых клавиш)
2 - бег
3 - атака (пока вы атакуете компьютер ставит блок)
4 - прыжок (можно нажать вправо или влево пока в воздухе)
5 - дэш ( если dvx:0, мжет быть нажато влево или вправо)
6 - подкат (когда вы бежите и нажимаете блок, персонаж перехоит в кадр 215)
7 - блок (дает единицу защиты, и держит кадр до момента пробивания)
8 - пробитая защита (вас будет добивать комп или ещё кто)
9 - захватываете (только при присутствии координат cpoint)
10 - заваченный (в этом случае вы уроните оружие, а союзники вас могут долбануть)
11 - повреждены
12 - падение (оружие будет проронено, если показатель fall в атаке врага от 60 и выше)
13 - заморожен (может быть атакован союзниками, а так же получает повреждение в 10 хп при 1 любом ударе)
14 - валяетесь (компьютер будет отходить в сторону)
15 - любое действие, нет эффекта
16 - повреждены\тб (может быть захвачен любым кто использует параметр kind:1 в показателе itr)
17 - выпивание (поглощает хп от оружия в руке с id 122 и 123)
18 - горите
19 - горящий бег (Бег Файрена, не поддается влиянию эффектов 20,21 и может передвигаться по оси z)
100 - удар Луиса (когда приземяутся, активируется кадр 94)
301 - избиение (во время исполнения может перемещаться по оси z)
400 - телепортирует к ближайшему врагу, с расстоянием в 120 точек
401 - телепортирует к ближайшему союзнику с расстоянием в 60 точек
500 - транформация (если вы не трансормируетесь\не во что , то вы переходите в кадр 0)
501 - трнсформация обратно (если вы трансформировались, вы перевоплотитесь обратно)
1700 - самолечение (ускоренная регенерация светлой полоски хп, при этом она мигает)
9995 - трансформируется в id:50)
9996 - броня (создает предметы из id: 217,218)
9997 - прочее(потеря тени, изображение может быть увидено на весь экран)
9998 - растворение
9999 - разбитое оружие (кадры с тем как они разбиваются)
80хх - превращает в персонажа с его id заместо хх, причем считывание рисунков происходит с рассчетом +140
__________________________________________________________________________________________________

Справочная по эффектам.

В DC показатель пишется в переменной повреждения - itr:
между началом и концом itr вставляется effect: (цифра эффекта).

0 - просто удар с эффектом отображения демага
1 - выплескивает кровь
2 - огонь, цепным способом поражающий союзников
3 - замораживает
4 - объект проходит сквозь врага (например для того чтобы пускать лечащий болл и не подлечить этим врага)
5 - аналогично эффекту 4, но беззучно, т.е. при срабатывание объекта озвучки не будет
20,21 - поджигает врага с иммунитетом к 20 и 21 эффектам
22 - поджигает (не трогает союзников, если кадр содержит state: 18)
23 - аналогичено эффекту 0, но с отталкиванием пропорчионально движению объекта, который повреждается
30 - аналогично 20 и 21, но эффект со льдом.

Движок можно использовать в разных целях,кому приходилось с ним сталкиватся то пишите свои вопросы,чем смогу помогу)


[img]http://s50.radikal.ru/i127/1008/d3/06cfb27a6478.jpg[/img]
ЭтО Я!!!


Сообщение отредактировал loxveka - Воскресенье, 29 Августа 2010, 17:25
GC-VicДата: Воскресенье, 29 Августа 2010, 17:52 | Сообщение # 2
GcUp.ru
Сейчас нет на сайте
Это про LF2.net?

На нём, вроде, ещё сделана игра Hero Fighter.


Закон Мерфи: "Если вы уверены, что ваш поступок встретит всеобщее одобрение, кому-то он обязательно не понравится".
3tOnДата: Понедельник, 30 Августа 2010, 21:37 | Сообщение # 3
We Will Rock You!
Сейчас нет на сайте
GC-Vic, да, а у Hero Fighter как бэ уже улучшенный двиг... smile
Maxim_and_SergeyДата: Среда, 27 Июля 2011, 07:36 | Сообщение # 4
частый гость
Сейчас нет на сайте
С этого файтера делали другой файтер по бличу!!!


Пожуём и увидим...
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг