ADSオリカ作成講座(仮)

遊戯王ADSのオリカの作り方を解説するブログです

ADSのオリカの作り方を解説するブログです。
エラッタ前の禁止カードのスクリプトを配布したりもする予定です。
エロゲレビューはこちら↓
※R-18注意!http://com3d2huuzoku.blog.jp/

EXデッキのモンスターを作ろう!

素材の指定とかちょいとばかし面倒なことが多いので解説します

EXデッキモンスターのスクリプトの構造

まずは、融合モンスターであるネフィリムのスクリプトを見てみましょう

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--エルシャドール・ネフィリム
function c20366274.initial_effect(c)
--fusion material
c:EnableReviveLimit()
aux.AddFusionProcShaddoll(c,ATTRIBUTE_LIGHT)
--cannot spsummon
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e2:SetCode(EFFECT_SPSUMMON_CONDITION)
e2:SetRange(LOCATION_EXTRA)
e2:SetValue(c20366274.splimit)
c:RegisterEffect(e2)
--tograve
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(20366274,0))
e3:SetCategory(CATEGORY_TOGRAVE)
e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e3:SetCode(EVENT_SPSUMMON_SUCCESS)
e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY)
e3:SetTarget(c20366274.tgtg)
e3:SetOperation(c20366274.tgop)
c:RegisterEffect(e3)
--destroy
local e4=Effect.CreateEffect(c)
e4:SetDescription(aux.Stringid(20366274,1))
e4:SetCategory(CATEGORY_DESTROY)
e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e4:SetCode(EVENT_BATTLE_START)
e4:SetCondition(c20366274.descon)
e4:SetTarget(c20366274.destg)
e4:SetOperation(c20366274.desop)
c:RegisterEffect(e4)
--tohand
local e5=Effect.CreateEffect(c)
e5:SetDescription(aux.Stringid(20366274,2))
e5:SetCategory(CATEGORY_TOHAND)
e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e5:SetCode(EVENT_TO_GRAVE)
e5:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DELAY)
e5:SetTarget(c20366274.thtg)
e5:SetOperation(c20366274.thop)
c:RegisterEffect(e5)
end
function c20366274.splimit(e,se,sp,st)
return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION
end
function c20366274.tgfilter(c)
return c:IsSetCard(0x9d) and c:IsAbleToGrave()
end
function c20366274.tgtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(c20366274.tgfilter,tp,LOCATION_DECK,0,1,nil) end
Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK)
end
function c20366274.tgop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g=Duel.SelectMatchingCard(tp,c20366274.tgfilter,tp,LOCATION_DECK,0,1,1,nil)
if g:GetCount()>0 then
Duel.SendtoGrave(g,REASON_EFFECT)
end
end
function c20366274.descon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local bc=c:GetBattleTarget()
return bc and bc:IsSummonType(SUMMON_TYPE_SPECIAL)
end
function c20366274.destg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler():GetBattleTarget(),1,0,0)
end
function c20366274.desop(e,tp,eg,ep,ev,re,r,rp)
local bc=e:GetHandler():GetBattleTarget()
if bc:IsRelateToBattle() then
Duel.Destroy(bc,REASON_EFFECT)
end
end
function c20366274.thfilter(c)
return c:IsSetCard(0x9d) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsAbleToHand()
end
function c20366274.thtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c20366274.thfilter(chkc) end
if chk==0 then return Duel.IsExistingTarget(c20366274.thfilter,tp,LOCATION_GRAVE,0,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local g=Duel.SelectTarget(tp,c20366274.thfilter,tp,LOCATION_GRAVE,0,1,1,nil)
Duel.SetOperationInfo(0,CATEGORY_TOHAND,g,1,0,0)
end
function c20366274.thop(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget()
if tc:IsRelateToEffect(e) then
Duel.SendtoHand(tc,nil,REASON_EFFECT)
end
end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
以上のスクリプトのうち、EXモンスター特有の素材指定が
--fusion material
c:EnableReviveLimit()
aux.AddFusionProcShaddoll(c,ATTRIBUTE_LIGHT)
という部分です
大体一番最初に書いてあります
適当なモンスターにこの文章を打ち込んで、データベースを融合モンスターに変更すれば
シャドール+光属性で融合できるモンスターの完成、ということになります

ちなみに、以下の部分は
「このカードは融合召喚でのみEXデッキから特殊召喚できる。」
というテキストを実装している部分です
--cannot spsummon
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e2:SetCode(EFFECT_SPSUMMON_CONDITION)
e2:SetRange(LOCATION_EXTRA)
e2:SetValue(c20366274.splimit)
c:RegisterEffect(e2)
~~~~以下省略~~~~
function c20366274.splimit(e,se,sp,st)
return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION
end
シンクロ、エクシーズ、リンクモンスターも大体同じ感じです
素材の指定方法について、もう少し詳しく解説していきます

素材の指定方法

種類ごとに素材の指定方法を解説します
特にエクシーズとリンクは複雑なので、ぜひ参考にしてみてください

融合モンスター

融合素材は比較的単純なので、ありがちな素材の指定方法に絞って解説します

①特定モンスター+特定モンスター
初期の融合モンスターやアニメ融合HEROみたいなカードのことです
スクリプトはこちら(フレイム・ウィングマン)
--fusion material
c:EnableReviveLimit()
aux.AddFusionProcCode2(c,21844576,58932615,true,true)
括弧内の数字は融合素材となるカードのIDです
フレイム・ウィングマンの場合、フェザーマンとバーストレディのIDを書くことによって
素材を指定しています
この数字を変えるだけで好きなカードを素材に指定できます

②特定の種族×n体
F・G・Dのような素材の指定です
↓がそのスクリプトです(F・G・D)
--fusion material
c:EnableReviveLimit()
aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsRace,RACE_DRAGON),5,true)
括弧内のRACE_DRAGONでドラゴン族を指定しており、
その隣の数字で必要な枚数を指定しています
↓のように変更すれば、「戦士族モンスター×2」という素材指定になります
--fusion material
c:EnableReviveLimit()
aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsRace,RACE_WARRIOR),2,true)

