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

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

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

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

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

369名無しデュエリスト:2017/05/03(水) 01:59:34 ID:RyydZCKk0
>>367
ありがとうございます!
何度もスクリプトと睨めっこしていて挫折しかけていました
参考にさせていただきます

370名無しデュエリスト:2017/05/03(水) 23:01:58 ID:RyydZCKk0
スクリプトの関数(?)の
「rc sc g eg tp tc bt at」などの文字はそれぞれどの様な意味があるのでしょうか

functionの後の()内の物ではなく、returnやlocal等の後に続く文字です

371名無しデュエリスト:2017/05/03(水) 23:53:19 ID:2tCEEvQA0
場合によって異なるがローカル変数の命名規則は大凡引数のそれと同じルールつけられている
rc
reason card
使用例
《クリア・エフェクター》のS素材となった時の効果において
S召喚されたモンスターカードを示す

sc
selected card
グループからプレイヤーが選択したカード1枚を表すことが多い
使用例
《EMスカイ・マジシャン》の(2)の効果において
手札に存在する「魔術師」永続カードのうち選ばれた1枚を示す

372名無しデュエリスト:2017/05/04(木) 00:02:28 ID:2tCEEvQA0
g
group
グループ
大体において条件を満たしたデッキ・手札・墓地・フィールド・EXデッキのカード集合を示す

eg
event group
《ドン・サウザンドの契約》の(2)の効果が一番わかりやすい例であるのでそれに基づいて説明する
ドローというイベントが起きた際にイベントに最も関連のあるカード集合は即ちドローカードである
《閃光の宝札》などで複数枚同時にドローすることもあるためec event cardという単数形の命名にはならずeg event groupという略称となっている。

373名無しデュエリスト:2017/05/04(木) 00:14:09 ID:2tCEEvQA0
続きはまた後で

374名無しデュエリスト:2017/05/04(木) 00:24:49 ID:RyydZCKk0
ありがとうございます!
似た様な効果のカードのスクリプトを見比べていてもそれらの文字は多様な使い方をされている事が多いので混乱していました
これらの説明していただいた内容を把握した上でもう一度読み返してしてみようと思います

375名無しデュエリスト:2017/05/04(木) 20:22:13 ID:RyydZCKk0
>>365の者です。スクリプトの事で再び質問です
「既に自身が除外されている状態で、自身以外の自分フィールドのモンスターが除外された時、除外されている自身を手札に加える事ができる」
この効果を持ったモンスターを試しに作ってみようと思ったのですが、自身がフィールドから除外された時にも効果を発動できてしまいます。
「このカード以外の」という記述が抜けているのだと考えているのですが、どのスクリプトを参考にしてもわかりません。

以下が、私が作ろうとしているそのモンスターのスクリプトです。どの点を修正したら良いのでしょうか。すみませんが宜しくお願いします

function c1000.initial_effect(c)
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_TOHAND)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e1:SetRange(LOCATION_REMOVED)
e1:SetProperty(EFFECT_FLAG_DELAY)
e1:SetCode(EVENT_REMOVE)
e1:SetCondition(c9000.thcon)
e1:SetTarget(c9000.thtg)
e1:SetOperation(c9000.thop)
c:RegisterEffect(e1)
end

function c1000.thfilter(c,e,tp)
return c:IsPreviousLocation(LOCATION_MZONE) and c:GetPreviousControler()==tp
end

function c1000.thcon(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(c1000.thfilter,1,nil,e,tp)
end

function c1000.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsAbleToHand() end
Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0)
end

function c1000.thop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:IsRelateToEffect(e) then
Duel.SendtoHand(c,nil,REASON_EFFECT)
end
end

以上です

376名無しデュエリスト:2017/05/04(木) 20:25:10 ID:RyydZCKk0
>>375間違いがあったので訂正します

>e1:SetCondition(c9000.thcon)
>e1:SetTarget(c9000.thtg)
>e1:SetOperation(c9000.thop)

これらの9000の部分は、9000ではなく1000です。失礼いたしました

377名無しデュエリスト:2017/05/04(木) 22:10:45 ID:RyydZCKk0
>>375です。申し訳ありません、自己解決しました
thconのreturnの部分で「and not eg:IsContains(e:GetHandler())」を書き加える事で解決できました。失礼致しました

