<bmp_begin> открывающий тег name: тут вписываем имя персонажа отображаемое в игре , преимущественно на латинице head: sprite\template1\face.bmp прописываем путь к файлу и имя файла с изображением лица персонажа small: sprite\template1\s.bmp прописываем путь к файлу и имя файла с изображением миниатюры персонажа file(0-69): sprite\template1\0.bmp w: 79 h: 79 row: 10 col: 7 file(70-139): sprite\template1\1.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 длина переката <bmp_end> закрывающий тег Это то, что должно использоваться у большинства персонажей, т.к. без этого персонаж будет резко выделяться на фоне других персонажей. Представьте, что Ваш персонаж не может прыгать, или бегать :) Особое внимание обратить, что отсчет спрайтов идет с 0. Теперь переходим к основной части кодинга, то над чем все работают, на что уходят часы, даже дни. Вы все еще не передумали от идеи создать персонажа? Общая структура любого кадра: <frame> 0 имя_кадра(для ориентирования среди кадров) pic: 0 state: 0 wait: 3 next: 1 centerx: 39 centery: 79 *другие подблоки*(не обязательно) <frame_end> Но чаще используется более полная форма: <frame> 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 *другие подблоки* <frame_end> Рассмотрим главную часть кадра <frame> и <frame_end> открывающий и закрывающий теги, вообще, все параметры - это английский, только где-то используется сокращение. 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% |
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: кадр в который перейдешь, если ударят сзади |
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 - в обратую сторону. |
Стоит упомянуть об особенностях. 1) Если был переход по нажатию клавиши (hit_a или hit_Uj), то добавление не производится. 2) Созданный объект будет на твоей стороне (особый случай - оружие, оно может переметнуться на чужую сторону) Дополнительно. Также Ваш персонаж может получиться намного красивее, динамичнее, если он будет воспроизводить звуки sound: *путь и название файла* Обычно пишется после главного блока, перед всеми подблоками. mp: затраты маны, если значение отрицательное, то прибавляется. При маленьких значениях для отнятия надо отрицательное и наоборот. hp: затраты хп. Если меньше нуля, то дается хп. |