[Ihoo] Cns 명령어에 대해 알아봅시다.
페이지 정보
작성자 Zone 작성일 24-02-05 14:24 조회 1,147 댓글 0본문
CNS명령어 - 역시 도스무겐 기준. 원본은 DOCS폴더의 SCTRL.TXT 파일입니다.
(마찬가지로 용어가 애니매이션의 스프라이트를 뜻하는 '프레임'과 게임상의 1/60초를
뜻하는 '프레임'이 헷갈릴수 있어서 전자의 경우 그냥 '스프라이트'라고 했고 '프레임'이라고
한 경우는 1/60초를 뜻하는 경우만 사용했습니다.)
그리고 설명은 완전한글로 하면 이해도 안되고 이상하므로 이전 문서들과 마찬가지로 영어
섞어 썼습니다. 예를들어 trigger를 '방아쇠'라고 하지않고 그냥 '트리거'라고 한다든지.
윈무겐에서 달라진점은 윈무겐 docs폴더의 update.txt 파일을 보면 원문이 있습니다.
파라미터의 경우 잘못써도 튕기지 않으므로 윈무겐에서 추가되거나 바뀐 파라미터가 있을
경우 써놔도 됩니다. 단, 명령어는 윈무겐에서 추가된걸 쓰면 도스무겐에서 튕깁니다.
설명만 보고는 명령어가 어떻게 작동하는지 정확히 알 수 없는 것들도 많으므로 그럴 경우
꼭 cns파일을 만져서 실험을 해보거나 다른캐릭터의 해당 소스를 봅시다.
사용예는 간단한 것들은 되도록 안썼습니다. 원문에도 없고요.
모든 명령어엔 persistent와 ignorehitpause 파라미터를 쓸수 있습니다.
persistent = 0으로 할 경우 그 명령은 그 스텟에서 딱 한번만 실행되게 되며 1이면 한번
이상 계속 실행될수 있습니다. 안쓸 경우 기본값은 1입니다.
ignorehitpause = 1로 할 경우 히트경직을 무시하고 명령이 작동합니다. 기본값은 0입니다.
설명에서 필수파라미터(Required parameters)와 옵션파라미터(Optional parameters)가 있는
데 필수파라미터는 꼭 써야하는것이고(안쓰면 에러) 옵션파라미터는 안쓸 경우 각각에
정해진 기본값으로 설정됩니다. 필수파라미터 없이 옵션파라미터만 있는 명령들도
있습니다.
또한 값을 지정해줄 때 형태가 int(정수), float(실수), string(문자열) 이 있는데 string은
그냥 '문자'라고 썼습니다.
목록
-AfterImage
-AfterImageTime
-AllPalFX
-AngleAdd
-AngleDraw
-AngleMul
-AngleSet
-AppendToClipboard
-AssertSpecial
-AttackDist
-AttackMulSet
-BGPalFX
-BindToParent
-BindToRoot
-BindToTarget
-ChangeAnim
-ChangeAnim2
-ChangeState
-ClearClipboard
-CtrlSet
-DefenceMulSet
-DestroySelf
-DisplayToClipboard
-EnvShake
-Explod
-ExplodBindTime
-FallEnvShake
-ForceFeedback
-GameMakeAnim
-Gravity
-Helper
-HitAdd
-HitBy
-HitDef
-HitFallDamage
-HitFallSet
-HitFallVel
-HitOverride
-HitVelSet
-LifeAdd
-LifeSet
-MakeDust
-ModifyExplod
-MoveHitReset
-NotHitBy
-Null
-Offset
-PalFX
-ParentVarAdd
-ParentVarSet
-Pause
-PlayerPush
-PlaySnd
-PosAdd
-PosFreeze
-PosSet
-PowerAdd
-PowerSet
-Projectile
-RemoveExplod
-ReversalDef
-ScreenBound
-SelfState
-SndPan
-SprPriority
-StateTypeSet
-StopSnd
-SuperPause
-TargetBind
-TargetDrop
-TargetFacing
-TargetLifeAdd
-TargetPowerAdd
-TargetState
-TargetVelAdd
-TargetVelSet
-Trans(윈무겐전용)
-Turn
-VarAdd
-VarRandom
-VarRangeSet
-VarSet
-VelAdd
-VelMul
-VelSet
-Width
------------------------------------------------------------
AfterImage
------------------------------------------------------------
잔상효과를 줍니다. 설명하기 난감해서 원문을 놔뒀습니다. 각자 실험해보고 익힙시다.
Enables player afterimage effects. The character's frames are stored
in a history buffer, and are displayed after a delay as afterimages.
Required parameters:
none
Optional parameters:
time = duration (int)
Specifies the number of ticks that the afterimages should be
displayed for. Defaults to 1.
잔상의 지속시간(몇프레임인가). 기본값은 1입니다.
length = no_of_frames (int)
Sets the capacity of the frame history buffer. The history will
hold up to no_of_frames of the character's most recently saved
frames. Assuming constant values for timegap and framegap,
increasing the length can increase the number and "age" (for lack
of a better term) of afterimages displayed at one time. The
maximum length is 60, and the default is 20.
잔상의 길이. 최대값은 60이고 기본값은 20. 예를들어 length=10이라고 하면
10프레임 이전 동작(까지)의 잔상이 남습니다.
잔상의 색깔을 정하는 파라미터입니다.
palcolor = col (int) - 팔렛색?
palinvertall = invertall (bool) - 1이면 반전효과
palbright = add_r, add_g, add_b (int) - 색의 밝기
palcontrast = mul_r, mul_g, mul_b (int) - 색의 대비
palpostbright = add2_r, add2_g, add2_b (int) - ??
These parameters determine palette effects to be applied to all
afterimages. First the color level is adjusted according to the
palcolor value, then if invertall is non-zero the colors are
inverted. Afterwards, the palbright components are added to the
corresponding component of the player's palette, then each
component is multiplied by the corresponding palcontrast component
divided by 256, then the palpostbright components are added to the
result. The value of palcolor ranges from 0 (greyscale) to 256
(normal color). For instance, if the red component of the
character's
palette is denoted pal_r, then the red component of the afterimage
palette is given by (pal_r+add_r)*mul_r/256 + add2_r, assuming
palcolor and palinvert are left at their default values. Valid
values
are 0-256 for palcolor, 0-255 for palbright and palpostbright
components, and any non-negative integer for palcontrast
components.
기본값은 다음과 같습니다.
palcolor = 256
palinvertall = 0
palbright = 30,30,30
palcontrast = 120,120,220
palpostbright = 0,0,0
paladd = add_r, add_g, add_b (int) - 색깔을 입힙니다. 색은 R,G,B 색상입니다.
palmul = mul_r, mul_g, mul_b (float) - 입힌 색의 밝기입니다.
paladd = 0,0,0 일 경우 0,0,0만큼 더하는 것이므로 색은 그대로입니다.
palmul = 255,255,255 일 경우 최대밝기이므로 색은 그대로입니다.
palmul = 0,0,0일 경우 최대로 어두운것이므로 색은 검은색이 됩니다.
각자 실험해보고 익히는수밖에...
These parameters specify palette effects that are applied
repeatedly to successive frames in the afterimage. In one
application of these palette effects, first the paladd components
are added to the afterimage palette, then the components are
multiplied by the palmul multipliers. These effects
are applied zero times to the most recent afterimage frame, once
to the second-newest afterimage frame, twice in succession to the
third-newest afterimage frame, etc.
Valid values are 0-255 for the paladd components, and any non-
negative float value for the palmul multipliers. The defaults are
각 최대값은 255이며 기본값은 다음과 같습니다.
paladd = 10,10,25
palmul = .65,.65,.75 (.65로 쓰나 0.65로 쓰나 같습니다)
timegap = value (int)
This parameter controls how many frames to skip between saving
player frames to the history buffer for afterimage display. The
default is 1 (skip no frames). To save every third frame (for
example), you would use timegap = 3.
얼마만큼의 시간(게임프레임)마다 잔상을 만들것이냐 하는것인데 역시 실험으로
익히는게 좋을 듯. 다른 캐릭터의 cns를 보는것도 좋죠.
framegap = value (int)
Every value'th frame in the history buffer will be displayed as an
afterimage. For instance, if framegap = 4 (the default), then the
first, fifth, ninth, ... frames of the history buffer will be
displayed as afterimages.
몇 스프라이트마다 잔상을 표현할 것인가인데...
예를들어 값을 2로 주면 1,3,5번째 스프라이트마다 표현합니다. 역시
실험해봐야 합니다.
trans = type (string)
Specifies the transparency type for the afterimages. Valid types
are "none" for an opaque afterimage, "add", "add1", and "sub".
add,add1,sub 중에 설정할수 있는데 역시 각자 실험이 필수입니다.
다른 예)
[state 200, 0]
type = afterimage
trigger1 = time = 0
time = 0
이렇게 쓰면 잔상을 없앱니다. 예를들어 돌진난무필살기의 돌진하는 스텟에서 때리는
스텟으로 넘어갈 때 돌진스텟에서 발생시켰던 잔상을 없애는데 쓰였습니다.
------------------------------------------------------------
AfterImageTime
------------------------------------------------------------
Afterimage의 지속시간을 바꾸는건데...역시 실험해보거나 다른캐릭터의 경우를 봅시다.
무겐 기본캐릭터인 쿵푸맨의 cns에도 이 afterimagetime 명령이 있습니다. 원문 놔둠.
Changes the duration of the player's afterimage effects, if currently
enabled. If no afterimage effects are being displayed, this controller
does nothing.
Known bugs: If the timegap parameter in the originating AfterImage
controller is not set at 1, using this AfterImageTime will cause the
frame positions to be reset.
알려진 버그로는 afterimage의 timegap값이 1이 아닐 경우 afterimagetime은 frame위치를
리셋한다고 합니다. 실험해볼일이 없어서 뭔소린진 모르겠네요.(여기서 영어원문에서
frame(프레임)이라고 한 것은 스프라이트를 뜻합니다.)
Required parameters:
time = new_duration (int)
Sets the new number of ticks that the afterimages will be
displayed before being removed.
Alternate syntax:
value = new_duration (int)
파라미터를 쓸 때 time = ? 으로 쓰거나 value = ? 로 쓰거나 같습니다.
예)
[state 200, 0]
type = afterimagetime
trigger1 = time%2 = 0
time = 2
이렇게 쓰면 잔상이 1프레임 표시되었다가, 1프레임 사라졌다가 합니다.
이 효과는 KOF에서 용호난무같은 돌진계 필살기나 대점프시의 잔상에 쓰였습니다.
무겐에서는 그냥 afterimage를 쓰면 안되지만 이 afterimagetime을 같이 쓰면 이런 효과
의 재현이 가능합니다. 쿵푸맨에도 쓰였고 제캐릭터 이오리에도 쓰였습니다.
------------------------------------------------------------
AllPalFX
------------------------------------------------------------
Palfx명령과 같지만 배경, 라이프바, ownpal명령을 쓰지않은 모든 explod들과 캐릭터
에게 영향을 줍니다. 사용예는 palfx부분을 보시길. 아래는 원문입니다.
Same as PalFX, except that this affects the palette of the background
and lifebars as well as the palette of all characters and explods
(regardless of the ownpal parameter). See the PalFX section for
details on the parameters to AllPalFX.
------------------------------------------------------------
AngleAdd
------------------------------------------------------------
캐릭터의 x,y축을 기준으로 각도를 더합니다. 스프라이트를 회전시킬 때 사용됩니다.
+를 하면 뒤쪽으로 돌며(캐릭터가 오른쪽을 보고있다고 하면 시계반대방향으로 돕니다)
-를 하면 앞쪽으로 돕니다.
이 angleadd만 한다고 스프라이트가 회전되는게 아니고 밑의angledraw를 같이 써야
합니다.
최대값은 없지만 360의 배수는 0과 같고 450도 = 90도 이런식입니다. 하지만 값이 너무
커지면(10000정도?) 제대로 표현되지 않는 경우가 생기는군요.
값은 실수로도 줄수 있습니다.
예) [state 200]
type = angleadd
trigger1 = time%4 = 0
value = 90
4프레임마다 각도를 90(직각) 더합니다.
------------------------------------------------------------
AngleDraw
------------------------------------------------------------
Angleset 이나 angleadd 로 설정된 각도대로 스프라이트를 표시합니다.
도스무겐에는 파라미터가 없는데 윈무겐에서 2개 생겼습니다.
옵션 파라미터
value = angle (실수) (윈무겐 추가 파라미터입니다)
표시할 각도값을 정할수 있습니다.
scale = xscale, yscale (실수,실수) (윈무겐 추가 파라미터입니다)
스프라이트 표시 배율
예) [state 200]
type = angledraw
trigger1 = 1
각도대로 스프라이트를 표시해라
------------------------------------------------------------
AngleMul
------------------------------------------------------------
각도에 값을 곱합니다. 전 써본적 없네요.
형식
value = 곱할값 (실수)
------------------------------------------------------------
AngleSet
------------------------------------------------------------
angleadd 각도를 더했습니다만 이것은 각도를 일정 값으로 정합니다.
형식
value = 값 (실수)
각도를 지정한 값으로 정합니다.
------------------------------------------------------------
AppendToClipboard
------------------------------------------------------------
DisplayToClipboard 명령과 같지만 displaytoclipboard에 덧붙여서 텍스트가 나옵니다.
displaytoclipboard를 보세요. displaytoclipboard에 5개 개수제한이 있고 이
appendtoclipboard에서 5개 개수제한이 있으므로 볼 수 있는 변수는 총10개입니다.
------------------------------------------------------------
AssertSpecial
------------------------------------------------------------
특수속성을 줍니다. 여러 개 써도 동시에 작동합니다. 지속시간은 1프레임이므로 그
스텟동안 계속 지속하고싶으면 트리거에 trigger1 = 1처럼 쓰면 됩니다.
필수 파라미터
flag = 적용시킬flag이름
flag_name is a string specifying the flag to assert.
옵션파라미터
flag2 = 적용시킬2번째flag이름
flag3 = 적용시킬3번째flag이름
flag이름의 종류
- intro
캐릭터가 인트로중이다. 이것이 작동하고 있을때는 "라운드 1 파이트!!"란
글자가 시작되지 않습니다. 인트로 스텟에 쓰입니다.
- invisible
투명하게 만듭니다. 잔상에는 효과가 미치지 않습니다.
- roundnotover
이것이 작동하고 있을땐 그 라운드가 안끝납니다. 승리포즈 스텟에 쓰입니다.
- nobardisplay
라이프바와 파워바를 표시하지 않습니다.
- noBG
배경을 검은색으로 칠합니다.
- noFG
스테이지에서 캐릭터의 앞쪽에 표시되는 것들을 표시하지 않습니다. 예를들어 95이오
리스테이지에서 앞에 뿌연 연기라든지(스테이지 레이어1)
- nostandguard
서서막는 동작이 불가능하게합니다. 제캐릭터 드레이븐에 사용되었습니다.
- nocrouchguard
앉아서 막는 동작이 불가능하게 합니다.
- noairguard
공중가드가 불가능하게 합니다.
- noautoturn
원래 플레이어의 방향은 저절로 상대방쪽을 향하게 되어있는데 이건 그게 안되게 합
니다. 역시 제캐릭터 드레이븐에 사용되었습니다.
- nojugglecheck
저글체크를 안합니다. 즉 공중에 뜬 상대한테 무조건 공격이 들어갑니다.
- nokosnd
ko당할 때 자동으로 11,0의 사운드가 나는데 그게 안나게 합니다.
nokosnd는 소리의 울림까지 막기위해 ko당한후 적어도 50프레임이상 사용해야
한다는군요.
- nokoslow
ko되면 화면이 느려지는데 그걸 느려지지 않게 합니다. 그런데 이건 ko시킨 쪽이
사용해야 작동합니다. ko당한 쪽에서 사용하면 작동을 안하더군요.
- noshadow
그림자를 표시 안합니다. 주로 헬퍼에 쓰입니다.
- globalnoshadow
모든 플레이어, 헬퍼, 익스플로드의 그림자를 표시하지 않게 합니다.
- nomusic
배경음이 나오지 않게 합니다.
- nowalk
걷는게 불가능하게 합니다. 달리기스텟인 100에 주로 쓰입니다.
- timerfreeze
타이머를 멈춥니다. 싸우는동안 라이프바 사이에 시간이 가죠? 그걸 멈추는
것입니다.
- unguardable
플레이어의 모든 공격이 가드불능이 됩니다. 헬퍼의 공격은 포함되지 않습니다.
헬퍼까지 되게 하려면 헬퍼에서 assertspecial을 쓰면 됩니다.
예)
[state 100, 0]
type = assertspecial
trigger1 = 1
flag = noshadow
flag2 = invisible
ignorehitpause = 1
이렇게 하면 캐릭터를 투명하게 합니다.
------------------------------------------------------------
AttackDist
------------------------------------------------------------
현재 Hitdef의 guard.dist (이명령을 안쓰면 cns파일 처음부분의 attack.dist 값으로 됨)
값을 바꿉니다. 활성화되어있는 Hitdef가 없다면 작동하지 않습니다.
필수 파라미터
value = guard_dist (정수)
------------------------------------------------------------
AttackMulSet
------------------------------------------------------------
공격력을 몇 배로 할것인지 정합니다. 정한 값은 다음의 attackmulset명령이 있을 때까지
계속 지속됩니다.
필수 파라미터
value = attack_mul (실수)
예)
[state 100]
type = attackmulset
trigger1 = 1
value = 2.0
ignorehitpause = 1
공격력을 2배로 합니다.
단, 도스무겐에서는 프로젝타일은 이명령에 상관없이 공격력이 그대로지만, 윈무겐이면
프로젝타일의 공격력까지 변합니다.
------------------------------------------------------------
BGPalFX
------------------------------------------------------------
PalFX와 같지만 이건 배경 스테이지의 색을 바꾸는 것입니다. PalFX부분을 보세요
근데 스테이지를 잘못만들 경우 배경색이 안바뀔수도 있습니다.
스테이지 만들 때 공통팔렛을 맞춰야하지만 팔렛 안맞추고도 배경색 바뀌게
하는 방법이 있는데 저는 잘 모르겠군요
원문에는 라이프바의 색까지 바뀌게 한다고 하지만, 라이프바랑 파워바 색은 안바뀌더군
요.
------------------------------------------------------------
BindToParent
------------------------------------------------------------
헬퍼에 쓰입니다. 자신을 만든 부모를 기준으로 어디에 묶어놓을것이냐(위치하게 할것이냐)
하는겁니다.
부모가 없을 경우 작동하지 않습니다. 예를들어 헬퍼에서 만든 헬퍼인데 자신을 만든
헬퍼가 사라진 경우
옵션 파라미터
time = bind_time (정수)
몇프레임동안 묶어놓을 것인가. 기본값은 1입니다.
facing = facing_flag (정수)
이값을 -1로 주면 방향을 부모의 방향과 반대로 유지하며 1로 주면
같은 방향으로 유지합니다. 기본값은 0(영향을 받지 않음) 입니다.
pos = pos_x (실수), pos_y (실수)
부모의 x축 y축을 기준으로 어느 위치에 있도록 할것인가입니다.
기본값은 0,0(부모와 같은 위치)입니다.
예를들어 pos = 50,0 이라고 하면 부모보다 50픽셀 앞에 있도록 하는겁니다.
------------------------------------------------------------
BindToRoot
------------------------------------------------------------
위는 자신의 부모를 기준으로 했지만 이것은 자신을 있게한 근원을 기준으로 합니다.(어째
말이 웃기네요)
예를들어 플레이어A에서 만든 헬퍼B가 있고 B에서 만든 헬퍼C가 있다고 했을 때. 헬퍼
C에서 bindtoparent를 쓰면 B를 기준으로 되지만, Bindtoroot를 쓰면 A를 기준으로 됩니다.
파라미터는 위의 Bindtoparent와 같습니다.
루트가 사라진 경우 작동하지 않는다는데 원문엔 '예를들어 루트가 되는 헬퍼가 사라질
경우' 라고 나왔지만 헬퍼의 루트는 무조건 플레이어캐릭터가 되므로 잘못 나온 듯 합니다.
위의 설명을 복사해서 쓰다가 잘못 쓴 듯 하군요. helpertype=player 의 헬퍼에서 만든
헬퍼라고 하더라도 루트는 플레이어캐릭터가 됩니다.
------------------------------------------------------------
BindToTarget
------------------------------------------------------------
타겟을 기준으로 어느 위치에 있게 할것인가를 정합니다.
그런데 이 명령이 처음작동한후(공격 맞춘쪽이 맞은쪽 기준으로 위치된 이후)에는
공격에 맞은쪽이 맞춘쪽 기준으로 위치되어 버리는군요.
예를들어 pos=10,0으로 주고 10만큼 밀려나게 하는 공격을 p1이 p2에게 맞추면 맞춘후
p1은 p2의 10만큼 앞에 위치가 되는데 그후엔 p2는 뒤로 밀려나지 않고 계속 그 자리에
있게 됩니다. 각자 실험해봅시다.
트리거에서도 설명했듯이 타겟은 공격을 맞춘(막아도 포함) 상대를 뜻합니다.
파라미터는 bindtoparent와 같지만 pos에 postype이 추가적으로 있고 상대의 ID를 추가로
쓸수 있습니다. ID를 쓰지않을 경우 아무 상대나 찍습니다.
옵션 파라미터
time = bind_time (정수)
몇프레임동안 묶어놓을 것인가. 기본값은 1입니다.
ID = bind_id (정수)
상대의 ID. 예를들어 200이라고 하면 ID 200의 공격에 닳은 상대를 뜻합니다.
당연하지만, 상대의 movetype이 H가 아니면 타겟에서 벗어납니다.
ID를 안쓰면 아무 타겟이나 찍습니다.(pick any target).
pos = pos_x (실수), pos_y (실수), postype (문자)
pos x, pos y는 위와 같고 postype은 어디를 기준으로 할것이냐 이니다.
postype 을 "Foot"으로 하면 타겟의 x,y축을 중심으로 합니다.(기본값)
postype 을 "Mid" 으로 하면 타겟의 cns 처음부분의 mid.pos가 중심이 됩니다.
postype 을 "Head"로 하면 타겟의 cns처음부분의 head.pos가 중심이 됩니다.
예를들어 pos = 10,10,Head로 하면 타겟의 머리기준으로 10만큼 앞, 10만큼 밑에
위치하게 됩니다.
------------------------------------------------------------
ChangeAnim
------------------------------------------------------------
애니매이션 번호를 바꿉니다.
필수 파라미터
value = anim번호 (정수)
AIR파일에 있는 어느 애니매이션으로 바꿀것인지 번호를 써줍니다.
옵션 파라미터
elem = elem_no (정수)
애니매이션의 몇번째 스프라이트로 바꿀 것인가를 정합니다. 기본값은 1입니다.
만약 그 애니매이션에서 해당 스프라이트가 지정돼있지 않으면 디버그모드의 흰색
글씨가 뜨게됩니다. 예를들어 elem = 2 라고 했는데 AIR의 액션넘버에선
[begin action ??]
200,0,0,0,5
이처럼 1번째 스프라이트만 지정돼있을 경우입니다.
그냥 예는 쓸필요 없어서 응용한 예를 들었습니다.)
[state 200]
type = changeanim
trigger1 = 1
value = anim
elem = animelemno(-1)
이렇게 쓰면 현재 스프라이트를 유지합니다. 제캐릭터 드레이븐의 아이스스톰 맞는
스텟이나 진념 연옥영파의 구체, 쿠로키시의 얼음빔 맞는 스텟 등에 쓰였습니다.
animelemno(-1)은 1프레임 전에 쓰였던 스프라이트라는 뜻이 되는데(09-트리거 문서
참조) 무겐에서 계속 시간이 흐르므로 animelemno(0)으로 쓰면 1프레임 후의 스프라이트로
돼버리므로 animelemno(-1)로 해야 스프라이트를 고정시키는게 됩니다.
하지만 아머모드 같은것엔 쓸수 없는데 이유는 그 스프라이트의 프레임까지 유지하진
않기 때문입니다. 예를들어 지속시간이 6프레임인 스프라이트가 있는데 3프레임
지난상태에서 이 명령을 쓰면 다시 6프레임이 지나야 다음 스프라이트로 넘어갑니다.
------------------------------------------------------------
ChangeAnim2
------------------------------------------------------------
Changeanim과 같게 동작하지만 다르게 동작할 때는 맞아서 상대방의 스텟으로 가있는
경우입니다.(targetstate명령이나 hitdef의 p2stateno 명령 등으로 인해 상대방 스텟으로
가있는 경우, 디버그모드에서 글씨가 노란색으로 바뀝니다)
맞아서 상대스텟에 가있는 경우 그 스텟에서 changeanim이 사용되면 맞은놈은 자기자신의
AIR파일의 애니매이션을 쓰지만, 이 changeanim2이 사용되면 때린놈의 air파일의
애니매이션을 쓰게 됩니다.
SFF파일의 스프라이트 번호는 필수스프라이트들과 몇 개의 기본스프라이트 말고는
캐릭터마다 다 다르므로 changeanim2에 쓰일 스프라이트에는 대부분 모든캐릭터 공통으로
갖고있는 필수스프라이트들만 쓰게 됩니다.
사용예로는 잡기를 만들 때 잡기를 당한상대의 던져지는 모습을 만든다거나 할때 쓰입니다.
------------------------------------------------------------
ChangeState
------------------------------------------------------------
스텟(스텟넘버)을 바꿉니다. 상대스텟에 가있을 때 이 changestate가 사용됐다면 그
상대스텟으로 바뀌므로 상대스텟에 가있을 때 자기자신의 스텟으로 돌아가게 하고 싶다면
selfstate를 사용합니다. 또한 버그를 방지하기위해 자기자신의 스텟의 changestate를
selfstate로 바꿔 쓸수도 있습니다.
필수 파라미터
value = 바꿀스텟번호 (정수)
옵션 파라미터
ctrl = ctrl_flag (정수)
Statedef 처음부분에 ctrl = ? 부분이 없는 스텟으로 갈 경우 이 값의 영향을
받습니다. 0이면 컨트롤불가능, 0이 아니면 가능입니다. 안쓸 경우 ctrl값은 그대로
유지됩니다.
anim = anim_no (정수)
바꿀 애니매이션 값을 정합니다. 역시 statedef 처음부분에 anim = ? 부분이 없는
스텟으로 갈 경우에만 쓸모 있습니다. 안쓸 경우 현재 애니매이션(프레임까지)이
유지됩니다.
예)
[state 200, 1]
type = ChangeState
trigger1 = animtime = 0
value = 0
ctrl = 1
애니매이션이 끝나면 스텟0(스탠딩포즈)으로 가라. 자주쓰이는 명령어입니다.
------------------------------------------------------------
ClearClipboard
------------------------------------------------------------
Displaytoclipboard나 appendtoclipboard 명령으로인해 쓰여진 클립보드(디버그모드 글씨가
나오는부분의 아래쪽)의 글들을 지웁니다.
------------------------------------------------------------
CtrlSet
------------------------------------------------------------
ctrl값을 정합니다.
필수 파라미터
value = ctrl_flag (정수)
0일 경우 컨트롤불가능, 0이 아닐 경우 컨트롤가능입니다.
------------------------------------------------------------
DefenceMulSet
------------------------------------------------------------
원문에는 방어력을 몇배로 할것인지 정한다고 나와있지만, 사실 대미지를 몇배로
받을것인지 정하는 것입니다.
필수 파라미터
value = defense_mul (실수)
대미지를 몇배로 받느냐. 예를들어 2라고 하면 방어력이 절반이 돼서 2배의 대미지
를 받습니다. 어택멀셋과 마찬가지로 정한 값은 다음 defencemulset이 나오기 전까
지 유지되지만 common1.cns의 맞는 스텟들에 이 값을 1로 만드는 부분들이 있습니다.
------------------------------------------------------------
DestroySelf
------------------------------------------------------------
자기자신을 없앱니다. 헬퍼에서 사용되며 플레이어캐릭터에서 쓰면 작동안합니다.
예)
[state 300, 2]
type = destroyself
trigger1 = animtime = 0
애니매이션이 끝나면 스스로 사라진다.
------------------------------------------------------------
DisplayToClipboard
------------------------------------------------------------
무겐에서 디버그모드(ctrl + d)를 켰을 때 밑에 스텟넘버 등의 정보가 나오죠? 그 밑에
추가적으로 글씨를 나오게 할수 있습니다. 모르는 변수들의 변화를 살펴본다거나 할 때
appendtoclipboard와 함께 매우 유용한 명령어입니다. 제캐릭터들에 모두 사용되었습니다.
필수 파라미터
text = "format_string"
format_string must be encased in double-quotes. It is a printf
format string, so if you know about printf, you can skip this
description. The format string contains any text you wish to
display. You can also use \n to generate a line break, and \t to
generate a tab character. To display the value of an arithmetic
expression, you can put a %d (for ints) or a %f (for floats) in
the format string, then specify the expression in the params list.
To display a % character, you must put %% in the format string.
""안에는 글씨들을 쓸수있으며 %d 로 하면 그부분에 해당 값을 정수로나타내며
%f를 쓰면 해당값을 실수로 나타냅니다. 실수포맷을 쓸 때 소숫점 아래 6자리까지
표현되며 '%'란 문자를 쓰고 싶으면 %%로 써야 합니다.
\n을 쓰면 줄을 바꾸는거고 \t를 쓰면 탭캐릭터를 만든다? 줄(-)표현을 가능하게
하는 것 같은데 도스무겐에선 제대로 작동 안하고 윈무겐에선 고쳐졌다고
나와있습니다.
옵션 파라미터
params = exp_1, exp_2, exp_3, exp_4, exp_5
Up to 5 numeric arguments can be specified in the format string.
These should be listed under the params item, in order. The type
of each parameter must match its format specifier. You cannot
specify more or less parameters than are called for in the format
string.
최대 5개의 값을 쓸수 있습니다. 위의 text에 써진 포맷의 개수와 맞춰줘야 하며 왼쪽
부터 차례대로 맞춰집니다.
예)
type = DisplayToClipboard
text="The value of var(17) is %d, which is %f%% of 23.\n\t--Kiwi."
params = var(17):=1,var(17)/.230
이렇게 쓰면 게임내에서 다음과 같이 디버그 글씨 아래에 나온다고 하네요.
The value of var(17) is 1, which is 4.347826% of 23.
--Kiwi.
그러나 해본결과 \t-- 부분은 t--로 나와버리는데 윈무겐에선 고쳐졌다고 윈무겐의
update.txt에 나와있습니다.
예2) type = displaytoclipboard
trigger1 = 1
text = "Pos x = %d vel x = %f"
params = pos x, vel x
ignorehitpause = 1
공격에 맞아 경직됐을때에도 pos x값은 정수로, vel x값은 실수로 표현합니다.
------------------------------------------------------------
EnvColor
------------------------------------------------------------
화면전체에 해당 색을 덮습니다. 공격스파크와 ontop=1 옵션을 쓰는 explod와 스테이지의
포어그라운드 레이어(Foreground layers:화면에서 캐릭터보다 앞쪽에 그려지는 부분)는
제외됩니다.
옵션 파라미터
value = col_r, col_g, col_b (정수)
덮을 색을 R,G,B색상으로 정합니다. 각 값은 0~255 사이 입니다.
기본값은 255,255,255(흰색)입니다.
time = effective_time (정수)
효과가 지속될 프레임. 기본값은 1이며 -1로 할 경우 무한이 됩니다.
under = under_flag (정수)
기본값은 0인데 캐릭터에까지 색을 칠합니다. 이 값을 1로 줄 경우 캐릭터들과
프로젝타일에게도 공격스파크 등과 같이 색을 덮지 않습니다.
예)
[state 200,0]
type = envcolor
trigger1 = time%2 = 0
time = 1
under = 1
2프레임마다 화면전체(공격스파크, ontop=1의explod, 포어그라운드레이어, 캐릭터,
프로젝타일 제외)를 흰색으로 덮습니다.
------------------------------------------------------------
EnvShake
------------------------------------------------------------
화면에 진동을 줍니다. 이것도 캐릭제작시 각자 실험이 필수. 원문보존.
필수 파라미터
time = shake_time (정수)
지속될 프레임. 2이상이어야 합니다. 예를들어 1로 하면 진동이 안되며 2일 경우
1프레임동안 화면이 움직였다가 다음1프레임때 원위치 됩니다.
옵션 파라미터
freq = shake_speed (실수)
shake_speed is a float between 0 (slow shake) to 180 (fast
shake). Defaults to 60.
진동빈도. 값은 0(느린 흔들림)부터 180(빠른 흔들림)까지이며 기본값은 60입니다.
0으로 할 경우 화면이 흔들리지 않습니다. 180이상의 값을 줄 경우 180으로 설정되는
듯.
ampl = shake_amplitude (정수)
The larger the amplitude, the farther the screen shakes up and
down. A negative amplitude means that the screen will shake down
first. Defaults to -4.
어느정도 흔들리느냐 하는건데 값이 클수록 크게 흔들립니다. -값일 경우 화면이
흔들릴 때 밑으로 먼저 움직인다는걸 의미합니다. 기본값은 -4입니다.
-1이나 1이면 흔들리지 않으므로 2이상이나 -2이하의 값을 줘야 합니다.
phase = phase_offset (실수)
Specifies the phase offset for the shaking. The default is 0,
unless the frequency multiplier is 90 or greater. In this case,
the default phase offset is 90.
흔들림의 단계(?상?상태?)값을 줍니다? 기본값은 0이며 freq값이 90이상이면 기본값은
90이 됩니다. 저도 애매하긴 한데...
ampl만으로는 값1당 화면 흔들림의 크기 차이가 큰데 phase값을 주면
freq 값과 관련해서 화면이 얼마나 흔들리는지 자세히 정할수 있는듯합니다.
예를들어 ampl = 4라고 쳤을 때 freq = 180, phase = 90으로 주면 위아래로 좀더
크게 흔들리고 freq = 180, phase = 30이러면 쬐금밖에 안흔들립니다. freq = 180,
phase = 180이면 안흔들리는군요.
정확히는 모르겠습니다. 각자 실험해봅시다.
------------------------------------------------------------
Explod
------------------------------------------------------------
(일단, 모든 Explod와 Projectile과 Helper는 라운드가 끝나면 사라집니다.)
애니매이션을 발생시키는 명령입니다. 효과스프라이트같은걸 표현할 때 씁니다.
애니매이션 발생명령에는 gamemakeanim도 있지만 기능을 포함하게 되었기 때문에
gamemakeanim은 이후버전에서 사라질수도 있다고 합니다.
또 다른 애니매이션발생명령인 projectile과는 차이가 조금 있습니다.
일단 캐릭터크기가 작게나오는 일부스테이지에서 explod는 영향을 받지 않지만,
projectile은 캐릭터 크기에 맞춰서 크기가 조정됩니다.
또 projectile은 pausemovetime, supermovetime 파라미터가 안 듣습니다.(하위폴더의
proj&explod차이 파일 에서도 설명)
필수 파라미터
anim = [F]anim_no (정수)
애니매이션 번호인데 앞에 F자를 붙이면 무겐 DATA폴더의 FIGHT.DEF에 있는
애니매이션을 쓰게 됩니다.
옵션 파라미터
ID = id_no (정수)
아이디를 줍니다. Numexplod 트리거나 Removeexplod명령을 쓸 때 필요합니다.
pos = x_pos, y_pos (정수)
표시할 위치를 정합니다. 기본값은 0,0입니다. 기준은 밑의 postype옵션의 영향을
받습니다. 1은 1픽셀(1도트)을 의미합니다.
postype = string (문자)
표시 기준 위치를 정합니다. 쓸 수 있는 문자는 다음과 같습니다.
- p1
기본값입니다. 현재위치의 축을 중심으로 합니다. p1이라고 해서 꼭
플레이어캐릭터를 기준으로 하는건 아니고 헬퍼에서 쓰면 그 헬퍼의 축을 기준으로
됩니다.
- p2
p2(가까이있는상대, 역시 트리거에 나와있듯 오작동할수있음)를 기준으로 하는데,
위의pos 파라미터까지 p2기준으로 됩니다. 즉 이걸로 할 경우 위의 pos에서 x값이
+가 될수록 p2가 향한 방향의 앞쪽으로 표시되며, 물론 p1과 p2의 방향이 다를
경우 스프라이트도 postype = p1로 할 때와 좌우가 바뀌어서 나옵니다.
- front
현재 향한 방향쪽 화면의 가장자리 위쪽 구석이 기준이 됩니다.
이걸 쓸 경우 pos파라미터의 x값이 +가 될수록 화면 가운데에서 멀어지며 -가
될수록 화면 가운데쪽으로 표시됩니다.
- back
현재 향한 방향의 반대쪽 화면 가장자리 위쪽 구석이 기준이 됩니다.
이걸 쓸 경우 pos파라미터의 x값이 +가 될수록 화면 가운데쪽으로 오며 -가
될수록 화면 가운데쪽에서 멀어집니다.
- left
현재 방향에 상관없이 화면 왼쪽 위 구석이 기준이 됩니다.
이걸 쓸 경우 pos파라미터의 x값이 +가 될수록 화면 오른쪽에 표시됩니다.
- right
현재 방향에 상관없이 화면 오른쪽 위 구석이 기준이 됩니다.
이걸 쓸 경우 pos파라미터의 x값이 +가 될수록 화면 오른쪽에 표시됩니다.
(원문엔 +가 될수록 화면 왼쪽에 나온다고 나와있지만 틀렸습니다. left와 같습니다)
facing = facing (정수)
기본적으로 스프라이트는 기준의 x방향이 +가 되는쪽을 향합니다만 이 값을 -1로 하면
방향을 바꿉니다(스프라이트 좌우가 바뀌어서 표시됩니다). 기본값은 1(그대로)입니다.
vfacing = vfacing (정수)
기본값은 1(안바꿈)이며 -1로 할 경우 스프라이트의 위아래를 뒤집어서 표시합니다.
bindtime = bind_time (정수)
묶어둘 시간을 정합니다. 기준에서 pos값만큼의 위치에 표시하는 것을 얼마동안의
프레임만큼 유지할것이냐 하는겁니다. -1로 할 경우 익스플로드가 사라질 때까지 유지
합니다.
예를들어 스트라이커 바 같이 일정한 곳에 계속 붙어있어야하는 것들에 쓰입니다.
vel = x_vel, y_vel (실수)
속도값을 줄수 있습니다. 이 속도는 익스플로드가 표시되자마자 설정되며 익스플로드의
방향(facing)에 영향을 받습니다. 기본값은 0,0입니다.
accel = x_accel, y_accel (실수)
가속도값입니다. 1프레임마다 속도에 더해집니다. 기본값은 0,0 입니다.
random = rand_x, rand_y (정수)
기준의 pos값에서 표시위치를 랜덤으로 할수 있습니다.
예를들어 random = 40,80으로 하면 기준의 pos값에서 x위치는 -20에서 +19 사이,
y위치는 -40에서 +39 사이에 랜덤으로 표시됩니다.
removetime = rem_time (실수)
얼만큼의 프레임 후에 사라지게 할것인지 정합니다. -1로 하면 사라지지 않고 계속
지속되며 기본값은 -2(애니매이션이 끝나면 사라짐) 입니다.
supermove = bvalue (boolean)
(deprecated -- use supermovetime parameter instead)
Set supermove = 1 to have the explod persist until the end of a
super pause, regardless of the value of removetime. Defaults to 0.
원문을 보면 이거 대신 supermovetime파라미터를 쓰라고 돼있는데 이유는 모르겠군요.
하여튼 기본값은 0이고, 1로 할 경우 superpause명령에 의해 화면이 정지된
상태에서도 익스플로드가 움직입니다.
괄호안의 boolean은 불 논리 연산(=피연산자가 가능(可) 불가능(不) 으로 결과가
나오는)이라고 사전에 나와있는데 해석이 어려워 그냥놔뒀습니다. 09-트리거 파일에도
나왔었죠.
supermovetime = move_time (정수)
superpause된 상태일때 처음부터 얼마만큼의 프레임동안 움직일수 있느냐입니다.
기본값은 0(supermove된 상태에선 애니매이션과 움직임이 정지됨)입니다.
예를들어 이 값을 15로 주면 익스플로드 발생 후 15프레임동안은 superpause가 돼도
움직입니다.
pausemovetime = move_time (정수)
pause 명령에 의해 정지된 상태일때 얼마만큼의 프레임동안 움직일수 있느냐. 역시
기본값은 0.
scale = x_scale [,y_scale] (실수)
스프라이트의 배율입니다. 기본값은 1,1입니다. 예를들어 0.5 로 하면 가로가 절반으로
줄어서 표시됩니다. 늘리는 것은 비추합니다. 무겐의 스프라이트 늘리는 기능은 별로
보기 안좋습니다. 늘린 스프라이트를 쓰고싶으면 그림판 등으로 늘린 스프라이트를
쓰는게 좋습니다.
sprpriority = pr (정수)
스프라이트표시 우선순위를 결정. 이값이 큰 것일수록 화면 앞쪽에, 작을수록 화면
뒤쪽에 표시됩니다. 대부분 캐릭터의 sprpriority값은 -2에서3 사이에서 변하므로
알맞게 줍시다. 기본값은 0입니다.
예를들어 -3으로 주면 익스플로드가 sprpriority 값이 -2 보다 큰 대부분 캐릭터와
다른 익스플로드 뒤쪽에 표시됩니다.
ontop = bvalue (boolean)
기본값은 0이며, 1로 할 경우 sprpriority값과 상관없이 모든 익스플로드와 스테이지의
백그라운드레이어의 앞에 표시됩니다.
shadow = shad_r, shad_g, shad_b (정수)
그림자의 색을 RGB색상으로 정할수 있고 역시 각 값은 0-255 사이입니다.
스테이지마다 설정된대로 따르려면 첫 번째 값을 -1로 하십시오.(shadow = -1)
기본값은 0,0,0(그림자 없음)입니다.
스테이지를 따른다는게 뭔소리냐면 어떤 스테이지는 그림자가 검은색으로 나오고,
어떤스테이지는 캐릭터 색에서 좀 투명하게 나오는게 있는데 그대로 따른다는 겁니다
ownpal = bvalue (boolean)
기본값은 0이며 1로 할 경우 본체색의 영향을 안받습니다.
그러니까 원래 본체가 KOF캐릭터인 쿄의 불공격 같은걸 맞아서 색이 변할 경우
익스플로드까지 그대로 색이 변해버리는데 이 ownpal = 1을 쓰면 색이 안변합니다.
아마 모든 explod에 ownpal = 1을 붙이게 될겁니다.
removeongethit = bvalue (boolean)
기본값은 0이고 1로 할 경우 플레이어가 맞았을 때 익스플로드를 없앱니다. 유용한
파라미터.
ignorehitpause = bvalue (boolean) (윈무겐 추가 파라미터)
If this is 1, the explod will be animated independently of the
player that created it. If set to 0, it will not be updated when
the player is in hitpause. Defaults to 1.
이건 모든 명령어에 있는 파라미터인데 이상하군요. 하여튼 추가됐다고 윈무겐의
update.txt에 나왔습니다.
trans = trans_type (string) (윈무겐 추가 파라미터)
Overrides the explod's animation transparency settings. See the
Trans controller for details. An "alpha" parameter must be specified
if trans_type is "addalpha". If omitted, does nothing.
익스플로드에 알파값에 따른 특수효과를 주는듯
------------------------------------------------------------
ExplodBindTime
------------------------------------------------------------
익스플로드의 Bindtime을 설정합니다. Explod의 bindtime파라미터의 값을 익스플로드를
발생시킨 이후에 임의로 바꿀수 있는 기능입니다. 근데 전 써본적 없습니다.
옵션 파라미터
ID = id_no (정수)
바꿀 익스플로드의 아이디 번호. 기본값은 -1인데 모든 익스플로드를 바꿉니다.
time = binding_time (정수)
몇프레임동안 묶어놓을 것인가. 기본값은 1이고 역시 -1로 하면 무한정 묶어놓습니다.
time = ? 대신 value = ? 로 써도 된다고 원문에 나와있군요.
------------------------------------------------------------
ForceFeedback
------------------------------------------------------------
포스피드백 기능을 지원하는 조이스틱에 진동을 줍니다. 저는 그런 조이스틱이 없어서
실험 못해봤습니다. 고로 원문을 놔뒀습니다.
Creates force feedback for supported force feedback devices.
Currently, the only such devices are Playstation dual shock
controllers using the engine's native support.
Parameters to the ForceFeedback controller may not be specified using
arithmetic expressions. It is an exception in this regard.
Required parameters:
none
Optional parameters:
waveform = wave_type (string)
Valid waveforms are "sine", "square", "sinesquare", and "off". For
the Dual Shock controller, a sine waveform corresponds to the
large rumble motor, and a square waveform corresponds to the
smaller buzzer motor. sinesquare, of course, corresponds to both
motors simultaneously. Use "off" to turn off any force feedback
that is currently executing. waveform defaults to sine.
time = duration (integer constant)
Specifies how long the force feedback should last, in ticks.
Defaults to 60.
진동의 지속시간. 기본값은 60(60프레임)이라는군요
freq = start (integer constant), d1, d2, d3 (float constants)
Force feedback frequency varies between 0 and 255. The formula
used to determine force feedback frequency is
start + d1*t + d2*t**2 + d3*t**3
where t represents the number of ticks elapsed since the force
feedback was initiated. Defaults to
freq = 128,0,0,0
Currently, the frequency parameter is completely ignored.
ampl = start (integer constant), d1, d2, d3 (float constants)
Force feedback amplitude varies between 0 and 255. The formula
used to determine force feedback frequency is
start + d1*t + d2*t**2 + d3*t**3
where t represents the number of ticks elapsed since the force
feedback was initiated. Defaults to
ampl = 128,0,0,0
self = self_flag (boolean constant)
If self is 1, then P1's pad will vibrate. If self is 0, then P2's
pad will vibrate. Defaults to 1.
Example:
See common1.cns.
------------------------------------------------------------
FallEnvShake
------------------------------------------------------------
Hitdef의 fall.envshake 값들을 사용해서 화면에 흔들림을 줍니다.
당연한 얘기지만 Hitdef의 fall.envshake.time 값이 0보다 클경우에만 효과가 있습니다.
이 명령은 Common1.cns 파일내에, 캐릭터가 다운될 때 화면에 진동을 주기위해
쓰였습니다. 다른경우엔 보통 쓸모없다고 합니다. 파라미터는 없습니다.
예)
(common1.cns 파일을 보시오)
------------------------------------------------------------
GameMakeAnim
------------------------------------------------------------
애니매이션을 표현. Explod보다 기능이 적어서 후속 버전에선 사라질수도 있다는군요.
Common1.cns에는 쓰였지만 거의 쓸모없는 명령.
옵션 파라미터
value = anim_no (정수)
애니매이션 번호인데 무조건 DATA폴더의 fightfx.def에서 가져옵니다. 기본값은 0
under = under_flag (정수)
기본값은 0(화면상에서 캐릭터보다 앞쪽에 표시)이며 1로 하면 캐릭터의 뒤쪽에
표시(sprpriority가 캐릭터보다 낮은것처럼)합니다.
pos = x_pos, y_pos (실수)
플레이어의 축을 기준으로 얼마만큼의 위치에 표시할 것인가. 기본값은 0,0
random = rand_amt (정수)
랜덤표시가능. Explod에서는 x랜덤값과 y랜덤값을 따로 줄수 있었는데 이건 값 하나로
줄 수밖에 없습니다. random = 40 이라고 하면 Explod에서 random = 40,40 으로 준
것과 같습니다.
------------------------------------------------------------
Gravity
------------------------------------------------------------
이 명령이 작동하는 동안은 캐릭터cns 처음부분의 yaccel 값만큼 y속도에 더합니다.
예)
[state 100, 0]
trigger1 = 1
type = Gravity
------------------------------------------------------------
Helper
------------------------------------------------------------
헬퍼를 생성합니다. 헬퍼란 음...독립적으로 움직이는 개체라고 할까요. 예를들어서
스트라이커를 호출한다고 하면 스트라이커로 쓸 헬퍼를 만들고 그 헬퍼에다 원작같은
스프라이트와 움직임을 주면 됩니다.
캐릭터에 따라 장풍에 헬퍼를 쓰는 경우도 있는데 그러면 Projectile로 장풍을 만들때와
효과가 다르게 나타납니다만 하위폴더문서중에 헬퍼로 프로젝타일과 동일한 효과를 내는
방법이 나와있으니 참고하시기 바랍니다.
옵션 파라미터
helpertype = type_string
(deprecated -- do not use player-type helpers)
If helpertype = normal, then the helper will be allowed to move
off the edge of the screen. Furthermore, the camera will not move
to try to keep the helper on screen. If helpertype = player, then
the helper will be constrained to the screen and will be followed
by the camera, just like a normal player. Defaults to normal.
If you plan to use a helper for camera manipulation, do not use
a player-type helpers (it is deprecated). Use the ScreenBound
controller with the "movecamera" parameter if necessary.
normal과 player중에 하나를 쓸수 있는데 기본값은 normal이며 player는 쓰지 말라고
나와있네요. player로 할 경우 플레이어캐릭터처럼 인식을 해서 그 헬퍼는 화면 밖으로
나갈수 없고 카메라가 비추는 위치에도 영향을 줍니다. 하지만 player타입을 쓰지말고
카메라를 조작하고싶으면 ScreenBound의 movecamera명령을 쓰라는군요.
그런데 Screenbound명령으로는 화면밖으로 못나가게 할수만 있고 카메라 비추는위치를
조작하진 못하더군요.
name = "name_string"
헬퍼에 이름을 줍니다. 이름은 디버그모드사용시 나옵니다. 안쓰면 "캐릭터이름's
helper"로 정해집니다.
ID = id_no (정수)
아이디를 줍니다. 기본값은 0
pos = x_off, y_off (정수)
헬퍼 발생위치를 정하는 겁니다. Explod랑 같습니다. 기본값 0,0
postype = postype_string
Explod와 마찬가지로 위의 pos파라미터의 기준을 정합니다. Explod와 다른점이 있는데
p1,p2를 제외한 값들의 y축 기준은 스테이지의 바닥이 됩니다.
- p1
Explod와 같습니다. 기본값이며 자신의 축을 기준으로 합니다.
- p2
이것도 Explod와 같습니다. p2를 기준으로 합니다.
- front
x기준은 익스플로드와 같이 현재 향한 방향쪽 화면 가장자리가 되는데
y기준은 스테이지의 바닥(라운드시작시 캐릭터가 있는 곳)이 기준이 됩니다.
익스플로드처럼 pos파라미터의 x값이 +가 될수록 화면 가운데에서 멀어지며 -가
될수록 화면 가운데쪽으로 표시됩니다.
- back
x기준은 현재 향한 방향의 반대쪽 화면 가장자리가 되는데 y기준은 스테이지의
바닥이 됩니다.
익스플로드처럼 pos파라미터의 x값이 +가 될수록 화면 가운데쪽으로 오며 -가
될수록 화면 가운데쪽에서 멀어집니다.
- left
x기준은 현재 방향에 상관없이 화면 왼쪽 구석이 되지만 y기준은 스테이지의 바닥
이 됩니다.
익스플로드처럼 pos파라미터의 x값이 +가 될수록 화면 오른쪽에 표시됩니다.
- right
x기준은 현재 방향에 상관없이 화면 오른쪽 구석이 되지만 y기준은 스테이지의
바닥이 됩니다.
익스플로드처럼 pos파라미터의 x값이 +가 될수록 화면 오른쪽에 표시됩니다.
(원문엔 +가 될수록 화면 왼쪽에 나온다고 나와있지만 역시 틀렸습니다. left와
같습니다)
facing = facing (정수)
익스플로드와 같습니다. 기본값은 1(안바꿈)이며 -1로 하면 생성시 방향을 반대로
바꿉니다.
stateno = start_state (정수)
헬퍼의 시작 스텟을 지정합니다. 기본값은 0.
keyctrl = ctrl_flag (boolean)
기본값은 0이며 1로 할 경우 본체캐릭터의 커맨드를 감지할수 있게 되며 본체캐릭터의
State -1을 물려받습니다.([statedef -1] 부분을 인식할수 있게 되는 듯. [statedef
-1]은 cmd파일에 있죠)
제캐릭터들의 AI발동용 헬퍼에 쓰였습니다. 하위폴더의 AI만들기 파일 참조.
ownpal = pal_flag (boolean)
익스플로드와 같습니다. 기본값은 0이며 1로 할 경우 본체색변화의 영향을 안받습니다.
역시 거의모든 헬퍼에 ownpal = 1을 쓰게 될 것입니다.
(근데 윈무겐 update.txt를 보니 윈무겐에선 ownpal = 0 으로 해도 본체색변화의
영향을 안받게 되었다고 합니다만 도스무겐을 위해 써줍시다)
supermovetime = value (정수)
마찬가지. Superpause시에 움직일 수 있는 시간을 정합니다. 기본값 0.
pausemovetime = move_time (정수)
이하동문. Pause시에 움직일수 있는 시간을 정합니다. 기본값 0.
size.xscale (실수)
size.yscale (실수)
size.ground.back (정수)
size.ground.front (정수)
size.air.back (정수)
size.air.front (정수)
size.height (정수)
size.proj.doscale (정수)
size.head.pos (정수,정수)
size.mid.pos (정수,정수)
size.shadowoffset (정수)
이 파라미터들의 기본값은 본체캐릭터CNS처음부분에 있는 값들입니다. 다른 값을
써주면 생성되는 헬퍼의 해당 속성은 그 값으로 설정됩니다.
------------------------------------------------------------
HitAdd
------------------------------------------------------------
히트횟수를 임의로 더합니다. 무겐은 기본적으로 Hitdef가 상대에게 맞았을 때 히트횟수가
올라가며 그에따라 몇 히트인지 화면에 뜨게 되는데, 그 이외의 경우에 임의로 히트횟수를
조정하고 싶으면 이 명령을 씁니다.
필수 파라미터
value = 더할값 (정수)
더할값을 씁니다. -로 쓰면 히트수를 빼게 됩니다.
------------------------------------------------------------
HitBy
------------------------------------------------------------
무적시간과 속성을 정합니다. Nothitby도 무적시간을 주는명령이지만 Nothitby는 어떤
공격에 맞지 않느냐를 정하는것이고 이 Hitby는 어떤 공격에만 맞을 것이냐를 정합니다.
value설정에따라 작동하는데 Nothitby와 차이점이 좀 있으므로 주의합시다.
또, 무적시간이 많을수록 재미없는 캐릭터가 되니 적당히 줍시다.
필수 파라미터
value = attr_string 또는 value2 = attr_string (둘중에 하나만 써야 함)
무적이 될 Hitdef의 attr문자를 씁니다.
무적시간설정 슬롯은 value와 value2 두가지가 있으며 동시에 작동가능합니다.
예를들어 계속 지속되는 value = ? 속성을 정해줬다고 했을 때 이후의 Nothitby나
Hitby명령에서 value2 = ? 로 속성을 지정해주면 처음 지정해준 value도 유지되면서
value2도 작동합니다. 그러나 두 번째 지정에서도 value를 쓰면 처음 지정했던 value
속성은 사라지고 새로 지정한 value = ? 속성만 작동하는 식입니다.
Hitdef의 attr값인 S(서서),C(앉은),A(공중) 와 N(기본기),S(기술),H(필살기),A(모든) +
A(공격),T(잡기),P(장풍)를 씁니다. 상대의 Hitdef의 attr값을 검사해서 조건이 만족할
경우 공격에 안맞습니다.
옵션 파라미터
time = effective_time (실수)
지속시간을 정합니다. 기본값은 1(1프레임)입니다.
value 값을 주는 예)
value = S, NA
S, NA 형태의 공격(서서 기본공격)에만 맞으며 그 이외의 공격에는 무적이 됩니다.
value = SC, AA
지상의 모든 공격을 맞으며 그 이외의 공격에는 무적. 그러니까 지상잡기나 지상장풍,
공중공격, 공중잡기, 공중장풍 에 당합니다.
value = SCA, SA, HA, AP, AT
기술이나 필살기나 장풍이나 잡기에만 맞으며 기본기에만 무적이 됩니다.
------------------------------------------------------------
HitDef
------------------------------------------------------------
공격판정을 발생시키는 중요한 명령어입니다.
Hitdef명령은 한번 발동이 되면 다시 Hitdef명령을 쓰기 전까진 바뀌지 않으며 다른
스텟으로 넘어갈 경우 사라집니다. Hitdef가 발동된 이후 AIR파일의 애니매이션에
Clsn1박스(공격판정범위박스)가 있는 스프라이트가 나올 경우 공격판정이 생깁니다.
한번 발동한 Hitdef는 한 상대에게 한번만 유효하며 상대가 맞거나 막으면 같은상대에게
2번 맞진 않습니다. 다단히트가 되게 하려면 Hitdef를 여러번 발동시켜야 합니다.
Hitdef는 Projectile명령과 함께 써서 공격판정을 지닌 프로젝타일(주로 장풍)을 만들수도
있습니다.
필수 파라미터
attr = arg1, arg2 (문자)
공격의 속성을 정합니다. Nothitby나 Hitby나 Hitdefattr 같은 것들은 이 값을
검사하므로 생각해서 제대로 써줍시다.
- arg1부분엔 S,C,A 중에 하나가 들어가며 각각 서서,앉아서,공중에서를 뜻한다고 할수
있습니다.
- arg2 엔 2가지 문자의 조합이 들어가는데 첫 번째 문자는 N,S,H 중에 하나가 되며
각각 기본기,기술,필살기를 뜻합니다.
두 번째 문자는 A,T,P중에 하나가 되는데 각각 공격,잡기,프로젝타일(장풍)을 뜻합니
다.
@참고로 반격잡기를 가진 캐릭터가 헬퍼의 공격(스트라이커 같은)을 반격해 버려서 헬퍼가
본체캐릭터와 같은 모습이 되는 버그가 발생할수도 있는데 그걸 방지하기 위해 헬퍼에는
공격타입을 A가 아닌 P로 해줍시다. 왜냐하면 P형태의 공격은 반격을 할수 없게 돼있는
경우가 많기 때문입니다.
또한 반격잡기를 만들 땐 M.M.R 씨의 KOF카스미처럼 헬퍼의 공격은 반격하지 못하게
버그가 안생기도록 자체적으로 만들 수도 있습니다.
hitflag = hit_flags (문자)
공격이 들어갈수있는 상대의 상태. 필요한 문자들를 붙여서 씁니다.
H(서있을 때), L(앉아있을 때), A(공중에 있을 때), M(지상:HL과 같음),
F(넘어지고있는상태:공격에맞아서 다운되기전 날아가 떨어지는 중인 상태),
D(넘어져 있는 상태나 바운드(바닥에 한번 부딪혔다 튕기는)중인 상태),
P(프로젝타일에도 맞음) 중에 조합해서 쓸수 있으며 맨뒤에 "+"가 붙으면 상대가
movetype=H(맞고있는상태)일때만 공격이 들어가며 "-"가 붙으면 상대가
movetype !=H(맞고있지않은 상태)일때만 공격이 들어갑니다.
"+"와 "-"는 같이 쓸수 없습니다.
기본값은 "MAF"(지상,공중,다운되는중인 상대를 맞출수 있음)입니다.
guardflag = hit_flags (문자)
상대가 막을수 있는 상태. H,L,A,M을 쓸수있으며 Hitflag와 뜻은 같습니다.
이 값을 안쓰면 가드불능이 됩니다.
필수 파라미터
affectteam = team_type (문자)
B를 쓸 경우 우리편과 적 모두에게 공격이 맞고, F를 쓸 경우 우리편에게만, E를 쓸
경우 적에게만 맞습니다. 기본값은 E입니다.
animtype = anim_type (문자)
맞은 상대가 어떤 애니매이션으로 갈것인지입니다. Light, Medium, Hard, Back, Up,
Diagup 중에 쓸수있으며 앞글자인 L,M,H,B,U,D만 맞으면 됩니다.
예를 들자면 L,M,H는 약중강 공격에 쓰이며 그외에 U는 수직으로 띄우는 공격, D는
돌면서 날아가는(KOF K의 미닛스파이크:앞으로 날으며 발로 차는기술 같은)기술에
쓰입니다(원문에 D는 떨어질 때 머리부터 떨어지는 공격이라고 나와있군요).
B를 쓰면 지상에서 맞으면 H에 맞은것과 같은 애니매이션이 되지만, 공중에서 맞으면
보통 나가떨어지는 애니매이션이 나옵니다(각자 실험해봅시다)
(DOCS폴더의 AIR.TXT참조하거나 다른 캐릭터들을 봅시다.)
L,M,H에 맞는 애니매이션은 5000-5027까지 필수애니매이션인데 B를 공중에서 맞으면
5050번 애니매이션이 나오는군요.
D에 맞으면 5052번부터 시작해서 날아가서 떨어지기 시작할 때 5062, 땅에 닳음과
동시에 5102, 바운드되면서 5162, 바운드된후 떨어지면서 5172, 5112, 일어나면서
5122 이런식으로 변합니다. 해당 애니매이션이 없으면 맨뒤숫자를 0으로 한
애니매이션이 나옵니다.(잘 모르겠으면 게임내의 디버그모드를 이용해서 봅시다)
U를 맞을 경우 5051번부터 5121까지 나오지만 없으면 5050번부터 나옵니다.
이 애니매이션은 공통스텟(Common1.cns에 있는)에 따라 나오는것이기 때문에
해당스텟을 임의로 캐릭터가 쓰면 바꿔질수도 있습니다.
기본값은 Light 입니다.
air.animtype = anim_type (문자)
위의 animtype과 같지만 공중에서 맞았을 때 이 값을 쓰게 됩니다. 이 줄을 안쓴다면
위의 animtype과 같게 정해집니다.
fall.animtype = anim_type (문자)
위의 animtype과 같지만 다운된 상태에서 맞을 때 이 값을 쓰게 됩니다. 이 줄을 안쓴
다면 air.animtype 값과 같게 설정됩니다.
priority = hit_prior (정수), hit_type (문자)
공격이 서로 동시에 닳았을 때, 우선순위를 정합니다.
hit_prior 값은 1-7 사이이고 기본값은 4입니다.
hit_type 은 Hit, Miss, Dodge 중에 하나를 쓸 수 있으며 기본값은 Hit 입니다.
양쪽의 공격이 동시에 맞은 경우에.
먼저 양쪽의 Hitdef의 hit_prior 값이 다를 경우, 낮은쪽이 얻어맞게 됩니다.
양쪽의 hit_prior 값이 같은 경우 hit_type 에 따라 어떻게 될것인지 결정됩니다.
Hit vs Hit: 양쪽다 맞는다.
Hit vs Miss: Hit 는 맞추고, Miss 는 빗나간다
Hit vs Dodge: 히트안됨
Dodge vs Dodge: 히트안됨
Dodge vs Miss: 히트안됨
Miss vs Miss: 히트안됨
히트가 안될 경우 Hitdef의 공격판정은 지속됩니다.
damage = hit_damage, guard_damage (정수)
각각 히트시 대미지와 가드시 대미지값을 줍니다. 기본값은 0,0 입니다.
pausetime = p1_pausetime, p2_shaketime (정수)
공격이 맞았을 때 경직시간을 정합니다. 각각 공격한쪽의 경직프레임, 맞은쪽
경직프레임입니다. 기본값은 0,0 입니다.
guard.pausetime = p1_pausetime, p2_shaketime (정수)
공격이 가드당했을 때 경직시간입니다. 안쓰면 pausetime 값과 같게 정해집니다.
sparkno = action_no (정수)
히트시 발생할 스파크를 정합니다. 애니매이션 번호를 쓰면 됩니다만 그냥 숫자로 쓸
경우엔 DATA폴더의 FIGHTFX.AIR파일의 것을 쓰게 되며 앞에 'S'자를 붙이면 캐릭터의
AIR파일의 것을 씁니다. 안쓰면 cns처음부분에 설정된 값대로 나오며 안나오게
하고싶으면 sparkno = -1 로 쓰면 됩니다.
guard.sparkno = action_no (정수)
공격이 가드당했을 때 발생할 스파크. sparkno와 같음.
sparkxy = spark_x, spark_y (int)
스파크를 발생시킬 x,y 위치를 정합니다. x위치는 맞은상대(P2)가 기준이 되는데 +가
될 경우 P2의 앞쪽으로 나오며 -가 될 경우 뒤로 가게 됩니다.
y위치는 p1을 기준으로 합니다. 기본값은 0,0입니다.
여기서, 도스무겐과 윈무겐의 차이점이 있는데
도스무겐에서는 이것의 x 축이 상대방의 x축 중심을 기준으로 되지만, 윈무겐에서는
이것의 x축이 상대방의 x축에서 상대방의 CNS파일의 [DATA]란의 ground.front = ?
와 air.front = ? 의 값만큼 앞을 기준으로 되버립니다.
그래서 윈무겐에서의 스파크위치는 지상에서 맞을땐 상대의 ground.front 값만큼
상대방의 앞에 발생되게 되고 공중에선 상대의air.front 값만큼 앞에 발생되게 됩니다.
(하위폴더의 도스무겐윈무겐최적화.txt 파일에도 나와있습니다.)
hitsound = snd_grp, snd_item (정수)
히트하자마자 나게할소리를 정합니다. 그냥 숫자로 쓰면 data폴더의 common.snd와
fight.snd에서 가져오며 캐릭터의SND파일에서 쓰고싶으면 앞에 S 자를 붙이면 됩니다.
예를들어 5,0 - 약하게 맞는 소리, 5,4 - 매우강하게맞는 소리 이고 s1,0 으로 하면
캐릭터SND파일의 1,0 사운드를 내게 됩니다. 원문엔 안쓸 경우 cns처음부분에
따른다고 하는데 cns처음부분엔 히트사운드 설정부분이 안나와있습니다.
(Defaults to the value set in the player variables if omitted.)
guardsound = snd_grp, snd_item (정수)
위의 hitsound 와 같지만 가드되자마자 나는 소리입니다.
ground.type = attack_type (문자)
지상에서 맞췄을때의 타입을 정합니다(맞은놈이 어떤 애니매이션이 되느냐).
High는 상단, Low는 하단, Trip은 넘어지는것(주로 앉아강발에 사용)이고
None으로 하면 그냥 히트스파크만 발생하고 맞은 상대에게 아무 영향을 안주며
movehit값도 안변합니다. 가드시킬 경우만 moveguarded값과 movecontact값이
증가합니다.
High에 맞으면 머리가 뒤로 젖혀지는 애니매이션이 나오고, Low로 맞으면 고개가 숙여
지는 애니매이션이 나오며 Trip에 맞으면 Animtype값과 상관없이 다운이 되며 5070번
-> 넘어지는순간 5170번 애니매이션이 나옵니다.(Trip이 원문에는 sweep
attack(쓸어내리는 공격)이라고 나왔습니다) Trip을 쓰더라도 저글포인트를 체크하게 하
려면 밑에 설명된 fall = 1을 써줘야 합니다.
위에도 나와있지만 Animtype = Back 으로 했을 경우 지상에서 맞으면 이 값이 High나
Low 일 경우 Animtype = Hard 에 맞은것과 같게 나옵니다.
기본값은 High 입니다.
air.type = attack_type (문자)
위의 ground.type 과 같지만 공중에서 맞췄을 경우의 타입입니다. 안쓰면 ground.type
과 같은 값으로 설정됩니다.
ground.slidetime = slide_time (정수)
맞아서 밀려나는 시간.
공격에 맞은쪽이 경직시간이 끝난 후 밑의 hittime 만큼 맞는 동작을 취하게 되는데
그중에 밀려나는 시간이 slidetime입니다. 그러니까 맞아서 slidetime만큼 밀려나는데,
맞는 동작에서 전체 시간이 hittime만큼 지나면 맞는 동작에서 회복됩니다.
이 값을 설정할땐 원작의 경직시간이 몇프레임인지 보고 값을 알맞게 줍시다.
기본값은 0입니다.
guard.slidetime = slide_time (정수)
위의 ground.slidetime 과 같지만 가드한 상대가 밀려나는시간.
안쓰면 밑에나오는 guard.hittime 값과 같게 설정됩니다.
ground.hittime = hit_time (정수)
히트경직시간이 지난 후 맞은 상대가 맞는 동작을 취하는 시간.
여기서 윈무겐과 도스무겐 차이에 의한 윈무겐버그가 있는데 이유는 윈무겐의
공통스텟중 스텟 151, 153, 155 가 수정되어서 가드시 회복시간이 도스무겐과 다르게
되버린 것입니다. 이것도 하위폴더의 도스무겐윈무겐최적화 파일에 설명되어 있습니다.
윈무겐일 경우 정확히 설정된 프레임만큼이 되지만, 도스무겐일 경우 훨씬 적은 프레임
만큼 되므로 역시 실험해보고 원작과 맞게 줍시다. 하위폴더의 도스무겐윈무겐최적화
파일을 봅시다. 기본값은 0
guard.hittime = hit_time (정수)
ground.hittime과 같지만 가드한 상대가 가드동작을 취하는 시간입니다.
마찬가지로 도스무겐과 윈무겐차이가 있습니다.
안쓸 경우 ground.hittime 값과 같게 설정됩니다
air.hittime = hit_time (정수)
공중에서 맞았을 때 다운시키지 않는 공격일 경우만 유효합니다(air.fall = 0일 경우).
이 경우 공중에서 맞은 상대는 얼만큼 날아가다가 돌아서 착지하게 되는데 그 '돌아서
착지하는 스텟(5040)'으로 가기 전까지의 시간입니다. 그러나 자체적으로 5040스텟을
변경한 캐릭터의 경우 제대로 작동하지 않는 경우도 있습니다.
기본값은 20입니다.
guard.ctrltime = ctrl_time (정수)
가드한 상대가 움직일수 있게 되기까지의 시간입니다. guard.slidetime값보다 작아야
의미가 있습니다.
안쓸 경우 guard.slidetime값과 같게 정해집니다.
guard.dist = x_dist (정수)
상대가 가드포즈를 취하게되는 거리. 안쓰면 CNS처음부분의 attack.dist 값과
같습니다.
yaccel = accel (정수)
맞은 상대의 y가속도입니다.
원문에는 기본값이 0이라고 나와있지만, 안쓸 경우 0.35가 되는군요.
ground.velocity = x_velocity, y_velocity (실수)
지상에서 맞은상대의 밀려나는 속도를 정합니다. 이 값만큼 맞은 상대의 처음 속도가
설정되며 그후 상대의 cns처음부분의 friction(마찰력)에 따라 속도가 줄어듭니다.
y값이 -가 되면 공중에 뜨게 됩니다. 기본값은 0,0
만약 상대가 뒤로 넘어갔을땐 x값을 반대로 주고싶으면 예를들어
ground.velocity = -10*ifelse(p2dist x<0,-1,1) 이런식으로 쓸수도 있습니다.
guard.velocity = x_velocity (실수)
가드한 상대의 밀려나는 속도. 안쓰면 ground.velocity 값과 같게 설정됩니다.
하지만 전체 밀려나는 거리는 ground.velocity와 차이가 있으므로 실험해서 값을 다르
게 주는게 일반적입니다.
air.velocity = x_velocity, y_velocity (실수)
공중에서 맞은 상대의 속도. 기본값 0,0
airguard.velocity = x_velocity, y_velocity (실수)
공중에서 가드한 상대의 속도.
안쓰면 air.velocity 값에서 따오는데 각각 x*1.5 , y/2를 한 값으로 설정됩니다.
ground.cornerpush.veloff = x_velocity (실수)
지상에 있는 상대에게 구석에서 공격을 맞췄을 때 공격한쪽이 뒤로 밀려나는
속도(거리)입니다. 이 값은 공격한 캐릭터의 friction 값의 영향을 받지 않기 때문에
속도라고 하기보다는 거리라고 하는게 맞을거 같습니다.
안쓸 경우에 attr 값의 영향을 받는데 arg1값(처음문자)이 A일 경우 0이 되며, 그렇지않
을 경우 1.3*guard.velocity 값이 됩니다.
air.cornerpush.veloff = x_velocity (실수)
공중에 있는 상대에게 구석에서 공격을 맞췄을 때 공격한쪽이 밀려나는 거리.
안쓰면 ground.cornerpush.veloff 값과 같게 설정됩니다.
down.cornerpush.veloff = x_velocity (실수)
다운된 상대에게 구석에서 공격을 맞췄을 때 공격한쪽이 밀려나는 거리.
안쓸 경우 마찬가지로 ground.cornerpush.veloff 값과 같게 설정됩니다.
guard.cornerpush.veloff = x_velocity (실수)
지상에 있는 상대에게 구석에서 공격을 가드시켰을 때 공격한쪽이 밀려나는 거리.
안쓸 경우 마찬가지로 ground.cornerpush.veloff 값과 같게 설정됩니다.
airguard.cornerpush.veloff = x_velocity (실수)
공중에 있는 상대에게 구석에서 공격을 가드시켰을 때 공격한쪽이 밀려나는 거리.
안쓸 경우 위의 guard.cornerpush.veloff 값과 같게 설정됩니다.
airguard.ctrltime = ctrl_time (정수)
공중에서 막은 상대가 공중에서 움직일수 있게 되기까지의 시간. 상대가 지상으로
내려오면 상대는 무조건 움직일수 있게 됩니다.
안쓰면 guard.ctrltime 과 같게 설정됩니다.
air.juggle = juggle_points (정수)
저글포인트인데 이 값은 프로젝타일에 쓸 경우에만 작동합니다. 일반 Hitdef의 경우
[Statedef ?]부분에 있는 juggle값을 따릅니다. 기본값은 0
mindist = x_pos, y_pos (정수)
maxdist = x_pos, y_pos (정수)
공격에 맞은 상대의 위치를 정하는 것인데 이 범위 밖에 있을 경우 강제로 이 범위
안으로 p2를 위치시킵니다. 예를들어 mindist = 100 인데 p2가 딱 붙어있으면 p2를
x축 상으로 100픽셀 만큼 떼어놓고 maxdist = 150인데 p2가 x축 상으로 150픽셀이상
떨어져있으면 x축상 150픽셀떨어진곳에 위치시킵니다. 공격이 히트하자마자 작동하며
가드당하면 작동안합니다.
이 두줄을 안쓰면 p2의 위치를 변화시키지 않습니다.
snap = x_pos, y_pos (정수)
공격에 맞은 상대를 강제로 정해진 위치에 있게 합니다. Targetbind명령과 같지만
이것은 공격이 히트하자마자 작동합니다.
이줄을 안쓰면 p2의 위치를 변화시키지 않습니다.
이걸 쓸 때 snap = 0,0-ifelse((enemynear,const(size.head.pos.y))>-51,30,0)
이런식으로 자세히 검사하도록 했더니 메모리를 많이 먹어서 잘 튕기는 현상이
발생하더군요. 따라서 이걸 쓸땐 그냥 값만 정해줍시다.
sprpriority = drawing_priority (정수)
스프라이트표시 우선순위인 sprpriority 값을 정합니다. 공격이 히트하거나
가드당하자마자 작동하며 화면상에서 p1을 p2의 앞쪽에 표시할것인가 뒤쪽에 표시할
것인가를 정합니다.
일단 공격에 닳은 p2의 sprpriority값은 0으로 설정되며, 기본값은 1입니다.
윈무겐에선 이 파라미터가 p1sprpriority 로 바뀌었고 p2sprpriority(p2의 sprpriority값을
설정)파라미터가 새로 생겼습니다. 윈무겐을 위해 p1sprpriority를 써놔도 도스무겐에서
안튕깁니다.
p1facing = facing (정수)
-1로 설정하면 공격이 히트하면 p1이 방향을 뒤로 돕니다. 던지기같은걸 만들 때
쓸모있습니다.
이 경우, 방향은 pausetime만큼 경직된 후에 바뀌지만 snap이나 ground.velocity 같은
값들의 x값들은 부호가 바뀝니다. 예를들어 ground.velocity = -10 인공격에 맞은 상대
는 뒤로 밀려나는게 아닌 앞으로 밀려옵니다.
안쓰면 방향을 안바꿉니다.
p1getp2facing = facing (정수)
1로 하면 p1은 p2와 같은 방향을 보게되며 -1로 하면 p2쪽을 향하게 됩니다.
기본값은 0(안바뀜)인데 0이 아닐 경우 위의 p1facing 값이 무시되며 작동합니다.
마찬가지로 방향이 바뀐다면 snap같은 x값들의 부호가 반대로 작동합니다.
p2facing = facing (정수)
p2의 방향을 바꿉니다. 1로 하면 p1쪽을 향하게 되고 -1로 하면 p1과 같은 방향을
보게 됩니다. 이값에의해 p2의 방향이 바뀌더라도 snap같은 파라미터들의 x부호는
안바뀝니다.
안쓰면 그대로.
p1stateno = state_no (정수)
공격히트시 p1이 이동할 스텟을 정할수 있습니다. 마찬가지로 pausetime만큼 경직된
후에 이동합니다. 잡기같은걸 만들 때 쓰입니다.
주의할점은 이 p1stateno파라미터를 쓰면 Hitoverride를 사용하는 캐릭터(아포칼립스나
빅우먼 같은)들을 때릴수가 없으니 적당히 잡기같은데만 쓰도록 합시다.
그리고 밑에 p2stateno와 무겐엔진상 어쩔수 없는 버그가 있는데, 하위폴더의 '알기어
려운 무겐버그' 파일을 참조하시기 바랍니다.
p2stateno = state_no (정수)
공격에 맞은 상대가 이동할 스텟을 정합니다. p2getp1state = 1 로 설정된 경우
위와마찬가지로 아포칼립스같은 Hitoverride명령을 사용중인 놈들에겐 공격이 안맞습니
다.
그리고 이 파라미터를 쓴다고 했을 때(p2getp1state = 1 이고 p1stateno를 쓰는 경우)
2vs2대전 같은데서 이 공격이 상대에게 맞음과 동시에 또다른 상대에게 공격을 받으면,
상대만 p2stateno의 스텟으로 이동되므로 알아서 버그방지를 합시다.(해당 스텟에
공격한쪽의 스텟을 검사해서 다른스텟이면 자기는 스텟0으로 이동되게 한다든지..)
p2getp1state = value (정수)
공격에 맞은상대(p2)가 공격한쪽(p1)의 스텟으로 갈것인지 정합니다.
위의 p2stateno 값이 설정된 경우 기본값은 1이 됩니다.
이 값을 0으로 할 경우 맞은상대는 자기자신의 스텟으로 갑니다. 이 경우 당연히
공통스텟번호만 써야겠죠. p2getp1state = 0일경우엔 p2stateno파라미터를 쓰더라도
아포칼립스같은 캐릭터를 때릴수 있습니다.
forcestand = value (정수)
1로 하면 공격에 맞은상대가 앉아있는 상태일 경우 강제로 서있는 상태로 합니다.
보통 기본값은 0이지만, ground.velocity 의 y값이 0이 아닐 경우 기본값은 1입니다.
상대가 앉아있는 상태에서 다운시키는 공격을 맞췄을 때 이 값에따른 차이는
1일경우엔 스텟 5000(서서맞는스텟)으로 가지만 0일 경우 5010(앉아서맞는스텟)으로
가게됩니다.
fall = value (정수)
지상에서 공격을 맞췄을 때 넘어뜨릴것인지 아닌지 정합니다. 1로하면 넘어뜨리는 것이
고 안쓰거나 0이면 안넘어뜨립니다.
fall.xvelocity = x_velocity (실수)
다운되는 상대가 땅에 한번 닳고 튕길때(바운드될때)의 x속도입니다.
안쓰면 속도를 안바꿉니다.
fall.yvelocity = y_velocity (실수)
다운되는 상대가 땅에 한번 닳고 튕길때(바운드될때)의 y속도입니다.
기본값은 -4.5 입니다.
fall.recover = value (정수)
다운되는 상대가 낙법을 할수 있는가를 정합니다. 0으로 하면 낙법불가능이고
1(기본값)은 낙법가능입니다.
fall.recovertime = recover_time (정수)
공격에 맞은후 낙법이 가능하게 되기까지의 시간입니다. 기본값은 4이며 히트경직시간
은 포함되지 않는다고 원문에 나와있군요.
무겐에선 KOF처럼 지상낙법만 가능하게 하지는 못하고 이렇게 시간을 줄 수밖에
없습니다. 낙법을 할땐 공중에 있으면 공중낙법이, 지상과 근접해있으면 지상낙법이
됩니다.
fall.damage = damage_amt (정수)
맞은상대가 다운될 때 입을 대미지를 줄수 있습니다. 기본값은 0
air.fall = value (정수)
공중에서 맞은 상대가 다운될지 안될지를 정합니다. 1이면 다운되며 안쓰면 fall 값과
같게 정해집니다. fall = 1일 경우 이값을 0으로 해도 다운이 됩니다.
down.velocity = x_velocity, y_velocity (실수)
다운된 상태에서 공격을 맞은 상대의 속도. 안쓰면 air.velocity 값과 같게 됩니다.
down.hittime = hit_time (정수)
다운된 상태에서 공격을 맞은 상대가 맞는동작을 취할 시간. down.velocity의 y값이
0이 아닐 경우 무시됩니다. 원문에 기본값이 안나와있지만 20이네요.
이건 윈무겐이랑 도스무겐이랑 같게 동작합니다.
이 다운공격도 저글체크를 하기 때문에 저글수치가 한계치를 넘지 않아야 공격이
히트합니다.
down.bounce = value (정수)
다운된 상태의 적을 down.velocity 의 y값이 0이 아닌 공격으로 맞췄을 때. 맞은 상대
가 공중에 떠서 바닥에 떨어졌을때 바운드 될것이냐를 정합니다. 1이면 바운드되는거고
0(기본값)이면 안됩니다.
id = id_number (정수)
공격에 닳은 상대에게 아이디값을 줍니다. numtarget(ID)같은 트리거를 쓸 때
유용합니다. 기본값은 0(아이디 없음) 이며 상대의 movetype 이 H에서 벗어나면
아이디값도 사라집니다.
chainID = id_number (정수)
어떤 아이디의 타겟에만 공격이 맞게 할것이냐를 정합니다.
예를들어 chainid = 100이라고 하면 ID = 100인 Hitdef에 마지막으로 맞은 타겟한테만
공격이 닳습니다.
기본값은 -1(아무 상대한테 닳음)
nochainID = nochain_1, nochain_2 (정수)
공격이 안맞게할 타겟아이디를 줍니다. 2개를 줄수 있는데 한 개만 써도 되며 기본값은
-1입니다.
예를들어 nochainID = 100 이라고 하면 아이디100인 타겟한텐 공격이 안맞습니다.
그런데 문제가 좀 있는데 아무 공격이나 상대에게 가드시키고 나서는 이 nochainID파
라미터를 쓰는 공격은 상대에게 닳지 않게 됩니다. 아무 공격이나 맞춘 후에야 공격이
닳습니다. 이런 문제가 있으므로 nochainID는 실험해보고 각자 알아서 씁시다.
This parameter has no effect if P2 is hit by a third party between P1's previous
HitDef and the current HitDef.
이건 윈무겐에서 추가적으로 붙은 설명인데 이런게 추가된듯
hitonce = hitonce_flag (boolean)
값을 1로 할 경우 한명의 적한테만 공격이 맞으며 0이면 두명이상에게 다 맞습니다.
기본값은 0이지만, attr값이 T(던지기)타입인 경우의 기본값은 1이 됩니다.
kill = kill_flag (정수)
기본값은 1이며 0으로 하면 상대의 체력을 1밑으로 떨어뜨리지 않습니다.(상대가
Ko안됩니다)
guard.kill = gkill_flag (정수)
Kill과 같지만 공격을 가드한 상대의 체력을 1밑으로 떨어뜨릴 것인지 정합니다.
fall.kill = fkill_flag (정수)
kill과 같지만 상대가 다운된 상태에서 대미지를 받을 때 ko될것이냐(또는
fall.damage가 들어갈 때 ko될것이냐)를 정합니다. 기본값 1
numhits = hit_count (정수)
공격이 맞았을 때 히트수를 얼만큼 더하느냐 하는겁니다. 기본값 1
getpower = p1power, p1gpower (정수)
공격이 닳았을 때 p1이 얻게되는 파워게이지양입니다. 각각 히트시, 가드시 값입니다.
안쓸 경우 p1power는 대미지를 Default.Attack.LifeToPowerMul(data폴더의 mugen.cfg
에 있음)과 곱한 값만큼 더해지며 p1gpower는 p1power/2 값만큼 정해집니다.
givepower = p2power, p2gpower (정수)
공격이 닳았을 때 맞은쪽이 얻게되는 파워게이지양입니다. 각각 히트시, 가드시 값.
안쓸 경우 p2power는 대미지를 Default.GetHit.LifeToPowerMul(data폴더의 mugen.cfg
에 있음)과 곱한 값만큼 더해지며 p2gpower는 p2power/2 값만큼 정해집니다.
palfx.time = palfx_time (정수)
palfx.mul = r1, g1, b1 (정수)
palfx.add = r2, g2, b2 (정수)
palfx.sinadd = r3, g3, b3 (정수)
palfx.invertall = bvalue (boolean)
palfx.color = value (정수)
팔렛효과(색변화)를 p2에게 줍니다. PalFX 명령의 것과 같습니다.
envshake.time = envshake_time (정수)
envshake.freq = envshake_freq (실수)
envshake.ampl = envshake_ampl (정수)
envshake.phase = envshake_phase (실수)
공격이 히트했을 때 화면진동을 줍니다. Envshake명령과 같습니다.
fall.envshake.time = envshake_time (정수)
fall.envshake.freq = envshake_freq (실수)
fall.envshake.ampl = envshake_ampl (정수)
fall.envshake.phase = envshake_phase (실수)
envshake.* 파라미터와 같지만 p2가 다운되는 순간 화면진동을 줍니다. 공통스텟에서
Fallenvshake명령이 사용된 부분을 캐릭터가 자체적으로 없앤 경우 작동안합니다.
attack.width = z1, z2 (정수)
Not currently used.
원문설명도 이게 다입니다. 사용되지 않는다. 실험해봐도 뭐하는건지 모르겠군요.
------------------------------------------------------------
HitFallDamage
------------------------------------------------------------
Hitdef의 fall.damage 값만큼 대미지를 입습니다. 공통스텟의 5100, 5110 에 있는데
캐릭터가 임의로 이명령을 없애면 fall.damage를 안받습니다.
파라미터는 없습니다.
------------------------------------------------------------
HitFallSet
------------------------------------------------------------
맞는 상태일 때 넘어지는 변수값?들을 조정합니다. 자기자신의 값을 조정하는 것이므로
상대에게 쓰려면 targetstate 같은걸로 상대스텟을 바꾼 후 그 스텟내에 이 명령을 씁니다.
옵션 파라미터
value = fallset_flag (정수)
-1(기본값)인 경우 변화 없고 0으로 하면 넘어지지 않게, 1로 하면 넘저지게 합니다.
사용예로는 fall = 1인 공격에 맞고 다운되려는 상대에게 공격을 했을 때, 상대를
넘어지지 않게 할 필요가 있을 때 쓸수 있습니다.
xvel = x_velocity (실수)
yvel = y_velocity (실수)
If specified, sets the player's fall.xvel and fall.yvel
parameters, respectively. See HitDef for a description of these
parameters.
fall.xvel 값과 fall.yvel 값을 바꾼다고 하는데 값을 줘도 무슨 변화가 없네요.
------------------------------------------------------------
HitFallVel
------------------------------------------------------------
플레이어가 맞거나 다운되는 스텟에서, 속도를 fall.xvel 과 fall.yvel 값으로 정합니다.
Hitdef에 있는 값으로 되는데 위의 Hitfallset 명령으로 설정된값으로는 되지 않는군요.
공통스텟에 있는 명령어입니다.
------------------------------------------------------------
HitOverride
------------------------------------------------------------
정해진 타입의 공격에 맞았을 때 특정스텟으로 가게합니다. 슬롯이 8개 있으므로 동시에
8개의 hitoverride가 작동할수 있다고 원문에 나왔군요.
스트라이커같은 헬퍼는 공격당했을 때 특수한 스텟으로 가야하기 때문에 이 명령을 씁니다.
이 명령을 사용중일때는 p2stateno = ? 와 p2getp1state = 1 파라미터를 쓰는 Hitdef에는
맞지 않게됩니다. 프로젝타일에는 p2stateno = ? 가 쓰였어도 맞습니다.
필수 파라미터
attr = attr_string
attr값. Hitdef의 attr값을 줍니다. 맞은 공격의 attr이 이것에 포함될 경우 정해진 스텟
으로 갑니다.
옵션 파라미터
slot = slot_no (정수)
슬롯번호. 0-7 중에 줄수있으며 기본값 0
stateno = value (정수)
정해진 attr의 공격에 맞을 경우 이동할 스텟을 정합니다. 기본값 -1(공통스텟의
맞는스텟으로 감)
(상대스텟으로 가있는 경우라도 무조건 자기자신의 스텟으로 갑니다.)
time = effective_time (정수)
작동시간. 기본값은 1(1프레임)이며 -1로 하면 계속 활성화돼있게 됩니다.
forceair = value (boolean)
이 값을 1로 할 경우 statetype에 상관없이 공격에 맞았을 때 공중에서 맞은것처럼
됩니다. 기본값 0
예)
[state 100,0]
type = hitoverride
trigger1 = 1
attr = SCA, AA, AP, AT
stateno = 8333
아무 공격에 맞으면 자기자신의 스텟 8333으로 간다.
------------------------------------------------------------
HitVelSet
------------------------------------------------------------
공격에 맞았을 때 속도를 gethit속도(Hitdef의 해당 속도)로 설정합니다. 공통스텟에
있습니다.
옵션 파라미터
x = x_flag (정수)
y = y_flag (정수)
값이 0이 아닐 경우 gethit속도대로 설정합니다.
------------------------------------------------------------
LifeAdd
------------------------------------------------------------
체력값을 더하거나 뺍니다. 대상의 방어력에만 영향을 받습니다.
필수 파라미터
value = add_amt (정수)
더할 값입니다. -가 되면 뺍니다.
옵션 파라미터
kill = kill_flag (정수)
기본값은 1이며 0일 경우 상대체력을 1밑으로 떨어뜨리지 않습니다.(Hitdef의 것과
동일)
absolute = abs_flag (정수)
기본값은 0이며 1로 할 경우 대상의 방어력을 무시하고 무조건 정해진 값대로
계산합니다.
------------------------------------------------------------
LifeSet
------------------------------------------------------------
체력을 일정 값으로 정합니다.
필수 파라미터
value = life_amt (정수)
정할 값을 씁니다.
------------------------------------------------------------
MakeDust
------------------------------------------------------------
먼지효과를 냅니다. 스프라이트는 data폴더의 fightfx.air 의 애니매이션 120번을 씁니다.
먼지는 동시에 2개를 낼수 있습니다.
옵션 파라미터
pos = x_pos, y_pos (정수)
플레이어 기준으로 먼지를 발생시킬 위치 첫 번째. 기본값 0,0
pos2 = x_pos, y_pos (실수)
먼지를 발생시킬 위치 두 번째. 안쓰면 안생깁니다. pos는 정수로만 써야하지만 이
pos2는 실수를 쓸수 있습니다.
spacing = value (정수)
얼마만큼의 시간차로 만들것이냐를 정합니다. 예를들어 10이라고 하면 10프레임마다
(gametime%10 인듯)만듭니다. 기본값은 3
------------------------------------------------------------
ModifyExplod
------------------------------------------------------------
Modifies the parameters of an existing Explod. Syntax is basically
the same as Explod. However, this controller is subject to future
change. Any code relying on this controller is not guaranteed to
work in the future.
익스플로드의 속성?을 수정합니다. 바꿀 익스플로드의 아이디값을 주고 파라미터를 주면
됩니다. 파라미터들은 Explod와 같습니다. 후에 바뀔수도 있다는군요.
이 명령은 기게이지가 점점 줄거나 느는걸 표현할 때 등에 유용합니다.
예)
[state 500, 5]
type = modifyexplod
trigger1 = 1
id = 3202
scale = var(50)/1000.0
ignorehitpause = 1
스프라이트의 x길이를 var(50)의 변화에 따라 바꿉니다. 예를들어 var(50)=1000일경우엔 저
값이 1.0이 돼서 원래 길이로 나오고(실수값을 얻어야 하기 때문에 나누는숫자는 실수로
씁니다) var(50)값이 점점 줄어들수록 스프라이트 길이도 줄어들어서 var(50)이 0이 되면
스프라이트도 없는것처럼 됩니다.
scale명령은 스프라이트의 x,y축 중앙을 기준으로 스프라이트의 크기를 바꿉니다.
------------------------------------------------------------
MoveHitReset
------------------------------------------------------------
movehit, movecontact, moveguarded 값을 0으로 리셋합니다.
------------------------------------------------------------
NotHitBy
------------------------------------------------------------
무적시간설정. Hitby는 어떤 공격에만 맞을 것이냐를 정했지만 이 Nothitby는 어떤
공격에 맞지 않느냐를 정합니다. Hitby와 value설정의 차이점이 있으므로 주의합시다.
무적시간이 많을수록 재미없는 캐릭터가 되니 적당히 줍시다.
필수 파라미터
value = attr_string OR value2 = attr_string
Hitby와 같습니다. 둘중 하나만 쓸수있으며 Hitdef의 attr문자열을 씁니다.
옵션파라미터
time = effective_time (정수)
작동시간. 기본값은 1
value설정의 예)
value = SCA
모든 공격에 대해 무적
value = , NA, AP
기본공격과 모든 프로젝타일형태의 공격에 대해 무적
value = SC, AA, AT, NP
모든지상공격에 무적이고 공중공격중엔 SP, HP 형태의 공격만 맞습니다.
------------------------------------------------------------
Null
------------------------------------------------------------
아무것도 하지 않는다를 뜻합니다. 임시로 명령을 안되게 할 때 유용합니다.
예를들어 실험을 하는데 changestate 명령이 걸리적거린다고 하면 그부분을
type = null;changestate 이렇게 고침으로써 그부분이 작동안되게 할수 있습니다.
------------------------------------------------------------
Offset
------------------------------------------------------------
캐릭터의 표시위치를 수정합니다.
옵션 파라미터
x = x_val (실수)
y = y_val (실수)
원래 축 기준으로 표시위치 지정
1p쪽이든 2p쪽이든 상관없이 x가 +일수록 오른쪽에 표시합니다. 따라서 x값을 줄땐
*facing을 붙여서 써야겠지요.
예)
[state 100,0]
type = offset
trigger1 = animelem = 2,>=0 && animelem = 3,<0
x = 20*facing
애니매이션의 두 번째 스프라이트 시작할때부터 3번째 스프라이트로 넘어가기 전까지
캐릭터가 앞으로 20픽셀 이동되어 표시됩니다.
Posadd로 할때와 다른점은 카메라는 원래 축을 기준으로 비추며, offset명령이 끝나면
캐릭터가 원래 위치에 표시됩니다.
주의할점은 explod같은 명령은 원래 축을 기준으로 표시된다는 것.
------------------------------------------------------------
PalFX
------------------------------------------------------------
팔렛효과(색변화)를 줍니다. ownpal = 1 파라미터를 쓰지 않는 헬퍼와 익스플로드에까지
영향을 미칩니다. 정확히 설명을 못하겠어서 원문을 놔둡니다.
옵션 파라미터
time = duration (정수)
작동시간. -1로 하면 무한이 됩니다.
add = add_r, add_g, add_b (정수)
mul = mul_r, mul_g, mul_b (정수)
Each add component is added to the appropriate component of the
player's palette, and the result is multiplied by the appropriate
mul component divided by 256. For instance, if pal_r is the
red component of the character's original palette, then the new
red component is (pal_r + add_r)*mul_r/256.
The defaults for these parameters are:
add = 0,0,0; mul = 256,256,256 (no change)
RGB값으로 주는데 add는 입힐 색, mul은 밝기(채도?)이며 각각 기본값은 add=0,0,0
mul = 256,256,256(변화없음)입니다.
대충 RGB색으로 원하는 색을 정할수 있는데 정확히 원하는 색을 얻으려면 값을
수정하면서 실험해봐야 합니다. 그래픽에 관한 지식이 있으면 그래픽툴을 이용해
원하는 값을 단번에 얻을수 있을지도 모르겠군요.
sinadd = ampl_r, ampl_g, ampl_b, period (정수)
Creates an additional sine-wave palette addition effect. Period
specifies the period of the sine wave in game ticks, and the
amplitude parameters control the amplitude of the sine wave for
the respective components. For instance, if t represents the
number of ticks elapsed since the activation of the PalFX
controller, and pal_r is the red component of the character's
original palette, then the red component of the character's
palette at time t is
(pal_r + add_r + ampl_r*sin(2*pi*t/period))*mul_r/256.
색에 진동?을 줍니다. 예를들면, 불에 타는걸 표현하는데 색이 밝아졌다 어두워졌다
왔다갔다 하는걸 표현하는데 쓰입니다.
각각 R진동값,G진동값,B진동값,주기 인데 예를들어
add = 150,150,150
sinadd = 100,100,100,16
으로 주면 입혀지는 색은 16프레임 주기로 100,100,100에서 200,200,200까지
왔다갔다 합니다(대충).
invertall = bvalue (bool)
If bvalue is non-zero, then the colors in the palette will be
inverted, creating a "film negative" effect. Color inversion
is applied before effects of add and mul. bvalue defaults to 0.
기본값은 0이며 1로 할 경우 반전효과를 줍니다.
color = value (정수)
This affects the color level of the palette. If value is 0,
the palette will be greyscale. If value is 256, there is no
change in palette. Values in between will have an intermediate
effect. This parameter's effects are applied before invertall,
add and mul. Default value is 256.
팔렛(입힐 색깔을 말하는듯)의 컬러레벨을 정한다? 0으로 하면 팔렛이 그레이스케일로
되고 256으로 하면 팔렛에 변화가 없다. 기본값은 256이다. 이 파라미터는 invertall,
add, mul 이전에 적용된다. 잘 모르겠네요. 값 조정해봐도 뭐가 변하는지도
모르겠습니다.
------------------------------------------------------------
ParentVarAdd
------------------------------------------------------------
Varadd와 같습니다만 부모(Parent)의 Var값에 지정한 값을 더합니다. 헬퍼에만 쓰이며
헬퍼가 아닌경우(부모가 없을 경우) 작동하지 않습니다.
필수 파라미터(정수var)
v = var_no (정수)
0-59 사이에 줄수 있습니다. v=10 이라고 하면 var(10)을 말하는겁니다.
value = int_expr (정수)
더할 값을 정합니다. -가 되면 빼는겁니다.
필수 파라미터(실수var)
fv = var_no (정수)
0-39사이에 쓸수 있습니다. 10이라고 하면 fvar(10)을 말하는겁니다.
value = float_expr (실수)
더할값을 씁니다.
위처럼 v=? value=? 두줄로 쓰는대신
var(var_no) = int_expr (정수 var)
fvar(var_no) = float_expr (실수 var)
이렇게 한줄로 써도 됩니다. 두줄로 쓰는건 구버전 무겐의 문법인듯.
Notes:
Due to historical reasons, note that the alternate VarAdd
syntax listed above matches neither the syntax for variable
assignment within an expression, nor the syntax for variable
addition within an expression.
If you have placed P2 in a custom state through a successful hit, do
not use variable assignment within the custom states. Otherwise, you
will overwrite P2's parent's variables, which is rather rude.
여기 설명되어 있군요. 상대스텟으로 간경우에 varadd같은 명령을 써서 var나 fvar값을
바꾸면 그 상대의 var나 fvar값이 변하기 때문에 쓰지 마라. 무례한 거다.
이럴 경우엔 sysvar(3), sysvar(4), sysfvar(0)~sysfvar(4) 중에 쓰도록 합시다.
------------------------------------------------------------
ParentVarSet
------------------------------------------------------------
부모의 var를 일정 값으로 정하는 겁니다. varadd는 var값에 일정값을 더하는거지만
varset은 일정값으로 정해버리는 겁니다. 그외엔 모두 같으므로 설명생략.
------------------------------------------------------------
Pause
------------------------------------------------------------
정시시간을 줍니다. 정지시간을 주는 명령엔 Superpause도 있지만 Pause를 쓸때와
Superpause를 쓸때가 익스플로드의 supermovetime, pausemovetime파라미터처럼
구분되어 있습니다. 필살기쓸 때 이외의 경우엔 Pause를 쓰는게 일반적.
플레이어와 백그라운드(스테이지)는 무조건 멈춥니다.
도스무겐에서는 pause나 superpause가 된 상태에서도 키입력을 인식했는데 윈무겐에선
안되게 바뀌었습니다.
필수 파라미터
time = t (정수)
몇프레임동안 정시시킬것인가입니다. (당연히 이런값들은 양수(+)만 됩니다)
옵션 파라미터
movetime = mt (정수)
자기자신이 움직일 수 있는 시간. Pause시작부터 몇프레임동안 움직일수 있는가를
정합니다.
endcmdbuftime = bt (정수) (윈무겐 추가 파라미터입니다)
도스무겐에선 Pause와 Superpause동안에도 키입력을 인식했는데 윈무겐에선 이
파라미터에 따라 되도록 바뀌었습니다. 키입력감지시간을 주는 듯. 기본값은 0(인식
안함) 입니다.
This is the number of ticks during the end of the pause in which the player's
move commands will be buffered. Buffered commands will be detected by the
"command" trigger immediately after the pause ends. The buffering applies only to
players who are unable to move during the pause (see movetime parameter).
Valid values for endcmdbuftime are from 0 to t, where t is the value of the time
parameter. Defaults to 0.
pausebg = p (boolean) (윈무겐 추가 파라미터입니다)
1(기본값)로 할 경우 배경이 멈추며 0으로 하면 배경은 안멈춥니다.
Notes:
Executing a Pause controller during the pausetime of another
will cancel out the effect of the previous Pause controller.
Executing a Pause during a superpause will delay the effects
of the pause until after the superpause has ended.
Pausetime 중에 또 Pause를 쓰면 먼저의 Pause는 취소됩니다.
Superpause중에 Pause를 쓰면 superpause가 끝난후에 pause지연효과를 줍니다.
-----------------------------------------------------------
PlayerPush
------------------------------------------------------------
캐릭터가 상대캐릭터에 닳았을 때 상대캐릭터를 밀어낼 것인지 아니면 그냥 지나칠 것인
지 정할수 있습니다. 예를들어 회피동작 등에 쓰입니다.
필수 파라미터
value = push_flag (정수)
값이 0이 아니면 밀어내고(평상시) 값이 0이면 지나칩니다. 예를들어 회피동작이나
스트라이커 같은경우 0으로 설정합니다.
------------------------------------------------------------
PlaySnd
------------------------------------------------------------
사운드를 출력합니다.
필수 파라미터
value = group_no, sound_no
출력할 사운드 번호를 줍니다. 앞에 F 자를 붙이면 data폴더의 common.snd 파일의
것을 출력합니다. 예를들어 10,1 이러면 10-1사운드(10그룹의 1번사운드)를
출력합니다.
옵션 파라미터
volume = volume_level (정수)
0이면 보통 볼륨이고 +면 크게, -면 작게 됩니다.
channel = channel_no (정수)
사운드의 채널값을 줄수 있습니다. 같은 채널의 사운드가 이미 출력되고 있을 경우
먼저 출력되고 있는 사운드가 취소되면서 출력됩니다.
채널값을 주면 Stopsnd 같은 명령으로 사운드를 임의로 정지시킬 수 있습니다.
기본값은 -1입니다.
0 is a special channel reserved for player voices. Channel
0 voices are stopped when the player is hit. It's recommended you
play your character's voice sounds on channel 0.
원문을 보면 채널 0은 특수한 채널로 캐릭터의 음성을 넣는게 추천된다고 합니다.
왜냐하면 0번채널 사운드는 캐릭터가 맞을 경우 정지되기 때문입니다.
lowpriority = pr (정수)
이값은 채널이 -1이 아닌경우만 쓸모있습니다.
0이 아닌값을 줄 경우 같은 채널의 사운드가 이미 출력되고 있는 경우 이 사운드에
의해 중지되지 않습니다.
예를들어 channel=4인 사운드가 나는중에 또 channel=4인 사운드를 내면
lowpriority값이 정해지지 않으면 나중에 나는 사운드만 나지만 lowpriority 값을 주면
먼저의 사운드만 나게 됩니다.
freqmul = f (실수)
사운드의 주기값을 바꿉니다. 기본값은 1.0 이며 낮출수록 소리가 굵어지며 높일수록
얇아?집니다. 실험해봅시다.
loop = loop_flag (정수)
기본값은 0이며 0이 아닌 값을 주면 사운드가 계속 반복해서 재생됩니다.
pan = p (정수)
(mutually exclusive with abspan)
This is the positional offset of the sound, measured in pixels.
If p > 0, then the sound is offset to the front of the player.
If p < 0, then sound is offset to the back.
Defaults to 0.
사운드가 나는 위치를 정할수 있는듯합니다. 제 스피커가 구려서인지 값을 바꿔봐도
똑같네요.
data폴더의 mugen.cfg에서 stereoeffects=1 로 돼있어야 하는 듯 합니다. 캐릭터가
왼쪽에 있으면 왼쪽스피커에서 소리가 나고 오른쪽에 있으면 오른쪽 스피커에서 소리가
나는 그 원리인 듯 합니다.
0보다 큰 값을 줄수록 캐릭터의 앞에서, 0보다 작은값을 줄수록 캐릭터의 뒤에서
나는것처럼 됩니다. 기본값은 0입니다.
abspan = p (정수)
pan과 같지만 기준이 플레이어가 아니라 화면의 중앙입니다.
------------------------------------------------------------
PosAdd
------------------------------------------------------------
위치를 변경합니다(더합니다).
옵션 파라미터
x = x_value (실수)
y = y_value (실수)
이동할 값을 줍니다.
예)
[state 100,1]
type = posadd
trigger1 = animelem = 2
x = 10
y = -10
애니매이션의 2번째 스프라이트가 나올 때 앞으로 10픽셀만큼, 위로 10픽셀만큼
이동합니다.
(Posadd명령을 쓸 때 x값을 너무 크게 주면 상대 뒤로 넘어가버리므로 실험해보고 적당한
값을 줍시다. 대개 x값이 20을 넘을 경우 상대를 넘어갈 확률이 높습니다.)
------------------------------------------------------------
PosFreeze
------------------------------------------------------------
캐릭터가 있는 위치를 일시적으로 고정합니다. 게임중에 캐릭터의 위치는 x,y속도에
따라 계속 변하는데 이 명령이 작동하는 동안에는 x,y속도에 따른 위치변화가 안되게
합니다. posadd, posset 같은 명령을 쓸경우만 위치가 바뀝니다.
이 명령이 작동하고있는 동안에도 x,y속도는 가속도에 따라서 계속 변합니다.
옵션 파라미터
value = freeze_flag (정수)
값이 0이면 위치가 바뀔수 있습니다. 기본값 1. 뭐하러 있는 파라미터인지 모르겠군요.
------------------------------------------------------------
PosSet
------------------------------------------------------------
Posadd는 위치를 이동하는 거였지만 이 posset은 위치를 정합니다.
현재 화면의 정중앙이 Pos x = 0 이 되며 스테이지의 바닥(라운드시작시 캐릭터가 있는
y위치)이 Pos y = 0입니다.
옵션 파라미터
x = x_value (실수)
y = y_value (실수)
정할 값을 줍니다.
예)
[state 100]
type=posset
trigger1 = time = 0
y = 0
주로 땅에 착지하는 스텟에 velset = 0,0과 함께 쓰입니다.
------------------------------------------------------------
PowerAdd
------------------------------------------------------------
기를 얼마만큼 더하느냐.
필수 파라미터
value = add_amt (정수)
더할 값을 줍니다. 1000이 기 한칸(Lv1)입니다.
------------------------------------------------------------
PowerSet
------------------------------------------------------------
기를 얼마로 정할것이냐. 예를들어 KOF2002에서 MAX 모드를 발동하면 기게이지가
늘어나지 않고 고정되죠? 그럴 때 씁니다.
필수 파라미터
value = pow_amt (정수)
정할 값을 줍니다.
------------------------------------------------------------
Projectile
------------------------------------------------------------
효과 스프라이트를 만듭니다만 Explod와 좀 차이점이 있고, 이 Projectile은 Hitdef의
파라미터들을 써서 공격속성을 가진 스프라이트를 만들 수 있습니다(주로 장풍에 쓰임).
참고로 이 Projectile명령의 경우 도스무겐에선 기본적으로 본체색의 영향을 안받았지만
윈무겐에선 그게 사라져서 프로젝타일은 항상 본체색의 영향을 받는 버그가 윈무겐에만
있습니다. 이 Projectile에는 Explod에는 있는 ownpal 파라미터가 없습니다.
Explod에도 설명되었지만 일단 캐릭터크기가 작게나오는 일부스테이지에서 explod는
영향을 받지 않지만, projectile은 캐릭터 크기에 맞춰서 크기가 조정됩니다.
또 이 projectile은 pausemovetime과 supermovetime 파라미터가 안 듣습니다.(하위폴더의
proj&explod차이 파일 에서도 설명)
프로젝타일끼리 닳아서 사라질 땐 AIR의 clsn[2](몸체범위)박스를 검사해서 닳을 경우
사라집니다. 주의할점은 프로젝타일의 몸체범위박스는 게임내에서 ctrl+c를 해도
안나옵니다.(clsn[1]박스만 나옵니다)
옵션 파라미터
ProjID = id_no (정수)
발생시킬 프로젝타일에 아이디를 부여합니다. 이런건 양수(+)이어야 합니다.
projanim = anim_no (정수)
프로젝타일에 쓸 애니매이션 번호를 씁니다. 기본값은 0.
projhitanim = anim_no (정수)
프로젝타일이 상대에게 닳았을 때 바뀔 애니매이션을 정합니다. 기본값은
-1(안바뀜)인데 projanim과 값이 같아도 애니매이션은 안바뀌고 밑에나온
projremove = 0 일경우에도 안바뀝니다.
projremanim = anim_no (정수)
프로젝타일이 hitflag = P가 들어간 Hitdef에 닳아서 사라지는 경우 바뀔
애니매이션입니다. 밑의 projremove = 0 일 경우 안바뀝니다.
프로젝타일이 밑의 projedgebound, projstagebound, projheightbound 에 정해진
위치를 넘어가서 사라질때도 이 애니매이션으로 바뀌는데 이때는
projremove=0이더라도 사라집니다.
안쓰면 projhitanim 과 같게 설정됩니다.
projcancelanim = anim_no (정수)
프로젝타일이 상대의 프로젝타일에 닳아서 사라질 때 바뀔 애니매이션.
안쓰면 projremanim과 같게 설정되며 projanim과 같을 경우 안바뀝니다.
프로젝타일이 상대 프로젝타일과 닳을 경우엔 projremove = 0일지라도 이 애니매이션
으로 바뀐후 사라집니다.
projscale = x_scale, y_scale (실수)
스프라이트의 배율을 정합니다. 역시 무겐의 늘리는 기능은 안좋기 때문에 줄일 때만
쓰길 권장합니다. 기본값 1,1
projremove = remove_flag (정수)
기본값은 1이지만 0으로 쓸 경우 프로젝타일이 상대에게 닳아도(또는 hitflag=P포함
Hitdef에 맞아도)안 사라집니다. 이 경우 프로젝타일의 공격판정만은 사라집니다.
프로젝타일이 상대 프로젝타일과 닳을 경우엔 projremove = 0일지라도 애니매이션은
projcancelanim 에 따라 바뀐후 사라집니다.
projremovetime = remove_time (정수)
프로젝타일이 사라지는 시간을 정합니다. 기본값은 -1(안사라짐)입니다. Explod는
애니매이션이 다되면 사라졌지만 Projectile을 쓸 경우엔 애니매이션 지속시간에 맞춰
이 값을 정해줘야 합니다. 예를들어 전체지속시간 12프레임이면 이 값을 12로 줍니다.
물론 장풍일 경우는 안씁니다.
velocity = x_vel, y_vel (실수)
프로젝타일 발생시 프로젝타일의 속도. 기본값 0,0
x값이 -일 경우 스프라이트의 좌우가 바뀝니다.
remvelocity = x_vel, y_vel (실수)
프로젝타일이 사라질 때 프로젝타일의 속도(projremanim, projcancelanim,
projhitanim으로 바뀐직후 속도). 기본값 0,0
accel = x_accel, y_accel (실수)
프로젝타일 발생후 매 프레임마다 더할 가속도. 기본값 0,0
프로젝타일이 사라질 때는 가속도가 안붙습니다.
velmul = x_mul, y_mul (실수)
프로젝타일 발생후 매 프레임마다 속도에 곱할 값. 기본값 1,1
프로젝타일이 사라질 때는 이값이 적용 안됩니다.
projhits = num_hits (실수)
프로젝타일이 사라지기 전까지 히트횟수(Hitdef의 파라미터를 쓸 경우만 필요있음).
각 히트시마다 damage=?,?만큼의 대미지가 들어갑니다. 기본값 1
projmisstime = miss_time (실수)
projhits 값이 2이상일 때 한번 맞은 후 다음 맞기까지 시간(안맞는 시간).
기본값 0.
projpriority = proj_priority (정수)
프로젝타일의 우선순위. 프로젝타일이 서로 부딪혔을 때 이 값이 같으면 둘다 사라지고
값이 틀린 경우, 낮은 쪽은 사라지며 높은쪽은 이 값에 -1을 하게됩니다(값이 0이 되면
사라짐).
projhits 값이 2이상일 경우 '유효한히트횟수-1' 값만큼 더해지게 됩니다.
예를들어 projhits = 3, projpriority = 3 이면 처음 projpriority 값은 5가 되며 한번
히트한후엔 4 이런식이 됩니다.
기본값은 1.
projsprpriority = priority (정수)
스프라이트표시우선순위인 sprpriority 값을 줍니다. 기본값 3
projedgebound = value (정수)
프로젝타일이 화면 밖으로 얼만큼 나갔을 때 사라지게 할것이냐를 정합니다. 기본값40.
그런데 캐릭터크기가 작게나오는 특수스테이지에서도 화면 가장자리란, 스크린
가장자리가 아니라 일반스테이지와 같은곳으로 인식하기 때문에 공격판정이 없는 그냥
프로젝타일일 경우 이 값을 210이상으로 줘야 그런 특수스테이지 구석에서도
안사라집니다.
projstagebound = value (정수)
프로젝타일이 스테이지 밖으로 얼만큼 나갔을 때 사라지게 할것이냐를 정함. 기본값 40
마찬가지로 캐릭터크기가 작게나오는 특수스테이지에서도 스테이지밖이란, 일반
스테이지와(캐릭크기 정상적으로 나올 때) 같은곳으로 인식하기 때문에 공격판정이
없는 그냥 프로젝타일일 경우 이 값을 210이상으로 줘야 그런 특수스테이지
구석에서도 안사라집니다.(projedgebound=210 projstagebound=210 둘다 씁니다)
projheightbound = lowbound, highbound (정수)
프로젝타일이 있을 수 있는 최대,최소높이(스테이지 기준인듯)입니다. 프로젝타일의
y위치가 이 범위밖으로 벗어나면 그 프로젝타일은 사라집니다. 프로젝타일의 y속도가
0이 아닐경우만 작동합니다.
기본값은 -240,1 입니다.
offset = off_x, off_y (정수)
발생시킬 위치. 기본값은 0,0. Explod는 pos 였지만 프로젝타일엔 offset 입니다.
정확히 1당 1도트씩 이동하는 Explod와 달리, 값을 1씩 늘리다 보면 어떨땐 이동하지
않고 어떨땐 한꺼번에 2도트 이동돼서 표현되고 그럽니다(화면위치에 따라서 다름).
postype = type_string
표시할기준. 익스플로드나 헬퍼의 것과 같은데 차이가 좀 있습니다.
p1,p2를 제외한 값의 경우 y기준이 스테이지의 바닥으로 됩니다.
- p1
자신을 기준으로 합니다.
- p2
상대 기준
- front
x기준은 캐릭터 앞쪽화면 가장자리가되고 y기준은 스테이지의 바닥.
offset값의 x가 +가 될수록 화면밖으로 나갑니다.(같음)
- back
x기준은 캐릭터 뒤쪽화면 가장자리, y기준은 스테이지의 바닥.
offset값의 x가 +가 될수록 화면가운데쪽으로 이동
- left
x기준은 화면 왼쪽 가장자리가 되고 y기준은 스테이지바닥.(원문엔 y기준이 화면
위가 된다고 나왔지만 아닙니다.)
여기서 차이가 있는데, offset 의 x값이 +가 될수록 캐릭터가 향한 방향쪽으로
이동됩니다. 또한 스프라이트 방향도 캐릭터 방향과 같게 설정됩니다.
- right
x기준은 화면 오른쪽 가장자리가 되고 y기준은 스테이지바닥.(원문엔 y기준이 화면
위가 된다고 나왔지만 아닙니다.)
마찬가지로, offset 의 x값이 +가 될수록 캐릭터가 향한 방향쪽으로 이동됩니다.
또한 스프라이트 방향도 캐릭터 방향과 같게 설정됩니다.(left와 동일)
projshadow = shad_r, shad_g, shad_b (정수)
explod와 같습니다. 그림자의 R,G,B 색을 정할수 있고 각 값의범위는 0~255 사이이며
기본값은 0,0,0(그림자 없음)입니다. -1로 하면 그림자색은 스테이지의 설정에
따릅니다.
supermovetime = move_time (정수)
Superpause시에 움직일 시간을 정한다고 하는데...
Projectile에서 이 파라미터는 작동하지 않습니다.
Superpause시에 프로젝타일은 무조건 멈춥니다.
pausemovetime = move_time (int)
Pause시에 움직일 시간을 정한다고 하는데...역시
Projectile에서 이 파라미터는 작동하지 않습니다.
Pause시에 프로젝타일은 무조건 멈춥니다.
afterimage.time = aftimg_time (int) (윈무겐 추가 파라미터)
If included, this adds afterimage effects to the projectile.
The parameters are the same as in the AfterImage controller,
except they are all prepended with "afterimage."
잔상효과지속시간. afterimage의 파라미터대로 afterimage.??? 들을 쓸수있는듯
프로젝타일에 이 파라미터들 말고도 추가로 Hitdef의 파라미터들을 붙여서 공격판정을
지닌 프로젝타일을 만들 수 있습니다. Hitdef와 다르게 작동하는 것은
1. sparkxy 파라미터의 x기준이 p2가 아닌 프로젝타일 자기자신의 x축 중심을 기준으로
됩니다.
2. 저글포인트를 쓰고싶으면 air.juggle 파라미터를 써야 합니다.
3. p2stateno 파라미터를 사용하더라도 Hitoverride를 사용중인 개체에게 공격이 닳습니다.
(이때 p2stateno파라미터는 작동 안합니다) 그러나 무겐엔진상 어쩔 수 없는 버그가
있으므로(하위폴더의 알기어려운무겐버그에서 설명됨) 프로젝타일엔 p2stateno를 쓰지
맙시다
------------------------------------------------------------
RemoveExplod
------------------------------------------------------------
해당 아이디의 Explod를 없앱니다.
옵션 파라미터
ID = remove_id (정수)
없앨 익스플로드의 아이디를 줍니다. 안쓰면 모든 익스플로드를 없앱니다.
------------------------------------------------------------
ReversalDef
------------------------------------------------------------
리버설 설정. p2의 공격판정(Clsn1박스)과 자신의 Clsn1박스가 닳았을 때 reversal.attr
에 설정된 값중에 p2의 hitdef의 attr이 있을 경우 명령이 작동합니다.
예를들어 반격기라던지, 가드포인트 등을 만드는데 쓸수 있습니다. 가드포인트를 만들 때
KOF에서는 장풍에 닳아도 경직이 되었지만 이 ReversalDef만 쓰면 장풍(프로젝타일)만
그냥 사라집니다. 이때 경직이 되게하려면 따로 스텟을 만들어서 해야하는등 복잡합니다.
제 이오리의 스텟 306(강조즐:앞,밑,밑앞+강발)에는 재현해놓긴 했습니다. 경직스텟은 307.
필살기인 석조즐 스텟들에도 재현해놨습니다. 문제라고 한다면 헬퍼로 프로젝타일과
같은효과를 내는방법(하위폴더문서에 있는)을 쓴 헬퍼와 닳으면, 프로젝타일과 닳을때와
헬퍼의 공격판정과 닳을 때 이렇게 2번 경직이 된다는 것입니다.
ReversalDef는 Hitdef의 파라미터인 pausetime(리버설시 경직시간), sparkno(리버설시
발생스파크), sparkxy(리버설시 스파크발생위치), hitsound(리버설시 사운드),
p1stateno(리버설시 p1이동스텟), p2stateno(리버설시 p2이동스텟)을 쓸 수 있고 추가로
다음 파라미터가 필요합니다.
필수 파라미터
reversal.attr = attr_string
리버설될 수 있는 공격타입을 정합니다. 상대 Hitdef의 attr을 검사합니다. 예를들어
reversal.attr = SA,NA,SA
이렇게 쓰면 서서나 공중의 기본공격, 스페셜공격(기술들) 에 리버설됩니다.
(means stand+air, normal attack, special attack.)
여기서 스파크 발생위치는 공격판정이 서로 닳은 곳을 기준으로 알아서 나옵니다.(각자
실험해봅시다.) 그런데 윈무겐의 update.txt파일을 보니까 윈무겐에선 sparkxy에 지정된
위치대로 나온다고 하는군요
------------------------------------------------------------
ScreenBound
------------------------------------------------------------
Determines whether or not the player's movement should be constrained
to the screen or not. Also determines whether the camera should move
to follow the player or not. The results of this controller are valid
for 1 tick.
플레이어가 화면밖으로 나갈수 있는지 없는지, 그리고 카메라가 플레이어를 비출것인지
아닌지 결정할수 있고 작동시간은 1프레임 이라고 합니다.
옵션 파라미터
value = bound_flag (정수)
이 값을 0으로 주면 플레이어가 화면밖으로 나가는게 허용됩니다.
예를들자면 상대를 쭉~날려버리는 공격에 이 명령을 쓰면, 화면은 쭉~날아가는 상대를
비추고 공격한쪽은 화면밖으로 나갑니다. 텐구가면쓴 고히비키나 드래곤볼캐릭터
브로리 등에 쓰였습니다.
movecamera = move_x_flag, move_y_flag (정수)
Determines whether the camera should pan to follow the player in
the x direction and in the y direction, respectively. Defaults to
0 in both instances if omitted.
카메라를 플레이어의 어디를 따라 움직일것인가? 기본값은 0.
어디를 기준으로 비추느냐 하는것인듯한데 값을 조정해봐도 잘 모르겠군요.
참고로 value = 1 movecamera = 0,0 으로 주면 캐릭터에 의해 화면이 안움직이며
상대에 의해서만 움직입니다. 게다가 상대에 의해서 화면이 움직일 때 캐릭터가
끌려갑니다.
------------------------------------------------------------
SelfState
------------------------------------------------------------
changestate와 같지만 changestate에 설명된대로 자기자신의 스텟으로 돌아옵니다.
------------------------------------------------------------
SprPriority
------------------------------------------------------------
스프라이트 표시 우선순위인 sprpriority의 값을 바꿉니다.
필수 파라미터
value = priority_level (정수)
Valid priority levels are -5 to 5.
-5~5 사이의 값을 주라는데 아무 값이나 주면 됩니다. 무겐은 sprpriority값이 작은
스프라이트일수록 화면상의 뒤쪽에 표시합니다.
이 명령으로 값을 설정해줘도 Hitdef가 맞는 순간만은 Hitdef의 파라미터대로
설정됩니다.
------------------------------------------------------------
StateTypeSet
------------------------------------------------------------
[statedef -?]부분에 따라 설정된 스텟타입값들을 임의로 바꿀수 있습니다.
옵션 파라미터
statetype = state_type (문자)
스텟타입설정. A(공중), C(앉은상태), S(서있는상태), L(다운된상태) 중에 정할수
있습니다. 안쓰면 statedef 부분에 쓰인 그대로 유지합니다.
movetype = move_type (문자)
무브타입설정 I(아무것도아닌), A(공격중), H(맞는중) 중에 설정가능. 안쓰면 안바꿈.
physics = physics (문자)
물리값설정. A(공중), C(앉은상태), S(서있는상태), N(적용안함) 중에 설정가능.
역시 안쓰면 그대로. cns에도 설명되어있듯이 각각 yaccel(y가속도),
crouch.frictione(앉아있을때마찰력), stand.friction(서있을때마찰력) 값을 매 프레임
적용합니다. N이면 아무것도 적용안함.
------------------------------------------------------------
SndPan
------------------------------------------------------------
사운드의 Pan값을 변경. Playsnd에 있는 pan과 abspan과 같습니다.
Changes the panning of a currently playing sound. This controller may
be continually triggered to smoothly move a sound across the sound
field or to have a sound follow the player.
필수 파라미터
channel = chan_no (정수)
Pan값을 변경할 채널 번호입니다.
pan = p OR abspan = p (int)
These parameters cannot both be specified at the same time. p
determines the sound offset in pixels from the player (in the
case of pan) or from the center of the screen (in the case of
abspan). See PlaySnd for a description of the panning parameters.
둘중 하나만 써야한다는군요. Playsnd와 기능이 같다네요.
------------------------------------------------------------
StopSnd
------------------------------------------------------------
사운드를 정지시킵니다.
필수 파라미터
channel = chan_no (정수)
정지시킬 채널 번호를 씁니다. -1로 쓸 경우 모든 사운드를 정지시킵니다.
만약 상대스텟을 임의로 자신의 스텟에 이동시키는 경우 그런 스텟엔 쓰지 말라고
하는군요.
그런 스텟에 이 명령을 쓰면 상대의 채널을 정지시키기 때문에 당연한 것이죠.
------------------------------------------------------------
SuperPause
------------------------------------------------------------
도스무겐에서는 pause나 superpause가 된 상태에서도 키입력을 인식했는데 윈무겐에선
안되게 바뀌었습니다.
화면정지. Superpause는 필살기에 주로 쓰입니다.
옵션 파라미터
time = pause_time (정수)
정시시킬 시간. 기본값은 30(프레임)입니다.
anim = anim_no (정수)
발생시킬 애니매이션 번호. 필살기스파크같은걸 나오게하고싶으면 씁니다. 그냥 쓰면
data폴더의 fightfx.air의 애니매이션을 쓰며 앞에 S 자를 붙이면 자기자신의 AIR파일의
것을 쓰며 -1 로 쓰면 안 발생시킵니다. 기본값 30
예) anim = s10
sound = snd_grp, snd_no (정수, 정수)
마찬가지로 발생시킬 사운드. 그냥 쓰면 data폴더의 common.snd의 것을 쓰며 앞에 S
자를 붙이면 자신의 SND파일의 것을 씁니다. 기본값은 -1(사운드 안발생)입니다.
예) sound = s10,0
pos = x_pos, y_pos (실수)
위에 anim 에 설정된 애니매이션을 발생시킬 위치(자신의 축 기준). 기본값 0,0
movetime = value (정수)
Superpause시작후 몇프레임동안 움직일수 있느냐를 설정. 기본값은 0
darken = bvalue (boolean)
기본값은 1(화면 어두워지는 효과를 줌)이며 0으로 쓰면 화면암전효과를 안줍니다.
p2defmul = def_mul (실수)
타겟이 없으면 작동안함. 타겟의 방어력에 임시로 곱할 값을 정합니다.
기본값은 0인데 이 경우 data폴더 mugen.cfg내의 [Rules]부분의
Super.TargetDefenceMul 값을 따릅니다. 1로 주면 그대로.
이 값이 클수록 타겟의 방어력이 올라갑니다.(대미지 덜받음)
poweradd = value (정수)
기게이지 더할 값. 기본값 0
unhittable = bvalue (boolean)
기본값은 1이며 이 경우 플레이어는 Superpause동안 무적이 됩니다. 0으로 주면 무적
아님.
(윈무겐 Update.txt를 보면 Pause에 추가된 endcmdbuftime, pausebg 파라미터가
Superpause에도 추가되었다고 나와있는데 명령어 설명엔 안나와있군요. 하지만
있습니다.)
endcmdbuftime = bt (정수) (윈무겐 추가 파라미터입니다)
도스무겐에선 Pause와 Superpause동안에도 키입력을 인식했는데 윈무겐에선 이
파라미터에 따라 되도록 바뀌었습니다. 키입력감지시간을 주는 듯. 기본값은 0(인식
안함) 입니다.
pausebg = p (boolean) (윈무겐 추가 파라미터입니다)
기본값은 1이고, 0으로 쓸 경우 배경이 안멈춥니다.
Pause중에 Superpause가 발동할 경우 Superpause가 작동되며 Superpause의
지속시간이 끝난후 Pause가 작동됩니다.(Superpause중엔 Pause시간이 흘러가지 않습니다)
------------------------------------------------------------
TargetBind
------------------------------------------------------------
자기자신의 축을 기준으로 타겟을 묶어둘 위치를 정합니다. 해당 타겟이 있어야만 작동함.
옵션 파라미터
time = bind_time (정수)
묶어둘 시간. 기본값은 1(프레임).
ID = bind_id (정수)
묶어둘 타겟아이디. 기본값 -1(모든 타겟)
pos = x_pos, y_pos (실수)
묶어둘 위치. 기본값 0,0
이 Targetbind 명령을 쓰는 중에 또다른 상대에게 맞으면, bind중인 타겟은 스텟 5050으로
자동이동됩니다.
------------------------------------------------------------
TargetDrop
------------------------------------------------------------
지정된 ID의 타겟만 빼고 모든 타겟들을 플레이어의 타겟리스트에서 제외시킵니다.
옵션 파라미터
excludeID = id_no (정수)
남길 타겟아이디. 이 아이디와 맞지않는 타겟은 전부 타겟리스트에서 제외됩니다.
기본값은 -1(모든타겟을 제외)입니다.
keepone = value (정수)
excludeID에 지정된 타겟이 있을 경우만 유효합니다.
이 값이 0이 아닐 경우, 한명의 타겟을 남깁니다. excludeID에 지정된 타겟이 둘
이상일 경우 랜덤으로 한명만 남기고 모두 제외시킵니다. 잡기만들 때 같은 경우
쓸모있다고 하는군요.
이 값이 0일 경우 모든 타겟을 남깁니다.
기본값은 1입니다.
------------------------------------------------------------
TargetFacing
------------------------------------------------------------
타겟의 방향을 정합니다.
필수 파라미터
value = facing_val (정수)
+값이면 모든 타겟이 플레이어와 같은 방향을 향하며 -값이면 플레이어쪽을 향하게
됩니다.
옵션 파라미터
ID = target_id (정수)
조정할 타겟아이디. 기본값은 -1(모든타겟에게 영향)입니다.
------------------------------------------------------------
TargetLifeAdd
------------------------------------------------------------
타겟의 체력값을 더하거나 뺍니다.
필수 파라미터
value = add_amt (정수)
더할값. -이면 뺍니다.
옵션 파라미터
ID = target_id (정수)
조정할 타겟아이디. 기본값은 -1(모든 타겟에 영향)
kill = kill_flag (정수)
타겟의 체력이 1밑으로 떨어질수 있게 할것인가(Ko되게 할것인가)를 정합니다.
기본값은 1이며 0으로 할 경우 KO되지 않습니다.
absolute = abs_flag (정수)
기본값은 0이며 1로 하면 타겟의 현재방어력을 무시하고 무조건 정해진 값대로
계산합니다.
------------------------------------------------------------
TargetPowerAdd
------------------------------------------------------------
타겟의 기게이지를 얼마만큼 더하느냐.
필수 파라미터
value = add_amt (정수)
더할 값. -이면 뺍니다.
옵션 파라미터
ID = target_id (정수)
조정할 타겟아이디. 기본값은 -1(모든 타겟에 영향)
------------------------------------------------------------
TargetState
------------------------------------------------------------
타겟의 스텟을 자신의 스텟으로 이동시킵니다.
필수 파라미터
value = state_no (정수)
이동시킬 스텟번호
옵션 파라미터
ID = target_id (정수)
조정할 타겟아이디. 기본값은 -1(모든 타겟에 영향)
------------------------------------------------------------
TargetVelAdd
------------------------------------------------------------
타겟의 속도에 정해진값을 더합니다.
옵션 파라미터
x = x_value (실수)
y = y_value (실수)
각 프레임마다 더할 값을 줍니다.
ID = target_id (정수)
조정할 타겟아이디. 기본값은 -1(모든 타겟에 영향)
------------------------------------------------------------
TargetVelSet
------------------------------------------------------------
타겟의 속도를 일정값으로 정합니다.
옵션 파라미터
x = x_value (실수)
y = y_value (실수)
정할 값을 줍니다.
ID = target_id (정수)
조정할 타겟아이디. 기본값은 -1(모든 타겟에 영향)
------------------------------------------------------------
Trans(윈무겐전용입니다. 웬만하면 쓰지 맙시다)
------------------------------------------------------------
Overrides the player's animation transparency parameters for current game tick. Useful
for special effects.
반투명같은 특수효과를 줍니다. 단어들이 그래픽관련용어같은데 몰라서 원문을 놔뒀습니다.
필수 파라미터
trans = trans_type (문자)
타입을 정하는데 다음과 같은 값중에 줍니다.
default - does nothing
none - disables transparency
add - draws with full additive transparency
addalpha - draws with additive transparency (alpha must be specified)
add1 - draws with additive transparency, with alpha at 256,128
sub - draws with full subtractive transparency
옵션 파라미터
alpha = source_alpha, dest_alpha (정수, 정수)
These are the source and destination alpha values for the addalpha
trans type. Valid values are from 0 (low) to 256 (high). If omitted,
defaults to 256,0.
예)
; Fades the character in, over 256 ticks.
type = Trans
trigger1 = time < 256
trans = add_alpha
alpha = time, 256-time
캐릭터를 256프레임동안 페이드인(점점밝아짐?)시키는것
------------------------------------------------------------
Turn
------------------------------------------------------------
서서 방향을 바꾸는 애니매이션(05)과 앉아서 방향을 바꾸는 애니매이션(06)을 쓰지 않고
방향을 바꿉니다. 파라미터 없음
------------------------------------------------------------
VarAdd
------------------------------------------------------------
자신의 var값에 일정값을 더합니다. parentvarad에도 설명되어있지만 이것이 기본이므로
여기도 설명.
무겐에서 쓸 수 있는 변수는 정수변수는 var(0) ~ var(59) 를 쓸 수 있고 실수변수는
fvar(0) ~ fvar(39)를 쓸수 있습니다.
이 var는 정말 유용한 것으로 var값을 이용해 캐릭터의 각종 상태를 검사하거나 하는 등의
여러 핵심 요소들을 만들 수 있습니다.
var값들은 기본적으로 라운드동안 유지되며, CNS처음부분의 intpersistindex와
floatpersistindex에 따라 다음 라운드까지 유지시킬수 있으며 스텟 5900을 조정하면 다음
스테이지까지 유지시킬수도 있습니다.(하위폴더의 다음스테이지에var지속 문서 참조)
필수 파라미터(정수var)
v = var_no (정수)
0-59 사이에 줄수 있습니다. v=10 이라고 하면 var(10)을 말하는겁니다.
value = int_expr (정수)
더할 값을 정합니다. -가 되면 빼는겁니다.
필수 파라미터(실수var)
fv = var_no (정수)
0-39사이에 쓸수 있습니다. 10이라고 하면 fvar(10)을 말하는겁니다.
value = float_expr (실수)
더할값을 씁니다.
위처럼 v=? value=? 두줄로 쓰는대신
var(var_no) = int_expr (정수 var)
fvar(var_no) = float_expr (실수 var)
이렇게 한줄로 써도 됩니다. 두줄로 쓰는건 구버전 무겐의 문법인듯.
마찬가지로 상대스텟으로 간경우에 varadd같은 명령을 써서 var나 fvar값을 바꾸면 그
상대의 var나 fvar값이 변하기 때문에 쓰지 마라. 무례한 거다. 라고 원문에 나왔습니다.
이럴 경우엔 sysvar(3), sysvar(4), sysfvar(0)~sysfvar(4) 중에 쓰도록 합시다.
------------------------------------------------------------
VarRandom
------------------------------------------------------------
var값을 랜덤으로 정합니다. fvar는 불가능합니다.
필수 파라미터
v = var_no (정수)
쓸 var번호 0-59 사이에서 정함.
옵션 파라미터
range = least_val,greatest_val (정수)
값의 범위를 줍니다. 각각 최소값, 최대값이며 기본값은 0,1000입니다.
하지만 값을 하나만 쓸 경우 최대값으로 인식합니다. 예를들어 range = 5라고 하면
0 ~ 5 중에 랜덤으로 값이 정해집니다.
마찬가지로 상대스텟으로 간경우에는 쓰지 마라고 원문에 나왔습니다.
이럴 경우엔 sysvar(3), sysvar(4), sysfvar(0)~sysfvar(4) 중에 쓰도록 합시다.
예)
[state 100,0]
type = VarRandom
v = 5
range = 500
var(5)값을 랜덤으로 0 - 500 사이의 값으로 정합니다.
------------------------------------------------------------
VarRangeSet
------------------------------------------------------------
한꺼번에 여러개의 var값을 정할수 있습니다. 공통스텟 5900에서 var들의 값을
초기화하는데 쓰였습니다.
이 스텟 5900을 조정하면 다음 스테이지까지 var값을 유지시킬수 있습니다.(하위폴더의
다음스테이지에var지속 문서 참조)
필수 파라미터(정수 var)
value = int_expr (정수)
정할 값을 줍니다.
필수 파라미터(실수 var)
fvalue = float_expr (실수)
정할 값을 줍니다.
옵션 파라미터
first = first_idx (정수)
정할 var의 시작 번호. 기본값 0
last = last_idx (정수)
정할 var의 끝 번호. 기본값은 value일 경우 59, fvalue일 경우 39입니다.
마찬가지로 상대스텟으로 간경우에는 쓰지 마라고 원문에 나왔습니다.
예)
[State 5900, 1]
type = VarRangeSet
trigger1 = roundno = 1
first = 0
last = 25
value = 0
첫라운드일 때 var(0)부터 var(25) 까지 0으로 만든다.
------------------------------------------------------------
VarSet
------------------------------------------------------------
Varadd는 var에 값을 더하는 거였지만 이것은 일정값으로 정합니다. 그외엔 varadd와
같습니다.
------------------------------------------------------------
VelAdd
------------------------------------------------------------
속도에 정한값을 더합니다. 정말 자주 쓰입니다.
옵션 파라미터
x = x_value (실수)
y = y_value (실수)
더할 값
예)
[state 200,0]
type = VelAdd
trigger1 = 1
y = 0.45
y속도에 계속 0.45를 더합니다. 중력적용하는거랑 같습니다.
------------------------------------------------------------
VelMul
------------------------------------------------------------
속도에 정한 값을 곱합니다.
옵션 파라미터
x = x_multiplier (실수)
y = y_multiplier (실수)
곱할 값
예)
[state 200,0]
type = VelMul
trigger1 = 1
x = 0.82
x속도를 계속 x속도에 0.82을 곱한 값으로 설정. 마찰력 적용하는거랑 같습니다.
------------------------------------------------------------
VelSet
------------------------------------------------------------
Veladd는 속도에 값을 더하는 거였지만 이건 속도를 정해진 값으로 정합니다. 그외엔
veladd와 같습니다.
옵션 파라미터
x = x_value (실수)
y = y_value (실수)
정할 값
------------------------------------------------------------
Width
------------------------------------------------------------
캐릭터의 너비를 1프레임동안 조정합니다. p2와 근접했을때 p2를 밀어낸다거나, 화면
가장자리로부터 얼만큼이상 떨어지게 하고 싶다거나 할 때 유용합니다.
CNS처음부분의 값을 바꾸는게 아니고, 그값에 더하는겁니다.
옵션 파라미터
edge = edgewidth_front, edgewidth_back (정수)
이것은 플레이어가 화면 끝에서 얼만큼 근접할수 있느냐 입니다.
앞쪽너비값, 뒤쪽 너비값을 줍니다. 기본값 0,0
player = playwidth_front, playwidth_back (정수)
이것은 플레이어가 p2와 얼만큼 근접할수 있느냐입니다. 플레이어의
Clsn2박스(몸체범위박스)가 있을때만 유효합니다.
앞쪽너비값, 뒤쪽 너비값을 줍니다. 기본값 0,0
다른 문법
value = width_front, width_back (정수)
이렇게 쓰면 위의 edge, player 파라미터가 동시에 설정됩니다.
Notes:
When collision box display is enabled, the edge width bar is
displayed in orange, and the player width bar is displayed in
yellow. Where they overlap, the overlapping region is displayed in
bright yellow.
디버그모드의 ctrl + c눌러서 나오는걸 말하는 듯.
예)
[state 200,0]
type = width
trigger1 = 1
value = 50
이렇게 쓰면 캐릭터의 앞쪽 화면 구석에 있을 때 화면구석의 50픽셀 내로 들어가지
못합니다(x축 기준). 구석에서 잡기를 했다거나 필살기를 맞췄다거나 할 때 주로 쓰입니다.
------------------------------------------------------------
모든 명령의 설명이 끝났습니다.
------------------------------------------------------------
이 명령어와 트리거들을 조합해서 머리를 짜내서 캐릭터의 행동소스를 만듭시다.
캐릭터 만들때는 다른 캐릭터의 cns를 보는것도 많은 도움이 될것입니다.
원하는대로 안되거나 버그가 생기면 원인을 잘 생각해보고 해당 부분을 고칩시다.
댓글목록 0
등록된 댓글이 없습니다.