378名無しデュエリスト:2017/05/04(木) 22:28:37 ID:2tCEEvQA0
tc
temporary card
カード1枚に対して適当に命名する際によく使われる名前

bt
battle target
戦闘の攻撃対象のカード1枚を示す
《トゥーン・ディフェンス》がわかり易い例である

at
attacker あるいはattack target
見た例において意味が異なるので要注意
《ディメンション・スフィンクス》では攻撃モンスターの意味で使用されているが、《アドバンスド・ダーク》では攻撃対象のモンスターを示す

命名規則統一しろよ!(雑感)

379名無しデュエリスト:2017/05/04(木) 22:38:10 ID:2tCEEvQA0
Visual Studio Codeのフォルダ内検索機能が便利すぎて最高だよ!(ダイマ)
動作も軽いしLuaにも一応対応しているし、C++も開けるからygopro-coreのソースも読めるし便利だよ!

380名無しデュエリスト:2017/05/04(木) 23:09:21 ID:OV9uJmcY0
オリカ作る時は適当な変数使っても問題ないの?

381名無しデュエリスト:2017/05/04(木) 23:34:31 ID:2tCEEvQA0
プログラミングの作法としては適切な名前をその都度つけるべき
まあtcやtgみたいなのは使っても良いって考える人が多いね
ただatはattackerみたいにちゃんとした名前をつけるべきと考える人が他の言語では多い

382名無しデュエリスト:2017/05/04(木) 23:42:03 ID:RyydZCKk0
>>378
重ね重ねありがとうございます!
>>371-372も含めてメモさせてもらいます

383名無しデュエリスト:2017/05/05(金) 18:35:16 ID:y4MAu1iU0
ところで質問ですがデュアルのように効果モンスターをデッキ内で通常モンスターとして扱うにはどのようにすればよいのでしょうか?
始祖神鳥シムルグを参考に手札では通常モンスターにできるのですが
よろしくお願いします

384名無しデュエリスト:2017/05/07(日) 17:07:05 ID:RyydZCKk0
「この効果(「このカード」では無い)を発動したターンのエンドフェイズ」に何らかの処理を加えたい場合はどうすれば良いのでしょうか
「堕天使ゼラート」と「森羅の葉心棒 マット」のスクリプトを参照したのですが、2つとも微妙な違いがありどの様に処理を可能にしているのかが分りません

「堕天使ゼラート」(このカードの①の効果を発動したターンのエンドフェイズ〜...)
function c40921744.sdescon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetFlagEffect(40921744)~=0
end

「森羅の葉心棒 マット」(同上)
function c63175639.spcon(e,tp,eg,ep,ev,re,r,rp)
if e:GetHandler():GetFlagEffect(63175639)==0 then return false end

それぞれこの部分で「ある効果を発動したかどうか」を判断しているのだと思うのですが、例えば「①の効果を発動した」という判定はどの部分で行っているのでしょうか

385名無しデュエリスト:2017/05/07(日) 20:24:49 ID:2tCEEvQA0
C系のプログラミング言語における原則
0はfalse
非0はtrue

return x~=0
は「xが真であるならば真を返し、偽であるならば偽を返す」という意味で用いられている可能性が(そのコードを書いた人が常識知らずでなければ)非常に高い。
また、
if x==0 then return false end
は「xが偽であるならば偽を返す。真である場合は以降のコードに進む」という意味合いであろう。

あなたの挙げた2例は大体同じ意味である。
《魔導化士 マット》については①の効果を発動した上で更に"墓地の「魔導書」と名のついた魔法カードが5種類以上"という条件があるため、それを満たすかどうか判定するため、《堕天使ゼラート》と異なる書き方になっているのであろう。

この程度の関数なら正直以下のようなワンライナーの方が良いと思う
function c63175639.spcon(e,tp,eg,ep,ev,re,r,rp)

  return e:GetHandler():GetFlagEffect(63175639)~=0 and Duel.GetMatchingGroup(c63175639.cfilter,tp,LOCATION_GRAVE,0,nil)
:GetClassCount(Card.GetCode)>=5

