送信されるはずのpacketを改変して送信する方法

サーバーの時間とプレイヤーに送信する時間を異なる時間にするfunctionを書きました
function time(p: player, time: integer):
set {_worldage} to {_time}
set {_timefoday} to mod({_time}, 24000)
set {_packet} to new play_server_update_time packet
set field 0 of {_packet} to {_worldage}
set field 1 of {_packet} to {_timefoday}
send {_p} packet {_packet}
function time(p: player, time: integer):
set {_worldage} to {_time}
set {_timefoday} to mod({_time}, 24000)
set {_packet} to new play_server_update_time packet
set field 0 of {_packet} to {_worldage}
set field 1 of {_packet} to {_timefoday}
send {_p} packet {_packet}
ここまでは良かったのですが、funcで送信してもサーバー側がパケットを毎秒送信しているため、変わっても一瞬で治ってしまいました packetの送信をeventで検知し、cancel eventしたあとに送信しても、その送信もeventで検知されcancel event...という無限ループに。逆に送信を検知して、funcで送信し直しても、その送信したものを検知して送信と、またしても無限ループになってしまいます MC環境は1.19.4のpaper(bungee)、プラグイン、SKver等は画像の通りです 追記: doDaylightCycleはfalseに設定しています
No description
Solution:
skript-reflect使う
Jump to solution
9 Replies
何か
何か6mo ago
デフォルトの時間が0-24000の間で動くなら、自分が設定したい時間+240001でフィールドを設定して 24000を超える場合は自分が送ったパケット それ以下ならサーバーから送られたパケットで 区別すればいい 自分の送ったパケットはフィールドを直す
あお🦀
あお🦀OP6mo ago
どのタイミングで送信したらいいのかがわかりません サーバーから送られたパケットを検知して、(指定時間+24001)して送信、24000を超えるかどうかを検知して自分の送ったパケットのフィールドを直して送信すると、サーバーから送られたパケットとして認識され無限ループになってしまいます
何か
何か6mo ago
書き換えてまた送るんじゃなくて 書き換えた時点で書き換えられたパケットが送られるんだから わざわざsendしなくていい
あお🦀
あお🦀OP6mo ago
イベントで検知したpacketのfieldを改変して送信する方法を教えてほしいです
on packet event play_server_update_time:
set {_worldage} to {time::%event-player's uuid%}
set {_timefoday} to mod({_time}, 24000)
set {_packet} to event-packet
set field 0 of {_packet} to {_worldage}
set field 1 of {_packet} to negate({_timefoday})
on packet event play_server_update_time:
set {_worldage} to {time::%event-player's uuid%}
set {_timefoday} to mod({_time}, 24000)
set {_packet} to event-packet
set field 0 of {_packet} to {_worldage}
set field 1 of {_packet} to negate({_timefoday})
このようにしてみましたが変更されませんでした
何か
何か6mo ago
フィールドが変わってるのに反映されてないならskript-packetが対応してない そもそもフィールドが変わってないなら設定する値が間違ってる
あお🦀
あお🦀OP6mo ago
他に改変する方法を教えてほしいです
Solution
何か
何か6mo ago
skript-reflect使う
あお🦀
あお🦀OP6mo ago
やっぱそうするしかないですか...
unnnnnnnnnnn
unnnnnnnnnnn6mo ago
set {_packet} to even-packetは参照渡しですか? 参照になるんだ しらなかった
Want results from more Discord servers?
Add your server