2013
04.03
Wed
こんにちは。屁ぷやんだお。


ハイ、例のアレですが、え、アレと言ってもアッチです。スクリプトの方です。
どうやらひょっとしてしまったかもわかりませんよコレは‥!?

1-ScreenShot1263.jpg

軽くカオスってますね。
さて、この一見普通のアフロですが、実はなかなかアレなのであります。


ハイ! というわけで、「任意のアイテム装備で髪型を変更できないか?」ということをスクリプトで実現しようとああでもないこうでもないしておりました。

まあ、前々回でにっちもサッチモだったので一旦中断していたのですが、AltheaRさまより有用な情報および知識をいただき、それを手がかりに色々試行錯誤を繰り返した結果‥

「未完成ながらも実現できつつある」

という状態まで持ってこれましてございます! やった! やりやがった!!
AltheaRさん、どうもありがとうございます! 超ありがとう!



‥え、ちょっと一体全体何を言っているんだチミは、
という感じかもわかりませんね。スミマセン。
とりあえず、どういったものか軽く解説させていただきます。


とりあえず、今回テストしてみた内容について。
まず任意の装備ですが、今回は紳士セットのネクタイをアミュレット属性で用意し、その装備そのものにスクリプトを仕込みました。スクリプトの詳細は後述しますがざっくりと「装備すると髪型をアフロにする。装備を解除すると元の髪型に戻す」という仕様となっております。


まず初期状態、元の髪型はこんな感じです。

1-ScreenShot1264.jpg

わかりやすいよう若干ビビッドな髪色にしてみました。
ネクタイはインベントリではこんな感じです。

1-ScreenShot1265-001.jpg



これをおもむろに装備すると‥。

1-ScreenShot1265.jpg

ポチッとな。

1-ScreenShot1266edit.jpg

‥!? 首から上が消えちゃいました‥。



と、とりあえずインベントリを抜けてみましょう! はやくはやく!!

1-ScreenShot1267.jpg

ほ、ホラ! アフロになった! やった! 大成功! や、やった‥? うーむ‥。


ちょっと気になるところはありますが、次、装備をはずしてみましょう。

1-ScreenShot1268.jpg

ぽ、ポチッとな。。

1-ScreenShot1269.jpg

ウェ~い。やっぱり消えます。うふふ。イヒー!
ま、まあ、例によってインベントリを抜ければちゃんと元の髪型に戻ってますよ。多分。。

1-ScreenShot1264.jpg

と、こんな感じであります。


やった! やった‥のかオイ?! いいのかコレで!!
‥まあヨシとしましょう! とりあえずは。




という感じで若干アレなトコロはありますが、当初の企みをほぼ実現できつつあります。
今回は単にアフロな髪型を使用してみましたが、コレを付け毛つきのかぶりものにすれば、今まで悩みのタネだった髪色固定をなんとかできちゃいそうな勢いであります。さらに、この方法だとあくまでも髪型を変更しているので、耳もちゃんと残ります。こりゃあイイや!


‥ということで今回組んだスクリプトは以下のとおりになります。



Scn SetHairTest ;; スクリプト名称

ref origHair ;; 元の髪型

ref who ;; 持ち主
ref hair ;; 髪型
string_var formID ;; FormID文字列

begin OnEquip
;; このスクリプトが貼り付けられたアイテムを装備したときに
;; 以下の処理を実行

;;持ち主を取得
set who to GetContainer

if (origHair == 0)
;;元の髪型を保存
set origHair to who.GetHair
endif

;; アフロのFormID(の下6桁)文字列を生成
set formID to sv_Construct "000ED3"

;; このespのFormIDの上2桁にアフロのFormID下6桁を連結し
;; 髪型リファレンスを生成
set hair to GetFormFromMod "SetHairTest01.esp" $formID

;; 持ち主に髪型をセット
who.SetHair hair

;; 生成した文字列を解放
sv_Destruct formID

;; モデルをリロード ‥※
who.update3d

end