end

386名無しデュエリスト:2017/05/07(日) 20:28:32 ID:0seCpY4s0
>>383
シムルグの適用範囲をデッキにすればできない?

>>384
どっちも書いてる事は同じ(マットの書き方は冗長)
「Aの効果を発動した」かどうかは大体の場合は
① AのCost内でRegisterFlagEffectで自身にフラグを立てる
② GetFlagEffectでAを発動したか判断
という手順
永続罠の効果の発動なんかでも良く見られる書き方だね

387名無しデュエリスト:2017/05/07(日) 22:46:52 ID:RyydZCKk0
>>385
間違えていました・・・ 「森羅の葉心棒 マット」ではなく「魔導化士 マット」でした。失礼致しました
ありがとうございます!マットの方がゼラートと比べて複雑でしたがandで2つ以上の条件を括っても良いという事ですね
then return false endの意味もよく分からなかったのでとても参考になります

>>386
Costにそんな使い方があったとは知りませんでした
確かにゼラートにも同じ書き方がされてあります こういう使い方をするんですね
参考になりました!ありがとうございます!

388名無しデュエリスト:2017/05/14(日) 18:11:59 ID:6OiG1vXo0
コンマイ語に関する質問なんだが
モンスター効果の記述で、先にフィールドに出ていれば後から自身のモンスター効果を無効化されることはない
(ex.先にフィールド上に出ているスキルドレインやBloo-dには効果を無効化されるが後出しのスキルドレインやBloo-dには効果を無効化されない)
という場合はどういう記述をすればいいのかな?
「このカードの効果は無効化されない」じゃマズいよね

389名無しデュエリスト:2017/05/22(月) 01:53:30 ID:UeFavsGo0
その例なら「このカードはほかのカードの効果を受けない」でいいんじゃない?

390名無しデュエリスト:2017/05/22(月) 18:13:40 ID:6OiG1vXo0
>>389
ああ、申し訳ない。
ちょっと言葉が足りなかった。。。
出した例の範囲内だけなら確かにそうなるよね。

意図としては、
(a)特定の属性以外のモンスター効果を受け付けない。さらにモンスター効果の対象にもさせない。
(b)ただし、モンスター効果を無効化するモンスター効果に関しては、こちらが先にフィールド上に出ていれば相手モンスターの属性に関係なく一切受け付けない。
(c)対象を取る魔法・罠の効果は受け付けない(対象を取らない魔法・罠の効果は受ける)。
(d)ただし、モンスター効果を無効化する魔法・罠に関しては、こちらが先にフィールド上に出ていれば対象を取る取らないに関係なく一切受け付けない。
で、この場合の記述の仕方。


とりあえず、今はこれを
(1)このカードの効果は無効化されない。
(2)このカードは効果の対象にならず、○属性以外のモンスターの効果を受けない。




という記述にしてるんだが。

391名無しデュエリスト:2017/05/22(月) 18:33:32 ID:6OiG1vXo0
(a)(b)の補足
要するに、このカードが受けるモンスター効果は、特定属性の対象を取らない、モンスター効果を無効化する効果以外の効果のみということ

392名無しデュエリスト:2017/05/26(金) 00:54:34 ID:szSs0.260
>>390
そもそもとして「カード効果を無効化されない効果」は既存カードに存在しないからコンマイ語においては定義もされない

とりあえずそれ以外は
①:このカードはモンスターの効果の対象にならず、対象を指定しない魔法・罠カード及び○属性以外のモンスターの効果を受けない。
ぐらいじゃない?

393名無しデュエリスト:2017/05/26(金) 17:03:33 ID:6OiG1vXo0
>>392
既存カードに存在しない効果は実装しないのが基本なのは百も承知なんだが、
なぜこの効果を思い付いたかというと
SetCode(EFFECT_CANNOT_DISABLE)にSetConditionやSetOperation定義しなかったらどういう挙動するのかテストしてて思い付いたんだけどね。

とりあえず神属性の「このカードの召喚は無効化されない。」「このカードの召喚成功時には、このカード以外の魔法・罠・モンスターの効果は発動できない。」を取っ払って
幻神・邪神・極神に実装して内輪でやってるんだが今のところなかなかいい感じでハマってる。

