ReportX.sk

Created by xd0

Other available versions. Ordered by newest to oldest versions:

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.

# -------------------------------
#       
#			ReportsX
#		  Coded by xd0 
# --------------------------------

#======================================
# DO NOT TOUCH THE FOLLOWING.
on skript load:
	set {debug} to "&cDisabled"
	set {reports.toggle} to true
	set {Report.Debug} to true
	set {playerReceiveCloseMessage.toggle} to true
#======================================

#======================================
# The following is the main configuration for the script.
# The options are incredibly strict with how they are changed. If you are not exactly sure with the description of the option, check the page.

Options:
	# This is the prefix for the script. It is recommended to have brackets, but that is your decision
	prefix: &8[&aReport&8]
	
	# This is the command of the script. This is what players will type in game.
	command: report
	
	# This is the permission for staff/moderators.
	perm: reports.see
	
	# This is the permission for Administrator and up. This is a dangerous permission to grant.
	adminperm: reports.admin
	
	# This is just the version of ReportX. 
	version: 2.1
	
	# This option is able to be changed. This is how much ReportX logs for admins. The only options here are:
	# LITE -> only logs the admin commands.
	# HEAVY -> logs everything [HIGHLY DO NOT RECOMMEND USING THIS, but hey...]
	loggingrate: LITE
# The following is the configuration for the messages.
# If the option contains the prefix MSG, it is highly recommended you do not change it unless you know what you're doing.
# If the option contains the prefix Message, no repercussions will occur if changed.
	
	DebugDisableBroadcastMSG: &b%{_p}% has disabled Debug Mode!
	
	DebugDisableMessage: &cYou just disabled Debug Mode!
	
	DebugEnableBroadcastMSG: &b%{_p}% has enabled Debug Mode!
	
	DebugEnableMessage: &aYou just enabled Debug Mode!
	
	ReportListMSG: &b%player% &7reported &b%{_player}% &7for &b%{_reason}%&7 at&b %{report.date::%player%}%

	FinishedReportMSG: You reported &c%{_player}% &7for &c%{_reason}%&7.

	ReportDisabledToggleMessage: &aYou have just toggled off alerts!
	
	ReportEnabledToggleMessage: &aYou have just toggled on alerts!

	NoPermissionMessage: &cYou do not have permission to use this command.

	ConfigurationMessage: &aConfiguration reloaded!
	
	CloseReportMessage: &aYou have just closed your report.
	
	NoReportListMessage: &cThere are currently no open reports.
	
	MustHaveReportMessage: &cYou must have an open report in order to close one!
	
	CheckReportMSG: &aYou are observing &e%arg-2%'s&a report!
	
	CheckReportBroadcastMSG: &b%event-player% is observing %arg-2%'s report!
	
	ConfigurationBroadcastMSG: &b%event-player% has reloaded the configuration!
	
	NotOnlinePlayerMessage: &cThe player you wanted to check is not online!
	
	NoOpenReportMessage: &cThat player does not have an open report!
	
	SpecifyCheckPlayerMessage: &cYou must specify a player!
	
	ClearedAllReportsMessage: &4You have just cleared all of the opened reports. This may cause issues with reporting players in the future.
	
	ClosedReportToReporterMessage: &cYour report was closed!
	
	ClosedReportToYouMSG: You closed the Report of &c%arg-2%.
	
	ClosedReportBroadcastMSG: &c%player% &7closed &c%{_player}%'s report.
	
	EnablePlayerReceiveReportBroadcastMSG: &b%{_p}% just toggled on closing report messages.
	
	EnablePlayerReceiveReportMessage: &aYou just toggled on closing report messages for players.
	
	DisablePlayerReceiveReportBroadcastMSG: &b%{_p}% just toggled off closing report messages.
	
	DisablePlayerReceiveReportMessage: &aYou just toggled off closing report messages for players.
	
	ClearLogsMessage: &4You just cleared the logs!
	
	NoLogsMessage: &cThere were not logs to be cleared.

#======================================