③特定カテゴリ×n体
マスター・ダイヤのような素材の指定です
↓スクリプト(マスター・ダイヤ)
--fusion material
c:EnableReviveLimit()
aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x1047),3,false)
括弧内の0x1047がカテゴリ、隣の数字が必要な枚数です
②と同じように編集すればOK

④特定カテゴリ+特定の属性
属性HEROやシャドールみたいなやつです
↓スクリプト(アブソルートZero)
--fusion material
c:EnableReviveLimit()
aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0x8),
        aux.FilterBoolFunction(Card.IsFusionAttribute,ATTRIBUTE_WATER),true)
3行目にある0x8がカテゴリの指定に、
4行目にあるATTRIBUTE_WATERが属性の指定になっています
これらを変更するだけで大丈夫です

シンクロモンスター

シンクロも大したことないです
融合同様に適当なモンスターからパクって来て
ちょこっと変えるだけで済みます

①チューナー+チューナー以外のモンスターn体以上
ごく普通の素材指定です
↓スクリプト(スターダスト)
--synchro summon
aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1)
c:EnableReviveLimit()
一番右にある数字がチューナー以外のモンスターの数です
トリシューラとかはこの数字が2になっています

②特定カテゴリのチューナー+チューナー以外のモンスター
こっちもよくありますね
↓スクリプト(BFアームズ・ウィング)
--synchro summon
aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsSetCard,0x33),aux.NonTuner(nil),1)
c:EnableReviveLimit()
これも融合の時みたいに括弧内の16進数0x33を変えてやればOK

③チューナー+特定カテゴリのモンスター
さっきの逆バージョン
↓スクリプト(青眼の精霊龍)
--synchro summon
aux.AddSynchroProcedure(c,nil,aux.NonTuner(Card.IsSetCard,0xdd),1)
c:EnableReviveLimit()
こっちも括弧内の16進数0xddを変えるだけでOK

エクシーズモンスター

エクシーズも面倒なのは一部だけです

①レベルnモンスター×r体
ごく普通の素材指定
↓スクリプト(素ホープ)
--xyz summon
aux.AddXyzProcedure(c,nil,4,2)
c:EnableReviveLimit()
このスクリプトでいう4がレベルを、2がモンスターの数を表しています

②レベルnモンスター×r体以上
プトレやロンゴミアントみたいなタイプです
↓スクリプト(プトレマイオス)
--xyz summon
aux.AddXyzProcedure(c,nil,4,2,nil,nil,99)
c:EnableReviveLimit()
このスクリプトでいう4がレベル、2がモンスターの数、99がr体以上
ということをそれぞれ表しています
↓のように編集すればレベル5モンスター×3体以上という素材指定になります
--xyz summon
aux.AddXyzProcedure(c,nil,5,3,nil,nil,99)
c:EnableReviveLimit()

③レベルn特定カテゴリモンスター×r体
オピオンみたいな素材指定です
↓スクリプト(オピオン)
--xyz summon
aux.AddXyzProcedure(c,aux.FilterBoolFunction(Card.IsSetCard,0xa),4,2)
c:EnableReviveLimit()
例によって括弧内の16進数0xaを変更するだけでOK
快適に使えるサーバーなら【Z.com】
④重ねてエクシーズできる
ホームページ作成サービス「グーペ」
インフィニティやダークマターのような素材指定です
↓スクリプト(ギャラクシーアイズFA・フォトン・ドラゴン)
--xyz summon
aux.AddXyzProcedure(c,nil,8,3,c39030163.ovfilter,aux.Stringid(39030163,0))
c:EnableReviveLimit()
~~~~省略~~~~
function c39030163.ovfilter(c)
return c:IsFaceup() and c:IsSetCard(0x107b) and c:IsType(TYPE_XYZ) and not c:IsCode(39030163)
end
「自分以外のギャラクシーアイズXモンスターに重ねてエクシーズ」
という素材指定です
function c39030163.ovfilter(c)の括弧内にある16進数0x107bがカテゴリを
TYPE_XYZがエクシーズモンスターであることを指定しています