394名無しデュエリスト:2017/06/04(日) 15:32:33 ID:8EVjueac0
二重魔法の対象を取らない版(Aとする)を作ってみて「RUM-幻影騎士団ラウンチ」を発動したら、
ラウンチではなくAがX素材になってしまいました。この時にラウンチを素材にさせるにはどうすればいいのでしょうか。

395名無しデュエリスト:2017/06/04(日) 19:30:01 ID:YAdilUkk0
>>394
恐らく構造上不可能
本来のカード効果では「対象のカード自体を発動させる」効果だけど、
ADSのスクリプトでは「対象のカードの発動時の効果を《二重魔法》の効果として使用」になってる
ADSに「カードの特定の効果を発動させる」ための関数が(多分)無いので本体で更新が来ない限り不可能

396名無しデュエリスト:2017/06/08(木) 00:00:30 ID:8EVjueac0
効果のリセットを効果解決時にしようと思っていますが、
e1:SetReset(RESET_EVENT+EVENT_CHAIN_SOLVING)ではないみたいです。
正しい表記はどうすればいいでしょうか。

397名無しデュエリスト:2017/06/08(木) 10:13:30 ID:qAZYL9GA0
>>396
その質問には問題点が3つある
一つ、単純に読めば恐らく正しい表記である
二つ、効果を与える処理は通常は効果処理時に行うため、そもそも効果処理時にリセットする事は恐らく無い
三つ、オリジナルの効果に関する質問の場合はその効果を全て書いた方が良い

398名無しデュエリスト:2017/06/12(月) 17:07:23 ID:Gzo3pjw20
「○○(カテゴリ)」カードが発動していないというのを発動条件にするのは可能でしょうか?

399名無しデュエリスト:2017/06/12(月) 17:11:13 ID:HfxKNEeA0
できる
そのカテゴリ全てのカードでRegisterFlageffectしてやればいい

400名無しデュエリスト:2017/06/13(火) 12:32:49 ID:Gzo3pjw20
>>399
発動タイミングが同じかつ任意の誘発効果なので
発動するかどうか選ぶ段階では効果が発動していないのですが
その方法でできますでしょうか?

401名無しデュエリスト:2017/06/13(火) 22:23:50 ID:ju1YNaOI0
>>398,400
「『○○』カードが魔法&罠ゾーンに存在しない場合に発動できる」なのか
「『○○』カードの効果は1ターンに1度しか発動できない」なのか
「『○○』カードは同一チェーン上では1度しか発動できない」なのか

最後の場合なら>>399でできる

402名無しデュエリスト:2017/06/15(木) 18:00:36 ID:ImA9y.To0
Pカードのオリカ作ってるけどあるPスケールを対象にする仕方が分からない。

効果の元はDDブラスト・オーガ
作りたい効果はスケール8が存在するときにこのカードのスケールを6にする。
このカードの元のスケールは8

--scale
local e5=Effect.CreateEffect(c)
e5:SetType(EFFECT_TYPE_SINGLE)
e5:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e5:SetCode(EFFECT_CHANGE_LSCALE)
e5:SetRange(LOCATION_PZONE)
e5:SetCondition(c13000155.sccon)
e5:SetValue(6)
c:RegisterEffect(e5)
local e6=e5:Clone()
e6:SetCode(EFFECT_CHANGE_RSCALE)
c:RegisterEffect(e6)

unction c13000155.sccon(e)
return Duel.IsExistingMatchingCard(Card.IsSetCard,e:GetHandlerPlayer(),LOCATION_PZONE,0,1,e:GetHandler(),0)
end

どこいじればいいですかね?

403名無しデュエリスト:2017/06/16(金) 05:48:29 ID:OV9uJmcY0
LOCATION_PZONEはそもそもSetRangeでしか使えない

404名無しデュエリスト:2017/06/16(金) 17:29:40 ID:.PfMoFLI0
>>402
ブラストオーガって誰だ
β版はどうなのか知らないが、少なくとも現日本版では>>403の言ってくれたように、LOCATION_PZONEが使えないからSequenceを使ってPゾーンのカードを取得する

