したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

【遊戯王】ADS自作スクリプト投稿スレ

1名無しデュエリスト:2016/07/16(土) 07:42:18 ID:nfNN3lMY0

日本版ADSで使えるスクリプトで自分で組んだものを投稿したり、
組んだスクリプトのバグ修正、裁定やルール面での問題点などアドバイスを求めたり、
スクリプトについて質問したりするスレです。

アニメオリカ、完全オリカ、OCGTCGカードいずれでも構いません。

257名無しデュエリスト:2017/03/18(土) 01:39:45 ID:eAoR0UUg0
>>255
完コピして数値をちゃんと置換しても
「Action is not allowed here.」
と出てしまいます……
CostとOperationでは記述の仕方が違うのでしょうか

258名無しデュエリスト:2017/03/18(土) 01:43:53 ID:eAoR0UUg0
>>256
リバイバルゴーレムは元から蘇生・サルベージする効果なんだけど……?
Duel. の後に続くのが実際の処理
SendtoHandなら手札に送るしSpecialSummonなら特殊召喚

259201です:2017/03/18(土) 01:54:01 ID:ZbjKb5r60
>>258
他のカードを指定したいんです…

260名無しデュエリスト:2017/03/18(土) 01:56:49 ID:eAoR0UUg0
>>255
無事>>257を乗り越えて発動できましたが、残念なことにシャドーループの動きにはなりませんでした
シャドーループは
「デッキからシャドーループがフィールドに置かれ、デッキをシャッフル(亜白龍の特殊召喚のように、カードの発動や効果音もなくいきなり行われる)

シャドーループの発動(コーンという効果音とDuel.Hintの時のアレ)」
なんですが、Costの段階でDuel.MoveToFieldを処理しても
「デッキからコーンという効果音と共にカードが発動

カードがフィールドに置かれ、デッキをシャッフル

効果処理」
となってしまい、なんか違います

261名無しデュエリスト:2017/03/18(土) 02:05:08 ID:eAoR0UUg0
>>259
Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP)
この()の中身で特殊召喚するカードとか、する場所とか、表示形式を決めてる
どの数値がどれを指してるかはさっきあげたWikiで探してね

ちなみにe:GetHandler()は自分自身、つまり発動しているこのカード(リバイバルゴーレム)のこと
これの代わりにtcとか適当な文字を置いて、その前の時点で
local tc=Duel.IsExistingMatchingCard(ここはさっきみたいに決められた数値を入れる)
とかでtcがどういうカードかを定義しておけばいい

まあScript漁りまくって独学で得た知識だから間違ってるかもだけど

262201です:2017/03/18(土) 02:05:59 ID:ZbjKb5r60
>>261
ありがとうございます!

263名無しデュエリスト:2017/03/18(土) 02:13:05 ID:rAlYLzPM0
デッキから発動ならデッキの該当カードに直接デッキ用の効果与えたら?
効果は自身の発動時の効果で

264名無しデュエリスト:2017/03/18(土) 02:22:45 ID:eAoR0UUg0
>>263
そのデッキ用の効果ってのがちょっと上手くいかないんです
すごく短いので載せます
function c2000000005.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_SUMMON)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCost(c2000000005.cost)
e1:SetOperation(c2000000005.op)
c:RegisterEffect(e1)
local e2=e1:Clone()
e1:SetRange(0xf7)
c:RegisterEffect(e2)
end
function c2000000005.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end
Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true)
end
function c2000000005.op(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.Draw(tp,2,REASON_EFFECT)
end
これで全部です
手札からもデッキからも発動はできますが、デッキからの発動がシャドーループと全然違うのですっきりしないのです

265201です:2017/03/18(土) 02:41:25 ID:ZbjKb5r60
なんかうまくいきません…
「墓地に存在する同名カードを除く水属性モンスター」を()に指定したい場合はどうすればいいのでしょうか?

266名無しデュエリスト:2017/03/18(土) 02:50:35 ID:eAoR0UUg0
餅カエル辺りのScript参照
ADSのデッキ編集画面で「墓地の水」って検索したら色々出てくるよ
Targetの取り方が分からないだろうとは思うけど、とりあえず餅カエルをコピペして勉強してみて

267201です:2017/03/18(土) 03:11:20 ID:ZbjKb5r60
--special summon
local e6=Effect.CreateEffect(c)
e6:SetDescription(aux.Stringid(122446869,0))
e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e6:SetCode(EVENT_TO_GRAVE)
e6:SetTarget(c122446869.target)
e6:SetOperation(c122446869.operation)
c:RegisterEffect(e6)
function c122446869.grfilter(c)
return c:IsAttribute(ATTRIBUTE_WATER) and c:IsAbleToHand and LOCATION_GRAVE
end
function c122446869.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
local opt=0
local c=e:GetHandler()
local b1=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
local b2=c:IsAbleToHand()
if b1 and b2 then
opt=Duel.SelectOption(tp,aux.Stringid(122446869,1),aux.Stringid(122446869,2))+1
elseif b1 then
opt=Duel.SelectOption(tp,aux.Stringid(122446869,1))+1
elseif b2 then
opt=Duel.SelectOption(tp,aux.Stringid(122446869,2))+2
end
e:SetLabel(opt)
if opt==1 then
e:SetCategory(CATEGORY_SPECIAL_SUMMON)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c122446869.grfilter(),1,0,0)
elseif opt==2 then
e:SetCategory(CATEGORY_TOHAND)
Duel.SetOperationInfo(0,CATEGORY_TOHAND,c122446869.grfilter(),1,0,0)
else
e:SetCategory(0)
end
end
function c122446869.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if e:GetLabel()==1 then
if c:IsRelateToEffect(e) then
Duel.SpecialSummon(c122446869.grfilter,0,tp,tp,false,false,POS_FACEUP)
end
elseif e:GetLabel()==2 then
if c:IsRelateToEffect(e) then
Duel.SendtoHand(c122446869.grfilter,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,c)
end
end
end

