·:·:· 使用例 ·:·:·
// ロッキー高原ではシャベルを装備。
// 恐怖の洞窟ではロードアウト1を装備し、
// ボス戦では、代わりに鉤縄と
// 7つ星のウォーハンマーを装備。
// 呪われた会館では魔法の杖を2本装備し、
// 左手には毒属性、右手には活力属性を指定。
// ただし、難易度が5つ星を超える場合は、
// エンチャントされた+13の活力の杖を装備。
// HPが10未満になった時、ポーションを使用。
?loc=rocky
equip shovel
?loc=cave
loadout 1
?foe=bolesh
equip grap
equip hammer *7 D
?loc=halls
equipL poison wand
equipR vigor wand
?loc.stars > 5
equip vigor staff +13
?hp < 10
activate potion
トップへ戻る
·:·:· 基本 ·:·:·
トップへ戻る
| ? | 論理条件を評価する。条件が真(true)の場合、インデントされた行を実行する(if文)。 使用例: ?loc = caves loadout 1 |
| : | 代替論理分岐(else文)。'?'の条件が偽(false)の場合に実行する。 使用例: ?loc = caves loadout 1 : loadout 2 |
| :? | 代替論理分岐(else-if)。条件を追加することができる。 使用例: ?loc = caves loadout 1 :?loc = deadwood loadout 2 : loadout 3 |
| // | コメント。'//'の右側に記載されたテキストはスクリプト実行時に無視される。 使用例: ?loc = caves loadout 1 //上記のスクリプトは、恐怖の洞窟でロードアウト1を装備するという意味。 |
| /* */ | ブロックコメント。この記号に囲われたテキストはスクリプト実行時に無視される。 使用例: /* ?loc = caves loadout 1 */ このスクリプトは、すべてがブロックコメント内にあるため何もしない。 |
| ^ | 1つ前の行と連続する。 使用例: ?loc=caves | ^loc = mine equip repeating //上記のスクリプトは以下のスクリプトと同じ意味である。 ?loc=caves|loc=mine equip repeating |
·:·:· ゲームの状態 ·:·:·
以下の質問は、プレイヤーの前で何が起こっているのか、何が目の前にあるかを教えてくれます。
トップへ戻る
| ?loc | 現在、プレイヤーが存在しているエリア。 使用例: ?loc = caves loadout 1 |
| ?loc.id | 現在のエリアの固有の識別子。 使用例: var id id = loc.id >探検エリア @id@ |
| ?loc.gp | 現在のループで使用されている総ギアパワー。 使用例: >`0,1,1ループのGP = @loc.gp@ |
| ?loc.name | ローカライズされた現在のエリア。 使用例: >探検エリア @loc.name@ |
| ?loc.stars | 現在のエリアの難易度。 使用例: ?loc = caves ?loc.stars=4 loadout 1 ?loc.stars=5 loadout 2 |
| ?loc.begin | エリアの最初のフレーム(time = 0)でのみ真になり、ゲームシミュレーションが開始する前を示す。ウロボロスループ以降は真にならない。変数のリセットに便利。 使用例: var i ?loc.begin i = 0 ?loc = caves i = -100 |
| ?loc.loop | ウロボロスループ後の最初のフレームでのみ真になる。 使用例: var loopCount = 0 ?loc.loop loopCount++ |
| ?loc.isQuest | 現在のエリアが伝説のクエストやカスタムクエストといった特殊なエリアの場合、真になる。それ以外の場合は偽になる。 使用例: ?loc.isQuest >`0,1,特殊なクエストエリアにいます |
| loc.averageTime | 現在のエリアの平均クリアタイム。エリアの平均タイムは加重方式で計算され、最新のクリアタイムほど影響が強く、古くなる度に影響が弱くなる。 使用例: >`0,2,平均タイム = ^ @loc.averageTime@フレーム |
| loc.bestTime | 現在のエリアの最短クリアタイム(自己ベスト、ハイスコア)。 使用例: >`0,1,ベストタイム = ^ @loc.bestTime@フレーム |
| ?encounter.isElite | 現在交戦中の敵がエリートかどうかを示す。 使用例: >`0,1,エリート = @encounter.isElite@ |
| ?encounter.eliteMod | 現在交戦中の敵に特殊効果がある場合、その効果を示す。 使用例: >`0,2,特殊効果 = @encounter.eliteMod@ |
| ?foe | 現在プレイヤーがターゲットにしている敵。 使用例: ?foe = boo equip vigor staff |
| ?foe.id | プレイヤーがターゲットにしている敵の固有ID(またはタイプ)。 |
| ?foe.name | プレイヤーがターゲットにしている敵のローカライズされた名前。 |
| ?foe.damage | プレイヤーがターゲットにしている敵の攻撃1回あたりのダメージ。 使用例: >`0,1,敵のダメージ = @foe.damage@ |
| ?foe.distance | プレイヤーとターゲットにしている敵との距離。 |
| ?foe.z | ターゲットにしている敵のZ座標。 |
| ?foe.count | プレイヤーから46ユニット以内にいる敵の数。 |
| ?foe.GetCount(int) | 指定されたユニット数以内にいる敵の数。 |
| ?foe.hp | プレイヤーがターゲットにしている敵の現在のHP。 |
| ?foe.maxhp | プレイヤーがターゲットにしている敵の最大HP。 |
| ?foe.armor | プレイヤーがターゲットにしている敵の現在のアーマー値。 |
| ?foe.maxarmor | プレイヤーがターゲットにしている敵の最大アーマー値。 |
| ?foe.buffs.count | ターゲットにしている敵にかかっているバフ(プラス効果)の数。 |
| ?foe.buffs.string | ターゲットにしている敵のバフに関する詳細な情報。 使用例: ?foe.buffs.count > 0 >`0,3,敵のバフ = @foe.buffs.string@ |
| ?foe.buffs.GetCount(str) | ターゲットにしている敵の特定のバフの数。 |
| ?foe.buffs.GetTime(str) | ターゲットにしている敵の特定のバフの持続時間。 |
| ?buffs.oldest | プレイヤーにかかっている最も古いバフのID。 使用例: >`0,1,最古バフ: @buffs.oldest@ |
| ?foe.debuffs.count | ターゲットにしている敵にかかっているデバフ(マイナス効果)の数。 |
| ?foe.debuffs.string | ターゲットにしている敵のデバフに関する詳細な情報。 使用例: ?foe.debuffs.count > 0 >`0,4,敵のデバフ = @foe.debuffs.string@ |
| ?foe.debuffs.GetCount(str) | ターゲットにしている敵の特定のデバフの数。 使用例: >`0,1,氷デバフの数 = ^ @foe.debuffs.GetCount("debuff_chill")@ |
| ?foe.debuffs.GetTime(str) | ターゲットにしている敵の特定のデバフの持続時間。 使用例: >`0,2,氷デバフの持続時間 = ^ @foe.debuffs.GetTime("debuff_chill")@ |
| ?debuffs.oldest | プレイヤーにかかっている最も古いデバフのID。 使用例: >`0,1,最古デバフ: @debuffs.oldest@ |
| ?foe.state | ターゲットにしている敵の現在の状態を表す数値。 使用例: ?foe.state = 0 >`0,0,敵は寝ています |
| ?foe.time | ターゲットにしている敵が現在の状態で経過したフレーム数。 使用例: >`0,0,敵 = @foe.name@:@foe.state@,@foe.time@ |
| ?foe.level | ターゲットにしている敵のレベル。 使用例: >`0,0,敵 = @foe.name@のレベル @foe.level@ |
| ?harvest | 木や岩など、近くの収穫可能なオブジェクト。 使用例: ?harvest=Boulder equip shovel |
| ?harvest.distance | プレイヤーと最も近い収穫可能なオブジェクトとの距離。 使用例: ?loc=Rocky & harvest.distance < 7 equip shovel |
| ?harvest.z | 最も近い収穫可能なオブジェクトのZ座標。 使用例: ?loc=Rocky & harvest.z > 5 equip shovel |
| ?input.x | 入力デバイス(マウス/タッチ)のアスキーグリッド上のX座標。 |
| ?input.y | 入力デバイス(マウス/タッチ)のアスキーグリッド上のY座標。 使用例: > (@input.x@, @input.y@) |
| ?item.left | 左手に装備されているアイテム。 使用例: >`0,1,左装備:@item.left@ >`0,2,右装備:@item.right@ |
| ?item.right | 右手に装備されているアイテム。 使用例: ?item.right = quarterstaff activate R |
| ?item.left.gp ?item.right.gp |
左または右に装備されているアイテムのギアパワー。 使用例: >`0,1,左装備のGP:@item.left.gp@ >`0,2,右装備のGP:@item.right.gp@ |
| ?item.left.id ?item.right.id |
左または右に装備されているアイテムのID。 使用例: >`0,1,Left ID:@item.left.id@ >`0,2,Right ID:@item.right.id@ |
| ?item.left.state ?item.left.time ?item.right.state ?item.right.time |
装備されている武器の現在の状態と、その状態の経過フレーム数。 使用例: >`0,1,@item.left.state@:@item.left.time@ >`0,2,@item.right.state@:@item.right.time@ |
| ?item.potion | 現在調合されているポーション。大釜の自動補充が有効になっている場合は'auto'が含まれる。 使用例: ?item.potion ! empty & item.potion = auto activate potion |
| ?pickup | 現在プレイヤーがターゲットにしている素材。 使用例: ?pickup equip star stone : loadout 1 |
| ?pickup.distance | プレイヤーとターゲットにしている素材との距離。 使用例: ?pickup.distance < 5 equipL star stone |
| ?pickup.z | ターゲットにしている素材のZ座標。 使用例: ?pickup.z > 7 equipL star stone |
| ?armor | プレイヤーの現在のアーマー値(小数点以下は切り捨て)。 例:アーマーが[2.4]の場合、?armorは2を返す。 |
| ?armor.f | プレイヤーの現在のアーマー値の小数部分。 例:アーマーが[2.4]の場合、?armor.fは4を返す。 |
| ?buffs.count | プレイヤーにかかっているバフ(プラス効果)の数。 |
| ?buffs.string | プレイヤーのバフに関する詳細な情報。 使用例: ?buffs.count > 0 >`0,1,プレイヤーバフ = @buffs.string@ |
| ?buffs.GetCount(str) | プレイヤーの特定のバフの数。 |
| ?buffs.GetTime(str) | プレイヤーの特定のバフの持続時間。 |
| ?debuffs.count | プレイヤーにかかっているデバフ(マイナス効果)の数。 |
| ?debuffs.string | プレイヤーのデバフに関する詳細な情報。 使用例: ?debuffs.count > 0 >`0,2,プレイヤーデバフ = @debuffs.string@ |
| ?debuffs.GetCount(str) | プレイヤーの特定のデバフの数。 |
| ?debuffs.GetTime(str) | プレイヤーの特定のデバフの持続時間。 |
| ?hp | プレイヤーの現在のHP。 |
| ?maxhp | プレイヤーの最大HP。 |
| ?maxarmor | プレイヤーの最大アーマー(端数切り捨て)。 |
| ?pos.x | プレイヤーの現在のX座標。 |
| ?pos.y | プレイヤーの現在のY座標。 |
| ?pos.z | プレイヤーの現在のZ座標。 |
| ?ai.enabled | AIが有効であれば真、無効であれば偽になる(イベントムービー中など)。 |
| ?ai.paused | AIが一時的に停止していれば真になる(宝箱のドロップ待機中など)。 |
| ?ai.idle | プレイヤーが待機状態であれば真になる(攻撃の完了待ちなど)。 |
| ?ai.walking | プレイヤーが移動中であれば真になる。 |
| ?bighead | プレイヤーがビッグヘッド(月時計の石)を有効にしていれば真になる。 |
| ?face | プレイヤーの現在の表情。 使用例: ?face = "^^" >ハッピー |
| ?key | カスタムゲーム入力の状態。 以下は現在の入力状態を出力する: >@key@ |
| ?res.stone ?res.wood ?res.tar ?res.ki ?res.bronze ?res.crystals |
プレイヤーのインベントリ内にある現在の素材量。 使用例1: ?loc = Deadwood >木の枝 = @res.wood@ 使用例2: >`0,1,#magenta, ♦ @res.crystals@ |
| ?player.direction | プレイヤーが向いている方向を示す。 使用例: ?player.direction = 1 >`0,0,右に歩いています : >`0,0,左に歩いています |
| player.framesPerMove | プレイヤーが一マス先に移動するのにかかるフレーム数。 >`0,1,Player Movement: @player.framesPerMove@ |
| player.name | プレイヤーが決めた名前。 以下はプレイヤーの名前を頭上に表示する例です: var name var x name = player.name x = string.Size(name) / -2 >o@x@,-2,@name@ |
| player.GetNextLegendName() | プレイヤーがまだクリアしていない、次にアンロックされる伝説のクエストの名前。 |
| ?rng | 0から9999の範囲でランダムな整数を返す。 使用例1: ?rng < 5000 >表! : >裏! 使用例2:5から24の範囲でランダムな整数を生成: var min = 5 var max = 24 var n = min + rng % (max - min + 1) |
| ?rngf | 0から1のランダムな浮動小数点数を返す。 使用例1: >ランダム小数 = @rngf@ 使用例2:5.0から24.0の範囲でランダムな小数を生成: var min = 5.0 var max = 24.0 var n = min + (max - min) * rngf |
| ?screen.i | ゲーム内画面の位置をインデックスとして表す。プレイヤーが右端に到達して画面がスライドするたびに増加する。 使用例: >`0,0,画面のインデックス = @screen.i@ |
| ?screen.x | ゲーム内画面のX座標。 使用例: >`0,0,画面のX座標 = @screen.x@ |
| ?screen.w | 画面のアスキーグリッドの幅。 使用例: var sw = screen.w >画面の横幅 = @sw@ |
| ?screen.h | 画面のアスキーグリッドの高さ。 使用例: var sh = screen.h >画面の高さ = @sh@ |
| ?summon.count | 現在ゲーム内にいる召喚された仲間の数。 使用例: ?summon.count = 0 & ^ item.CanActivate() equipL talisman activate L |
| summon.GetId(index = 0) | 指定されたインデックスの召喚された仲間のIDを返す。インデックスパラメータは省略可能で、デフォルトは0(最初の召喚)。指定したインデックスに仲間がいない場合はnullを返す。 使用例: ?summon.GetId() ! "cinderwisp" & ^ item.CanActivate() equipR fire talisman activate R |
| summon.GetName(index = 0) | 指定されたインデックスの召喚された仲間のローカライズ名を返す。インデックスパラメータは省略可能で、デフォルトは0(最初の召喚)。指定したインデックスに仲間がいない場合はnullを返す。 使用例: >`0,1,召喚:@summon.GetName()@ |
| summon.GetVar(varName, index = 0) |
召喚された仲間のカスタム変数の値を返す。召喚の種類によって異なる変数が使用されている。インデックスパラメータは省略可能で、デフォルトは0(最初の召喚)。指定したインデックスに仲間がいない場合はnullを返す。 使用例: ?summon.GetId() = cinderwisp & ^summon.GetVar("ignition") > 2 activate cinderwisp |
| summon.GetState(index = 0) | 指定されたインデックスの召喚された仲間の現在の状態を表す数値を返す。インデックスパラメータは省略可能で、デフォルトは0(最初の召喚)。指定したインデックスに仲間がいない場合は-1を返す。 使用例: >`0,1,召喚の状態:@summon.GetState()@ |
| summon.GetTime(index = 0) | 指定されたインデックスの召喚された仲間の状態の経過フレーム数を返す。インデックスパラメータは省略可能で、デフォルトは0(最初の召喚)。指定したインデックスに仲間がいない場合は-1を返す。 使用例: >`0,1,召喚状態の経過時間:@summon.GetTime()@ |
| ?totalgp | インベントリ内の"ギアパワー"の合計値。アイテムの星レベルやエンチャントボーナスから計算される。 使用例: >ギアパワー = @totalgp@ |
| ?time | 現在のエリアで経過したフレーム数。 使用例: ?time % 300 = 0 >10秒ごとにこのメッセージが表示されます |
| ?totaltime | ボスエリアを含めた、現在のエリアで経過した合計フレーム数。 使用例: >`0,0,現在の時間 = @totaltime@フレーム |
| time.msbn | Unix時間をミリ秒単位で表す。(1970年1月1日00:00:00 UTC以降の経過時間)うるう秒は考慮されない。BigNumber型を返す。 使用例: >@time.msbn@ |
| time.year, time.month, time.day, time.hour, time.minute, time.second | プレイヤーのコンピュータ上のローカルシステム時間。 使用例: >`0,0,@time.year@/@time.month@/@time.day@ ^ @time.hour@:@time.minute@:@time.second@ |
| utc.year, utc.month, utc.day, utc.hour, utc.minute, utc.second | 現在のUTC時間。 使用例: var utcZ = utc.year*356*12*24*30 + ^utc.month*12*24 + utc.day*24+utc.hour var timeZ = time.year*356*12*24*30 + ^time.month*12*24 + time.day*24+time.hour var timeZone = timeZ - utcZ ?timeZone < 0 >`0,0,タイムゾーン: UTC@timeZone@ : >`0,0,タイムゾーン: UTC+@timeZone@ |
·:·:· コマンド ·:·:·
ゲームに指示を与えることが出来ます。
トップへ戻る
| activate (ability) | アイテムの能力を発動する。(ability)の値として、'potion' 'P' 'left' 'L' 'right' 'R' そして能力IDを指定できる。 使用例: activate R (手斧など右手に装備されたアイテムの能力を発動する) |
| brew (ingredients) | ポーションボトルに指定された調合の材料を補充する。実行の開始、time 0にのみ実行される。材料には 使用例: ?loc.begin brew bronze + tar |
| equip (str) | アイテムを装備する。(str)には7つの基準がある。両手持ちのアイテムはこの形式のequipコマンドを使わなければならない。 使用例: equip vigor crossbow *8 +5 |
| equipL (str) | 指定された条件に最も合うアイテムを左手に装備する。 使用例: equipL poison d_sword |
| equipR (str) | 指定された条件に最も合うアイテムを右手に装備する。 使用例: equipR vigor shield |
| equip @var@ | 文字列変数からの条件に基づいてアイテムを装備する。装備やその他アイテム検索コマンドは減算条件に対応している。 使用例: var weaponName = "poison sword *10 -big" equipR @weaponName@ |
| loadout (n) | 特定のロードアウト番号を装備する。 使用例: ?loc = caves loadout 1 ?loc = deadwood loadout 2 |
| > (str) | 画面の上部に文字列を表示する。 使用例: >Hello World! |
| > @varName@ | 変数の値を挿入した文字列を表示する。表示には複数の変数を挿入でき、変数名を'@'で囲む。 以下の例では、現在ターゲットにしている敵の情報を表示する。 var foeInfo foeInfo = foe >敵 = @foeInfo@ |
| >(abcd | プレイヤーの表情をカスタムして表示する。ビッグヘッドが必要。 使用例: >( OwO |
| >oX,Y,[#rrggbb,](str) | プレイヤーの位置を基準にした高度な表示。XとYは座標のオフセット。"#rrggbb"はテキストの色を16進数で表記したもの。色は次の定数で設定することもできる。'#white' '#cyan' '#yellow' '#green' '#blue' '#red' 虹色は'rainFF'を使用し、最後の2文字(FF)で明るさを指定する。 以下の例では、プレイヤーの位置を基準に、左に6、下に3の位置に赤文字で"Let's go!"と表示する。 >o-6,3,#red,Let's go! |
| >hX,Y,[#rrggbb,](str) | ">o"とほぼ同じだが、ビッグヘッドと同じレイヤーに描画する。帽子などアクセサリーに最適。 以下の例では、プレイヤーに黄色の帽子を描画する。ビッグヘッドが有効だと最適。 >h-2,-3,#yellow,ascii ##_ #| | _|_|_ asciiend |
| >`X,Y,[#rrggbb,](str) | 画面の左上隅を基準にした高度な表示。 以下の例では、座標と色に変数を使用して"Hello World!"を表示する。 var posX = 10 var posY = 5 var color = rainE1 >`@posX@,@posY@,#@color@,Hello World! |
| >cX,Y,[#rrggbb,](str) | 画面の中央を基準にした高度な表示。">`"と似ている。いずれも色は任意であることに注意。 以下の例で、色は任意で、デフォルトは白であることが分かる。 >c0,0,Hello World! |
| >fX,Y,[#rrggbb,](str) | ターゲットの敵の頭の位置を基準にした高度な表示。 以下の例では、ターゲットにした敵に赤い十字線を描画する。 >f-2,0,#ff0000,ascii ##! -#·#- ##¡ asciiend |
| var (variable) | 数学、論理、文字列演算で使用できる変数を宣言する。変数の循環と挙動についての詳細は、他の言語と異なる可能性があるため、変数の章を参照してください。 使用例: var message = Hello World! >@message@ |
| func (function) | 後で呼び出せる関数を宣言する。 使用例: func Print(message) >@message@ Print(Hello World!) |
| for v = a..b | 変数'v'を'a'から'b'までの値で繰り返し実行するループを作成する。ループのスコープ内に表示されるコードは複数回実行される。 使用例: var a a = 0 for i = 1..5 a = a + i >a = @a@ |
| import (script) | 外部スクリプトの単一のコピーを読み込んで実行する。 以下の例では、Fishing.txtという釣りミニゲームをインポートする。 (save-fileフォルダー)/Stonescript/Fishing.txt import Fishing |
| new (script) | "import"と類似する外部スクリプトを読み込んで実行する。ただし、"new"で読み込まれたオブジェクトはそれぞれ個別のコピーであり、スクリプト本体は1回しか実行されない。 以下の例では、ベクトルオブジェクトを作成して表示する。 var v = new Components/Vector v.Init(10, 5) >Vector = @v@ |
| disable abilities | ポーションや武器の能力発動を無効化する。また、HUDボタンが灰色になる。 |
| enable abilities | "disable abilities"によって無効にされた能力の発動を有効化する。 |
| disable banner | エリアの始まりと終わりにエリア名が表示されるバナー演出を無効化する。 |
| enable banner | エリア名が表示されるバナー演出を有効化する。 |
| disable hud (opts) | ゲーム内のUI要素を非表示および無効化する。任意のパラメータを受け入れ、無効にする要素を指定できる。p = プレイヤーの体力とデバフ f = 敵の体力とデバフ a = 能力使用ボタン r = 資源 b = バナー u = 四次元ベルト 使用例1: disable hud // すべてのhud要素を無効化 使用例2: disable hud ru // 資源(r)と四次元ベルト(u)のみを無効化 |
| enable hud (opts) | "disable hud"コマンドによって非表示にされたUIを表示する。無効にした要素を指定できるよう、disableコマンドと同じ任意パラメータを受け入れる。 |
| disable loadout input | 武器のロードアウトをキー入力での保存や呼び出しを無効化する。 |
| enable loadout input | 武器のロードアウトをキー入力での保存や呼び出しを有効化する。 |
| disable loadout print | ロードアウトが呼び出された時に表示されるメッセージを非表示にする。 |
| enable loadout print | 非表示にされたロードアウトメッセージを表示する。 |
| disable npcDialog | NPCの吹き出しを非表示にして会話をスキップする。 |
| enable npcDialog | 非表示にされたNPCの吹き出しを表示する。 |
| disable pause | ポーズボタンのUIを非表示にする。[P]キーでのポーズは利用可能。 |
| enable pause | "disable pause"コマンドで非表示にされたポーズボタンを表示する。 |
| disable player | プレイヤーを非表示にする。戦闘には影響しない、見た目だけのもの。 |
| enable player | "disable player"コマンドで非表示にされたプレイヤーを表示する。 |
| play (sound) (pitch) | 任意のピッチ値を持つ効果音を再生する。ピッチの初期値は100で、数値が大きいほどピッチが上がり、数値が小さいほど下がる。 使用例1: ?key = primary play buy ?key = up play buy 200 使用例2: var pitch ?time%30 = 0 pitch = rng/100 + 50 >@pitch@ play buy @pitch@ |
·:·:· 検索フィルター ·:·:·
敵、エリア、アイテムを評価する際に使用されます。
使用例:
?foe = insect | foe = poison
loadout 3
poison
vigor
aether
fire
air
ice
arachnid
serpent
insect
machine
humanoid
elemental
boss
phase1
phase2
phase3
spawner
flying
slow
ranged
explode
swarm
unpushable
undamageable
magic_resist
magic_vulnerability
immune_to_stun
immune_to_ranged
immune_to_debuff_damage
immune_to_physical
*[number] star level (location or item)
+[number] enchantment bonus (item only)
トップへ戻る
·:·:· 比較 ·:·:·
ゲームの状態と組み合わせて意思決定を行うために使用されます。
トップへ戻る
| = | 等しい値か、文字列が含まれている値を比較する。 使用例: ?hp = maxhp loadout 2 |
| ! | 等しくない値か、文字列に含まれていない値を比較する。 使用例: ?foe ! poison equipL sword |
| & | 論理積(AND)演算子。 使用例: ?loc=caves & foe=boss |
| | | 論理和(OR)演算子。複雑な式に'&'と'|'が混在している場合、'&'が最初に評価される。 使用例: ?foe=slow | foe.count>3 activate potion |
| > | 値が大きいかを比較する。エリアの難易度、敵の数、体力などと組み合わせて使用できる。 使用例: ?foe.count > 10 equip shiny bardiche |
| < | 値が小さいかを比較する。 使用例: ?hp < 6 activate potion |
| >= | 値が大きいか、等しいかを比較する。'>'と'='を組み合わせて一つの比較とする。 The following two examples are equivalent: ?loc.stars >= 6 equipR vigor shield ?loc.stars > 6 | loc.stars = 6 equipR vigor shield |
| <= | 値が大きいか、等しいかを比較する。'<'と'='を組み合わせて一つの比較とする。 使用例: ?hp <= 6 activate potion |
·:·:· 変数 ·:·:·
変数は、値を保存して後で使用するための手段です。'var'キーワードを使用して新しい変数を宣言します。
使用例:
var myVar = 10
(myVarは変数の名前で、値10で初期化されています)
myVar = myVar + 5
(この時点で、myVarの値は15になります)
var secondVar = 3
myVar = myVar - secondVar
(複数の変数を数式で組み合わせることができます。この場合、myVarの値は12になります)
変数が宣言されると、最初に'var'が実行された時にのみ初期化されます。
使用例:
var i = 0
i++
>i = @i@
この例では、変数'I'が宣言され、値が0から始まります。その後実行すると、各フレームで'i'の値が1増加し、画面に表示されます。
変数が初期値にリセットされるタイミングは、エリアを離れ、再入場して新たな実行を開始した場合のみです。ウロボロスループや、明瞭の石の開閉ではリセットされません。
文字列型変数は、任意で引用符("")で囲んで宣言できます。これにより、特殊記号や末尾のスペースを含めることができます。
使用例:
var a = 10
var b = 5
var myVar = a + " x " + b + " = " + (a * b)
>@myVar@
(この例では、'+'で文字列を結合する方法も示しています。)
インポートされたスクリプト内の変数は、そのスクリプト内でのみ有効です。他のスクリプトの変数や関数と競合することはありません。
トップへ戻る
·:·:· 数学演算 ·:·:·
演算子は数値を操作します。変数と組み合わせたり、ゲームの状態式で直接使用できます。
トップへ戻る
| + | 2つの数値や変数を加算する。 使用例: var a = 2 + 3 (a = 5) |
| - | 2つの数値や変数を減算する。 使用例: ?hp < maxhp - 5 equip vigor sword dL |
| * | 2つの数値や変数を乗算する。 使用例: var a = 2 var b = 5 a = a * b // a = 10 使用例2: var a = 2 * 0.4 // a = 0.8 |
| / | 1つの数値や変数をもう1つの数値や変数で除算する。どちらも整数の場合、少数部分は切り捨てられる。 使用例: var a = 8 a = a / 4 // a = 2 使用例2: var a = 5.0 a = a / 2 // a = 2.5 |
| ++ | 変数の値を1増加させる。 使用例: var a = 3 a++ // a = 4 |
| -- | 変数の値を1減少させる。 使用例: var a = 3 a-- // a = 2 |
| % | 余剰演算。割り算の余りを返す。 使用例: var a = 5 % 4 (a = 1) 使用例2: ?time % 8 < 4 > \O) ?time % 8 > 3 > (O/ // アニメーションされた絵文字を表示する |
| ( ) | 演算の優先順位を指定できる。カッコ内を先に計算する。 使用例: var a = 2 * (3 - 1) // a = 4 |
| ! | 否定。真偽値を反転させる。 使用例: ? !ai.enabled >AIは有効ではありません。 |
·:·:· 関数 ·:·:·
関数は、スクリプトが複雑になるにつれて、重要な役割を果たします。コードの読みやすさを向上させ、重複を減らします。関数が宣言されると、その内容はすぐには実行されません。その代わり、後で関数が呼び出された時に実行されます。
次の例では、フレームごとに1ずつ増加させるカウンターが作成されています。特定のキーが入力されると、ResetCounter()が呼び出され、カウンターが0にリセットされます。
var count = 0
count++
>カウンター = @count@
func ResetCounter()
count = 0
?key=begin
ResetCounter()
関数の別の特徴は、値を返すことができることです。次の例では、メインエリア(ボスエリアではないエリア)の滞在時間を計算するシンプルな関数を宣言しています。
func NonBossDuration()
return totalTime - time
var duration
duration = NonBossDuration()
>滞在時間: @duration@
また、関数は引数/パラメータを受け取ることができ、任意の入力を操作する汎用的な関数を作成できます。次の例では、範囲内のランダムな数値を生成する実用的な関数を宣言し、それを使用して5から10の間のランダムな数値を生成しています。
func RandomRange(min, max)
?min >= max
return min
return min + rng % (max - min + 1)
var randomValue
randomValue = RandomRange(5, 10)
>RNG: @randomValue@
関数内で外部スクリプトに属する変数を参照する場合は、'this'を使うことで区別できます。'this'の使用は任意であり、スクリプト変数は'this'なしで関数からアクセスできます。ただし、次の例では、変数'a'は関数の内側にも外側にも現れるので、区別のために'this.a'が使用されています。
var a = 1
func TestScope(a)
>関数外変数 = @this.a@, 関数内変数 = @a@
TestScope(3)
関数が他の関数やその関数自身を呼び出すと、実行スタックが生成され、サイズが増え続けるとアプリケーションがクラッシュ可能性があります。コンピューターのリソースを保護するため、Stonescriptではスタックサイズが215に制限されており、それを超えるとエラーが発生します。
トップへ戻る
·:·:· ネイティブ関数 ·:·:·
スクリプトが独自の関数を定義できる一方で、Stonescriptにはあらかじめ定義されたネイティブ関数が用意されています。これらはコマンドのように動作しますが、主題ごとに明確に分類され、パラメータを受け取ることや、値を返すことがある点で異なります。
トップへ戻る
| ambient(環境音) ‾‾‾‾‾‾‾‾‾‾‾‾‾‾ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ?ambient |
再生中の環境音のIDをカンマ区切りで返す。 >`0,0,Ambient Layers = @ambient@ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ambient.Add(str) |
指定されたIDの環境音レイヤーを追加する。最大4レイヤーまで追加でき、5つ目を追加すると最も古いレイヤーが削除される。 ?loc.begin ambient.Add(ambient_crypt) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ambient.Stop() |
再生中の環境音をすべてクリアする。 ?time = 3 ambient.Stop() ambient.Add(ambient_mines) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BigNumber ‾‾‾‾‾‾‾‾‾ | BigNumberは、32ビットを超える大きな整数を扱うための特別なオブジェクト型です。正負の整数しか保持できませんが、四則演算や比較演算は、浮動小数点数や他のBigNumberとともに使用可能です。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| b.Add(num) b.Add(BigNumber) |
BigNumberに数値を加算する(+) var bn = math.BigNumber(12) bn.Add(5) >@bn@ // 17 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| b.Sub(num) b.Sub(BigNumber) |
BigNumberから数値を減算する(-) var bn = math.BigNumber(12) bn.Sub(5) >@bn@ // 7 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| b.Mul(num) b.Mul(BigNumber) |
BigNumberを数値で乗算する(*) var myBigNum1 = math.BigNumber(12) var myBigNum2 = math.BigNumber(12) myBigNum1.Mul(5) myBigNum2.Mul(1.5) >@myBigNum1@ @myBigNum2@ // 60 18 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| b.Div(num) b.Div(BigNumber) |
BigNumberを数値で除算する(/) var myBigNum1 = math.BigNumber(12) var myBigNum2 = math.BigNumber(12) myBigNum1.Div(5) myBigNum2.Div(1.5) >@myBigNum1@ @myBigNum2@ // 2 8 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| b.Eq(num) b.Eq(BigNumber) |
BigNumberが数値と等しいかを判定する(=) var bn = math.BigNumber(5) >@bn.Eq(5)@ @bn.Eq(3)@ // true false |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| b.Gt(num) b.Gt(BigNumber) |
BigNumberが数値より大きいかを判定する(>) var bn = math.BigNumber(5) >@bn.Gt(3)@ @bn.Gt(10)@ // true false |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| b.Ge(num) b.Ge(BigNumber) |
BigNumberが数値以上かを判定する(>=) var bn = math.BigNumber(5) >@bn.Ge(3)@ @bn.Ge(5)@ // true true |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| b.Lt(num) b.Lt(BigNumber) |
BigNumberが数値より小さいかを判定する(<) var bn = math.BigNumber(5) >@bn.Lt(3)@ @bn.Lt(10)@ // false true |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| b.Le(num) b.Le(BigNumber) |
BigNumberが数値以下かを判定する(<=) var bn = math.BigNumber(5) >@bn.Le(10)@ @bn.Le(5)@ // true true |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| b.ToFloat() |
BigNumberを浮動小数点数に変換する。値が大きすぎたり小さすぎる場合はエラーが発生する。 var bn = math.BigNumber(5) var fNumber = bn.ToFloat() >float = @fNumber@ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| b.ToInt() |
BigNumberを整数に変換する。値が大きすぎたり小さすぎる場合はエラーが発生する。 var bn = math.BigNumber(5) var iNumber = bn.ToInt() >integer = @iNumber@ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| b.ToString() |
BigNumberを文字列で返す。ストレージに保存する際に使用できる。 var myBigNum = math.BigNumber("123456789123456789") storage.Set("myBN", myBigNum.ToString()) --- var bnStr = storage.Get("myBN") var myBigNum = math.BigNumber(bnStr) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| b.ToUI() |
UIで使用するための短縮された数値表現を返す。 var myBigNum = math.BigNumber("123456789123456789") >@myBigNum.ToUI()@ // 123.5Qa |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
color(色) ‾‾‾‾‾‾‾‾‾ | Stonescriptでは、色は | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| color.FromRGB(r,g,b) |
RGB(0~255の3つの整数)をカラーコードに変換する。 var c = color.FromRGB(255, 0, 128) >`0,0,@c@, @c@ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| color.ToRGB(string) |
カラーコードをRGB(0~255の3つの整数)に変換する。 var c = color.Random() var rgb = color.ToRGB(c) var r = rgb[0] var g = rgb[1] var b = rgb[2] >`0,0,@c@, @c@ \n @r@ \n @g@ \n @b@ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| color.Lerp(c1,c2,t) |
時間 var c1 = "#ff4400" var c2 = "#8888ff" var t = 0.5 var c t = math.sin(time*0.1) / 2 + 0.5 c = color.Lerp(c1, c2, t) >`0,1,@c@,@c@\n ██████ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| color.Random() |
ランダムな色を返す。 var c c = color.Random() >`0,0,@c@,@c@\n ██████ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| draw(描画) ‾‾‾‾‾‾‾‾‾‾ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| draw.Bg(x, y, color) |
画面上の指定した位置の背景色を設定する。 draw.Bg(5, 4, #red) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| draw.Bg(x, y, color, w, h) |
画面上の指定した範囲の背景色を設定する。 draw.Bg(5, 4, #cyan, 10, 6) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| draw.Box(x, y, w, h, color, style) |
指定した位置と範囲の四角形を描画する。四角形の境界線は色とスタイル番号で定義される。スタイル番号がマイナスになるとボックスの内側が透明になる。警告 - 現時点では、高度な表示は常にボックスの上に描画される。 var style = 1 ?key = leftBegin style-- ?key = rightBegin style++ draw.Box(10, 5, 30, 15, #333333, style) >`12,6,#ffffff,Style = @style@ >`12,8,#888888,左右の矢印キーを押して\nスタイルを変更 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| draw.Clear() |
画面全体をクリアする。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| draw.GetSymbol(x, y) |
指定した位置(x,y)の文字を取得する。 var s var x = 20 var y = 10 var drawX ?key=leftBegin x-- ?key=rightBegin x++ ?key=upBegin y-- ?key=downBegin y++ s = draw.GetSymbol(x, y) >`0,1,Symbol = @s@ drawX = x - 1 >`@drawX@,@y@,[#] |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| draw.Player() draw.Player(x,y) |
指定した位置に、プレイヤーキャラクターを装備とアドオンを含めて描画する。任意でx,yのオフセット値を指定できる。絶対位置に描画する場合は、screen名前空間を参照して、プレイヤーのローカル位置から画面位置に変換するオフセットを導出する。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
int(整数) ‾‾‾‾‾‾‾‾ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| int.Parse(str) |
数値の文字列を整数に変換する。文字列が数値でない場合、エラーが発生する。 var s = "999" var i = int.Parse(s) i++ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| event ‾‾‾‾‾ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| event.GetObjectiveId(int) event.GetObjectiveProgress (int) event.GetObjectiveGoal(int) |
コミュニティイベントまたはシーズンイベントの進行中の目標IDを取得する。取得したい目標のインデックスを渡す。イベント目標の数は、基本的に3つまでなので、最初のパラメータは0,1,2のいずれかになる。 var id var p var g id = event.GetObjectiveId(0) p = event.GetObjectiveProgress(0) g = event.GetObjectiveGoal(0) >`0,1,@id@:@p@/@g@ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| item(アイテム) ‾‾‾‾‾‾‾‾‾‾‾‾‾ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| item.CanActivate() |
アイテムの能力を発動できる場合は真、そうでない場合は偽になる。ボス戦前や、ムービー中など、一部のプレイ状況では能力発動が無効になる場合もある。 ?item.CanActivate() equip Bardiche activate R |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| item.CanActivate(str) |
特定のアイテムが装備されているかつ、能力発動が可能な場合は真となる。アイテムによっては、特定の上限を満たさない限り発動できないものもある。これはitem.GetCooldown()の一部であり、アイテムがクールダウン中でなくても能力発動ができない場合もある。 equip bardiche ?item.GetCooldown("skeleton_arm") <= 0 equip skeleton arm ?item.CanActivate("skeleton_arm") activate R |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| item.GetCooldown(str) |
指定されたアイテム能力のクールダウン時間をフレーム単位で返す。 利用可能なすべての能力IDは、こちらを参照してください。注意:能力IDが無効の場合は-1を返します。まだ実装されていない武器の一部の能力も-1を返すことがあります。 ?foe = boss & item.GetCooldown("bardiche") <= 0 equip bardiche activate R | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| item.GetCount(str) |
インベントリ内の指定されたアイテムの個数を返す。見つからない場合は0を返す。 var searchCriteria = "sword *0 -big -socket" var swordCount = item.GetCount(searchCriteria) >I have @swordCount@ basic swords | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| item.GetLoadoutL(int) item.GetLoadoutR(int) |
指定された装備セットのアイテムを返す。整数パラメータは、ロードアウト番号を示す。該当スロットに装備が存在しない場合は空白を返す。 >`0,1,Left: @item.GetLoadoutL(1)@ >`0,2,Right: @item.GetLoadoutR(1)@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| item.GetTreasureCount() |
現在の宝箱の数を返す。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| item.GetTreasureLimit() |
保管可能な宝箱の上限を返す。 var trs var max trs = item.GetTreasureCount() max = item.GetTreasureLimit() >`0,2,Treasures: @trs@/@max@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| key ‾‾‾ | keyの名前空間は、標準のゲーム入力およびショートカットを可能にします。このシステムは、
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| key.Bind(act, key1) key.Bind(act, key1, key2) |
特定のアクションに対して新しいキーを割り当てる。別のアクションにそのキーが割り当てられている場合、元のアクションにあるそのキーの割り当ては削除される。アクションには最大2つのキーを割り当てることが可能。 ?loc.begin key.Bind("Potion", "P") // この例では、本来一時停止に割り当てられた"P"キーが、一時停止をせずポーションの使用に割り当てられます。さらに、ポーションの元の"Q"キーも機能せず、"Q"キーはどのアクションにも割り当てられていません。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| key.GetKeyAct(key) |
指定されたキーに割り当てられているアクションを返す。そのキーがどのアクションにも割り振られていない場合は"None"を返す。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| key.GetActKey(act) |
指定されたアクションに割り当てられている1つ目のキーを返す。そのアクションにキーが割り振られていない場合は"None"を返す。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| key.GetActKey2(act) |
指定されたアクションに割り当てられている2つ目のキーを返す。そのアクションに2つ目のキーが割り振られていない場合は"None"を返す。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| key.GetActLabel(act) |
指定されたアクションに割り当てられている1つ目のキーを示すユーザー向けのラベルを返す。現在の実装では、割り当てられたキーの最初の1文字目を返すため、"LeftShift"のようなキーの場合は分かりにくい可能性がある。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| key.ResetBinds() |
すべてのアクションのキー割り当てをデフォルトにリセットする。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
loc(エリア) ‾‾‾‾‾‾‾‾‾‾ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| loc.Leave() |
プレイヤーが手動でリタイアボタンを押したかようにエリアを退出する。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| loc.Pause() |
プレイヤーが手動で一時停止ボタンを押したかのようにエリアを一時停止する。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
math(数学) ‾‾‾‾‾‾‾‾‾ | math APIは、整数(int)と浮動小数点数(float)の両方を扱います。数値を小数点を含む形で宣言した場合はfloat型として扱われ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.Abs(num) |
指定された数値の絶対値を返す。 var number = -2 number = math.Abs(number) // numberの値は2になる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.Acos(num) |
指定された数値の逆余弦(アークコサイン)をラジアン単位で返す。入力値は-1から1の範囲である必要があり、範囲外の場合は"NaN"を返す。 var number = math.Acos(-1) // numberの値はπになる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.Asin(num) |
指定された数値の逆正弦(アークサイン)をラジアン単位で返す。入力値は-1から1の範囲である必要があり、範囲外の場合は"NaN"を返す。 var number = math.Asin(1) // numberの値はπ/2になる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.Atan(num) |
指定された数値の逆正接(アークタンジェント)をラジアン単位で返す。 var number = math.Atan(2) // numberの値は1.107149になる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.Atan2(y, x) |
原点から点(x,y)への線とx軸との間の角度をラジアン単位で返す。 var number = math.Atan2(3, 2) // numberの値は0.9827937になる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.BigNumber() math.BigNumber(number) math.BigNumber(str) |
浮動小数点数または整数から新しいBigNumberオブジェクトを作成するか、文字列を数値に変換してBigNumberオブジェクトを生成する。 var myBigNum = math.BigNumber("500") myBigNum.Add(500).Mul(1000).Mul(1000).Mul(1000) >@myBigNum@ // 1000000000000 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.Ceil(num) |
数値を切り上げ、元の数より大きい最も近い整数(小数点あり)を返す。 var number = math.Ceil(4.2) // numberの値は5.0になる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.CeilToInt(num) |
数値を切り上げ、元の数より大きい最も近い整数(小数点なし)を返す。 var number = math.CeilToInt(4.2) // numberの値は5になる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.Clamp(num, min, max) |
数値を'min'から'max'の範囲内に制限する。数値がすでに範囲内にある場合、そのまま返される。 var number = 50 number = math.Clamp(number, 0, 10) // numberは10に制限される |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.Cos(num) |
指定されたラジアン角の余弦(コサイン)を返す。 var number = math.Cos(0) // numberの値は1になる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.e |
数学定数 >E = @math.e@ // 画面にeの値が表示される |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.Exp(num) |
var number = math.Exp(3) // numberの値は20.08554になる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.Floor(num) |
数値を切り下げ、元の数より小さい最も近い整数(小数点あり)を返す。 var number = math.Floor(2.7) // numberの値は2.0になる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.FloorToInt(num) |
数値を切り下げ、元の数より小さい最も近い整数(小数点なし)を返す。 var number = math.FloorToInt(2.7) // numberの値は2になる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.Lerp(a, b, t) |
時間 var number = math.Lerp(0.0, 20.0, 0.75) // numberの値は15.0になる 使用例2: var n = 0.0 ?key = Begin n = 0.0 n = math.Lerp(n, 100, 0.02) >n = @n@ // 変数nは100に向かって毎フレーム2%ずつ上昇する。キーが押されるとリセットされる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.Log(num, base) |
指定された底(base)での数値の対数を返す。 var number = math.Log(5, 2) // numberの値は2.321928になる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.Max(num1, num2) |
2つの数値のうち大きい方を返す。 var number = math.Max(3, 10) // numberは10になる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.Min(num1, num2) |
2つの数値のうち小さい方を返す。 var number = math.Min(3, 10) // numberは3になる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.pi |
数学定数π、値は約3.1415926 >PI = @math.pi@ // prints the value of π to the screen |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.Pow(num, p) |
指定された数値をべき乗で計算した結果を返す。 var number = math.Pow(3, 2) // numberの値は9 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.Round(num) |
数値を四捨五入して、元の数から最も近い整数(小数点あり)を返す。 var number = math.Round(2.7) // numberの値は3.0になる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.RoundToInt(num) |
数値を四捨五入して、元の数から最も近い整数(小数点なし)を返す。 var number = math.RoundToInt(2.7) // numberの値は3になる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.Sign(num) |
指定された数値が負の場合は-1、それ以外の場合は1を返す。 var sign = math.Sign(-21) var n = 10 * sign // nの値は-10になる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.Sin(num) |
指定されたラジアン角の正弦(サイン)を返す。 var number = math.Sin(math.pi / 2) // numberの値は1になる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.Sqrt(num) |
指定された数値の平方根を返す。 var number = math.Sqrt(9) // numberの値は3になる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.Tan(num) |
指定されたラジアン角の正接(タンジェント)を返す。 var number = math.Tan(2) // numberの値は-2.18504になる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.ToDeg(num) |
ラジアン単位の数値を度(°)に変換する。 var number = math.ToDeg(2 * math.pi) // numberの値は360になる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| math.ToRad(num) |
度数の数値をラジアンに変換する。 var number = math.ToRad(360) // numberの値は2πになる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| music(楽曲) ‾‾‾‾‾‾‾‾‾‾ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ?music |
現在再生中の曲のIDを返す。 >`0,0,再生中 = @music@ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| music.Play(str) |
指定されたサウンドIDの曲を再生する。1度に再生できる曲は1つのみ。 ?loc.begin | loc.loop music.Play(temple_0) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| music.Stop() |
再生中の曲を停止する。 ?!string.Equals(music, "") music.Stop() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| player(プレイヤー) ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| player.ShowScaredFace(num) |
プレイヤーがビッグヘッドを有効にしている場合、指定された時間の間、表情が怖がったものに変わる。 使用例: ?key = primaryBegin player.ShowScaredFace(1) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| screen(画面) ‾‾‾‾‾‾‾‾‾‾‾ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| screen.FromWorldX(int) |
ワールド座標のX軸の値を、スクリーン座標に変換する。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| screen.FromWorldZ(int) |
ワールド座標のZ軸の値を、スクリーン座標のY軸の値に変換する。 使用例: var x var y x = screen.FromWorldX(pos.x) y = screen.FromWorldZ(pos.z - pos.y) >`0,1,画面上でのプレイヤーの位置: @x@,@y@ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| screen.ToWorldX(int) |
スクリーン座標のX軸の値を、ワールド座標に変換する。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| screen.ToWorldZ(int) |
スクリーン座標のY軸の値を、ワールド座標のZ軸の値に変換する。 使用例: var x var y var z x = input.x y = input.y >`0,1,画面上でのカーソル位置: @x@,@y@ x = screen.ToWorldX(input.x) z = screen.ToWorldZ(input.y) >`0,2,ワールド上でのカーソル位置: @x@,@z@ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| screen.Next() |
スクリーンが複数あるエリアの場合、プレイヤーに対してカメラを1画面分前方に移動する。 使用例: ?key = rightBegin screen.Next() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| screen.Previous() |
スクリーンが複数あるエリアの場合、プレイヤーに対してカメラを1画面分後方に移動する。 使用例: ?key = leftBegin screen.Previous() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| screen.ResetOffset() |
screen.Next()やscreen.Previous()によって行われたカメラ位置の変更をリセットし、プレイヤーに追従する状態に戻す。 使用例: var lastScreenI = -1 ?lastScreenI ! screen.i screen.ResetOffset() lastScreenI = screen.i |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| storage(ストレージ) ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ | 永続ストレージに保存された値は、エリアを離れたりゲームを終了した際にも保持されます。これらはprimary_saveの一部ではなく、Stonescriptフォルダ内の一連の別ファイルに存在します。インポートされたスクリプトは、互いに独立してストレージにアクセスするため、異なるモジュールが同じキーを使用しても、互いのデータに影響を与えることはありません。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| storage.Delete(string) |
指定されたキーに存在する可能性のある値を削除する。 storage.Delete("highscore") |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| storage.Get(string) |
指定されたキーに保存されている永続的な値を取得する。 var value = storage.Get("highscore") ?value >ハイスコア = @value@ : >ハイスコアなし |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| storage.Get(string, value) |
指定されたキーに保存されている永続的な値を取得する。存在しない場合は、2つ目のパラメータをデフォルト値として返す。 var value = storage.Get("highscore", 0) >ハイスコア = @value@ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| storage.Has(string) |
指定されたキーが永続ストレージに存在する場合は ?storage.Has("highscore") var value = storage.Get("highscore") >High Score = @value@ : >No High Score found. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| storage.Incr(string) |
指定されたキーに保存されている値を1増やし、その新しい値を返す。 ?gameOver storage.Incr("stat_TimesPlayed") |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| storage.Keys() |
現在のコンテキストで利用可能なストレージキーを含む文字列の配列を取得する。 var a ?time % 30 = 0 a = storage.Keys() for i = 0 .. a.Count()-1 >Key @i@ = @a[i]@ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| storage.Incr(string, integer) |
指定されたキーに保存されている値を指定された値分だけ増やし、その新しい値を返す。 var amount ?foundCoins amount = rng%5 + 5 storage.Incr("coins", amount) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| storage.Set(string, value) |
指定されたキーに値を永続ストレージに保存する。 var score = 1000 storage.Set("highscore", score) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| string(文字列) ‾‾‾‾‾‾‾‾‾‾‾‾‾ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| string.Break(string, integer) |
指定された最大幅に基づいて、1つの文字列を複数の文字列に分割する。 使用例: var s = "The brown fox jumps over the lazy dog" var a = string.Break(s, 14) for i = 0 .. a.Count()-1 >`0,@i@,@a[i]@ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| string.Capitalize(str) |
文字列の先頭の文字を大文字に変換する。 使用例: var a = "foo" a = string.Capitalize(a) >@a@ (Prints "Foo") |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| string.Equals(str1, str2) |
2つの文字列を比較し、完全に一致していれば真、一致しなければ偽を返す。大文字と小文字は区別される。 使用例: var a = "foo" ?string.Equals(a, "foo") >完全一致 : >完全不一致 // この場合、文字列は一致するのでstring.Equals()はtrueを返す |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| string.Format(str1, ...) |
フォーマットテンプレートを後続の引数の値に置き換え、最終的に構成された文字列を返す。多くのフォーマットオプションに対応している。 使用例: var str = "私の名前は{0}です。{1}のパワーを持っています!" var result = string.Format( ^ str, ^ player.name, ^ totalgp ^) >@result@ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| string.IndexOf(str, criteria) |
文字列変数 使用例: var a = Hello World! var index = string.IndexOf(a, llo) // indexの値は2になる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| string.IndexOf(str, criteria, startAt) |
文字列変数 使用例: var a = Hello World! var index = string.IndexOf(a, llo, 4) // indexの値は-1となる。検索開始位置が4であるため、'llo'は見つからなかった。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| string.Join(s, []) string.Join(s, [], int) string.Join(s, [], int,int) |
文字列の配列 使用例: var a = ["Hello", "World", "!"] var b = string.Join(";", a) >`0,0,@b@ // "Hello;World;!"と表示される 使用例2: var a = ["Hello", "World", "!"] var b = string.Join(";", a, 1) >`0,0,@b@ // "World;!"と表示される 使用例3: var a = ["Hello", "World", "!"] var b = string.Join(";", a, 0, 2) >`0,0,@b@ // "Hello;World"と表示される |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| string.Size(str) |
文字列変数をパラメータとして受け取り、その文字列の長さ(文字数)を計算する。 使用例: var a = Hello World! var size = string.Size(a) >size = @size@ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| string.Split(str) string.Split(str, s…) string.Split(str, s…, bool) string.Split(str, bool) |
文字列を受け取り、区切り文字 使用例: var a = string.Split("Hello World !") for i = 0 .. a.Count()-1 >`0,@i@,[@i@] = @a[i]@ // 分割された文字列: "Hello", "World", "!" 使用例2: var a = string.Split("Hello World !", " ", "l") for i = 0 .. a.Count()-1 >`0,@i@,[@i@] = @a[i]@ // 分割された文字列: "He", " ", "o", "Wor", "d", "!" 使用例3: var a a = string.Split("Hello World !","l","r",true) for i = 0 .. a.Count()-1 >`0,@i@,[@i@] = @a[i]@ // 分割された文字列: "He", "o Wo", "d !" |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| string.Sub(str, startAt) |
文字列変数から、開始位置以降の文字列を抽出する。 使用例: var a = Hello World! var subString = string.Sub(a, 6) >substring = @subString@ // subStringは"World!"になる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| string.Sub(str, startAt, length) |
文字列変数から、開始位置以降の文字列から指定された文字数分のみを抽出する。 使用例: var a = Hello World! var subString = string.Sub(a, 6, 3) >substring = @subString@ // subStringは"Wor"になる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| string.ToLower(str) |
文字列内のすべての文字を小文字に変換する。 使用例: var a = "Foo" a = string.ToLower(a) >@a@ // 画面に"foo"が表示される |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| string.ToUpper(str) |
文字列内のすべての文字を大文字に変換する。 使用例: var a = "Foo" a = string.ToUpper(a) >@a@ // 画面に"FOO"が表示される |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| sys ‾‾‾ | (sys名前空間は現在、意図した通りに機能していません) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| sys.cacheRemoteFiles |
リモートからインポートされたファイルを、実行時にキャッシュするかどうかを示す。デフォルトは 使用例: // 上キーを押してリモートキャッシュをオン/オフにする ?key = upBegin sys.cacheRemoteFiles = !sys.cacheRemoteFiles ?sys.cacheRemoteFiles >リモートキャッシュ 有効 : >リモートキャッシュ 無効 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| sys.fileUrl |
スクリプトのインポート時に使用される現在のファイルパスを取得するためのゲッター。デフォルト値はデバイスによって異なり、PCでは 使用例: >`0,1,fileUrl = @sys.fileUrl@ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| sys.SetFileUrl(str) |
使用例: sys.SetFileUrl( ^"https://MyCoolDomain.com/scripts/") import MyCombatScript |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| sys.MindConnect() |
(実験的機能) 明瞭の石に 詳細はこちら: https://github.com/artificial-potato/SSRPGInterface | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| sys.isMobile |
ユーザーがAndroidまたはiOSを使用している場合に | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| sys.isPC |
ユーザーがWin/Mac/Linuxを使用している場合に | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| sys.os |
ユーザーのオペレーティングシステムを返す。例えば"Android"、"iOS"、"Linux"、"OSX"、"Windows"などがある。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| テキストのローカライズ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ | Stonescriptは、現時点で12言語に対応しています。いくつかの操作により、カスタムスクリプトがプレイヤーの選択した言語に適応させることができます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| te.language |
プレイヤーが設定で選択した言語のコード。 使用可能値:EN PT-BR ZH-CN ZH-TW FR DE RU ES-LA ES-EU JP KR TK 使用例: var lang = te.language >言語 = @lang@ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| te.xt(str) |
指定された英語のテキストを、プレイヤーの選択した言語に翻訳する。翻訳版が見つからない場合は、入力されたテキストがそのまま返される。また、テキスト識別子(TID)を入力として使うこともできるが、TIDの詳細なリストはマニュアルの範囲外である。 使用例: var button = ui.AddButton() button.text = te.xt(Play) // 設定で言語を変更すると、この例の動作を確認できる |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| te.GetTID(str) |
指定されたテキストのテキスト識別子(TID)を返す。入力テキストは、プレイヤーが選択した言語であることが前提である。 使用例: var tid = te.GetTID("Play") >`0,1,@tid@ // tid_button_playが画面に表示される |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| te.ToEnglish(str) |
プレイヤーが選択した言語のテキストを、元の英語のテキストに翻訳する。翻訳版が見つからない場合は、入力されたテキストがそのまま返される。 使用例: >`0,1,@te.ToEnglish("Jogar")@ // 言語設定がポルトガル語の場合は"Play"と表示され、 // そうでなければ"Jogar"と表示される。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| time(時間) ‾‾‾‾‾‾‾‾‾ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| time.FormatCasual(int) time.FormatCasual(int,bool) |
フレーム数を、"1分 23秒"のような人間が読みやすい時間表現に変換する。第2パラメータは任意であり、trueを指定すると結果の制度が最大化される。 使用例: >`0,0,現在の時間 = ^ @time.FormatCasual(totaltime, true)@ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| time.FormatDigital(int) time.FormatDigital(int,bool) |
フレーム数を、"1:23"のような人間が読みやすいデジタル時計風の時間表現に変換する。第2パラメータは任意であり、trueを指定すると結果の制度が最大化される。 使用例: >`0,0,現在の時間 = ^ @time.FormatDigital(totaltime, true)@ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| UI ‾‾ | ここは | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ui.OpenInv() |
インベントリ画面を開く。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ui.OpenMind() |
明瞭の石を開く。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ui.ShowBanner(str) ui.ShowBanner(str,str) |
最大2つのメッセージを含むアニメーションバナーを表示する。ui.ShowBanner()が呼び出されるたびにバナーのアニメーションは再起動される。 使用例: ?time = 120 ui.ShowBanner("Hello World!") |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| その他 ‾‾‾‾‾ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Type(var) |
変数の型を評価し、その型を文字列表現として返す。使用可能な型には、'string' 'int' 'bool' 'function' 'object' 'null'が含まれる。 使用例: var a = 0 ?Type(a) = int >変数'a'は整数型です。 |
·:·:· 外部スクリプトのインポート ·:·:·
スクリプトをすべて明瞭の石に記述する必要はありません。Stonescriptでは、'import'と'new'キーワードを使用して外部ファイルの読み込むことが可能です。外部スクリプトを機能させるには、セーブファイルのフォルダ内にある/Stonescriptフォルダ内に配置され、'.txt'形式で終わる必要があります。
最も基本的な例では、外部スクリプトをインポートして実行すると、それが明瞭の石に直接記述されているかのように動作します。これはスクリプトを整理する便利な方法です。
import Rocky
import Deadwood
import Caves
import Forest
スクリプトがインポートされると、独自のコンテナにコピーされ、参照として返されます。外部スクリプトで宣言された変数は分離されており、他のスクリプト内の変数とは干渉しません。次の例では、実用的な表示スクリプトを簡略化したものを提供します。
// PrintUtil.txt
func LowerLeft(x, y, color, message)
y = y + screen.h
>`@x@,@y@,@color@,@message@
func LowerRight(x, y, color, message)
x = x + screen.w
y = y + screen.h
>`@x@,@y@,@color@,@message@
// 明瞭の石のメインスクリプト
var print = import PrintUtil
disable hud
print.LowerLeft(0,-1,#ffffff,"Health: " + hp)
高度な使い方として、'new'コマンドを使用すると同じスクリプトを複数回インポートできます。これにより、コンポーネント化やオブジェクト指向の設計を取り入れることも可能です。
// Vector.txt
var x = 0
var y = 0
func init(_x, _y)
x = _x
y = _y
func subtract(otherVect)
x = x - otherVect.x
y = y - otherVect.y
// 明瞭の石のメインスクリプト
var vectFrom = new Components/Vector
var vectTo = new Components/Vector
vectFrom.init(5, 4)
vectTo.init(8, 2)
vectTo.subtract(vectFrom)
>x = @vectTo.x@, y = @vectTo.y@
外部スクリプトに'ToString()'関数を実装することで、高度な表示コマンドで直接利用できるようになります。
// Vector.txt
var x = 0
var y = 0
func init(_x, _y)
x = _x
y = _y
func ToString()
return "(" + x + ", " + y + ")"
// 明瞭の石のメインスクリプト
var v = import Components/Vector
v.init(3,5)
>Vector = @v@
外部スクリプトは、サブフォルダからでもインポートできます。
import Games/Blackjack
import Cosmetics/PetFrog
import Cosmetics/Hats
'import'と'new'は似ていますが、2つの重要な違いがあります。'import'では、毎回同じオブジェクトが返されます。同じスクリプトを複数の場所からインポートすると、すべて同じオブジェクトを使用することになります。一方で、'new'でインポートされたスクリプトは一意のコピーになりますが、そのスクリプトは毎フレームではなく、1回だけ実行されます。
トップへ戻る
·:·:· アスキーアート ·:·:·
Stonescriptでは、アスキーアートを自作してスクリプト内に組み込み、高度な表示で画面に描画することができます。これにはいくつかの方法があり、一部の文字は特別な動作を持っています。
# - 空白。透明。描画しない。
\n - 改行。描画を次の行に続ける。注意:これはコストのかかる演算子であり、大規模な線画には使用しないでください。代わりに、ascii/asciiend で線画を囲んでください。
メソッド 1 - 高度な表示
次の例では、画面の左上に緑の円を描画しています。
>`1,0,#green,ascii
#.-.
( )
#`-´
asciiend
メソッド 2 - 変数
次の例では、不気味な魚の絵を変数に格納し、画面左上に赤い色で描画しています。
var fishSprite
fishSprite = ascii
###(°_##
#_/_ o\#
#´ `'"#
asciiend
>`0,3,#red,@fishSprite@
トップへ戻る
·:·:· ループ ·:·:·
ループは、特定のコードを繰り返し実行するために使用されます。ループを作成するには、'for'を使用します。基本形式は次の通りです。
for v = a..b
変数'v'は値'a'からループを開始し、'b'に達するまで値を増やし、ループが終了します。
for i = 1..5
>`0,@i@,i = @i@
ループ変数'v'は'for'の前に宣言してはならず、ループのスコープに含まれています。ただし、開始値'a'と終了値'b'はループの前に宣言できます。
var min = 1
var max = 4
var sum
sum = 0
for j = min..max
sum = sum + j
>sum = @sum@
ループは、逆方向に進むことも、負の数を使用することもできます。
var g
g = ""
for k = 5..-2
g = g + k
>g = @g@
ループは互いに入れ子にすることも、複雑なアルゴリズムを形成するために数式とインライン化することもできます。
for x = 1..9
for y = x/2 .. x/2 + 6
>`@x@,@y@,*
ループを早期に抜け出すには、ループ変数を範囲外にするように変更します。
var n
n = ""
for i = 1..5
?i = 3
i = -1
n = n + i
>n = @n@
同様に、break コマンドを使用してループから抜け出すこともできます。
for i = 1..5
?i = 3
break
ループはcontinue もサポートしています。呼び出されると、continue 以下の命令は無視され、ループが続行します。
var n
n = ""
for i = 1..5
?i = 3
continue
n = n + i
>n = @n@
次の形式を使用して、配列の要素をループすることができます。
var a = [1, 2, 3]
var n
n = ""
for value : a
n = n + value
>n = @n@
トップへ戻る
·:·:· 配列 ·:·:·
配列は、特別な変数です。値やオブジェクトを1つの変数に代入し、順次に整理する手段を提供します。
以下は、配列を初期化して使用するさまざまな方法を紹介します。
var emptyCollection = []
var magicNumbers = [10, 3, 0, 15, -7]
var someStrings = ["apple", "banana", "cherry"]
var sameButMultiLine = [
"apple",
"banana",
"cherry",
]
var redeclaredEachFrame
redeclaredEachFrame = [] // PCに適していない
var clearedEachFrame = []
clearedEachFrame.Clear() // CPUとメモリにやさしい
var clearedEachLoop = []
?loc.begin | loc.loop
clearedEachLoop.Clear()
var multiDimensional = [[], [], []]
var objectCollection = [
new Components/Float,
new Components/Float,
new Components/Vector,
]
var animationFrames = [ascii
───┼
O/
/|
/ \
asciiend
^,ascii
---.
O \
/|\┼───
/ \
asciiend
^]
配列のループ処理
var myArray = ["Apple", "Banana", "Cherry"]
var count
var value
count = myArray.Count()
?count > 0
for i = 0 .. count - 1
value = myArray[i]
>`0,@i@,@value@
// 上記の例では、フルーツの名前を画面の左側に表示します
多次元配列のアクセス
var a = [[1,2], [3,4]]
var value
value = a[1][0]
>(1, 0)の位置で値@value@を見つけました
トップへ戻る
| 操作 ---- |
説明 ---- |
| a = [] | 配列を新たに作成し、初期化する。詳細は以下を参照。 |
| a[integer] | 指定した位置の値を読み取る。 var myArray = [10, 3] ?myArray[1] = 3 >はい、[1]の位置の値は3です |
| a.Add(value) | 新しい値/オブジェクトを配列の末尾に追加する。 var myArray = [] myArray.Add(10) |
| a.Clear() | 配列からすべての要素を削除し、空にする。配列を[]で再宣言するよりも効率的。 var myArray = [10, 3] myArray.Clear() |
| a.Contains(value) | 指定された値が配列内に存在するかどうかを判断する。見つかれば真を、見つからなければ偽を返す。 var myArray = [10, 3] ?myArray.Contains(3) >存在します |
| a.Count() | 配列の要素の数を返す。 var myArray = ["apple","banana"] var size = myArray.Count() >配列のサイズ = @size@ |
| a.Emplace(integer, value) | 指定された位置の値を新しい値に置き換える。 var myArray = [10, 3] myArray.Emplace(0, 4) var value = myArray[0] >[0]位置の値は@value@になりました |
| a.IndexOf(value) | 配列内で指定された値を検索する。値が最初に出現した位置を示す整数を返す。値が見つからない場合は-1を返す。 var myArray = [10, 3] var index = myArray.IndexOf(3) >@index@番目の位置に存在します |
| a.Insert(integer, value) | 新しい値/オブジェクトを配列の指定された位置に追加する。右側の要素は次の位置に移動します。 var myArray = [10, 3] myArray.Insert(1, "apple") // 配列は[10, "apple", 3]になります |
| a.RemoveAt(integer) | 指定された位置の配列の要素を削除する。削除された値を返す。 右側の要素は前の位置に移動する。 var myArray = [1, 2, 3] myArray.RemoveAt(1) // 配列は[1, 3]になります |
| a.Sort() | 配列の要素を昇順に整理する。配列に異なる型のオブジェクトが含まれていてもソートされるが、期待される結果が定義されず、要素が型ごとにグループ化される保証はされない。 var myArray = ["Cherry", 2, "Apple", 1, true, false, "Banana", 3] var value myArray.Sort() for i = 0 .. myArray.Count() - 1 value = myArray[i] >`0,@i@,@value@ |
·:·:· 入力のカスタマイズ ·:·:·
Stonescriptは、ゲームの状態?keyを使用してプレイヤーの入力を読み取ることができます。これはAIの異なるモードなど、高度な動作を制御するのに使用できますが、入力をカスタマイズするとStone Storyの上のレイヤーにまったく新しい体験を作成することができます。
次の例では、@記号を古き良きローグライクゲームの主人公のように画面上を移動できます。キーコード(leftBeginなど)は、キーの押し始めを意味します。
var x = 0
var y = 0
?key = leftBegin
x--
?x < 0
x = 0
?key = rightBegin
x++
?key = upBegin
y--
?y < 0
y = 0
?key = downBegin
y++
>`@x@,@y@,#ffffff,@
利用可能なキーコード表
トップへ戻る
| ホールド ------- |
キーを押す --------- |
キーを離す --------- |
デフォルトキー ------------ |
| left | leftBegin | leftEnd | A または ← |
| right | rightBegin | rightEnd | D または → |
| up | upBegin | upEnd | W または ↑ |
| down | downBegin | downEnd | S または ↓ |
| primary | primaryBegin | primaryEnd | 左クリックまたはEnter |
| back | backBegin | backEnd | X |
| ability1 | ability1Begin | ability1End | Shift |
| ability2 | ability2Begin | ability2End | Ctrl |
| bumpL | bumpLBegin | bumpLEnd | Z |
| bumpR | bumpRBegin | bumpREnd | C |
·:·:· ユーザーインターフェース ·:·:·
ボタン、テキスト、アニメーションなどなど、Stonescriptは複雑なレイアウトと高性能なユーザーインターフェイスを構築するシステムを提供します。デフォルトでは、システムの基盤に見えない"root(ルート)"パネルが存在します。このルートパネルに、他のパネルやUI要素を追加することでツリー構造を形成します。すべての要素は、追加された順序ですべての要素が1度に描画されます。
root
│
├─ Panel
│ ├─ Text
│ ├─ ASCII-art
│ └─ Button
│
├─ Panel
│ ├─ Panel
| | └─ Text
...
トップへ戻る
| UI ‾‾ | |
| ui.root |
UIツリー全体を構築する基盤となるUIオブジェクト。 使用例: disable hud ui.root.visible = true |
| ui.AddAnim(string) |
ルートパネルにアニメーション(Anim)オブジェクトを追加する。 使用例: ?loc.begin ui.AddAnim(ascii \o) %% (o/ asciiend) |
| ui.AddButton() |
ルートパネルにボタン(Button)オブジェクトを追加する。 使用例: func OnPressed() > Hello World! ?loc.begin var button = ui.AddButton() button.y = 1 button.text = Press me button.SetPressed(OnPressed) |
| ui.AddPanel() |
ルートパネルにパネル(Panel)オブジェクトを追加する。パネルはほかの要素を格納するための重要なコンテナ型オブジェクト。 使用例: ?loc.begin var p = ui.AddPanel() p.color = #red |
| ui.AddStyle() |
四角形の要素(パネルやボタンなど)の描画に使用できる新しいスタイルを追加する。新しいスタイルID番号を返す。同じスタイルが複数回追加されないように保護されており、その場合は何も変更されず、同じIDが返される。異なるスクリプトが ui.AddStyle() を呼び出す可能性があるため、スクリプトにスタイル番号をハードコーディングする代わりに、IDを変数として保存することを推奨する。 使用例: var customStyle = ui.AddStyle(" ^123 ^456 ^789") ?loc.begin var p = ui.AddPanel() p.style = customStyle |
| ui.AddText() ui.AddText(string) |
ルートパネルにテキスト(Text)オブジェクトを追加する。 使用例: ?loc.begin var t = ui.AddText() t.text = "Hello World!" |
| ui.Clear() |
メインコンテナからすべてのUI要素を削除する。 使用例: ?key = backBegin ui.Clear() |
Component ‾‾‾‾‾‾‾‾‾ | コンポーネントはすべてのUIタイプの基本型です。他の要素(パネル、テキスト、ボタン、アニメーション)はすべて以下のプロパティを持っています。 |
| component.x |
コンポーネントのX座標。親要素の位置を基準とした相対位置。 |
| component.y |
コンポーネントのY座標。親要素の位置を基準とした相対位置。 |
| component.w |
コンポーネントの幅。デフォルト値はオブジェクトの種類によって異なる。 button.w = string.Size(button.text) + 4 // ボタンを現在のテキストに合わせた幅に設定 (両側に+2) |
| component.h |
コンポーネントの高さ。デフォルト値は5。 panel.h = panel.parent.h // パネルの高さを親パネルの高さに設定 |
| component.absoluteX component.absoluteY 読み取り専用 |
スクリーン全体を基準にしたコンポーネントの相対位置。 var t ?loc.begin var p = ui.AddPanel() p.anchor = bottom_right p.dock = bottom_right t = ui.AddText("Foo") p.Add(t) `0,1,相対位置 = @t.x@,@t.y@ >`0,2,絶対位置 = @t.absoluteX@,@t.absoluteY@ |
| component.anchor |
コンポーネントの内部の配置基準を表す自動レイアウトプロパティ。これは、自身に対してどのように配置するかをUIシステムに指示する。デフォルト値は"center_center"。使用可能値:'top_left' 'top_center' 'top_right' 'center_left' 'center_center' 'center_right' 'bottom_left' 'bottom_center' 'bottom_right' |
| component.dock |
?loc.begin var p = ui.AddPanel() p.anchor = top_right p.dock = top_right p.w = 20 p.h = 9 var t = ui.AddText("HelloWorld!") t.anchor = left_bottom t.dock = bottom_left t.x = 2 t.h = t.lines.Count() + 1 p.Add(t) |
| component.ax |
|
| component.ay |
|
| component.dx |
|
| component.dy |
var p ?loc.begin p = ui.AddPanel() p.ax = right p.ay = top p.dx = right p.dy = top |
| component.parent 読み取り専用 |
コンポーネントの親パネルの参照。コンポーネントがパネルに追加されなかった場合、 |
| component.visible bool/string |
コンポーネントの表示状態。デフォルト値は"inherit"。使用可能値:'true' 'false' 'inherit' 'true'に設定すると、親の状態に関係なく表示する。'false'に設定すると、親の状態に関係なく非表示になる。'inherit'に設定すると、親の表示状態と連動する。 |
| component.Recycle() |
親パネルからコンポーネントを削除する。ui.Add_()の呼び出しで再利用される。バグを避けるために、リサイクルされた要素への変数参照はすべてnullにするか、再割り当てする必要がある。 |
Panel > Component ‾‾‾‾‾ | パネルは四角形のコンポーネントで、他のコンポーネントを格納するコンテナとして機能します。複数のパネルを親子関係で連鎖することで、ツリー構造を形成します。 |
| panel.children |
|
| panel.clip |
パネルの範囲外で、子コンポーネントの描画を制限するかどうかを示す。真の場合、子コンポーネントが範囲外にはみ出した部分は描画されない。 var p ?loc.begin p = ui.AddPanel() p.w = 4 p.h = 3 var t = ui.AddText("The quick brown fox jumps ^ over the lazy dog.") p.Add(t) ?time%30 < 15 p.clip = true : p.clip = false |
| panel.color |
パネルの枠の色を設定する。色はRGB16進数で指定する。 |
| panel.style |
パネルの現在のスタイルID。デフォルト値は1で、-8から8までの値を指定することができる。スタイルは |
| panel.Add(Component) panel.Add(Component, int) |
パネルにコンポーネントを追加する。追加されたコンポーネントはパネルの子になり、パネルはその親になる。コンポーネントは追加された順に描画する。任意の整数パラメータを指定することで、特定の順序に挿入することもできる。指定されていない場合、パネルの最後の子要素として追加される。すでにパネルの子であるコンポーネントの描画順序を変更するためにも使用できる。 |
| panel.Clear() |
パネルに追加されたすべてのUI要素を削除する。削除された要素はUIシステムに戻され、ui.Add_()の呼び出しで再利用される。バグを避けるために、削除された要素への変数参照はすべてnullにするか、再割り当てする必要がある。 |
| panel.Remove(Component) panel.Remove(int) |
パネルから指定したコンポーネントを削除する。また、インデックス番号を指定することで削除することもできる。削除された要素はUIシステムに戻され、ui.Add_()の呼び出しで再利用される。バグを避けるために、削除された要素への変数参照はすべてnullにするか、再割り当てする必要がある。 |
Text > Component ‾‾‾‾ | 複数行のテキストボックスを作成します。カラーメタデータをサポートしています。 |
| text.align |
ボックス内のテキストの配置/整列を設定する。デフォルト値は"left"。使用可能値:'left' 'center' 'right' |
| text.color |
テキストの色を設定する。色はRGB16進数で指定する。 |
| text.lines |
テキストボックスの内容が行ごとに分解された配列。カラーメタデータは除外される。 |
| text.text |
テキストボックスの全内容。一部のテキストをメタデータ[color=#rrggbb][/color]で色付けすることができる。 ?loc.begin var t = ui.AddText() t.text = "Hello [color=#red]World[/color]!" |
Button > Component ‾‾‾‾‾‾ | |
| button.text |
ボタン内に表示されるテキストを設定する。 button.text = player.name // プレイヤー名をボタンに表示! |
| button.tcolor |
ボタン内のテキストの色を設定する。色はRGB16進数で指定する。 button.tcolor = #ff0000 // ボタンテキストを赤に設定 |
| button.bcolor |
ボタンの枠の色を設定する。色はRGB16進数で指定する。 >@button.bcolor@ button.bcolor = #880000 // ボタンの枠の現在の色を表示し、暗めの赤に設定する |
| button.hcolor |
ボタンが押された時のハイライト色を設定する。色はRGB16進数で指定する ?loc.begin var b = ui.AddButton() b.hcolor = #yellow |
| button.sound |
ボタンが押された時に再生される効果音を設定する。デフォルトは"confirm"。 button.sound = buy // ボタンが押された時に購入時の効果音が再生されるように変更する |
| button.style |
ボタンの現在のスタイルID。デフォルト値は1で、-8から8までの値を指定することができる。スタイルは |
| button.SetPressed(f) |
ボタンが押されたときに実行される関数を指定する。関数は任意の数のパラメータを持つことができる(パラメータがない場合も含む)。関数が呼ばれると、最初のパラメータはボタンへの参照になる。 var button1 var button2 func OnPressed(btn) ?btn = button1 >Button1が押されました : >Button2が押されました ?loc.begin button1 = ui.AddButton() button1.y = 1 button1.SetPressed(OnPressed) button2 = ui.AddButton() button2.y = 6 button2.SetPressed(OnPressed) |
| button.SetDown(f) |
ボタンを押し始めたとき(最初に接触した瞬間)に実行される関数を指定する。 |
| button.SetUp(f) |
ボタンを押し終わったとき(最後の接触が終わった瞬間)に実行される関数を指定する。 func OnDown() > ボタンが押された! func OnUp() > ボタンが離れた! ?loc.begin var button = ui.AddButton() button.y = 1 button.text = ボタンを押してくれ button.SetDown(OnDown) button.SetUp(OnUp) |
Anim > Component ‾‾‾‾ | アスキーアートのスプライトシートアニメーションをUIに追加します。 |
| anim.color |
アニメーションの色を設定する。色はRGB16進数で指定する。 |
| anim.duration |
アニメーションの長さをフレーム単位で指定する。 |
| anim.flipX |
真の場合、アニメーションが水平方向に反転する。 |
| anim.flipY |
真の場合、アニメーションが垂直方向に反転する。 |
| anim.frame |
現在表示されているアニメーションフレーム。指定したフレームを表示することもできる。 |
| anim.gamePause |
真の場合、ゲームが一時停止したときにアニメーションも自動的に停止し、ゲームを再開するとアニメーションも再生する。 |
| anim.loop |
真の場合、アニメーションの再生時間が終了した直後に最初から再スタートする。 |
| anim.playing 読み取り専用 |
アニメーションが再生中であれば真となる。 |
| anim.paused 読み取り専用 |
アニメーションが再生中で、 |
| anim.pivotX anim.pivotY |
アスキーアートの描画位置の中心点を微調整できる、追加のオフセット。 |
| anim.playOnStart |
真の場合、アニメーションはできるだけ早く再生を開始する。 |
| anim.AddLayer(string) |
現在のアニメーションの上に、新しいアスキーアートのレイヤーを追加する。アニメーションが再生する(または 使用例: var a = ui.AddAnim(asciiArtA) var layer2 = a.AddLayer(asciiArtB) layer2.color = #bbbbbb |
| anim.Load(string) |
新しいアスキーアートのスプライトシートを割り当てる。 |
| anim.Pause() |
再生中のアニメーションを一時停止する。 |
| anim.Play() |
アニメーションの再生を開始する。一時停止の場合は再生を再開する。 var dance ?loc.begin dance = ui.AddAnim(ascii (O/ %% \O) asciiend) dance.duration = 20 dance.loop = true dance.Play() |
| anim.Stop() |
アニメーションの再生を停止し、最初のフレームに戻す。 |
Canvas > Component ‾‾‾‾‾‾ | 任意の文字や記号と、色を描画するために最適化されたコンテナ。 |
| canvas.blend |
キャンバスのブレンドモード。前景と背景の要素の合成方法を設定する。デフォルトは"opaque"。使用可能値:'Opaque'(不透明) 'Multiply'(乗算) 'Divide'(除算) 'Add'(加算) 'Subtract'(減算) var filter1 = ui.AddCanvas() var filter2 = ui.AddCanvas() filter1.w = screen.w filter1.h = screen.h filter2.w = screen.w filter2.h = screen.h filter1.blend = multiply filter1.SetFG(#aa5555) filter1.SetBG(#dddddd) filter2.blend = add filter2.SetFG(#aa6600) filter2.SetBG(#662200) |
| canvas.Get(int,int) |
キャンバス上の指定した位置(x,y)にある文字を返す。 |
| canvas.Set(str) |
キャンバス全体を指定した文字で塗りつぶす。 ?loc.begin var canvas = ui.AddCanvas() canvas.Set("X") |
| canvas.Set(int,int,str) |
キャンバス上の指定した位置(x,y)を指定された文字に変更する。 ?loc.begin var canvas = ui.AddCanvas() canvas.Set(0, 0, "A") |
| canvas.Set(int,int, fg,str) canvas.Set(int,int, fg,bg,str) |
指定した位置のキャンバスや文字を変更し、同時に前景色と背景色を設定するためのオーバーロード。 ?loc.begin var canvas = ui.AddCanvas() for x = 0..canvas.w for y = 0..canvas.h var fg = color.Random() var bg = color.Random() canvas.Set(x, y, fg, bg, ▄) |
| canvas.SetFG(color) |
キャンバス全体の前景色を設定する。 ?loc.begin var canvas = ui.AddCanvas() canvas.Set("R") canvas.SetFG(#red) |
| canvas.SetFG(int,int, color) |
キャンバス上の指定した位置(x,y)の前景色を設定する。 ?loc.begin var canvas = ui.AddCanvas() canvas.Set("X") canvas.SetFG(2, 1, #ff00ff) |
| canvas.SetBG(color) |
キャンバス全体の背景色を設定する。 ?loc.begin var canvas = ui.AddCanvas() canvas.Set("g") canvas.SetBG(#00aa00) |
| canvas.SetBG(int,int, color) |
キャンバス上の指定した位置(x,y)の背景を設定する。 ?loc.begin var canvas = ui.AddCanvas() canvas.Set("X") canvas.SetBG(2, 1, #yellow) |
·:·:· ヒント ·:·:·
スペース(インデント)は重要です。'?'比較の結果として実行される処理を定義する際、インデントがスコープ(範囲)を決定します。
実行中のスクリプトは、キーボードの'M'キーを押すと編集することができます。
明瞭の石の右上には電源ボタンがあり、スクリプトのオンオフを切り替えることができます。
複数のequipコマンドが呼び出された場合、最後に記述されたものが実行されます。
スクリプトは1秒あたり30回(1フレームごとに1回)実行されます。
異なるスクリプトを試す際は、メモ帳などの外部テキストエディタにコピーすることをおすすめします。
Ctrl+A(全選択)、Ctrl+C(コピー)、Ctrl+V(ペースト)といった一般的なショートカットが役に立ちます。
ゲーム内でTabキーを押し続けると、ゲームの状態に関する多くの情報が表示され、直近のStonescriptのエラーの一覧も確認できます。
表示コマンドでテキストを複数行に分割するには、テキスト内で'\n'を使用します。
トップへ戻る
·:·:· デフォルトスクリプト ·:·:·
import UI/MindstoneButton
?hp < 7
activate potion
?loc = caves
equipL sword
equipR shield
?foe = boss
equip crossbow
トップへ戻る
·:·:· おまけ - アイテム能力のクールダウンID ·:·:·
トップへ戻る
| アイテム ------- |
クールダウンID ------------ |
|
| エーテルのお守り | "talisman_aether" | |
| バルディッシュ | "bardiche" | |
| ツッコミシールド | "bash" | |
| 堕神の剣 | "blade" | |
| 燃えカス | "cinderwisp" | |
| カルト団員のマスク | "mask" | |
| ダッシュの盾 | "dash" | |
| 火のお守り | "talisman_fire" | |
| 手斧 | "hatchet" | |
| ヘビーハンマー | "heavy_hammer" | |
| 明瞭の石 | "mind" | |
| 六尺棒 | "quarterstaff" | |
| ガイコツの腕 | "skeleton_arm" | |
| 虚無織り | "voidweaver" | |
| 災いの杖 | "wand_aether" | |
| 爆発の杖 | "wand_fire" | |
| 氷結の杖 | "wand_ice" | |
| 疫病の杖 | "wand_poison" | |
| リセットの杖 | "wand_vigor" | |
| 重力の杖 | "wand_stone" | |
| 強欲の杖 | "staff_aether" | |
| 地獄の杖 | "staff_fire" | |
| とこしえの杖 | "staff_ice" | |
| 狂戦士の杖 | "staff_poison" | |
| 防護の杖 | "staff_vigor" | |
| 曲芸の杖 | "staff_stone" | |
| シャベル | "shovel" |
·:·:· おまけ - 効果音 ·:·:·
Stonescriptは、カスタムロジックに基づいて、ゲーム内の効果音を再生することができます。
次の例では、プレイヤーが体力を失うたびに'unequip'という効果音が再生されます。
var lasthp = hp
?hp < lasthp
play unequip
lasthp = hp
ほとんどの効果音には、ランダムまたは連続的に再生するバリエーションがあります。同じ効果音が、1フレーム内に再生された場合は無視されます。1秒間に5回以上再生された場合は効果音の再生が制限されます。
Stone Story RPGで利用できる効果音のフルリストは次の通りです。
acronian_cultist_power_up
air_hiss
ant_attack
ant_death
ant_hill
ant_walk
auggie_voice
bang_go_forward
bardiche_cast
bat_attack
bat_attack_small
bat_death
bat_death_small
bat_wing
bat_wing_small
bearer3_talk
bearer4_talk
bearer4_talk_evolving
bearer5_talk
bearer_attack
bearer_attack_hit
bearer_death
bearer_evolving
bearer_scream
bearer_stealing
bearer_super_attack
bell_ringer_attack
bell_ringer_attack_hit
blade_drag
blade_glow
blade_pallas_attack
blade_raise
bomb_cart_explosion
bomb_cart_fuse
bomb_cart_move
boo_voice
booklet_close
booklet_open
booklet_turn_page
bronze_gate_close
bronze_gate_locked
bronze_gate_open
bronze_guardian_attack1
bronze_guardian_attack2
bronze_guardian_attack3
bronze_guardian_attack4
bronze_guardian_death
bronze_guardian_ears_ring
bronze_guardian_fuse
bronze_guardian_helmet
bronze_guardian_power_up
bronze_guardian_pulling_hammer
bronze_guardian_removing_hammer
bronze_guardian_steps
bronze_guardian_turbine
buy
click
confirm
controller_death
controller_whip_attack
controller_whip_hit
cross_deadwood_bump
cross_deadwood_row
cross_deadwood_splash
crossbow_cast
crossbow_hit
cult_guard_attack
cult_guard_attack_hit
cult_marksman_attack
cult_marksman_attack_hit
cult_sorcerer_attack
cult_sorcerer_attack_hit
cultist_death
devolved_talk
dog_bark
dominotaur_awake
dominotaur_death
dominotaur_whip_attack
dominotaur_whip_hit
dysangelos_guidance
dysangelos_guidance_1
dysangelos_guidance_2
dysangelos_guidance_3
dysangelos_intro_talk
elementalist_aether_attack
elementalist_aether_attack_hit
elementalist_aether_blink
elementalist_death
elementalist_evolving
elementalist_fire_attack
elementalist_fire_attack_hit
elementalist_fire_blink
elementalist_ice_attack
elementalist_ice_attack_hit
elementalist_ice_blink
elementalist_poison_attack
elementalist_poison_attack_hit
elementalist_poison_blink
elementalist_vigor_attack
elementalist_vigor_attack_hit
elementalist_vigor_blink
epilogue_devolving
epilogue_talk
epliogue_player_evolves
equip
error
falling_stonefolk
fire_beast_1
fire_beast_2
fire_elemental_attack
fire_elemental_attack_hit
fire_elemental_awake
fire_elemental_death
fire_geyser
fire_orbs
first_controller
fissure_break_apart
fissure_unmake
flying_serpent_loop
frog
ghost_attack
ghost_attack_small
ghost_death
ghost_death_small
ghost_loop
ghost_loop_small
ghost_tomb_death
giant_ice_elemental_attack
grappling_cast
grappling_hit
grappling_idle
hammer_cast
hammer_hit
hans_scream
hans_talk_intro
hans_talk_reward
hatchet_cast
hatchet_hit
haunted_gate_key_bounce_1
haunted_gate_key_bounce_2
haunted_gate_key_bounce_3
haunted_gate_key_into_gate
haunted_gate_npc_voice
haunted_gate_opening
haunted_gate_point_lost
haunted_gate_shuffle
haunted_gate_shuffle_fast
haunted_gate_torch_off
haunted_gate_torch_on
haunted_gate_try_to_open
ice_elemental_attack
ice_elemental_attack_hit
ice_elemental_awake
ice_elemental_death
ice_pillar
insta_kill
key_drop
ki_eater_attack
ki_eater_attack_hit
ki_eater_awake
ki_eater_death
ki_gobbler_attack
ki_gobbler_attack_hit
ki_gobbler_awake
ki_gobbler_death
ki_slerper_attack
ki_slerper_attack_hit
ki_slerper_awake
ki_slerper_death
ki_slerper_walk
level_up
life_gain
logo_full
logo_short
lost_item_boost
mask_summon_1
mask_summon_2
metal_drop
mindstone_found
mindstone_off
mindstone_on
mine_walker_attack_a
mine_walker_attack_b
mine_walker_attack_hit
mine_walker_awake
mine_walker_death
mine_walker_helmet_break
mine_walker_step
morel_punch
mosquito_attack
mosquito_death
mosquito_loop
mushroom_boss_awake
mushroom_boss_death
mushroom_boss_fat_slam
mushroom_boss_punch
mushroom_boss_shoot
mushroom_boss_split
nagaraja_attack_eat
nagaraja_attack_lick
nagaraja_attack_swallow
nagaraja_awake_roar
nagaraja_awake_swallow
nagaraja_awake_tongue_1
nagaraja_awake_tongue_2
nagaraja_choir
nagaraja_dead
nagaraja_poison_attack
nagaraja_poison_attack_hit
nagaraja_tongue_damaged
nagaraja_tongue_lift
nagaraja_tongue_smell
nagaraja_tongue_wrap
nagaraja_wail
nagaraja_wail_brick
open_note
paint_splat
pallas_voice
perfected_attack
perfected_attack_hit
perfected_death
perfected_defense
perfected_energy_ball
perfected_energy_ball_hit
perfected_fly_end
perfected_fly_loop
perfected_fly_start
perfected_summon
perfected_talk
pickup_bronze
pickup_stone
pickup_success
pickup_tar
pickup_wood
player_death
player_hit
player_kick
player_punch
poison_adept_attack
poison_adept_attack_hit
poison_powerup
potion_berserk
potion_cleansing
potion_defensive
potion_experience
potion_healing
potion_invisibility
potion_lightning
potion_lucky
potion_strength
potion_vampiric
progress_1
progress_2
progress_3
progress_4
progress_5
progress_6
progress_7
progress_8
progress_9
prompt_choice
quarterstaff_cast
quest_stone_jump
quest_stone_unlock
ranting_tree_halt
ranting_tree_talk_again
ranting_tree_talk_avenge
ranting_tree_talk_extra
ranting_tree_talk_get_out
ranting_tree_talk_halt
ranting_tree_talk_how_dare
ranting_tree_talk_impressive
ranting_tree_talk_very_well
scarab_awake
scarab_bite
scarab_death
scarab_horn
scarab_wings
scorpion_death
scotty_a_pleasure
scotty_a_worthy_opponent
scotty_deuced
scotty_failte_back
scotty_getting_good
scotty_grr
scotty_guess_which
scotty_hell_be_back
scotty_intro
scotty_lets_harden
scotty_make_ye_guess
scotty_noo_jist
scotty_out_of_treasure
scotty_perhaps_the_rules
scotty_pick_some_treasure
scotty_shall_we_up
scotty_there_he_is
scotty_we_have_wee_use
scotty_well_met
scotty_well_then
scotty_wizard
scotty_wrong_choice
scout_arrives
scout_dialog
scout_focus
scout_leaves
scout_wing
serpent_attack
serpent_death
serpent_handler_release
serpent_hiss
serpent_slither
shield_dash
shop_door_enter
shop_door_open
shovel_cast
sightstone_cast
skeletimmy_attack
skeletimmy_death
skeleton_boss_arm1
skeleton_boss_arm2
skeleton_boss_arm_reconnect
skeleton_boss_arm_woosh
skeleton_boss_attack
skeleton_boss_awake
skeleton_boss_bone_bounce
skeleton_boss_death
skeleton_boss_hand_slam
skeleton_boss_idle
skeleton_boss_legs_die
skeleton_boss_summon_minions
skeletony_attack
skeletony_awake_a
skeletony_awake_b
skeletony_death
skeletony_walk
slave_npc
slave_outro_chatter
slave_outro_transition
slave_outro_voice
smithy_hammer
smithy_hammer_fail
snail_attack
snail_attack_small
snail_death
snail_death_small
snail_walk
soul_stone
soul_stone_drop
spider_attack
spider_boss_attack
spider_boss_awake
spider_boss_death
spider_death
spider_death_small
spider_eggs_spawn
spider_walk
stone_throw_cast
stone_throw_hit
sword_cast
sword_hit
talisman_reveal
temple_npc_chant
temple_npc_clear_throat
temple_npc_talk
torch_cast
torch_hit
torch_idle
treasure_close
treasure_drop
treasure_drop_common
treasure_drop_epic
treasure_drop_giant
treasure_drop_humble
treasure_drop_rare
treasure_item_blue
treasure_item_cyan
treasure_item_green
treasure_item_lost
treasure_item_pop
treasure_item_rainbow
treasure_item_red
treasure_item_show
treasure_item_yellow
treasure_open
tree_boss_attack
tree_boss_awake
tree_boss_death
tree_boss_idle
tree_boss_spike
triskelion_fuse
ui_starfirst
ui_starnew
ui_starold1
ui_starold2
ui_starold3
ui_starold4
unequip
uulaa_voice
wand_aether_cast
wand_aether_hit
wand_air_cast
wand_air_hit
wand_cast
wand_drop
wand_fire_cast
wand_fire_hit
wand_hit
wand_ice_cast
wand_ice_hit
wand_poison_cast
wand_poison_hit
wand_vigor_cast
wand_vigor_hit
waterfall_hook_hit
waterfall_land
waterfall_rope_grab
waterfall_rope_swing
waterfall_splash
worm_rider_hop
xp_tick
yeti_attack
yeti_attack_flick
yeti_attack_hit
yeti_awake_blow
yeti_awake_explosion
yeti_awake_inhale
yeti_awake_lick
yeti_blow
yeti_blow_ice_wall
yeti_death
yeti_inhale
yeti_inhale_lick
トップへ戻る
·:·:· おまけ - 楽曲 ·:·:·
Stonescriptは、カスタムロジックに基づいて、ゲーム内楽曲を再生することができます。利用可能な楽曲はプラットフォームによって異なります。
?loc.begin | loc.loop
music.Play(temple_0)
Stone Story RPGで利用できる楽曲のフルリストは次の通りです。
Boiling Mine
bronze_guardian_3
bronze_guardian_4
bronze_guardian_5
bronze_guardian_cyan
bronze_mine_0
bronze_mine_1
bronze_mine_2
bronze_mine_3
bronze_mine_4
bronze_mine_5
bronze_mine_cyan
slave_outro_climb
slave_outro_loop
Caves of Fear
caustic_caves
spider_boss
Deadwood
cross_deadwood_river
cross_deadwood_wind
deadwood_0
deadwood_1
deadwood_2
deadwood_3
deadwood_4
deadwood_5
deadwood_cyan
tree_boss
waterfall_descent
poena
Haunted Halls
skeleton_boss
undead_crypt_0
undead_crypt_1
undead_crypt_2
undead_crypt_3
undead_crypt_4
undead_crypt_5
undead_crypt_cyan
undead_crypt_intro
Icy Ridge
bridge_broken
bridge_crossing
icy_ridge_0
icy_ridge_1
icy_ridge_2
icy_ridge_3
icy_ridge_4
icy_ridge_5
icy_ridge_cyan
yeti
Mushroom Forest
fire_loop
fungus_forest_0
fungus_forest_1
fungus_forest_2
fungus_forest_3
fungus_forest_4
fungus_forest_5
fungus_forest_cyan
mushroom_boss
mushroom_boss_cyan
shop
Rocky Plateau
rocky_plateau_0
rocky_plateau_1
rocky_plateau_2
rocky_plateau_3
rocky_plateau_4
rocky_plateau_5
rocky_plateau_epilogue
rocky_plateau_fight
rocky_plateau_talk
Temple
nagaraja
temple_0
temple_1
temple_2
temple_3
temple_4
temple_5
temple_cyan
Events
event_fall
event_hamartia
event_spring
event_stonejam
event_summer
event_winter
Other
credits
main_menu
bone_factory
osteophone
uulaa
トップへ戻る
·:·:· おまけ - 環境音 ·:·:·
Stonescriptは、カスタムロジックに基づいて、バッググラウンドの環境音を何層にも再生することができます。
?loc.begin
ambient.Stop()
ambient.Add(ambient_crypt)
Stone Story RPGで利用できる環境音のフルリストは次の通りです。
ambient_mines
ambient_caves
ambient_bronze_gate
ambient_deadwood
ambient_mushroom
ambient_bridge
ambient_icy
ambient_cave
ambient_rocky
ambient_temple
ambient_crypt
ambient_haunted_gate
ambient_pallas
waterfall_a
waterfall_b
waterfall_c
^トップへ戻る
·:·:· おまけ - インポート可能なすべてのスクリプト ·:·:·
import Chisel
import CozyCave
import Fishing
import TrainAdventure
import Cosmetics/Acrocorn
import Cosmetics/AcronianGuardian
import Cosmetics/AuroraBorealis
import Cosmetics/BadApple
import Cosmetics/Beach
import Cosmetics/Bolesh
import Cosmetics/CaveParty
import Cosmetics/ChristmasTree
import Cosmetics/ChrWings
import Cosmetics/ConfettiHead
import Cosmetics/CultGroup
import Cosmetics/DragonWorm
import Cosmetics/Drill
import Cosmetics/Explosion
import Cosmetics/FireFly
import Cosmetics/Fireworks
import Cosmetics/FrogInvasion
import Cosmetics/Giftbag
import Cosmetics/Infected
import Cosmetics/Knight
import Cosmetics/Mech
import Cosmetics/MineManager
import Cosmetics/MushroomAnt
import Cosmetics/MushroomHead
import Cosmetics/Party
import Cosmetics/PartyNoisemaker
import Cosmetics/Portobello
import Cosmetics/PumpkinCarving
import Cosmetics/Pumpkins
import Cosmetics/quips
import Cosmetics/SantaFlyingSleigh
import Cosmetics/SillyGoose
import Cosmetics/SleepyStonehead
import Cosmetics/SpookyScarySkeletons
import Cosmetics/SpringBloom
import Cosmetics/StoneClause
import Cosmetics/StoneheadFall
import Cosmetics/StoneHeadless
import Cosmetics/StonePhone
import Cosmetics/SuperStoneHead
import Cosmetics/TheSun
import Cosmetics/Turret
import Cosmetics/TwinSuns
import Cosmetics/WavyScarf
import Cosmetics/WitchBroom
import Foes/FlowerFoes
import Foes/PallasCrown
import Foes/PumpkinWraith
import Foes/SurferGuardian
import Games/2048
import Games/Arena
import Games/Asteroids
import Games/Blackjack
import Games/BurgerRush
import Games/cColorTetris
import Games/cGomoku
import Games/cTetris
import Games/DigitsPuzzle
import Games/FeedABat
import Games/FlyupText
import Games/FrogBog
import Games/FrogJump
import Games/GetawayDriver
import Games/GrowPlants
import Games/KillerRPG
import Games/Metallophone
import Games/Minesweeper
import Games/PlayingCards
import Games/Simon
import Games/Snake
import Games/SpearThrowing
import Games/SSRPGIdle
import Games/StoneasaurGame
import Games/StoneBoxman
import Games/StoneDungeon
import Games/Stonemon
import Games/Sudoku
import Games/SudokuEnchant
import Games/SwordGame
import Games/TowerDefense
import Games/WhackaMole
import Hats/CatHat
import Hats/ChefHat
import Hats/DefectFaceplate
import Hats/DiscoVisor
import Hats/Enchanthead
import Hats/Headphones
import Hats/Helmet
import Hats/HrimnirHair
import Hats/IroncladMask
import Hats/JesterHat
import Hats/LanternTalisman
import Hats/MushroomHat
import Hats/PirateHat
import Hats/ReindeerHead
import Hats/SantaHat
import Hats/ShuffleHat
import Hats/SilentSkull
import Hats/Skully
import Hats/StarCloak
import Hats/Treeman
import Hats/WitchHat
import Pets/Bear
import Pets/BlackHole
import Pets/Boo
import Pets/Bunny
import Pets/CatBalloon
import Pets/CavePets
import Pets/Chick
import Pets/Crab
import Pets/Cranius
import Pets/Dog
import Pets/Dracula
import Pets/Dragon
import Pets/Fly
import Pets/FoesNoMore
import Pets/Frog
import Pets/JackOLantern
import Pets/LegsTurkey
import Pets/Mushroom
import Pets/Panda
import Pets/Pomeranian
import Pets/RoyaltyDeliverer
import Pets/Skully
import Pets/Snail
import Pets/SnowBunny
import Pets/Snowman
import Pets/Spider
import Pets/SpringBuddy
import Pets/Stonehead
import Pets/Sun
import Pets/TarPusher
import Pets/Wisp
import UI/A2S
import UI/BetterInfo2
import UI/BetterText
import UI/BorderClock
import UI/BossBar
import UI/BossHealthBar
import UI/BragMeter
import UI/Calculator
import UI/CDTime
import UI/ClickAbilities
import UI/damageFlash
import UI/DragController
import UI/FaceHUD
import UI/FoeStateTracker
import UI/FreeChestTracker
import UI/InfoFloat
import UI/LiveSplit
import UI/MindstoneButton
import UI/MiniMap
import UI/MusicBox
import UI/OkamiroyUtils
import UI/PefWindow
import UI/PlayerStateTracker
import UI/RecordPlayer
import UI/ScrollText
import UI/StealMeter
import UI/ToolBelt
import UI/VisualStatusEffects
import UI/ChiselFiles/Additional Documentation
import UI/ChiselFiles/SetLayer
import UI/FancyUI/colour
import UI/FancyUI/fancyui
import UI/FancyUI/print
import Weapons/ArmorGenerator
import Weapons/EmbueDaggers
import Weapons/LanternTalisman
import Weapons/MajPack
import Weapons/MajVines
import Weapons/PsyCrusher
import Weapons/RecoilKick
import Weapons/RootBats
import Weapons/Scythe
import Weapons/ShockwaveWhip
import Weapons/SpellBook
^トップへ戻る
Copyright Martian Rex, Inc. 2020