405名無しデュエリスト:2017/06/17(土) 21:36:55 ID:ImA9y.To0
>>404
ブではなくプでした。よく見てなかった・・・
使ってるのはリンク対応βv4です。
まだ他のカードのスクリプト持ってきて弄るのがほとんどなんで細かい所の理解は・・・

406名無しデュエリスト:2017/06/21(水) 01:01:38 ID:Gzo3pjw20
スクリプトが長くなると途中にある攻守増減系の効果が効かなくなります
効果を一つ消すと有効になるのですが対処法は張りますでしょうか?

407名無しデュエリスト:2017/06/21(水) 08:08:58 ID:LB17FcGA0
多分括弧でミスってんじゃねえかな

408名無しデュエリスト:2017/06/24(土) 12:17:17 ID:wLqH7Nj.0
対戦相手がハノイの騎士なこと多いんだけどあれはデフォルトネームの一種なのか?
それともたまたま流行ってるとかなのかね

409名無しデュエリスト:2017/06/24(土) 12:17:50 ID:wLqH7Nj.0
ごめんなさい一個上と間違えました

412名無しデュエリスト:2017/07/04(火) 14:51:27 ID:NYxQqVLs0
質問失礼します。
墓地のモンスターを除外して、対象にしたフィールドのモンスターに除外したモンスターの効果と
「●このカードの効果で相手に与える効果ダメージは0になる。」
という効果を付与するカードを作っています。
「EFFECT_CHANGE_DAMAGE」を使って、そのSetValue先に

function c番号.damval(e,re,val,r,rp,rc)
if re:GetHandler()==e:GetHandler() and bit.band(r,REASON_EFFECT)~=0 then return 0 end
return val
end

と設定しているのですが、上記の効果と「ヴォルカニック・エッジ」の効果を与えたモンスターと「火炎地獄」でテストした所、
付与したモンスターの効果のみで与えるダメージを0にすることは出来ました。
ですが、「アマゾネスの剣士」や「LL-リサイト・スターリング」の効果を与えたモンスターで戦闘を行った所、
自分は戦闘ダメージを受けましたが、相手にその数値分の戦闘ダメージを与えることが出来ず、スクリプトエラーが出ました。
その時のエラーの状況は「re:GetHandler()==e:GetHandler()」の「re」に何も入っていない、という内容でした。
解決方法があれば、教えて頂きたいです。

413名無しデュエリスト:2017/07/16(日) 19:40:20 ID:YmKAqde.0
スクリプトの質問失礼します。
「このカードはデッキからもアドバンス召喚できる。」という召喚ルール効果を作ろうと思い、
真竜の召喚ルール効果に「e1:SetRange(LOCATION_DECK)」を追加してみたのですが、
デッキから召喚する事ができず、手札からの召喚ルールとして処理されてしまいます。
憑依装着の記述を参考にSetTypeをEFFECT_TYPE_FIELDにしてもダメでした。

上記のような召喚ルール効果を実装する事は可能でしょうか?
また、実装可能な場合はどのように実装すれば宜しいでしょうか?
どうぞ、宜しくお願い致します。

414名無しデュエリスト:2017/07/16(日) 20:28:17 ID:6.tlDY3w0
>>413
そこまでやってダメなら無理じゃないかな
そもそも(デュアルを除いて)手札以外から召喚する効果が無いからEFFECT_SUMMON_PROCが手札以外に対応して無いかもしれない

デッキで発動するチェーン不可能な召喚する効果として疑似的に再現する事はできそうな気がするから頑張れ

415名無しデュエリスト:2017/07/16(日) 23:14:13 ID:YmKAqde.0
>>414
うーん、やっぱり無理ですか…
それでは場に出す処理は起動効果や遺言状等の方面で作ってみたいと思います。

その際に召喚権を消費させたいのですが、
「このターン通常召喚できない」制約ではなく、召喚権を1回分だけ減らす処理を実装するにはどうすれば良いかどなたかご存知でしょうか?

417名無しデュエリスト:2017/07/17(月) 21:28:20 ID:OV9uJmcY0
普通に憑依装着の記述じゃだめなの

