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

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

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

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

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

430名無しデュエリスト:2017/07/24(月) 22:08:29 ID:NYxQqVLs0
>>427
すみません、お礼言うの忘れてました。
どうもありがとうございます。

431名無しデュエリスト:2017/07/24(月) 22:15:02 ID:NYxQqVLs0
>>429
てっきり返事来てないと思ったので(見た時には返事が表示されて無かったので)、変な返しになってしまった…
お返事どうもありがとうございます!
もし、自分でやってみてそれでも出来なかったら効果文を載せます。

432名無しデュエリスト:2017/07/24(月) 22:15:50 ID:OfGqjuWg0
頑張ってみてなー
やっぱりこの手の自分でいじれるのは楽しいからね

433名無しデュエリスト:2017/07/25(火) 00:38:58 ID:NYxQqVLs0
>>432
遂に作りたかった効果のカードを完成させることが出来ました!
本当にありがとうございます!!

434名無しデュエリスト:2017/07/25(火) 00:52:15 ID:2tCEEvQA0
よかったよかった

435名無しデュエリスト:2017/07/25(火) 20:51:01 ID:NYxQqVLs0
>>434
完成したと言っておきながら、動作確認を綿密にしてみたら、不具合があることが発覚しました…(泣
すいません、また質問しても宜しいでしょうか?
どうしても完成させたいカードなので、宜しくお願いします。

436名無しデュエリスト:2017/07/25(火) 21:19:06 ID:2tCEEvQA0
今度はなんぞ

437名無しデュエリスト:2017/07/25(火) 22:06:50 ID:NYxQqVLs0
>>436
返信ありがとうございます!

実はこういう効果のカードを作っていまして。
「このカード名の効果は1ターンに1度しか使用できず、相手ターンでも発動できる。
①:このカードが墓地に存在する場合、手札を2枚墓地へ送り、自分の墓地の通常罠カード1枚を対象として発動できる。
そのカードを除外し、このカードを通常罠カード扱いとして自分フィールドにセットする。
この効果でセットしたこのカードは、その除外したカードの発動時と同じ効果のカードとして発動できる。」

そちらの言った通りにe1:SetCountLimit(1,29762407)で設定してみたのですが、

「王家の神殿」の(1)の効果を発動して、このモンスター以外の、そのターンにセットした罠カードを発動すると、
前のターンから魔法&罠ゾーンにセットされてある、このモンスターの発動ができなくなります。
元々セットされてあるカードなので、王家の神殿の効果を適用しても、発動できなきゃおかしいのに上手く行きません。

スクリプトを一部載せるので、どこが悪いか見て頂けないでしょうか?

if not c99999999.global_check then
c99999999.global_check=true
local ge1=Effect.CreateEffect(c)
ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
ge1:SetCode(EVENT_SSET)
ge1:SetOperation(c99999999.checkop)
Duel.RegisterEffect(ge1,0)
end

function c99999999.checkop(e,tp,eg,ep,ev,re,r,rp)
local g=eg:Filter(Card.IsCode,nil,99999999)
local tc=g:GetFirst()
while tc do
tc:RegisterFlagEffect(99999999,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1)
tc=g:GetNext()
end
end

function c99999999.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local tc=Duel.GetFirstTarget()
if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and c:IsCanTurnSet() then
if Duel.Remove(tc,POS_FACEUP,REASON_EFFECT)~=1 then return end
Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEDOWN,true)
c:SetStatus(STATUS_SET_TURN,true)
Duel.RaiseEvent(c,EVENT_SSET,e,REASON_EFFECT,tp,tp,0)
local e1=Effect.CreateEffect(c)
e1:SetCode(EFFECT_CHANGE_TYPE)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetReset(RESET_EVENT+0x1fe0000)
e1:SetValue(TYPE_TRAP+TYPE_NORMAL)
c:RegisterEffect(e1)
local te=tc:GetActivateEffect()
if te then
local e1=Effect.CreateEffect(c)
e1:SetDescription(te:GetDescription())
e1:SetCategory(te:GetCategory())
e1:SetProperty(te:GetProperty())
e1:SetType(EFFECT_TYPE_QUICK_O+EFFECT_TYPE_ACTIVATE)
e1:SetCode(te:GetCode())
e1:SetRange(LOCATION_SZONE)
if c:GetFlagEffect(99999999)~=0 then
e1:SetCountLimit(1,29762407)
end
e1:SetReset(RESET_EVENT+0x1fe0000)
e1:SetLabelObject(te)
e1:SetCondition(c99999999.accon)
if te:GetCost() then
e1:SetCost(te:GetCost())
end
e1:SetTarget(c99999999.actg)
e1:SetOperation(c99999999.acop)
c:RegisterEffect(e1)
end
end
end

438名無しデュエリスト:2017/07/25(火) 22:12:18 ID:NYxQqVLs0
長くなってしまってすみません…

439名無しデュエリスト:2017/07/25(火) 22:26:57 ID:NYxQqVLs0
後、前のターンからこのモンスターが魔法&罠ゾーンに伏せてあって、
王家の神殿が場にある状態で発動すると、そのターンにセットした
他の罠カードが発動できなくなる不具合もあります。

440名無しデュエリスト:2017/07/25(火) 22:39:19 ID:2tCEEvQA0
local e1 = ホニャララ
が二箇所あるのはわかりにくぅい!

私の勘違いでなければ同じスコープで二重にe1を定義しているような