量が多すぎてどこがエラー起こしてるかわからない…
誰か助けてください

268201です:2017/03/18(土) 03:13:30 ID:ZbjKb5r60
ここを追加する前は問題なかったのでここに問題あるとは思います。

269名無しデュエリスト:2017/03/18(土) 10:42:18 ID:eAoR0UUg0
いきなり完コピじゃなくて、少しずつ貼り付ける+削る
そうすればどこに問題があるか分かる
そしてエラーログを見よう
何行目にどんな問題があるか示してくれるから

270201です:2017/03/18(土) 12:10:51 ID:ZbjKb5r60
エラーログがなんか同じやつがいっぱい(callcardなんたら?ってやつ)でよくわかりません…
わかった場所が
return c:IsAttribute(ATTRIBUTE_WATER) and c:IsAbleToHand and LOCATION_GRAVE
end
のどこかくらいしか…

271名無しデュエリスト:2017/03/18(土) 12:17:34 ID:eAoR0UUg0
return c:IsAttribute(ATTRIBUTE_WATER) and c:IsAbleToHand and LOCATION_GRAVE
end
のどこかまでわかってたら、その中身をちょっとずつ削る
エラーログはなぜかデュエル中は全部表示されない(上に同じ奴がいっぱい出る)から、サレンダーしてソリティアの画面に戻ると上の部分が見える

見た感じカードの条件(.filterあたり)だね、そしたらそれは結構いろんなカードが持ってるから、「墓地のカードを手札に戻す」効果のカードを探して
似た部分をよく比較して組み合わせるんだ

272名無しデュエリスト:2017/03/18(土) 15:42:08 ID:rAlYLzPM0
>>264
e1:SetRange(LOCATION_DECK)
コレ入れてください

273名無しデュエリスト:2017/03/18(土) 15:55:35 ID:rAlYLzPM0
ああ、やっと理解しました。
少し調べてきます。

274名無しデュエリスト:2017/03/18(土) 16:06:46 ID:rAlYLzPM0
>>264
魔力の枷で使われているEFFECT_ACTIVATE_COSTでDuel.MoveToFieldをコストにするのはどうでしょう

275名無しデュエリスト:2017/03/18(土) 17:23:58 ID:eAoR0UUg0
>>274
うおおこれぞかなり求めていたものに近いです
しかし魔力の枷の対象が「プレイヤーの行動全般」なので、これを「特定のカードの発動」にどうすれば対象を移せるのか……
そもそもFunction内にe:GetHandler()を入れるすべがわかりません
e:GetHandler()はあらゆるカードに使われまくってて、どれを調べればいいのか見当もつかないのです
あるいは.filter内にe:GetHandler()を入れる方法です

276名無しデュエリスト:2017/03/18(土) 18:06:45 ID:f8HTCz560
なんかしばらく見てないうちにごちゃごちゃしてきたな…
ZbjKb5r60
>>267
eAoR0UUg0
・シャドーループみたいなデッキから発動のやり方
現状の質問はこんな感じ?

277名無しデュエリスト:2017/03/18(土) 18:19:35 ID:eAoR0UUg0
です。
魔力の枷(EFFECT_ACTIVATE_COST)というすごい近いものを教えていただいたんですが、
この定数なんだか「カード」にかけられないみたいで
EFFECT_SPSUMMON_COST や EFFECT_ATTACK_COST なんかはEFFECT_TYPE_SINGLEにしてやればカード自身がそれに準じてくれるんですが
これはどうもプレイヤーを対象にして行われる効果な(しかもACTIVATE全体だから.filterもできないっぽい)のでかなり難儀しているところです
「特定のカード(召喚や発動に対してではなく、カードの種族や属性やカード名)の発動にコストを課す」効果が他にあれば……

278名無しデュエリスト:2017/03/18(土) 18:27:41 ID:f8HTCz560
>>267
見た限りだと
・grfilter内の[c:IsAbleToHand]の後に括弧が抜けてる
・同行の[and LOCATION_GRAVE]は明らかに記述間違い
・operation内の特殊召喚、手札に加える部分の記述がおかしい
関数、引数、論理演算について基本的なことを調べる事をオススメする

