Home > ★MOD導入・作成HowTo > お城の扉の鍵Script

お城の扉の鍵Script

お城の扉の鍵Script

---------------------------------------------------------------
scn aaaAvaCountyDoor01Script

short msg_state

begin OnActivate
ref ref_p
set ref_p to GetActionRef
if ( ref_p != Player )
return
endif

if ( GetStage aaaAva01 < 20 )
set msg_state to 1
else
Unlock
Activate
endif
end

begin GameMode
if ( msg_state == 0 )
return
endif

MessageBox "この扉を開けることはできない。"
set msg_state to 0
end

Comments:17

Altria Pendragon URL 2011-05-21 (土) 12:47

> -fixupPGRD
なる様
ショートカットのプロパティを開いて、リンク先に「~\TES4Edit.exe" -fixupPGRD」と付け足しました。
無事にTES4Editは起動し、
> TES4Editで"Apply Filter"、左中段の"by injection status"・"only injected"にチェック
> 真中下段の"conflict status ~"にチェック、他全部ノーチェックでFilter
> 左欄に斜体字のオブジェだけ載るのでシフトクリックなどで選択したのち"Change FormID"
を行ないましたが、「021~」で統一されてしまいます・・・。
TES4Editはバージョンは『TES4Edit_3_0_15_EXPERIMENTAL-11536』を使用しています。
う~ん、おかしいですね;;
また、いろいろ調べてみます。

なる URL 2011-05-21 (土) 12:30

やり方はそれであってるはずなんですけど、なんでだろう?
Tes4EditをFixModeで動かしてないとダメなのかな
以下の引数をTes4Editに付けて試してみてください
-fixupPGRD

Altria Pendragon URL 2011-05-21 (土) 11:20

> えーとIDに関しては複数選んで"Change FormID" すると勝手に新規IDを割り振ってくれると思います
なる様
ご指摘の通り、複数選択で"Change FormID" したら、うまく新規IDを振ってくれました!
しかし、なる様の手本と違い、「03」始まりではなく、「02」始まりになります。
"Select a single target file"はAvalon II Project Town.espを選んでいますが・・・
そのまま「02」で統一して、ゲームスタートすると地面が消えたりと壊れてしまっていました。
今、他のesmを"Select a single target file"に選んで、「00」「01」の場合もどうなるのか試しています。
という感じです。ご報告まで・・・。

なる URL 2011-05-21 (土) 10:58

えーとIDに関しては複数選んで"Change FormID" すると勝手に新規IDを割り振ってくれると思います

IDのズレがどんな影響を及ぼすかははっきりと判りません
少なくても私の環境ではAvalon II Project Town.espをマスターにしたpatchはCSで保存できず作成出来ませんでした

Altria Pendragon URL 2011-05-18 (水) 22:25

追記です。
修正いただいたespも拝見し、中身を学習しました。FormIDが03~で始まっていました。
それに対し、私のほうは01~/02~で2パターン存在しました。
そこまでは理解できたのですが、Chage Form ID で03~の数字を割り振ればいいのかな?とも思ったのですが
IDの数字の割り振り方?がわからないので、そこで止まっています。。。

Altria Pendragon URL 2011-05-18 (水) 22:14

http://2bangai.net/read/1fe49747bee9a0fd4c9dff6c5a2b8ed47c0f30ccc404fe1c405c5b5cb532eb27/301

なる様
上記のスレ315~を検索して読んで少し理解しました。
スレ318が心当たりがありまして、やはりesm化した際にesp側をWryeBashでmaster指定した気がします。
とりあえず、即弊害発生しないようですね、スレの文面では。うーん…もう少し勉強します。

Altria Pendragon URL 2011-05-18 (水) 20:43

> TES4Editで"Apply Filter"、左中段の"by injection status"・"only injected"にチェック
> 真中下段の"conflict status ~"にチェック、他全部ノーチェックでFilter
> 左欄に斜体字のオブジェだけ載るのでシフトクリックなどで選択したのち"Change FormID"
なる様
上記、試しました。
すると、たしかに抽出されました。しかし、どうしても意味がわからないのですが、

