Rus

1. Что нужно делать?
Если вы хотите прспособить своего персонажа MKP4.1 к этому обновленному движку, от вас требуется следующее:
- открыть *.def файл персонажа (обычно называется так же, как и папка с персонажем)
- в нем заменить "bmoves.st"   на "../../data/MKP/bmoves.st" 
                 "pit.st"      на "../../data/MKP/Pit.st" 
                 "fatality.st" на "../../data/MKP/Fatality.st"
- также убедитесь, что среди файлов персонажа указан COMMON1.CNS (строка "stcommon = common1.cns")
- далее открыть *.cns файл персонажа (обычно это 1.CNS)
- найдите строку, в которой написано "[statedef -3]" (для поиска используйте F3 в блокноте)
- выделите эту строку и всё после нее, пока не дойдете до следующей строке, в которой написано [statedef -3]
- когда выделите и эту строку, удалите всё выделенное
- сохраните измененные файлы и проверьте, работает ли персонаж правильно
- имейте в виду, что некоторые персонажи с эффектами дыма могут потерять их после выполнения действий, указанных выше
- также обратите внимание, что для нормального отображения на select screen персонажу необходимо заменить иконку
- чтобы персонаж работал с сеговской настройкой управления, добавьте следующее в начало cmd файла:
[Remap]
c = y
z = b
b = c
y = z

2. Что это дает?
Суть изменений, вносимых в файлы персонажа, в том, что теперь все стандартные движения, реакции и прочее хранится в общих файлах (общая подпапка MKP в папке data). Без этих изменений персонажи будут использовать файлы из своей собственной папки. Они будут запускаться и даже нормально играть, но будут нестабильны и невосприимчимы ко всем исправлениям, сделанным в движке. Именно поэтому ссылки на эти файлы (bmoves, pit, fatality) должны ссылаться не на файлы персонажа, а на такие же файлы из общей папки ("../../data/MKP" и есть ссылка на эту папку).
Касательно CNS файла (удаление строк) - вся информация, которая подлежит удалению, уже продублирована в общем файле common1.cns, поэтому персонаж ничего не теряет (кроме дыма в редких случаях). Но основная необходимость удаления statedef -3 (которых в файле персонажей MKP обычно два) заключается в том, что теперь он хранится в common1.cns для всех персонажей. Если его оставить в 1.CNS персонажа, то тот, что в общем файле, читаться не будет.

3. Дальнейшее обновление.
Старые персонажи могут неверно реагировать на некоторе обычные атаки (неправильные скорости получения удара).
Чтобы это исправить, в файле 1.cns нужно сделать следующее:

- найдите "noairguard" через поиск
- сразу после строки с этой фразуй вы увидите группы строк, похожие на эти:
 
[State -2, Frosty color]
type = palFX
triggerall = time = 1
trigger1 = palno = 6
add = 100,150,250
mul = 200,200,200
time = 9999

[State -2, 234]
type = VelAdd
trigger1 = p2stateno = 210
trigger2 = p2stateno = 225
;triggerall = movetype = H
triggerall = time < 12
triggerall = p2bodydist X < 80
;triggerall = p2bodydist X > 0
triggerall = stateno = [5000,5012]
triggerall = stateno != [130,155]
x = -5

[State -2, 2234]
type = VelAdd
trigger1 = p2stateno = [400,420]
;triggerall = movetype = H
triggerall = time < 12
triggerall = p2bodydist X < 80
triggerall = p2bodydist X > 0
triggerall = stateno = [5000,5012]
triggerall = stateno != [130,155]
x = -6

[State -2, 22340]
type = VelAdd
trigger1 = p2stateno = [400,420]
;triggerall = movetype = H
triggerall = time > 4
triggerall = time < 12
triggerall = p2bodydist X < 80
triggerall = p2bodydist X > 0
triggerall = stateno = [5000,5012]
triggerall = stateno != [130,155]
x = 5

Их нужно удалить.

Дополнительно, вы можете добавить своему персонажу звуки на бег, ходьбу и прыжки. для этого в файле 1.cns сразу после строки [statedef -2] необходимо вставить следующее:

[State -2, 34]
type = Playsnd
trigger1 = anim = 20 && animelem = 5
trigger2 = anim = 21 && animelem = 9
value = f20,12
volumescale = 200

[State -2, 34]
type = Playsnd
trigger1 = anim = 21 && animelem = 5
trigger2 = anim = 20 && animelem = 9
value = f20,11
volumescale = 200

[State -2, 34]
type = Playsnd
trigger1 = stateno = 40 && time = 1
value = f5,154

[State -2, 34]
type = Playsnd
trigger1 = animelem = 2 || animelem = 5 || animelem = 9 || animelem = 13
trigger1 = anim = [42,43]
value = f5,150

[State -2, 34]
type = Playsnd
trigger1 = anim = 100
trigger1 = animelem = 2 || animelem = 8; depends on the animation frames
value = f5,320 + random%2
volumescale = 200

