Скачать M.U.G.E.N FAQ

Помощь по движку Little Fighter 2

  1. Оффлайн

    Manoichi

    Mugen Works

    Администраторы

    Сообщений: 385

    Баллы: 9168

    Симпатий: 28

    Подарить подарок

    Перед созданием персонажа нужно определиться с:
    - нужно ли Вам это
    - если нужно то тщательно продумать его дизайн, способности, может что-то будет свое личное, характерное только ему, что будет служить отличительной чертой.

    Если не передумали, то можно продолжить читать.

    Немного общей информации:

    Все дат-файлы располагаются в папке data, также там расположены звуковые файлы, текстовые файлы, о них ниже.
    Все карты располагаются в папке bg и подпапках
    Все спрайты в папке sprytes и подпапках
    Фоновая музыка в папке bgm
    Записи в папке recordings

    Спрайты и дат-файлы, а также звуки, могут быть в других папках, это ваше решение как располагать свои файлы :)

    Немного о текстовых файлах:

    data.txt
    В data.txt написаны все файлы, которые загружает при загрузке игра. Каждый файл имеет свой тип. Он указывается также в data.txt.
    Вся строка после символа "#" рассматривается как комментарий, и не влияет на работоспособность кода/считывание списка dat-файлов.
    Сначала идут все объекты, которые есть, + 3 обязательных файла: stage.dat, broken_weapon.dat, criminal.dat.
    Тип0 - персонаж
    1 - оружие, которое можно держать в руке
    2 - тяжелое оряжие/предмет
    3 - просто предмет
    4 - метательное оружие
    5 - обязательный файл
    6 - предмет, который можно выпить
    Также каждый предмет имеет свой ID. Это его индивидуальный номер, используемый в различных ситуациях. Есть уникальные ID, с особыми свойствами. Скажем ID от 30 до 59 - скрытые персонажи.
    Также все, что имеет id от 100 до 199 будет во время боя падать с неба. Даже персонаж!
    После этого идет блок с картами. Каждая имет свой id, который никак не зависит от id какого-либо объекта.

    control.txt
    Записана информация об установленном управлении, нике, информации о записях.

    ad0.txt ad1.txt adinfo.txt
    Содержит информацию о рекламе и не только :)

    temporary.txt
    Как в нем и написано, его просто не удалять. Он нужен.

    Все звуковые файлы должны быть в формате WMA
    Спрайты в формате BMP

    Еще немного информации:
    В учебнике указана информация ТОЛЬКО на стандартные возможности LF2 и языка DC
    ТБ - Танец Боли, состояние персонажа, когда он корчится от боли.
    хп - количество жизней.
    мп - количество маны.
    Я некоторые вещи не буду повторять несколько раз, поэтому сразу запоминайте :)

    открывающий тег
    name:
    тут вписываем имя персонажа отображаемое в игре , преимущественно на латинице
    head: spritetemplate1face.bmp
    прописываем путь к файлу и имя файла с изображением лица персонажа
    small: spritetemplate1s.bmp
    прописываем путь к файлу и имя файла с изображением миниатюры персонажа
    file(0-69): spritetemplate1?.bmp w: 79 h: 79 row: 10 col: 7
    file(70-139): spritetemplate11.bmp w: 79 h: 79 row: 10 col: 7
    file(x-y) пишем номера спрайтов, это только для себя. Здесь вы можете вписать хоть 0-6, а персонаж будет работать)
    далее пишем путь, имя файла.
    w: ширина одной ячейки из сетки спрайтов, все ячейки в сетке должны быть одинаковыми
    h: высота одной ячейки
    row: это очень путаное название, переводится строка, можно подумать что это кол-во строк. Это не так! Я для себя называю это количество ячеек в строке.
    col: кол-во ячеек в столбце
    именно по четырем параметрам сверху определяется, сколько будет спрайтов. Если используется несколько фалов, то создается несколько строк. Максимальное кол-во подгружаемых сеток - 10
    walking_frame_rate 3
    задержка между кадрами ходьбы
    walking_speed 4.000000
    скорость ходьбы по оси x
    walking_speedz 2.000000
    скорость ходьбы по оси z
    running_frame_rate 3
    задержка между кадрами бега
    running_speed 8.000000
    скорость бега по оси x
    running_speedz 1.300000
    скорость бега по оси z
    heavy_walking_speed 3.000000
    скорость ходьбы с тяжелым предметом по оси x
    heavy_walking_speedz 1.500000
    скорость ходьбы с тяжелым предметом по оси z
    heavy_running_speed 5.000000
    скорость бега с тяжелым предметом по оси x
    heavy_running_speedz 0.800000
    скорость бега с тяжелым предметом ходьбы по оси z
    jump_height -16.299999
    высота прыжка
    jump_distance 8.000000
    длина прыжка по оси x
    jump_distancez 3.000000
    длина прыжка по оси z
    dash_height -11.000000
    высота дэша(рывка, прыжок после прыжка(надо прыгать в сторону) или прыгнуть при беге)
    dash_distance 15.000000
    длина дэша по оси x
    dash_distancez 3.750000
    длина дэша по оси z
    rowing_height -2.000000
    высота переката(бег защита или при приземлении после прыжка защита)
    rowing_distance 5.000000
    длина переката

    закрывающий тег

    Это то, что должно использоваться у большинства персонажей, т.к. без этого персонаж будет резко выделяться на фоне других персонажей. Представьте, что Ваш персонаж не может прыгать, или бегать :)
    Особое внимание обратить, что отсчет спрайтов идет с 0.

    Теперь переходим к основной части кодинга, то над чем все работают, на что уходят часы, даже дни. Вы все еще не передумали от идеи создать персонажа?

    Общая структура любого кадра:
    0 имя_кадра(для ориентирования среди кадров)
    pic: 0 state: 0 wait: 3 next: 1 centerx: 39 centery: 79
    *другие подблоки*(не обязательно)


    Но чаще используется более полная форма:
    0 standing
    pic: 0 state: 0 wait: 3 next: 1 dvx: 0 dvy: 0 centerx: 39 centery: 79 hit_a: 0 hit_d: 0 hit_j: 0
    *другие подблоки*


    Рассмотрим главную часть кадра
    и открывающий и закрывающий теги, вообще, все параметры - это английский, только где-то используется сокращение.
    0
    номер кадра, Little Fighter 2 ограничен 400 кадрами => максимальный кадр 399
    pic:
    номер спрайта, указанного в самом первом блоке
    state:
    номер стейта(в переводе не очень красиво) в котором находится персонаж, пример: 0 - стоит, 1- идет, 18 - горит
    wait:
    число, показывающее задержку между кадрами. 1 сек = 30, это справедливо не только тут, также с этим можно столкнуться при создании карт
    next:
    номер следующего кадра, т.е. тут пишем кадр, который будет после этого. 999 - нулевой кадр, 0 используется только в системных кадрах и то не всегда. отрицательное значение: произведется следующий кадр, но персонаж повернется в другую сторону
    dvx:
    передвижение персонажа по оси x. если отрицательное значение, то в другую сторону. если в след. кадрах 0, то будет само потихоньку уменьшаться(это конечно не показывается, просто движение по инерции :)
    dvy: и dvz:
    то же что и dvx но с другими осями
    centrx:
    центр персонажа по оси x. т.е. пишем точку под которой будет центр тени
    centry:
    то же но по оси y. чаще всего используется значение мало отличающееся от высоты персонажа. если написать значение меньше - персонаж будет "кротом", если больше - будет летать!!!
    hit_a:
    кадр в который перейдет персонаж, если нажать атаку
    hit_d и hit_j:
    то же но если нажать защиту или прыжок
    также можно использовать подобную каманду для перехода по нажатию, например, защита вверх атака.
    для этого записывается первая буква на англ. клавиши. и так вся комбинация, без учета защиты. т.е. всего будет 2 буквы после hit_ обозначающие клавиши
    все возможные вариации "hit_": ja, Da, Dj, Fa, Fj, Ua, Uj

    Подблоки

    bdy

    Подблок bdy задает физическое тело персонажа, если на спрайтах графическое, то тут физическое.
    Записывается следующим образом:

    bdy:
    kind: 0 x: 21 y: 18 w: 43 h: 62
    bdy_end:

    bdy: и bdy_end: открывающий и закрывающий теги. Дальше я не буду писать про это. Это должно быть понятно.
    kind:
    здесь используется значение 0. Для тела другие параметры не имеют значения. Перевод и смысл данного параметра посмотрите сами)
    x:
    точка отсчета тела по координате x
    y:
    точка отсчета тела по координате y
    w:
    ширина тела по координате x
    h:
    ширина тела по координате y
    Все эти параметры будут использоваться практически везде. При этом будут нести тот же смысл. Больше я к этому не вернусь.

    Данный подблок используется практически во всех кадрах.

    wpoint

    Подблок wpoint описывает где и как держится оружие.

    wpoint:
    kind: 1 x: 33 y: 45 weaponact: 21 attacking: 0 cover: 0 dvx: 0 dvy: 0 dvz: 0
    wpoint_end:

    kind:
    значение 1, другие не имеют смысла.
    x:
    координата по оси x где находится centerx оружия!!!
    y:
    то же но по оси y
    weaponact:
    кадр, в котором находится оружие
    attacking:
    может ли оружие атаковать, когда находтся в руке (позднее будет подробней об оружии) значения отличные от нуля - может(не совсем правильно, но пока лучше запомнить так)
    cover:
    находится оружие перед персонажем, или наоборот. Значение 0 - перед персонажем, любое отличное от 0 - наоборот, желательно 0/1. Можно использовать, чтобы поместить оружие в дальнюю руку(чаще правую. если левую, то смотреться будет не очень :) ) dvx:
    dvy:
    dvz:
    перемещение по соответствующим осям. Дальше редко будет вспоминаться
    Используется также практически во всех кадрах.
    bpoint

    bpoint:
    x: 38 y: 34
    bpoint_end:

    Просто координаты крови. Используется, когда здоровье персонажа меньше 30%
    Помощь по движку Little Fighter 2
    itr

    Используется при ударах, поднятии оружия, захвата. Рассмотрим все по очереди.

    Удар:

    itr:
    kind: 0 x: 49 y: 33 w: 30 h: 16 dvx: 2 bdefend: 16 injury: 20 effect: 1
    itr_end:

    kind:
    тип атаки. Вы должны были посмотреть перевод этого слова, но я все же сам написал его позднее) Тип 0 - просто удар. Полный список приведен в дополнении.
    fall:
    процент падения персонажа. Суммируется, если удар происходит несколько раз. Если набертся 70 или больше - враг упадет.
    bdefend:
    сколько пробито защиты, суммируется. Нужно как минимум 60, чтобы персонаж перешел в ТБ.
    injury:
    урон. Учитывая что всего 500 хп, можно рассчитывать урон различных атак.
    effect:
    тот кто не дружит с латиницей не сможет понять это, Вы надеюсь догадались. Если нет - то подскажу, это эффект атаки. 1 - атака с выплескиванием крови. Полный список в дополнении.
    dvx dvy dvz показывают на сколько смещается враг при ударе.

    arest:
    время задержки до следующего удара ЭТИМ персонажем
    vrest:
    время задержки до получения следующего удара врагом.
    Поднятие оружия:

    itr:
    kind: 2 x: 26 y: 58 w: 37 h: 23 vrest: 1
    itr_end:

    Этот код сильно не отличается от обычного удара. Но вся разница в том, что стоит другой тип атаки. "kind: 2" означает, что если персонаж может взять оружие, то он переходит в кадры поднятия оружия.
    Другие значения kind могут придавать другие, особые эффекты. Это можно считать примером использования :)

    Захват:

    itr:
    kind: 1 x: 40 y: 16 w: 25 h: 65
    catchingact: 120 120 caughtact: 130 130
    itr_end:

    "kind: 1" используется для захвата персонажа в ТБ. Для захвата персонажа в любом другом кадре используется "kind: 3"

    catchingact:
    показывает, в какой кадр переходит персонаж в результате успешного захвата
    caughtact:
    показывает, в какой кадр переходит захваченный противник
    И там, и там пишется 2 цифры. Зачем? А затем, что первая цифра означает кадр, если спереди, а вторая, если сзади.

    cpoint:

    После успешного захвата противника нужно уметь удержать в руках(или чем там у вас персонаж будет хватать :) ). Для этого служит довольно большой блок cpoint.
    Он включает в себя не только умение удержать противника, но еще и мастерство не дергаться, когда тебя схватили :)

    Еще кое-что:
    Всего в одном кадре может быть до 10 блоков itr, наважно каких
    Если область удара слишком маленькая, есть вероятность того, что удар не пройдет

    Держание противника:

    cpoint:
    kind: 1 x: 67 y: 39
    vaction: 131 aaction: 75 jaction: 1 taction: 232 throwvz: -842150451 hurtable: 1 throwinjury: -842150451 decrease: 7 injury: 35
    cpoint_end:

    kind:
    1 - держишь
    2 - захваченный
    x: и y:
    координаты centerx и centery врага
    vaction:
    кадр, в котором находится противник
    aaction:
    кадр, в который перейдет персонаж, если нажать атаку
    jaction:
    кадр, если нажать прыжок
    taction
    кадр, если кинуть (вбок атака)
    throwvx: throwvy: throwvz:
    дистанция броска по осям. Если значение = -842150451, то параметр не считывается
    hurtable:
    могут ли другие бить захваченного персонажа. 0 - нет, 1 - да.
    throwinjury:
    урон при падении после броска. Если значение = -842150451, то параметр не считывается
    decrease:
    падение. То как будет персонаж освобождаться от падения. Падать или приземляться как после прыжка. 3 - приземление, 7 - падение на спину, -7 - на лицо
    injury:
    урон
    dircontrol:
    возможность выбора направления
    cover:
    то же что и в wpoint, будет враг поверх персонажа или нет

    Захваченный:

    cpoint:
    kind: 2 x: 41 y: 39
    fronthurtact: 132 backhurtact: 131
    cpoint_end:

    kind: 2
    захваченный
    x:
    координата по оси x для точки держания держащим
    y:
    координата по оси y для точки держания держащим
    fronthurtact:
    кадр в который перейдешь, если ударят спереди
    backhurtact:
    кадр в который перейдешь, если ударят сзади
    Помощь по движку Little Fighter 2
    opoint:

    Создает новый объект на карте.

    opoint:
    kind: 1 x: 40 y: 29 action: 50 dvx: 0 dvy: 0 oid: 225 facing: 0
    opoint_end:

    kind:
    1 - просто создает
    2 - создает в руку(оружие)
    action:
    кадр, в с которого начинает свою "жизнь" объект на карте
    oid:
    ID нового объекта. Указывается в data.txt
    facing:
    показывается количество и направленность нового объекта.
    количество десятков = количество объектов.
    единицы = направление. 0 - в ту же сторону смотрит, что и персонаж, 1 - в обратую сторону.
    Помощь по движку Little Fighter 2
    Стоит упомянуть об особенностях.
    1) Если был переход по нажатию клавиши (hit_a или hit_Uj), то добавление не производится.
    2) Созданный объект будет на твоей стороне (особый случай - оружие, оно может переметнуться на чужую сторону)


    Дополнительно.
    Также Ваш персонаж может получиться намного красивее, динамичнее, если он будет воспроизводить звуки
    sound: *путь и название файла*
    Обычно пишется после главного блока, перед всеми подблоками.

    mp:
    затраты маны, если значение отрицательное, то прибавляется. При маленьких значениях для отнятия надо отрицательное и наоборот.

    hp:
    затраты хп. Если меньше нуля, то дается хп.

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

    Что отличает, казалось бы одну и ту же, структуру от другой? Большей частью это state, kind(неважно будь то cpoint или itr), effect.

    Открыв любого персонажа мы, первым делом, видим кадры под названием standing. Это кадры стойки. У кого хорошая память могли вспомнить, что это упоминалось в самом начале. Для кадров стойки используется state: 0. Больше никаких отличий особых нету. Продолжительность стойки может быть любая, но начинать должна с 0 кадра. Также может использоваться другая, вторая, стойка после, скажем, приема.
    Я продолжу дальше идти по кадрам.

    Следующими идут кадры ходьбы. У них используется state: 1. Он гласит, что если нажата клавиша движения, то проигрываются следующие кадры ходьбы. Кадры ходьбы строго с 5 по 8 кадры. next: 999, т.е. сброс значения и возврат к нулевым.
    Также, хватает врага, если тот в ТБ. Для этого используется kind: 1.

    Кадры бега. Персонаж бежит, если нажать 2 раза подряд клавишу вбок, неважно в какую именно сторону. При этом используется state: 2. Строго с 9 по 11 кадры. next: 0 - системные кадры, их количество неизменно (3 кадра), остановка путем нажатия клавиши противоположной движению персонажа.

    Кадры ношения тяжелого предмета. Используется state: 1, т.к. это та же самая ходьба. Ношение, скажем, камня достигается с помощью ...(1) Тут Вы сами должны были ответить, если не смогли ответить, пожалуйста, прочтите еще раз информацию обо всех блоках.
    Особенностью является также то, что эти кадры используются для стояния с тяжелым предметом, поэтому next: 0.

    Кадры бега с тяж. предметом. Аналогично обычному бегу. Разница лишь в спрайтах и ... .(2) Если не ответили, то это уже прямо издевательсто!

    Можно я не буду больше писать в начале каждого описание слово "кадр(ы)"? Спасибо.

    Остановка после бега с тяж. предметом. Используется state: 15. Он служит для любых кадров, просто кадров, без какого либо эффекта.

    Обычная атака оружием. Используется, когда персонаж с оружием типа 1 атакует, при этом не нажимает, даже не держит, клавишу вбок. state: 3 - атака, при этом враги будут пытаться защититься. Начинаются с 20 и 25 кадра. Можно сделать любую длину.

    Атака оружием в прыжке, беге, дэше. Аналогично обычной атаке только начинаются с 30, 35 и 40 кадров соответственно.

    Бросок легкого/ оружия. Если оружие типа 4/6, то просто атака, если типа 1, то вбок атака. Начинается с 45/50 кадра.
    Как это достигается? Легко! Персонаж отправляет предмет в кадры кидания (как я уже говорил, об оружии в отдельном разделе) и придает начальную скорость. Как?(3) А тут попытайтесь ответить сами.

    Бросок легкого оружия в воздухе. При прыжке атака/вбок атака. все аналогично обычному броску. 52 Кадр - начало.

    Выпивание оружия. Когда вы пьете пиво или молоко, у Вас пополняется мана/жизнь и мана. Используется state: 17 - поглощение хп от оружия в руке.
    Обратите внимание на hit_d! Это также можно назвать системным параметром, т.к. есть случаи когда он выступает альтернативным next. В данном случае, когда хп оружия кончатся, или, если прием использует ману, кончится мана, персонаж перейдет в кадры указанные в hit_d. Ставить в такие кадры hit_d: 0 нельзя! Персонаж исчезнет с карты боя!!!

    Удар. Как и удар обычным оружием имеет 2 разных варианта, хотя лучше было бы сказать наоборот :) . Начинаются кадры удара с 60/65 кадра.

    Супер удар. Когда враг в ТБ или пробита защита врага, персонаж может сделать добивающий удар. Он сильнее обычного. Технически ничем не отличается. Начинается с 70 кадра.

    Удар при прыжке/беге/дэше. Аналогично удару. Кадры 80/85/90. Одна особенность у кадров удара при дэше: state: 15 для того, чтобы противник не защищался.

    Защита при дэше. При дэше нажать защиту - персонаж защитится. state: 7 используется для защиты.

    Перекат. Пусть все кадры так и названы, но не все являются перекатом.
    Перекат. Собственно сам перекат начинается с 102 кадра, имеет state: 6, используемый для переката. Также есть itr с kind: 7. Этот kind показывает, что если нажать атаку, то персонаж поднимет легкое оружие без кадров поднятия. Есть 3 завершения переката. Если не уверены в себе, то это лучше не особо трогать.
    В воздухе. Тут есть даже 2 варианта, различаются тем, что один при ударе сзади, другой - спереди. Для этого нужно в начальный момент падения нажать на прыжок, и персонаж приземлится на ноги :) .Начинаются с 100 - спереди, с 108 - сзади.

    Защита. Как и в дэше(опять лучше сказать наоборот). Тут уделю больше внимания. Кадр - 110. При state: 7 дается 60 очков защиты. Если ударили, но не пробили, то персонаж перейдет в кадр 111, если пробили, то тут или в кадры с пробитой защитой, или в кадры получения урона/падения.

    Пробитая защита. По персонажу могут нанести добивающий удар. state: 8. itr-kind: 6. этот тип используется для возможного проведения добивающего удара.

    Поднятие легкого/тяжелого оружия. Кадры начала 115/116.

    Держание противника. Вы схватили противника, тут описано все что при этом произойдет, какие кадры у него, какие действия у Вас. state: 9 обязателен! Изначально при захвате персонаж переходит в кадр 120, но при нажатии атаки он перейдет в кадр 122. Почему? А что может еще произойти? В каком кадре противник?(4)

    Захваченный. state: 10. Стандартно с 130 до 144 кадра. Но не оязательно. Эти кадры ограничиваются лишь тем, как будут их держать противники. Системный next: 0

    Падение. В одну сторону и в другую. С 180 кадра по 185/с 186 по 191, спиной/лицом соответственно. Они аналогичны, поэтому рассмотрю только один из них - падение спиной.
    При падении используется state: 12. next: 0, системный. Также в кадрах падения есть itr с kind: 4. Что дает этот kind. Он дает возможность ударить противника своим телом, когда Вас швырнули в кого-то. Рассчет того, какие кадры нужны производится игрой. Т.е. именно поэтому сейчас и ранее использовался next: 0, сама игра решает, когда что должно будет произойти. Но сравнив спрайты с кодом, можно понять, что кадры сменяются постепенно, от падения вверх до падения вниз и самого приземления. Причем прежде чем остановиться на земле, персонаж отскочит от земли, а уж потом окончательно остановится, но это уже другие кадры :)

    Замороженный. Начинается с кадра 200. Как таковое состояние заморозки наступает на след. кадр, state: 13. При этом используется itr-kind: 14. Это создает некую границу, препятсятвующую прохождению других игроков. Подробней читайте далее.

    Горящий. Похоже по сути на кадры падения. Также есть падение вниз и вверх. 203 кадр - начало вверх, а вниз начинается падение с 205 кадра. Используется state: 18 - горение, поджигает как врагов, так и союзников. Также effect: 20 - поджигание, но при одновременном использовании поджигает только врагов.

    Устал. Эти кадры не используются. Скорей всего разработчики хотели сделать, но не сделали.

    Прыжок. Начинается с 210 кадра, кадр 212 последний - обязателен! Там next: 0! Используется state: 4

    Дэш. Вперед/назад = 213 и 216/214 и 217 кадры. state: 5. Сначала кадры с изображением рывка, далее просто полет вперед/назад с next: 0, следовательно начало и конец должны совпадать.

    Приседание. При приземлении после прыжка. Кадр 215.

    Остановка после бега. Кадр 218.

    Приседание2. При вставании после падения. Кадр 219. Не обязателен, является кадром, на который производится переход после лежания.

    Раненый. Тут 3 вариации. Начала кадров и их конец (конец можете менять): 220-221, 222-223, 224-225. state: 11.

    ТБ. Пусть и называется также, как и кадры получения урона, но по сути это немного другое. После получения несколько раз небольшого урона, персонаж переходит в эти кадры. state: 16. Кадры: 226-229, начало - 226.

    Лежание. После падения персонаж лежит, потом встает. Если у него 0 хп, то кадр зацикливается. Для этого служит next: 0. При этом state: 14.

    Кидание лежачего. Пусть так и называется, но на самом деле лежачего кинуть нельзя. Точнее можно, ведь именно за этим Вы это читаете, чтобы научиться делать подобные вещи! На самом деле это просто кадры кидания при захвате. Особенностью является dircontrol в cpoint. Он дает возможность выбрать сторону, в какую будет совершен бросок.

    dummy. Как таковой этот кадр не нужен. Скорее он показывает границу, где кончаются кадры.

    Также:
    Кадры могут идти не в порядке их номера
    Если есть 2 кадра с одним номаром, то воспроизведутся оба кадра, правда нужно, чтобы предыдущий и эти кадры шли не по порядку, а с небольшим пробелом в номерах кадров. Например, -> 250 -> 279 -> 279 ->

    Теперь я изображу табличку (если так можно назвать) state, kind, effect для персонажа, снаряды и оружие сюда не вписываю. Все это пригодится Вам, в этом я уверен, я сам такую табличку держу под рукой, а то: "все держать в голове невозможно и не нужно" (слова современного русского мудреца ;) )

    state:
    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

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

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

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

    Для начала хотел бы внести ясность в некоторые вещи. Как в физике минус означает противоположное направление, так и в Little Fighter. Поставив его в next получаем переход к модулю указанного кадра с разворотом в другую сторону. Правда это не везде можно использовать. Попробуйти в процессе создания найти, где можно, а где нет, т.к. собственный опыт - лучший учитель.
    Также есть, не описанный мною, zwidth. zwidth показывает ширину чего-либо по оси z. Отсчет его немного неудобен, а то же время удобен - указанная цифра делится пополам и по оси ввер и вниз откладывает получившиеся значение. Т.е. ширина равномерно распределяется в обе стороны.
    Указывая в dvx/dvy/dvz 550 дает остановку персонажа по этим координатам, происходит "фиксацию координат" (надеюсь правильно запомнил слова мудреца)
    state: 18 дает возможность наносить удар по своим. Это дает возможность создания некоторых вещей. Скажем Вами был создан объект, который в определенных кадрах наносит урон, пожалуйста, state: 18 Вам поможет :)
    itr-kind: 8. Используется в шарах лечения, но также можно и в персонажах. Обеспечивает переход объекта в кадрах с itr-kind: 8 в кадр указанный в dvx, т.е. если "удар возможен,", то объект, будь то персонаж или снаряд, перейдет в нужный кадр. Это можно назвать ветвлением ЕСЛИ_ТО_ИНАЧЕ, а в данном случае это будет "Если ..., то ..., иначе ..." (попробуйте сами подставить нужные слова)(5)

    Чтож, можно приступить к главному. Также советую не просто читать, а проделывать то же самое у себя.

    1)Допустим нужно, чтобы персонаж мог использовать прием: несколько обычных ударов, затем удар с поджигом, потом одышка.
    Сначала нужно будет сделать переход на эти кадры по комбинации клавиш. Допустим надо чтобы по комбинации защита-вбок-прыжок, hit_Fj: 240. Не забываем это прописать во всех кадрах стойки, остальные кадры по Вашему усмотрению.
    Теперь можно преступить к созданию смого удара (в данном случае комбинации ударов). Удары можно использовать стандартные, но по существу это ограничевается только числом кадров и количеством спрайтов. Ниже приведу пример того, что можно использовать.

    240 my_first_combination
    pic: 10 state: 3 wait: 2 next: 241 dvx: 1 dvy: 0 centerx: 39 centery: 79 hit_a: 0 hit_d: 0 hit_j: 0
    ~~~


    241 I_like_this_tutor
    pic: 11 state: 3 wait: 3 next: 242 dvx: 0 dvy: 0 centerx: 39 centery: 79 hit_a: 0 hit_d: 0 hit_j: 0
    sound: data?07.wav
    itr:
    kind: 0 x: 49 y: 33 w: 30 h: 16 dvx: 2 bdefend: 16 injury: 20
    itr_end:
    ~~~


    242 I_used_this_frames_from_punch
    pic: 12 state: 3 wait: 2 next: 243 dvx: 1 dvy: 0 centerx: 39 centery: 79 hit_a: 0 hit_d: 0 hit_j: 0
    ~~~


    243 don't_forget_that_there_can_be_any_text
    pic: 13 state: 3 wait: 3 next: 244 dvx: 0 dvy: 0 centerx: 39 centery: 79 hit_a: 0 hit_d: 0 hit_j: 0
    ~~~
    itr:
    kind: 0 x: 45 y: 34 w: 33 h: 14 dvx: 2 bdefend: 16 injury: 20
    itr_end:
    ~~~

    -------------------------
    То что помечено "~~~" означает что может быть все что угодно

    Вот и кусок обычных ударов, тут только два удара, но если их больше, то Вам нужно сделать еще несколько кадров. Кстати, откуда взяты эти кадры? А как можно сделать продолжение комбинации по нажатию клавиши атаки, а не автоматическое продолжение?(6)
    Ну чтож, теперь удаг с поджигом. А это проще простого! Используем нужные кадры с блоками itr-kind и в effect пишем 2 или 20/21, а можно 22 и поставить state: 18. Вы еще не поняли, что движок позволяет Вам творить, что хочется? (правда есть некоторые рамки)
    Одышку делаем с помощью wait, ставим, скажем, 50.

    2)Если Ваша комбинация/прием будет с захватом/прыжками или еще чем, не забываем соответствующие этим особенностям блоки или параметры. Разве что прыжок может затруднить, тогда для прыжка нужно использовать dvy, также не забываем про минус и его свойства.

    3)Нужно чтобы персонаж пускал снаряд? opoint в помощь!
    Сделав переход к нужным кадрам, не забываем, что для добавления объекта нужно, чтобы от перехода по нажатию и кадром с opoint его отделял 1 кадр.Если у Вас сразу добавление, то это неправильно. Нужно сделать второй кадр (можно такой же), у первого убрать все лишнее и изменить задержку между кадрами на ноль.
    Теперь делаем opoint.
    Допустим нужно создать шар вперед, потом развернуться и сделать сразу 2 шара, затем персонаж руку поворачивает в первоначальную сторону и делает еще шар, после, пошарившись в кармане, достает ножик и возвращается в стойку. Все это может звучать страшно, но заверяю, ничего сложного нет. Опишу лишь то, что может вызвать сомнения.

    Создание шара
    opoint:
    kind: 1 x: 78 y: 39 action: 0 dvx: 0 dvy: 0 oid: 777 facing: 0
    opoint_end:
    Для разворота нужно использовать отрицательный next
    Два шара
    То же самое что и один, только facing: 20
    А шар в противоположную сторону делается facing: 1 или facing: 11

    4)Телепорт прямо на врага
    Для этого телепортироваться к противнику (state: 400), wait: 0/1 и dvx: 120. В следующем кадре dvx: 550

    5) Тут рассмотрю случай интересней. Сначала опишу все что будет использоваться.
    Некий прием. Мы уже сделали переход к нему.
    Теперь wait: 0 dvy: -1 переход на след. кадр.
    В следующем кадре (втором из приема) state: 4(прыжок) next: на самого себя dvy: 550 dvx: 10 dvz: 3 centery: на 1 меньше нужного hit_d: 3
    примерно как выглядит:
    241 run
    pic: 103 state: 4 wait: 2 next: 241 dvx: 9 dvy: 550 dvz: 2 centerx: 45 centery: 78 hit_a: 0 hit_d: 245 hit_j: 0 mp: -27
    ~~~

    Что нам это дает? Вот что: персонаж двигается вперед, при этом Вы можете изменить направление, нажав на клавишу движения. Также можно сделать немного проще: hit_j: 246 в котором будут кадры разворота.

    6) Серии обычных ударов
    Это если мы хотим, чтобы персонаж, при нажатии атаки, выполнял только один вариант атаки, а если продолжать нажимать, то будет выполнять серию атак.
    А всего-то нужно сделать кадры 60 и 65 одинаковыми с отличием лишь в номере кадра. И в конце каждого удара изменить hit_a на нужный нам.

    7) Сложные комбинации
    С помощью hit_Fa мы добились, что при нажатии защита-вперед-атака персонаж перейдет в определенный кадр и выполнит серию ударов. А если нужно как-то продолжить, или нужно сделать альтернативный прием, суперприем, который будет вышибать дух из врагов. Тогда в следующих кадрах пишем, например, hit_Da: 331. Теперь если при выполнении приема нажать защита-вниз-атака, то персонаж перейдет в 331 кадр. Если мало времени, чтобы нажать, то можно увеличить wait или увеличить количество кадров, содержащих переход.
    С помощью этого также можно создать необычные комбинации, например:
    вперед-атака
    атака-защита
    атака-атака-прыжок или атака-атака-атака-атака-атака-прыжок (если используются "Серии обычных ударов")
    защита-вниз-прыжок-атака-защита-вверх-атака-прыжок
    и многое другое
    Также можно делать интересные вещи вида
    защита-вбок-прыжок-защита, а если еще нажать вбок-атака, то персонаж сделает продолжение
    Как это сработает? А просто! Комбинацию можно набирать не спеша, любую. Поэтому нажатая ранее защита считается как начало комбинации
    При этом можно сделать запрет на дополнительное нажатие защиты, для этого в нужном кадре сделать, например, hit_d: 999.

    Вот и перешли к снарядам. Я рассмотрю все типы снарядов, вкратце опишу особенности.

    Начну с type: 1, открываю файл ножа (weapon0.dat)


    file(0-99): sprite\sys\weapon0.bmp w: 48 h: 48 row: 10 col: 10
    weapon_hp: 200
    как и у персонажа, у оружия есть хп, можно указывать довольно большие значения
    weapon_drop_hurt: 35
    каждый, раз, когда оружие выпадает из руки, ему наносится урон, тут показано сколько нанесется урона
    weapon_hit_sound: data\011.wav
    звук удара оружием
    weapon_drop_sound: data\011.wav
    звук падения оружия
    weapon_broken_sound: data\094.wav
    звук, когда оружие разбилось



    entry: 1 normal
    entry - идентификатор того, какая атака это будет, используется в wpoint-weaponact, значение указанное в нем соответствует значению в списке
    normal - комментарий к идентификатору
    ниже приводится список параметров удара(dvx, fall, vrest, bdefend, injury, effect (равный1))
    dvx: 2 fall: 40 vrest: 10 bdefend: 16 injury: 45 effect: 1
    entry: 2 jump
    dvx: 7 fall: 70 vrest: 10 bdefend: 16 injury: 45 effect: 1
    entry: 3 run
    dvx: 10 fall: 70 vrest: 10 bdefend: 16 injury: 55 effect: 1
    entry: 4 dash
    dvx: 12 fall: 70 vrest: 20 bdefend: 60 injury: 55 effect: 1


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

    Начиная с нулевого до какого угодно идут кадры падения на землю объекта, при этом используется state: 1000.
    Необязательно, но привычней, идут с 20 по 35 кадры держания оружия в руке. Почему необязательны такие рамки? А потому, что кадр в котором будет оружие, указывается у персонажа. state: 1001. В кадрах держания также next: 0, в wpoint kind: 2.
    С 40-ого по 50-ый кадры, когда оружие бросили. Тут тоже не обязательно с 40, да и не обязательно до 55. state: 1002.
    Кадры 60-63 когда оружие упало на землю. 70-72 тоже, но тут, скорее всего, используется при броске персонажем. state: 1003.
    А вот когда оружие упадет и перестанет двигаться, то оно будет просто лежать, с использованием кадра 64, при этом state: 1004, next: 0.
    И опять странные кадры dummy, дальше о них вообще писать не буду, т.к. они присутствуют в большинстве dat-файлов.

    Переходим к type: 2, открываю файл камня (weapon1.dat)
    Файлы камня и ящика самые короткие среди оружия. Почему? А потому что из них вырезано много лишнего, того без чего они могут обойтись.
    Начало у любого оружия будет тем же. Это блок .
    Описание силы удара для weaponact отсутствует.
    Я же ведь писал, что кадры падения на землю могут быть любого количества? Так вот, их тут только шесть. state: 2000
    Кадров держания в руке стало аж в пятнадцать раз меньше! Один одинокий десятый кадр с state: 2001 и next: 0
    Только упав камень обратится к единственному 61 кадру, state: 2000, а потом проиграется анимация падения (с нулевого кадра).
    И только после этого, прекратив двигаться, он замрет на земле с state: 2004 и next: 0. Также с помощью itr-kind: 14 создается граница, через которую нельзя перейти.


    Теперь type: 4, бейсбольный мяч (weapon5.dat)
    Тут писать много не надо. По своей структуре, это тот же нож или бита (type: 1). Отличия лишь прописаны изначально в type. Мяч будет отпрыгивать больше от земли, его можно только кинуть(стоя/при ходьбе, с разбега, в прыжке, дэше). weapon_strength_list не используется.

    type: 5 относится к стадиям, поэтому не описываю.

    Перейдем к type: 6. Это предметы, которые персонаж
    RockNGame нравится это сообщение.
    16 октября 2016 - 13:34 / #1
  2. Оффлайн

    RockNGame

    Был салагой, стал хакагой!

    Mugen Developer

    Сообщений: 299

    Баллы: 1567

    Симпатий: 11

    Подарить подарок

    Хороший гайд. жаль не полный.
    16 октября 2016 - 14:04 / #2
Спонсоры проекта
Сегодня Нас посетили
«    Март 2017    »
ПнВтСрЧтПтСбВс
 12345
6789101112
13141516171819
20212223242526
2728293031