begin OnUnequip
;; このスクリプトが貼り付けられたアイテムの装備解除したときに
;; 以下の処理を実行

;;持ち主を取得
set who to GetContainer

;; 元の髪型に戻す
who.SetHair origHair

;; モデルをリロード ‥※
who.update3d

end



なめるように解説しようかとも思ったのですが、そもそもコメントで書いてる以上のことは理解してなかったりとかwww いや、笑ってる場合じゃないですね。。。

FormIDから髪型をセットする箇所で呼んでいるSetHairの使い方は、「バジリコ風味なBlog」のr_basilicoさま作成のMOD「RandomHairEnemy v1.5」のスクリプトが大変参考になりました。というかコレが無ければ多分未だにモンモンしてるどころか「やだー!! もうスクリプトやめー!やめー!!」ってなことになっていたことかと。大変感謝いたします。や、まだ未完ですが。



さて、どうやらインベントリで装備したり解除したりしたときに首から上が消えちゃうのは "‥※" 部分でupdate3dをコールしているせいっぽいです。どうしたものか。再描画の処理自体は別のアイテムを装備したり解除したりすると実行されるような感じもするので、そのあたりをヒントに直せるかもしれません‥。ほんまかいな。

ちなみにちょっと意外だったのが「元の髪型」を保存するための変数ですが、これはちゃんと保存されるようですね。一旦オブリを再起動してセット内容を確認してみたところちゃんと値が保存されていました。そういうもんなんだねぇ‥。

とまあこんな感じで勉強はじめて間もないアレなので色々不備がありそうな予感がします。まだ良くわからずに実装しちゃってる部分とかもあるので油断は禁物です。リリースまでこぎつけるのかな‥。

スクリプトのお作法にもナカナカ慣れなくてちょっと違和感、というか「え~なんで~?」って思うこともしばしば。例えば、SetHair, GetHair は「SetHair hair who」や「GetHair who」だとNGで「who.SetHair hair」や「who.GetHair」だとOKなんですね。なんだかよくわからんちん。や、まあ多分「そういうモノなの!」ってことなのでしょうな。



1-ScreenShot1271.jpg

よ~し、がんばるぞー。




ところでこんなアレなのでまだまだリリースは先のことになる‥ていうか、コレ、何に混ぜてリリースするつもりなんだろう? しまった、その辺のこと全然考えてなかった。

や、まあそれは置いておいて、もし超☆人柱版でも「よ~し、いっちょ試しちゃうよ?!」なんて豪の者はいらっしゃったりしますでしょうか? もしアレでしたら、後で配布出来る形にまとめて4sharedにでも上げておきますので、もしアレでしたら‥ちょっとお試しいただけたりしちゃったりなんてしないかなァ~なーんて☆ミ

‥スンマセン。


【追記】

調子にのってアップしてみました。

SetHairTest

インベントリで装備直後に首から上がなくなる現象は残ったままであります。。。
まだまだテストも不十分ですし、超スクリプト初心者の手によるものなので、申し訳ありませんが扱いはくれぐれも慎重にお願いいたします。


スミマセン、バグがあったので一旦公開を取り下げます。。。



ではごきげんよう。
関連記事
スポンサーサイト
comment 12 trackback 0
トラックバックURL
http://hepsy.blog.fc2.com/tb.php/72-c1d9407b
トラックバック
ぼやき
これを応用すれば装備したとたんスキンになる袈裟とかも作れますね。
。。。必要ないかw
じゃあ装備したとたん陰毛がはみ出すパンツ。
。。。いらないねw
AQUARIA | 2013.04.03 21:05 | 編集
バジリコさんのMODには本当にお世話になっています。
件のRandomHairEnemy を作成される際にはアレコレ口出しして
私の要望を訊いてもらったのはいい思い出。その節はスンマセンでした。

しかしコレが実現出来れば、ウィッグ付き装備とかのカラーバリエーションを
用意する必要がなくなる訳ですか。
製作者にも利用者にも嬉しい機能ですね!
YAHI | 2013.04.03 21:20 | 編集
Re: AQUARIAさま
マイドいらっさい!