>元々セットされてあるカードなので、王家の神殿の効果を適用しても、発動できなきゃおかしいのに上手く行きません。
このカード名の効果は相手ターンでも発動できる。
①:このカードが墓地に存在する場合、手札を2枚墓地へ送り、自分の墓地の通常罠カード1枚を対象として発動できる。
そのカードを除外し、このカードを通常罠カード扱いとして自分フィールドにセットする。
この効果でセットしたこのカードは、その除外したカードの発動時と同じ効果を得る。
セットされたこのカードは1ターンに1度のみ発動でき、「王家の神殿」の①の効果を発動したターンには発動できない。

って感じのテキストになってるな
SetCountLimitを差し込む場所が違ったのだ

441名無しデュエリスト:2017/07/25(火) 22:40:23 ID:2tCEEvQA0
>>439
だって今のコードだとセットされたこのカードが発動した時に「王家の神殿」の1の効果を発動できない制約が掛かるようになってるからね!

442名無しデュエリスト:2017/07/25(火) 22:55:48 ID:NYxQqVLs0
>>441
お返事ありがとうございます。
RegisterFlagEffectの設定は削除するとして、
SetCountLimitはどの辺りに差し込めば良いのでしょうか?

443名無しデュエリスト:2017/07/25(火) 23:18:24 ID:NYxQqVLs0
スクリプト作るのは思っていたより難しいです…
まだまだ知識不足なので、力を貸して頂けると嬉しいです。

444名無しデュエリスト:2017/07/25(火) 23:30:31 ID:2tCEEvQA0
c99999999.initial_effectの中で
eホニャララ:SetOperation(c99999999.operation)している
eホニャララがあるよな?
それにeホニャララ:SetCountLimit(1,29762407)すればよろし

445名無しデュエリスト:2017/07/25(火) 23:52:57 ID:NYxQqVLs0
>>444
その「initial_effect」には既にe1:SetCountLimit(1,99999999)が入っているのですが、どうすればいいのでしょうか?
「このカード名の効果は1ターンに1度しか使用できず、」という効果なので、
効果自体を変えるしか、方法は無いのでしょうか?

446名無しデュエリスト:2017/07/25(火) 23:54:47 ID:2tCEEvQA0
>>445
そこを99999999から29762407に変えても
このカード名のこの効果および「王家の神殿」の1の効果は1ターンに1度のみ発動できるというセンテンスの意味は守られる

447名無しデュエリスト:2017/07/25(火) 23:57:52 ID:NYxQqVLs0
>>446
なるほど…解りました。ありがとうございます。

448名無しデュエリスト:2017/08/19(土) 21:06:26 ID:8EVjueac0
>>395
>>394 の者です
この前二重魔法のスクリプトをおとり人形で代用するとなんとうまくいきました。(「発動させた」ラウンチが素材になった)
なぜかはよく分からないですけど。

449名無しデュエリスト:2017/08/21(月) 23:38:51 ID:B7ubqhbM0
>>1には「日本版ADSで〜」って書かれてるけど場所が無いのでβ版について相談

日版ADSだと[Duel.SendtoDeck(tc,tp,-1,REASON_RULE)]でトークンの様に完全にロストさせる事ができたんだけど、
β版だとそれができなくて困ってます
どなたかこのような処理ができる方法を知りませんか?

450名無しデュエリスト:2017/08/27(日) 15:35:35 ID:Gzo3pjw20
マキュラのカウンター罠版みたいなのを作ろうとしてるのですが
targetにカウンター罠を入れるのってどうすればいいのでしょうか

451名無しデュエリスト:2017/08/27(日) 23:39:48 ID:mHYEsjTQ0
ADSオリカ作成入門して2週間です。
今、昔のGBC風味の儀式(暗黒騎士ガイアをリリースしてカオス・ソルジャー特殊召喚)
みたいなものを作っているのですが、最後の詰めがうまくいきません。見て頂けないでしょうか?
したいこと:「ブラック・マジシャン」「カオス・ソルジャー」の2体をデッキ・手札・フィールドからリリースしてデッキ・手札から「マジシャン・オブ・ブラックカオス」特殊召喚
今できているところ:デッキ・手札・墓地から「ブラック・マジシャン」「カオス・ソルジャー」2種類のうち2体をリリースすることでデッキ・手札から「マジシャン・オブ・ブラックカオス」特殊召喚
惜しいのですが、これだとブラマジ2体、カオソル2体でもいけてしまうので調整したいです。
functionが鍵になってる、という所までは突き止めたのですがそこからが分かりません。
(一応、海外版の「究極竜の儀式」をモチーフにしてます)
function c76792184.activate(e,tp,eg,ep,ev,re,r,rp)
local mg=Duel.GetRitualMaterial(tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local tg=Duel.SelectMatchingCard(tp,c76792184.filter,tp,LOCATION_DECK+LOCATION_HAND,0,1,1,nil,e,tp,mg)
if tg:GetCount()>0 then
local tc=tg:GetFirst()
local mg2=Duel.GetMatchingGroup(c76792184.filter2,tp,LOCATION_DECK+LOCATION_HAND+LOCATION_MZONE,0,nil,tc)
mg:Merge(mg2)
mg:RemoveCard(tc)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local mat=mg:FilterSelect(tp,Card.IsCode,2,2,nil,46986414,5405694)
-- and mg:FilterSelect(tp,Card.IsCode,1,1,nil,5405694)
tc:SetMaterial(mat)
local mat1=mat:Filter(Card.IsLocation,nil,LOCATION_DECK+LOCATION_HAND+LOCATION_MZONE)
mat:Sub(mat1)
Duel.ReleaseRitualMaterial(mat)
Duel.SendtoGrave(mat1,REASON_EFFECT+REASON_RELEASE+REASON_MATERIAL+REASON_RITUAL)
Duel.BreakEffect()
Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,true,false,POS_FACEUP)
tc:CompleteProcedure()
end

