2013年2月22日金曜日

ゴースト「tkytk」を拡張してみる その2

いっしょに立ってる他のゴーストのことも知りたい!ということで。\0名を列挙してみます。
まず。非常に恥ずかしいバグの修正から。

--NOTYFYリクエストの応答も同様に設定できる(けど設定してない)
NOTYFY={}

コメントも含めてTYPOしてます。NOTIFYですね…これを

--NOTYFYリクエストの応答も同様に設定できる(けど設定してない)
NOTIFY={}
NOTIFY.otherghostname=otherghostname

とします。otherghostnameが、他のゴースト名が通知されてくるイベントです。
次に、ファイルの一番下に

function otherghostname(tbl)
msg=""
for key,value in pairs(tbl) do
if string.find(key,"^Reference") then
p=string.find(value,string.char(1))
name=string.sub(value,1,p-1)
msg=msg..name.."\\n"
end
end
end
こんな感じで足してみます。
msgを空にした後、tblの数だけforで回します。キー名がReferenceで始まる場合だけ、名前を取り出して、msgに足します。
string.char(1)なのは、Referenceの値の区切り文字がバイト値の1だからです。
NOTIFYは戻り値を必要としないのでreturnで何かを返さずに終わります。

次に、msgの内容を確認したいので、OnKeyPressを書き換えてしまいます。
function OnKeyPress(tbl)
ret=tbl.Reference0.."が押されたわよ\\n\\n"..msg.."\\e"
return ret
end
元のメッセージの後ろにさっきのmsgをくっつけるだけです。

これで、SHIORIをリロードして何かキーを押すと、同時に立ってるゴーストの名前もしゃべってくれるようになったはずです。

ここまでのnarファイルはこちら

2013年2月21日木曜日

ゴースト「tkytk」を拡張してみる その1

tkytk.dllは同じフォルダにあるindex.luaを読み込みます。
なのでまず、index.luaをテキストエディタで開きます。文字コードはUTF-8になっています。

ややこしい処理はだいたいindex.luaの中でうまくやるように書いているので、イベントの処理の追加だけまずは考えます。とりあえず「なで」は欲しいところですよね。

それっぽいイベントをこのサイトで探すと、「OnMouseMove」というのが見つかります。
なのでまずはOnMouseMoveというイベントの定義を追加します。

GET.OnWindowStateRestore=OnWindowStateRestore

という行の下に

GET.OnMouseMove=OnMouseMove

を追加します。これでOnMouseMoveのイベントが発生するとOnMouseMoveという関数(または配列)が呼ばれるようになります。
(GET.OnMouseMoveはGET["OnMouseMove"]とも書けます)

ファイルの一番下に

function OnMouseMove(tbl)
if tbl.Reference4~=nil then
return tbl.Reference4.."\\e"
end
end

を追加します。(OnMouseMoveはReference4にあたり判定識別子が入ってきます)

開発用パレットを開き、リロード→SHIORIを選んでください。
マウスが通過したところの名前がふきだしに表示されるようになったはずです。

でもこれだけだと「なで反応」にはならないですね。物凄い勢いで「マウスが動いたよ」という通知が来ているようです。そこで、「なで」というのは「一定期間同じ判定領域でマウスを動かし続けた」状態だと考えてみます。こんな感じでしょうか。ざっくり日本語で書くと
「前回と同じところでOnMouseMoveが発生したらカウンターを1ふやす。60超えたらカウンターを0にしてメッセージを返す」
みたいな処理になっています。
function OnMouseMove(tbl)
if oldRef4~=nil and oldRef4==tbl.Reference4 then
mousemovecounter=mousemovecounter+1
if mousemovecounter>60 then
mousemovecounter=0
return tbl.Reference4.."をなでたわね\\e"
end
end
oldRef4=tbl.Reference4
end

load()のGET={}の上あたりに
mousemovecounter=0
という一行を足しておきます。 (これをしないとmousemovecounterはnilになってしまうので+1できません)

開発用パレットを開き、リロード→SHIORIを選んでください。かさをなでると「kasaをなでたわね」と表示されるようになったはずです。

※追記

load()の中でmousemovecounterを初期化してもいいんですが、

--mousemovecounterが初期化されてなければ0にする
if mousemovecounter==nil then
mousemovecounter=0
end
 を
function OnMouseMove(tbl)
の直下に入れてしまった方が自然かもしれないですね(毎回nil判定が入りますが…)

tkytkサンプルゴースト

サンプルに徹した感じのゴーストを用意してみました。

http://kinoko.pw/ghost/tkytk_130221.nar

起動時メッセージとキーとダブルクリックとランダムトークぐらいしかありませんが、だいたい何を追加したら他のことができるかはわかるように書いたような気がします。

index.luaを実際に覗いてみてください。このファイルはどう改変して使っても問題ありません。
※tkytk.dllを配布物に含めるときは必ずLua52-License.txtもセットにしてください。

→Lua5.2の日本語リファレンスはこちら

2013年2月18日月曜日

tkytkでなで反応

もっしょくしさんのおかげで、tkytkで「なで」が可能になりました。
スチームにしきのshiori_base.luaでデフォルトで有効にしてあります。
index.luaのOnMouseNadeが呼ばれるようになっています。

…ちゃんとトーク増やさないと。

2013年2月9日土曜日

ママチャリ系いじり

ローラーブレーキは最初に入ってるグリスが少ないらしい、ということで子供の自転車にグリスの追加をしようかなと。



10gだと700円ぐらいで100gだと1000円ぐらい…グリスってだいたいそんな感じなのかねw
これはローラーブレーキについてるキャップを外して入れればいいらしいので。

あと、やっぱり欲しいなあと思うドラム抜き。

ホーザンHOZANドラム抜きC-349
ホーザンHOZANドラム抜きC-349
価格:3,300円(税込、送料別)

ママチャリ系いじりに手を出すならやっぱり欲しいなぁ…

2013年2月6日水曜日

子供自転車のブレーキ交換計画

これもまあ必須じゃないけどデュアルピボット化とか。
ママチャリのブレーキ交換でよく使われるっぽいやつ。
選択肢はこのへんかな…値段同じぐらいだし見た目で選んでもいいかな?

ダイアコンペ

PROMAX

TEKTRO

あと、下の子の自転車はバンドブレーキなのでメタルリンクブレーキ化とかできないかなぁ・・・


無駄にかっこいいよね。

2013年2月3日日曜日

7sで困ってないけど9s化案

絶対軽量じゃなきゃってわけでもないけど、ちょっと惹かれるのがこれ。


SRAMの9s用スプロケット。249gで「超軽量」らしいのだけど比較対象がなくてよくわからないw

シマノのDEOREグレードだと

これ。11-28Tのは重量書いてないけど、11-32Tで335g、11-34Tで387gらしい。

あとレバーを交換しなきゃいけないので
これもいるかなー、とか。

そもそも3X9にする理由あんの?という問題がまずあるのだけど…
Google