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. В принципе если вы берете заоблачные цифры вы можете бысренько просчитать проценты для себя или попробовать поэксперементировать. На этом всё, дорогие кодеры, пробуйте свои навыки и тренеруйтесь ______________________________________________________________ Справочная по типам 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.08.2010, 17:25 |