Zysen
=)
#Introduction
This is a basic system in which you gain points by leveling your character.These points can be distributed to increase your "stats".
Tested in : TFS 0.3.6 , 8.60
#Credits to:
MaXwEllDeN
Me (Zysen)
#Installation
@Creaturescripts
Go to data/creaturescripts/scripts and find a LUA file called login.lua,then add this :
After that,go to data/creaturescripts/scripts,copy a LUA file,rename it to PointsSystem. Enter the file and delete the content. Then copy-paste this:
Now go to data/creaturescripts ,and open creaturescripts.xml ! Then add this :
@Talkaction
Go to data/talkactions/scripts and copy a LUA file and rename it to PointsSystem. Then open it,delete the content,and copy-paste this :
Now go to data/talkactions, and open talkactions.xml ! Then add this :
#Configuration
In the file PointsSystem.lua , data/creaturescripts/scripts :
Between the brackets is the id of the vocation,and the numbers next to the vocation ids are the amount of points that players earn per level.
In the file PointsSystem.lua, data/talkactions/scripts:
Between the brackets is the id of the vocation,and the numbers next to the vocation ids are the amount of points that players earn per level.
np - the amount of points that you need to spend
vl - how much will it heal
Example :
With 2 points you'll get 5 HP.
/Zysen.
This is a basic system in which you gain points by leveling your character.These points can be distributed to increase your "stats".
Tested in : TFS 0.3.6 , 8.60
#Credits to:
MaXwEllDeN
Me (Zysen)
#Installation
@Creaturescripts
Go to data/creaturescripts/scripts and find a LUA file called login.lua,then add this :
Code:
registerCreatureEvent(cid, "PointSystem")
After that,go to data/creaturescripts/scripts,copy a LUA file,rename it to PointsSystem. Enter the file and delete the content. Then copy-paste this:
Code:
local VocPoints = {
[1] = 3,
[2] = 3,
[3] = 3,
[4] = 5,
[5] = 5,
[6] = 5,
[7] = 5,
[8] = 8,
}
function onAdvance(cid, skill, oldlevel, newlevel)
if not (VocPoints[getPlayerVocation(cid)]) then
return true
end
if (skill == 8) then
if (getPlayerStorageValue(cid, 14573) < newlevel) then
if (getPlayerStorageValue(cid, 14574) < 0) then
setPlayerStorageValue(cid, 14574, 0)
setPlayerStorageValue(cid, 14573, 0)
end
setPlayerStorageValue(cid, 14573, newlevel)
setPlayerStorageValue(cid, 14574, getPlayerStorageValue(cid, 14574) + (newlevel - oldlevel) * (VocPoints[getPlayerVocation(cid)]))
doSendAnimatedText(getThingPos(cid), "+" .. (newlevel - oldlevel) * (VocPoints[getPlayerVocation(cid)]), 18)
end
end
return true
end
Now go to data/creaturescripts ,and open creaturescripts.xml ! Then add this :
Code:
<event type="advance" name="PointSystem" event="script" value="PointsSystem.lua"/>
@Talkaction
Go to data/talkactions/scripts and copy a LUA file and rename it to PointsSystem. Then open it,delete the content,and copy-paste this :
Code:
local VocPoints = {
[1] = 3,
[2] = 3,
[3] = 3,
[4] = 5,
[5] = 5,
[6] = 5,
[7] = 5,
[8] = 8,
}
function onSay(cid, words, param)
if not (VocPoints[getPlayerVocation(cid)]) then
return false
end
local param = param:lower()
local p2 = string.explode(param, ",")
if (getPlayerStorageValue(cid, 14574) < 0) then
setPlayerStorageValue(cid, 14574, 0)
end
local skillids = {
["shielding"] = 5,
["sword"] = 2,
["axe"] = 3,
["club"] = 1,
["distance"] = 4
}
local attributes = {
["vitality"] = {np = 2, vl = 5, nm = "Hit Points"}, -- Need to use two points to add 10 hp
["energy"] = {np = 4, vl = 2, nm = "Mana Points"},
["magic"] = {np = 30, vl = 1, nm = "Magic Level"},
["shielding"] = {np = 40, vl = 1, nm = "Shielding Skill"},
["sword"] = {np = 20, vl = 1, nm = "Sword Skill"},
["axe"] = {np = 20, vl = 1, nm = "Axe Skill"},
["club"] = {np = 20, vl = 1, nm = "Club Skill"},
["distance"] = {np = 20, vl = 1, nm = "Distance Skill"},
}
if (param == "check") then
doPlayerPopupFYI(cid, "Level Points System\n\nPoints available: ".. getPlayerStorageValue(cid, 14574) .."\nPoints per level: ".. VocPoints[getPlayerVocation(cid)])
elseif (p2[1] and p2[1] == "add") and (attributes[p2[2]]) and (tonumber(p2[3])) then
if (getPlayerStorageValue(cid, 14574) < tonumber(p2[3]) * attributes[p2[2]].np) then
doPlayerSendCancel(cid, "You do not have enough points to distribute!")
return doSendMagicEffect(getThingPos(cid), 2)
end
if (p2[2] == "vitalidade") then
setCreatureMaxHealth(cid, getCreatureMaxHealth(cid) + attributes[p2[2]].vl * tonumber(p2[3]))
doCreatureAddHealth(cid, attributes[p2[2]].vl * tonumber(p2[3]))
elseif (p2[2] == "energy") then
setCreatureMaxMana(cid, getCreatureMaxMana(cid) + attributes[p2[2]].vl * tonumber(p2[3]))
doCreatureAddMana(cid, attributes[p2[2]].vl * tonumber(p2[3]))
elseif(skillids[p2[2]]) then
for a = 1, tonumber(p2[3]) do
doPlayerAddSkillTry(cid, skillids[p2[2]], getPlayerRequiredSkillTries(cid, skillids[p2[2]], getPlayerSkillLevel(cid, skillids[p2[2]]) + 1) - getPlayerSkillTries(cid, skillids[p2[2]]), false)
end
end
doSendMagicEffect(getThingPos(cid), 29)
doSendMagicEffect(getThingPos(cid), 30)
doSendAnimatedText(getThingPos(cid), "-" .. tonumber(p2[3]) * attributes[p2[2]].np, 180)
setPlayerStorageValue(cid, 14574, getPlayerStorageValue(cid, 14574) - tonumber(p2[3]) * attributes[p2[2]].np)
else
local msgx = ""
for i, v in pairs(attributes) do
local add = (v.np > 1) and "s" or ""
msgx = msgx .. string.upper(i:sub(1,1)) .. i:sub(2, #i) .. " - ".. v.np .. " point".. add .. " ~ " .. v.vl .. " ".. v.nm .. "\n"
end
doPlayerPopupFYI(cid, "Level Points System\n\nPoints needed to increase stats:\n\n".. msgx .. "\nExample of use: ".. words .." add, vitality, 5\n\nPoints available: ".. getPlayerStorageValue(cid, 14574))
end
return true
end
Now go to data/talkactions, and open talkactions.xml ! Then add this :
Code:
<talkaction words="!points" event="script" value="PointsSystem.lua"/>
#Configuration
In the file PointsSystem.lua , data/creaturescripts/scripts :
Code:
local VocPoints = {
[1] = 3,
[2] = 3,
[3] = 3,
[4] = 5,
[5] = 5,
[6] = 5,
[7] = 5,
[8] = 8,
}
Between the brackets is the id of the vocation,and the numbers next to the vocation ids are the amount of points that players earn per level.
In the file PointsSystem.lua, data/talkactions/scripts:
Code:
local VocPoints = {
[1] = 3,
[2] = 3,
[3] = 3,
[4] = 5,
[5] = 5,
[6] = 5,
[7] = 5,
[8] = 8,
}
Between the brackets is the id of the vocation,and the numbers next to the vocation ids are the amount of points that players earn per level.
Code:
local attributes = {
["vitality"] = {np = 2, vl = 5, nm = "Hit Points"}, -- Need to use two points to add 10 hp
["energy"] = {np = 4, vl = 2, nm = "Mana Points"},
["magic"] = {np = 30, vl = 1, nm = "Magic Level"},
["shielding"] = {np = 40, vl = 1, nm = "Shielding Skill"},
["sword"] = {np = 20, vl = 1, nm = "Sword Skill"},
["axe"] = {np = 20, vl = 1, nm = "Axe Skill"},
["club"] = {np = 20, vl = 1, nm = "Club Skill"},
["distance"] = {np = 20, vl = 1, nm = "Distance Skill"},
}
np - the amount of points that you need to spend
vl - how much will it heal
Example :
Code:
["vitality"] = {np = 2, vl = 5, nm = "Hit Points"}
With 2 points you'll get 5 HP.
/Zysen.
Last edited: