灰色的彼岸花吧 关注:1,017贴子:119,464

写给对游戏王DIY有兴趣的人,基础教程

只看楼主收藏回复

这里只谈脚本,不谈卡图制作和效果设计
做不太离谱的效果并不需要什么编程基础,需要的是以下几点能力:
①,约初中英语水平。
②,基础的逻辑思维。
③,比较大的卡池记忆,能尽快联想到近似的效果方便抄改脚本。


1楼2015-06-10 19:18回复
    要做一张卡,首先要做的是会拆分效果
    YGOCORE的卡片脚本大致分为四个部分
    condition:发动条件
    target:目标
    operation:详细效果处理
    cost:发动效果支付的代价
    TARGET和OPERATION有一定联系性,另外两个和其他的完全没有联系,直接拼凑也不会有什么问题。


    2楼2015-06-10 19:21
    回复

      用一张效果比较简单的同时包含4个要素的卡来做效果拆分的讲解。
      英雄到来
      ①:自己场上没有表侧表示怪兽存在的场合,把基本分支付一半才能发动。从卡组把1只4星以下的「元素英雄」怪兽特殊召唤。
      CONDITION,即发动条件,在这张卡里就是这句话:“自己场上没有表侧表示怪兽存在的场合”。
      COST,即需要支付的费用,在这张卡里是:“把基本分支付一半”。
      TARGET,即目标,在这张卡里是:“从卡组把1只4星以下的「元素英雄」怪兽”。
      OPERATION,即处理,在这张卡里是:“特殊召唤”。


      3楼2015-06-10 19:26
      回复
        由于TARGET和OPERATION有一定联系性,所以抄写的时候通常不把这两个要素拆分。拆分的话多少需要对脚本做一些修改。这里暂时不谈怎么细拆一个效果。把TARGET和OPERATION看成一个整体也是没有问题的。
        至于CONDITION和COST,有些效果并不存在这两个要素。制作这样的效果时,直接无视COST和CONDITION就行了,什么都不用写。
        某些比较罕见的没有OPERATION或TARGET的效果同理,没有就什么都不用写。


        4楼2015-06-10 19:29
        回复

          然后从下文开始看。这一段的标题是function c8949584.condition .....后略。
          14,这里的标题c8949584.condition和上文的SetCondition()括号内的内容对应起来了,说明这一段是对于CONDITION属性的详细设置。
          15,先解释一下 Duel.IsEx.......后略,这一段话的意义。翻译过来就是“存在符合条件的卡,在你的怪兽区域,表侧表示。”前面的not,大概就是说存在这种情况的时候这个效果不能发动。
          整体来看15行,表达的意义就是,“自己场上没有怪兽表侧存在的场合才能发动”,见英雄到来效果文本,对应上了。
          16,end,表示这段函数的结尾。
          CONDITION就这样设置完成了。


          6楼2015-06-10 19:46
          回复
            Duel.IsEx.......这一段东西,并不需要你去记忆它。要用的时候,找类似效果,直接抄就是了。说实话我也不是很清楚这段话里每一个字符分别代表什么意思,但是对于卡片制作并不是障碍。


            7楼2015-06-10 19:48
            回复

              然后是COST属性,关于标题和前文要保持一致就不重提了。
              18,chk是什么我也不清楚,为了不误导就不乱说了,抄就是。
              19,Duel.PayLPCOST.....后略。就是你支付这张卡发动所需的费用的动作。支付一半的基本分。见英雄到来文字效果描述。
              20,end,完结。
              COST设置完成。


              8楼2015-06-10 19:51
              回复

                target和operation作为一个整体来讲解。
                21,有人可能会疑惑,为什么多了一个标题是filter的函数,前文没有啊。
                其实这个是给后文用的,用于简化脚本的一个过滤函数。见26、32行,都有出现c8949584.filter这个名字。这里就是为后文设置的详细信息。理论上这个并不是必须的,只是为了简化脚本的手段。
                22,设置过滤内容,0x3008即元素英雄,islevelbelow4就是4星以下,iscan....就是它是可以特殊召唤的。
                23,end。
                24,不做重复解释,见前文。
                25,检查你的怪兽区域是否已满。
                26,检查你的卡组里是否存在上方filter内过滤出来的符合条件的卡。
                27,为下文的operation设置大类。“从卡组进行的特殊召唤。”
                28,end。
                29,不做重复解释,见前文。
                30,“如果你的怪兽区域已满,效果不处理。”
                31,在游戏内弹一个提示窗,“请选择特殊召唤的怪兽”。HINTMSG就是在游戏内弹出的提示消息。
                32,选择一只上面过滤后符合条件的即将特殊召唤的怪兽。这只被选择的怪兽在这里起一个别名,叫做“g”。
                33,“如果g的数量(见32行备注)大于0,那么就....”
                34,游戏内进行特殊召唤的动作。
                35,end。
                36,end。
                为什么这里有两个end,是因为end的数量是根据if的数量决定的。除了每个函数需要一个总结性的END以外,每一个if都需要一个end进行总结。而这里33行多出来一个if,所以后文要多一个end。


                9楼2015-06-10 20:03
                回复
                  这就是英雄到来的全部脚本了。
                  其实并不需要你去理解每一句话每个字段是什么意思,只要大概模棱两可的明白个大意即可。毕竟我们不是程序员,做卡主要靠抄而不是自己写。你让我写一个强欲之壶那么简单的效果,不靠抄,我也是够呛的。
                  但是每个大段落代表的意义必须要理解。


                  10楼2015-06-10 20:07
                  回复
                    下面做一个简单的示范,怎么写一张卡。
                    这里就做一张通常魔法卡,效果如下:
                    自己场上有怪兽存在的场合,支付一半基本分才能发动, 从卡组把1只怪兽送去墓地。
                    先来拆分效果。
                    condition:自己场上存在怪兽的场合。
                    cost:支付一半基本分才能发动。
                    target:从卡组把1只怪兽。
                    operation:送去墓地。


                    11楼2015-06-10 20:09
                    回复

                      效果总览。除了卡片密码以外,唯一与英雄到来不同的地方在于第五行的category。这里把spsummon改成tograve,因为这是一个堆墓效果而不是特殊召唤效果。
                      其他不改,全部照抄。


                      12楼2015-06-10 20:11
                      回复

                        设置condition详细内容。
                        还是直接照抄英雄到来。但我们这里做的condition有点不一样。英雄到来是“自己场上没有怪兽表侧存在的场合”,而我们这里是“自己场上有怪兽表侧存在的场合”,所以把15行的not去掉。
                        这是一个很简单的逻辑问题,仔细想想就能明白的。


                        13楼2015-06-10 20:15
                        回复

                          cost详细内容,和英雄到来完全没有区别,支付一半基本分才能发动。所以,直接全抄。
                          当然你愿意改成别的什么支付1000基本分啊,2000基本分啊,丢弃一张手卡啊之类的都没有问题,直接找个同cost的抄就是了。再强调一次,cost以及condition对前后文没有影响,只要标题和总览的setcost(......)括号内的名字对应上就行。


                          14楼2015-06-10 20:18
                          回复

                            target和operation。因为这张卡是“从卡组把1只怪兽送去墓地”,和愚蠢的埋葬完全没有区别,所以整段直接抄就行了。
                            值得说一下的就几点:
                            1,记得替换卡片密码。
                            2,抄来的标题名要和上文对应。比如这里28行是c123545.activate,那么上文第12行括号内的内容就也要改成c123545.activate(如果本来就相同则不用改)。
                            3,target和operation一定程度上是一个整体,新手不要散抄,尽量一起抄走。玩了一段时间有一定基础了再尝试分开抄。


                            15楼2015-06-10 20:22
                            回复
                              这张卡就制作完成了,很简单吧?


                              16楼2015-06-10 20:22
                              回复