Скорости ходьбы, бега и прыжков могут тоже показаться вам неверными. Их можно изменить в самом начале 1.cns файла персонажа. Просто замените указанные ниже значения на соответствующие (остальные менять не обязательно):

[Velocity]
walk.fwd  = 3.25
walk.back = -2.25
run.fwd  = 8, 0
...
jump.neu = 0,-9.5
jump.back = -4
jump.fwd = 4

[Movement]
...
yaccel = .5
...

4. Перевод персонажей на новую версию Mugen.
Обычно когда вы пишете "1.0" в строке "mugenversion", персонаж перестает работать и выдает ошибки. Чтобы это предотвратить, из всех файлов персонажа необходимо удалить все скорости по оси z ("третьи" скорости). Как сказано в документации к Mugen1.0:
"Найдите все триггеры, указывающие vel z и pos z и замените их на 0, или перепишите их так, чтоб проверка по этой оси не проводилась" (в MKP такие триггеры практически не используются)
"Проверьте все начальные секции [Statedef ...] на наличие строки velset и удалите оттуда третье значение (скорость по оси z), если оно есть. Таким образом, velset = 0, 0, 0 должно стать velset = 0, 0"
Исправив это, вы можете поставить 1.0 в строке Mugenversion (def файл персонажа) без всяких ошибок. Это позволит вам успешно скопировать секции с действиями и реакциями ИИ (искусственный интеллект, компьютерный игрок) из уже исправленных персонажей (файлы 1.cmd), или создавать свои собственные скрипты для ИИ с использованием триггера AILevel (выставляет зависимость от уровня сложности).

5. Новые системные требования.

Чтобы ваш персонаж работал с системой баттл плана, в его *.air файле должна быть анимация:

[Begin Action 9100]
9000,2, 0,0, -1

где спрайт 9000,2 is - иконка размером 48x59 (координаты 0,0).

Чтбы персонаж работал с новой ВС системой, нужноз заново добавить его VS позу одним или несколькими слоями. Номер спрайта для VS позы должен быть 9002,0.
В таком случае анимация будет следующей:

[Begin Action 9200]
9002,0, 0,0, -1

Чтобы система заработала, в самый конец *.CNS файла необходимо вставить:

;=============================
[Statedef 19100]; VS screen
type    = S
movetype= I
physics = S
juggle  = 0
velset = 0,0
anim = 888
ctrl = 0

[State 0, temp]
type = assertspecial
trigger1 = 1
flag = nobardisplay
flag2 = intro

[State 0, clear]
type = assertspecial
trigger1 = 1
flag = nomusic
flag2 = timerfreeze

[State 0, clear]
type = assertspecial
trigger1 = 1
flag = noBG
flag2 = noFG

[State 0, offset]
type = varset
trigger1 = time = 0
v = 11
value = 146; изменяйте это значение, если хотите чтоб ВС вашего персонажа был выше или ниже.

[State 0, shadow]
type = Explod
trigger1 = time = 0 
anim = 9200
ID = 901
pos = ifelse(teamside = 1,-400,720),0
facing = ifelse(teamside = 1,1,-1)
postype = left
bindtime = -1
sprpriority = 6

[State 0, VS]
type = Explod
trigger1 = time = 0 
anim = 9200
ID = 900
pos = ifelse(teamside = 1,-400,720),0
facing = ifelse(teamside = 1,1,-1)
postype = left
bindtime = -1
scale = 0.75,0.75
ontop = 1
ownpal = 1


[State 0, end]
type = selfstate
trigger1 = time = 0
value = 19101


Чтобы персонаж мог выполнять стэйдж-фаталити, у него должно быть следующее:

в CMD файле, сразу после всех команд для приемов или добиваний:

[Command]
name = "stage"
command = /$D,x
time = 30

в том же файле, сразу перед блоком ";Stand block section"

[State -1, stage]
type = selfstate
triggerall = roundstate = 2
triggerall = statetype = S || statetype = C
triggerall = ctrl
triggerall = p2bodydist x < 10 && p2stateno = 9010 && numhelper(6969) > 0
trigger1 = var(50) = 0 && command = "stage"
trigger2 = var(50) = 1 && random%30 < AILevel
value = 4000
1.Как это работает.
Каждый раз, когда вы пользуетесь хелпером крови, сама анимация крови зависит от того, какой stateno вы указали.
Типичный код для применения хелпера выглядит так:

[State, blood]
type = Helper
trigger1 = ...; (нужный вам триггер, меняется по ситуации - время, попадание удара или др.)
stateno = xxx; (номер стэйта, должен быть одним из приведенных ниже)
pos = 0, 0 ; (положение относительно персонажа, на "привязанные" хелперы не распространяется)
postype = p1; (или p2, определяет, относительно какого игрока считается положение)
facing = 1; (или -1, определяет, в какую сторону будет повернута анимация)

2.Какие хелперы уже созданы.
"Групповые" хелперы представляют из себя целую группу эффектов (например, анимация "взрыва" + капли), применимых в обычных ситуациях. Для большинства из них всего лишь требуется указать stateno - они определяют свое положение сами. Однако для создания нестандартных эффектов (или использования разных эффектов в добиваниях), составные части (хелперы) можно комбинировать в различных количествах с разными положениями.