279名無しデュエリスト:2017/03/18(土) 18:39:48 ID:eAoR0UUg0
魔力の枷から効果発動にコストを課す所だけ抜き出してみました
function c2000000005.initial_effect(c)
--Activate
〜〜e1は発動なので省略〜〜
--activate cost
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_ACTIVATE_COST)
e2:SetRange(LOCATION_SZONE)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e2:SetTargetRange(1,1)
e2:SetTarget(c2000000005.actarget)
e2:SetOperation(c2000000005.costop)
c:RegisterEffect(e2)
end
function c2000000005.actarget(e,te,tp)
return te:GetHandler():IsLocation(LOCATION_HAND)
end
function c2000000005.costop(e,tp,eg,ep,ev,re,r,rp)
Duel.PayLPCost(tp,500)
end
どうやらプレイヤーを対象にしているようですが……どこをどう攻めたらいいか全くわかりません
類似効果のカードがあれば参考にもできましょうが

280名無しデュエリスト:2017/03/18(土) 18:50:28 ID:f8HTCz560
>>279
SetRangeをLOCATION_DECKにして
actarget内の[te:GetHandler():IsLocation(LOCATION_HAND)]を
[te:GetHandler()==e:GetHandler()]にしてみたらどうかな?
駄目そうなら[e2:SetLabelObject(eXXXX)]で発動したい効果を渡して
[te==e:GetLabelObject()]

281名無しデュエリスト:2017/03/18(土) 19:08:52 ID:eAoR0UUg0
>>280
うーむこういうことでしょうか
  local e2=Effect.CreateEffect(c)
  〜〜略〜〜 
  e2:SetRange(LOCATION_DECK)
  e2:SetLabelObject(e3)
  c:RegisterEffect(e2)
  local e3=Effect.CreateEffect(c)
  e3:SetType(EFFECT_TYPE_ACTIVATE)
  e3:SetCode(EVENT_FREE_CHAIN)
  e3:SetOperation(c2000000005.op)
  c:RegisterEffect(e3)
end
function c2000000005.actarget(e,te,tp)
  return te==e:GetLabelObject()
end
function c2000000005.costop(e,tp,eg,ep,ev,re,r,rp)
  Duel.PayLPCost(tp,500)
end
function c2000000005.op(e,tp,eg,ep,ev,re,r,rp,chk)
  Duel.Draw(tp,2,REASON_EFFECT)
end

[e1][e3]共に発動はできるのですが、コストは課せられていませんでした
[e2]のEFFECT_FLAG_PLAYER_TARGETを消してもコストはありませんでした
それともSetLabelObjectで効果の渡し方を間違えているとか……?

282名無しデュエリスト:2017/03/18(土) 19:25:56 ID:f8HTCz560
>>281
とりあえず自分で作ってみた
e1は普通の発動時の効果とする

local e2=e1:Clone()
e2:SetRange(LOCATION_DECK)
c:RegisterEffect(e2)
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_FIELD)
e3:SetCode(EFFECT_ACTIVATE_COST)
e3:SetRange(LOCATION_DECK)
e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e3:SetTargetRange(1,1)
e3:SetTarget(c2000000005.actarget)
e3:SetOperation(c2000000005.costop)
c:RegisterEffect(e3)
e3:SetLabelObject(e2)
〜〜
function c2000000005.actarget(e,te,tp)
return te==e:GetLabelObject()
end
function c2000000005.costop(e,tp,eg,ep,ev,re,r,rp)
Duel.MoveToField(e:GetHandler(),tp,tp,LOCATION_SZONE,POS_FACEUP,true)
end

こんな感じで

283名無しデュエリスト:2017/03/18(土) 19:41:13 ID:eAoR0UUg0
>>282
ウワアアアアアできましたできました!ありがとうございます!
わざわざ書いてくださって……本当に感謝します!まさかe:GetLabelObjectが胆だったとは

ええと、何度も申し訳ないのですが、もう一つよろしいでしょうか……
Functionを入れるべきところにe:GetHandler()、つまり発動しているカード自身を入れたくなったときはどうしたらいいのでしょうか
あるいは.filter内にe:GetHandler()を入れる方法です。連続して頼むのは恐縮ですが……どのカードのスクリプトを参考にすればいいかだけでも構わないので

284名無しデュエリスト:2017/03/18(土) 20:05:02 ID:OV9uJmcY0
分からんけどデッキのカード全体に発動できる効果と発動する際の処理効果付与すればいいんじゃない?

285名無しデュエリスト:2017/03/18(土) 20:12:26 ID:f8HTCz560
>>283
Functionを入れるべきところ…?
済まないが質問がよく分からん…
一応言っておくがe:GetHandler()はCard型だから関数ではないぞ

.filterとかは自分で宣言して作ってる関数だから引数は何でも入れられる
例えば
function cX.filter(c,tc)
return c:GetAttack()==tc:GetAttack()
end
〜〜
cX.filter(sc,e:GetHandler())
とか
function cX.filter(c,e)
return c:GetAttack()==e:GetHandler():GetAttack()
end
〜〜
cX.filter(sc,e)
とか
質問の答えはこれで良いのかな…?

286名無しデュエリスト:2017/03/18(土) 20:20:30 ID:eAoR0UUg0
>>285
質問の仕方が悪かったみたいです、すみません
例えば
Duel.GetMatchingGroup(cX.filter,tp,LOCATION_HAND,0,nil,e,tp)
これの[cX.filter]の所に[e:GetHandler()]のような、「発動しているカード自身」を入れたいんです
自分Script漁って独学しただけでプログラムとかはほとんどずぶの素人なんで、言ってることがめちゃくちゃだとは思いますが、大体こういうことです

