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

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

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

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

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

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
窓を出さずに公開する方法はないものですかね

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

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

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

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

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

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

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

302 201です :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で区切られてるところに選びたい効果当てはめるといいっぽいですよ

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

305 201です :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デッキから特殊召喚できる。(「融合」は必要としない。)

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

308 201です :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の定義を水属性モンスターに変更するにはどうすればいいでしょうか?
定義のやり方だけでもいいので教えてください…

309 201です :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
ありがとうございます
初心者なのでたぶんまた来ます

312 201です :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++のほうの自作・改変スレや解説ブログや情報交流サイトなどを知っている方がいましたら教えてくれると助かります

320 201です :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
トラミッドモンスターの効果を変えたら作れると思いますよ(自分は挫折しました)

325 201です :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です
連投失礼しました

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

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

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

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

332 201です :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)を追加してみてはどうでしょう?

334 201です :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に守備表示で蘇生して壁にすればいいだけだから
攻撃不可のデメリットがあまり意味ない

357 名無しデュエリスト :2017/04/14(金) 20:42:43 ID:OV9uJmcY0
OCG的に考えると一度正規召喚しないと蘇生制限うぃ満たせず蘇生できないので別に1枚だろうとコスト重くは思えない
3アド消費して身代わり耐性と思えば決して安くは無いし

ただ、蘇生制限満たさなくても蘇生できるとなるといかに幻魔を墓地送り蘇生するかって感じになってそれ幻魔としてどうなのって思う
墓地から出すモンスターってコンセプトにしたいならそれでもいいだろうけど 

あとスレチな気がした

358 名無しデュエリスト :2017/04/14(金) 21:21:43 ID:6OiG1vXo0
>>355-357
thx
とても参考になった

現環境だと三幻魔はコストの割に弱すぎるので
制限カード仕様として耐性を強化した上でアーミタイルをもう少し出し易くするにはどういう仕様にすればいいか考えてたらとりあえずこんな感じになった次第
確かにテストプレイしててラビエルはちょっと簡単に出過ぎるなぁという印象はあった

もうちょっと練り直してみるわ
ありがと

359 名無しデュエリスト :2017/04/16(日) 00:40:36 ID:YmKAqde.0
同一チェーン内で複数回発動できない効果を作ろうとしているのですが、
同一チェーンで複数発動できてしまいます。

SetPropertyにEFFECT_FLAG_CHAIN_UNIQUEを設定しても効果が無く、
《醒めない悪夢》からそれっぽい記述を移植してみたらエラーを吐いてしまいました。
どのように記述すればこのような回数制限を実装できるのかが分かりません。
どなたかご教授をお願い致します。

local e5=Effect.CreateEffect(c)
e5:SetDescription(aux.Stringid(130000001,0))
e5:SetType(EFFECT_TYPE_QUICK_O)
e5:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON)
e5:SetCode(EVENT_FREE_CHAIN)
e5:SetProperty(EFFECT_FLAG_CHAIN_UNIQUE)
e5:SetHintTiming(0,0x1c0)
e5:SetRange(LOCATION_EXTRA)
e5:SetCondition(c130000001.sprdon)
e5:SetOperation(c130000001.sprdop)
c:RegisterEffect(e5)
function c130000001.sprdon(e,tp,eg,ep,ev,re,r,rp)
if c==nil then return true end
local tp=c:GetControler()
local selfExist = not Duel.IsExistingMatchingCard(c130000001.sprdfilter,tp,LOCATION_ONFIELD,0,1,nil)
--醒めない悪夢からの移植記述1
local selfNotChain = e:GetHandler():GetFlagEffect(130000001)==0
return selfExist and selfNotChain
--醒めない悪夢からの移植記述2(この行でエラー発生)
e:GetHandler():RegisterFlagEffect(130000001,RESET_CHAIN,0,1)
end
function c130000001.sprdfilter(c)
return c:IsCode(130000001) and c:IsFaceup()
end
function c130000001.sprdop(e,tp,eg,ep,ev,re,r,rp)
if e:GetHandler():IsRelateToEffect(e) then
if Duel.SpecialSummon(e:GetHandler(),SUMMON_TYPE_FUSION,tp,tp,true,false,POS_FACEUP_ATTACK)~=0 then
e:GetHandler():CompleteProcedure()
end
end
end

360 名無しデュエリスト :2017/04/18(火) 21:04:54 ID:8EVjueac0
EFFECT_HAND_SYNCHROで手札をS素材にできると聞いたけどどう使えばいいかわからないです。
参考になりそうなスクリプトは無いでしょうか?