452名無しデュエリスト:2017/08/30(水) 23:54:03 ID:GCRZvsHs0
>>450
アトラの蟲惑魔のスクリプトを参考に

>>451
local mat=mg:FilterSelect(tp,Card.IsCode,2,2,nil,46986414,5405694)
 ↓
local mat=mg:FilterSelect(tp,Card.IsCode,1,1,nil,46986414)
local mat2=mg:FilterSelect(tp,Card.IsCode,1,1,nil,5405694)
mat:Merge(mat2)

とか

453名無しデュエリスト:2017/09/08(金) 23:14:12 ID:mHYEsjTQ0
>>452
>>450 の者です。
返信遅れましてすみません。
アドバイス頂いたとおりやってみたら2種類でも3種類でもいけました。
ありがとうございます。

454紫炎:2017/09/15(金) 22:09:49 ID:PgR70ob20
スクリプト作成バグ報告スレから上げ
サクリファイス・フュージョン、銃砲撃、ジャックナイツについて

・サクリファイス・フュージョン
サクリファイスのスクリプトを確認したところ、LabalObjectで装備モンスターを指定しているため、外部からこれを与えることが不可能。
「自身の効果で装備している状態」を常にFlagEffectで表せれば作れる…と思う
永続効果で再現できるか…?

・銃砲撃
「コイントスを行う効果」ではTargetでコイントスを行う回数を記述している。
例:リボルバー・ドラゴン) Duel.SetOperationInfo(0,CATEGORY_COIN,nil,0,tp,3)
これを引っ張ってこれれば対応可能。やり方は知らぬ。

・ジャックナイツ
仮に「同じ縦列にカードが2枚存在する自分メインモンスターゾーンの取得」までは出来たとしよう。
どうやってそこに特殊召喚させんねん

どなたか書き方が分かる人または何か思いついたら詳しく教えてください…

455名無しデュエリスト:2017/09/16(土) 11:38:36 ID:PgR70ob20
魅幽鳥でモンスターゾーンの位置によってカードにカーソル合せた時に出す効果の説明文を変える方法って何か無いかな
ご意見ください

456名無しデュエリスト:2017/09/16(土) 13:07:12 ID:PgR70ob20
>>454
のジャックナイツ自決しました

457名無しデュエリスト:2017/09/17(日) 09:59:45 ID:jKgqsuwc0
>>456
早まるなww

458名無しデュエリスト:2017/09/18(月) 00:20:26 ID:MnMk1atg0
いいやつだったよ・・・

459名無しデュエリスト:2017/09/24(日) 17:20:17 ID:YmKAqde.0
スクリプトの質問失礼致します。

エラッタ前の遺言状のスクリプトを下記のように作って動かしてみたのですが、
墓地に送ったモンスターを2〜3体以上にしてから遺言状の効果でモンスターを特殊召喚すると、
「recursive event trigger detected.」とのエラーが発生してしまい、
繰り返しモンスターを特殊召喚する事が出来なくなってしまいます。
このエラーが発生しないようにするにはどうしたら良いでしょうか?
どなたかよろしくお願い致します。

作成したスクリプト(少々長いのでアップローダーに上げています)
http://cover1sea.net/php/txtup/print2.php?no=68458&dt=2017/09/24

460名無しデュエリスト:2017/09/27(水) 18:42:22 ID:QX3X5Zv.0
>>459
質問するときはageることを勧める

単純に同じ効果をトリガーに発動したらエラーが出るってだけじゃねーの?
編集した部分が明確ならそれを一つずつ戻していけば原因は分かるだろう

461名無しデュエリスト:2017/09/27(水) 22:15:56 ID:dNeEepXo0
カードの発動時や召喚成功時に情報ウィンドウで任意のメッセージを表示するのはできるんだけど、
召喚成功前に情報ウィンドウを表示するにはどう記述したら良いのだろうか

具体的に言うと、スターダストやダークリベリオン等の召喚口上持ちモンスターを召喚する時に、情報ウィンドウで口上を表示させたい。

462名無しデュエリスト:2017/09/28(木) 12:18:29 ID:/sIoHh.U0
>>461
やるやる
トーチゴーレムを参考に、SS時のコストにしてしまえば良い
今ちょっと手元にPCが無いから確認できないけど、通常召喚時にも応用効いたと思う

463名無しデュエリスト:2017/09/28(木) 20:31:22 ID:dNeEepXo0
>>462
言う通りにトーチゴーレムを参考にして作ったらできたよ! ありがとう!!

464名無しデュエリスト:2017/09/30(土) 12:39:03 ID:YmKAqde.0
>>460
>>459ですが、助言して頂いた通り、同じ効果でのトリガーを防ぐために同様のトリガーと内容の効果をもう一つ用意し、
特殊召喚の度に切り替えるフラグを条件にして使い分けるようにしたところ上手くいくようになりました。
ありがとうございます。

465名無しデュエリスト:2017/10/01(日) 17:24:52 ID:YmKAqde.0
デュエル開始時の初期手札を引く前の段階で効果を適用させるにはどうしたら良いかどなたかご存知でしょうか?
海外ADSのアクションフィールドのスクリプトも初期手札を引いた直後に効果を適用させるタイプなので参考にする事ができず、
自前で定数EVENT_STARTUPをSetCodeに設定しても効果の適用がされませんでした。
理想としては、某世紀末動画の混沌みたいに「効果の適用→初期手札引く」という挙動にしたいです。
どなたか宜しくお願い致します。

466名無しデュエリスト:2017/10/02(月) 17:02:41 ID:EX1Ne1dA0
引いた後に手札を全てデッキに戻すんだ
で、効果を処理してからまた引き直す
それで擬似的にいける