リンクモンスター

リンクモンスターは少々厄介なので、基本的な素材指定について確認した後
特殊な素材指定について見ていきましょう

①モンスターn体
プロキシー・ドラゴンのようなタイプです
↓スクリプト(プロキシー・ドラゴン)
--link summon
aux.AddLinkProcedure(c,nil,2,2)
c:EnableReviveLimit()
括弧内左側の数字がn体であること、その隣にある
右側の数字がn体ちょうどであることを表しています

②モンスターn体以上
ガイアセイバーのような素材指定です
さっきと違うのはn体ちょうどじゃなくてもいい、っていう所です
↓スクリプト(ガイアセイバー)
--link summon
aux.AddLinkProcedure(c,nil,2)
c:EnableReviveLimit()
括弧内の数字がn体であることを表しています
n体ちょうどということを指定していた右側の数字がなくなっていますね

③効果モンスターn体以上
デコード・トーカーのようなタイプです
↓スクリプト(デコード・トーカー)
--link summon
aux.AddLinkProcedure(c,aux.FilterBoolFunction(Card.IsLinkType,TYPE_EFFECT),2)
c:EnableReviveLimit()
括弧内のTYPE_EFFECTが効果モンスター縛りを表しています
例えばここをTYPE_XYZに変えれば「Xモンスター2体以上」という素材指定になります

④特定カテゴリモンスターn体以上
プライムバンシーのようなタイプです
↓スクリプト(プライムバンシー)
--link summon
c:EnableReviveLimit()
aux.AddLinkProcedure(c,aux.FilterBoolFunction(Card.IsLinkSetCard,0x103),2)
例によって括弧内の16進数0x103を変えるだけですね
ConoHa WING
⑤特定カテゴリモンスターを含むモンスターn体
ここからちょっと面倒なやつになります
↓は「ジャックナイツ」を含むモンスター2体という指定です(明星の機械戦士)
--link summon
aux.AddLinkProcedure(c,nil,2,2,c72006609.lcheck)
c:EnableReviveLimit()
~~~省略~~~
function c72006609.lcheck(g,lc)
return g:IsExists(Card.IsLinkSetCard,1,nil,0x10c)
end

function c72006609.lcheck(g,lc)の括弧内の数字が
「特定カテゴリモンスターをn体含めなければならない」ということを表しています
今回は1なので、「ジャックナイツを1体でも含んでいればOK」ということになります
ジャックナイツ以外を指定したかったら16進数を変えれば大丈夫です

⑥特定カテゴリモンスターを含む一定のモンスターn体以上
めっちゃややこしいですね
オルフェゴール・ロンギルスを例にしてみましょう

こいつの素材指定は
「オルフェゴールを1体以上含む」
「効果モンスター2体以上」
この2つを両方満たさなければならない、というものです

スクリプトを見てみましょう
--link summon
aux.AddLinkProcedure(c,aux.FilterBoolFunction(Card.IsLinkType,TYPE_EFFECT),2,99,c76145142.lcheck)
c:EnableReviveLimit()
~~~省略~~~
function c76145142.lcheck(g)
return g:IsExists(Card.IsLinkSetCard,1,nil,0x11b)
end

--link summonの括弧内にある
TYPE_EFFECT効果モンスター縛り

function c76145142.lcheck(g)の括弧内にある
数字1特定カテゴリを含めなければならない数
16進数0x11b特定カテゴリ=オルフェゴール
ということをそれぞれ表しています

まとめ

以上、長々と書き連ねてきましたが
要するに作りたい素材指定と似たような指定をしているカードから
スクリプトをコピペして改変するだけでOKです

次回はEXデッキモンスターのデータベースについて解説したいと思います
快適に使えるサーバーなら【Z.com】


霊使いのオリカ第2弾!

動画はこちら↓

https://youtu.be/Wh_EX9PW4cI

霊使いのサーチや属性変更ができるオリカを作って友人と対戦しました
ファンデッキ相手ならそこそこ戦える、丁度いい塩梅のカードだと思います

スクリプトはこちら↓

https://ux.getuploader.com/orica/
前回の記事で紹介したオリカも入っています


※※導入方法※※
①ダウンロードしたファイルを解凍
②「custom.cdb」と「script」をADSのフォルダにコピペ
③お好みでカードの画像を「pics」フォルダに入れて完了!

次回もややマイナーなデッキを程よく強化するオリカを作ってみたいと思います
お楽しみに!

下のリンクからダウンロードできます
【国内最速No.1】高性能レンタルサーバーConoHa WING
ダウンロードリンク:https://ux.getuploader.com/orica/

ヒータ
この子の地、水、風、光、闇属性版をそれぞれ作成しました

解凍してでてきた「custom.cdb」「script」をそのままADSのフォルダにコピペしてください
画像についてはお手数ですが各自で用意してください

君もリンクモンスターとして生まれ変わった霊使いと一緒に戦おう!

↑このページのトップヘ