361 名無しデュエリスト :2017/04/18(火) 21:59:13 ID:v/JKE9Hg0
>>359
宝玉の集結のスクリプト見てみた(醒めない悪夢以外に同一チェーン上で同じ効果のみを発動できなくする効果が無かった)
君はとりあえず他のカードのスクリプトの書き方を見てみると良い
スクリプトの記述の仕方が慣例と違うからそれが原因の可能性はある
具体的に言うと、
・フラグによる発動可能かどうかの管理はCostで行う
・特殊召喚する際の条件式はTargetに書く

>>360
たつのこ

363 名無しデュエリスト :2017/04/30(日) 22:13:45 ID:.ix/WnMc0
PカードがEXデッキに行く時誘発効果で墓地へ行く効果作ろうとしてますが上手く行きません
ゲール・ドグラやマクロコスモスの記述見ても上手く行きませんし
やはり定数EVENTに記述がないから厳しいですかね?

本体側でPカードがLOCATION_EXTRAに移動処理してるから
不可能ではないはずなんですけども

364 名無しデュエリスト :2017/05/01(月) 14:42:35 ID:0seCpY4s0
質問来てたのであげ

>>363
「PカードがEXデッキに送られる場合、EXデッキに送らずに墓地へ送る」だったら永続効果だと思うけど、
そういう「〜する場合、代わりに〜する」タイプの効果は全部EVENT定数で定義してるっぽいし、本体側を変えないと不可能なんじゃないかな

「PモンスターがEXデッキに送られる度に、そのPモンスターを墓地へ送る」誘発効果(または永続効果)なら作れる
ダイナミスト・チャージとか参考にしてみると良い

365 名無しデュエリスト :2017/05/02(火) 01:41:26 ID:RyydZCKk0
質問です。「自分フィールドのモンスターが除外された時・場合」という効果の条件を作る時に
ZS-幻影賢者(c51865604)のスクリプトを参考にしていたのですが、
「②:バトルフェイズ中に自分フィールド上のモンスターが除外された場合、
その除外されたモンスター1体を選択し〜...」
の「自分フィールド上のモンスターが除外された場合」という記述がスクリプトのどの部分にあたるのかが分りません。

SetCode(EVENT_REMOVE)でカードが除外された事が条件に指定されているという事はなんとなくわかるのですが・・・

366 名無しデュエリスト :2017/05/02(火) 21:56:16 ID:jhEIfcr20
RUM-ヌメロン・フォースのモンスター版を作ろうと思っているんだけど、参考になりそうなカードあるかな

367 名無しデュエリスト :2017/05/02(火) 22:45:35 ID:0seCpY4s0
下がるの早すぎィ!

>>365
EFFECT_TYPE_TRIGGER_O → 任意の誘発効果
EFFECT_FLAG_DELAY → タイミングを逃さない
Duel.GetCurrentPhase()〜 → バトルフェイズ
c51865604.spfilter → (特殊召喚できる)自分フィールドに居たモンスター
eg:IsExists(〜 → 除外された中に上記のカードがあるか?

>>366
どんな効果を作ろうとしてるか分からん
RUMの効果を起動効果にするだけじゃないのか

368 名無しデュエリスト :2017/05/02(火) 23:04:51 ID:.ix/WnMc0
>>364
ダイナミスト・チャージ参考になりました ありがとうございました
タイミング逃さず墓地へ送れて 最終的にこうなりました
--to GRAVE
local e4=Effect.CreateEffect(c)

e4:SetCategory(CATEGORY_TOGRAVE)

e4:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD)

e4:SetCode(EVENT_TO_DECK)

e4:SetRange(LOCATION_EXTRA)
e4:SetCondition(c117440512.thcon)

e4:SetTarget(c117440512.ethtg)

c:RegisterEffect(e4)

function c117440512.thfilter(c,tp)

  return c:IsFaceup() and c:IsControler(tp) and c:IsLocation(LOCATION_EXTRA)
  and c:IsSetCard(0x0b)
 and c:IsPreviousLocation(LOCATION_ONFIELD)

end

function c117440512.thcon(e,tp,eg,ep,ev,re,r,rp)

  return eg:IsExists(c117440512.thfilter,1,nil,tp)

end

function c117440512.ethtg(e,tp,eg,ep,ev,re,r,rp,chk)

  if chk==0 then return true end

  local g=eg:Filter(c117440512.thfilter,nil,tp)

    Duel.SendtoGrave(e:GetHandler(),REASON_EFFECT)

end

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

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


新着レスの表示


名前: E-mail(省略可)

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

■ したらば のおすすめアイテム ■

ドアノブ少女【通常版】 - 吾嬬竜孝(企画・撮影)


この欄のアイテムは掲示板管理メニューから自由に変更可能です。


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