Vanish.sk

Created by Sitieno14

Just so you know, we don't know the file format for every file. If it's just a bunch of random characters, it's probably a .zip or .jar.

# __     __          _     _
# \ \   / __ _ _ __ (_)___| |__
#  \ \ / / _` | '_ \| / __| '_ \
#   \ V | (_| | | | | \__ | | | |
#    \_/ \__,_|_| |_|_|___|_| |_|
#Vanish (https://forums.skunity.com/resources/vanish.1086/)
#=================================================================================
#        Description: Hide your presence from other players with the Vanish mode
#             Author: Sitieno14
#!           License: http://creativecommons.org/licenses/by-nc-sa/4.0/
#            Version: 4.0
#
#  SkUnity - Profile: https://tinyurl.com/skunity-sitieno14
#SkUnity - Resources: https://tinyurl.com/skunity-bysitieno14
#  SkUnity - Support: https://tinyurl.com/skunity-tositieno14
#
# Telegram - Channel: https://telegram.me/Sitieno14
# Telegram - Contact: https://telegram.me/Sitieno14_bot
#=================================================================================
options:
	prefix: &f&lVanish &7> 

	#example: "{@prefix} &6playername &aenabled {@modename} &emode"
	modename: &fVanish

	#currently supported languages are Italian and English
	language: english

	#leave it to "true" if you won't that in-vanish players can hit others and vice versa
	nodamage: true

	#leave it to "true" if you want in-vanish players' join message to be hidden
	hide-join: true

	#leave it to "true" if you want in-vanish players' quit message to be hidden
	hide-quit: true

	#leave it to "true" if you want in-vanish players' death message to be hidden
	hide-death: true

	#leave it to "true" if you want in-vanish players to be hidden from the server list
	hide-from-serverlist: true

	 #_________________________________________#
	 #||          Script - Languages         ||#
	 #\/ ----------------------------------- \/#
	 #!Do not edit words if they aren't inside ""
	 #!Do not edit words within {_}
     	#!The words within {_} are placeholders