467名無しデュエリスト:2017/10/02(月) 22:26:07 ID:QX3X5Zv.0
>>465
うーむむ、部屋の初期手札の設定を0枚にして移動後に5枚までドローってすれば見た目は同じになるけど、いちいち設定するのも面倒だしなあ
というか某動画の作者に書き方聴いてみたら?

468名無しデュエリスト:2017/10/03(火) 03:40:48 ID:OV9uJmcY0
DP前に処理するなら>>466しか無いと思う

469465:2017/10/04(水) 12:54:23 ID:0n8z6Uk.0
>>466,467,468
うーん、やっぱり0ターン目の処理は難しいですか・・・
某動画の作者にダメ元で聞いてみて、それで駄目なら466の方法で実装しようと思います。

470名無しデュエリスト:2017/10/08(日) 20:34:48 ID:I/6nc6sg0
既存種族の複合種族の表示
例: strings.confに!system 2041 (戦士族+魔法使い族の)複合種族名
で行けなかったですが他も弄る必要あるみたい・・・
どこ弄ればいいかどなたかご存知ですかね?

種族が2つになるのを1つに統合したい。

471名無しデュエリスト:2017/10/08(日) 22:48:17 ID:Gzo3pjw20
>>470
新種族の追加は本体側のプログラムもいじる必要があるのでどこかにあるソースを入手してやるとかしてください

472名無しデュエリスト:2017/10/08(日) 23:56:34 ID:I/6nc6sg0
>>471
そっか・・・
本体いじるのは配布とかし辛くなるから諦めるか・・・

473名無しデュエリスト:2017/10/22(日) 17:19:18 ID:YmKAqde.0
新マスタールール対応版のADSでカードを消滅させるにはどう記述したらよいかどなたかご存知でしょうか?
海外版(YGOPRO 1.033.D Percy)では「Duel.SendtoDeck(e:GetHandler(),nil,-2,REASON_RULE)」の記述で自身を消滅させるカードを実装できたのですが、
リンク版ADS(VerF)で同じ記述を動かしてもデッキトップへの移動という処理になってしまいます。

どなたかご存知の方は宜しくお願いします。

474名無しデュエリスト:2017/10/23(月) 09:03:06 ID:aawVB7DI0
>>473
カードの消滅は今まで不具合だったらしく、途中で修正されて使えなくなりました。
強引に使う方法としてはDuel.Overlayの最初の引数(エクシーズ素材を増やすモンスター)をフィールド以外のカードを選ぶ方法がありますが、グラフィックが残るのでおすすめしません。
なお、最初の引数がnil値(=カードが存在しない)場合だと処理そのものが行われないので注意です。

475名無しデュエリスト:2017/10/28(土) 14:29:54 ID:YmKAqde.0
>>474
成程、アレって不具合だったんですねー…
強引に消滅する方法も修正されるかもしれないので、別の処理で代用したいと思います。

476名無しデュエリスト:2017/11/05(日) 13:33:34 ID:NYxQqVLs0
質問なんですが、例えば墓地のカードを対象に取って、効果を発動するカードがある場合、
その対象に取るカードに「同名カードはデュエル中に1枚まで」という制限を設ける場合は、どのように記述したらいいのでしょうか…?

targetの「local g=Duel.SelectTarget」で取得した変数を「g:GetFirst():RegisterFlagEffect(カードID,0,0,0)」として、
Duel.SelectTargetのフィルタ内に「c:GetFlagEffect(同様のカードID)」と設定しても、
「同名カード」という括りで対象制限が設定できなく、ただ同じモンスターしか設定できませんでした…。

477名無しデュエリスト:2017/11/05(日) 13:38:46 ID:NYxQqVLs0
すみません。
c:GetFlagEffect(同様のカードID)ではなく、c:GetFlagEffect(同様のカードID)==0 でした。。

478名無しデュエリスト:2017/11/05(日) 17:27:04 ID:QX3X5Zv.0
>>476-477
んー、カードIDの組を残しておく方法か
cXXXXXXXX[2*n+tp]みたいにして配列に置いとくくらいしか思いつかない
フラグ置かれたカードを参照するとカード名が変わるとダメそうだし

479名無しデュエリスト:2017/11/05(日) 17:41:58 ID:NYxQqVLs0
>>478
返信ありがとうございます。

>んー、カードIDの組を残しておく方法か
>cXXXXXXXX[2*n+tp]みたいにして配列に置いとくくらいしか思いつかない
この方法で実現可能でしょうか?

480名無しデュエリスト:2017/11/05(日) 18:26:13 ID:n5vo4D.60
どこに書くか悩んだのですが、スクリプトを自分で弄る性質上こちらに書き込みさせていただきます。

スクリプト作成バグ報告スレにて配布されていたADS本体で詰めデュエルを作っています。
ただ、記載の仕方を旧ADSを参考にしたせいか、
詰めデュエルを起動するとルールがマスタールール3仕様になってしまいます。

新マスタールール用の詰めデュエルを記述する際、何か必要となる一文があるのでしょうか

481名無しデュエリスト:2017/11/05(日) 19:15:13 ID:QX3X5Zv.0
>>479
例えば、あらかじめcXXXXXXXX[0]=0 cXXXXXXXX[1]=0ってしておいて、
フィルターで
cXXXXXXXX.filter(c,tp)
local code=c:GetCode()
for i=1,cXXXXXXXXX[tp] do
if code==cXXXXXXXXX[2*i+tp] then return false end
end
return true
end
選択後は
local n=cXXXXXXXXX[tp]+1
cXXXXXXXX[2*n+tp]=g:GetFirst():GetCode()
cXXXXXXXXX[tp]=n
とかね

>>480
(詰めデュエル作ったことないな…)
色々サイト見た限りスクリプトにルールに関する記述が無さそうだし、他のルールには対応してないんじゃないかなー

