mirror of
https://github.com/ErikasKontenis/SabrehavenServer.git
synced 2025-10-15 06:54:54 +02:00
Full Distribution
This commit is contained in:
66
data/talkactions/scripts/add_skill.lua
Normal file
66
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