```
# freeze-transfer.sk
# Paper/Spigot 1.19+ ve Skript 2.6+ ile çalışır. Addon gerekmez.
# (Opsiyonel) SkBee/Skellett varsa "hide player" satırlarını açarak gerçek gizleme sağlayabilirsin.
options:
# aktarım tamamlanana kadar izin verilecek komutlar
allowed-auth-commands: /login, /l, /register, /reg
invis-duration-secs: 86400 # 24 saatlik uzun etki (güvenlik için periyodik yeniliyoruz)
check-interval-ticks: 40 # 2 sn'de bir yeniden uygulama/koruma
# Dondurulmuş oyuncular listesi
global {frozen::*}
function freeze(p: player):
add uuid of {_p} to {frozen::*}
# görünmezlik (iksir)
apply potion of invisibility to {_p} for {@invis-duration-secs} seconds
# hız sıfırlama ve atak engelini güçlendirme
set walk speed of {_p} to 0
set fly speed of {_p} to 0
set {_gm} to gamemode of {_p}
if {_gm} is survival or adventure:
set {_p}'s saturation to 20
set {_p}'s food level to 20
# hasar ve pvp engelleme için tanımlayıcı
set {_p}'s invulnerability ticks to 200000000
# opsiyonel: gerçek görünmezlik (nametag dahil) için addon
# hide {_p} from all players
# loop all players:
# hide {_p} from loop-player
# titreşim azaltmak için bir kez sabitle
set metadata value "frozen" of {_p} to true
function unfreeze(p: player):
remove uuid of {_p} from {frozen::*}
clear metadata value "frozen" of {_p}
remove potion of invisibility from {_p}
set walk speed of {_p} to 0.2
set fly speed of {_p} to 0.1
set {_p}'s invulnerability ticks to 0
# opsiyonel: addon varsa göster
# show {_p} to all players
# loop all players:
# show {_p} to loop-player
# İlk girişte dondur
on join:
freeze(player)
# Sunucu restart/skript reload sonrası çevrimiçileri tekrar koru
on script load:
loop all players:
if uuid of loop-player is in {frozen::*}:
freeze(loop-player)
# Hareket, bakış yönü, zıplama dahil her hareketi iptal
on any move:
if uuid of player is in {frozen::*}:
cancel event
# Etkileşimleri kapat
on inventory click:
if uuid of player is in {frozen::*}:
cancel event
on drop:
if uuid of player is in {frozen::*}:
cancel event
on pickup:
if uuid of player is in {frozen::*}:
cancel event
on right click:
if uuid of player is in {frozen::*}:
cancel event
on left click:
if uuid of player is in {frozen::*}:
cancel event
on place:
if uuid of player is in {frozen::*}:
cancel event
on break:
if uuid of player is in {frozen::*}:
cancel event
# PVP ve hasar yok
on damage:
if attacker is a player:
if uuid of attacker is in {frozen::*}:
cancel event
if victim is a player:
if uuid of victim is in {frozen::*}:
cancel event
# Sohbeti kapat (Auth komutları hariç)
on chat:
if uuid of player is in {frozen::*}:
cancel event
send "&cAktarım tamamlanana kadar sohbet kapalı." to player
# Komutları sınırlama (Auth komutlarına izin)
on command:
if uuid of player is in {frozen::*}:
set {_msg} to message
set {_allowed::*} to {@allowed-auth-commands} split at ","
set {_ok} to false
loop {_allowed::*}:
set {_cmd} to replace all " " with "" in loop-value
if {_msg} starts with {_cmd}:
set {_ok} to true
stop loop
if {_ok} is false:
cancel event
send "&cAktarım tamamlanana kadar komutlar kapalı." to player
# Periyodik koruma: iksir süresi vs. tazele
every {@check-interval-ticks} ticks:
loop all players:
if uuid of loop-player is in {frozen::*}:
if loop-player does not have potion of invisibility:
apply potion of invisibility to loop-player for {@invis-duration-secs} seconds
if walk speed of loop-player > 0:
set walk speed of loop-player to 0
if fly speed of loop-player > 0:
set fly speed of loop-player to 0
# Yönetici komutları
command /transferstart [<offlineplayer>]:
permission: freeze.transfer
trigger:
if arg-1 is set:
if arg-1 is online:
freeze(arg-1)
send "&a%arg-1% donduruldu (aktarim baslatildi)."
send "&eAktarım tamamlanınca &6/transferdone %arg-1% &ekullan."
else:
send "&cOyuncu çevrimdışı."
else:
if player is set:
freeze(player)
send "&aKendini dondurdun (aktarim baslatildi)."
command /transferdone [<offlineplayer>]:
permission: freeze.transfer
trigger:
if arg-1 is set:
if arg-1 is online:
unfreeze(arg-1)
send "&a%arg-1% serbest birakildi (aktarim tamam)."
else:
send "&cOyuncu çevrimdışı."
else:
if player is set:
unfreeze(player)
send "&aSerbest birakildin (aktarim tamam)."