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

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

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

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

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

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回その効果全文書いてもらえないかな?

530名無しデュエリスト:2018/04/27(金) 08:06:05 ID:ASd2Vkyo0
流石に発動条件が難しいので少し効果を変えました。
一応説明には
①:相手の魔法、罠ゾーンにカードがセットされた時に発動できる。
手札のこのモンスターを特殊召喚し、相手はバトルフェイズを行えない。
となってます。

531名無しデュエリスト:2018/04/29(日) 20:48:59 ID:QX3X5Zv.0
>>530
遅くなって済まない…

相手ターンに魔法罠セット時発動、自身をSS+BP前ならこのターンのBPスキップ、BP中ならBPを終了
って感じかな?

アルティマヤの効果をベースにしてコピペしてから作るといい
Condition→ほぼアルティマヤのまま、フィールドを相手フィールドに
Target→自身をSSする効果なので自身をSSする効果(フェーダー、ヘルプリンセスなど)のTargetをコピペ
Operation→自身をSSする処理+フェイズによる処理
フェイズによる処理はティンタングルエンジェルなんかを参考にしてif文で書くべし

532名無しデュエリスト:2018/04/29(日) 21:55:56 ID:ASd2Vkyo0
>>531本当にありがとうございます!
レッドはこれで一通り終わります!また別のオリカを作ろうと思うのでお暇な時に知恵を貸していただけるとありがたいです!

533名無しデュエリスト:2018/04/29(日) 23:13:06 ID:ASd2Vkyo0
--レッド・ジャイアント
function c10011.initial_effect(c)
--end battle phase
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(10011,0))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e1:SetCode(EVENT_SSET)
e1:SetRange(LOCATION_HAND)
e1:SetCondition(c10011.spcon)
e1:SetTarget(c10011.target)
e1:SetOperation(c10011.operation)
c:RegisterEffect(e1)
end
function c10011.spcon(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(Card.IsControler,1,nil,tp)
end
function c10011.target(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
if chk==0 then
return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0)
end
function c10011.operation(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,aux.NecroValleyFilter(c10011.filter),tp,LOCATION_HAND,0,1,1,nil,e,tp)
if g:GetCount()>0 then
Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_ATTACK+POS_FACEUP_DEFENSE)
Duel.ConfirmCards(1-tp,g)
end
local ph=Duel.GetCurrentPhase()
if tp~=Duel.GetTurnPlayer() and ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE then
Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1)
end
end
こうですか?

534名無しデュエリスト:2018/04/30(月) 00:47:35 ID:Gzo3pjw20
>>533
他の人に聞くときは自分で動作確認をしてみた上でわからないところを聞いたりしましょう。
何でもかんでも聞いているといつかキレられますよ。

バトルのスキップがムーブメント方式のやつを適当に作ってみました。
一応動作確認はしましたが変な動作するかも。






function c1300.initial_effect(c)
--end battle phase
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(1300,0))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e1:SetCode(EVENT_SSET)
e1:SetRange(LOCATION_HAND)
e1:SetCondition(c1300.spcon)
e1:SetTarget(c1300.sptg)
e1:SetOperation(c1300.spop)
c:RegisterEffect(e1)
end
function c1300.spcon(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(Card.IsControler,1,nil,1-tp)
end
function c1300.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,c,1,0,0)
end
function c1300.spop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end
Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)
local ph=Duel.GetCurrentPhase()
if tp~=Duel.GetTurnPlayer() and ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE then
Duel.SkipPhase(1-tp,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE,1)
else
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SKIP_BP)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetTargetRange(0,1)
if Duel.GetTurnPlayer()~=tp and ph>PHASE_MAIN1 and ph<PHASE_MAIN2 then
e1:SetLabel(Duel.GetTurnCount())
e1:SetCondition(c1300.skipcon)
e1:SetReset(RESET_PHASE+PHASE_BATTLE+RESET_OPPO_TURN,2)
else
e1:SetReset(RESET_PHASE+PHASE_BATTLE+RESET_OPPO_TURN,1)
end
Duel.RegisterEffect(e1,tp)
end
end
function c1300.skipcon(e)
return Duel.GetTurnCount()~=e:GetLabel()
end

535名無しデュエリスト:2018/04/30(月) 08:08:43 ID:ASd2Vkyo0
>>534申し訳ない。寝ないとヤバいかったので動作確認すっぽかしちゃいました。次から気を付けます

