ADSのオリカスクリプト書く時、Notepad++を使っているのですが
必要な使い方に気づいたので備忘録をば。

セッションの保存

いくつかのファイルを開きながらスクリプトを書くことが多い。
その際、開いているファイルタブ郡を保存出来れば、と思っていたらその機能がありました。

まずいつもの画面がこちら
112501

4つのファイルを開いている状態でこの状態を保存したい。
ファイルからセッションの保存をクリック。

112502

これで状態を保存したファイルが作成出来る。読み込む時はファイルセッションを読み込むから。

112503

これで開発が大分楽になりました。

スクリプト用

ちなみにリンク召喚用のYGOPROに手を出してないのでマスタールール3で止まってます。
マスター4のルールをよく理解してないんです。
ここからはADSのLUA用の内容です。

最近ADSの引数をよく忘れてADS開発Wikiから発掘してきた分をこちらに引用。

ADSの引数
(e)この効果[Effect]
(tp)効果発動のプレイヤー[Number]
(ec)イベントに関連するカード[Group]
(ep)イベントに関連するプレイヤー[Number]
(ev)イベントに関連する数値[Number]
(re)イベントの原因となった効果[Effect]
(r)イベントの原因を示すREASON定数[Number]
(rp)イベントの原因となったプレイヤー[Number]
結構あっさり記載があって、探せなかったりしますよね。

Group型からCard型にしたい時

型が違うと読み込まない関数が結構ありますね。
Group型変数に1枚しかカードが入っていない場合、以下でCard型変数に代入出来ます。

local c=g:GetFirst()

cはCard型、gはGroup型です。"最初の1枚を取り出す"という事ですね。

特定のカードから効果を取り出し、効果に介入する効果

主にD-HERO ダイヤモンドガイなどの効果の再現方法ですね。
一応ダイヤモンドガイのスクリプトを読めば、わかります。
流れとしては効果をコピー必要な部分を改変効果を付与という流れです。

発動時の効果を取得。魔法や罠であればフィールド上での効果になります。
local ae=c:GetActivateEffect() 

効果をコピーして付与する。ae:Get~で続く物が指定箇所にコピーされます。

local e1=Effect.CreateEffect(c)
e1:SetDescription(ae:GetDescription())
e1:SetType(ae:GetType())
e1:SetCode(ae:GetCode())

例えばここでフリーチェーンではないカードをフリーチェーンにしたい場合、
e1:SetCode(ae:GetCode())をe1:SetCode(EVENT_FREE_CHAIN)と言った形にすれば良いです。
今回は除外ゾーンでのみ発動する効果にします。

e1:SetRange(LOCATION_REMOVED)
e1:SetReset(RESET_EVENT+0x1fe0000)

2文目は除外ゾーンから離れた場合、付与された効果が消えるリセットの記載。
こうしないとデッキに一度戻った場合でも除外ゾーンに再び送れば発動するカードに。
ちなみにSetCostは記載しなければコストを踏み倒すカードになります。
踏み倒したく無い場合記載をする必要があります。
またSetConditionはConditionの関数にreturn trueと記載しておけば発動条件を無視することが。
風林火山や大革命といったカードを無条件で発動させたい場合、こういった方法があります。

function cxxxx.t2con(e,tp,eg,ep,ev,re,r,rp,chk)
return true
end

対象を取るカードもこの効果の影響に含まれる場合、対象を取る必要があります。
対象を取る場合、取らない場合が介在するダイヤモンドガイでは、if文で書かれています。
そのまま引用すると

local ae=e:GetHandler():GetActivateEffect()
local ftg=ae:GetTarget()
if chk==0 then
return not ftg or ftg(e,tp,eg,ep,ev,re,r,rp,chk)
end
if ae:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then
e:SetProperty(EFFECT_FLAG_CARD_TARGET)
else e:SetProperty(0) end
if ftg then
ftg(e,tp,eg,ep,ev,re,r,rp,chk)
end

となっています。一度、GetTarget()でSetTargetを取得し、
Nullでなければプロパティに対象を取る事を記載し、
対象を取る場合、そのまま対象を取る関数を走らせるftg(引数)~以下を実行してます。
こうすれば正しい対象を選択出来ます。
安定性に欠けるので対象に関して介入する事はあまりオススメしません。
同じ要領でOperationも記載が可能です。ダイヤモンドガイをそのまま引用します。

local ae=e:GetHandler():GetActivateEffect()
local fop=ae:GetOperation()
fop(e,tp,eg,ep,ev,re,r,rp)
以上です。


最近大学関連やらなんやらで手が回らなくなってきました。
やらなきゃいけないことを放ったらかしてやるゲームは楽しいんじゃあ…(*´∇`*)
またそのうち更新します。