on load:
	#!I suggest you to write your custom language strings here, then switch "language" option to "custom"
	#Contact me if you'd like your custom made language to be added to this script's supported ones
	#Telegram: https://telegram.me/Sitieno14_bot
	#SkUnity: https://forums.skunity.com/conversations/add?to=Sitieno14
	if "{@language}" is "custom":
		set {Vanish::language::nopermission} to " "     								#&cYou are not allowed to execute this command!

		set {Vanish::language::disabled} to " " 										#{@prefix} {@modename} &emode &cdisabled
		set {Vanish::language::spy::disabled} to " {_player} "  						#{@prefix} &6{_player} &cdisabled {@modename} &emode

		set {Vanish::language::disable::others} to " {_arg}"  							#{@prefix} &eYou &cdisabled &4{_arg}&c's {@modename} &emode
		set {Vanish::language::disabled::others} to " {_player}"						#{@prefix} &4{_player} &cdisabled &eyour {@modename} &emode
		set {Vanish::language::spy::disabled::others} to " {_executor} {_player}"		#{@prefix} &6{_executor} &cdisabled &4{_player}&c's {@modename} &emode

		set {Vanish::language::enabled} to " "											#{@prefix} {@modename} &emode &aenabled
		set {Vanish::language::spy::enabled} to " {_player}"							#{@prefix} &6{_player} &aenabled {@modename} &emode

		set {Vanish::language::enable::others} to " {_arg}"								#{@prefix} &eYou &aenabled &2{_arg}&a's {@modename} &emode
		set {Vanish::language::enable::mustbeonline} to " "								#{@prefix} &eYou can't &aenable {@modename} &emode for an offline player
		set {Vanish::language::enabled::others} to " {_player}"							#{@prefix} &2{_player} &aenabled &eyour {@modename} &emode
		set {Vanish::language::spy::enabled::others} to " {_executor} {_player}"     	#{@prefix} &6{_executor} &aenabled &2{_player}&a's {@modename} &emode

		set {Vanish::language::enabled::onjoin} to " "									#{@prefix} &eRestored {@modename} &emode as it was enabled before you died
		set {Vanish::language::enabled::onrespawn} to " "								#{@prefix} &eRestored {@modename} &emode as it was enabled before you logged out the last time

		set {Vanish::language::damage::attacker} to " {_player}"						#&cYou tried to hit &4{_player} &cwhile you are in {@modename} &cmode
		set {Vanish::language::damage::victim} to " {_player}"							#&4{_player} &ctried to hit you while you was in {@modename} &cmode

		set {Vanish::language::list} to " "												#&eList of players with {@modename} &emode &aenabled&7:

		set {Vanish::language::permissions::1} to " "									#&7Permissions list of %script%.sk
		set {Vanish::language::permissions::2} to " "									#&6vanish.toggle &7- &2/vanish %nl% &7> &aEnable&7/&cdisable {@modename} &emode
		set {Vanish::language::permissions::3} to " "									#&6vanish.toggle.others &7- &2/vanish <player> %nl% &7> &aEnable&7/&cdisable {@modename} &emode also for other players
		set {Vanish::language::permissions::4} to " "									#&6vanish.list &7- &2/vanish list %nl% &7> &eView the list of players with {@modename} &emode &aenabled
		set {Vanish::language::permissions::5} to " "									#&6vanish.viewpermissions &7- &2/vanish permissions %nl% &7> &eView this list of all permissions handled by this script
		set {Vanish::language::permissions::6} to " "									#&6vanish.spy %nl% &7> &eBe notified when other players toggle {@modename} &emode
		set {Vanish::language::permissions::7} to " "									#&6vanish.onjoin %nl% &7> &eRe-&aenable {@modename} &emode on join
		set {Vanish::language::permissions::8} to " "									#&6vanish.ondeath %nl% &7> &eRe-&aenable {@modename} &emode on respawn
		set {Vanish::language::permissions::9} to " "									#&6vanish.view %nl% &7> &eBe able to see players even if they're in {@modename} &emode
	else if "{@language}" is "it" or "ita" or "italian" or "italiano" or "italy" or "italia":
		set {Vanish::language::nopermission} to "&cNon ti è permesso eseguire questo comando!"

		set {Vanish::language::disabled} to "{@prefix} &eHai &cdisattivato &ela modalità {@modename}"
		set {Vanish::language::spy::disabled} to "{@prefix} &6{_player} &eha &cdisattivato &ela modalità {@modename}"

		set {Vanish::language::disable::others} to "{@prefix} &eHai &cdisattivato &ela modalità {@modename} &eper &4{_arg}"
		set {Vanish::language::disabled::others} to "{@prefix} &cTi è stata disattivata la modalità {@modename} &cda &4{_player}"
		set {Vanish::language::spy::disabled::others} to "{@prefix} &6{_executor} &eha &cdisattivato &ela {@modename} &ea &4{_player}"

		set {Vanish::language::enabled} to "{@prefix} &eHai &aattivato &ela modalità {@modename}"
		set {Vanish::language::spy::enabled} to "{@prefix} &6{_player} &eha &aattivato &ela modalità {@modename}"

		set {Vanish::language::enable::others} to "{@prefix} &eHai &aattivato &ela modalità {@modename} &eper &2{_arg}"
		set {Vanish::language::enable::mustbeonline} to "{@prefix} &eNon puoi &aattivare &ela modalità {@modename} &eper un giocatore offline"
		set {Vanish::language::enabled::others} to "{@prefix} &aTi è stata attivata la modalità {@modename} &ada &2{_player}"
		set {Vanish::language::spy::enabled::others} to "{@prefix} &6{_executor} &eha &aattivato &ela {@modename} &ea &2{_player}"

		set {Vanish::language::enabled::onjoin} to "{@prefix} &eRipristinata la modalità {@modename} in quanto era attiva prima dell'ultima disconnessione"
		set {Vanish::language::enabled::onrespawn} to "{@prefix} &eRipristinata la modalità {@modename} in quanto era attiva prima che tu morissi"

		set {Vanish::language::damage::attacker} to "&cHai provato a colpire &4{_player} &cmentre sei in modalità {@modename}"
		set {Vanish::language::damage::victim} to "&4{_player} &cha provato a colpirti mentre eri in modalità {@modename}"

		set {Vanish::language::list} to "&eLista dei giocatori con la modalità {@modename} &aattiva&7:"

		set {Vanish::language::permissions::1} to "&7Lista di permessi di %script%.sk"
		set {Vanish::language::permissions::2} to "&6vanish.toggle &7- &2/vanish %nl% &7> &aAttiva&7/&cdisattiva &ela modalità {@modename}"
		set {Vanish::language::permissions::3} to "&6vanish.toggle.others &7- &2/vanish <player> %nl% &7> &aAttiva&7/&cdisattiva &ela {@modename} &eanche per altri giocatori"
		set {Vanish::language::permissions::4} to "&6vanish.list &7- &2/vanish list %nl% &7> &eVisualizza la lista dei giocatori con la modalità {@modename} &aattiva"
		set {Vanish::language::permissions::5} to "&6vanish.viewpermissions &7- &2/vanish permissions %nl% &7> &eVisualizza questa lista di permessi gestiti dallo script"
		set {Vanish::language::permissions::6} to "&6vanish.spy %nl% &7> &eVieni notificato quando altri giocatori &aattivano&7/&cdisattivano &ela modalità {@modename}"
		set {Vanish::language::permissions::7} to "&6vanish.onjoin %nl% &7> &eRi&aattiva &ela modalità {@modename} &eal rientro"
		set {Vanish::language::permissions::8} to "&6vanish.ondeath %nl% &7> &eRi&aattiva &ela modalità {@modename} &ealla rinascita"
		set {Vanish::language::permissions::9} to "&6vanish.view %nl% &7> &eVedi i giocatori anche se sono in modalità {@modename}"
	else:
		set {Vanish::language::nopermission} to "&cYou are not allowed to execute this command!"

		set {Vanish::language::disabled} to "{@prefix} {@modename} &emode &cdisabled"
		set {Vanish::language::spy::disabled} to "{@prefix} &6{_player} &cdisabled {@modename} &emode"

		set {Vanish::language::disable::others} to "{@prefix} &eYou &cdisabled &4{_arg}&c's {@modename} &emode"
		set {Vanish::language::disabled::others} to "{@prefix} &4{_player} &cdisabled &eyour {@modename} &emode"
		set {Vanish::language::spy::disabled::others} to "{@prefix} &6{_executor} &cdisabled &4{_player}&c's {@modename} &emode"

		set {Vanish::language::enabled} to "{@prefix} {@modename} &emode &aenabled"
		set {Vanish::language::spy::enabled} to "{@prefix} &6{_player} &aenabled {@modename} &emode"

		set {Vanish::language::enable::others} to "{@prefix} &eYou &aenabled &2{_arg}&a's {@modename} &emode"
		set {Vanish::language::enable::mustbeonline} to "{@prefix} &eYou can't &aenable {@modename} &emode for an offline player"
		set {Vanish::language::enabled::others} to "{@prefix} &2{_player} &aenabled &eyour {@modename} &emode"
		set {Vanish::language::spy::enabled::others} to "{@prefix} &6{_executor} &aenabled &2{_player}&a's {@modename} &emode"

		set {Vanish::language::enabled::onjoin} to "{@prefix} &eRestored {@modename} &emode as it was enabled before you died"
		set {Vanish::language::enabled::onrespawn} to "{@prefix} &eRestored {@modename} &emode as it was enabled before you logged out the last time"

		set {Vanish::language::damage::attacker} to "&cYou tried to hit &4{_player} &cwhile you are in {@modename} &cmode"
		set {Vanish::language::damage::victim} to "&4{_player} &ctried to hit you while you was in {@modename} &cmode"

		set {Vanish::language::list} to "&eList of players with {@modename} &emode &aenabled&7:"

		set {Vanish::language::permissions::1} to "&7Permissions list of %script%.sk"
		set {Vanish::language::permissions::2} to "&6vanish.toggle &7- &2/vanish %nl% &7> &aEnable&7/&cdisable {@modename} &emode"
		set {Vanish::language::permissions::3} to "&6vanish.toggle.others &7- &2/vanish <player> %nl% &7> &aEnable&7/&cdisable {@modename} &emode also for other players"
		set {Vanish::language::permissions::4} to "&6vanish.list &7- &2/vanish list %nl% &7> &eView the list of players with {@modename} &emode &aenabled"
		set {Vanish::language::permissions::5} to "&6vanish.viewpermissions &7- &2/vanish permissions %nl% &7> &eView this list of all permissions handled by this script"
		set {Vanish::language::permissions::6} to "&6vanish.spy %nl% &7> &eBe notified when other players toggle {@modename} &emode"
		set {Vanish::language::permissions::7} to "&6vanish.onjoin %nl% &7> &eRe-&aenable {@modename} &emode on join"
		set {Vanish::language::permissions::8} to "&6vanish.ondeath %nl% &7> &eRe-&aenable {@modename} &emode on respawn"
		set {Vanish::language::permissions::9} to "&6vanish.view %nl% &7> &eBe able to see players even if they're in {@modename} &emode"

	  #_________________________________________#
	  #||            Script - Code            ||#
	  #\/ ----------------------------------- \/#  
	  #!Edit only if you know what you are doing