おっwww なにやら素晴らしいアイデアが‥。あ、アイデアが‥。
スキンになる袈裟はまじめに有効利用な感じがしますw
付けるとモヒカンになる肩パッドとかもいいですね。

でも、陰毛のほうはですね、別にコレを使わなくても
実現できちゃう気がすごくしますよ!www
ボーボーですわいやwww
屁ぷし | 2013.04.03 21:49 | 編集
Re: YAHIさま
マイドであります!

フフフ。いやあ、試行錯誤中にサイトを色々漁ってたんですが、
バジリコさんのまさにこのRandomHairEnemyのコメント欄で「おっw YAHIさんだ!」
って思いましたw 勝手な解釈でアレですが、この手のMODって色々な人の意見や
フィードバックが必要なんじゃないかな、と思うので恐らく助けになっていたのでは。

して、ハイ、今回のこれはまだまだ色々と穴があるかと思われますが、
実用に耐えれるようになったなら、結構イイ感じのアレになっちゃったりして!
なんて妄想したりとかしております。

少なくとも今まで付け毛に悩まされていた私にとっては俺得!ですw
屁ぷし | 2013.04.03 21:56 | 編集
これはすごいですね
 使う楽しさに加えて、リソース?ソイソース?としても価値あるものになりそうですね。髪型も含めた『かず子さん変身セット』とか作れたりするかもとか勝手に思ったりですね。いや、それは普通にwigと耳と服をセットで包んで配ってしまえばいいのか。でも何か、色々と楽しいことが出来そうな期待が膨らみます。

 ところで、色々なサイズのアフロかず子さんの大量に発生している様は、さながらマリモ星人の侵略ですねwww
泥龍 (clay7890d) | 2013.04.03 23:28 | 編集
Re: 泥龍さま
マイドでありやー!

おっw スゴイでしょう! オイスターソースもオイシイですよ!
いやはや、マジメな話、有用なリソースになり得たら嬉しいですね。
ただ、やはりまだ全然スクリプトのお作法とかを把握しきれてないので、
多分にお行儀の悪いソースかもわかりません。

まあコレがうまいこと確立できたら、色々と今までモンモンしていたところが
少しは軽減できそうな気がしなくもなくもないような気がいたしますわよ。


して、マリモwww そう、マリモっぽいですよねコレwww
髪の毛を緑にしておけば良かったかもってちょっと後悔してますw
屁ぷし | 2013.04.04 00:05 | 編集
お疲れ様です。

頂いたデータでいくつか試してみましたが、人によって結果が違うとかなんともカオスな状況ですねw
私の環境だと男女共にプレイヤーは装備できて、コンパニオンが男女共に装備できないという状況でしたわ。
種族とかも関係あるのだろうか…。
後日ちょっと試してみますです。

その前に解決しちゃうかもですがw

つか、最初のSSよくみたら大小様々だったんですね。
どれがオリジナルサイズなのかわからんですわw
鋼鉄蒸気 | 2013.04.04 01:01 | 編集
Re: 鋼鉄蒸気さま
マイドおつかれちゃーん!

‥マイドおつかれってちょっとアレでしたねw スンマセンwww

して、ご検証いただきありがとうございます! いやあ助かります。
うーん、こうも人によって結果が違うとはスクリプトめなかなかやりおるわいや。
という感じで軽くパニクってますw ただなんとなくですが、ひょっとしてコレかしら?
と思われる箇所が無くもないので、ちょっと調べてみます。

もしかすると、元の髪型に戻すための変数が想定外の動きをしちゃってるのかも‥。
すべてのネクタイで同じ変数を参照しちゃってるとか。うーんワカランチン。


おっw そうなんですよ。大小様々のマリモちゃんであります。
オリジナルはですね、一番手前の机に乗っちゃってる人がオリジンなんですが、
この人もサイズは0.8倍くらいですwww
屁ぷし | 2013.04.04 01:21 | 編集
いくつか検証してみましたので報告を。