287名無しデュエリスト:2017/03/18(土) 20:34:23 ID:f8HTCz560
>>286
理解した
結論から言うとできない
ざっくり説明すると、Duel.GetMatchingGroup()の最初に入れるモノは関数じゃないといけない
関数型→cX.filter, Card.IsFaceup 等
e:GetHandler()は関数型ではなくCard型なので入れられない

多分e:GetHandler()をどうこうしたいんじゃないかと思うんだけど
それって[e:GetHandler():IsSpecialSummonable()]とかでできないかな?

288名無しデュエリスト:2017/03/18(土) 21:03:19 ID:eAoR0UUg0
>>287
なるほど、すると.filterの方で何とかするしかないのですね
しかし肝心のその方法がいまいち掴めず……
[e:GetHandler():IsSpecialSummonable()] これはどういった時に使うのでしょう?
localやreturn c==の直後に置くのでしょうか……?

289名無しデュエリスト:2017/03/18(土) 21:11:26 ID:Gzo3pjw20
>>282
このスクリプトを丸々コピーして使ったところ
発動時の段階でデッキから発動はできるのですが、カードが非公開情報のままになっており
複数種類デッキ発動が可能なカードがある場合、カードの判別ができません
どのようにしたら公開情報化できるでしょうか
アドバイスお願いします

290名無しデュエリスト:2017/03/18(土) 22:01:08 ID:f8HTCz560
>>288
普通使うのはIsCanBeSpecialSummonedだった
因みにこれはトラゴエディアとかの発動して自身をSSする効果に使われてる
取りあえずあなたは型について調べましょう

>>289
しら管
えっとマジでどうしよう…

291名無しデュエリスト:2017/03/18(土) 22:11:00 ID:Gzo3pjw20
>>290
デッキに存在する場合の永続効果でデッキを常に参照してみる的なことに挑戦してみてるんですがさっぱりなので・・・

292名無しデュエリスト:2017/03/18(土) 22:18:24 ID:f8HTCz560
>>291
永続効果でおとり人形と同じスクリプト使って発動はできなくはないんだけど、おとり人形の効果による発動に対してはチェーンできないんだよね…

293名無しデュエリスト:2017/03/18(土) 22:21:20 ID:rAlYLzPM0
>>289
デッキを1回公開すれば次のシャッフルまで公開情報になります。

294名無しデュエリスト:2017/03/18(土) 22:35:30 ID:Gzo3pjw20
>>293
窓を出さずに公開する方法はないものですかね

295201です:2017/03/18(土) 23:35:13 ID:ZbjKb5r60
>>294
パワーツールみたいに対象のカードを見せるようにすればいいのでは?

296名無しデュエリスト:2017/03/18(土) 23:50:41 ID:Gzo3pjw20
>>295
デッキからいきなり飛んでくるタイプなので見せるタイミングが存在してない気がします
自分の技術不足もあるでしょうが・・・

297201です:2017/03/18(土) 23:56:08 ID:ZbjKb5r60
なんだかうまくいきません…
とりあえず餅カエルの回収効果をコピペして動作するか試してみます。

298201です:2017/03/19(日) 00:06:31 ID:ZbjKb5r60
動作はしました。
対象に自身を含めないにはどうすればいいでしょうか?

299名無しデュエリスト:2017/03/19(日) 00:11:06 ID:Gzo3pjw20
フィルターにnot c:IsCode(カードID)でいけるのでは?

300201です:2017/03/19(日) 00:24:31 ID:ZbjKb5r60
>>299
できました。
あとは回収か蘇生かを選んで使えるようにするだけです。
リバイバルゴーレムではうまくいかなかったので、選択して一方を発動するスクリプトの原理(どこがどのような内容か)を誰か教えてください…

301名無しデュエリスト:2017/03/19(日) 00:46:41 ID:Gzo3pjw20
DDリリスとかの効果を書き換えてみては?
今自分も勉強中なんで詳しくはわからないですが

302201です:2017/03/19(日) 01:20:13 ID:ZbjKb5r60
>>301
e2=e1:Clone()
この部分ですかね?

303名無しデュエリスト:2017/03/19(日) 02:03:38 ID:Gzo3pjw20
>>302
b1、b2とかってやつですね
elseで区切られてるところに選びたい効果当てはめるといいっぽいですよ

304201です:2017/03/19(日) 02:34:42 ID:ZbjKb5r60
local b1=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
この行でエラー発生したんですが原因わかる方いませんか?

305201です:2017/03/19(日) 14:06:46 ID:ZbjKb5r60
エラーの内容は
[Script error:][string"./script/c122446869.lua"]:145:attempt to index global `c`(a nil value)
でした。
原因が分かる方がいましたら教えてください…

306名無しデュエリスト:2017/03/19(日) 14:51:01 ID:nfNN3lMY0
>>305
「145行目のcを定義してないよ」的なエラーだと思う

307名無しデュエリスト:2017/03/19(日) 15:31:16 ID:dtHavneY0
「トラミッド」フィールド魔法カード+「トラミッド」モンスター
自分フィールド・手札の上記カードを墓地へ送った場合のみ、EXデッキから特殊召喚できる。(「融合」は必要としない。)

この条件で出せる融合モンスターを作りたいのですがどのカードどう弄ればいいのかわかりません…

