游戏王残局简化版

Annotation For script/一点点点基础.md
Login

Annotation For script/一点点点基础.md

Origin for each line in script/一点点点基础.md from check-in a0c2de510d:

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>特召。