人生ゲーム漬けなダメ人間のBlog

ページ内情報

プロフィール

ページ内検索




カレンダー
  12345
6789101112
13141516171819
20212223242526
2728293031  
<< August 2017 >>



月ごとで検索


カテゴリーで検索




最近の日記一覧

コンテンツ

【G13】ひとまず完成

まだまだ細かいところは気になるんだけど、ムダに一つのボタン押しっぱなしとか排除したおかげで肩にも優しい感じになったと思います。このスクリプト、他でもつかえると便利そうだなあって思いますね。色々とテストしたりしているのでソースがぐっちゃぐちゃなのはお察しということで( ゚Д゚ )


あ、そうそういい忘れましたけどこのスクリプトはC21操作のために作られたものなのであしからずー


まずは初期化とスペースのトグル命令、それとブーストの状態がわかるようにディスプレイ状態の制御です。
これはボタン押下時の命令をしているのですが、押したときの実行命令は最後に指定しています。
複数にまたがると判定が上手くいかない感じがしたので最後に一括して行いました。


-- INIT --
i = 0

-- BOOSTER_tggle --
function Tggle_ON(arg)
if (arg == 24) then PressKey(0x39)
OutputLCDMessage("BOOST_ON",10000)
if (GetMKeyState() == 1) then SetBacklightColor(0,255, 0)
elseif (GetMKeyState() == 2) then SetBacklightColor(255,0,255)
elseif (GetMKeyState() == 3) then SetBacklightColor(0,0,255)
end
i = i + 1
end
end

function Tggle_OFF(arg)
if (arg == 24) then ReleaseKey(0x39)
ClearLCD ()
if (GetMKeyState() == 1) then SetBacklightColor(0,20, 0)
elseif (GetMKeyState() == 2) then SetBacklightColor(20,0,20)
elseif (GetMKeyState() == 3) then SetBacklightColor(0,0,20)
end
i = i - 1
end
end

で、ここから先はトグル前・トグル後の動作を指定します。
地上にいるときは斜めダッシュ・空中時には上昇とサイドダッシュを指定しています。
前だけはダッシュを設定せずに通常歩行を残しています。
ボタンを離したときの動作も誤動作を起こしやすかったので一括して設定しました。
ボタンのキー呼び出しはG13付属のAPIのものをそのまま使っています。

-- DASH_MODE --
function Press_DASH(arg)
if (arg == 26) then
PressKey(0x48)
elseif (arg == 29) then
PressKey(0x4b,0x48) ReleaseKey(0x4b,0x48) PressKey(0x4b,0x48)
elseif (arg == 27) then
PressKey(0x4d,0x48) ReleaseKey(0x4d,0x48) PressKey(0x4d,0x48)
elseif (arg == 28) then
PressKey(0x50) ReleaseKey(0x50) PressKey(0x50)
end
end

-- FLY_MODE --
function Press_FRY(arg)
if (arg == 26) then PressKey(0x48)
elseif (arg == 27) then
PressKey(0x4d) ReleaseKey(0x4d) PressKey(0x4d)
elseif (arg == 29) then
PressKey(0x4b) ReleaseKey(0x4b) PressKey(0x4b)
elseif (arg == 28) then
PressKey(0x50) ReleaseKey(0x50) PressKey(0x50)
end
end

-- Press_OFF --
function Press_OFF(arg)
if (arg == 27 or arg == 29 or arg == 26 or arg == 28) then
ReleaseKey(0x4d,0x4b,0x48,0x50)
end
end

最後に動作の条件判定です。
この辺はActionScriptと同じ感じでfunctionで定義したものをそのまま呼び出してくるだけで設定を変更できます。
ただしAPIで指定されている命令はユーザー関数としてつかえないので注意してください。

-- RUN ACTION --
function OnEvent(event,arg)
if (GetMKeyState() == 1) then
if (event== "G_RELEASED")then
Press_OFF(arg)
elseif (event == "G_PRESSED" and i == 0)then
Press_DASH(arg)
Tggle_ON(arg)
elseif (event == "G_PRESSED" and i == 1)then
Press_FRY(arg)
Tggle_OFF(arg)
end
elseif (GetMKeyState() == 2) then
if (event== "G_RELEASED")then
Press_OFF(arg)
BT_OFF(arg)
elseif (event == "G_PRESSED" and i == 0)then
Press_NOM(arg)
BT_ON(arg)
elseif (event == "G_PRESSED" and i == 1)then
Press_FRY(arg)
BT_ON(arg)
end
end
end

C21での設定の話を少しすると、地上にいるときは後ろ・斜めダッシュを有効にし、飛行時は旋回・上昇ダッシュを有効にします。これは、色々試してみた結果サイドダッシュに前後を組み合わせる動作をさせようとすると、レバーが何故かデジタル認識でしかも四方向しか認識しないとか意味わからないハード仕様なので、できることなら一ボタンに複数のボタン連打を割り当てたほうが使い勝手が良さそうだ、というに至りました。
最後の段落でMKey2番の時の指定が入っているのは飛行・地上ではなく、いわゆるBダッシュ的な動作を実現しようとした名残ですが、このキー配列で飛行とダッシュのボタンを操ろうとするのはちょっと無理があるので今のところ封印しています。


ロジテックのシリーズでこのスクリプト編集を応用できるデバイスがあるようだったら、もっと違う使い方ができるのかもしれませんね。




| ここな | レビュー | comments(0) | trackbacks(0) |


<< 【アケゲまとめ】ロケテ地視察して感じたこととか | main | 【レビュー】ブレイズアクスがやっと当たったよ! >>



Comment











Trackback
url: http://kurobee.kokona.lomo.jp/trackback/1037779

その他情報

管理者ページ / RSS1.0 / Atom0.3 / Powered by ロリポブログ

無料ブログ作成サービス JUGEM
(C) 2017 ブログ JUGEM Some Rights Reserved.