#================================================	
function reportLogs(p: player, page: number, t: text):
	set {_pageStart} to 45*{_page}
	set {_i} to 1
	set {_a} to 0
	open virtual chest inventory with 6 rows named "&4Page %{_page}%" to {_p}
	{_t} is "LITE":
		set {_g} to "{@loggingrate}" parsed as text
		loop {report.logs.lite::*}:
			(loop-index parsed as integer) > {_pageStart}
			set {_player} to "%loop-value%" parsed as offline player
			create gui slot {_a} of {_p} with paper named "%loop-value%"
			add 1 to {_a}
			{_a} = ((45*{_i})):
				exit loop
		create gui slot 49 of {_p} with door named "&cMain Page" to close then run function reportLogs({_p}, 0, {_g})
		(amount of {report.logs.lite::*}) > {_pageStart} + 45:
			create gui slot 53 of {_p} with arrow named "&9Next Page" to close then run function reportLogs({_p}, ({_page}+1), {_g})
		{_page} > 0:
			create gui slot 45 of {_p} with arrow named "&9Previous Page" to close then run function reportLogs({_p}, ({_page}-1), {_g})
	{_t} is "HEAVY":
		set {_g} to "{@loggingrate}" parsed as text
		loop {report.logs.heavy::*}:
			(loop-index parsed as integer) > {_pageStart}
			set {_player} to "%loop-value%" parsed as offline player
			create gui slot {_a} of {_p} with paper named "%loop-value%"
			add 1 to {_a}
			{_a} = ((45*{_i})):
				exit loop
		create gui slot 49 of {_p} with door named "&cMain Page" to close then run function reportLogs({_p}, 0, {_g})
		(amount of {report.logs.heavy::*}) > {_pageStart} + 45:
			create gui slot 53 of {_p} with arrow named "&9Next Page" to close then run function reportLogs({_p}, ({_page}+1), {_g})
		{_page} > 0:
			create gui slot 45 of {_p} with arrow named "&9Previous Page" to close then run function reportLogs({_p}, ({_page}-1), {_g})
function reportList(p: player, page: number):
	set {_pageStart} to 45*{_page}
	set {_i} to 1
	set {_a} to 0
	open virtual chest inventory with 6 rows named "&4Page %{_page}%" to {_p}
	loop {reports::*}:
		(loop-index parsed as integer) > {_pageStart}
		set {_player} to "%loop-value%" parsed as offline player
		create gui slot {_a} of {_p} with paper named "%loop-value%" 
		add 1 to {_a}
		{_a} = ((45*{_i})):
			exit loop
	create gui slot 49 of {_p} with door named "&cMain Page" to close then run function reportList({_p}, 0)
	(amount of {reports::*}) > {_pageStart} + 45:
		create gui slot 53 of {_p} with arrow named "&9Next Page" to close then run function reportList({_p}, ({_page}+1))
	{_page} > 0:
		create gui slot 45 of {_p} with arrow named "&9Previous Page" to close then run function reportList({_p}, ({_page}-1))