536名無しデュエリスト:2018/04/30(月) 10:13:16 ID:ASd2Vkyo0
現在乃亜編のデッキマスタールールを再現したいのですが選択ウィンドウの出し方やデッキマスターの指定などがよく分かりません。
右も左分からない私ですがどうか知恵をお貸しください。

①:デュエル開始時、手札・デッキのこのカードは発動する。
また手札・デッキのこのカード以外の「デッキマスター決闘」を全て除外し、自分は手札が5枚になるようにデッキからドローする。
②:このカードは他のカードの効果を受けない。
③:デュエル開始時にデッキから決められたモンスターを一体選びデッキマスターとする。
④:デッキマスターに指定したモンスターに特殊能力を与える。この効果は相手により無効化されない。
⑤:デッキマスターに選択されたモンスターが場を離れたとき、プレイヤーは敗北する。
⑥:「ロード・オブ・ドラゴン-ドラゴンの支配者-」をデッキマスターに選択した時に発動できる。
500ポイントライフを払い、通常召喚に加えてもう一度ドラゴン族モンスターを召喚できる。
⑦:「ブラック・マジシャン」をデッキマスターに選択した時に発動できる。
ライフを1000ポイント払うことで、このターン使用した魔法カードを手札に戻す。
⑧:「奇跡の方舟」をデッキマスターに選択した時に発動できる。
収容能力:互いの墓地に存在するモンスターカードは墓地で発動する効果を発動できず、他のカードの効果も受けない。
絶対防御:相手のバトルフェイズに発動できる。相手のモンスターの数だけ自分フィールドに守備表示で特殊召喚する。
生命の回復:墓地に存在するモンスターをすべて除外し、一体につきライフを500回復する。
⑨:「天界王 シナト」をデッキマスターに選択した時に発動できる。
輪廻転生:場に出ているこのカードが破壊されるとき、その破壊を無効にしてデッキに加える。この能力を使用した後、シナトを再び召喚することはできない。
⑩:「ジャッジ・マン」をデッキマスターに選択した時に発動できる。
1000ポイントのライフを払い、相手モンスターをすべて除外する。
その後、除外したモンスターの数だけ相手に500ポイントのダメージを与える。
この効果は相手ターンでも発動できる。
⑪:「炎の剣士」をデッキマスターに選択した時に発動できる。
フィールドに存在する戦士族モンスターは攻撃力が1800アップする。

現在自分が分からない事
・ウィンドウ選択のコード
・デッキ、手札からモンスターを選択して効果を発動。からの元々あった場所に戻してシャッフル
・選択されたモンスターが場を離れた時の敗北する効果などの付与
・それぞれの効果の参考スクリプト
多くなってしまいましたがどうかよろしくお願いします。

537名無しデュエリスト:2018/04/30(月) 14:28:06 ID:QX3X5Zv.0
>>535
動作確認は大事だからねぇ
どこの誰とは言わないけど「更新しました!」って動作確認してないの上げる人が居たりするけどそういうのは見習わないようにね…

>>533を見る限り、スクリプトの書かれている内容の意味を理解していなさそうに見える(operationの2〜7行目あたり)
処理の内容として、必要条件は満たして入るけど、冗長だったり必要のない処理が入ってたりしてる
スクリプトの意味が分かってくると色々と応用が効くようになってくるから頑張って覚えよう
おおよそ想像してたスクリプトは>>534で書いてくれたからとりあえずはそれ参考に

538名無しデュエリスト:2018/04/30(月) 14:36:32 ID:QX3X5Zv.0
>>536
・選択ウィンドウは>>533で使ってたようなSelect系の関数を使えば出てくる
 その前の Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_〜) は選択ウィンドウの上部で表示する文字列を決めてる
・「デッキ、手札からモンスターを選択して効果を発動。からの元々あった場所に戻してシャッフル」これは言ってる意味がよく分からない
 いやそのまま受け取れば分かるんだけど、多分実装するべき動きはそうじゃない
・「選択されたモンスターが場を離れた時の敗北する効果」は魂のリレーを参考に
 「など」の部分はデッキマスター能力かな?それは後述
・「それぞれの参考」
 無理! 頑張って探して!

まず、デッキマスターはそれぞれ別カード化した方が良いと思う
効果が多すぎて読みにくいし、スクリプトの管理も面倒になる

