堆放吧 关注:317贴子:7,555
  • 16回复贴,共1

教程草稿:【教程发布】YGOCORE卡片添加教程(完整版)

只看楼主收藏回复

这个教程,其实是http://tieba.baidu.com/p/1498183366的完整版,作者@卡鲁洛斯 ,请相互转告。
我发这个教程之前,考虑过以下背景和因素:
①普及度——尽管网盘一直放着完整版教程,但是鲜有人注意到,从那个帖子的挖坟度、还有其它圈子推荐的残缺写卡教程上面可见一斑。
②入手度——从其它直接给出网盘下载地址的帖子上可以看出,直接给网盘的效果不好,大家都比较忙,如果不是拿起即看即用,效果也不好。
③需求度——每次一出新卡包,就有人表达希望ygocore立刻更新完,但是这要在更新者翻很多倍的情况下才能做到。那么教程是关键。
另外,这个是添加教程而非说明文档,并且相关软件一直在更新中,所以详细信息、最新信息以这两个地址为准:
http://ygocore.ys168.com/
http://247321453.ys168.com/
然后我会根据大家对教程的反应程度,考虑置顶ygocore是否加入基本开发工具和说明。


IP属地:广东1楼2014-07-23 10:20回复
    声明:本人曾写过太阳神三国杀的lua扩展,发现ygocore也是通过lua语法+API函数来作为脚本。
    本教程由@卡鲁洛斯编写,本人仅做整理工作,为的是让更多的人加入ygocore的lua脚本编写工作。但是由于人太少,使的脚本编写的人很少。为了使得ygocore像太阳神三国杀有个庞大的lua编写群体,本人为了大家方便阅读,因此整理他的教程。
    以下是@卡鲁洛斯的教程
    这篇教程是我自己写的,而我本人也是正在自学写卡。
    写这个教程的目的是为了什么?
    我也是最近才听说开源项目里英文版的卡片更新速度最快,同时也是听另外一个写卡的网友说在国内参与写卡的加上他和
    作者还有外加的那几个都不知道有没有10个人……国外的玩家果然比较热情,参与的人多。另外听这个网友说,有些想要写卡的人跑来问他要怎么实现奥蕾哈刚的效果……我瞬间就心疼了……尼玛还有一大堆正规卡还没录入,就惦记着去加这些没头没脑反都反规则的原创卡。
    所以我就觉得有必要让真正有意去为YGOCORE做出贡献的人开一个大门。于是就有了这个教程,希望能号召更多人参与YGOCORE的写卡事业。
    正如我所说,我也在学习写卡,所以可能教程里面会有很多不足,那就请原谅了。另外,与其说这是教程还不如说这是个学习笔记……都是我在学习写卡的过程中的一些心得。
    好郁闷……为了让教程更加容易入门内容反而越弄越乱。
    这个教程其实是第二版,第一版教程在我的电脑里,但是写的实在是太过“专业” ,只考虑到自己能看懂,没考虑到读者。所以我就重新把教程拆开来按入门的顺序重新排列,弄成空间上的第二版。但是第二版里面很多内容都是抄自第一版,并非完全的重写,搞得有些地方牛头不对马嘴,例如无端端就冒出了还没讲过的东西,无端端又提及了一些没有讲到的章节。
    由于赶进度,关于这个编排混乱的现象我暂时没办法从头开始检查,希望看这个教程的人能够帮忙指出哪里不对劲,给出一些建议,我好重新调整。
    另外,这个玩意儿与其说是个教程还不如说是个笔记。其实也就是我学些卡从里面分析来的一些心得,不权威啊!所以看的时候如果觉得不对,请不用怀疑了,直接跟我发信息,我去修正。
    在作者亲自解释之前,我曾经一度认为operation的执行会根据OperationInfo里的cagetory信息发出EVENT_事件来供星尘龙判定发动效果。不过我错了!operationInfo里的信息是写入连锁中的,表示该连锁里面包含某种操作类别,但是并没有引发时点。而星尘龙效果的时点是CHAINING(连锁中),不是DESTROY(破坏)。可见星尘龙是连锁中的时候进入时点,然后判断那个连锁里有没有破坏的操作类别。事实上我的理解与真相本质上是相同的,但是我却把这个解释成了时点,最后背向而驰误导了大众。我在这里先道个歉。
    如今我已经对我原本的说法进行了大规模的修正,但是我又苦于操作类别操作类别,连锁信息连锁信息,的解释有点太蒙人,于是我用了宣言这个词来指代。
    实质意思就是我们游戏王实卡对战时,自己效果发动时需要向对方发出宣言,宣布自己连锁里的操作的类别。以便对方针对这个宣言发动效果。
    例如:
    小明雪人发动效果,开连锁,他向对方宣言要破坏对方的怪兽卡。对方根据连锁中的这个宣言发动星尘龙效果,无效该连锁的效果并破坏效果所属卡片。
    这样一切都明了了。


    IP属地:广东2楼2014-07-23 10:21
    回复
      开头修改:
      另外,这个是添加教程而非说明文档,并且相关软件一直在更新中,比如DataEditorX更适合作为小白的编卡工具,所以详细信息、最新信息以这两个地址为准:


      IP属地:广东4楼2014-07-23 10:29
      回复
        另外,开头应该加上:
        此教程因为大概是两年前的,所以如有和现在有出入的地方,请在回复里面提出,可能会有进一步讨论,所以读者请不要忽视评论。


        IP属地:广东6楼2014-07-23 10:37
        回复
          YGOCORE 游戏王CORE的自定义卡片教程(3)——第一章续
          第一章续
          原本我是在第一章的第二节了里面准备了YGOCORE程序内部结构这一个内容的(这可是我辛辛苦苦看源码分析出来的),但是经过我深思熟虑我发现这内容除了我以外对于其他人没有任何意义……囧,所以就不贴出来了,只粗略的讲一讲YGOCORE里面会用到的自定义类型(其实就是面向对象里的类,这个不懂无所谓)
          2.1 自定义类型
          YGOCORE有三大自定义类型(就是YGOCORE自己定义出来的类型,面向对象里直接就是类的意思)YGOCORE里面各种处理的都基于这些类型的变量的。
          Card ——卡片类
          Group ——卡片组类
          Effect ——效果类
          这些类型都有成员变量(属性)和成员函数(行为)
          在lua里面调用这些类型的成员函数的方式如下
          卡片对象 : 对象成员函数
          C#######:GetXXXXXX()
          ※注意中间的冒号操作符,lua里面调用对象的成员函数都要这样做。而函数库里的函数调用就用点,例如Duel.Destroy()破坏某张卡。
          其实这不是严格上的解释,但是为了让大家快速入门,关于lua的语法特性我就能忽略就忽略。直接简单明了的说明。
          这三个类型里面最重要的是effect类,因为我们的效果就是effect类。我们写卡最有学问,最复杂,最耗时间,最头疼的就是写effect类的具体功能。所以我会详细的讲effect类。
          2.1.1 Card类是什么?
          Card类就是卡片类,YGOCORE在游戏开始的时候会从卡组deck文件里面读取 c+ID,然后以这个c+ID为名创建一个卡片对象,其实可以看做是card类型的变量吧。这个卡片对象有属于这个卡片的各种行为和属性。而我们YGOCORE的决斗系统Duel就是把弄这些卡片对象,将他们解放、破坏弄来弄去。Card类有什么属性(成员变量)有什么行为(成员函数),就到作者提供的function.txt里面查询(Set函数都是设置属性,Get函数都是获取属性)。由于Card对象不需要我们去创建和定义,所以我们根本就没要在意它需要设定什么值。只需要“拿来”就行了,用Get开头的成员函数获取一个现有的卡片的信息,然后对信息进行处理(主要是判断)。
          2.1.2 Group类是什么?
          Group类是卡片组类,不是卡组啊,是卡片组,卡组是Deck。卡片组是一堆卡片的集合,有些操作需要涉及到一组卡片例如卡片检索,需要将卡组里面符合条件的卡放到一起呈现在你面前让你选。这时候放到一起就放到了卡片组里面去了。这个类型跟card一样,我们不许要去设置,都是“拿来”(Get)。
          2.1.3 Effect类!高潮来了。
          这是最重要的类,我们的卡片的效果就是通过我们编写脚本来创建和定义这个类来实现具体的效果操作的。同时effect类也跟Card和Group一样可以“拿来”(Get)。
          以下是effect类的基本属性



          红色的属性conditioncost target operation就是效果的具体功能,他们都是函数需要我们自己去写实现代码,或者留空不设置。还记得我们的hello card么?hello card里面就没有设置这四个,但是依然可以用,可以发动效果。


          IP属地:广东7楼2014-07-23 10:48
          收起回复
            2.2 YGOCORE三大函数库
            YGOCORE的脚本系统有四大部分组成(实质就是函数库)
            Duel ——决斗系统
            Card ——卡片系统
            Group ——卡片组系统
            Effect ——效果系统
            Duel决斗系统
            主要负责整个决斗环境,它相当于是“一双手“,拿起卡片,放下卡片,抽一张卡,选择卡片,擦看卡片,破坏卡片等等等等的这些“手操作”都是由duel中的函数实现的。也就是说想要让YGOCORE“动起来”,想要将那些卡片弄来弄去,就要靠这个。这四个系统里面与图形引擎最亲密的就是Duel,大部分我们能够看得见的操作都是duel函数的作用。而其他三个系统则比较隐性,一般我们察觉不到他们工作。同时效果的连锁也是由Duel来控制,效果1发动-》效果2连锁-》效果3连锁,这些连锁会被duel一一记录然后逆向处理。
            Card卡片系统——对应card类型的函数
            它负责的是卡片的一些操作,大部分的参数是用来获取卡片的信息的,获取后用来逻辑判断。
            Group卡片组系统——对应Group类型的函数
            Effect效果系统——对应effect类型的函数
            基本Card卡片系统,大部分参数用来获取效果信息,另外他还能获取这个效果所属的那张卡片card。


            IP属地:广东8楼2014-07-23 10:49
            回复
              大工程啊。。加精


              来自iPhone客户端9楼2014-07-24 01:30
              回复
                @KK以德服人KK


                没什么好精的,我试着在贴吧发了一个只有地址的帖子,一个回复都没有,说明不是绝大多数人的菜,所以放网盘是了


                IP属地:广东10楼2014-07-24 01:31
                收起回复
                  楼主你好,我看了下卡片的lua源码,不算长但是成千上万的卡的确是大工程。写每张卡的逻辑相差会很大吗,换句话说卡片这个对象有统一性吗,封装一个写卡软件有可行性吗。


                  11楼2020-01-16 19:51
                  回复
                    楼主,我想问一下卡片类型是哪一块的码决定的,前面说的card码是包含在lua里的哪一块
                    还有就是字段到底在哪里设置


                    IP属地:江苏来自Android客户端13楼2021-01-25 11:30
                    收起回复