チームを分かりやすくする

skript-packetを用いて 青チームのプレイヤーが付けてる ヘルメットは青の革ヘルメット 赤チームのプレイヤーが付けてる ヘルメットは赤の革ヘルメット に自分以外のプレイヤーから見える システムを書いて欲しいです チームは変数なのでとりあえず仮で {blue::}と{red::}の中に いるかで確認して欲しいです
Spigot 1.8.8
skript 2.6.2
skript-packet 1.0
skBee 1.10.3
Spigot 1.8.8
skript 2.6.2
skript-packet 1.0
skBee 1.10.3
20 Replies
tanoKun
tanoKun3y ago
チームをわかりやすくするならskriptだけでいいと思う のですが 何か理由が?
soramame_256
soramame_2563y ago
skript単体でプレイヤー以外に偽の防具情報送るのって可能なんですかね
tanoKun
tanoKun3y ago
a 読み間違えてた 赤の帽子をつけているプレイヤーをだと思ってた パケットというか PacketPlayOutEntityEquipment使えば行けるっぽい skmirrorみたいなのつかっちゃだめかな
soramame_256
soramame_2563y ago
アドオン導入可なら単体で完結するものはskhubにありましたね あーでもこれ1.19+か… というか1.8.8に2.6.2入るんですか
tanoKun
tanoKun3y ago
思った それ
towa
towaOP3y ago
なんか普通に入ってます 読み込みもされてますね 今入れてるskript-packetでは 難しいって言うことですか? それだったら導入できるか確かめてみます
tanoKun
tanoKun3y ago
できると思います()
towa
towaOP3y ago
packet event play_server_entity_equipment:
set byte pnum 5 of play_server_entity_equipment to leather helmet
broadcast "slot changed"
packet event play_server_entity_equipment:
set byte pnum 5 of play_server_entity_equipment to leather helmet
broadcast "slot changed"
こんな感じですか? 初めて使うので全くうまく行きません...
packet event play_server_entity_equipment:
set {_packet} to new play_server_entity_equipment packet
set field 0 of packet {_packet} to event-player
set field 1 of packet {_packet} to 5
set field 2 of packet {_packet} to iron helmet
send all players packet {_packet}
packet event play_server_entity_equipment:
set {_packet} to new play_server_entity_equipment packet
set field 0 of packet {_packet} to event-player
set field 1 of packet {_packet} to 5
set field 2 of packet {_packet} to iron helmet
send all players packet {_packet}
いろいろ調べてこんなかんじになりました とりあえずテストで鉄の帽子にしようと思ったのですが まだ鉄の帽子になりません
tanoKun
tanoKun3y ago
フィールドがその値に対応している型ですか? packet event ってパケットが受け取る、渡すときに発火するものですよ 送るだけだったら commandとかだけでいいと思います
towa
towaOP3y ago
field 3が非常に怪しいのですが 書き方が分からないので 教えて貰えませんか?
tanoKun
tanoKun3y ago
そもそも 上のコードは実行されているの?
towa
towaOP3y ago
broadcastを挟んで確かめたところ 複数人プレイヤーがいる時に 防具を被ったりすると 自分以外のプレイヤーから packet eventが実行されてました
tanoKun
tanoKun3y ago
まって 1.8.8か
This should do the job.

Edit:
Here are the values for the slots:
0 - item in hand
1 - helmet
2 - body armor
3 - pants
4 - boots
This should do the job.

Edit:
Here are the values for the slots:
0 - item in hand
1 - helmet
2 - body armor
3 - pants
4 - boots
らしいので ヘルメットにしたかったら field 1 を 1にすればいいのかもしれない
towa
towaOP3y ago
明日試してみますね 下のように色々デバッグしてもうまくいきませんでした
on packet event play_server_entity_equipment:
broadcast "%player%のPacketを検知"
broadcast "event-packet &70: %field 0 of event-packet% 1:%field 1 of event-packet% 2: %field 2 of event-packet%"
set {_packet} to new play_server_entity_equipment packet
set field 1 of packet {_packet} to 4
set field 2 of packet {_packet} to diamond helmet
send all players packet {_packet}
broadcast "%{_packet}%"
broadcast "{_packet} 1:%field 1 of {_packet}% 2: %field 2 of {_packet}%"
on packet event play_server_entity_equipment:
broadcast "%player%のPacketを検知"
broadcast "event-packet &70: %field 0 of event-packet% 1:%field 1 of event-packet% 2: %field 2 of event-packet%"
set {_packet} to new play_server_entity_equipment packet
set field 1 of packet {_packet} to 4
set field 2 of packet {_packet} to diamond helmet
send all players packet {_packet}
broadcast "%{_packet}%"
broadcast "{_packet} 1:%field 1 of {_packet}% 2: %field 2 of {_packet}%"
この下から二行目の%{_packet}%を2つ上の行の set field 1 of のあとにずらすと動くため field 2が現任なのはわかるのですがうまく動きません
tanoKun
tanoKun3y ago
なんで 4にした? helmetだったら4じゃ表示されないの当たり前なのでは
towa
towaOP3y ago
3行目のbroadcast使って確かめたら 4が頭のスロットでした
tanoKun
tanoKun3y ago
bukkit 1.8.8 の packet内覗いてみることお勧めします あ field 0 設定されないからかもしれない
import:
net.minecraft.server.PacketPlayOutEntityEquipment
org.bukkit.inventory.ItemStack
org.bukkit.Material
org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer

command /test:
trigger:
set {_packet} to new PacketPlayOutEntityEquipment(0, 4, new ItemStack(Material.DIAMOND_HELMET!))
((CraftPlayer) player).playerConnection.sendPacket({_packet})
import:
net.minecraft.server.PacketPlayOutEntityEquipment
org.bukkit.inventory.ItemStack
org.bukkit.Material
org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer

command /test:
trigger:
set {_packet} to new PacketPlayOutEntityEquipment(0, 4, new ItemStack(Material.DIAMOND_HELMET!))
((CraftPlayer) player).playerConnection.sendPacket({_packet})
soramame_256
soramame_2563y ago
バージョンissueな気がしてならない
tanoKun
tanoKun3y ago
それはちょっと考えたんだけど skript っていうものでパケットをいじることがそもそもあれなんだよな() 1.8.8にあってるskript, addon バージョンにするのがいいのかな?
soramame_256
soramame_2563y ago
ソース見たところProtocolLibでpacket専用型への変換がされてるっぽいんだけど 1.19と1.8でそもそものパケットの構造が違うからなんとも… ただ少なくてもskript-packetでpacket自体の個別宣言とかはされてなかったから周辺の問題かなって
Want results from more Discord servers?
Add your server