482名無しデュエリスト:2017/11/05(日) 20:11:17 ID:q.jfAROY0
>>480
Debug.ReloadFieldBegin(DUEL_ATTACK_FIRST_TURN+DUEL_SIMPLE_AI,4)のようにすれば新マスタールールでの詰めデュエルができます。
なお「4」の部分を別の数字にすればそれに応じたマスタールールで(例えば2ならマスタールール2)行えるようになります。

483名無しデュエリスト:2017/11/05(日) 20:17:41 ID:n5vo4D.60
>>482
なるほど、そこを追記する必要があったのか…ありがとうございます

484名無しデュエリスト:2017/11/05(日) 23:04:29 ID:A.Fz4lnE0
スクリプトの質問失礼します。

「スレイブタイガー」や「強制進化」のように、
【「〇〇」モンスターの効果で特殊召喚した扱い】の効果を作りたいです。

「Duel.SpecialSummon(g,170,tp,tp,false,false,POS FACEUP)」
の「170」をいじればいいと思うのですが、方法が分かりません。

どなたか分かる方いれば、教えてもらえませんか?

485名無しデュエリスト:2017/11/05(日) 23:47:57 ID:QX3X5Zv.0
>>484
Duel.SpecialSummonの第2引数が召喚方法
融合召喚ならSUMMON_TYPE_FUSION、剣闘獣なら104になる
独自効果ならここに被らなそうな値(カテゴリIDとかカードIDとか)を入れとけば良い

486名無しデュエリスト:2017/11/06(月) 11:46:08 ID:A.Fz4lnE0
>>485
返信ありがとうございます。

重ねて質問失礼します。
作ろうとしているのは独自効果です。
カテゴリIDとは、16進数表記「0x〇〇」のことでしょうか。
それとも他の表記があるのでしょうか。

何度も質問して申し訳ありませんが、よければ教えてもらいたいです。

487名無しデュエリスト:2017/11/06(月) 19:18:21 ID:NYxQqVLs0
>>481
返信遅れてすみません。
教えて頂いた通りにやってみたら上手く行きました。
どうもありがとうございます!

488名無しデュエリスト:2017/11/06(月) 19:47:41 ID:QX3X5Zv.0
>>486
16進表記はただの16進表記
カテゴリIDは10進だと分かりにくいから16進にしてるだけ

489名無しデュエリスト:2017/11/06(月) 21:44:17 ID:A.Fz4lnE0
>>486
たびたび質問してすいません。

たとえば、魔法カードの効果で「捕食植物ダーリング・コブラ」の効果を使用するために
フィルターを↓
function c2156.spfilter(c,e,tp)
return c:IsSetCard(0x10f3) and c:IsCanBeSpecialSummoned(e,4339,tp,false,false)
end
オペレーション箇所を↓
function c2156.spop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,c2156.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp)
if g:GetCount()>0 then
Duel.SpecialSummon(g,4339,tp,tp,false,false,POS_FACEUP)
end
end

のようにしたのですが、効果が発動しませんでした。
特殊召喚自体はできるので、ターゲットに関しては問題ないと思うのですが、
どこに問題があるか、見てもらえないでしょうか?

490名無しデュエリスト:2017/11/07(火) 10:07:26 ID:tB84GiH.0
>>489
>効果が発動しませんでした。
>特殊召喚自体はできるので、ターゲットに関しては問題ないと思うのですが
???