1)Avalonで生成したオリジナルのオブジェだけが表記される
 →FromIDのズレは既存のオブジェのズレ・・・と思っていましたが、違うのでしょうか?
2)元のChange FormIDがわからない
 →Avalonで生成したオリジナルのオブジェだけなので、元のChange FormIDがわからない

なにか言っている事が自分でもイマイチ変な(指摘された操作方法をどこかで間違えているのでは?)
気がして相当不安なのですが、これで本当に正しいのか気になりました。
数万のズレですが…数万のズレを1つ1つ修正するのは厳しいですね…う~ん、困りました。
具体的な障害がないなら、このまま進めたほうが良いのか、どうしたらいいのか悩んでいます。
また、どうしてこうなったのか…espとesmの分離作業が原因では?という気もしています。

なる URL 2011-05-18 (水) 20:05

TES4Editで"Apply Filter"、左中段の"by injection status"・"only injected"にチェック
真中下段の"conflict status ~"にチェック、他全部ノーチェックでFilter
左欄に斜体字のオブジェだけ載るのでシフトクリックなどで選択したのち"Change FormID"

たぶん数万はあったと思うので直すのは割と時間掛かります

Altria Pendragon URL 2011-05-18 (水) 19:00

> ただ、scriptよりも気になったのは FromIDのズレです
> Avalon II Project Town.esp の大半でMODIDがずれていました
> MODID全部直してみましたがこれをマスターとしている esp とは互換がなくなります
> (Change Some Avalon People)
なる様
いろいろとご確認と貴重なお時間をお使いいただき、まずは御礼申し上げます。
おまけにespの修正まで…本当に有難うございます;;
今、実は1つだけ困っていることがありまして、既に0.98版を作っていまして、
なる様の修正版をそのまま利用すると0.98版を破棄せざる得ないことです。
TES4EditでFromID自体の存在は理解しましたが、どうやって直せば良いのかがわかりません。
自身で0.98版のFromIDを直そうと思っているのですが、どのように修正すれば良いかご教授いただけないでしょうか
・・・本当に頼りっぱなしで申し訳ないです><

なる URL 2011-05-18 (水) 12:13

あ、メッセージも必要だったんですね
DLして確認してみました

私が考えてたのは aaaAvaCountyDoor01Script01 に今のscriptを当てはめるやり方です
ただ、こんな小細工必要なさそうでした

scn aaaAvaCountyDoor01Script

ref ref_p

begin OnActivate

set ref_p to GetActionRef
if ( ref_p != Player )
return
endif

if ( GetStage aaaAva01 < 20 )
MessageBox "この扉を開けることはできない。"
else
Unlock
Activate
endif
end

ただ、scriptよりも気になったのは FromIDのズレです
Avalon II Project Town.esp の大半でMODIDがずれていました

MODID全部直してみましたがこれをマスターとしている esp とは互換がなくなります
(Change Some Avalon People)

また、FromIDが変わっているのですでに導入済みのSaveDataとも互換がありません
一旦、Avalon II Project Town.espのチェックを外して Save、再度チェックを入れなおして再開する必要が

あと上記のscriptですがコンソールを使ってですが動作確認をしてるんでたぶん平気かと…
下のespに入れ替えて新規ゲームで試してもらうと速いかもしれません

ゲームスタートしたら
コンソールからプレイヤーを選択して
moveto XX12e9c0
(XX は Avalon II Project Town.esp のMODID)
問題の扉の裏側に出るので tcl で表に出ます(出なくてもいいですけど)
扉をActiveteしてメッセージと入れないのを確認したら
setstage aaaAva01 20
で入れるか確認してみてください

esp は URL欄に入れてみました(此処は多分エラー出ると思うので)

Altria Pendragon URL 2011-05-17 (火) 23:42

念のためにCSに入れたScriptは以下の通りです。

