119way吧 关注:735贴子:17,199

【实战】KOFEXUM(plus)里什么烂人物,我要换我自己的!!!

只看楼主收藏回复






IP属地:广东1楼2012-08-15 17:31回复
    玩了KOFEXUM(plus),觉得这个游戏真是烂透了,
    嗯……不过还有一点点可取之处……
    刚好我手头一堆人物比它好很多,所以我打算把自己的人物加进去。
    随便翻一个ALFRED(阿尔弗瑞德)看了看,呵呵,原来加个人物这么简单,只要:
    1.把人物DEF改两个小地方弄成适合mugen1.0可用;
    2.把较老版本人物CNS里不适用1.0版本的VELSET,SNAP等数据改掉;
    3.加入SFF里的小头像、大头像、胜利头像、血条头像;
    4.导入系统GUARD CANCEL、WIRE ATTACK、GUARD BREAK、MAX2背景、SCDC字幕、火焰伴随效果等代码;
    5.写入起跳、落地、倒地等对应火花、音效代码;
    6.调整血量、能量,加入攻击力随血量减少递减代码;
    7.统一跳跃系统;
    8.加入计分代码
    等等(可能有遗漏,后面想起来再补充)就可以了啊,真的是SO EASY啊哈哈哈哈
    真是太容易了,等我学会了119way就可以死边去了。
    下面开始。


    IP属地:广东2楼2012-08-15 17:43
    收起回复
      忘了说了,这些内容是提供具备一定代码基础、PS基础的朋友看的,看不懂的朋友可以楼中楼提问,但是如果问题太白了请不要怪我嘴下不留人,谢谢。


      IP属地:广东3楼2012-08-15 17:49
      回复
        步骤01:
        打开一个人物的DEF,如果不是1.0专用,一般可以看到以下信息
        [Info]
        name ="Apollo"
        displayname ="Apollo"
        versiondate =11,01,2009
        mugenversion =06,15,2012【这个地方就是修改的关键】
        author ="119way"
        pal.defaults =1
        只要把
        mugenversion =06,15,2012
        改为mugenversion =1.0就可以了。
        也就是改成
        [Info]
        name ="Apollo"
        displayname ="Apollo"
        versiondate =11,01,2009
        mugenversion =1.0
        author ="119way"
        pal.defaults =1
        这个时候,大部分人物可以放进游戏并正常读取了。


        IP属地:广东8楼2012-08-16 16:36
        回复
          步骤02:
          旧版MUGEN人物会有
          velset = X,X,X【分别对应xyz轴移动速度,虽然我也不知道z轴在哪里……】

          snap = X,X,X,X,X【看过MUGEN的原文档,好像是锁定对方与自己位置距离,这里不用管太多】
          在1.0里这些统统是错误的,所以要把它改成
          velset = X,X
          snap = X,X
          保留两个数据即可。


          IP属地:广东9楼2012-08-16 16:40
          回复
            步骤03:制作人物各类图像
            (1)小头像
            选人画面小头像是25乘以25大小的正方形图,只要从SFF里抽一张编号为0,0以外(最好是)的人物图片出来,用ACDSEE裁剪一下保存就可以了,这样格式同样是PCX,可以直接导入。
            导入时置于人物SFF编号9000,0位置,原图删除或改编号后置,避免SFF颜色出错。
            (2)大头像
            人物半身像大小是120乘以140,下面预留的两个框,在比底线高3至4个像素的地方放入人物全身图(从SFF里抽取即可,也可另行改图使人物在VS画面的造型更具个性),具体可以直接用下图模板制作。

            (左图为人物半身像、VS像制作模板,右图为制作完之后的效果图,记得图片填进去后把底板的白线擦出即可。)
            制作完毕后置于人物SFF编号9000,1的位置,原图可删除或改编号后移。
            (3)胜利头像
            胜利头像的大小为320乘以182,制作效果图如下

            制作完毕后置于人物SFF编号9000,2位置。
            (4)血条头像
            大小为48乘以90
            楼主通常使用WHIP的头像作为模板,因为下方两块三角形的红色区域很关键,可以抠下来覆盖制作人物血条头像时原画溢出部分,使其更好地契合到血条两侧黑色斜杠上去。
            制作完毕后置于人物SFF编号9000,222处。
            以上图片导入SFF时均保留在x=0,y=0的默认位置即可,只有MAX2头像导入时需要改位置,后面要讲,在此不做赘述。
            到这个时候,人物的基础改动就完成了,进入游戏一看,差不多像那么回事了。
            接下来要讲的进阶部分,我尽量讲的简单易懂一些,如果有不懂的自己最好先去查一下相关知识,别什么事都问我,我不是神。


            IP属地:广东10楼2012-08-16 17:00
            回复
              步骤4-01:
              统一GC(GUARD CANCEL,即防御取消,如防御中回避、防御中反击)效果
              在EXUM到EXUM(plus)的升级过程中,每个人物都进行了防御取消的更新,内容主要有三处:
              【统一的地方】
              1.普通回避不残影,防御取消后的动作统一加残影;
              2.能量修正(仅当破防与普通在同一STATEDEF时)poweradd = ifelse((prevstateno = [150,153]),0,100)
              3.攻击力修正,防御反击统一为damage = 50,0,并且KILL不等于0。
              (因为是我在统一过程中简略记录的东西,以上三个地方请尽量理解。)
              所有人物逃逸、反击条件由绝大部分在STATEDEF 150-151下全部扩展至150-153,可从CMD中查询,然后在防御取消的对应STATEDEF中加入这段代码就可实现目前版本所呈现的效果:
              ;---------------------------回避STATEDEF里要加的代码-----------------------------
              ;---------------------------------------------------
              [State 700, PalFX];身上白光
              type = PalFX
              triggerall = (Time = 0 || Time = 3 || Time = 6);闪白光的时间点、间隔
              trigger1 = prevstateno = [150,153];仅当前一动作是防御时触发
              time = 1;每次闪白时间为1
              add = 0,0,255;要闪多白自己调数据也可以,不过为了统一就用这个
              [State 701, PowerAdd];能量
              type = PowerAdd
              trigger1 = prevstateno = [150,153]
              trigger1 = time = 0
              value = -1000
              [State 700, NotHitBy];无敌(防御取消后的动作完全无敌)
              type = NotHitBy
              trigger1 = prevstateno = [150,153]
              trigger1 = 1
              value = SCA
              [State 700, EnvColor];闪白(屏幕闪白)
              type = EnvColor
              triggerall = time = 0
              trigger1 = prevstateno = [150,153]
              value = 255,255,255
              time = 1
              under = 1;闪白在人物背景
              [State 700, Explod];闪光
              type = Explod
              trigger1 = prevstateno = [150,153]
              trigger1 = time = 0
              anim = f700;这个就是人物防御取消的闪光了,可以自己修改,把系统DATA文件夹下的fightfx.air文件里面的ACTION 700改成别的火花就行了。
              ID = 700
              pos = 0,-65
              ontop = 1
              ownpal = 1
              persistent = 0
              pausemovetime = 999999
              supermovetime = 999999
              supermove = 1
              [State 700, Pause];静止
              type = Pause
              trigger1 = prevstateno = [150,153]
              trigger1 = time = 0
              time = 6;静止时间为6
              movetime = 6;敌人静止我可动
              ignorehitpause = 1
              [State 700, AfterImage];残影
              type = AfterImage
              triggerall = time = 0
              trigger1 = prevstateno = [150,153]
              time = 15
              length = 3
              frameGap = 1
              timeGap = 4
              PalAdd = 0, 0, 0
              PalMul = 1, 1, 1
              PalBright = 0, 0, 0
              PalContrast = 128, 128, 128
              Trans = add1
              ;---------------------------------------------------
              具体的人物相对应STATEDEF下如果有其他消减能量等设置,将其去除就可以了。
              


              IP属地:广东11楼2012-08-16 17:14
              收起回复
                步骤4-02:
                统一WA(WIRE ATTACK,即吹飞攻击)
                这个代码目前只用在了部分人物身上,就是PLUS版共享前我本来想全部统一的东西,有兴趣的朋友可以自行修改应用到所有人物身上。
                首先呢,为了加入人物不出错,必须在每个人物的AIR里加入
                ;------------------------------------------------------
                ;撞墙攻击代码
                ;------------------------------------------------------
                [Begin Action 55351]
                Clsn2: 1
                Clsn2[0] = -23,-81, 23,-31
                5010, 10, 0, 0, 4
                Clsn2: 1
                Clsn2[0] = -23,-81, 23,-31
                5010, 20, 0, 0, -1
                [Begin Action 55354]
                Clsn2: 1
                Clsn2[0] = -23,-81, 23,-31
                5010, 20, 0, 0, 5
                Clsn2: 1
                Clsn2[0] = -23,-81, 23,-31
                5010, 10, 0, 0, 6
                [Begin Action 55364]
                Clsn2: 1
                Clsn2[0] = -23,-81, 23,-31
                5010, 10, 0, 0, 3
                Clsn2: 1
                Clsn2[0] = -23,-81, 23,-31
                5030, 0, 0, 0, 3, H
                ;------------------------------------------------------
                才能避免被已经修改了的极少数人物的WA打中而造成各种不可意料的BUG。
                【上面这个地方非常关键,不加入这个的人物放在游戏中迟早会出错,反之把游戏人物抽出来则可删可不删,前提是其他人物有没有冲突的ACTION】
                具体的P2STATE代码已经加在了COMMON1.CNS中,所以只要在人物超重击的HITDEF中加入P2STATE指向即可,具体可参照119way开头的人物里面的超重攻击代码,多翻翻多对比你就了解了。
                由于这个代码用不用跟导入人物关系不是很大,就此打住。
                转入下一个问题。


                IP属地:广东12楼2012-08-16 17:22
                回复
                  步骤4-03:
                  统一GB,就是破防了。
                  基本加入计分系统的人物这个都可以忽略了,但是由于某些人物的AI在本身代码中的需要保留
                  statedef 150和statedef 152,所以就在这两个STATE内加入
                  ;---------------------------------------(GUARD CRUSH)
                  [State 0]
                  type = PalFx
                  triggerall = GameTime%10 = 1
                  trigger1 = NumHelper(90900)
                  trigger1 = Helper(90900),var(36) >= 40
                  trigger2 = NumHelper(90901)
                  trigger2 = Helper(90901),var(36) >= 40
                  trigger3 = NumHelper(90902)
                  trigger3 = Helper(90902),var(36) >= 40
                  time = 2add = 200, 0, 0
                  [State 0]
                  type = ChangeState
                  triggerall = Alive
                  trigger1 = NumHelper(90900)
                  trigger1 = Helper(90900), var(36) >= 50
                  trigger2 = NumHelper(90901)
                  trigger2 = Helper(90901), var(36) >= 50
                  trigger3 = NumHelper(90902)
                  trigger3 = Helper(90902), var(36) >= 50
                  IgnoreHitPause = 1
                  value = 190010
                  ;-------------------------------------
                  目前改变GUARD BAR长度时需要对以上代码逐个替换的人物有
                  Big
                  Daimon
                  Hayate
                  Izuko
                  Jenet
                  K'
                  Mizuchi
                  Moriya
                  Shion
                  tabasa
                  ken
                  rei&shu
                  goodman
                  上面讲到的东西,相关内容文档在DATA文件夹里的“有用的代码”文件夹内均有据可查,请自行翻阅,后面也不会贴大段的代码出来,主要讲讲怎么做就可以了。


                  IP属地:广东13楼2012-08-16 17:28
                  回复
                    步骤4-04:
                    MAX2背景和SCDC字幕导入,查找“有用的代码”文件夹里的
                    “系统MAX3背景.txt”和“系统SC&DC设置.txt”
                    ACTION内容需添加到人物AIR内
                    人物MAX2头像尺寸为240(长度可变)乘以55(高度必须固定),如下图

                    将图片导入人物SFF里编号15604,0的位置
                    X轴数据为-24(此数据可根据人物头像左右完整度适当调整),Y轴数据固定-3
                    然后把TXT文档内容导入,具体随便抽一个人物翻翻MAX2的STATE参悟,这里讲起来太麻烦。
                    【千万别责怪我不负责任,实在是……就是加个HELPER的事,不懂翻书去】
                    SCDC字幕就更好说了,CMD限制SCDC条件,然后到对应的超杀STATE下加入TXT内容代码就可以了。


                    IP属地:广东14楼2012-08-16 17:36
                    收起回复
                      步骤4-05:
                      烟雾伴随效果,主要是指被蓝色、红色火焰攻击后的伴随烟雾,这也是PLUS对蓝、红火焰人物全部进行了统一的地方。
                      具体参考“受击红烟雾.txt”和“受击蓝烟雾.txt”
                      加入到人物STATEDEF -2下,说明以下几个触发条件,触类旁通、举一反三就可以了。
                      trigger1 = Projhittime(1005) >= 0 && Projhittime(1005) <= 25;波动类攻击触发
                      trigger2 = Anim = 1320;当人物在做编号为1320的动作时
                      trigger2 = AnimElemtime(2) >= 20;做1320动作时对手什么时候冒烟
                      trigger3 = Anim = 1460;当人物动作为1460时
                      trigger3 = Movehit;当动作1460击中对手时
                      另外需要注意的就是里面的VAR注意不要跟人物已有VAR冲突,避免出现BUG。
                      


                      IP属地:广东15楼2012-08-16 17:41
                      回复
                        OK,上面的内容如果你都懂了,就去实践一下吧,如果这些都成功了,再往后的几个内容就挺简单的了。
                        码了一个多小时的字我容易吗我,掐饭克了。


                        IP属地:广东16楼2012-08-16 17:43
                        回复
                          步骤5:
                          加入计分代码(反向操作就是去除代码用到普通MUGEN)
                          这个真心简单了,大家打开游戏人物CNS,查找STATEDEF -2下的
                          ;#ADD004BASC PIEs#
                          ;============================================================================
                          ; edited life & power bar
                          [State -2,1]
                          type = Helper
                          triggerall = !IsHelper
                          triggerall = !NumHelper(90900)
                          triggerall = !NumHelper(90901)
                          triggerall = !NumHelper(90902)
                          trigger1 = NumPartner
                          trigger1 = ID < Partner,ID
                          trigger2 = !NumPartner ID = 90900 ; 90901 ; *
                          Stateno = 90900
                          ; (* 'ID = 90901' power bar off mode)
                          ; (* 'ID = 90901' はパワーバー非表示モード)
                          ;======================================
                          ;--------------------------------------
                          ; blocking/JD system helper set
                          [State -2,1]
                          type = Helper
                          triggerall = !IsHelper
                          triggerall = NumHelper(90900)
                          triggerall = Helper(90900),var(22) = [2,3]
                          triggerall = !NumHelper(99997) && !NumHelper(99998)
                          triggerall = Ctrl || StateNo = 40 || StateNo = 52 || StateNo = 100
                          triggerall = StateNo != 195500
                          trigger1 = Helper(90900),var(22) = 2 && Command = "holdfwd"
                          trigger2 = Helper(90900),var(22) = 3 && Command = "holdback" ID = 99997 + (Helper(90900),var(22) = 3) Stateno = 99997
                          IgnoreHitPause = 1
                          ;--------------------------------------
                          ; blocking/JD succeed!
                          [State -2,1]
                          type = ChangeState
                          triggerall = !IsHelper
                          triggerall = NumHelper(90900)
                          triggerall = Helper(90900),var(22) = [2,3]
                          triggerall = NumHelper(99997) || NumHelper(99998)
                          triggerall = Ctrl || StateNo = 40 || StateNo = 52 || StateNo = 100
                          triggerall = StateNo != 195500 trigger1 = NumHelper(99997)
                          trigger1 = Helper(99997),StateNo = 99996
                          trigger2 = NumHelper(99998)
                          trigger2 = Helper(99998),StateNo = 99996 value = 195500 ;; << 成功した时のステート(上书き可)
                          IgnoreHitPause = 1
                          ;--------------------------------------
                          ; muteki[State -2,1]
                          type = HitBy
                          triggerall = !IsHelper
                          triggerall = NumHelper(90900)
                          triggerall = Helper(90900),var(22) = [2,3]
                          trigger1 = NumHelper(99997)
                          trigger1 = Helper(99997),StateNo = [99996, 99997]
                          trigger2 = NumHelper(99998)
                          trigger2 = Helper(99998),StateNo = [99996, 99997] value = SCA, NT, ST, HT
                          IgnoreHitPause = 1
                          ;============================================================================
                          就是计分代码了,添加就有,删除就没有,就这么简单。
                          【因为这个比较容易,就先讲了,接下来也不是按照最初说的1-8讲,哪个方便讲哪个】


                          IP属地:广东20楼2012-08-16 23:35
                          收起回复
                            步骤6:
                            调整血量、能量,加入攻击力随血量减少递减代码
                            (1)
                            本游戏统一life = 1500
                            纯粹为了增强游戏可玩性,不那么容易挂掉。
                            (2)
                            本游戏统一power = 5000
                            1000能量等于一格气。
                            (3)防御力随血量减少增强(也就是对方攻击伤害降低)代码,不喜欢的可以删除,每个人物都有就是了。这个代码在-2下
                            [State 0, DefenceMulSet]
                            type=DefenceMulSet
                            trigger1=1
                            value=IfElse(life<300,.6,life*.001)
                            ignorehitpause=1


                            IP属地:广东21楼2012-08-16 23:38
                            收起回复
                              步骤7-1:统一跳跃系统
                              查找STATEDEF -3,以AKARI(一条明子)为例,VAR(15)和VAR(16)内容即为跳跃相关代码,盗用的是AH大神的人物跳跃系统,因为这个最简单易用,移植起来也快。
                              当目标人物已存在VAR(15)和VAR(16)时,改成未使用的VAR值即可。
                              步骤7-2:加入SVCBOSS豪鬼背景那种背光效果
                              在-3下,还是以一条明子为例,跳跃系统结束后接着就是背光系统代码,整段复制粘贴到目标人物的-3下就可以了。
                              


                              IP属地:广东22楼2012-08-16 23:43
                              回复