上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
DLLImportの多言語化について

ちょっとハマったのでメモ。

現在、C#のアプリを作成してましてフォルダ複数選択ダイアログを自作しました。

C#単体では「マイコンピュータ」のような特殊なフォルダ?とか、
フォルダのアイコンとか取得できないのでShellAPIを使うことになります。

で、作成できたものの、
フォルダ名に日本語にない文字がある場合、化けてしまったのでその対応をしました。
たとえば中国OSで上記問題が起こりました。

環境をまとめると
ベース:C#
多言語したい対象 : C++(DLLImportで使用)

この場合はsetlocaleとかCurrentInfoとかで設定できません。

前置きが長くなりましたが、解決策。

DLLImportに文字コードを設定できるプロパティ CharSet がありますのでこれを設定すればOK。

具体的にはこんな書き方です。

[DllImport("shell32.dll", CharSet=CharSet.Auto)]
public static extern IntPtr SHGetFileInfo(IntPtr pIDL, uint dwFileAttributes, out SHFILEINFO psfi, uint cbFileInfo, SHGFI uFlags);

CharSet.Autoは実行しているOSによって自動的に選択されるプロパティ。
ちなみに何も指定しない場合は、コンパイルした言語になるっぽいです。バグってた時だとAnsiかな。


あと注意するのはこの関数で使っている構造体などなども設定する必要があります。

上記の例だと「SHFILEINFO」ですね。

構造体の前に「StructLayout」で設定します。

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public struct SHFILEINFO
{
public IntPtr hIcon;
public int iIcon;
public uint dwAttributes;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
public string szDisplayName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]
public string szTypeName;
}

こんな感じ。


ShellAPIなんか滅多に使わないですけど、使わないからこそ情報も少ない、
よって詰むので一応。
この3連休で懐かしのFF10をやってました。

チート満載でプレイしていたのでサクサク


1.序盤からエンカウント無し防具作成

2.獲得APMAX

3.アイテム減らない

4.金MAX

基本的に、強制戦闘で苦戦しないくらいステータスを上げて、エンカウントなしで突き進む。

FF10ってエンカウント率が高くて非常にうっとおしいので、
ストーリーに集中するべくこんな感じで。

ストーリーはストーリーを楽しんで、戦闘は訓練場で。


で、改めてプレイした感想なのですが、鬱ゲーっぷりが半端無い。

昔プレイしているので召喚士の旅の結末とか知ってるんですが、
話がわかってると完全に別ゲーになるぞこのゲーム。

初見:ティーダ目線
2週目:他のガードさん達目線

2週目にありがちなサイドストーリーモードがなくても別目線で遊べる素晴らしいシナリオ。


寺院の試練は無くてもよかったな。

あれさ、めんどくさいだけだよね。

特にバベルとか攻略サイト見ないと詰む。


難しいところもなくサクサク進んで、アルベドホーム、ガガゼト山門、ジェクト戦、ラストで号泣。

全クリできました。


その後は七曜武器、印集め。

火曜の聖印はクソだるいのでチートでゲット。
土曜の聖印は一匹捕まえたら10匹になるチートでゲット。
あとはまじめに集めました。

ここで問題が。

全然戦闘をしかなったので、ステータスリールが出ない。
よって、水曜の聖印が出ない。

ほぼずっとPTに入ってたティーダが「みんなのうらみ」で1000ほどしかくらわないという状態。

もうワッカの七曜武器は諦めて、自作することに。
「ダメージ限界突破」「トリプルドライブ」「さきがけ」「貫通」
にしました。

防具も全員分作成
「HP限界突破」「完全毒無防御」「オートヘイスト」「オートリジェネ」
にしました。
オートリジェネの回復量がカスいんですが、HP増えれば使えるのかね。
混乱防御のがよかった気がする。



次に、エンドコンテンツの訓練所をやりました。

全クリ時のステではとても手に負えないのでスフィア版巡り。

これさ、昔は全然強化しないでやめちゃったので思わなかったけど、
ちゃんとやろうとするとすげーだるいね。

移動→ずるずる・・・→セットするスフィアを選択→ピキーン!の繰り返しでテンポ悪いったらない。
移動先がうまく選べなかったり、空きを埋めたりしながら99レベル×全キャラとか1時間くらいかかる。

全キャラは無理なので、ティーダ、リュック、ワッカ、アーロンを鍛えてました。

HP20000 攻撃力150くらいまで強化。