・3人称視点で装備しないと効果がない

・やはり顔面はその都度消える → インベントリを抜けたら更新されて表示される

・MPCや一般NPCに渡しても ネクタイは装備するが髪型は変わらない

・自分が装備してアフロになった状態でNPCに渡すと
 自分はアフロのままで NPCにプレイヤーの髪がコピーされる
 その際、その種族に登録されていない髪型でも構わずコピーされる

・プレイヤーの髪がコピーされたNPCに再度同じ事をしても元には戻らない

 ひとまずこんな所でしょうか。環境によって再現度はまちまちだと思いますが
参考材料になれば幸いです。
YAHI | 2013.04.04 23:19 | 編集
Re: YAHIさま
マイドでっす!

おぉ、ご報告感謝です!

>・3人称視点で装備しないと効果がない
どうやら1人称視点だとupdate3dが効かない模様ですね。装備した状態で3人称視点に戻ってからコンソールでupdate3dと打つと反映されました。。一時的に3人称視点にしてからupdate3dして1人称に戻す、ってすればいけるかな?

>・やはり顔面はその都度消える → インベントリを抜けたら更新されて表示される
これもやっぱりアレですよね。うーむ。

>・MPCや一般NPCに渡しても ネクタイは装備するが髪型は変わらない
うちでもそうでした。
どうやらMPCが装備したときに、「装備した」というイベントを感知してないっぽい‥。

>・NPCにプレイヤーの髪型がコピーされる
うーむ。おそらく髪型を戻す時用の変数にプレイヤの元の髪型が入っているのですが、それを反映しているように見えます。しかし戻す処理を入れてるのは「装備を外した」イベントの中なのです。「装備した」イベントは感知せず「装備を外した」イベントは感知している‥?

元の髪型変数もどうやらこのMOD内で共有されちゃっているみたいですね。各NPCの元の髪型を管理するとなると‥なかなか大変そうですねw うーん。プレイヤー限定にしたほうが無難な気がしてきました。

いやあ‥こりゃあやっぱり難しいものですねw


ちょっと追記です。調べてみたら、「装備した」というイベント(OnEquip)とは、「インベントリで任意のアイテムをクリックした」と同意とのことでした。つまり、MPCは何かを装備するとしてもインベントリ開いてその何かをクリックしてるわけではないので、イベントが走らない‥ということかもしれないです。プレイヤーとMPC・NPCで処理を分ければいいかもわかりませんね。
屁ぷし | 2013.04.04 23:54 | 編集
何これすごい。
スクリプトを使える屁ぷしさんなんてまさに鬼に金棒ですね!

これ、たとえばパジャマを着たら髪を解く、とか
水に入ったら濡れた髪形になる(ぺっちゃんこ)とかそういうのにも応用できそうですね。
BOC4 | 2013.04.06 12:25 | 編集
Re: BOC4さま
マイドでわんわん!

ヒャッハー! すごいでしょうwww
‥絶賛バグ潰し中です。バグもあるんですが、他MODとの兼ね合いとかも考慮しないと
あきまへんねん。なかなかこう、一筋縄ではいかないアレでしたw
そんなアレなので鬼に金棒どころか小学生がリコーダー持ってる程度ですwww

ちょっと色々調べてどうにかなりそうな部分とどうにもならなそうな部分を切り分けて
第二版を出そうかな、っていう状態であります。
ちょっとPC限定にしないとにっちもサッチモかもしれまへん。ウヘァ!


そう、状況によって髪型が変わる!っていうのは楽しそうですね。
パジャマを着たら髪を解く、ってのはストレートな髪型にすればイケるかもですね。
水に濡れてペタんってのはなかなか難しそうですねw 元の髪と対になるぺたん髪を
どう紐付けるかですね。

なんにせよ、まずはベースを確立できたら、の話ですが‥w
屁ぷし | 2013.04.06 15:09 | 編集
屁ぷしだけにこっそり耳打ちする
 
back-to-top