308201です:2017/03/19(日) 16:01:05 ID:ZbjKb5r60
local b1=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
ここのcの定義を水属性モンスターに変更するにはどうすればいいでしょうか?
定義のやり方だけでもいいので教えてください…

309201です:2017/03/19(日) 16:11:30 ID:ZbjKb5r60
>>307
青眼の双爆裂龍の素材指定を変えればできそう

310名無しデュエリスト:2017/03/19(日) 16:18:07 ID:nfNN3lMY0
ビーストアイズ・ペンデュラム・ドラゴンかなあ。
aux.AddFusionProcFun2の素材条件変更して
splimitで通常の融合召喚をできなくして
spconとspopのリリースを墓地送りにして手札でもいけるようにする感じかな
やったことないから違ったらすまん

311名無しデュエリスト:2017/03/19(日) 16:28:23 ID:dtHavneY0
ありがとうございます
初心者なのでたぶんまた来ます

312201です:2017/03/19(日) 16:29:57 ID:ZbjKb5r60
>>311
頑張れ!
俺も初心者だから大丈夫だよ!

313名無しデュエリスト:2017/03/19(日) 16:59:07 ID:Gzo3pjw20
>>307
動くけどエラーが出るものができました・・・

314名無しデュエリスト:2017/03/19(日) 17:04:43 ID:Gzo3pjw20
>>308
対象選ぶところでfilterかけれませんかね?

315名無しデュエリスト:2017/03/19(日) 17:05:34 ID:dtHavneY0
結局ダイナスターからひっぱてやってみたんですが
素材揃っていても出せず「e2:SetCondition(c300.spcon)」を消したら素材の有無に関係なく出せてしまい素材もリリースされません
function c300.initial_effect(c)
--fusion material
c:EnableReviveLimit()
--spsummon condition
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetCode(EFFECT_SPSUMMON_CONDITION)
e1:SetValue(c300.splimit)
c:RegisterEffect(e1)
--special summon rule
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_SPSUMMON_PROC)
e2:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_EXTRA)
e2:SetCondition(c300.spcon)
e2:SetOperation(c300.spop)
c:RegisterEffect(e2)
end
function c300.splimit(e,se,sp,st)
return e:GetHandler():GetLocation()~=LOCATION_EXTRA
end
function c300.spfilter1(c,tp,fc)
return c:IsFusionSetCard(0xe2) and c:IsType(TYPE_FIELD) and c:IsCanBeFusionMaterial(fc)
and Duel.CheckReleaseGroup(tp,c300.spfilter2,1,c,fc)
end
function c300.spfilter2(c,fc)
return c:IsType(TYPE_FIELD) and c:IsSetCard(0xe2) and c:IsCanBeFusionMaterial(fc)
end
function c300.spcon(e,c)
if c==nil then return true end
local tp=c:GetControler()
return Duel.GetLocationCount(tp,LOCATION_ONFIELD+LOCATION_HAND)>-2
and Duel.CheckReleaseGroup(tp,c300.spfilter1,1,nil,tp,c)
end
function c300.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g1=Duel.SelectReleaseGroup(tp,c300.spfilter1,1,1,nil,tp,c)
local g2=Duel.SelectReleaseGroup(tp,c300.spfilter2,1,1,g1:GetFirst(),c)
g1:Merge(g2)
c:SetMaterial(g1)
Duel.Release(g1,REASON_COST+REASON_FUSION+REASON_MATERIAL)
end
function c300.spfilter(c,e,tp)
return c:IsSetCard(0xe2) and c:IsType(TYPE_FIELD) and c:IsSetCard(0xe2) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end

