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に
𝓓𝓮𝓮𝓵𝓪
了解です
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でも一緒でした
月猫ch
月猫ch16mo ago
cancel the eventでhitをなかったことにしてみては?
𝓓𝓮𝓮𝓵𝓪
試してみます cancel eventと同じで喰らいました...
月猫ch
月猫ch16mo ago
えー… on damageのほうで制御するのが速そう
mirageeeeeeeeeeeeeeeeeeeeeeeeeee
on damageでどうやってarrowをentityとして取得するよ 普通に上のコードは条件通ってないんじゃないのか
月猫ch
月猫ch16mo ago
No description
月猫ch
月猫ch16mo ago
event-projectileあるくね これだめなん?
月猫ch
月猫ch16mo 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
Melonium16mo 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
でどうでしょう
𝓓𝓮𝓮𝓵𝓪
喰らいました... もしかして打ち出してる矢に問題があるんでしょうか?
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
これ確認されました?
月猫ch
月猫ch16mo ago
まずNBTの設定をどこでやってるかが問題な希ガス それこそNBTが正常についてないせいでMirage氏の言う通り条件分岐動いてないんじゃないかね BroadcastでもSendでもいいからはさんで見てほしい
𝓓𝓮𝓮𝓵𝓪
if nbt compound of event-projectile has tag "Nodamage:test": ここで通ってないみたいですね
月猫ch
月猫ch16mo ago
うーん それどうやってNBTつけてます?
𝓓𝓮𝓮𝓵𝓪
spawn an arrow at player's head with nbt from "{life:1170,pickup:0d,damage:0.1d,PierceLevel:2d,Nodamage:test}"
月猫ch
月猫ch16mo ago
正味もうちょっと制御しやすい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 ですね
𝓓𝓮𝓮𝓵𝓪
ありがとうございます。試してみます 色々試したのですがon shoot ifのところで何を書けば特定の矢のダメージだけを無効化出来るのかわからなくて止まってます。何かありますか...?
mirageeeeeeeeeeeeeeeeeeeeeeeeeee
その「特定」を書くんですよ 例えばop持ちが発射した矢のダメージを消したいなら
if shooter is op:
if shooter is op:
どういう矢のダメージを無効化したいのかが質問から読み取れなかったため、上のような曖昧な表現にしてあるんです この質問ではnbtが矢に付いていますが、元々どういった矢にnbtを付けていたかをそのまま書くだけでいいです
𝓓𝓮𝓮𝓵𝓪
ここで書いたように、プレイヤーがショットしてるわけじゃなく、矢をスポーンさせて、その矢をpushしてます。 なのでif shooter is opと書いても実行されません。shooterでもなんでもないので...。 なぜこのような動作をしているかというと矢のダメージを設定するためです。
Laminas
Laminas16mo 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
みたいなのになる...はず
𝓓𝓮𝓮𝓵𝓪
喰らいましたね...
mirageeeeeeeeeeeeeeeeeeeeeeeeeee
on shootイベント内でmetadataをsetしましょう
月猫ch
月猫ch16mo ago
まず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
Laminas16mo ago
last spawned arrowにしたと思ってたらしてなかったわ😭
𝓓𝓮𝓮𝓵𝓪
書いてくれたのを参考に勉強するので勉強にならないわけでは...(めっちゃ書いてほしい)
月猫ch
月猫ch16mo ago
あるある うち1.12.2で 一応多少確認しながら書くけどわんちゃんverで死ぬ それで良い?
𝓓𝓮𝓮𝓵𝓪
大丈夫です。本当にありがとうございます
月猫ch
月猫ch16mo ago
貫通したほうがいい? それともヒットしたら矢は消滅? 何に使うかで俺も書き方合わせるよ
𝓓𝓮𝓮𝓵𝓪
貫通するかしないかも設定できるんですね。なら貫通するほか#付き、貫通しないのは#なしで書けますか...?
月猫ch
月猫ch16mo ago
両方書けば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
𝓓𝓮𝓮𝓵𝓪
paperです! 本当にありがとうございます。 試してみます
月猫ch
月猫ch16mo ago
あ、paperま? なら貫通できるかも
月猫ch
月猫ch16mo ago
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)
𝓓𝓮𝓮𝓵𝓪
snaipっていう名前のついた武器で撃った矢のみダメージを無効化するってのは厳しいんですかね? このskriptで試してみたのですが、スケルトンとかのモブが撃った矢もダメージ無効化されちゃってるので...
月猫ch
月猫ch16mo ago
そっすね、これ基盤だけなんで そこから、条件分岐で適応したい矢を選んでいくわけです それでここに戻ります 今回はどういう運用を想定してるんですか? ezですよ 例えば、矢の射出もskで行きたい感じですか?
𝓓𝓮𝓮𝓵𝓪
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
月猫ch
月猫ch16mo 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 "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
こうかな ごめん今ちょっと書き換えた
𝓓𝓮𝓮𝓵𝓪
あ、エラー出ちゃいました
No description
月猫ch
月猫ch16mo ago
ごめん誤字www スペースあいてなかったwww
𝓓𝓮𝓮𝓵𝓪
あ、ホントだw 出来ました!!本当にありがとうございます! 本当に感謝です...!
月猫ch
月猫ch16mo ago
0w0)b
Want results from more Discord servers?
Add your server