LevellerSk.sk

Created by ImOfflinezzz

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.

options:
	
	#Messages
	#Use [exp],[level],[something] as placeholders and || as new line
	msg.levelUp: "&7======================||&7   ||	   &aLEVEL UP!	  ||&7You are now at level &a[level]||&7   ||&7======================"
	msg.addXp: "&9+[exp] experience"
	msg.levelCmdOutput: "&7======================||&7   ||&7You have level &e[level]||&7You have &a[exp]&7/&e[levelup-exp] &7experience||&7   ||&7======================"
	
	#Settings
	st.startLevel: 0
	st.levelUpXpBase: 25
	st.levelUpXpMultiplier: 2 

variables:
	#Permissions(like default,vip,ultra,premium
	#{lsk.booster::default} = 1
	{lsk.booster::vip} = 2
	{lsk.booster::ultra} = 3
	{lsk.booster::premium} = 5

on join:
	if {level::%player%} isn't set:
		set {level::%player%} to {@st.startLevel}
		set {level.exp::%player%} to 0
		set {levelup.exp::%player%} to {@st.levelUpXpBase}

		
function addLevelExp(p: player,a: integer):
	set {_msg1} to {@msg.addXp}
	loop {lsk.booster::*}:
		if player has permission "lsk.%loop-index%":
			if {_b} is less than loop-value:
				set {_b} to loop-value
	set {_n} to {_a} * {_b}
	replace all "[exp]" with "%{_a}%" in {_msg1}
	send {_msg1} to {_p}
	loop {_a} times:
		add 1 to {level.exp::%{_p}%}
		if {level.exp::%{_p}%} is more than ({levelup.exp::%{_p}%} - 1):
			set {levelup.exp::%{_p}%} to {levelup.exp::%{_p}%} * {@st.levelUpXpMultiplier}
			set {level::%{_p}%} to {level::%{_p}%} + 1
			set	{_msg2} to {@msg.levelUp}
			replace all "[level]" with "%{level::%{_p}%}%" in {_msg2}
			message {_msg2 to {_p}

function getLevel(p: player) :: integer:
	return {level::%{_p})

function getLevelExp(p: player) :: integer:
	return {level.exp::%{_p})

function getLevelUpExp(p: player) :: integer:
	return {levelup.exp::%{_p})
		
function wipeLevelStats(p: player):
	delete {level::%{_p}%}
	delete {level.exp::%{_p}%}
	delete {levelup.exp::%{_p}%}
	
command /level:
	trigger:
		set {_p} to player
		set {_msg} to {@msg.levelCmdOutput}
		replace all "[level]" with "%{level::%{_p}%}%" in {_msg}
		replace all "[exp]" with "%{level.exp::%{_p}%}%" in {_msg}
		replace all "[levelup-exp]" with "%{levelup.exp::%{_p}%}%" in {_msg}
		message {_msg} to player

command /leveltop [text] [integer]:
	   trigger:
		if arg-1 is "level" or "lvl":
			set {_v} to "level"
			set {_vl} to "Level"
		else if arg-1 is "experience" or "exp" or "xp":
			set {_v} to "level.exp"
			set {_vl} to "Exp"
		else:
			send "&cWrong argument error - use &e/leveltop (level/lvl|exp/xp/experience)"
			stop trigger
		loop {%{_v}%::*}:
			{_l} is less than arg-2
			add 1 to {_size}
			if {_sorted.list::%loop-value%} is not set:
				set {_sorted.list::%loop-value%} to loop-index
			else:
				set {_n} to 0
				loop {_size} times:
					set {_n} to {_n}+1
					{_sorted.list:%loop-value-1%.%{_n}%} is not set
					set {_sorted.list::%loop-value-1%.%{_n}%} to loop-index
					stop loop
			add 1 to {_l}
		wait 1 tick
		set {_n} to size of {_sorted.list::*}
		loop {_sorted.list::*}:
			set {_sorted.list::%{_n}%} to loop-value
			set {_n} to {_n}-1
		wait 1 tick
		set {_i} to 0
		send "&7======================"
		send "	  Top %arg-2% Players"
		loop {_sorted.list::*}:
			add 1 to {_topnumber}
			set {_player} to "%loop-value%" parsed as offlineplayer
			send "&e%{_topnumber}%&7.&e%{_player}% &7- &e%{%{_v}%::%loop-value%}% %{_vl}"
			add 1 to {_i}
			if {_topnumber} is more than (arg-1 - 1)
				stop
		send "&7======================"