316名無しデュエリスト:2017/03/19(日) 17:15:25 ID:Gzo3pjw20
自分はこんな感じに落ち着きましたがいかがでしょうか?
function c2129638.initial_effect(c)
--fusion material
c:EnableReviveLimit()
aux.AddFusionProcFunFunRep(c,c2129638.mfilter1,c2129638.mfilter2,1,true,true)
--spsummon condition
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetCode(EFFECT_SPSUMMON_CONDITION)
e1:SetValue(c2129638.splimit)
c:RegisterEffect(e1)
--special summon rule
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_SPSUMMON_PROC)
e2:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_EXTRA)
e2:SetCondition(c2129638.spcon)
e2:SetOperation(c2129638.spop)
c:RegisterEffect(e2)
end
function c2129638.mfilter1(c)
return c:IsSetCard(0xe2) and c:IsType(TYPE_FIELD)
end
function c2129638.mfilter2(c)
return c:IsSetCard(0xe2) and c:IsType(TYPE_MONSTER)
end
function c2129638.splimit(e,se,sp,st)
return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION
end
function c2129638.spfilter1(c,fc)
return c:IsSetCard(0xe2) and c:IsType(TYPE_FIELD) and c:IsCanBeFusionMaterial(fc) and c:IsAbleToGraveAsCost()
end
function c2129638.spfilter2(c,fc)
return c:IsSetCard(0xe2) and c:IsType(TYPE_MONSTER) and c:IsCanBeFusionMaterial(fc) and c:IsAbleToGraveAsCost()
end
function c2129638.spcon(e,c)
if c==nil then return true end
local tp=c:GetControler()
return Duel.GetLocationCount(tp,LOCATION_ONFIELD+LOCATION_HAND)>-2
and Duel.IsExistingMatchingCard(c2129638.spfilter1,tp,LOCATION_ONFIELD+LOCATION_HAND,0,1,nil,c)
and Duel.IsExistingMatchingCard(c2129638.spfilter2,tp,LOCATION_ONFIELD+LOCATION_HAND,0,1,nil,c)
end
function c2129638.spop(e,tp,eg,ep,ev,re,r,rp,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g1=Duel.SelectMatchingCard(tp,c2129638.spfilter1,tp,LOCATION_ONFIELD+LOCATION_HAND,0,1,1,nil,c)
local g2=Duel.SelectMatchingCard(tp,c2129638.spfilter2,tp,LOCATION_ONFIELD+LOCATION_HAND,0,1,1,nil,c)
g1:Merge(g2)
c:SetMaterial(g1)
Duel.SendtoGrave(g1,REASON_COST)
end

317名無しデュエリスト:2017/03/19(日) 17:24:33 ID:dtHavneY0
しっかり動きました!ありがとうございます…

318名無しデュエリスト:2017/03/19(日) 17:27:25 ID:Gzo3pjw20
自分はまだまだつぎはぎ職人なので内容はかなり汚いかもしれないです・・・

319名無しデュエリスト:2017/03/19(日) 17:29:09 ID:d7HIVcxE0
ADS内のC++のほうの解説してるサイトとかどっかにないでしょうか?
luaでもcdbでもないのでスクリプトスレでは若干スレチなんですけど、オープンソースは取得してありますがC++を一から覚えて読むより、既にある「スクリプト解説ブログ」のようなADSで使われる部分だけの解説のほうがとっつきやすくていい機会かなと思った次第です
もしC++のほうの自作・改変スレや解説ブログや情報交流サイトなどを知っている方がいましたら教えてくれると助かります

320201です:2017/03/19(日) 19:38:12 ID:ZbjKb5r60
local b1=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
これのcってどうやって「同名カードを除く水属性モンスター」を定義するように書き換えるんですか?
元は
local c=e:GetHandler()
です。

321名無しデュエリスト:2017/03/19(日) 20:44:46 ID:Gzo3pjw20
>>320
local c=e:GetHandler()は基本的に書き換えちゃダメな気がします(特殊な効果を除く)
ddリリスを丸コピして場所の定義を変えたりしたり、二つ目の選択肢を特殊召喚にしたりでできると思います

322名無しデュエリスト:2017/03/19(日) 21:29:00 ID:Gzo3pjw20
選択肢を出す奴を作ってみてるのですが以下のエラーが出ます
22:Parameter 2 should be "Effect".
該当行は
function c1500.filter2(c,e,tp)
return c:IsType(TYPE_MONSTER)
and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
の特殊召喚の下りです
そこを消したらエラーは出ないのですがいろいろと困ります
アドバイスよろしくお願いします

323名無しデュエリスト:2017/03/19(日) 22:30:25 ID:dtHavneY0
フリーチェーンのモンスター効果で
デッキからフィールド魔法を発動する効果を作りたいのですがどうすればいいでしょうか?
終焉の地かポップルアップあたりの発動条件をなくせば行けそうですが…

324名無しデュエリスト:2017/03/19(日) 23:04:17 ID:Gzo3pjw20
トラミッドモンスターの効果を変えたら作れると思いますよ(自分は挫折しました)

325201です:2017/03/19(日) 23:40:21 ID:ZbjKb5r60
>>321
場所が両方とも墓地なんです…
墓地のカードを
・蘇生
・サルベージ
で選択したいのですが…

326名無しデュエリスト:2017/03/19(日) 23:47:04 ID:Gzo3pjw20
一応仮で作りました
サーチ対象はデッキでモンスター以外の指定もなくそこそこ重大な不具合がありますが使えないことはないです
必要なところを書き換えたら使えるようになると思います
http://ux.getuploader.com/sinsiki_ads/download/1/c1500.lua

327名無しデュエリスト:2017/03/19(日) 23:48:33 ID:Gzo3pjw20
>>326>>325です
連投失礼しました

328201です:2017/03/20(月) 00:26:21 ID:ZbjKb5r60
>>326
ありがとうございます!
ところで、カードIDなどが合っているのに画像が表示されない(新しく追加したオリカのみ)の場合はどうすればいいでしょうか…

329名無しデュエリスト:2017/03/20(月) 00:36:29 ID:Gzo3pjw20
>>328
拡張子が違うとかサイズが違うとかではないでしょうか?

330201です:2017/03/20(月) 01:40:17 ID:ZbjKb5r60
ファイルサイズの問題かもしれません。
一度サイズを圧縮してみます。

331201です:2017/03/20(月) 02:27:35 ID:ZbjKb5r60
解決しました。

332201です:2017/03/20(月) 02:35:37 ID:ZbjKb5r60
--search
local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(122446869,0))
e2:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH)
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e2:SetCode(EVENT_SPSUMMON_SUCCESS)
e2:SetTarget(c122446869.thtg)
e2:SetOperation(c122446869.thop)
c:RegisterEffect(e2)
--Negate
さっきなぜか他のカードの効果にチェーンして特殊召喚したところ、サーチ効果が発動しませんでした。
原因わかりますか?

