a0c2de510d 2023-10-04 1: # 一点点点基础
a0c2de510d 2023-10-04 2:
a0c2de510d 2023-10-04 3: ## 添加卡片
a0c2de510d 2023-10-04 4:
a0c2de510d 2023-10-04 5: 青眼白龙的卡密是 89631139 ,但查不到 c89631139.lua 。
a0c2de510d 2023-10-04 6:
a0c2de510d 2023-10-04 7: 估计<b>只需要</b>更改 cards.cdb ,就可以添加卡片了。
a0c2de510d 2023-10-04 8:
a0c2de510d 2023-10-04 9: ***
a0c2de510d 2023-10-04 10:
a0c2de510d 2023-10-04 11: c89631139 的 c 是指 card ,就是「卡片」。
a0c2de510d 2023-10-04 12:
a0c2de510d 2023-10-04 13: ## 注册效果
a0c2de510d 2023-10-04 14:
a0c2de510d 2023-10-04 15: 火球的效果足够简单,就以火球为例。
a0c2de510d 2023-10-04 16:
a0c2de510d 2023-10-04 17: 火球里有很多函数,但并没有启用这些函数的语句,这表明它们自己单独是不能运行的,而是<b>被</b>其他的东西给调用。
a0c2de510d 2023-10-04 18:
a0c2de510d 2023-10-04 19: 在 c46130346.lua ,有以下效果:
a0c2de510d 2023-10-04 20:
a0c2de510d 2023-10-04 21: ~~~
a0c2de510d 2023-10-04 22: function c46130346.initial_effect(c)
a0c2de510d 2023-10-04 23: end
a0c2de510d 2023-10-04 24: ~~~
a0c2de510d 2023-10-04 25:
a0c2de510d 2023-10-04 26: 它被 interpreter.cpp 所调用:
a0c2de510d 2023-10-04 27:
a0c2de510d 2023-10-04 28: ~~~
a0c2de510d 2023-10-04 29: call_card_function(pcard, "initial_effect", 1, 0);
a0c2de510d 2023-10-04 30: ~~~
a0c2de510d 2023-10-04 31:
a0c2de510d 2023-10-04 32: ***
a0c2de510d 2023-10-04 33:
a0c2de510d 2023-10-04 34: c46130346.initial_effect 不利于复制粘贴。
a0c2de510d 2023-10-04 35:
a0c2de510d 2023-10-04 36: 在 utility.lua 有:
a0c2de510d 2023-10-04 37:
a0c2de510d 2023-10-04 38: ~~~
a0c2de510d 2023-10-04 39: function GetID()
a0c2de510d 2023-10-04 40: end
a0c2de510d 2023-10-04 41: ~~~
a0c2de510d 2023-10-04 42:
a0c2de510d 2023-10-04 43: 所以可以这样注册效果:
a0c2de510d 2023-10-04 44:
a0c2de510d 2023-10-04 45: ~~~
a0c2de510d 2023-10-04 46: local s,id,o=GetID()
a0c2de510d 2023-10-04 47: function s.initial_effect(c)
a0c2de510d 2023-10-04 48: end
a0c2de510d 2023-10-04 49: ~~~
a0c2de510d 2023-10-04 50:
a0c2de510d 2023-10-04 51: ## 效果描述
a0c2de510d 2023-10-04 52:
a0c2de510d 2023-10-04 53: 诸如 SetProperty ,其参数可以在 <b>constant.lua</b> 查。
a0c2de510d 2023-10-04 54:
a0c2de510d 2023-10-04 55: ***
a0c2de510d 2023-10-04 56:
a0c2de510d 2023-10-04 57: 简单的描述就写简单一点,复杂的描述就写复杂一点。
a0c2de510d 2023-10-04 58:
a0c2de510d 2023-10-04 59: ## 效果参数
a0c2de510d 2023-10-04 60:
a0c2de510d 2023-10-04 61: 在 processor.cpp 可以看到,有时给函数传参数的时候传的是匿名参数,所以很多时候,这些参数其实是<b>空</b>的。
a0c2de510d 2023-10-04 62:
a0c2de510d 2023-10-04 63: ~~~
a0c2de510d 2023-10-04 64: e effect
a0c2de510d 2023-10-04 65: tp this player
a0c2de510d 2023-10-04 66: eg event group
a0c2de510d 2023-10-04 67: ep event player
a0c2de510d 2023-10-04 68: ev event value
a0c2de510d 2023-10-04 69: re reason effect
a0c2de510d 2023-10-04 70: r reason
a0c2de510d 2023-10-04 71: rp reason player
a0c2de510d 2023-10-04 72: chk check
a0c2de510d 2023-10-04 73: chkc check card
a0c2de510d 2023-10-04 74: ~~~
a0c2de510d 2023-10-04 75:
a0c2de510d 2023-10-04 76: ***
a0c2de510d 2023-10-04 77:
a0c2de510d 2023-10-04 78: 0 指先攻玩家, 1 指后攻玩家,这是绝对的。
a0c2de510d 2023-10-04 79:
a0c2de510d 2023-10-04 80: tp 指我方玩家, 1 - tp 指对方玩家,这是相对的。
a0c2de510d 2023-10-04 81:
a0c2de510d 2023-10-04 82: ***
a0c2de510d 2023-10-04 83:
a0c2de510d 2023-10-04 84: 这套效果参数,可以看作是一个规范,目的是为了便于看懂与复制代码。
a0c2de510d 2023-10-04 85:
a0c2de510d 2023-10-04 86: ## 效果检查
a0c2de510d 2023-10-04 87:
a0c2de510d 2023-10-04 88: ~~~
a0c2de510d 2023-10-04 89: function c46130346.damtg(e,tp,eg,ep,ev,re,r,rp,chk)
a0c2de510d 2023-10-04 90: if chk==0 then return 233333333 end
a0c2de510d 2023-10-04 91: 233333333
a0c2de510d 2023-10-04 92: end
a0c2de510d 2023-10-04 93: ~~~
a0c2de510d 2023-10-04 94:
a0c2de510d 2023-10-04 95: 这个函数,我觉得应该看作<b>两个</b>函数。
a0c2de510d 2023-10-04 96:
a0c2de510d 2023-10-04 97: 它在 chk 的值不同时,执行不同的分支。
a0c2de510d 2023-10-04 98:
a0c2de510d 2023-10-04 99: 而 chk 取决于效果执行的阶段:检查阶段与执行阶段。
a0c2de510d 2023-10-04 100:
a0c2de510d 2023-10-04 101: ## 火球
a0c2de510d 2023-10-04 102:
a0c2de510d 2023-10-04 103: ~~~
a0c2de510d 2023-10-04 104: function c46130346.damtg(e,tp,eg,ep,ev,re,r,rp,chk)
a0c2de510d 2023-10-04 105: if chk==0 then return true end
a0c2de510d 2023-10-04 106: Duel.SetTargetPlayer(1-tp)
a0c2de510d 2023-10-04 107: Duel.SetTargetParam(500)
a0c2de510d 2023-10-04 108: Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500)
a0c2de510d 2023-10-04 109: end
a0c2de510d 2023-10-04 110: ~~~
a0c2de510d 2023-10-04 111:
a0c2de510d 2023-10-04 112: ***
a0c2de510d 2023-10-04 113:
a0c2de510d 2023-10-04 114: 把:
a0c2de510d 2023-10-04 115:
a0c2de510d 2023-10-04 116: ~~~
a0c2de510d 2023-10-04 117: if chk==0 then return true end
a0c2de510d 2023-10-04 118: ~~~
a0c2de510d 2023-10-04 119:
a0c2de510d 2023-10-04 120: 改成:
a0c2de510d 2023-10-04 121:
a0c2de510d 2023-10-04 122: ~~~
a0c2de510d 2023-10-04 123: if chk==0 then return false end
a0c2de510d 2023-10-04 124: ~~~
a0c2de510d 2023-10-04 125:
a0c2de510d 2023-10-04 126: 则无法发动火球。
a0c2de510d 2023-10-04 127:
a0c2de510d 2023-10-04 128: ***
a0c2de510d 2023-10-04 129:
a0c2de510d 2023-10-04 130: 去掉:
a0c2de510d 2023-10-04 131:
a0c2de510d 2023-10-04 132: ~~~
a0c2de510d 2023-10-04 133: Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-tp,500)
a0c2de510d 2023-10-04 134: ~~~
a0c2de510d 2023-10-04 135:
a0c2de510d 2023-10-04 136: 则无法<b>对应火球</b>而发动痛魂之咒术。
a0c2de510d 2023-10-04 137:
a0c2de510d 2023-10-04 138: ***
a0c2de510d 2023-10-04 139:
a0c2de510d 2023-10-04 140: 去掉
a0c2de510d 2023-10-04 141:
a0c2de510d 2023-10-04 142: ~~~
a0c2de510d 2023-10-04 143: e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
a0c2de510d 2023-10-04 144: ~~~
a0c2de510d 2023-10-04 145:
a0c2de510d 2023-10-04 146: 则无法对应火球而发动精灵之镜。
a0c2de510d 2023-10-04 147:
a0c2de510d 2023-10-04 148: ## 叛逆之罪宝-蛇眼
a0c2de510d 2023-10-04 149:
a0c2de510d 2023-10-04 150: 去掉:
a0c2de510d 2023-10-04 151:
a0c2de510d 2023-10-04 152: ~~~
a0c2de510d 2023-10-04 153: e1:SetCountLimit(1,id+EFFECT_COUNT_CODE_OATH)
a0c2de510d 2023-10-04 154: ~~~
a0c2de510d 2023-10-04 155:
a0c2de510d 2023-10-04 156: 则可以发动多次。
a0c2de510d 2023-10-04 157:
a0c2de510d 2023-10-04 158: ***
a0c2de510d 2023-10-04 159:
a0c2de510d 2023-10-04 160: 去掉:
a0c2de510d 2023-10-04 161:
a0c2de510d 2023-10-04 162: ~~~
a0c2de510d 2023-10-04 163: e1:SetDescription(aux.Stringid(id,0))
a0c2de510d 2023-10-04 164: ~~~
a0c2de510d 2023-10-04 165:
a0c2de510d 2023-10-04 166: 则没有变化。
a0c2de510d 2023-10-04 167:
a0c2de510d 2023-10-04 168: ***
a0c2de510d 2023-10-04 169:
a0c2de510d 2023-10-04 170: 去掉:
a0c2de510d 2023-10-04 171:
a0c2de510d 2023-10-04 172: ~~~
a0c2de510d 2023-10-04 173: Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP)
a0c2de510d 2023-10-04 174: ~~~
a0c2de510d 2023-10-04 175:
a0c2de510d 2023-10-04 176: 则提示文本发生改变。
a0c2de510d 2023-10-04 177:
a0c2de510d 2023-10-04 178: 这些提示文本可以在 constant.lua 中<b>找到</b>。
a0c2de510d 2023-10-04 179:
a0c2de510d 2023-10-04 180: ***
a0c2de510d 2023-10-04 181:
a0c2de510d 2023-10-04 182: 去掉:
a0c2de510d 2023-10-04 183:
a0c2de510d 2023-10-04 184: ~~~
a0c2de510d 2023-10-04 185: e1:SetValue(TYPE_SPELL+TYPE_CONTINUOUS)
a0c2de510d 2023-10-04 186: ~~~
a0c2de510d 2023-10-04 187:
a0c2de510d 2023-10-04 188: 则旋风无法破坏那些怪兽。
a0c2de510d 2023-10-04 189:
a0c2de510d 2023-10-04 190: ***
a0c2de510d 2023-10-04 191:
a0c2de510d 2023-10-04 192: 去掉:
a0c2de510d 2023-10-04 193:
a0c2de510d 2023-10-04 194: ~~~
a0c2de510d 2023-10-04 195: e1:SetReset(RESET_EVENT+RESETS_STANDARD-RESET_TURN_SET)
a0c2de510d 2023-10-04 196: ~~~
a0c2de510d 2023-10-04 197:
a0c2de510d 2023-10-04 198: 则那些怪兽离开场上后仍然被当作永续魔法卡。
a0c2de510d 2023-10-04 199:
a0c2de510d 2023-10-04 200: ## 废铁死亡恶魔
a0c2de510d 2023-10-04 201:
a0c2de510d 2023-10-04 202: 去掉:
a0c2de510d 2023-10-04 203:
a0c2de510d 2023-10-04 204: ~~~
a0c2de510d 2023-10-04 205: c:EnableReviveLimit()
a0c2de510d 2023-10-04 206: ~~~
a0c2de510d 2023-10-04 207:
a0c2de510d 2023-10-04 208: 则<b>没有</b>苏生限制。
a0c2de510d 2023-10-04 209:
a0c2de510d 2023-10-04 210: ## 虫饵
a0c2de510d 2023-10-04 211:
a0c2de510d 2023-10-04 212: 去掉:
a0c2de510d 2023-10-04 213:
a0c2de510d 2023-10-04 214: ~~~
a0c2de510d 2023-10-04 215: e2:SetCode(EFFECT_CANNOT_SUMMON)
a0c2de510d 2023-10-04 216: ~~~
a0c2de510d 2023-10-04 217:
a0c2de510d 2023-10-04 218: 则<b>不会</b>封锁召唤。
a0c2de510d 2023-10-04 219:
a0c2de510d 2023-10-04 220: ## 天底的使徒
a0c2de510d 2023-10-04 221:
a0c2de510d 2023-10-04 222: 去掉:
a0c2de510d 2023-10-04 223:
a0c2de510d 2023-10-04 224: ~~~
a0c2de510d 2023-10-04 225: e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
a0c2de510d 2023-10-04 226: ~~~
a0c2de510d 2023-10-04 227:
a0c2de510d 2023-10-04 228: 则我方<b>仍然</b>可从额外卡组特殊召唤怪兽。
a0c2de510d 2023-10-04 229:
a0c2de510d 2023-10-04 230: ***
a0c2de510d 2023-10-04 231:
a0c2de510d 2023-10-04 232: 去掉:
a0c2de510d 2023-10-04 233:
a0c2de510d 2023-10-04 234: ~~~
a0c2de510d 2023-10-04 235: e1:SetReset(RESET_PHASE+PHASE_END)
a0c2de510d 2023-10-04 236: ~~~
a0c2de510d 2023-10-04 237:
a0c2de510d 2023-10-04 238: 则我方一直被限制特召。
a0c2de510d 2023-10-04 239:
a0c2de510d 2023-10-04 240: ## 异界共鸣-同调融合
a0c2de510d 2023-10-04 241:
a0c2de510d 2023-10-04 242: 去掉:
a0c2de510d 2023-10-04 243:
a0c2de510d 2023-10-04 244: ~~~
a0c2de510d 2023-10-04 245: e1:SetTargetRange(1,0)
a0c2de510d 2023-10-04 246: ~~~
a0c2de510d 2023-10-04 247:
a0c2de510d 2023-10-04 248: 则我方<b>仍可</b>特召。