nbt付きの矢のダメージ無効化

on damage of a player:
if attacker is an arrow:
if nbt compound of attacker has tag "Nodamage:test":
cancel event
on damage of a player:
if attacker is an arrow:
if nbt compound of attacker has tag "Nodamage:test":
cancel event
実行時てみても普通にダメージを受けます。なぜでしょうか。 skript/addon最新バージョン server: 1.17.1
45 Replies
mirageeeeeeeeeeeeeeeeeeeeeeeeeee
こっち使ってみてください https://skripthub.net/docs/?id=1057
Skript Hub - Documentation
On Projectile Hit (Event) - Skript
Called when a projectile hits an entity or a block. Use the damage event with a check for a projectile to be able to use the entity that got hit in the case when the projectile hit a living entity. A damage event will even be fired if the damage is 0, e.g. when throwing snowballs at non-nether mobs.
mirageeeeeeeeeeeeeeeeeeeeeeeeeee
attackerをprojectileに
Deeela
Deeela11mo ago
了解です
on projectile hit:
if event-projectile is arrow:
if nbt compound of event-projectile has tag "Nodamage:test":
delete event-projectile
on projectile hit:
if event-projectile is arrow:
if nbt compound of event-projectile has tag "Nodamage:test":
delete event-projectile
このコードで試してみたのですが、ダメージを当たり前かのように受けてしまいました。cancel eventでも一緒でした
Tsukineko(月雲)
cancel the eventでhitをなかったことにしてみては?
Deeela
Deeela11mo ago
試してみます cancel eventと同じで喰らいました...
Tsukineko(月雲)
えー… on damageのほうで制御するのが速そう
mirageeeeeeeeeeeeeeeeeeeeeeeeeee
on damageでどうやってarrowをentityとして取得するよ 普通に上のコードは条件通ってないんじゃないのか
Tsukineko(月雲)
event-projectileあるくね これだめなん?
Tsukineko(月雲)
Deeela
Deeela11mo ago
on damage of a player:
if event-damagecause is an arrow:
if nbt compound of event-damagecause has tag "Nodamage:test":
cancel event
on damage of a player:
if event-damagecause is an arrow:
if nbt compound of event-damagecause has tag "Nodamage:test":
cancel event
ダメ喰らいますね...
Melonium
Melonium11mo ago
on damage of a player:
if event-projectile is an arrow:
if nbt compound of event-projectile has tag "Nodamage:test":
cancel event
on damage of a player:
if event-projectile is an arrow:
if nbt compound of event-projectile has tag "Nodamage:test":
cancel event
でどうでしょう
Deeela
Deeela11mo ago
喰らいました... もしかして打ち出してる矢に問題があるんでしょうか?
on right click:
if event-item's name is "&cSnaip":
spawn an arrow at player's head with nbt from "{life:1170,pickup:0d,damage:0.1d,PierceLevel:2d,Nodamage:test}"
push last spawned entity in direction of player at speed 4
on right click:
if event-item's name is "&cSnaip":
spawn an arrow at player's head with nbt from "{life:1170,pickup:0d,damage:0.1d,PierceLevel:2d,Nodamage:test}"
push last spawned entity in direction of player at speed 4
mirageeeeeeeeeeeeeeeeeeeeeeeeeee
これ確認されました?
Tsukineko(月雲)
まずNBTの設定をどこでやってるかが問題な希ガス それこそNBTが正常についてないせいでMirage氏の言う通り条件分岐動いてないんじゃないかね BroadcastでもSendでもいいからはさんで見てほしい
Deeela
Deeela11mo ago
if nbt compound of event-projectile has tag "Nodamage:test": ここで通ってないみたいですね
Tsukineko(月雲)
うーん それどうやってNBTつけてます?
Deeela
Deeela11mo ago
spawn an arrow at player's head with nbt from "{life:1170,pickup:0d,damage:0.1d,PierceLevel:2d,Nodamage:test}"
Tsukineko(月雲)
正味もうちょっと制御しやすいNBT的なのあるんですけど そっちでどうですか ちょっと構文持ってきます
on shoot:
if お好み条件文:
set {_metadeta} to 0
set metadata value "NAME" of projectile to {_metadeta}
on EVENT:
if metadata value "NAME" of projectile is 0:
お好み処理
on shoot:
if お好み条件文:
set {_metadeta} to 0
set metadata value "NAME" of projectile to {_metadeta}
on EVENT:
if metadata value "NAME" of projectile is 0:
お好み処理
metadata value "NAME" of entity ですね
Deeela
Deeela11mo ago
ありがとうございます。試してみます 色々試したのですがon shoot ifのところで何を書けば特定の矢のダメージだけを無効化出来るのかわからなくて止まってます。何かありますか...?
mirageeeeeeeeeeeeeeeeeeeeeeeeeee
その「特定」を書くんですよ 例えばop持ちが発射した矢のダメージを消したいなら
if shooter is op:
if shooter is op:
どういう矢のダメージを無効化したいのかが質問から読み取れなかったため、上のような曖昧な表現にしてあるんです この質問ではnbtが矢に付いていますが、元々どういった矢にnbtを付けていたかをそのまま書くだけでいいです
Deeela
Deeela11mo ago
ここで書いたように、プレイヤーがショットしてるわけじゃなく、矢をスポーンさせて、その矢をpushしてます。 なのでif shooter is opと書いても実行されません。shooterでもなんでもないので...。 なぜこのような動作をしているかというと矢のダメージを設定するためです。
Laminas
Laminas11mo ago
これ使って
on right click:
if event-item's name is "&cSnaip":
spawn an arrow at player's head with nbt from "{life:1170,pickup:0d,damage:0.1d,PierceLevel:2d}"
push last spawned entity in direction of player at speed 4
set metadata value "nodamage" of projectile to 1

