DELETED single_doc/副_容冗/一点点点基础.md Index: single_doc/副_容冗/一点点点基础.md ================================================================== --- single_doc/副_容冗/一点点点基础.md +++ /dev/null @@ -1,248 +0,0 @@ -# 一点点点基础 - -## 添加卡片 - -青眼白龙的卡密是 89631139 ,但查不到 c89631139.lua 。 - -估计只需要更改 cards.cdb ,就可以添加卡片了。 - -*** - -c89631139 的 c 是指 card ,就是「卡片」。 - -## 注册效果 - -火球的效果足够简单,就以火球为例。 - -火球里有很多函数,但并没有启用这些函数的语句,这表明它们自己单独是不能运行的,而是其他的东西给调用。 - -在 c46130346.lua ,有以下效果: - -~~~ -function c46130346.initial_effect(c) -end -~~~ - -它被 interpreter.cpp 所调用: - -~~~ -call_card_function(pcard, "initial_effect", 1, 0); -~~~ - -*** - -c46130346.initial_effect 不利于复制粘贴。 - -在 utility.lua 有: - -~~~ -function GetID() -end -~~~ - -所以可以这样注册效果: - -~~~ -local s,id,o=GetID() -function s.initial_effect(c) -end -~~~ - -## 效果描述 - -诸如 SetProperty ,其参数可以在 constant.lua 查。 - -*** - -简单的描述就写简单一点,复杂的描述就写复杂一点。 - -## 效果参数 - -在 processor.cpp 可以看到,有时给函数传参数的时候传的是匿名参数,所以很多时候,这些参数其实是的。 - -~~~ -e effect -tp this player -eg event group -ep event player -ev event value -re reason effect -r reason -rp reason player -chk check -chkc check card -~~~ - -*** - -0 指先攻玩家, 1 指后攻玩家,这是绝对的。 - -tp 指我方玩家, 1 - tp 指对方玩家,这是相对的。 - -*** - -这套效果参数,可以看作是一个规范,目的是为了便于看懂与复制代码。 - -## 效果检查 - -~~~ -function c46130346.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return 233333333 end - 233333333 -end -~~~ - -这个函数,我觉得应该看作两个函数。 - -它在 chk 的值不同时,执行不同的分支。 - -而 chk 取决于效果执行的阶段:检查阶段与执行阶段。 - -## 火球 - -~~~ -function c46130346.damtg(e,tp,eg,ep,ev,re,r,rp,chk) - if chk==0 then return true end - Duel.SetTargetPlayer(1-tp) - Duel.SetTargetParam(500) - Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) -end -~~~ - -*** - -把: - -~~~ -if chk==0 then return true end -~~~ - -改成: - -~~~ -if chk==0 then return false end -~~~ - -则无法发动火球。 - -*** - -去掉: - -~~~ -Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500) -~~~ - -则无法对应火球而发动痛魂之咒术。 - -*** - -去掉 - -~~~ -e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) -~~~ - -则无法对应火球而发动精灵之镜。 - -## 叛逆之罪宝-蛇眼 - -去掉: - -~~~ -e1:SetCountLimit(1,id+EFFECT_COUNT_CODE_OATH) -~~~ - -则可以发动多次。 - -*** - -去掉: - -~~~ -e1:SetDescription(aux.Stringid(id,0)) -~~~ - -则没有变化。 - -*** - -去掉: - -~~~ -Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP) -~~~ - -则提示文本发生改变。 - -这些提示文本可以在 constant.lua 中找到。 - -*** - -去掉: - -~~~ -e1:SetValue(TYPE_SPELL+TYPE_CONTINUOUS) -~~~ - -则旋风无法破坏那些怪兽。 - -*** - -去掉: - -~~~ -e1:SetReset(RESET_EVENT+RESETS_STANDARD-RESET_TURN_SET) -~~~ - -则那些怪兽离开场上后仍然被当作永续魔法卡。 - -## 废铁死亡恶魔 - -去掉: - -~~~ -c:EnableReviveLimit() -~~~ - -则没有苏生限制。 - -## 虫饵 - -去掉: - -~~~ -e2:SetCode(EFFECT_CANNOT_SUMMON) -~~~ - -则不会封锁召唤。 - -## 天底的使徒 - -去掉: - -~~~ -e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) -~~~ - -则我方仍然可从额外卡组特殊召唤怪兽。 - -*** - -去掉: - -~~~ -e1:SetReset(RESET_PHASE+PHASE_END) -~~~ - -则我方一直被限制特召。 - -## 异界共鸣-同调融合 - -去掉: - -~~~ -e1:SetTargetRange(1,0) -~~~ - -则我方仍可特召。