function Vanish(p: player, e: player=" self "):
	set {Vanish::mode::%{_p}%} to true

	if {_e} is " self ":
		set {_message} to {Vanish::language::spy::enabled}
		replace all "{_player}" in {_message} with "%{_p}%"
	else:
		set {_message} to {Vanish::language::spy::enabled::others}
		replace all "{_executor}" in {_message} with "%{_e}%"
		replace all "{_player}" in {_message} with "%{_p}%"

	loop all players:
		if loop-player isn't {_p} or {_e}:
			if loop-player has the permission "vanish.spy":
				send {_message} to loop-player
			if loop-player doesn't have the permission "vanish.view":
				hide {_p} from loop-player
	
	wait 0.1 seconds
	apply invisibility 2 to {_p} for 999 days

function unVanish(p: offline player, e: player=" self "):
	reveal {_p} from all players
	remove invisibility from {_p}
	delete {Vanish::mode::%{_p}%}

	if {_e} is " self ":
		set {_message} to {Vanish::language::spy::disabled}
		replace all "{_player}" in {_message} with "%{_p}%"
	else:
		set {_message} to {Vanish::language::spy::disabled::others}
		replace all "{_executor}" in {_message} with "%{_e}%"
		if {_p} is online:
			replace all "{_player}" in {_message} with "%{_p}%"
		else:
			replace all "{_player}" in {_message} with "&4[&cOFFLINE&4] %{_p}%"

	loop all players:
		if loop-player isn't {_p} or {_e}:
			if loop-player has the permission "vanish.spy":
				send {_message} to loop-player