command /{@command} [<text>] [<text>]:
	trigger:
		arg 1 is not set:
			player does not have permission "{@perm}":
				send "&6&m-----------------------------------------------------"
				send "                                  &a&lReportsX"
				send "                                &7Coded by xd0"
				send ""
				send "&c/{@command} <Player> <Reason> &8- &7Report a Player."
				send "&c/{@command} close &8- &7Closes your open report."
				send ""
				send "&6&m-----------------------------------------------------"
			send "&6&m-----------------------------------------------------"
			send "                                  &a&lReportsX"
			send "                                &7Coded by xd0"
			send ""
			send "&c/{@command} <Player> <Reason> &8- &7Report a Player."
			send "&c/{@command} check <Player> &8- &7Check a Report."
			send "&c/{@command} delete <Player> &8- &7Delete a report."
			send "&c/{@command} close &8- &7Closes your open report."
			send "&c/{@command} list&8- &7Lists currently opened reports."
			player has permission "{@adminperm}":
				send "&c/{@command} admin&8- &7Opens the Admin Panel."
				send "&c/{@command} ver/version&8- &7Displays the version of ReportX."
				send "&c/{@command} toggle&8- &7Toggles whether you will receive alerts."
			send ""
			send "&6&m-----------------------------------------------------"
		arg 1 is not "check", "delete", "list", "admin", "clear", "reload", "toggle", "ver", "version", "logs" or "close":
			arg 2 is set:
				{reports.%event-player%} = {reports::*}:
					send "{@prefix}&c You already opened a report."
					stop
				set {_player} to "%arg 1%" parsed as offline player
				set {_reason} to "%arg 2%" parsed as text
				set {report.date::%player%} to now
				set {reports.%player%} to "{@ReportListMSG}" parsed as string
				add {reports.%player%} to {reports::*}
				set {report::%player%::player} to {_player}
				set {report.commanduse.date} to now
				set {report.log} to "&b%event-player%&7 used &b/{@command} at %{report.commanduse.date}%"
				add {report.log} to {report.logs.heavy::*}
				send "{@prefix} {@FinishedReportMSG}"
				{reports.toggle} = true:
					loop all players:
						loop-player has permission "{@perm}":
							{reports.alerts.%loop-player%} = true:
								send "{@prefix} &7There is a new Report! &bNeeded: &9Staff-Member" to loop-player
								send "{@prefix} &c%player% &7reported &c%{_player}%&7 for &c%{_reason}%" to loop-player
								stop
							stop
				loop all players:
					loop-player has permission "{@perm}":
						send "{@prefix} &cReport alerts have been toggled off by an administrator!" to loop-player
						send "{@prefix} &cContact an administrator to toggle alerts on!" to loop-player
						stop
			send "{@prefix} Use &c/{@command} <Player> <Reason>"
		arg-1 = "logs":
			player has permission "{@adminperm}":
				set {report.commanduse.date} to now
				set {report.log} to "&b%event-player%&7 used &b/{@command} logs at %{report.commanduse.date}%"
				add {report.log} to {report.logs.heavy::*}
				set {_t} to "{@loggingrate}" parsed as text
				reportLogs(Player, 0, {_t})
		arg-1 = "ver" or "version":
			player has permission "{@adminperm}":
				set {report.commanduse.date} to now
				set {report.log} to "&b%event-player%&7 used &b/{@command} ver at %{report.commanduse.date}%"
				add {report.log} to {report.logs.heavy::*}
				send "{@prefix} &cYou are running ReportX version &b{@version}"
			else:
				send "{@NoPermissionMessage}"
		arg-1 = "toggle":
			player has permission "{@perm}":
				{reports.alerts.%event-player%} = true:
					set {report.commanduse.date} to now
					set {report.log} to "&b%event-player%&7 turned off personal alerts at %{report.commanduse.date}%"
					add {report.log} to {report.logs.heavy::*}
					set {reports.alerts.%event-player%} to false
					send "{@prefix} {@ReportDisabledToggleMessage}"
				{reports.alerts.%event-player%} = false:
					set {reports.alerts.%event-player%} to true
					set {report.commanduse.date} to now
					set {report.log} to "&b%event-player%&7 turned on personal alerts at %{report.commanduse.date}%"
					add {report.log} to {report.logs.heavy::*}
					send "{@prefix} {@ReportEnabledToggleMessage}"
				{reports.alerts.%event-player%} is not set:
					set {report.commanduse.date} to now
					set {report.log} to "&b%event-player%&7 turned off personal alerts at %{report.commanduse.date}%"
					add {report.log} to {report.logs.heavy::*}
					set {reports.alerts.%event-player%} to false
					send "{@prefix} {@ReportDisabledToggleMessage}"
			else:
				send "{@NoPermissionMessage}"
		arg-1 = "list": 
			player has permission "{@perm}":
				set {report.commanduse.date} to now
				set {report.log} to "&b%event-player%&7 used &b/{@command} list at %{report.commanduse.date}%"
				add {report.log} to {report.logs.heavy::*}
				{reports::*} is set:
					reportList(Player, 0)
					stop
				send "{@prefix} {@NoReportListMessage}"
			else:
				send "{@NoPermissionMessage}"
		arg-1 = "close":
			{reports.%event-player%} = {reports::*}:
				set {report.commanduse.date} to now
				set {report.log} to "&b%event-player%&7 used &b/{@command} close at %{report.commanduse.date}%"
				add {report.log} to {report.logs.heavy::*}
				delete {report::%player%}
				remove {reports.%event-player%} from {reports::*}
				send "{@prefix} {@CloseReportMessage}"
			else:
				send "{@prefix} {@MustHaveReportMessage}"
		arg-1 = "clear":
			player has permission "{@adminperm}":
				clear {reports::*}
				send "{@prefix} {@ClearedAllReportsMessage}"
				set {report.commanduse.date} to now
				set {report.log} to "&b%event-player%&7 used &b/{@command} clear at %{report.commanduse.date}%"
				add {report.log} to {report.logs.lite::*}
				add {report.log} to {report.logs.heavy::*}
				execute player command "/report admin"
			else:
				send "{@NoPermissionMessage}"
		arg-1 = "check":
			player has permission "{@perm}":
				arg-2 is set:
					{reports.%arg-2%} = {reports::*}:
						{report::%arg-2%::player} is online:
							teleport event-player to {report::%arg-2%::player}
							execute player command "/v"
							remove {reports.%arg-2%} from {reports::*}
							set {report.commanduse.date} to now
							set {report.log} to "&b%event-player%&7 used &b/{@command} check at %{report.commanduse.date}%"
							add {report.log} to {report.logs.heavy::*}
							send "{@prefix} {@CheckReportMSG}"
							loop all players:
								loop-player has permission "{@perm}":
									send "{@prefix} {@CheckReportBroadcastMSG}" to loop-player
									stop
								stop
						else:
							send "{@prefix} {@NotOnlinePlayerMessage}"
					else:
						send "{@prefix} {@NoOpenReportMessage}"
				else:
					send "{@prefix} {@SpecifyCheckPlayerMessage}"
			else:
				send "{@NoPermissionMessage}"
		arg-1 = "reload": 
			if player has permission "{@adminperm}":
				{Report.Debug} = true:
					set {report.commanduse.date} to now
					set {report.log} to "&b%event-player%&7 used &b/{@command} reload at %{report.commanduse.date}%"
					add {report.log} to {report.logs.lite::*}
					add {report.log} to {report.log.heavy::*}
					send "{@prefix} &4&lDEBUG MODE ENABLED: &cConfiguration reloading. May cause a lag spike..."
					execute player command "/skript reload ReportX"
					wait 5 ticks
					send "{@prefix} {@ConfigurationMessage}"
					loop all players:
						loop-player has permission "{@perm}":
							send "{@prefix} {@ConfigurationBroadcastMSG}" to loop-player
					execute player command "/report admin"
				{Report.Debug} = false:
					set {report.commanduse.date} to now
					set {report.log} to "&b%event-player%&7 used &b/{@command} reload at %{report.commanduse.date}%"
					add {report.log} to {report.logs.lite::*}
					add {report.log} to {report.log.heavy::*}
					send "{@prefix} &4&lDEBUG MODE DISABLED: &cConfiguration reloading. May cause a lag spike..."
					execute console command "/skript reload ReportX"
					wait 5 ticks
					send "{@prefix} {@ConfigurationMessage}"
					loop all players:
						loop-player has permission "{@perm}":
							send "{@prefix} {@ConfigurationBroadcastMSG}" to loop-player
					execute player command "/report admin"
			else:
				send "{@NoPermissionMessage}"
		arg-1 = "delete":
			player has permission "{@perm}":
				arg 2 is set:
					{reports.%arg-2%} = {reports::*}:
						set {_player} to "%arg 2%" parsed as offline player
						remove {reports.%arg-2%} from {reports::*}
						set {report.commanduse.date} to now
						set {report.log} to "&b%event-player%&7 used &b/{@command} delete at %{report.commanduse.date}%"
						add {report.log} to {report.logs.heavy::*}
						{playerReceiveCloseMessage.toggle} = true:
							send "{@prefix} {@ClosedReportToReporterMessage}" to {_player}
						send "{@prefix} {@ClosedReportToYouMSG}"
						loop all players:
							loop-player has permission "{@perm}":
								send "{@prefix} {@ClosedReportBroadcastMSG}" to loop-player
					else:
						send "{@prefix} {@NoOpenReportMessage}"
				else:
					send "{@prefix} {@SpecifyCheckPlayerMessage}"
			else:
				send "{@NoPermissionMessage}"
		arg-1 = "admin":
			player has permission "{@adminperm}":
				set {report.commanduse.date} to now
				set {report.log} to "&b%event-player%&7 used &b/{@command} admin at %{report.commanduse.date}%"
				add {report.log} to {report.logs.lite::*}
				add {report.log} to {report.logs.heavy::*}
				open virtual chest inventory with 5 rows named "{@prefix} &c&lAdmin Panel" to player
				create gui slot 10 of player with red stained glass named "&a&lReload&7 the Configuration" with lore "&8Fully reloads all options in the config file." to run player command "/report reload"
				create gui slot 13 of player with redstone block named "&c&lClear&7 opened reports" with lore "&8Clears all currently opened reports." to run player command "/report clear"
				create gui slot 16 of player with clay ball named "&a&lToggle&7 debug-mode" with lore "&8Debug mode is currently %{debug}%." to run function toggleDebug(Player)
				create gui slot 31 of player with book named "&4&lClear&7 all command logs" with lore "&8Logs were last cleared by &c%{logs.clearer}%&7 at &c%{logs.cleardate}%." to run function clearLogs(Player)
				create gui slot 28 of player with redstone torch on named "&a&lToggle&7 in-game alerts" with lore "&8In-Game Alerts are currently %{reports.toggle}%" to run function toggleAlerts(Player)
				create gui slot 34 of player with paper named "&a&lToggle&7 closing report messages" with lore "&8Players getting reports are currently %{playerReceiveCloseMessage.toggle}%" to run function toggleCloseReportMessage(Player)
			else:
				send "{@NoPermissionMessage}"	