-----------------------------------------------------------------------------
scn aaaAvaCountyDoor01Script02

ref aaaAva01DoorRef

begin gamemode

;誤作動防止
if ( GetStage aaaAva01 < 20 )
printC "Error : aaaAva01 が 20未満で実行されました"
stopquest aaaAva15
return
endif
set aaaAva01DoorRef to aaaAvaCastleMainDoor01REF
aaaAva01DoorRef.unlock
stopquest aaaAva15

end

Altria Pendragon URL 2011-05-17 (火) 23:41

なる様
検証報告です。
・ドアにアクティベートすると、1回目は鍵がかかったままで押し返される
・2回目のアクティベートで中に入ることが出来る
・クエスト「aaaAva01 20」未満の際に「中に入れません」メッセージがでない
という事で少し苦戦中です・・・

Altria Pendragon URL 2011-05-17 (火) 22:54

> それで動くと思います
> 解除するときだけ動く仕組みなので単純だけどいいかなと
> もっと単純な方法だと単に鍵を持たせちゃうことですが、
> 何か理由があって鍵にしてないと思うのでそれがベターかなと思います
なる様
レス有難うございます!
確かに何度も鍵にしようかなと悩みました…。
ただ、できれば伯爵になる前に謁見の間にはプレイヤーを入れたくないということで
メッセージ付きで鍵をかけておきたい…という希望がありました。
それが実現できそうです。
またScriptを1つでも多く終わらせたほうが負荷軽減になるとも聞いていますので
そういう意味でも勉強になりました。有難うございます(まずは試してみます!)

なる URL 2011-05-17 (火) 22:34

それで動くと思います

解除するときだけ動く仕組みなので単純だけどいいかなと

もっと単純な方法だと単に鍵を持たせちゃうことですが、
何か理由があって鍵にしてないと思うのでそれがベターかなと思います

Altria Pendragon URL 2011-05-17 (火) 22:20

なる様
書き込みありがとです!
以下で合っていますでしょうか?
---------------------------------------------------
scn aaaAvaCountyDoor01Script

ref aaaAva01DoorRef

begin gamemode

;誤作動防止
if ( GetStage aaaAva01 < 20 )
printC "Error : aaaAva01 が 20未満で実行されました"
stopquest
return
endif

set aaaAva01DoorRef to (ドアのID)
aaaAva01DoorRef.unlock
stopquest
end

なる URL 2011-05-17 (火) 21:28

今見たら gamemode 使わないわけがない…

begin gamemode を

;誤作動防止

の上に入れてください。
そうしないと不完全script…

なる URL 2011-05-17 (火) 16:22

こんばんは

もう解決されたかもしれませんが Quest Script でいいかもしれません
扉は鍵が必要なレベルの lock をしておいて
aaaAva01 の GetStage を 20 にするときに
startquest aaaAva01Door01Quest として QuestScript の aaaAva01Door01Script を走らせる
※予め、aaaAva01Door01Questという名前の Quest を作成し、
Script に aaaAva01Door01Script を指定してると仮定しています。

ref aaaAva01DoorRef
scn aaaAva01Door01Script

;誤作動防止
if ( GetStage aaaAva01 < 20 )
printC "Error : aaaAva01 が 20未満で実行されました"
stopquest
return
endif

set aaaAva01DoorRef to (ドアのID)
aaaAva01DoorRef.unlock
stopquest
end

単純ですが gamemode も使用しないのでいいかなぁーと
テストしてないので動くか判りませんけど( ̄□ ̄;)

Comment Form

Trackback+Pingback:0

TrackBack URL for this entry
http://siraltriapendragon.jp/tb.php/250-6d48a352
Listed below are links to weblogs that reference
お城の扉の鍵Script from Altria Diary - Campagnolo & Hillclimbs -

Home > ★MOD導入・作成HowTo > お城の扉の鍵Script

Recent Comments
Recent Trackback
Search
Meta
Feeds

Page Top

PVアクセスランキング にほんブログ村