command /vanish <offline player=%executor%>:
	trigger:
		if arg 1 is player:
			if player has the permission "vanish.toggle" or "vanish.toggle.others":
				if {Vanish::mode::%player%} is true:
					send {Vanish::language::disabled}

					unVanish(player)

					stop
				else:
					send {Vanish::language::enabled}

					Vanish(player)

					stop
				stop
			else:
				send {Vanish::language::nopermission}
				stop
		else if arg 1 is "list":
			if executor is a player:
				if player doesn't have the permission "vanish.list":
					send {Vanish::language::nopermission}
					stop

			send {Vanish::language::list}
			loop {Vanish::mode::*}:
				set {_offline} to loop-index parsed as player
				if {_offline} is online:
					send "&7- &2[&aONLINE&2] &b%loop-index%"
				else:
					send "&7- &4[&cOFFLINE&4] &b%loop-index%"
				clear {_offline}
			stop
		else if arg 1 is "permissions":
			if executor is a player:
				if player doesn't have the permission "vanish.viewpermissions":
					send {Vanish::language::nopermission}
					stop

			send {Vanish::language::permissions::1}
			send {Vanish::language::permissions::2}
			send {Vanish::language::permissions::3}
			send {Vanish::language::permissions::4}
			send {Vanish::language::permissions::5}
			send {Vanish::language::permissions::6}
			send {Vanish::language::permissions::7}
			send {Vanish::language::permissions::8}
			send {Vanish::language::permissions::9}
		else:
			if executor is a player:
				if player doesn't have the permission "vanish.toggle.others" or "vanish.toggle":
					if player doesn't have the permission "vanish.toggle.others":
						make player execute command "/vanish"
						stop
					else:
						send {Vanish::language::nopermission}
						stop
			set {_arg} to arg 1
			if {Vanish::mode::%arg 1%} is true:
				delete {Vanish::mode::%arg 1%}

				set {_message} to {Vanish::language::disable::others}
				replace all "{_arg}" in {_message} with "%{_arg}%"
				send {_message}

				set {_message} to {Vanish::language::disabled::others}
				replace all "{_player}" in {_message} with "%executor%"
				send {_message} to {_arg}

				unVanish({_arg}, executor)

				stop
			else:
				if {_arg} is online:
					set {_message} to {Vanish::language::enable::others}
					replace all "{_arg}" in {_message} with "%{_arg}%"
					send {_message}

					set {_message} to {Vanish::language::enabled::others}
					replace all "{_player}" in {_message} with "%executor%"
					send {_message} to {_arg}

					Vanish({_arg}, executor)
				
					stop
				else:
					send {Vanish::language::enable::mustbeonline}
					stop
			stop