Групповые хелперы:
27 - как в верхних ударах руками, комбо-ударах и т.п. (привязаны к голове врага)
28 - как на аппеккуте и ударе с разворота (привязаны к врагу)
29 - похож на предыдущий, но крови меньше
30 - как на ударе ногой в прыжке
31 - похож на тот, что в апперкуте, но можно настраивать его положение (по умолчанию 50, -90 от атакующего)

кости:
6900 - взрыв из костей (без вспышки и звука, используется в brutality)
6901 - череп
6902 - грудная клетка
6903 - левая рука
6904 - правая рука
6905 - левая нога
6906 - правая нога
6907 - пустая кость
6908 - кость и кусок мяса
6909 - кусок мяса с маленькой костью

полезные хелперы с кровью (положение настраивается, по умолчанию 0,0 от атакующего):
7150 - для режущих приемов типа гарпуна Скорпиона
7200 - обычная капля крови, скорость рандомная, используется везде
7201 - кровь на земле, обычно в это превращается капля, когда приземляется
7202 - капля крови, падающая вертикально вниз (капающая кровь)
7220-7224 - капли крови (похожие на 7200) с разными скоростями

хелперы крови, которые могут понадобиться для добиваний:
7400 - отлетающий сгусток крови для порезов (например, "ножницы" Бараки)
7410 - длинная полоска крови в воздухе для (например, разрезание у Скорпиона в МК2, первый удар)
7420 - крутящийся сгусток крови, подойдет для особо мощных ударов с вращением
7430 - струящаяся кровь из раны (подойдет для отрывания конечностей)
7440 - кровавый взрыв (часто используется)
7441 - три кровавых взрыва, расположенные горизонтально (когда враг разрывается лежа)
7442 - три кровавых взрыва, расположенные вертикально (когда враг разрывается стоя)
7443 - небольшая лужа крови (подойдет как кровь под упавшим телом в местах, где отрублены конечности)
7444 - большая лужа крови
7450 - кровавая сфера, подлетающая вверх (как при отрывании туловища в МК2)
7460 - фонтанирующая кровь (подойдет для обезглавливания)

7470 - кусок кости с кровью (как в добивании Джакса из МК2)
1. Зачем это нужно.
Для тестирования/проверки, команды на добивания у переизданных персонажей выбраны простейшие. Однако иногда, когда вы пытаетесь поставить на эти добивания другие команды (например, из оригинальных игр), эти команды просто не работают. 
В простейших случаях на выполнение длинной комбинации просто не хватает времени:

[Command]
name = "command"
command = X,X,X
time = YY

Чаще всего на одно нажатие достаточно 10 тиков, таким образом если команда включает в себя 3 кнопки, оптимальным временем будет 30. 
В остальныхслучаях команда не может быть выполнена потому. что персонаж успевает перейти в другие состояния прежде, чем вы закончите ввод команды. Например, переход в прыжок при нажатии кнопки "вверх" или в блок при нажании кнопки "блок" - если в команде на прием присутствуют эти кнопки, чаще всего персонаж вместо этого просто брыгает или встает в блок.

Типичные триггеры на исполнение приема выглядят так:

triggerall = statetype = S
triggerall = ctrl = 1
triggerall = roundstate = 2
trigger1 = command != "run"

2. Если используется кнопка "вверх". 
По нажатию кнопки "вверх" персонаж мгновенно переходит в прыжок, где statetype = S уже не может выполняться, а дальнейшие действия отключают и ctrl. В этой ситуации приведенные выше триггеры надо заменить следующим образом:

triggerall = statetype = S || statetype = A
triggerall = (ctrl = 1 && statetype = S) || stateno = 40 || (stateno = 50 && time < 3)
triggerall = roundstate = 2
trigger1 = command != "run"

если вы хотите, чтоб комбинацию с кнопкой "вверх" можно было вводить во время блока, первую строку дополните следующим:

triggerall = (ctrl = 1 && statetype = S) || stateno = 40 || (stateno = 50 && time < 3) || (stateno = [120,159])

3. Если в команде используется кнопка бега и прием не работает, то нужно просто удалить такую строку:

trigger1 = command != "run"

4. Если команда достаточно длинная и включает в себя кнопку "вниз", персонаж может присесть раньше, чем вы закончите ввод команды, и тогда прием не сработает. Чтобы это исправить, измените следующее:

triggerall = statetype = S || statetype = C
triggerall = ctrl = 1
triggerall = roundstate = 2
trigger1 = command != "run"

5. Если в команде присутствует кнопка блока, персонаж может перейти в блок раньше. чем команда закончится. Чтоб это исправить, необходимо изменить следующее:

triggerall = statetype = S
triggerall = ctrl = 1 || stateno = 120 || (time < 7 && stateno = [130,139])
triggerall = roundstate = 2
trigger1 = command != "run"
Уведомление