 |
getUserCount サーバーコマンドでは、リストシンタックスを使用して、一度に 1 つ以上のサーバームービーに関する情報を取得できます。 シンタックスは次のとおりです。 |
|
gMultiUserInstance.SendNetMessage("system.movie.getUserCount",
任意の件名, ["Movie1", "Movie2"])
|
 |
「Shockwave Multiuser Server でのサーバーサイドのスクリプト作成」の「サーバーサイドのスクリプトオブジェクトについて」では、例文の前に次の文があります。 |
|
"次のステートメントは、テキストファイルの "testScript.ls" から親スクリプトを作成します。" |
|
この最初の文は、親スクリプトについて正しく記述していません。正しい文は、次のとおりです。 |
|
"次のステートメントは、テキストファイルの "testScript.ls" からグローバルスクリプトを作成します。" |
 |
「マルチユーザー Lingo 辞書」の、setBreakPoint() のエントリにある次の文は誤りです。 |
|
"ブレイクポイントを切り替えるには、new() (スレッド) コマンドを使用して作成されたスレッド内で実行中のハンドラに、ブレイクポイントが設定されている必要があります。ブレイクポイントは、サーバーのデフォルトのスレッドには設定できません。" |
|
実際には、new() で作成されたスレッドのほかに、メインスレッドにもブレイクポイントを設定してデバッグできます。 |
 |
次のシンタックスは、スクリプトオブジェクト内のブレイクポイントをすべてクリアします。 |
|
scriptObject.setBreakPoint(-1, -1, 0) |
 |
changeMovie コマンドがサーバーに追加されました。 |
|
このサーバーコマンドは、サーバーへの接続を維持したまま、ユーザーをムービー間で切り替えるために使用されます。
このコマンドでは、ユーザーが既存のムービーからログアウトするときに、すべてのグループを脱退し、実行時の属性を失うなど、通常のログオフと同じように動作します。
次にログオンするときは、"SomeMovieID" で指定した新しいムービーに、元の接続と同じユーザー ID、パスワード、および moviePath 情報を使用してログオンします。
これは、新しいムービーに切り替えるたびにサーバーへの接続を確立する必要がないため、ロビーアプリケーションを使いやすくするために作成されました。 |
|
changeMovie コマンドでは、次のシンタックスを使用します。 |
|
errCode =
gMultiuserInstance.sendNetMessage("System.User.ChangeMovie",
"任意の件名", "SomeMovieID")
|
 |
sendNetMessage()
コマンドには、オプションのプロパティリストのシンタックスを使用できます。
オプションのシンタックスは次のようになります。 |
|
gMultiuserInstance.sendNetMessage([#recipients:
ユーザー名またはグループ名, #subject: "件名の例", #content:
メッセージの内容]) |
 |
getUserNames サーバーデータベースコマンドを、「マルチユーザー Lingo (機能別)」の「データベースコマンド」の項に追加してください。 |
 |
新しいスレッドプロパティの runPeriod と sleepPeriod を利用して、
スレッドのアクティビティを管理できます。
これらのプロパティで、指定したスレッドの CPU の使用時間とスリープ時間を定義できます。 |
|
runPeriod 値は、スリープ状態になるまでにスレッドが CPU を利用する時間を、ミリ秒単位で表します。
実行期間の期限切れは、スレッドが実際に Lingo を実行して CPU を使用している場合にのみ発生します。
アイドル状態のスレッドでは、実行期間の期限切れは発生しません。 ただし、この条件がほかのスレッドの実行に影響することはありません。
runPeriod のデフォルト値は 0 です。この場合、実行期間は無期限です。 |
|
runPeriod は、次のシンタックスで設定します。 |
|
aThreadReference.runPeriod = ミリ秒単位の時間 |
|
繝。繝「:
abortCheckPeriod というプロパティが、Multiuser Server の Dispatcher.ls ファイルに追加されました。 このファイルには、abortCheckPeriod で指定した時間より長く実行されているスレッドをチェックするコードが含まれています。スレッドが abortCheckPeriod の値を超えている場合は、停止して #error の状態を返します。 これを避けるには、1
つのスレッドで実行されるコードを、abortCheckPeriod
の値より短い時間で実行できるものに制限するか、 abortCheckPeriod の値を増やします。デフォルトは 5000 ミリ秒です。 |
|
sleepPeriod 値は、実行期間が経過したときにスレッドがスリープする時間を、ミリ秒単位で表します。
スリープ中のスレッドはコードを実行せず、CPU を使用しません。
コードの実行中に実行期間が経過した場合、スリープ期間が経過しても、コードの実行は再開されません。
同様にハンドラが中断された場合は、スレッドのスリープを中止したときに、これを再び呼び出す必要があります。
このため、各スレッドでは複数のタスクを実行すべきではありません。 |
|
repeat ループは、使用を避けるか短くするようにしてください。このループは CPU を完全に占有する唯一の Lingo コードで、ほかのスレッドを実行できなくなります。 |
|
sleepPeriod プロパティは、次のシンタックスで設定します。 |
|
aThreadReference.sleepPeriod = ミリ秒単位の時間 |
 |
GlobalScripts.ls ファイルが、Multiuser
Server の "Scripts" フォルダに追加されました。 クライアントムービーから実行したいハンドラをこのファイルに記述します。
これらのハンドラは、ムービーに関連付けられた特定のスクリプトファイルから呼び出すように、任意のムービーから呼び出すことができます。
また、ScriptMap.ls ファイルの globalScriptList
変数に追加することにより、独自のグローバルスクリプトファイルを追加することもできます。 |
 |
scriptObjectList ハンドラが、ScriptMap.ls ファイルに追加されました。
子オブジェクトを作成するために使用する親スクリプトを用意している場合は、このリストに追加します。 Lingo
を使用して、Dispatcher ファイルのfindScriptByNameハンドラを呼び出し、目的の親スクリプトへの参照を作成できます。 |
|
myRef = findScriptByName("MyParentScript") |
|
続いて、new() 関数を、作成したスクリプト参照で使用します。 |
|
myChildObject = new(myRef) |
 |
Multiuser
のマニュアルで説明した新しいデバッグ機能により、次の行は scriptmap.ls ファイルから削除してください。 |
|
-- theMap.append( [ #movieID: "Debug", #groupID: "@DebugGroup",
#scriptFileName: "Debug.ls" ] ) |
 |
ChangeMovie シンタックス - recipient:
System.User.ChangeMovie content: "SomeMovieID"
このコマンドは、サーバーへの接続を維持したまま、ユーザーをムービー間で切り替えるために使用されます。
このコマンドでは、ユーザーが既存のムービーからログアウトするときに、すべてのグループを脱退し、実行時の属性を失うなど、通常のログオフと同じように動作します。次に新しいムービー "SomeMovieID"
にログオンするときは、元の接続時と同じユーザー ID、パスワード、および moviePath 情報を使用します。
これは本来、ロビーアプリケーションを使いやすくするために作成されました。新しいムービーに切り替えるたびにサーバーへの接続を確立する必要はありません。
|