418名無しデュエリスト:2017/07/20(木) 19:12:40 ID:Oa7Sd71A0
質問失礼します。
「デッキに存在する間だけ効果モンスターとして扱う」魔法カードを作りたいと思い、
「EFFECT_CHANGE_TYPE」を使用してスクリプトを書いてみましたが、
適用されず、魔法カード扱いのままになってしまいます。
(手札や墓地ではモンスター扱いにできました。)

質問したいことは
・上記のような効果は実装可能かどうか。
・実装可能ならば、どのように実装すればよいか。
の2点です。
どうぞよろしくお願いします。

スクリプトは以下になります。
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e1:SetRange(LOCATION_DECK)
e1:SetCode(EFFECT_CHANGE_TYPE)
e1:SetValue(TYPE_MONSTER+TYPE_EFFECT)
c:RegisterEffect(e1)

419名無しデュエリスト:2017/07/20(木) 19:48:05 ID:2tCEEvQA0
デッキに存在する間だけ通常モンスターとして扱うカードを以前実装しようとしたがどうやっても無理だった
多分これも同じはず

420名無しデュエリスト:2017/07/20(木) 19:57:40 ID:2tCEEvQA0
というか逆に効果モンスターをデッキ以外で魔法扱いさせればいいのでは?

421名無しデュエリスト:2017/07/20(木) 20:21:14 ID:Oa7Sd71A0
>>420
なるほど、逆転の発想ですね...

通常モンスター扱いにするのもできないとなると、デッキ内には
「EFFECT_ADD_TYPE」や「EFFECT_CHANGE_TYPE」の影響は与えられない、ってことですかね。
効果モンスターをデッキ以外で魔法扱いにする方向で考えてみます。

ありがとうございました。

422名無しデュエリスト:2017/07/22(土) 18:22:13 ID:NYxQqVLs0
すみません、スクリプトの質問失礼致します。

Card.GetEffectCount(EFFECT_TRAP_ACT_IN_SET_TURN)を使って、
あるカードを、「王家の神殿」の「セットした罠カードを発動できる」効果を使用していないターンは発動できる、
既に使用したターンは発動できない、というスクリプトを作りたいのですが、
「EFFECT_TRAP_ACT_IN_SET_TURN」って、「Card.GetEffectCount」では使えるのでしょうか?

423名無しデュエリスト:2017/07/22(土) 18:46:53 ID:2tCEEvQA0
まずやってみてから来てね

424名無しデュエリスト:2017/07/22(土) 19:04:33 ID:NYxQqVLs0
やってみて出来なかったので来ました。
でも私の知らないやり方で、もしかしたら出来るかも?と思ったので質問させて頂いた次第です。

425名無しデュエリスト:2017/07/22(土) 20:47:27 ID:2tCEEvQA0
それなら《王家の神殿》のRegisterFlagEffectの数値を調べてそいつを使ってみたらどうだい?

426名無しデュエリスト:2017/07/24(月) 17:32:14 ID:NYxQqVLs0
>>425
返信遅れてすみません。
色々やってみましたけど、無理でした…orz
やはり、特定の効果の使用をカウントするのは不可能なのでしょうか…?

427名無しデュエリスト:2017/07/24(月) 19:19:47 ID:2tCEEvQA0
ちゃうちゃう
SetCountLimitやった
コイツ使えばいいんだよ

428名無しデュエリスト:2017/07/24(月) 20:56:15 ID:NYxQqVLs0
>>427
そちらが言った通り、SetCountLimitを使って、色々と実験してみましたが上手く行きませんでした…
頭の悪い私にどうかご教示願えないでしょうか。

429名無しデュエリスト:2017/07/24(月) 22:07:02 ID:2tCEEvQA0
eホニャララ:SetCountLimit(1, 29762407)ってのを適切な場所に差し込めば
「王家の神殿」の(1)の効果と制約が一緒になる

つまりその効果を発動すると「王家の神殿」の(1)の効果を使えなくなり、
「王家の神殿」の(1)の効果を発動するとその効果が使えなくなる

今作ろうとしてるカードの効果を貼ってくれれば適切な挿入場所もわかるんだがね

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しか無いと思う


新着レスの表示


名前: E-mail(省略可)

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

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

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

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