もう1つ、コンマイ語を勉強しよう
効果全文を正しいコンマイ語で書けないと正しいニュアンスが伝わらなくて、こっちも正しいアドバイスができなくなる
具体的に言うとレッドジャイアントの「BPをスキップする効果」は最後まで「BPを終了する」のか「このターンのBPをスキップする」のか「次のBPをスキップする」のか分からなかった

539名無しデュエリスト:2018/05/01(火) 21:51:10 ID:ASd2Vkyo0
>>536
返信遅くなったのとわかりずらい質問で本当にすまない...
もう普通にデッキマスターの能力を持ったモンスターのスクリプトを作ることにしました
ですがデッキマスターの説明を見るとモンスターを場に出さなくても使えるらしいんです。
〇祐さんのホルアクティみたいにデッキで発動する例もありますがドロー以外の効果でも可能なのでしょうか?

540名無しデュエリスト:2018/05/01(火) 22:05:55 ID:Gzo3pjw20
>>539
e2:SetRange(LOCATION_SZONE)みたいなやつを
e2:SetRange(LOCATION_DECK)にするとデッキから発動したり、
デッキにいるときに適用できたりします。
適用できる効果は基本的にどんな効果でも適用できるはずです。

541名無しデュエリスト:2018/05/02(水) 10:40:16 ID:ASd2Vkyo0
>>540
返信ありがとうございます。
一応作ってみたのですが始動が悪いのかコードが繋がっていないのかデッキからの発動ができません。
何度も申し訳ないのですがスクリプトを見てください。

--ブラック・マジシャン(DM)
function c10020.initial_effect(c)
--Yugioh
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_TO_GRAVE)
e1:SetCost(c10020.cost)
e1:SetTarget(c10020.target)
e1:SetOperation(c10020.activate)
e1:SetCountLimit(1,10020)
e1:SetCondition(c10020.condition)
Duel.RegisterEffect(e1,0)
end
function c10020.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.CheckLPCost(tp,1000) end
Duel.PayLPCost(tp,1000)
end
function c10020.cfilter(c,tp)
return c:IsType(TYPE_SPELL) and c:IsPreviousLocation(LOCATION_DECK) and c:IsPreviousPosition(POS_FACEUP)
and c:GetPreviousControler()==1-tp and c:GetPreviousSequence()~=5
end
function c10020.condition(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(c10020.cfilter,0,nil,tp)
end
function c10020.tgfilter(c)
return c:IsAbleToHand()
end
function c10020.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c10020.tgfilter(chkc) end
if chk==0 then return Duel.IsExistingTarget(c10020.tgfilter,tp,LOCATION_GRAVE,0,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local sg=Duel.SelectTarget(tp,c10020.tgfilter,tp,LOCATION_GRAVE,0,1,1,nil)
Duel.SetOperationInfo(0,CATEGORY_TOHAND,sg,sg:GetCount(),0,0)
end
function c10020.activate(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget()
if tc and tc:IsRelateToEffect(e) then
Duel.SendtoHand(tc,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,tc)
end
end

効果:ライフを1000払う事で墓地から魔法カードを手札に戻す。

エラーは出ていません。

542名無しデュエリスト:2018/05/02(水) 18:46:38 ID:TALgY09Q0
正確じゃなくてもいいから効果はしっかり書くことを勧める
とりま効果を読んで察するにだけどこれ永続(FIELD)じゃなくて起動(IGNITION)では・・・?
あとSetRangeもないのも原因

①:このカードが自分のデッキ・手札・フィールドに存在する場合に1000LP払い、自分または相手の墓地の魔法カード1枚を対象にして発動できる。
そのカードを手札に加える。
こんな感じじゃないかな多分考えてる完成形って

543名無しデュエリスト:2018/05/02(水) 20:12:13 ID:Tn.8acpw0
>>542
まだ慣れてなくて申し訳ない。
魔法カードは自分の墓地限定ですね。
効果はアットウィキから殆どコピペなので次はちゃんと書きます。

544名無しデュエリスト:2018/05/02(水) 20:16:26 ID:Gzo3pjw20
>>543
〇裕氏のホルアクティは発動しない効果なんですがそっちのほうがいいんですかね?

545名無しデュエリスト:2018/05/02(水) 21:07:13 ID:Tn.8acpw0
>>544

発動しない効果とは?

546名無しデュエリスト:2018/05/02(水) 21:10:00 ID:Tn.8acpw0
>>542
SetRangeって何処に書いてますか?
別のカードから探さなくちゃいけないんですかね?


新着レスの表示


名前: E-mail(省略可)

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

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

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

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