LOCATIONが違うんじゃね(投げやり

491名無しデュエリスト:2017/11/07(火) 11:51:58 ID:A.Fz4lnE0
>>490
ごめんなさい、>>489の説明が足りませんでした。

正しくは、
「捕食植物ダーリング・コブラ」を特殊召喚できているので、ターゲットは問題と思うのですが、
「捕食植物ダーリング・コブラ」の効果が発動しませんでした。
ということでした。

492名無しデュエリスト:2017/11/07(火) 12:53:07 ID:tB84GiH.0
>>491
コブラが召喚方法の値による判定を行っていないのでコブラのスクリプトを変えるか手入力ゴリ押しで効果をコピーしないと実装できません

493名無しデュエリスト:2017/11/07(火) 13:07:42 ID:A.Fz4lnE0
>>488>>492
教えてもらった方々ありがとうございました。
皆様のおかげで、どうにかできました。

494名無しデュエリスト:2017/11/11(土) 19:54:04 ID:dCWk6cck0
質問です
ブラックマジシャン+ブルーアイズまたはレッドアイズのような融合モンスターを作りたいのですが、
プリズマーなどで3体のcodeを参照できるように記述する方法はないのでしょうか?

495名無しデュエリスト:2017/11/11(土) 23:57:20 ID:QX3X5Zv.0
>>494
言っている意味が分からない

496名無しデュエリスト:2017/11/12(日) 01:41:30 ID:Gzo3pjw20
>>494
現状それと似たような条件の融合モンスターがいないので、
プリズマー対応のscriptはかけないみたいです
aux関数を自力で追加したらいけるはずですが。

497名無しデュエリスト:2017/11/12(日) 11:29:46 ID:QX3X5Zv.0
>>496
カテゴリ名じゃなく単体のカード名ならそう書けよ(半ギレ
一番簡単なのは、
cXXXXXXXX.material_count=3
cXXXXXXXX.material={ブラマジ,青眼,真紅眼}
みたいに書いておく方法(インフェルノイド・ティエラ等で使われていた)
ただしこの方法はなぜか最近のスクリプトだと使われてないから使用Verで動作確認しなよ

498名無しデュエリスト:2017/11/12(日) 15:21:52 ID:Gzo3pjw20
>>497
読んだ感じだとブラマジ+青眼+真紅眼ではなく
ブラマジ+青眼か真紅眼みたいなので2枠目を2種類のコードで指定したいみたいです。
自分でも何書いているかよくわかりませんが
プリズマーできなくてもいいならすごく簡単なのですが・・・

499名無しデュエリスト:2017/11/12(日) 19:02:13 ID:dCWk6cck0
>>496
>>497
返信ありがとうございます
なるほど、なんとなく分かりました
プリズマーのような効果は、最初のaux.AddFusionProcCode2の括弧内のCode部分などを読み取っているんですね
ということは、仮にaux.AddFusionProcCodeFunRepにして後のフィルターで「青眼の白龍」or「真紅眼の黒竜」のCodeを与えても無理なんですね

500名無しデュエリスト:2017/11/12(日) 20:40:45 ID:Gzo3pjw20
>>499
aux.AddFusionProcCodeFunで作ってみましたが、やはり後の2体は選べませんでした

501名無しデュエリスト:2017/11/13(月) 00:31:31 ID:QX3X5Zv.0
>>494>>496は別人だったのね、済まぬ

>>498
いやそれは分かってるけども

ティエラの旧版スクリプトは融合素材を「〜」+「〜」+〜モンスターがaux.AddFusionCode〜で指定できなかったから、EFFECT_FUSION_MATERIALで指定してたんよね
代わりにネヘモスとリリスを上記方法で指定してたんだよ

502名無しデュエリスト:2017/11/15(水) 10:53:54 ID:NYxQqVLs0
いつもこの掲示板を利用させて頂いて、お世話になってます。

「このカードが墓地に存在し、自分の墓地のモンスターの効果が発動した時に発動できる。
この効果はその発動した効果と同じになる。」

こういう効果を作っている最中なのですが、例えば「グローアップ・バルブ」の効果を発動した時に
上記の効果を発動すると、「stack overflow」のスクリプトエラーが出てしまいます(効果処理はちゃんと実行されます)。
「暗黒界の軍神 シルバ」の時でも、第一、第二の効果の発動時に発動したら同じく上記のエラーが出ました。

バルブ、シルバの時は、それぞれエラーが出た時のスクリプトの行が違いました。
スクリプトの中身を一部お見せするので、どこが悪いか見て頂けないでしょうか…?

function cカードID.chtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
local ftg=re:GetTarget()
if chkc then return ftg(e,tp,eg,1-tp,ev,re,r,1-tp,chk,chkc) end
if chk==0 then return not ftg or ftg(e,tp,eg,1-tp,ev,re,r,1-tp,chk) end
e:SetProperty(re:GetProperty())
e:SetCategory(re:GetCategory())
if ftg then
ftg(e,tp,eg,1-tp,ev,re,r,1-tp,chk)
end
end
function cカードID.chop(e,tp,eg,ep,ev,re,r,rp)
local op=re:GetOperation()
if op then op(e,tp,eg,1-tp,ev,re,r,1-tp) end
if e:GetHandler():IsLocation(LOCATION_GRAVE) then
Duel.BreakEffect()
Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT)
end
end

因みにバルブの時は「local ftg=re:GetTarget()」、
シルバの時は「if chk==0 then return not ftg or ftg(e,tp,eg,1-tp,ev,re,r,1-tp,chk) end」に問題があると出ました。

503名無しデュエリスト:2017/11/15(水) 21:14:56 ID:QX3X5Zv.0
>>502
そのカードの墓地発動効果に反応してるからでしょ
自身の効果に対して反応しないようにしないとcXXXXXXXX.chtg内でcXXXXXXXX.chtgを呼び出す事になる

504名無しデュエリスト:2017/11/16(木) 01:57:12 ID:NYxQqVLs0
>>503
クリアウィングみたいに「このカード以外の効果が発動した時」という効果にすれば良かった訳ですね。
返信ありがとうございます!

505名無しデュエリスト:2017/11/19(日) 11:23:38 ID:A.Fz4lnE0
質問失礼します。

現在「手をつなぐ魔人」の効果を参考にして、
リンクモンスターの効果を「このカードのリンク先の守備表示モンスターの攻撃力の合計分アップする」
という効果を作っています。

しかし、「このカードのリンク先」という部分がうまく反映されません。
どなたか、アドバイスいただけませんか。

スクリプトはこんな感じです↓。
function c1150.atkfilter(c,g)
return c:GetAttack()>=0 and c:IsPosition(POS_FACEUP_DEFENSE)
end
function c1150.atkval(e,c)
local g=Duel.GetMatchingGroup(c1150.atkfilter,c:GetControler(),LOCATION_MZONE,0,c)
return g:GetSum(Card.GetAttack)
end

506名無しデュエリスト:2017/11/19(日) 11:44:52 ID:f2dBWOzQ0
>>505
Card.GetLinkedGroupを使うとリンク先のモンスターを取得できるので、

function c1150.atkfilter(c,g)
return c:GetAttack()>=0 and c:IsPosition(POS_FACEUP_DEFENSE) and g:IsContains(c)
end
function c1150.atkval(e,c)
local lg=c:GetLinkedGroup()
local g=Duel.GetMatchingGroup(c1150.atkfilter,c:GetControler(),LOCATION_MZONE,LOCATION_MZONE,nil,lg)
return g:GetSum(Card.GetAttack)
end

でいけるかと思います

507名無しデュエリスト:2017/11/19(日) 12:25:33 ID:A.Fz4lnE0
>>506
返信ありがとうございます。

おかげさまでできました。
アドバイスありがとうございました。

508名無しデュエリスト:2017/12/16(土) 12:48:50 ID:YmKAqde.0
ADS動画用のリプレイデータ作成の効率化を行う為、デュエル中の特定タイミング毎にリプレイ映像から判別できない方法で積み込みを行いたいのですが、どなたか良い案をお持ちの方はおりませんでしょうか?

Duel.MoveSequenceだとカードをデッキトップに持ってくる動きが描画されてしまい、
Duel.SortDecktopでは15枚以上を指定すると並び替えができないのでデッキが16枚以上の場合に上手くいかず、
Duel.SendtoDeck(tc,tp,0,REASON_RULE)だとデッキの中のカードをデッキトップに持ってくる事ができません。

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

509名無しデュエリスト:2018/01/14(日) 08:49:25 ID:tvH4WxIc0
早い話動画投稿用に見せたいんでしょ?
カットと編集で頑張れば?
描写を見せたくないってことはイカサマしてるってことなんだろうから
そのくらいの腹はくくれよ

510名無しデュエリスト:2018/01/18(木) 00:43:12 ID:OauVxxU20
「X素材を任意の数取り除き、取り除いた数だけランクアップさせる」という効果のRUMを作りたいのですが不具合が出て躓いています。
例えば自分フィールドにランク4で素材を1つ持ったXモンスターがいて、EXデッキにランク5のモンスターがいない場合でもカードの効果を発動できてしまいます。
どこが駄目なのかよかったらアドバイスをお願いします。

function c001.activate(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,532)
local tc=Duel.GetFirstTarget()
if tc:GetOverlayCount()==0 then return end
tc:RemoveOverlayCard(tp,1,99,REASON_EFFECT)
local ct=Duel.GetOperatedGroup():GetCount()
e:SetLabel(ct)
if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end
local tc=Duel.GetFirstTarget()
if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local c=e:GetHandler()
local ct=e:GetLabel()
local g=Duel.SelectMatchingCard(tp,c001.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+ct)
local sc=g:GetFirst()
if sc then
local mg=tc:GetOverlayGroup()
if mg:GetCount()~=0 then
Duel.Overlay(sc,mg)
end
sc:SetMaterial(Group.FromCards(tc))
Duel.Overlay(sc,Group.FromCards(tc))
Duel.SpecialSummon(sc,SUMMON_TYPE_XYZ,tp,tp,false,false,POS_FACEUP)
sc:CompleteProcedure()
end
end

511名無しデュエリスト:2018/01/23(火) 13:18:23 ID:Lafa52P60
>>510
まずはエラー内容を全文書こう
話はそれからだ
条件満たさずに発動できるってことはcondition,cost,targetのどれかがおかしいからそれも全部書くか、スクリプトをどこかにアップしてくれ

512名無しデュエリスト:2018/01/25(木) 11:37:09 ID:OauVxxU20
失礼しました!
エラーログはオンにしてありますが出ませんでした
スクリプトはこちらにアップしました
https://www.axfc.net/u/3883409
重ねてよろしくお願いします

513名無しデュエリスト:2018/01/25(木) 12:42:59 ID:Lafa52P60
filter1の指定だとEXに同ランクのXが居るモンスターになってるな
1からcのX素材数までiとしてループしてランクrk+iに対してfilter2を掛ければ良いと思う

activateの方にも問題があって、今の状態だと正しくない数のX素材を取り除けてしまうから、
どうにかして取り除ける素材数を選択肢で出して、それから選択した数のX素材を取り除く方式にした方が良い

514名無しデュエリスト:2018/02/08(木) 23:12:20 ID:8EVjueac0
EVENT_REMOVE_COUNTER+0x100eを使って効果を作ろうと「A」細胞培養装置を参考にしたのですが
培養装置と全く同じ記述を移植しても発動すらしません。何か他に必要なものがあるのでしょうか?

515名無しデュエリスト:2018/02/09(金) 11:58:13 ID:QX3X5Zv.0
>>514
まずは>>511を読もうか

516名無しデュエリスト:2018/02/09(金) 16:41:39 ID:8EVjueac0
失礼しました。エラーログは出ませんでした。効果の起動を確認するためのスクリプトです。
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetRange(LOCATION_SZONE)
e1:SetCode(EVENT_REMOVE_COUNTER+0x100e)
e1:SetOperation(c37564.winop)
c:RegisterEffect(e1)
function c37564.winop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_CARD,0,37565)
end
「A」細胞培養装置を参考にAカウンター取り除いて試しているのですが何が悪いのでしょうか?

