Hello Card 2.0!
现在我们为当初写的那个HelloCard 添加一个最基本的永续型效果。做法跟上次一样,不过这次为了让卡片留场,我们要修改卡库里面Hello Card的卡种,改成永续+魔法。
然后往lua脚本里面这样写
--hello card
function c19903192.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetOperation(c19903192.op) –调试用
c:RegisterEffect(e1)
--effect
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_CANNOT_ATTACK)
e2:SetRange(LOCATION_SZONE)
e2:SetTargetRange(LOACATION_MZONE,LOCATION_MZONE)
c:RegisterEffect(e2)
end
function c19903192.op(e,tp,eg,ep,ev,re,r,rp)
Duel.SelectYesNo(tp,1)
end
e1就是触发型效果的最基本代码,e2就是永续型效果的最基本代码。
以后我们写效果都是用这两种类型的效果不断细化组合出更具体的效果。
现在去测试一下,恩?发动效果的时候弹窗了!然后怪兽攻击阶段无法攻击了……
第一个效果是发动时弹窗,第二个永续型效果是无法攻击。
是否注意到这次的hello card里我为我们第一次写的效果e1加了一段代码? e1:SetOperation(c19903192.op)
效果初始化函数下面还有个function c19903192.op(……) 函数的定义
回到【2.1.3Effect类】那一节回顾一下operation是什么属性,没错,operation就是卡片效果处理操作,是一个函数,而我在这里定义的c19903192.op函数就是效果的效果处理函数,负责处理效果的操作。
这次这个函数里面只调用了Duel.SelectYesNo(tp,1),作用就是效果处理的时候弹出选一个是/否对话框,供玩家选择。
它在这里的实际用处是用来检查operation函数有没有被执行,换句话就是这个效果有没有真正的发动和处理。但是在正式的效果脚本里,这个函数是用来跟玩家交互的,也就是获取玩家的选择。
测试你的hello card,你会发现hallo card发动的时候弹出了这个对话框,证明效果发动并且真的处理操作了。
但是永续型效果却无法用这种方式调试,因为永续型效果一般不带operation,不会弹出什么东西。这就惨了,我怎么知道自己写的永续型效果有没有起作用?这就要慢慢来了。一般是先用容易检测到的永续型效果来测试基本代码是否无误,然后再修改成更具体的代码,这里涉及到效果脚本的调试请看2.4效果脚本的调试。
※再提供多一段代码给你,将这段代码添加到hallo card里看看。
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_TRIGGER_F+EFFECT_TYPE_FIELD)
e3:SetCode(EVENT_TO_GRAVE)
e3:SetRange(LOCATION_SZONE)
e3:SetOperation(c19903192.op)
c:RegisterEffect(e3)
在测试之前你能不能看懂这个效果什么意思?