#===============================================				
				
#=============================================== Admin Panel Script
function clearLogs(p: player):
	{report.logs.lite::*} is set:
		clear {report.logs.lite::*}
		set {logs.clearer} to {_p}
		set {logs.cleardate} to now
		send "{@prefix} {@ClearLogsMessage}" to {_p}
		stop
	send "{@prefix} {@NoLogsMessage}" to {_p}
function toggleDebug(p: player):
	{Report.Debug} = true:
		set {Report.Debug} to false
		set {debug} to "&cDisabled" parsed as string
		set {report.commanduse.date} to now
		set {report.log} to "&b%{_p}%&7 disabled debug mode at %{report.commanduse.date}%"
		add {report.log} to {report.logs.lite::*}
		send "{@prefix} {@DebugDisableMessage}" to {_p}
		execute {_p} command "/report admin"
		loop all players:
			loop-player has permission "{@perm}":
				send "{@prefix} {@DebugDisableBroadcastMSG}" to loop-player
				stop
	{Report.Debug} = false:
		set {Report.Debug} to true
		set {debug} to "&aEnabled" parsed as string
		set {report.commanduse.date} to now
		set {report.log} to "&b%{_p}%&7 enabled debug mode at %{report.commanduse.date}%"
		add {report.log} to {report.logs.lite::*}
		send "{@prefix} {@DebugEnableMessage}" to {_p}
		execute {_p} command "/report admin"
		loop all players:
			loop-player has permission "{@perm}":
				send "{@prefix} {@DebugEnableBroadcastMSG}" to loop-player