333名無しデュエリスト:2017/03/20(月) 08:20:01 ID:Gzo3pjw20
>>332
e2:SetProperty(EFFECT_FLAG_DELAY)を追加してみてはどうでしょう?

334201です:2017/03/20(月) 12:54:33 ID:ZbjKb5r60
>>333
解決しました。
ありがとうございました。

335名無しデュエリスト:2017/03/25(土) 21:53:31 ID:dtHavneY0

function c3006.filter(c)
return c:IsCode(78785392) and c:IsAbleToHand()
end
function c3006.target (e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(c3006.filter,tp,LOCATION_DECK,0,1,nil) end
Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK)
end

function c3006.target (e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(c3006.filter,tp,LOCATION_DECK,0,1,nil) end
local sg=Duel.GetMatchingGroup(c3006.filter,tp,LOCATION_DECK,0,nil)
Duel.SetOperationInfo(0,CATEGORY_REMOVE,sg,sg:GetCount(),0,0)
end
function c3006.activate(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local g=Duel.SelectMatchingCard(tp,c3006.filter,tp,LOCATION_DECK,0,1,1,nil)
if g:GetCount()>0 then
Duel.SendtoHand(g,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,g)
Duel.BreakEffect()
local sg=Duel.GetMatchingGroup(c3006.filter,tp,LOCATION_DECK,0,nil)
Duel.Remove(sg,POS_FACEDOWN,REASON_EFFECT)
end
end

デッキから花合わせを手札に加えて魔法・罠カードをすべて裏側表示除外しようとしたら、
除外とサーチどっちも花合わせになってしまいます
また一部をいじっても今度はどっちも魔法・罠になってしまいますどうすればいいでしょうか?

336名無しデュエリスト:2017/03/26(日) 20:24:12 ID:dNeEepXo0
データベースで登録した文字列を情報ウインドウで表示するのは「Duel.Hint〜」で合ってるよね?
この情報を、効果処理時じゃなくてモンスター召喚時や魔法発動時に表示するのはどうしたら良いだろう?

一応、想定としてはアニメで口上が設定されてるモンスターを召喚する時に、フィールドにカードが置かれる前に口上が表示される…って感じなんだけど…

337名無しデュエリスト:2017/03/27(月) 00:14:43 ID:zDWnMaCE0
>>335
まず自分で何書いてるか理解しましょう

>>336
フィールドで置かれる前の全てのタイミングに対応するのは難しいんじゃないかな
一応、融合召喚やX召喚なら素材を選択する部分のスクリプトをそのカード側に書いてる事があるから、それと同じ様なの作って最後に口上を表示させる事はできる

338名無しデュエリスト:2017/03/27(月) 00:22:29 ID:dNeEepXo0
>>337
フィールドに置かれる前はやっぱり難しいか…助言ありがとうございました

339名無しデュエリスト:2017/03/27(月) 00:26:12 ID:zDWnMaCE0
>>336
やっぱできるかも
トーチゴーレムにSSする際の処理があるからそこに向上入れれば、SSする度に口上が出る
融合召喚限定とかのやり方は試してないからわかんね

340名無しデュエリスト:2017/03/27(月) 15:34:37 ID:rAlYLzPM0
>>336
魔法罠の場合は発動コストで表示
モンスターの場合は召喚コスト(タイラントドラゴン)等に組み込む
チェーンブロックを作らない召喚(トーチ・ゴーレム、ゴウフウ)ならその処理に組み込む

341名無しデュエリスト:2017/03/27(月) 23:03:13 ID:vr7pISjg0
ダイヤウルフの魔法版のオリカを作っているのですが、ダイヤウルフのスクリプトを
そのまま流用すると自身を対象に選択できてしまいます。

g2=Duel.SelectTarget(tp,aux.TRUE,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,g1:GetFirst())
の最後の引数をいじれば良いは分かるのですが、どういじれば良いか分かりません

function c2261.desfilter(c)
return c:IsFaceup() and c:IsSetCard(0x798)
and Duel.IsExistingTarget(aux.TRUE,0,LOCATION_ONFIELD,LOCATION_ONFIELD,1,c)
end

function c2261.destg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return false end
if chk==0 then return Duel.IsExistingTarget(c2261.desfilter,tp,LOCATION_ONFIELD,0,1,e:GetHandler()) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)
local g1=Duel.SelectTarget(tp,c2261.desfilter,tp,LOCATION_ONFIELD,0,1,1,e:GetHandler())
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY)

local g2=Duel.SelectTarget(tp,aux.TRUE,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,g1:GetFirst())
g1:Merge(g2)
Duel.SetOperationInfo(0,CATEGORY_DESTROY,g1,g1:GetCount(),0,0)
end
function c2261.desop(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e)
Duel.Destroy(g,REASON_EFFECT)
end

342名無しデュエリスト:2017/03/28(火) 00:09:16 ID:2TEt0LwM0
>>341
SelectTargetの第8引数はCardだから2枚以上は与えられない
自身と先に選択したカードが選択されなければ良いからもう1個filter作って自身を対象外にすれば良い

343名無しデュエリスト:2017/03/28(火) 12:12:56 ID:vr7pISjg0
>>342
g2=Duel.SelectTarget(tp,c2261.filterX,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,g1:GetFirst())