ここでいつかやりたかった「ダメージ限界突破の限界突破」を実行。

すると面白いことが。

ステータスは同じなのにアーロンだけダメージが3倍くらい強い。
これはアーロンの七曜武器「正宗」がHPが少ないほどダメージUPの効果があり、
しかもUP倍率が高いのですがHP全快時でも強い。

実際のダメージとして
ティーダ:七武器:攻撃力150:モンスター闘鬼:ダメージ約100000
アーロン:七武器:攻撃力150:モンスター闘鬼:ダメージ約300000

こんなに違う。

カウンターのクリティカルで140万とか見たしなww

初期の倍率がそもそも高いのか、「HPが少ないほど」の計算式が
「最大HPと現HP」ではなく「99999と現HP」になっている気がする。

上記が正しい場合、最大HP上げれば弱くなるわけですが、よくわからん。

これやって分かったことは、アーロンは早々にカンストすること。

で、他のキャラがカンストする頃にはいらない子になるわけですが、実際は比べようもないダメージを与えていた。
実際に誰かが調べた情報曰く、アーロンにバーサク、はげますでビルドすると、
最大ダメージ450万くらいらしいです。

地域制覇モンスターで、ジャイアントプリンが倒せず終了。

魔力、防御上げないと無理くさい。
カーズが糞強いです

何が強いってイージービート(弱連打)のラスト(残虐にしてあざやかな奇襲)がガードできない。

正確には、「残虐にしてあざやかな奇襲」は2段攻撃でして、一回目の判定の後 後ろに判定が出ます。

これがガードできない。

プラクティスモードでオートガードにするとCOMは防ぐのでやり方があるのでしょうが不明。

とにかく弱が当たればいいので使いやすいですね。

ジャンプ強でめくりつつ出すとか、単純に走って出すとかいろいろ。

で、一回当たるとなかなか抜けられない。

寝っぱ→起き上がりにJ強→立弱 or 立弱

受身→走り弱確定

どうしようもない。

注意するところとしてはゲージが溜まってるとHHA出てガードされたり(よくわからんけどガードで割り込まれる時がある)するので

ゲージが溜まったらR1で使っちゃいましょう。





ジョジョ ASBをワムウでやってます。

持ちキャラ何にしようか模索してたところ、
スタンドキャラは出したりしまったり覚えることが多くめんどくさいので却下

一気に選択肢は減ったものの、波紋勢と仮面勢から探すことに。

とりあえず一番好きなワムウを使ってみたら意外としっくり来たのでこれに。

ワムウを使って分かったことは
とりあえず『「風」だけを感じてものを見よう』を開幕に使う。

これで『ドルルルッ』が使えるのでダメージ効率が上がります。

特にデメリットもないので角出し安定っぽいです。

で、屈中、立中の性能がいいのでこれらを主軸にダメージを与える。
立中は発生、リーチが優秀なので牽制技。
屈中はコンボ始動技。
2Hitなのでヒット確認がしやすいです。
ヒット確認でドルルルが確定なので大ダメージ。

確認が難しいなら小ドルルルまで出してもいいかも。

ただし小にしないとガード後相手有利なので確反されます。

風のモードはいらないかな。

大事なのがダウン後の「発想のスケールでまけた」を使って追い討ち。
慣れてない人だとヒット、立ち上がりにヒット→ダウン、ヒットとこれだけでガッツリ稼げます。

屈大→発想も良い。

屈大しまくると相手しゃがむので「このワムウに殺される資格はあるッ!」で攻撃。

相手との距離が離れている、こっちのダウン起き上がりには「逆におもいっきりのげぞったッ!」で奇襲。

出始め?が無敵なので良いです。


まとめ

普通は屈中、立中、屈大で攻める。

屈大→発想
屈中→ドルルル
屈中→殺される資格→発想

しゃがみ出したら、屈中で固めて殺される資格 or 殺される資格単品 → 発想

起き攻めは 屈中 or 殺される資格で2択

相手の起き攻めには「逆におもいっきり」。
advertisement


プロフィール

とりにく

Author:とりにく
ゲーム好きなプログラマーやってます。

使用可能言語:C,C++,C#,WPF,JavaScript,Cuda
使用可能開発環境:VisualStudio2005-2013,Unity,CodeWarrior

リンクフリーです
相互リンクなどはこちら↓までかコメント欄にでもよろしくです。
skymail_tt@yahoo.co.jp

検索フォーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。