約 3,937,632 件
https://w.atwiki.jp/lightning_launcher/pages/85.html
スクリプトについて 公開しているスクリプト
https://w.atwiki.jp/nileonline/pages/41.html
Firefoxのアドオン、Greasemonkey用のスクリプトです。Greasemonkeyはここからどうぞ。 Chromeの場合、スクリプトファイルを拡張機能へドロップすればGreasemonkey無しで動作します。 各スクリプトの名前をクリックするとオリジナルのページに移動できます。 ArmEagle GreaseMonkey Script ArmEagle氏の作ったスクリプトで、ユーザーインターフェイスを改良します。 どのくらいでアップグレード用の資源が貯まるかを計算するものとして開発されて以来、港へのリンクが付加される等して発展しています。 主な機能 各資源にタイマーを表示 後どのくらいでアップグレード用の資源が貯まるかを表示(輸送で向かってきている分も考慮できます) 新着メッセージの通知 トレード時、ダブルクリックによる2回送信を防止 都市画面で、各建造物のレベル・労働人数/最大人数の表示 資源のアイコンが各資源の生産場へのリンクになります。 市場で、品物が原価に対して何%かを表示 Nome画面で都市名、レベル、所有者を表示 スクライブウォールで、指定した単語を含む書き込みをハイライト いくつかのアイコンを追加 Alliesとスクロールの外観変更(Shift+クリックで大きさ変更可) 山賊へのリンクを追加可能(サブ都市に山賊が現れた場合などに便利) 詳細 全てのプロットに名前、レベル、(最大)労働者のラベルを表示します。これは左上のオプションパネルで有効/無効を切り替えられます。[Plot Labels] 全ての資源で、アイコンをクリックするとそのプロットにジャンプします。複数ある場合は先に作った方にジャンプします。 倉庫と港へのリンクボタンが追加されます。 各資源にタイマーが追加されます。いつ資源が枯渇または倉庫の限界に達するかのタイマーです。500日以上の場合はinfinityになります。 倉庫のアップグレード中は正確に作動しません。 アップグレードや新都市開拓のウィンドウで、後どれくらいで条件を満たすか表示します。 新都市開拓ウィンドウで表示される周辺市場を見やすくします。また、新都市開拓ウィンドウへのリンクボタンを追加します。(このボタンから都市を開拓するとどこにできるかわかりませんので止めておきましょう。都市が上書きされることもあるようです。) 新しいスクロールが来たときにアイコンが光りますが、デフォルトではわかりにくいので、都市画面の背景がライトアップするようにします。更にアラートとポップアップを追加するオプションがあります。[Scroll Alert] 右上のサーバー時間がより正確になります。 倉庫の限界と同じように、港(船)と宮殿(労働者)のタイマーを表示します。 時間表示で、1時間以下は赤、48時間以下だとオレンジ色になります。 新都市開拓ウィンドウの市場情報で、10%の手数料を加味した利益率を表示します。これはパン機会原価を基に計算します。 [!]の後に、モニュメントと寺院による生産ボーナスをいくら受けているか表示します。 Transportsで、向かってきている品物がリスト化されます。都市にあるストックとの合計も表示します。 港へのリンクボタンが新しくなり、半分は普通のリンクで、下半分は”To Monument”へのリンクです。 港やトレードの画面で資源アイコンをクリックすることで、そのアイコンの背景の色を切り替えることができます。都市ごとに設定できます。 オプションで資源の「タイマー」と「限界量」を切り替えることができます。[Resource Limits] 他のプレーヤーへのトレード送信時に確認をするかどうかのオプションがつきます。[Trade Confirmation] トレードの保存機能が追加されます。トレード画面で Store Trade ボタンが増えます。これはトレードの全てのデータをクッキーに保存するものです。定期交易などに使うと良いでしょう。 保存したトレードへのリンクボタンが追加されます。 保存されたトレードは、右にある[x]を押すことで削除できます。 左のアイコンからトレード画面を開くことができます。※送り元となる都市から開く必要はありませんが、船を送ると送り元の都市に移動します。 前に送ってからの時間が表示されます。 概要(Overview)の画面が追加されます。追加された、目のようなアイコンから見ることができます。資源と労働者、施設の概要を確認できます。 山賊の拠点を保存しておけます。資源のUnitsの上の所にアイコンが追加されます。アイコンは保存された山賊へのリンクです。違うNomeの山賊へのアクセスが簡単になります。[Store Bandits] 山賊画面で、どのプレイヤーにいくつの高級品とパンがが与えられる予定なのかが表示されます。軍隊寄付のパーセンテージも表示されます。 Transportsのインターフェイスが改善されます。 概要画面やアップグレード画面で、向かってきている品物を含めて計算できます。(Transportsを見た後でないと計算されません。)[Include Transports] スクライブウォールでプレイヤー名をクリックすると表示される、そのプレイヤーの都市一覧が小さなポップアップになります。 スクライブウォールでハイライトする単語を設定できます。[Wall Highlights] 市場の品物がパン機会原価に対してどれくらいの価格であるか表示します。 Plot Labelsと同様に、Nome画面で都市とモニュメントのラベルを表示します。[Nome Labels] スクロール・フレンドリスト・パピルス・トレード画面をctrl+クリックで移動可能にし、shift+クリックでサイズを変更します。この変更はセッション間で保存されます。[Movable UI] ゲームログでフィルターを設定できます。 都市やモニュメントのアイコンをshift+クリックでTransportsを開きます。 石灰石以外の原料・パン・レンガ・壺・籠の労働者分配画面に、BEP(break-even production)ボタンを追加します。このボタンを押すと生産量が最小のプラスになるように労働人数が調整されます。 宮殿レベルが22になれば、Immortalityコストについてもタイマーが有効になります。 宮殿のアップグレードに必要な倉庫レベルがあるかを色で表示します。 My Sell Ordersで件数および売価合計を表示します。 各資源の生産量を1時間当りか24時間当りか切り替えられます。[24h Production] When you have the (compose) mail form open (to the trade contact) while storing a trade, the Stored Trade entry will now have a mail icon. Next time you send such a Stored Trade, a pre-filled mail will show up after the trade window closed. You only have to submit the mail yourself then. 労働者分配で、数字を直接入力した後、Enterで決定できるようになります。 Epsilon's Fair Trade Calculator Pegasus Epsilon氏の作った等価交換計算スクリプト。 ドラッグで位置を変更できます。 Firefox、Opera、Safariで動作します。 Savior スクロールの下書きを保存できるようになるスクリプト。 スクロール送信画面にSave!というボタンが増え、上のDraftsから保存したスクロールを見ることができる。 使用にはFirefoxとArmEagle GreaseMonkey Scriptが必要。 名前はSave yourの略、作者はPegasus Epsilon氏。 Pegasus Epsilon's Temple Blessing Countdown Display 寺院に150個以上奉納されている状態のとき、このままならあと何時間で恩恵が始まるかを表示します。 使用にはArmEagle GreaseMonkey Scriptが必要。
https://w.atwiki.jp/tts-script/pages/12.html
version6.6にてscript(Lua Scripting)に対応 (参考アドレス)http //steamcommunity.com/sharedfiles/filedetails/?id=714904631 Introduction 導入 This guide is designed for those with limited experience scripting with LUA. このガイドはLUAスクリプトに限って作成されています。(それ以外の言語では対応していません) It will review the basics of how to format code, 基本的なフォーマットコードの見方は the building blocks for you to base your code on and provide some examples. いろいろな例をもって説明します It is designed to be hands-on, so you should have Tabletop Simulator open and your LUA editor up to follow along. 実践ながらLUAエディターを使ってみましょう Before The First Keystroke はじめに First, I would highly recommend getting Atom if you intend to script in Tabletop Simulator. はじめに、スクリプトをいじるために、「Atom」の知識が必要です It knows what functions can be used and will import/export code into/out of TS. 「TS」のインポート、エクスポートを知るために下のアドレスを確認しましょう。 Instructions on installation and setup of Atom[berserk-games.com] ↑「Atom」の説明アドレス Next you should 次に下のアドレスをブックマークしておきましょう。 bookmark the documentation knowledge base[berserk-games.com]. You will be referencing this site often once you start to write your own scripts. スクリプト作っていくうちにこのサイトが役にたつでしょう。 Its where you go to find Tabletop Simulator specific functions and how they work. ここにはTTSでのスクリプトがどのように動いているかわかります。 You will most often use the API and Objects pages, at least in my experience. 特に「API」と「Object」のページはよく使うでしょう。 Setting Up 準備 When you save your scripts in Tabletop, あなたのスクリプトをTTSで保存するとき it will use your most recent save and then load the script into it. 最新のセーブ、スクリプトがはいったものを使うこと So for any script you intend to write, you will need to do the following スクリプトを書き足す時には下の事に注意しましょう。 Set up the table the way you want it. テーブルを立てる Save the table. テーブルをセーブする(上の「Menu」から Load the table. テーブルをロードする For this exercise, take a blank table and spawn two objects (I used a square block and rectangle block) as well as a red checker. たとえば右の画像みたいに赤と青のブロックと 赤い確認用コインがあります。 Remember to save/load then open up the scripting in Atom Atomでセーブする前にセーブ ロードすること、 or go to Host Scripting in Tabletop Simulator to begin. ホストとしてTTSをはじめることを覚えておいてください 1) Global.lua ファイルの編集 Global.lua is the scripting which is a part of the save file. 「Global.lua」はセーブデータのスクリプトの一部です。 It is where we will be working for most of this tutorial. 練習の最初としてここをやります。 On a new save, it always starts with some text saved into the editor. 新しいセーブをテキストエディターで開きましょう。 Just delete it, we will not be using it. いったん閉じましょう。これは今回使いません。 It is also possible to write scripts and attach them to objects instead of Global. スクリプトを書くこともできますし、グローバルデータの代わりにも使えます。 That way if you save and object it will save its LUA right along with it. セーブすると自動的にLUAデータとして保存されていきます。 You can perform most functions using either Global or Item scripts but we will be working in Global. このデータは「Global」データか「Item」データとして使うことができますが、 ここでは「Global」データとして使っていきます。 2) Functions 機能 Functions[berserk-games.com] are what trigger groups of code. 「Functions」はコードの1グループとして機能します。 Some of them are built into the scripting system (ex. onload()) while others can be created by the user.Every function will start with the word function and end with the word end. 右の図でいうピンク文字の「function」から「end」までが1グループとなります。 A common function built into Tabletop Simulator is onload(). This function triggers every time the script is loaded (like if Undo/Redo is pressed). TTSでよく使う「onload()」はゲームの読み込み時に機能します。 So let us get started by using it to activate a function we will create. Functions should start with a lowercase letter, and cannot contain spaces. We'll use exampleFunction. 「Functions」の機能は「小文字で表記」し、「スペースを含めてはいけません」 function onload() exampleFunction() end Now our script, when it loads, will try to run a function named exampleFunction. But we haven't written one yet! So now we will create our own function, right after the onload function has ended. 上のままじゃ特に何もおきません。 function exampleFunction() print('Hello, World.') end The command of print() is also a function. But instead of triggering a section of code in LUA, it activates programming inside of Tabletop Simulator to produce a desired effect. In this case, printing a message to the host of the game, in chat.The message is called a string, and is always surrounded by quotes to indicate that. A string is a series of characters. (Ex "This is a string." or 'So is this!')When you save and upload your script, it should now print "Hello, World." to chat. 【print('表示させたい文字')】 :「表示させたい文字」がチャット欄に表示されます。 このメッセージは「string」とよばれます Extra Credit When you create your own function, you can also pass variables along with it for the function to use. Another way to write our starting exercise would be 応用編:下の通りにやってみましょう。 function onload() exampleFunction('Hello, World.') end function exampleFunction(passedString) print(passedString) end We created a variable to represent the string (passedString) and then printed what was contained in that variable. 「passedString」は? 3) Objects オブジェクト Objects[berserk-games.com] are the physical entities that exist within tabletop. In our example, our objects currently are two blocks and a checker (what a terrible game we are making). Using scripting, we can manipulate objects, move them, add buttons to them or perform other various actions. We're starting our Global.lua over fresh. Erase all text in it. 「オブジェクト」はTTSでは物理的なものになります。 たとえば、さっきつくった赤と青とコインがあるだけの謎のゲーム。 これにスクリプトを使って追加したボタンで動きをあたえてみましょう Global.luaを開いて全てのテキストを一度けしましょう。 GUIDs ガイド To affect and object, first we must identify it in LUA. There are several ways to do this, such as identifying items being picked up or put down by players, finding objects inside of a scripting zone and more. We will be identifying these objects by their GUID. まず「プレイヤーがそのオブジェクト」を「持っている」か「持っていないか」を見極めることが大切です。 そのために「GUID」の機能を使いましょう。 A GUID is a unique identifier which each spawned item in TS will have. Even 2 of the same item will have different GUIDs. To locate an object's GUID, right click on it and go to Scripting. If you click on its GUID there, it will copy it to your clipboard. A GUID is always a string, so remember strings are always in quotes. Lets create some variables with the GUIDs of our objects. REMEMBER Your GUIDs will be different than mine. object1_GUID = '195868' object2_GUID = '333365' checker_GUID = '7dc60d' TTS上で作られたオブジェクト毎に上のような「GUID」のコードが設定されている。(見た目が同じものや、コピーしたものでも違うGUIDになる) このGUIDはオブジェクトを右クリックしたとき、上記のように、チャット欄に出てくる (上のGUIDのコードはあなたが実際に試したものとは違う数字になるでしょう) Defining Objects オブジェクトの定義 Then, using onload so this happens when the script is loaded, we will make variables to represent our objects. All of these variable names we've been making must start with a lower case letter and not contain spaces, but other than that you are fairly free to make up variable names yourself. You want to make it clear what it represents. I will be using object1, object2 and checker to represent my objects. The function we will use to identify will be getObjectFromGUID(string). We place the GUID in the spot for the string. 次に、onloadを使用して、スクリプトがロードされたときに、オブジェクトを表す変数を作成します。 これらの変数名はすべて小文字で始まり、空白を含まないようにしなければなりませんが、 変数名を自分で作ることはかなり自由です。 今回は、何を表しているかを明確にしたいので、オブジェクトを表すためにobject1、object2、checkerを使用します。 識別に使用する関数は「getObjectFromGUID(string)」です。 GUIDを文字列の場所に配置します。 function onload() object1 = getObjectFromGUID(object1_GUID) object2 = getObjectFromGUID(object2_GUID) checker = getObjectFromGUID(checker_GUID) end Manipulating Objects オブジェクトの名前設定 Now we need to manipulate these objects somehow. We will give them a name. In onload(), after we defined our objects, we will use the function of setName(string). Notice that setName, like other object functions, must be tied to an object. Otherwise the script will not understand what object's name we want to change. The string in setName will be what we set the name to. これらのオブジェクトを何らかの形で操作する必要があります。 そのため、これらに名前をつけます。 onload()では、オブジェクトを定義した後、setName(string)の関数を使用します。 setNameは、他のオブジェクト関数と同様に、オブジェクトに結びつけられなければならないことに注意してください。 それ以外の場合、スクリプトはどのオブジェクトの名前を変更したいのか理解しません。 setNameの文字列は、名前を設定する文字列になります。 object1.setName('Object1') object2.setName('Object2') checker.setName('That Stupid Checker') Extra Credit You may be curious as to why we didn't put the object GUIDs directly into getObject (EX object1 = getObjectFromGUID('195868') ). We could have, it would work. This example was to show you that, sometimes, it is more convenient to set a variable early on so you can reference it later. That way, if that variable needs to change (new GUID) you don't have to try to track it down to fix it throughout your code. If you wanted to, for the checker, there is no reason you couldn't write it like 追記:なぜオブジェクトGUIDを直接getObject(EX:object1 = getObjectFromGUID( '195868'))に入れなかったのか 疑問をもたなかったでしょうか? そのままでもうまくいくでしょう。 この例では、後で参照できるように、変数を早期に設定する方が便利な場合があることを示しています。 そうすれば、その変数を変更する必要がある場合(新しいGUID)、 コード全体で修正するためにそれを追跡する必要はありません。 あなたが途中のチェック用に使うのでなければとめませんが・・・ function onload() getObjectFromGUID('7dc60d').setName('That Stupid Checker') end The reason I do not encourage that for learners is partially an aesthetic choice, and partially for code clarity. You want it to be easy for someone else to understand your code, and once you start doing things more complex than changing the name of an object it can get VERY difficult to see what is going on. It can also make future revisions to your code a chore. 「先に名前の定義を書く」ことで、やりやすくなるでしょう。 4) Buttons ボタン While there are many ways to activate functions, buttons are a convenient way to activate sections of code at the player's choosing. All buttons must be attached to an object, and are created using parameters. The object we want to attach our button to is our checker, and those parameters are found on the Objects page in the Knowledge Base. Many are optional, here they are for reference. 機能を有効にする方法はたくさんありますが、ボタンはプレーヤーがボタンを押したときにスクリプトを起動するわかりやすい機能です。 すべてのボタンはオブジェクトに関連付けする必要があり、パラメータを使用して作成されます。 ボタンを関連付けするオブジェクトはチェッカーであり、これらのパラメータはナレッジベースのObjectsページにあります。 多くはオプションです。ここでは参考にしています。 click_function = String --The name of the function which will activate when this button is pressed. ボタンを押したときに起動します function_owner = Object --Determines where the function that the button activates lives (global or an object's script). ボタンが有効になる機能(グローバルまたはオブジェクトのスクリプト)を決定します。 labels = String --The name on the button. ボタン自身に名前をつけます position = Table --X, Y and Z coordinates for where the button appears, from the center of the object it is attached to. ボタンが表示される場所のX座標、Y座標、Z座標を、オブジェクトが取り付けられているオブジェクトの中心から取得します rotation = Table --Pitch, Roll and Yaw in degrees, relative to the object it is attached to. 投げる勢い、転がりかた、振り方を、添付したオブジェクトを基準にした角度で表します。 width = Number --How wide the button is, relative to the scale of its object. ボタンの広さを設定します height = Number --How tall the button is, relative to the scale of its object. ボタンの高さを設定します font_size = Number --Size of the text on the button, relative to the scale of its object. ボタン上に表示されるフォントのサイズを設定します。 Tables Tables in LUA are collections of entries. You can store most anything inside of a table and reference it later. All tables are indicated by curly brackets {}. You can reference entries in a table by a name or by an index number (what number entry it is, indexes start at 1 in LUA.). We will be creating a table right beneath where we established our GUIDs and then filling it with entries to use with the createButton(table) function. The name we are choosing for our table is button_paramiters LUAのテーブルはエントリの集合です。 ほとんどのものはテーブルの中に格納し、後で参照することができます。 すべてのテーブルは中括弧{}で示されます。 テーブル内のエントリは、名前またはインデックス番号(どの番号エントリか、LUAのインデックスは1から始まります)によって参照できます。 GUIDを作成した場所の直下にテーブルを作成し、createButton(table)関数で使用するエントリを入力します。 テーブル用に選択している名前はbutton_paramitersです。 button_parameters = {} button_parameters.click_function = 'buttonClicked' button_parameters.function_owner = nil button_parameters.label = 'Press Me' button_parameters.position = {0,0.8,0} button_parameters.rotation = {0,0,0} button_parameters.width = 500 button_parameters.height = 500 button_parameters.font_size = 100 Now we have a table with the paramiters listed within it. So lets use the object function to create a button on the checker. Enter this inside of function onload() before its end. 今度は、その中にリストされたパラメータを持つ表があります。 オブジェクト関数を使用してチェッカーにボタンを作成させます。 終了する前にfunction onload()の中でこれを入力してください。 checker.createButton(button_parameters) Check Your Work 動作確認 Save and apply your code. You should now have a button which floats a few inches above your checker. If you don't see it and didn't get an error, try flipping your checker over. It might be upside down so the button is hiding inside the table! If you did flip the checker over, remember to save over your old save with the checker correctly positioned. コードを保存して適用します。 チェッカーの上に数インチ上に浮かぶボタンがあります。 表示されず、エラーが表示されない場合は、チェッカーを裏返しにしてみてください。 それは、ボタンがテーブルの中に隠れているので、逆さまになっているかもしれません! チェッカーを裏返しにした場合は、チェッカーが正しく配置された状態で古いセーブを保存してください。 Add Button Function ボタン追加 Now we need to add the button's function into our code. To test the function out, we'll print ourselves a message. We'll add this user-defined function to the end of our script. 今度はボタンの機能をコードに追加する必要があります。 関数をテストするために、メッセージを表示します。 このユーザー定義関数をスクリプトの最後に追加します。 function buttonClicked() print('Learning is fun. Sort of.') end After uploading our script, pressing the button should print our message once for each click. スクリプトをアップロードした後、ボタンを押すと、クリックごとにメッセージが1回表示されます。 Click it repeatedly because of course you will. 同じコードを繰り返すので、繰り返しクリックした表記になります EXTRA CREDIT 追記 When you create tables, there are several ways to accomplish it[www.lua.org]. The way used here was to provide visual clarity. However, creating button parameters like this, if you are going to have many buttons, takes up A LOT of space. I prefer to create my tables in such a way that it saves space but doesn't create a run-on line that goes well off the right side of the screen. Using our example, I would have created my parameter table like this テーブルを作成するときに、テーブルを作成するにはいくつかの方法があります[www.lua.org]。 ここで使用される方法は、視覚的な明快さを提供することでした。 しかし、このようなボタンパラメータを作成すると、多くのボタンを使用する場合は、多くのスペース(広さ)が必要になります。 私はスペースを節約するが、画面の右側からうまくいくランオンラインを作成しないような方法でテーブルを作成することを好みます。 私の例を使って、私は次のように私のパラメータテーブルを作成したでしょう: button_parameters = { click_function='buttonClicked', function_owner=nil, label='Press Me', position={0,0.8,0}, rotation={0,0,0}, width=500, height=500, font_size=100 } EXTRA CREDIT This is the perfect point to start playing with different things you can do with objects. Go to the Object page in the Knowledge Database and try stuff. Move the objects, make them switch positions, change their colors, whatever you can think of. これは、オブジェクトで行うことができるさまざまな作業を開始するのに最適なポイントです。 ナレッジデータベースのオブジェクトページに移動して試してみてください。 オブジェクトを動かす、位置を切り替える、色を変える、何でも考えることができます。 EXTRA CREDIT Also, any time you press a button, its click_function triggers with 2 parameters. The first is an object reference, specifically the reference to the object the button is attached to. The second is a color (ex. "Blue") in string format of the color player who pressed the button. また、ボタンを押すたびに、そのclick_functionが2つのパラメータで引用されます。 1つはオブジェクト参照です。具体的には、ボタンがアタッチされているオブジェクトへの参照です。 2番目のボタンは、ボタンを押したカラープレーヤーの文字列形式の色(例: "Blue")です。 5) Logic Statements Logic statements[www.lua.org] are generally called "if statements". They are used to tell your code what you want it to do in a given situation. When the statement is activated (say, by pressing a button) the logic contained in its statement will only be activated if the condition given is true. They are always formatted as 論理文[www.lua.org]は、一般に「if文」と呼ばれます。 彼らはあなたのコードを与えられた状況で何をしたいのかを伝えるために使われます。 ステートメントがアクティブになると(たとえばボタンを押すことによって)、ステートメントに含まれるロジックは、指定された条件が真である場合にのみアクティブになります。 それらは常に次のようにフォーマットされます。 if CONDITION then --Activates if condition was true end You can also add "else" to that, so that if the statement is false, something ELSE happens instead. Notice here I added commenting using two minus signs in a row. The engine will ignore anything on a line after --. また、 "else"を追加することもできます。その結果、文が偽であれば、代わりにELSEが発生します。 ここでは、2つのマイナス記号を連続して使用してコメントを追加しました。 エンジンは〜の後の行の何かを無視します。 if CONDITION then --Activates if condition was true else --Activates if condition was false end What you place in the area I labeled CONDITION in these examples are called relational and conditional operators.[www.tutorialspoint.com] Using them, you can compare many things to eachother. They produce what is called a boolian value (a variable value that is either "true" or "false"). これらの例でCONDITIONというラベルを付けた領域に配置するものは、リレーショナルおよび条件付き演算子と呼ばれます。[www.tutorialspoint.com]これらを使用して、多くのことをお互いに比較できます。 ブーリアン値(「真」または「偽」のいずれかの可変値)を生成します。 Our First Logic Statements We will try a few of these out. Erase the current contents in your buttonClicked() function. Now enter into that function these statements これらのうちのいくつかを試してみましょう。 buttonClicked()関数の現在の内容を消去します。 その関数に次の文を入力します。 if 5 6 then print("5 is greater than 6") end if 6 4 then print('6 is greater than 5') end if 5 == 0 then print("Five is equal to ZERO?!") else print("No, five isn't equal to zero.") end When those lines are used and the button pressed, you will see that only the print functions located in the TRUE statement were printed. Also, because 5==0 is a false statement it activated the print function located in the "else" part of the logic. これらの行が使用され、ボタンが押されると、TRUEステートメントにある印刷機能だけが表示されます。 また、5 == 0は偽の文であるため、ロジックの「else」部分にある印刷機能を有効にしました。 Comparing Variables Once again, erase all of the scripting inside of the buttonClicked() function. We are going to be creating a new variable, then altering it. The new variable will be a bool. Bool values can only be true, false or nil (nil means neither). Bool values are always written in all lower case. First, we will create our variable just beneath our object and checker GUIDs being established. もう一度、buttonClicked()関数内のすべてのスクリプトを消去します。 私たちは新しい変数を作成し、それを変更します。 新しい変数はboolになります。 Boolの値はtrue、false、またはnil(nilはどちらも意味しません)のみです。 ブール値は常にすべての小文字で記述されます。 まず、オブジェクトとチェッカーのGUIDが確立される直前に変数を作成します。 trueOrFalse = true Then, in buttonClicked, we will establish some logic to check if trueOrFalse is, well, true or false. If it is true, we'll print that it was true and switch it over to false. If the button is clicked again, it will print that it was false and switch it to true. 次に、buttonClickedでは、trueOrFalseがtrue、falseまたはfalseであるかどうかを確認するロジックを確立します。 真であれば、それが本当であることを表示し、それを偽に切り替えます。 ボタンを再度クリックすると、falseであることが表示され、trueに切り替えられます。 if trueOrFalse then print('trueOrFalse was true.') trueOrFalse = false else print('trueOrFalse was false.') trueOrFalse = true end We could have also written that as "if trueOrFalse == true then" but that is unnecesary. Remember, the IF statement just needs to be fed True or False. And since trueOrFalse is already one of those, we can skip the operators. 以下のように書くこともできます」trueOrFalseが、その後真==場合は、「それはunnecesaryであるように、その。IF文がちょうどTrueまたはFalseに供給する必要があることを覚えておいてください。trueOrFalseは既にそのうちの一つであるので、私たちは、事業者をスキップすることができます。 6) Loops Loops are sections of code that can run multiple times/continuously when activated only once. These are some of the more complex elements you will use in LUA. They often go hand-in-hand with tables, allowing you to run code on each entry in the table. ループは、1回だけ起動すると複数回/連続して実行できるコードのセクションです。 これらは、LUAで使用するより複雑な要素の一部です。 彼らはしばしばテーブルと手を携えてテーブルの各エントリにコードを実行させます。 Numeric For Loops A numeric for loop[www.lua.org] is one which runs a set number of times. You give it 2 or 3 numbers and a unique variable name (I will use "i", which stands for index) and it starts at the first number, then goes until it hits the second number. If a third number is used, it will count by that. So normally it counts up from 1 by 1, but if you put, as a third number, a 2 it would count by 2s. Each number is separated by a comma. Replace the code in your buttonClicked function with this and give it a try. "i", the index, will be equal to 1 on the first run, then it will go up by 1, and be equal to 2 and run again, and keep doing that until it hits 10. ループ[www.lua.org]の数値は、設定された回数だけ実行される数値です。 2つまたは3つの数字と一意の変数名(私は "i"を使用します)は最初の数字から始まり、2番目の数字に当たるまで続きます。 3番目の数字が使用されている場合は、それによってカウントされます。 通常は1から1までカウントアップしますが、3番目の数字として2を入れると2になります。 各番号はコンマで区切られています。 buttonClicked関数のコードをこれに置き換えて試してみてください。 索引「i」は最初の実行では1になり、次に1になり、2に等しくなり、再び実行され、10に達するまでこれを続けます。 for i=1, 10 do print(i) end print('Loop Finished') What the output is upon pressing the button ボタンを押したときの出力は何ですか? Generic For Loops A generic for loop[www.lua.org] is one which runs through entries in a table. For example, the button_parameter table we created. We would set two variables, one for index and one for value, in the loop and then it would run through each entry in the provided table. For each entry in the table, it would make index equal the name of the variable (Ex position, width, etc) and value equal that values we gave each entry. Add this after your current for loop in buttonClicked. 一般的なforループ[www.lua.org]は、テーブル内のエントリを実行するものです。 たとえば、作成したbutton_parameterテーブルです。 ループ内に2つの変数(インデックス用と1つの値用)を設定し、提供されたテーブルの各エントリを実行します。 テーブル内の各エントリについて、変数の名前(例:位置、幅など)と同じになり、値は各エントリに与えた値と等しくなります。 buttonClickedの現在のforループの後にこれを追加します。 for i, v in pairs(button_parameters) do print(i) end What the output is upon pressing the button ボタンを押したときの出力は何ですか? Break Break[www.lua.org] will end a for loop as soon as it is activated. For instance, if you added to your numeric for loop, just after its print function, the line if i==3 then break end, it would end the loop after it had printed 1, 2, 3. Break [www.lua.org]は、forループがアクティブになるとすぐに終了します。 たとえば、数字のforループに追加した場合、その印刷機能の直後に、i == 3の場合は行末が終了し、1,2,3の場合はループが終了します。 7) Scripting Outside of Global In order to write a script directly into an object, right click that object in game, go to Scripting, and select Lua Editor (if you use Atom, this will open a window in Atom for it). スクリプトをオブジェクトに直接書き込むには、ゲーム内でそのオブジェクトを右クリックし、Scriptingに行き、Lua Editorを選択します(Atomを使用している場合は、Atomのウィンドウが開きます)。 When you write LUA here, it is just like global. Except if you need to reference the object the script is a part of, you simply write "self" without the quotes, all lower case. So to create a button on itself, you would use self.createButton(table_of_paramiters). ここでLUAを書くと、それはまるでグローバルに似ています。 スクリプトが含まれているオブジェクトを参照する必要がある場合を除いて、引用符なしにすべて小文字の "self"と書くだけです。 そのため、ボタン自体を作成するには、self.createButton(table_of_paramiters)を使用します。 Closing I hope this introduction to LUA has helped you better understand some of the underlying mechanics of scripting. If not, then I hope you get lost on your way to throttle me. LUAの紹介が、スクリプトの基本的な仕組みの一部を理解するのに役立ちました。 もしそうでなければ、私はあなたが私を抑えるためにあなたの道に迷ってくれることを願っています。 Remember, the Knowledge Base has information on all the functions which are a part of Tabletop Simulator. That, and some basic practice with if/else/then and for loops will let you accomplish most anything you want. Good luck. 知識ベースには、卓上シミュレータの一部であるすべての機能に関する情報があります。 それと、if / else / thenとforループを使ったいくつかの基本的な習慣は、あなたが望むほとんどのものを達成できるようにします。 がんばろう。 Also, if you are on you way to coding, I have started a list of functions to take care of some more complex processes in Lua. You can find it here. また、あなたがコーディングする方法を知っているなら、私はLuaでもっと複雑なプロセスを扱う関数のリストを開始しました。 ここで見つけることができます。
https://w.atwiki.jp/text-sim/pages/16.html
システムはスクリプトのインタプリタとして実装する。 スクリプトの書式は作成中。
https://w.atwiki.jp/hamaousin/pages/33.html
キーワードの設定とサウンドの設定をします。 この設定をするとチャット中にキーワードの文字が出ると音を鳴らすことができ、LimeChatのウインドウを見ていない時にチャットに参加しているメンバーから呼ばれたことがわかりやすくなります。 上部メニューの【設定(O)】から【設定(S)】を選択するかツールバーの【設定】ボタンを押します。 左の項目から【キーワード】を選択して【キーワード(K)】に1行に1つずつ反応させたいキーワードを入力します。 自分の名前と@@@を全角と半角で登録しておくと良いでしょう。 @@@はチャットに参加しているメンバー全員を呼び出す時に使われます。 続いて左の項目から【サウンド】を選択します。 【キーワード反応】を選択して【変更(C)】ボタンを押します。 キーワードが出たときに鳴らしたい音を選びます。 どれにしたら良いかわからない人はCドライブ→WINDOWS→Media→notify.wavを選択してください。 【キーワード反応】を選択して右クリックか【再生(P)】ボタンを押してどんな音か確認しましょう。 鳴らす音が決まりましたら【キーワード反応】の左のチェックボックスにチェックが入っていることを確認して【OK】ボタンを押します。 チャットに参加しているメンバーにキーワードを言ってもらって音が出るか確認しましょう。 連絡事項があるときに反応してもらいたいので「@@@」をキーワードに設定してください
https://w.atwiki.jp/arma3mentaikocoop/pages/97.html
最終更新日 2020年08月27日 スクリプト 本ページでは、MENTAIKO COOPのミッション作成に使用されるスクリプトファイルの紹介とその解説をします。 イベントスクリプトmission.sqm description.ext init.sqf (補足) briefing.sqfブリーフィングについて ブリーフィングに記載すべきこと ブリーフィング記述時の注意 onPlayerRespawn.sqf その他スクリプトaiSetting.sqf / スクリプトコマンドについては以下を参考にしてください。 本Wiki スクリプトコマンド BI公式 Scripting Commands Arma 3 BI公式 Arma 3 Functions イベントスクリプト イベントスクリプトとは、ミッションフォルダに設置するだけで、特定のタイミングで動作するスクリプトファイルです。 詳細 Event Scripts mission.sqm ミッションの本体 EDENで編集した内容はこのファイルに保存される。 Binarizeを解除することで直接編集も可能である。 Addonの更新などでEDENからミッションが読み込めなくなることもあるので、Binarizeは提出時のみして普段はチェックを外しておくことをオススメします。 [部分編集] description.ext 詳細 Description.ext ミッションの属性や定義を行うファイルです。 下手に手を加えるとMissionが動かなくなるので、テキスト以外を編集する際は上記のリンクを熟読した後に編集することをオススメします。 //------------------------------LOADING INFO------------------------------//author = "作者名"; onLoadName = "MC[coXX]Mission_Name";loadScreen = "pics\MENTAIKOLOGO.jpg";overviewPicture = "pics\MENTAIKOLOGO.jpg";onLoadMission = " t color= #e80301 MENTAIKO SERVER /t ";overviewText = "ミッションの概要(短文),最終更新日,作者名"; disabledAI = 1;enableDebugConsole = 1;forceRotorLibSimulation = 2;////------------------------------GAMETYPE----------------------------------//class Header{gameType = Coop;minPlayers = 1; maxPlayers = 120;};////------------------------------RESPAWN SETTINGS--------------------------//respawn = 3;respawndelay = 1;respawnTemplates[] = {"Counter","ace_spectator"};respawnButton = 1;respawnOnStart = 0;////----------------------------DERETE BODY WRECK---------------------------//corpseManagerMode = 1;corpseLimit = 24;corpseRemovalMinTime = 300;corpseRemovalMaxTime = 600; wreckManagerMode = 1;wreckLimit = 6;wreckRemovalMinTime = 600;wreckRemovalMaxTime = 900;////---------------------------------ENDING---------------------------------//class CfgDebriefing{class End1{title = "MISSION ACCOMPLISHED";subtitle = "作戦成功";description = "";picture = "";pictureColor[] = {0,0,0,1};};class End2{title = "MISSION FAILED";subtitle = "作戦失敗";description = "";picture = "";pictureColor[] = {0,0,0,1};};}; [部分編集] init.sqf イベントスクリプトの一つ。 init.sqfはミッション開始時(ブリーフィング画面の前)に実行されます。 一番最初に実行すべきスクリプトはここで実行しましょう。 if (!isDedicated) then {waitUntil {!isNull player isPlayer player};}; enableRadio false;tawvd_disablenone = true;CHVD_allowNoGrass = false;enableSaving [false,false]; /* =============== Player Only Commands ================ */if (hasInterface) then {call compile preprocessFileLineNumbers "briefing.sqf";}; /* =============== Server Only Commands ================ */if (isServer) then {west setFriend [independent, 1]; // 1 友好, 0 敵対, 境界 0.6independent setFriend [west, 1];east setFriend [independent, 0];independent setFriend [east, 0];}; /* ==================== MCC Bugfix ===================== */_EndSplashScreen = { for "_x" from 1 to 4 do { endLoadingScreen; sleep 3; }; };[] spawn _EndSplashScreen; /* ==================== End Of File ==================== */player globalChat format ["Mission Initialisation Complete. Press CONTINUE"];finishMissionInit; [部分編集] (補足) briefing.sqf ブリーフィングについて マップメニューにブリーフィングを追加します。ブリーフィングは、ミッションの背景や任務・補足事項・注意事項などをプレイヤーに伝えるために必要です。 ブリーフィングに記載すべきこと ブリーフィングに記載すべきことは (任意)ミッション背景 (必須)METT-TCMission (ミッションの目的) Enemy (敵勢力の情報) Terrain and weather (地形・気象) Troops support available (味方部隊の情報と利用可能な支援) Time (時間) Civilians (民間人の情報) (任意)追加情報 (必須)システム関係 (任意)補足情報 ブリーフィング記述時の注意 ブリーフィングはプレイヤーにミッションの目的などの情報を伝えることが目的です。 そのためにも、いくつか注意しなければならないことがあります。 ミッションの目的は簡潔明瞭に ブリーフィングは限られた時間で読まなければならないので、簡潔明瞭に記述つすることが望まれます。ミッションの概要説明はMETT-TCなどを活用して記載してください。 一方で、ミッション背景ついては自由に記述しても問題ありません。好きなように書いてしまいましょう。 敵の情報は正確に記述する必要はありません 不測の事態を楽しむのもCOOPの醍醐味です。 敵の人数や、兵器の詳細を事細かく記述する必要はありません。 ただし、戦車や攻撃ヘリなどの特別な装備がなければ対応できない驚異が存在する場合は、その可能性を伝えることでプレイヤーフレンドリーとなるでしょう。 順番に注意する スクリプトコマンドの"createDiaryRecord"はbriefing.sqfの上から順に読み込まれ、新しく読み込まれたものはリスト上に追加されていきます。 つまり、briefing.sqfで記述した順番と表示される順番は逆になります。 // init.sqfに "call compile preprocessFileLineNumbers "briefing.sqf";" と記述して下さい// 改行は文末に " br / " と記述します// 画像を張り付けるには " img image= フォルダパス\フォルダパス\pict.jpg width= 400 height= 200 / " player createDiaryRecord["Diary",["Editorより","捕虜をエスコートするためにはケーブルタイが必要です。 br/ "]]; player createDiaryRecord["Diary",["システム","【Mission End】 br/ 全タスク達成後、自動でミッションが終了します。 br/ br/ 【Respawn】 br/ 死亡時はベースにリスポーンします。 br/ 乗り物はリスポーンしません。 br/ リスポーン後はテレポートでチームに合流してください。 br/ br/ 【Teleport】 br/ NATOフラッグから所属チームのリーダーのもとへテレポートすることができます。 br/ br/ 【Heal Self】 br/ ベースの医療テントにて自己治療できます。 br/ br/ 【Full Arsenal】 br/ 制限Arsenalに不備があった場合は、Briefing RoomのボックスよりFull Arsenalを使用してください。"]]; player createDiaryRecord["Diary",["捕虜詳細","【Name】 ヘンリー・A・ジョンソン br/ img image= pics\hostage.jpg width= 256 height= 256 / br/ 【Description】 br/ ・32歳、男性 br/ ・ギリシャ在中イギリス人"]]; player createDiaryRecord["Diary",["METT-TC","【任務(Mission)】 br/ 1. 敵前哨基地の制圧 br/ 2. 情報の回収 br/ 3. 民間人の保護 br/ br/ 【敵情(Enemy)】 br/ CSAT 欧州派遣部隊 br/ 勢力規模 30人程度 br/ 武装された軽車両が確認されている br/ 制空権は我軍がAAFと共に確保済み br/ br/ 【地形・気象(Terrain and weather)】 br/ ・丘陵地帯 br/ br/ 【部隊(Troops)】 br/ NATO軍 先遣部隊 br/ 攻撃ヘリコプター AH-99 Blackfoot br/ br/ 【時刻(Time)】 br/ 作戦開始時刻 AM 16 30 br/ br/ 【民事(Civil Consideration)】 br/ 作戦地域周辺の民間人は避難済み。 br/ ただし、敵前哨基地内には捕虜が存在する。"]]; player createDiaryRecord["Diary",["作戦概要","【日付】 br/ 2035/05/27 br/ br/ 【背景】 br/ 我軍はAltis等の覇権をめぐり、AAFと共にCSATと交戦中である。 br/ 【任務】 br/ マップ上のポイント「 marker name= object_1 X-Ray /marker 」に敵部隊の前哨基地が確認された。 br/ 敵の前哨基地を制圧し、敵部隊の動向を把握するための情報を確保せよ。 br/ br/ CSATは逃げ遅れた民間人を捕虜にしている。 br/ 民間人に危害を加えぬように注意せよ。 br/ br/ 【作戦終了条件】 br/ 全タスク達成にて本作戦は完了とする。"]]; [部分編集] onPlayerRespawn.sqf リスポーン時に実効するイベントスクリプト。 params ["_newUnit","_oldUnit"]; _newUnit addRating 20000;_newUnit setDamage 0;[_newUnit] call ace_medical_treatment_fnc_fullHealLocal; if (_oldUnit != objNull) then {hideBody _oldUnit;sleep 4;deleteVehicle _oldUnit;}; プレイヤーに付け加えたaddActionはリスポーン時に外れてしまうため、onPlayerRespawn.sqfにて再度付与すること。 例. _newUnit addAction ["Action Title",{Script Cord}]; その他スクリプト [部分編集] aiSetting.sqf AIの設定を行うスクリプト /*init.sqfに次を記述if (isServer) then { call compile preprocessFileLineNumbers "aiSetting.sqf" };*/if (!isServer) exitWith {}; comment "敵陣営を設定";private _enemies = allUnits select {side _x == EAST};private _enemyGroups = allGroups select {side _x == EAST}; comment "AIのスキル設定";{ _x setSkill ["general",0.50];// 基本数値(0 最小, 1 最大) _x setSkill ["aimingAccuracy",0.10];// 射撃精度 _x setSkill ["aimingSpeed",0.40]; // AIMの速さ _x setSkill ["courage",0.80];// 勇気 _x setskill ["commanding",0.55];// 情報共有の速さ正確性 _x setskill ["aimingShake",0.35]; // 手ブレの大きさ _x setskill ["spotDistance",0.80]; // 敵を発見できる距離 _x setskill ["spotTime",0.60];// 敵を見つけるまでの時間} forEach _enemies; comment "AIグループの初期設定";{ _x setBehaviour "SAFE"; _x setCombatMode "YELLOW";} forEach _enemyGroups;
https://w.atwiki.jp/yamiorica/pages/832.html
モンスター効果 戦闘 スクリプト例/2回攻撃 スクリプト例/このカードが攻撃する場合、相手はダメージステップ終了時まで魔法・罠カードを発動できない スクリプト例/このカードが守備表示モンスターを攻撃した時、その守備力を攻撃力が超えていれば、その数値だけ相手ライフに戦闘ダメージを与える 耐性 スクリプト例/コントロールを変更できないモンスター スクリプト例/効果を受けない スクリプト例/このカードは戦闘では破壊されない 制限 スクリプト例/このカードは通常召喚できない スクリプト例/このカードは融合召喚でしか特殊召喚できない スクリプト例/このカードはシンクロ召喚でしか特殊召喚できない スクリプト例/このカードはエクシーズ召喚でしか特殊召喚できない スクリプト例/このカードはリンク召喚でしか特殊召喚できない その他 スクリプト例/特定のカードをサーチするモンスター効果 スクリプト例/このカードがフィールド上に表側表示で存在する限り、墓地へ送られるカードは墓地へは行かずゲームから除外される 関連リンク オリカ作成例
https://w.atwiki.jp/stranded2/pages/46.html
スクリプト コマンド 英語ドイツ語混じりですが公式なスクリプトコマンドリファレンスがあります http //stranded.unrealsoftware.de/s2_commands.php?list=all(外部・海外)
https://w.atwiki.jp/stgbuilder/pages/132.html
<スクリプト タブ> 各キャラクタにセットするためのスクリプトを作成する画面。スクリプトを用いて、詳細な動作設定が可能。 タスク毎にスクリプトを配置可能。 制御フィールド 右側の青い格子で区切られた場所で、制御パネルを配置可能。 制御パネル 制御パネルはいくつかのグループに分かれており、パネルの色で識別可能。左側のタブを切り替えると配置可能な制御パネルが変化。 配置したいパネルを右側の制御フィールドへドラッグ。(すでにパネルがある場合は、ドロップするとパネルの置き換え) すでに配置した制御パネルを移動したい場合は、フィールド上でドラッグ。 実行順番 制御フィールドの左上隅に「ゲート:N」というパネルが実行開始位置。(Nは複数のゲートを識別するための番号) ゲートから開始された制御パネルは特に何もない限り、下方向(制御パネル間に小矢印の方向で、下方向と右方向を選択可能)へ順番に実行。 制御パネルが存在しない領域はそのまま下方向へ通過。 最下段まで実行された場合は再びゲートから実行。 スクリプトパラメータ 全制御パネルにはスクリプトパラメータと呼ばれるいくつかの制御値があり、配置した制御パネルをクリックし、ウインドウ上部の編集パネルで設定可能。 ほとんどの制御パネルにはウエイトが設定可能。 ウエイトを設定すると、そのパネルを実行後、設定された時間が経過するまで次のパネルへ移動しない。 時間を経過させずに無限ループさせるとデッドロックするので注意。 スクリプトパネル ラベルパネル 制御パネル 移動パネル 攻撃パネル 描画パネル サウンドパネル 背景パネル スコアパネル 変数パネル 予備パネル →スクリプト情報蓄積
https://w.atwiki.jp/sakurascript/pages/20.html
未分類コマンド 未分類コマンド \![execute,http-get,URL] \![execute,http-get,URL,パラメータ] \![execute,http-post,URL,パラメータ] http get/post オプション \![execute,rss-get,URL,パラメータ] \![execute,extractarchive,ファイル名,ディレクトリ名] \![execute,compressarchive,ファイル名,ディレクトリ名] \![execute,install,path,ファイル名] \![execute,install,url,URL,feedまたはnar] \![enter,passivemode] \![leave,passivemode] PassiveMode補足 \![enter,inductionmode] \![leave,inductionmode] InductionMode補足 \![enter,selectmode,モード(rect)] \![leave,selectmode] \![reloadsurface] \![reload,descript] \![reload,descript,パラメータ] \![reload,shiori] \![reload,makoto] \![reload,shell] \![reload,ghost] \_u[0x0000] \_m[0x00] \ [ID] \m[umsg,wparam,lparam] 未分類コマンド \![execute,http-get,URL] http get リクエストを行い、レスポンスをファイルに格納する。 \![execute,http-get,URL,パラメータ] パラメータ付きでhttp get リクエストを行い、レスポンスをファイルに格納する。 \![execute,http-get,URL,オプション,オプション,オプション...] でオプション付きでhttp get リクエストを行い、レスポンスをファイルに格納する。 \![execute,http-post,URL,パラメータ] パラメータ付きでhttp post リクエストを行い、レスポンスをファイルに格納する。 \![execute,http-post,URL,オプション,オプション,オプション...] でオプション付きでhttp post リクエストを行い、レスポンスをファイルに格納する。 http get/post オプション 『--async=識別ID』 処理が完了してからOnExecuteHTTPCompleteまたはOnExecuteHTTPFailureイベントを通知。 『--file=ファイル名』 取得するデータの保存名を指定。myghost/ghost/master/var/ファイル名に保存される。 『--nodescript』 オンライン表示とダウンロード状況を表示しない。 『--param=パラメータ』 get/postのパラメータを指定します。 『--timeout=秒数』 通信のタイムアウトする時間を指定します。(300秒まで) 『--param-charset=文字コード』 文字コードを指定。Shift_JIS、EUC-JP、UTF-8など、デフォルトではUTF-8。 『--cookie=クッキーデータ』 Cookieのデータ、OnExecuteHTTPCompleteのReference5の値をそのまま指定する。 \![execute,rss-get,URL,パラメータ] URLで指定されたRSSの取得を行う。パラメータで指定できるオプションは上記のhttp-get/postオプションと同じ 取得成功後に実行される関数はOnExecuteRSSComplete。失敗ならOnExecuteRSSFailure。通信に関する情報はOnExecuteRSS_SSLInfo。(基本的にhttp-getと同じ) 取得に成功した場合、OnExecuteRSSCompleteの中のreference[]に結果が格納される。 \![execute,extractarchive,ファイル名,ディレクトリ名] ZIPファイルの解凍をする。ssp.exe以下のフォルダのみ可能。 \![execute,compressarchive,ファイル名,ディレクトリ名] ZIPファイルの圧縮をする。ssp.exe以下のフォルダのみ可能。 \![execute,install,path,ファイル名] 指定したnarファイルをインストールする。 \![execute,install,url,URL,feedまたはnar] 指定したURLのnarファイルをインストールまたはRSSFeedを登録。feed、narは省略可能。 \![enter,passivemode] ※PassiveModeを開始する。 \![leave,passivemode] 上記を解除する。 PassiveMode補足 パッシブモードの時、以下の制限が発生する。 ポップアップメニューが出ない。 メールチェックしない。 ヘッドラインセンスしない。 オートチェンジしない。 選択肢がタイムアウトしない。 吹き出しが時間経過で消えない。 ファイルが DnD されても無視。 nar ダブルクリックも無視。 OnSurfaceRestoreが来ない。 cantalk は常に false。(OnSecondChange および OnMinuteChange 自体は来る) コミュニケートボックスは閉じられ、また開かない。 最小化できない。 終了できない。 \![enter,inductionmode] ※InductionModeを開始する。 \![leave,inductionmode] 上記を解除する。 InductionMode補足 パッシブモードから以下の制限を解除したもの。 タイムアウト発生。 最小化可能。 終了可能。 コミュニケートボックス可能。 \![enter,selectmode,モード(rect)] 選択モードを開始する。 実行すると透明部分も表示され、マウスをドラッグすると領域を指定することができる。 実行後、OnSelectModeBeginが実行される。 その他OnSelectModeMouseUp、OnSelectModeMouseDownも参照。 現在のところ、矩形選択モードを示す "rect" のみを指定可能。 また、無指定の場合はrectを指定したのと同じ扱いになる。 ゴーストの当たり判定の作成に使えるかも? 得られた結果をテキストに出力するなどのソースを作成し、現行で使用率の高い里々・YAYA用にパッケージングしたら需要があるかも知れない。 作った。 \![leave,selectmode] 上記を解除する。実行後OnSelectModeCompleteが実行される。 \![reloadsurface] サーフィスをリロードする。 シェルにフォルダ以下の変化を加えたときに。 \![reload,descript] 全descript.txtをリロードする。 \![reload,descript,パラメータ] 指定したdescript.txtをリロードする。 半角スペース区切りで複数指定可能。 ghost shell balloon headline plugin \![reload,shiori] shiori.dllをリロードする。 \![reload,makoto] makoto.dllをリロードする。 \![reload,shell] シェルをリロードする。 \![reload,ghost] ゴースト全体をリロードする。 \_u[0x0000] UCS-2 コード埋め込み。 \_m[0x00] ASCII コード埋め込み。 \ [ID] 識別子による実体参照。 \m[umsg,wparam,lparam] SSTP専用。Wndヘッダにより予めセットされたウインドウハンドルに対しpostmessage(hwnd,umsg,wparam,lparam) を実行する。