1local function getSkillId(skillName)
2 if skillName == "club" then
3 return SKILL_CLUB
4 elseif skillName == "sword" then
5 return SKILL_SWORD
6 elseif skillName == "axe" then
7 return SKILL_AXE
8 elseif skillName:sub(1, 4) == "dist" then
9 return SKILL_DISTANCE
10 elseif skillName:sub(1, 6) == "shield" then
11 return SKILL_SHIELD
12 elseif skillName:sub(1, 4) == "fish" then
13 return SKILL_FISHING
14 else
15 return SKILL_FIST
16 end
17end
18
19local function getExpForLevel(level)
20 level = level - 1
21 return ((50 * level * level * level) - (150 * level * level) + (400 * level)) / 3
22end
23
24function onSay(player, words, param)
25 if player:getGroup():getId() < 3 then
26 return false
27 end
28 local split = param:splitTrimmed(",")
29 if not split[2] then
30 player:sendCancelMessage("Insufficient parameters.")
31 return false
32 end
33
34 local target = Player(split[1])
35 if not target then
36 player:sendCancelMessage("A player with that name is not online.")
37 return false
38 end
39
40 local count = 1
41 if split[3] then
42 count = tonumber(split[3])
43 end
44
45 local ch = split[2]:sub(1, 1)
46 for i = 1, count do
47 if ch == "l" or ch == "e" then
48 target:addExperience(getExpForLevel(target:getLevel() + 1) - target:getExperience(), false)
49 elseif ch == "m" then
50 target:addManaSpent(target:getVocation():getRequiredManaSpent(target:getBaseMagicLevel() + 1) - target:getManaSpent())
51 else
52 local skillId = getSkillId(split[2])
53 target:addSkillTries(skillId, target:getVocation():getRequiredSkillTries(skillId, target:getSkillLevel(skillId) + 1) - target:getSkillTries(skillId))
54 end
55 end
56 return false
57end
58