First commit
This commit is contained in:
		
							
								
								
									
										66
									
								
								app/SabrehavenServer/data/talkactions/scripts/add_skill.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								app/SabrehavenServer/data/talkactions/scripts/add_skill.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,66 @@
 | 
			
		||||
local function getSkillId(skillName)
 | 
			
		||||
	if skillName == "club" then
 | 
			
		||||
		return SKILL_CLUB
 | 
			
		||||
	elseif skillName == "sword" then
 | 
			
		||||
		return SKILL_SWORD
 | 
			
		||||
	elseif skillName == "axe" then
 | 
			
		||||
		return SKILL_AXE
 | 
			
		||||
	elseif skillName:sub(1, 4) == "dist" then
 | 
			
		||||
		return SKILL_DISTANCE
 | 
			
		||||
	elseif skillName:sub(1, 6) == "shield" then
 | 
			
		||||
		return SKILL_SHIELD
 | 
			
		||||
	elseif skillName:sub(1, 4) == "fish" then
 | 
			
		||||
		return SKILL_FISHING
 | 
			
		||||
	else
 | 
			
		||||
		return SKILL_FIST
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local function getExpForLevel(level)
 | 
			
		||||
	level = level - 1
 | 
			
		||||
	return ((50 * level * level * level) - (150 * level * level) + (400 * level)) / 3
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function onSay(player, words, param)
 | 
			
		||||
	if not player:getGroup():getAccess() then
 | 
			
		||||
		return true
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	if player:getAccountType() < ACCOUNT_TYPE_GOD then
 | 
			
		||||
		return false
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	local split = param:split(",")
 | 
			
		||||
	if split[2] == nil then
 | 
			
		||||
		player:sendCancelMessage("Insufficient parameters.")
 | 
			
		||||
		return false
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	local target = Player(split[1])
 | 
			
		||||
	if target == nil then
 | 
			
		||||
		player:sendCancelMessage("A player with that name is not online.")
 | 
			
		||||
		return false
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	-- Trim left
 | 
			
		||||
	split[2] = split[2]:gsub("^%s*(.-)$", "%1")
 | 
			
		||||
 | 
			
		||||
	local count = 1
 | 
			
		||||
	if split[3] ~= nil then
 | 
			
		||||
		count = tonumber(split[3])
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	local ch = split[2]:sub(1, 1)
 | 
			
		||||
	for i = 1, count do
 | 
			
		||||
		if ch == "l" or ch == "e" then
 | 
			
		||||
			target:addExperience(getExpForLevel(target:getLevel() + 1) - target:getExperience(), false)
 | 
			
		||||
		elseif ch == "m" then
 | 
			
		||||
			target:addManaSpent(target:getVocation():getRequiredManaSpent(target:getBaseMagicLevel() + 1) - target:getManaSpent())
 | 
			
		||||
		else
 | 
			
		||||
			local skillId = getSkillId(split[2])
 | 
			
		||||
			target:addSkillTries(skillId, target:getVocation():getRequiredSkillTries(skillId, target:getSkillLevel(skillId) + 1) - target:getSkillTries(skillId))
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	return false
 | 
			
		||||
end
 | 
			
		||||
		Reference in New Issue
	
	Block a user