Elite Script ターゲット
ターゲットは Elite Script の中心的な部分であり、アクションとゾーンが機能するために必要です。
ターゲットタイプ
ターゲットタイプは、スクリプトによってどのエンティティまたはロケーションがターゲットされるかを設定します。
| ターゲットタイプ | 詳細 | 特記事項 |
|---|---|---|
NEARBY_PLAYERS | 範囲内のプレイヤー | rangeが必要 |
NEARBY_MOBS | 範囲内のMob | rangeが必要 |
NEARBY_ELITES | 範囲内のエリート | rangeが必要 |
WORLD_PLAYERS | ワールド内のプレイヤー | ❌ |
ALL_PLAYERS | サーバー内のプレイヤー | ❌ |
DIRECT_TARGET | イベント内のプレイヤー | 互換性のあるイベントが必要 |
SELF | パワーを使用しているエリート | ❌ |
SELF_SPAWN | ボスのスポーン位置をターゲット | ❌ |
LOCATION | 特定のロケーション | locationが必要 |
LOCATIONS | 複数の特定のロケーション | locationsが必要 |
ZONE_FULL | ゾーン内のターゲット | Zoneが必要 |
ZONE_BORDER | ゾーンの境界をターゲット | Zoneが必要 |
ACTION_TARGET | アクションからターゲットを継承します。 | アクションの条件と相対ベクトルでのみ使用可能です! |
LANDING_LOCATION | ブロックが落下した位置をターゲットします。 | SPAWN_FALLING_BLOCKアクションでのみ使用可能です! |
INHERIT_SCRIPT_TARGET | このスクリプトを実行するスクリプトからターゲットを継承します | スクリプトが別のスクリプトから呼び出された場合のみ実行可能です! |
INHERIT_SCRIPT_ZONE_FULL | このスクリプトを実行するスクリプトから継承したゾーン内のターゲット | Zone このスクリプトを呼び出すスクリプト内で必要です! |
INHERIT_SCRIPT_ZONE_BORDER | このスクリプトを実行するスクリプトから継承したゾーンの境界をターゲット | Zone このスクリプトを呼び出すスクリプト内で必要です! |
例
eliteScript:
Example:
Events:
- EliteMobDeathEvent
Actions:
- action: MESSAGE
Target:
targetType: ALL_PLAYERS
sValue: "&2Hello World!"
これはターゲットにメッセージを送信します。ターゲットがALL_PLAYERSに設定されているため、オンラインのすべてのプレイヤーにそのメッセージを送信します。
共有属性
以下の設定は、すべてのターゲットに適用できます。
| 値 | 詳細 | 特記事項 |
|---|---|---|
offset | ターゲットロケーションのオフセットを設定します。 | エンティティをターゲットできません! |
例
eliteScript:
Example:
Events:
- EliteMobDeathEvent
Actions
- action: STRIKE_LIGHTNING
Target:
targetType: SELF
offset: "0,2,0"
これはボスの2ブロック上に落雷を発生させます。STRIKE_LIGHTNINGはロケーションを使用し、エンティティには影響しないため、オフセットを設定できることに注意してください。
メッセージはプレイヤーに送信されるため、メッセージを送信するためにオフセットを設定することはできません。ただし、エンティティをターゲットできるゾーンにオフセットを設定することは可能です。
range
NEARBY_PLAYERSターゲットタイプで近くのプレイヤーをスキャンする範囲を設定します。
| 値 | 詳細 | デフォルト |
|---|---|---|
range | プレイヤーターゲットをスキャンする範囲をブロック単位で設定します。 | 20.0 |
例
eliteScript:
Example:
Events:
- EliteMobDeathEvent
Actions:
- action: MESSAGE
Target:
targetType: NEARBY_PLAYERS
range: 25.0
sValue: "&2Targeted players within 25 blocks!"
これは、ボスが死亡したときに、ボスから25ブロック以内のプレイヤーにメッセージを送信します。
location
LOCATIONターゲットタイプのロケーションを設定します。
| 値 | 詳細 | デフォルト |
|---|---|---|
location | ターゲットされるワールドロケーションを設定します。 | none |
これはロケーションにlocation: worldname,x,y,z,pitch,yawの形式を使用します。
same_as_bossはワールド名の有効なプレースホルダーであり、same_as_boss,100,64,100,0,0はボスがいるワールドと同じワールドをターゲットする有効なロケーションになります。
例
eliteScript:
Example:
Events:
- EliteMobDeathEvent
Actions
- action: STRIKE_LIGHTNING
Target:
targetType: LOCATION
location: "myWorld,100,64,200,0,0"
これは、myWorldというワールドのx=100、y=64、z=200の位置に落雷を発生させます。
locations
LOCATIONSターゲットタイプのロケーションを設定します。
| 値 | 詳細 | デフォルト |
|---|---|---|
locations | ターゲットされるワールドロケーションのリストを設定します。 | none |
これはロケーションにworldname,x,y,z,pitch,yawの形式を使用します。
same_as_bossはワールド名の有効なプレースホルダーであり、same_as_boss,100,64,100,0,0はボスがいるワールドと同じワールドをターゲットする有効なロケーションになります。
例
eliteScript:
Example:
Events:
- EliteMobDeathEvent
Actions
- action: STRIKE_LIGHTNING
Target:
targetType: LOCATIONS
locations:
- "myWorld,100,64,200,0,0"
- "same_as_boss,-100,12,130,0,0"
これは、myWorldというワールドのx=100、y=64、z=200の位置に落雷を発生させ、ボスと同じワールドのx=-100、y=12、z=130の位置に別の落雷を発生させます。
ゾーンのターゲット
ゾーンには複数のターゲットがあり、Elite Scriptingを最大限に活用するためには、その仕組みを理解することが重要です。
ゾーンは2つの部分で機能します:
パート1 - ゾーンの位置を設定する
ゾーンはどこに配置されるべきかを知る必要があり、そのためには落雷などの他のロケーションベースのエフェクトと同じようにターゲットシステムを使用します。
例
eliteScript:
VisualCylinder:
Events:
- EliteMobDamagedEvent
Zone:
radius: 10.0
shape: CYLINDER
height: 1
filter: PLAYER
borderRadius: 5.0
Target:
targetType: SELF
これはボスの周りに円柱形のゾーンを生成します。この例ではまだアクションが設定されていないことに注意してください。これについては以下で説明します。
STATIC_RAYのような一部のゾーンには、2つ以上のターゲットがあります。これは、光線が線であり、線は2つの点によって定義されるためです。これはゾーンページでより詳しく説明されていますが、基本的にはすべて同じように機能します。
パート2 - ゾーン内部をターゲットする
ゾーンがどこにあるかがわかったので、アクションがそのターゲットが定義したゾーンであることを知る必要があります。そのためにtargetType: ZONE_FULLとtargetType:ZONE_BORDERがあります。
例
eliteScript:
VisualCylinder:
Events:
- EliteMobDamagedEvent
Zone:
radius: 10.0
shape: CYLINDER
height: 1
filter: PLAYER
borderRadius: 5.0
Target:
targetType: SELF
Actions:
- action: SPAWN_PARTICLE
times: 12
repeatEvery: 5
particles:
- particle: SMOKE_NORMAL
Target:
targetType: ZONE_FULL
パート1と同じゾーンを使用して、アクションを追加しました。このアクションのターゲットはZONE_FULLです。つまり、ゾーン全体の内部にパーティクルを生成します。
ZONE_BORDERはすべてのゾーンで使用できるわけではないことに注意してください。詳細については、スクリプトゾーンページを参照してください。
ゾーントラッキング
ゾーンがターゲットと一緒に移動するかどうかを設定します。たとえば、targetType: SELFの場合、ボスが移動するときにゾーンが移動するかどうかを設定します。
| 値 | 詳細 | デフォルト |
|---|---|---|
track | ゾーンがターゲットと一緒に移動するかどうかを設定します。 | true |
アニメーション可能なゾーンはトラッキングできないことに注意してください。詳細はこちら。
例
eliteScript:
VisualCylinder:
Events:
- EliteMobDamagedEvent
Zone:
radius: 10.0
shape: CYLINDER
height: 1
filter: PLAYER
borderRadius: 5.0
Target:
targetType: SELF
Actions:
- action: SPAWN_PARTICLE
times: 12
repeatEvery: 5
particles:
- particle: SMOKE_NORMAL
Target:
targetType: ZONE_FULL
track: false
パート1とパート2と同じ例を使用して、ゾーンがトラッキングしないように設定されています。これは、ゾーンがボスのロケーションに生成されますが、ボスが移動し続けても、ゾーンは最初に生成された場所に留まることを意味します。
最後に、ゾーンがトラッキングしないように設定されている場合、スクリプトが呼び出された瞬間のロケーションを記録することに注意してください。
例として、スクリプトに警告フェーズとダメージフェーズを設定したい場合、すべてのアクションを最初に実行し、後で実行したいダメージに関連するすべてのアクションに待機時間を個別に設定する必要があります。技術的な理由により、RUN_SCRIPTを介して呼び出すスクリプト全体を遅延させるべきではありません。
以下は、Frost Palace Sanctumから取得した警告フェーズとダメージフェーズを持つパワーの正しい例です。
例
eliteScript:
VisualCylinder:
Events:
- EliteMobDamagedEvent
Zone:
radius: 10.0
shape: CYLINDER
height: 1
filter: PLAYER
borderRadius: 5.0
Target:
targetType: SELF
Actions:
- action: SPAWN_PARTICLE
times: 12
repeatEvery: 5
particles:
- particle: SMOKE_NORMAL
Target:
targetType: ZONE_FULL
track: false
- action: SPAWN_PARTICLE
wait: 60
times: 13
repeatEvery: 3
particles:
- particle: FLAME
amount: 0
x: 0
y: 1
z: 0
speed: 0.2
- particle: FLAME
amount: 0
x: 0.5
y: 1
z: 0.5
speed: 0.2
- particle: FLAME
amount: 0
x: 0
y: 1
z: 0.5
speed: 0.2
- particle: FLAME
amount: 0
x: 0.5
y: 1
z: 0
speed: 0.2
- particle: FLAME
amount: 0
x: -0.5
y: 1
z: -0.5
speed: 0.2
- particle: FLAME
amount: 0
x: -0.5
y: 1
z: 0
speed: 0.2
- particle: FLAME
amount: 0
x: 0
y: 1
z: -0.5
speed: 0.2
- particle: FLAME
amount: 0
x: -0.5
y: 1
z: 0.5
speed: 0.2
- particle: FLAME
amount: 0
x: 0.5
y: 1
z: -0.5
speed: 0.2
Target:
targetType: ZONE_FULL
track: false
- action: RUN_SCRIPT
scripts:
- DamageCylinder
- action: PLAY_ANIMATION
sValue: fire_zone
Target:
targetType: SELF
- action: SET_MOB_AI
duration: 100
bValue: false
Target:
targetType: SELF
Cooldowns:
local: 1200
global: 300
DamageCylinder:
Zone:
radius: 10.0
shape: CYLINDER
height: 10
filter: PLAYER
borderRadius: 5.0
Target:
targetType: SELF
offset: 0,-1,0
Actions:
- action: DAMAGE
wait: 60
repeatEvery: 10
times: 4
multiplier: 4
Target:
targetType: ZONE_FULL
track: false
- action: SET_ON_FIRE
wait: 60
duration: 80
Target:
targetType: ZONE_FULL
track: false
このスクリプトは多くのことを行いますが、VisualCylinderとDamageCylinderの2つの明確なスクリプトに分かれています。
VisualCylinderが最初に実行され、RUN_SCRIPTアクションがあり、VisualCylinderが実行されているのと同時にDamageCylinderも即座に実行されます。
ただし、DamageCylinder内のすべてのアクションは60ティック、つまり3秒間待機するように設定されています。
これは、ボスが3秒間の警告フェーズを持ち、その後ダメージフェーズを行うことを意味し、ゾーンがトラッキングしないように設定されていても、警告ゾーンとダメージゾーンは同じロケーションにあります。
ゾーン固有のターゲットプロパティ
ゾーンには以下の固有のプロパティがあります:
coverage
アクションに実際に使用されるゾーンの割合を設定します。ロケーションターゲットでのみ機能します(プレイヤーや他のエンティティをターゲットする場合は機能しません)。
| 値 | 詳細 | デフォルト |
|---|---|---|
coverage | カバーされるゾーンの割合を設定します。~を使用してこの値をランダム化できます。例:1.0~0.3。 | 1.0 |
例
eliteScript:
VisualCylinder:
Events:
- EliteMobDamagedEvent
Zone:
radius: 10.0
shape: CYLINDER
height: 1
filter: PLAYER
borderRadius: 5.0
Target:
targetType: SELF
Actions:
- action: SPAWN_PARTICLE
times: 12
repeatEvery: 5
particles:
- particle: SMOKE_NORMAL
Target:
targetType: ZONE_FULL
track: false
coverage: 0.5
この場合、ゾーンの50%のみがパーティクルでカバーされます。
ターゲットの継承
スクリプトが別のスクリプトを実行する(またはそのスクリプトを「呼び出す」)場合、最初のスクリプトから2番目のスクリプトにゾーンとターゲット情報を渡すことができます。
使用例
- 改善されたスクリプトランナー
スクリプトランナーは、他の多くのスクリプトを実行することのみを機能とするスクリプトです。特に正確なタイミングを必要とする複数のスクリプトを処理する場合、スクリプトの管理を容易にするために使用されます。
ターゲット継承を使用すると、複数のスクリプトが同じゾーンまたはターゲットを使用でき、数百行の繰り返しスクリプトを削減できる可能性があります。
- マトリョーシカターゲットフィルタリング / ロシアの入れ子人形ターゲットフィルタリング
フィルタリング条件はアクション内のターゲットに適用できます。異なるフィルターを持つ別のスクリプトにターゲットを渡すことで、条件を重ね、ますます具体的な基準に基づいて同じターゲットプールに異なるエフェクトを適用することが可能になります。
例として、プレイヤーを探すゾーンを作成し、ゾーン内のすべてのプレイヤーが特定のタグを持っているかどうかをチェックするアクションを作成することができます。有効なターゲットは別のスクリプトに渡され、そこで別のアクションがランダムチェック条件を実行し、その確率に基づいてエフェクトを適用できます。その後、ターゲットはさらに別のスクリプトに渡され、そこで別の条件がターゲットがまだ生きているかどうかをチェックし、死んでいる場合は特別な動作を行うことができます。
これらはもちろん例です。これは非常に柔軟なシステムです。
- 複雑なゾーン
最後に、必要に応じて条件を使用してターゲットを重ねて複雑なゾーンを作成することが可能であり、スクリプト条件とスクリプトアクションからリストされたスクリプトの1つだけを実行する機能を使用して、半ランダム化されたゾーンを作成することさえ可能です。
注意: このセクションでは、**「親スクリプト」は「継承スクリプト」**を実行するスクリプトを指し、継承スクリプトは継承されたターゲットを使用するスクリプトです。
ターゲット継承を使用する場合、正しいデータが渡されていることを確認するために、_親スクリプト_を注意深く確認することが重要です。
INHERIT_SCRIPT_TARGET
INHERIT_SCRIPT_TARGETを使用する場合、_親スクリプト_からのターゲットが継承スクリプトに渡されます。これにはいくつかの注意点があります:
-
エンティティターゲットを渡す場合、エンティティのロケーションが使用されるため、ロケーションを必要とするアクション(パーティクルの生成など)を実行することが可能です。もちろん、エンティティを必要とするアクションを使用することも可能です。
-
ロケーションターゲットを渡す場合、ロケーションのみを使用することが可能です。ロケーションからエンティティを取得する唯一の方法は、そのロケーションにゾーンを作成してエンティティを探すことです。 したがって、ロケーションを渡してからエンティティを取得することは不可能ではありませんが、少し余分な作業が必要になります。
ゾーンの継承
INHERIT_SCRIPT_ZONE_FULLまたはINHERIT_SCRIPT_ZONE_BORDERを使用する場合、_親スクリプト_がゾーンを定義していることが必須であり、そうでなければ_継承スクリプト_は正しく実行できません。
また、ゾーンはオプションでトラッキングできます。これもゾーンとともに渡されます。
-
トラッキングされていないゾーンは、常に_継承スクリプト_によって定義された場所にゾーンを作成します。つまり、ゾーン設定は_継承スクリプト_のアクションによって使用され、アクションが実行されるたびに新しいゾーンが作成され、それらのゾーンのロケーションはアクションによって定義されます。
-
トラッキングされたゾーンは、_親スクリプト_が
ZONE_FULLまたはZONE_BORDERをターゲットに設定されている場合、すべての_継承スクリプト_に同じ正確なゾーンロケーションを渡すことができます。これは、すべてのスクリプトが同じロケーションで動作していることを意味します。