on damage:
if metadata value "nodamage" of event-projectile = 1:
cancel event
on right click:
if event-item's name is "&cSnaip":
spawn an arrow at player's head with nbt from "{life:1170,pickup:0d,damage:0.1d,PierceLevel:2d}"
push last spawned entity in direction of player at speed 4
set metadata value "nodamage" of projectile to 1

on damage:
if metadata value "nodamage" of event-projectile = 1:
cancel event
みたいなのになる...はず
Deeela
Deeela11mo ago
喰らいましたね...
mirageeeeeeeeeeeeeeeeeeeeeeeeeee
on shootイベント内でmetadataをsetしましょう
Tsukineko(月雲)
まずmetadetaセットする部分が
set metadata value "nodamage" of projectile to 1
じゃなくて
set metadata value "nodamage" of last spawn arrow to true
とかだと思う あと俺が出した構文使えば
with nbt from "{life:1170,pickup:0d,damage:0.1d,PierceLevel:2d}"
も全部不要になるはずなんすけど… うーんこれ俺が全部書いちゃったら勉強にならない?
Laminas
Laminas11mo ago
last spawned arrowにしたと思ってたらしてなかったわ😭
Deeela
Deeela11mo ago
書いてくれたのを参考に勉強するので勉強にならないわけでは...(めっちゃ書いてほしい)
Tsukineko(月雲)
あるある うち1.12.2で 一応多少確認しながら書くけどわんちゃんverで死ぬ それで良い?
Deeela
Deeela11mo ago
大丈夫です。本当にありがとうございます
Tsukineko(月雲)
貫通したほうがいい? それともヒットしたら矢は消滅? 何に使うかで俺も書き方合わせるよ
Deeela
Deeela11mo ago
貫通するかしないかも設定できるんですね。なら貫通するほか#付き、貫通しないのは#なしで書けますか...?
Tsukineko(月雲)
両方書けばokってこと? ええで ちょい待ち、ちゃんと動くかやってから出すわ @dera2000 ごめん忘れてた 鯖paper? paperじゃなかったら貫通厳しい💦 一応貫通なし
on shoot:
projectile is an arrow
set metadata value "flag.nodamage" of projectile to true
on damage:
event-projectile is set
metadata value "flag.nodamage" of event-projectile is true
cancel event
on shoot:
projectile is an arrow
set metadata value "flag.nodamage" of projectile to true
on damage:
event-projectile is set
metadata value "flag.nodamage" of event-projectile is true
cancel event
Deeela
Deeela11mo ago
paperです! 本当にありがとうございます。 試してみます
Tsukineko(月雲)
あ、paperま? なら貫通できるかも
Tsukineko(月雲)
Skript Hub - Documentation
On Projectile Collide (Event) - Skript-Paper
Called when an projectile collides with an entity (This event is called before entity damage event, and cancelling it will allow the projectile to continue flying)
Deeela
Deeela11mo ago
snaipっていう名前のついた武器で撃った矢のみダメージを無効化するってのは厳しいんですかね? このskriptで試してみたのですが、スケルトンとかのモブが撃った矢もダメージ無効化されちゃってるので...
Tsukineko(月雲)
そっすね、これ基盤だけなんで そこから、条件分岐で適応したい矢を選んでいくわけです それでここに戻ります 今回はどういう運用を想定してるんですか? ezですよ 例えば、矢の射出もskで行きたい感じですか?
Deeela
Deeela11mo ago
PvPをオフにしてても下のskriptで作られてる武器だとプレイヤーにダメージが通ってしまうのでそれをなんとかしたい感じです
on right click:
if held item's name is "&9snaip":
spawn an arrow at player's head with nbt from "{life:1170,pickup:0d,damage:4d,PierceLevel:2d}"
push last spawned entity in direction of player at speed 4
on right click:
if held item's name is "&9snaip":
spawn an arrow at player's head with nbt from "{life:1170,pickup:0d,damage:4d,PierceLevel:2d}"
push last spawned entity in direction of player at speed 4
Tsukineko(月雲)
on right click:
if event-item's name is "&cSnaip":
spawn an arrow at player's head with nbt from "{life:1170,pickup:0d,damage:0.1d,PierceLevel:2d}"
push last spawned entity in direction of player at speed 4
set metadata value "flag.nodamage" of last spawned entity to true
on damage:
event-projectile is set
metadata value "flag.nodamage" of event-projectile is true
cancel event
on right click:
if event-item's name is "&cSnaip":
spawn an arrow at player's head with nbt from "{life:1170,pickup:0d,damage:0.1d,PierceLevel:2d}"
push last spawned entity in direction of player at speed 4
set metadata value "flag.nodamage" of last spawned entity to true
on damage:
event-projectile is set
metadata value "flag.nodamage" of event-projectile is true
cancel event
こうかな ごめん今ちょっと書き換えた
Deeela
Deeela11mo ago
あ、エラー出ちゃいました
No description
Tsukineko(月雲)
ごめん誤字www スペースあいてなかったwww
Deeela
Deeela11mo ago
あ、ホントだw 出来ました!!本当にありがとうございます! 本当に感謝です...!
Tsukineko(月雲)
0w0)b
Want results from more Discord servers?
Add your server
More Posts
チェストを使ったショップを作りたい``` on right click on emerald block: set {_chest} to block below clicked block if {_chest} iチャットで装飾コードを使えなくしたいskriptのon shatで通常チャットを変えてるのですがそれをすると装飾コードが使えるようになり&kでチャットをすると文字化けして統合版でプレイしてる人が落ちたりします なので装飾コードを打てなく参加した時のゲームモード変更```on join: set join message to "&7[&9&lSV&7] &e&l%player%&7さんが&a&lログイン&7しました。" teleport theアマスタを触った時のイベント```on armor stand interact: if player is not op: send "you are not op" cancel evサーバーが落ちないようにプレイヤーに乗れるようにする```skript on right click: loop all players: if loop-player's vehicle is event-entity: 負荷がすくないランダムスポーンシステムの作成かつて `blocks within locA and locB`から毎tickランダムでブロックを取得し、そこにモブをスポーンできる(十分スペースがある、playerと近すぎない等々)場合spawnタブリストからプレイヤーを非表示にSkript 2.6.3でこれを行う方法はありますか???プレイヤーごとに役職を与えたい今僕はRPGサーバーを作っていて、RPGには欠かせない役職(戦士、魔法使いみたいな)を作りたいです。 具体的にどういう風な構想してるかというと、 村に必ずあるエンチャントテーブルを右クリック→GUIがリスト変数からの削除座標が複数入ってるリスト変数から特定の座標だけを消す方法が知りたいです。Mapの中心を設定プレイヤーが手持ちにマップを持っていた時に常にマップを更新してプレイヤーの位置がマップの中央に来るようにしたい マップの更新をする方法を教えてほしいです。