517名無しデュエリスト:2018/02/10(土) 14:31:01 ID:QX3X5Zv.0
>>516
カードの発動はしてる?
カードの発動ができないって話ならACTIVATEの効果書かないとダメだぞ

518名無しデュエリスト:2018/02/11(日) 03:37:56 ID:8EVjueac0
>>517
失礼しました
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_ACTIVATE)
e2:SetCode(EVENT_FREE_CHAIN)
c:RegisterEffect(e2)
↑があるので問題なくフィールドにいます。

519名無しデュエリスト:2018/02/12(月) 16:26:18 ID:QX3X5Zv.0
>>518
んんん? その状態で効果が使用されないのか…
winopにダメージ効果でも入れて改めて試してみたらどう?
実は魔法罠ゾーンに居ませんとかそういうオチは無いよな?
発動確認の方法が悪いのかもしれんし使用したカードとかに問題があるのかもしれん

520名無しデュエリスト:2018/02/12(月) 16:32:32 ID:QX3X5Zv.0
いや培養装置と記述一緒だから培養装置と並べて発動確認すれば問題ないか…
番号的にID被りもなさそうだし…
うーんお手上げ

521名無しデュエリスト:2018/02/12(月) 21:07:15 ID:Gzo3pjw20
>>518
ダメージ効果にしたら問題なく動きましたので一度お試しください

