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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

こんな感じで

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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
ありがとうございます!
似た様な効果のカードのスクリプトを見比べていてもそれらの文字は多様な使い方をされている事が多いので混乱していました
これらの説明していただいた内容を把握した上でもう一度読み返してしてみようと思います


新着レスの表示


名前: E-mail(省略可)

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

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

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

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