見たいな感じでしょうか?
filter関数の中で、e:getHnadler()が使用できませんが、どうしたら良いでしょう?

344名無しデュエリスト:2017/03/28(火) 21:10:36 ID:sJRj/Fwg0
>>343
filterで使う第2引数以降の引数はSelectTargetの第9以降の引数で渡す
X.filter(c,tc) なら 〜SelectTarget(〜,1,1,g1:GetFirst(),e:GetHandler())
とか

346名無しデュエリスト:2017/03/31(金) 01:58:09 ID:8EVjueac0
デストーイマッチみたいに1体以上対象になったカードを全てを墓地へ送る効果を
作りたいのですが1体しか適応できません。どうすればいいでしょうか。

347名無しデュエリスト:2017/03/31(金) 16:58:52 ID:Gzo3pjw20
罠カードの発動にチェーンして発動できるカードで、
自分フィールドの表側表示のカードを任意の枚数選択して、
その枚数以下のカードを相手フィールドのカードから選んで、
選んだカードすべてを素材に自身をX召喚するカードを作っているのですが、
相手のカードを選んだ段階でフリーズしてしまいます
アドバイスお願いします
https://www.axfc.net/u/3792502

348名無しデュエリスト:2017/03/31(金) 19:16:40 ID:AtCUteXM0
>>346
マーチとリニッチが混ざってるぞ
マーチは複数体が対象になってる時はその内の1体を選ぶ処理が入ってるだろ
その部分を無くして、墓地へ送る部分を良い感じにすれば良い

>>347
フリー…ズ…?(信じられないものを見る目
魔法罠にX素材を与えるみたいな原理的におかしい事してないとフリーズはしないはずなんだが…
とにかく途中まで処理がうまく行ってるならその後に問題があるはずだからよく見なおせ

349名無しデュエリスト:2017/03/31(金) 22:56:47 ID:8EVjueac0
>>346 select消したりしても、狡猾な落とし穴で実験して
墓地に逝くのは1体のみでした。すべての対象のモンスターを
墓地へ送らせる方法は無いでしょうか?

350名無しデュエリスト:2017/04/02(日) 00:16:17 ID:8EVjueac0
>>346
あの後何とか成功しました、みなさんありがとうございました。

351名無しデュエリスト:2017/04/03(月) 11:33:47 ID:EzJE9BJU0
脳開発研究所の「LPを払うコストを代替する」効果って「手札を捨てるコストを代替する」に変更することはできますか?
EFFECT_LPCOST_REPLACE でLPのコストは変えられたんですが、手札コストに干渉する定数が見当たりません

352名無しデュエリスト:2017/04/09(日) 13:33:24 ID:YmKAqde.0
融合モンスターの記述を改造してリンク召喚を再現できないか見ているのですが、
c:IsHasEffect(6205579)
↑この記述はどんな意味を持っているのでしょうか?
融合素材の条件をチェックする関数にてこの条件に合致するモンスターが一律で条件から外されているように見えるのですが、
EFFECT系の定数にこの値が入っているものはありませんでした。
この条件に合致するモンスターが融合素材から外される理由が知りたいです。

どうぞ、宜しくお願い致します。

353名無しデュエリスト:2017/04/14(金) 00:34:03 ID:6OiG1vXo0
内輪対戦用に三幻魔を色々といじってるんだが
現環境で三幻魔を墓地から特殊召喚するとしたらコストはどれくらいにするのが適当かな?

アニメではウリアを墓地から特殊召喚するのに手札の罠カード1枚を墓地に送るだったけど
さすがに1枚じゃ安過ぎるよね
とりあえず

・ラビエル → 自分フィールドの悪魔族モンスター2体リリース。ただし、自分フィールド上に他のモンスターもいる場合ラビエルはこのターン攻撃不可

・ハモン → 手札の魔法カード2枚を墓地に送る。ただし、自分フィールド上に他のモンスターもいる場合ハモンはこのターン攻撃不可

・ウリア→手札の罠カード2枚を墓地に送る。ただし、自分フィールド上に他のモンスターもいる場合ウリアはこのターン攻撃不可

で作ってみたんだが・・・。

354名無しデュエリスト:2017/04/14(金) 00:38:21 ID:6OiG1vXo0
あ、言い忘れた。
OCGのエイリアスカードじゃなく別物カードで作ってるので
暗黒の召喚神や失楽園の恩恵はなしです。。。

355名無しデュエリスト:2017/04/14(金) 16:15:03 ID:.m1Z9OFE0
>>353
闇属性は墓地送り簡単だからラビエルはちとコスト安いかも

356名無しデュエリスト:2017/04/14(金) 18:39:03 ID:Ba44AsM20
アニメにおける三幻魔の自己蘇生能力持ちはウリアだけだったはずだが

しかし、ラビエルの蘇生コスト軽すぎなんだが
終焉の焔が実質ラビエルの蘇生カードになるんだが
幻魔トークン生きてればそれも使える

ウリアは2枚も墓地に罠送ったらダメだろw
2000も強化されてんぞ

ハモンは他にモンスターがいたらメイン2に守備表示で蘇生して壁にすればいいだけだから
攻撃不可のデメリットがあまり意味ない


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板