function toggleAlerts(p: player):
	{reports.toggle} = true:
		set {reports.toggle} to false
		set {report.commanduse.date} to now
		set {report.log} to "&b%{_p}%&7 turned off alerts at %{report.commanduse.date}%"
		add {report.log} to {report.logs.lite::*}
		send "{@prefix} &4You have just turned off all in-game report alerts. To re-enable them, go into the admin panel and click toggle alerts." to {_p}
		execute {_p} command "/report admin"
		stop
	{reports.toggle} = false:
		set {reports.toggle} to true
		set {report.commanduse.date} to now
		set {report.log} to "&b%{_p}%&7 turned on alerts at %{report.commanduse.date}%"
		add {report.log} to {report.logs.lite::*}
		send "{@prefix} &aYou have just turned on all in-game report alerts. It is highly recommended to keep this setting on." to {_p}
		execute {_p} command "/report admin"		
function toggleCloseReportMessage(p: player):
	{playerReceiveCloseMessage.toggle} = true:
		set {playerReceiveCloseMessage.toggle} to false
		set {report.commanduse.date} to now
		set {report.log} to "&b%{_p}%&7 turned off report messages at %{report.commanduse.date}%"
		add {report.log} to {report.logs.lite::*}
		execute {_p} command "/report admin"
		send "{@prefix} {@DisablePlayerReceiveReportMessage}" to {_p}
		loop all players:
			loop-player has permission "{@perm}":
				send "{@prefix} {@DisablePlayerReceiveReportBroadcastMSG}" to loop-player
				stop
	else:
		set {playerReceiveCloseMessage.toggle} to true
		set {report.commanduse.date} to now
		set {report.log} to "&b%{_p}%&7 turned off report messages at %{report.commanduse.date}%"
		add {report.log} to {report.logs.lite::*}
		execute {_p} command "/report admin"
		send "{@prefix} {@EnablePlayerReceiveReportMessage}" to {_p}
		loop all players:
			loop-player has permission "{@perm}":
				send "{@prefix} {@EnablePlayerReceiveReportBroadcastMSG}" to loop-player