522名無しデュエリスト:2018/02/13(火) 01:46:03 ID:OauVxxU20
>>513
返事が遅れてしまって申し訳ないです
アドバイスありがとうございます!
頑張ってみます!

523名無しデュエリスト:2018/02/13(火) 15:40:46 ID:8EVjueac0
>>519
>>520
>>521
c:RemoveCounter()からDuel.RemoveCounter()にして試したら反応しました。
ありがとうございましたm_ _m

524名無しデュエリスト:2018/03/18(日) 14:02:05 ID:QX3X5Zv.0
単発糞スレ乱立で下がってたのであげ

525名無しデュエリスト:2018/04/24(火) 16:24:05 ID:ASd2Vkyo0
現在スクリプトを作っているものです。今は「レッド・デーモンズ・ドラゴン・タイラント」のスクリプトを作っているのですが[string"./script/c10004.lua]:4:attempt to call field"Tuner"(a nil value)と出てしまいます。ygopro ver.1.34.2では普通に召喚出来るのですがygopro ver1.033.C では召喚出来ませんでした。4行目に欠陥があるのは分かるのですがどうすれば召喚できるのか分かりません。お時間があるときで大丈夫なので知恵を貸していただけると有り難いです。
--レッド・デーモンズ・ドラゴン・タイラント
function c10004.initial_effect(c)
--synchro summon
aux.AddSynchroMixProcedure(c,aux.Tuner(nil),aux.Tuner(nil),nil,aux.NonTuner(nil),1,99)
c:EnableReviveLimit()
--destroy
local e2=Effect.CreateEffect(c)
e2:SetCategory(CATEGORY_DESTROY)
e2:SetType(EFFECT_TYPE_IGNITION)
e2:SetRange(LOCATION_MZONE)
e2:SetCountLimit(1)
e2:SetTarget(c10004.destg)
e2:SetOperation(c10004.desop)
c:RegisterEffect(e2)
--negate
local e3=Effect.CreateEffect(c)
e3:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY)
e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL)
e3:SetType(EFFECT_TYPE_QUICK_O)
e3:SetRange(LOCATION_MZONE)
e3:SetCode(EVENT_CHAINING)
e3:SetCondition(c10004.discon)
e3:SetTarget(c10004.distg)
e3:SetOperation(c10004.disop)
c:RegisterEffect(e3)
--double tuner
local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_SINGLE)
e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e4:SetCode(21142671)
c:RegisterEffect(e4)
end
function c10004.destg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(aux.TRUE,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end
local g=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler())
Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0)
end
function c10004.desop(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler())
if g:GetCount()>0 then
Duel.Destroy(g,REASON_EFFECT)
end
end
function c10004.ftarget(e,c)
return e:GetLabel()~=c:GetFieldID()
end
function c10004.discon(e,tp,eg,ep,ev,re,r,rp)
local ph=Duel.GetCurrentPhase()
return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) and re:IsHasType(EFFECT_TYPE_ACTIVATE)
and Duel.IsChainNegatable(ev) and (ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE)
end
function c10004.distg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0)
if re:GetHandler():IsDestructable() and re:GetHandler():IsRelateToEffect(re) then
Duel.SetOperationInfo(0,CATEGORY_DESTROY,eg,1,0,0)
end
end
function c10004.disop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then
Duel.Destroy(eg,REASON_EFFECT)
if not c:IsRelateToEffect(e) or c:IsFacedown() then return end
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_ATTACK)
e1:SetProperty(EFFECT_FLAG_COPY_INHERIT)
e1:SetReset(RESET_EVENT+0x1ff0000)
e1:SetValue(500)
c:RegisterEffect(e1)
end
end

チューナー2体+チューナー以外のモンスター1体以上
①:1ターンに1度、このカード以外のフィールドのカードを全て破壊できる。
②:バトルフェイズに魔法・罠カードが発動した場合に発動できる。
その発動を無効にし破壊する。
その後、このカードの攻撃力を500アップする。

526名無しデュエリスト:2018/04/26(木) 21:11:38 ID:QX3X5Zv.0
>>525
新マスタールール以前のADSスクリプトでは相違点が3つある!
1つ、Card関数にIsNotTunerしかないように、auxにはNonTunerはあるがTunerがない
2つ、S素材のチューナーを指定するときはその欄に「チューナーである」以外の条件を入れたfilter関数を入れていた
3つ、そもそも当時のスクリプトではチューナー2体のS召喚はaux関数を使わずにEFFECT_SPSUMMON_PROCで書いていた

というかそのバージョンなら普通にタイラントあるから見てみるのだ
無かったらヴァイロンオメガでも見てみるのだ

527名無しデュエリスト:2018/04/26(木) 22:59:07 ID:ASd2Vkyo0
>>526 あ、普通に出来ました。ありがとうございます!どんどんレッドモンスターを作るのだ!

528名無しデュエリスト:2018/04/26(木) 23:05:15 ID:ASd2Vkyo0
次にレッドジャイアント
効果:相手の魔法、罠ゾーン(Pゾーンも含める)にセットされた時、相手のバトルフェイズをスキップする。
という効果を作りたいです。一応バトルフェーダー、アルティマヤのセット始動、ソルチャのバトルフェイズを行えないを参考にしたいのですが
どうにかくっつけられないですかね?

529名無しデュエリスト:2018/04/27(金) 00:40:36 ID:QX3X5Zv.0
>>528
ざっと感想ブログとか見てたら
「相手フィールドにカードがセットされたら手札から発動してSS、BPに発動したらBP終了」
っぽいが、その効果説明読んでると違ってそう
1回その効果全文書いてもらえないかな?


新着レスの表示


名前: E-mail(省略可)

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

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

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

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