LSLでシューターを作りたいので、マウスの左クリックの開始から終了までの時間を測定して、スロー速度を設定します。
また、GUI を更新したい (または少なくともテキストPower: 55%
などを表示したい) としましょう。
どうやってやるの?
私は LSL をあまり知らず、何も試すことができませんでした。私が見つけることができる最も近いのはllTakeControlsのこのページですが、使い方がわかりません。
助けてくれてありがとう、
編集
@BlindWandererの答えに基づいて、私はそれを変更しようとしました(control()
マウスがダウンしている間に繰り返し呼び出されることを期待しています)が、明らかにそうではありません:
default
{
state_entry()
{
llRequestPermissions(llGetOwner(), PERMISSION_TAKE_CONTROLS);
}
run_time_permissions(integer perm)
{
if(PERMISSION_TAKE_CONTROLS & perm)
{
llTakeControls(CONTROL_LBUTTON, TRUE, TRUE);
}
}
control(key id, integer level, integer edge)
{
integer start = level & edge;
integer end = ~level & edge;
integer held = level & ~edge;
integer untouched = ~(level | edge);
if(start & CONTROL_LBUTTON) {
llResetTime();
}
if(end & CONTROL_LBUTTON) {
llOwnerSay((string)llGetTime());
}
// --- My attempt to display the time peridoically
float timerval = llGetTime();
llOwnerSay((string)timerval); // this doesn t fire
if(llRound(timerval*100) % 5 == 0){
llOwnerSay((string)timerval); // this neither
}
}
}
私の2回目の試み( という変数があることに気付いた後held
)ですが、再び機能させることができませんでした:/
default
{
state_entry()
{
llRequestPermissions(llGetOwner(), PERMISSION_TAKE_CONTROLS);
}
run_time_permissions(integer perm)
{
if(PERMISSION_TAKE_CONTROLS & perm)
{
llTakeControls(CONTROL_LBUTTON, TRUE, TRUE);
}
}
control(key id, integer level, integer edge)
{
integer start = level & edge;
integer end = ~level & edge;
integer held = level & ~edge;
integer untouched = ~(level | edge);
if(start & CONTROL_LBUTTON) {
llResetTime();
}
if(end & CONTROL_LBUTTON) {
llOwnerSay((string)llGetTime());
}
if(held & CONTROL_LBUTTON){
llOwnerSay("check");
float timerval = llGetTime();
llOwnerSay((string)timerval); // this doesn t fire
if(llRound(timerval*100) % 5 == 0){
llOwnerSay((string)timerval); // this neither
}
}
}
}