これ の続き。ようやくVB.NET/C#.NETからPowerShellのスクリプト関数を定義して実行する目処がつきました。
内容は長いのでこちらに 。
PSU で続編イルミナスの野望 に向けた比較的大きな変更が昨日行われました。拾い物の武器にも属性がついていたり、SUV/ナノブラストといった特殊技能を行使してもそれ以前に付加した能力増強効果が維持されるなどいろいろありますが、最も影響の大きいのはダメージ計算方法の変更。こちらが与えるダメージが増えて喜んでいたら、もらうダメージも増えていて今まで耐えられた攻撃に対しても戦闘不能が続出。う〜ん、防御方法を見直さないといけないか?
セガには悪いけど過去の経験から思うに、これだけ変更して トラブルが発生しないほうが稀。そもそもこの変更一回実施を延期 してます。セガに限らず更なる安定性の確保のためと説明されるのが延期発表時の常ですが、とても提供できる状態じゃないというのがありがちな実態。イルミナスの野望発売前にはやらなければいけないという期限付きのこの変更、万全の状態にして提供なんて余裕があるわけなく、やっぱりトラブルが起きてしまいました (つд`)。
そのひとつがマイルームに戻れないというもの。私が戻ろうとした直前に発生したらしく、見事足止めを喰らう。そんなに早く直るものじゃないだろと思いつつも小一時間ほどクエストしましたが、やっぱり直らず。その間にマイルームに戻る端末前に人だかりできてるしw
で、みんな帰宅待ちなのですかという発言を発端に、帰宅難民→ここは難民キャンプ→踊って回復を祈れ→踊って痩せろ→グラール難民ブートキャンプと訳の分からない会話に発展したのは面白かったw 写真はその難民ブートキャンプ。
発表では今朝回復したようですが、イルミナスの野望発売と前後して大きな変更が予定されており、まだトラブルは続きそうな予感はします。それをいまや恒例と寛容になるどころか期待している私って、PSUの世界に変な適応してしまったなぁ。
— posted by mu at 08:41 am Comment [0] TrackBack [0]
2007/9/17
キャラクター | レベル | 持ち金 |
---|---|---|
1st | 87→98 | 150万→320万 |
2nd | 47→90 | 10万→160万 |
今は2ndキャラにキラーシュート(ライフルの付加機能で低確率で敵を一撃で倒す)を持たせ、ロボット軍団撃破の繰り返し。キラーシュートがPP(エネルギーみたいなもの?)消費が激しいので5丁のライフルを次々交換しながらと、なんか映画である銃を撃っては換え撃っては換えみたいで面白かったり。敵の体力が高く、数が尋常じゃないのでキラーシュートがかなり有効、経験値がじゃんじゃん入ってきます。
下の写真はロビーで見かけたキメララッピーw この写真にいるのは私じゃありませんが、私もラッピー着ぐるみ愛用者の一人。これのいいところは、縫い目・顔出し穴・生地・ピヨピヨ足音などの「着ぐるみらしさ」が高いこと。PSOのラッピー博士が本物のラッピーらしさを追求(てか、見分けつかんw)しているのに対し、こちらはあくまで「着ぐるみらしさ」。ファスナーもあると更に良かったのですがw
— posted by mu at 09:22 am Comment [0] TrackBack [0]
2007/9/14
先日 の続き。未だSystem.Management.Automation.RunspaceにPowerShellスクリプト関数を定義して実行する方法がわからないので(2009/4/3 分かりました )、COM実装のMSScriptControl.ScriptControl使用に方針変更。
VB6ならば以下のようにすれば使えます。.NET上で作成したCOMインスタンスは開放処理しないとメモリに残り続ける という手間はあるようですが、.NET上でもCOMは.NET Frameworkとほぼ等価に扱えるため、同じ手法で実行できるはず。
が、トラブる。Runメソッドを呼ぶ段階になるとなる例外を出してしまいます。原因はRunメソッドが第2引数以降を可変長引数(VBでいうParamArray)を取るため。これの扱いはSystem.ArgumentException: HRESULT からの例外: 0x800A01C2 場所 MSScriptControl.ScriptControlClass.Run(String ProcedureName, Object[]& Parameters)
環境 | 可変長引数の渡し方 | 型 |
---|---|---|
Visual Studio 6/COM | Variant配列への参照 | Object[]& |
Visual Stduio .NET/.NET Framework | Object配列の実値 | Object[] |
呼ばれる側のMSScriptControlはバイナリでいじれないので、呼ぶ側がObject[]&型で引数を用意して渡す必要があります。C#ではrefを前に付ければObject[]&型を渡せる ようですが・・・VB.NETでどうやるんだろ、これ?
調べてもVB.NETで実現方法がわからなかったので、C#で以下のようなMSScriptControlを扱うクラスを作って対処することになりました。う〜ん、[oneway]のためだけにC#が必要 とか、凝った事するとなるとC#なんでしょうか・・・using System; using System.Collections.Generic; using System.Text; namespace MSScriptControlInterface { public class ScriptControlInterface { protected MSScriptControl.ScriptControl mScriptControlInstance; public ScriptControlInterface() { // // TODO: Add constructor logic here // mScriptControlInstance = new MSScriptControl.ScriptControl(); mScriptControlInstance.Language = "VBScript"; } ~ ScriptControlInterface() { System.Runtime.InteropServices.Marshal.ReleaseComObject(mScriptControlInstance); } public void AddCode(String code) { mScriptControlInstance.AddCode(code); } public object Run(string name, object[] arguments) { return mScriptControlInstance.Run(name, ref arguments); } } }VB.NETだけでやる方法もあります。
今週このネタ解決するだけで終わった orz
[参考]— posted by mu at 05:52 pm Comment [0] TrackBack [0]
2007/9/13
うわ、知らなかった。VBScriptで正規表現処理するVBScript.RegExpクラスなんてあったんだ。てっきり.NET Frameworkにしか無いと勘違いしてた。これ知ってれば、いくつかのVB6プログラムで仕様変更やあの手この手で代替処理しなくてもよかったのに orz
と恥をさらす記事でしたw
[参考]— posted by mu at 11:18 am Comment [0] TrackBack [0]
Comments