on damage of player:
	attacker is a player
	{@nodamage} is true
	
	if {Vanish::mode::%victim%} is true:
		cancel event

		set {_message} to {Vanish::language::damage::victim}
		replace all "{_player}" in {_message} with "%attacker%"
		send {_message} to victim
	
	else if {Vanish::mode::%attacker%} is true:
		cancel event

		set {_message} to {Vanish::language::damage::attacker}
		replace all "{_player}" in {_message} with "%victim%"
		send {_message} to attacker

on join:
	if player doesn't have the permission "vanish.view":
		loop all players:
			if {Vanish::mode::%loop-player%} is true:
				hide loop-player from player

	if {Vanish::mode::%player%} is true:
		if {@hide-join} is true:
			set join message to ""
		if player has the permission "vanish.toggle":
			if player has the permission "vanish.onjoin":
				Vanish(player)
				send {Vanish::language::enabled::onjoin}
				stop
			unVanish(player)

on quit:
	if {@hide-quit} is true:
		if {Vanish::mode::%player%} is true:
			set quit message to ""

on death:
	if {@hide-death} is true:
		if {Vanish::mode::%player%} is true:
			set the death message to ""

on respawn:
	if {Vanish::mode::%player%} is true:
		if player has the permission "vanish.ondeath":
			Vanish(player)
			send {Vanish::language::enabled::onrespawn}
			stop
		unVanish(player)

on server ping:
	{@hide-from-serverlist} is true
	loop {Vanish::mode::*}:
		if loop-value is true:
			set {_p} to loop-index parsed as offline player
			if {_p} is online:
				hide {_p} from the server list