By:MaXwEllDeN
Esse editor tira toda minha IDENTAÇÃO!!!!
#Introdução
Este é um sistema muito simples e básico que eu fiz baseando-me no jogo Mu Online, no qual ao avançar de nível você ganha pontos que podem ser distribuídos para aumentar seus "stats".
#Instalação
@Creaturescripts
Primeiro abra a pasta creaturescripts/scripts que fica dentro da pasta data do seu servidor, abra o arquivo login.lua, com algum editor de texto, e lá no final antes do último return true cole a seguinte linha:
registerCreatureEvent(cid, "PointSystem")
Agora na pasta creaturescripts/scripts copie qualquer arquivo com extenção .lua e nomeie ele para PointsSystem, abra ele com algum editor de texto, delete todo seu conteúdo, e preencha-o com o seguinte código:
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) &--#60; newlevel) then
if (getPlayerStorageValue(cid, 14574) &--#60; 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
#TAG
&--#60;event type="advance" name="PointSystem" event="script" value="PointsSystem.lua"/&--#62;
@Talkaction
Agora abra a pasta talkactions/scripts que fica dentro da pasta data do seu servidor, copie qualquer arquivo com extenção .lua e nomeie ele para PointsSystem, abra ele com algum editor de texto, delete todo seu conteúdo, e preencha-o com o seguinte código:
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) &--#60; 0) then
setPlayerStorageValue(cid, 14574, 0)
end
local skillids = {
["shielding"] = 5,
["sword"] = 2,
["axe"] = 3,
["club"] = 1,
["distance"] = 4
}
local attributes = {
["vitalidade"] = {np = 2, vl = 5, nm = "Hit Points"}, -- Precisa usar 2 points para adicionar 10 de 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 by MaXwEllDeN ~*~*~\n\nPontos disponíveis: ".. getPlayerStorageValue(cid, 14574) .."\nPontos por level: ".. VocPoints[getPlayerVocation(cid)])
elseif (p2[1] and p2[1] == "add") and (attributes[p2[2]]) and (tonumber(p2[3])) then
if (getPlayerStorageValue(cid, 14574) &--#60; tonumber(p2[3]) * attributes[p2[2]].np) then
doPlayerSendCancel(cid, "Você não tem pontos suficientes para distribuir!")
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 &--#62; 1) and "s" or ""
msgx = msgx .. string.upper(i:sub(1,1)) .. i:sub(2, #i) .. " - ".. v.np .. " ponto".. add .. " ~ " .. v.vl .. " ".. v.nm .. "\n"
end
doPlayerPopupFYI(cid, "~*~*~ Level Points System by MaXwEllDeN ~*~*~\n\nPontos necessários para aumentar os stats:\n\n".. msgx .. "\nExemplo de uso: ".. words .." add, vitalidade, 5\n\nPontos disponíveis: ".. getPlayerStorageValue(cid, 14574))
end
return true
end
#TAG
&--#60;talkaction words="!points" event="script" value="PointsSystem.lua"/&--#62;
#Configuração
No arquivo PointsSystem.lua da pasta creaturescripts/scripts:
local VocPoints = {
[1] = 3,
[2] = 3,
[3] = 3,
[4] = 5,
[5] = 5,
[6] = 5,
[7] = 5,
[8] = 8,
}
entre Colchetes fica o id da vocation, e depois do sinal de igualdade a quantidade de pontos que ele ganhará por level que for upado.
No arquivo PointsSystem.lua da pasta talkactions/scripts:
local VocPoints = {
[1] = 3,
[2] = 3,
[3] = 3,
[4] = 5,
[5] = 5,
[6] = 5,
[7] = 5,
[8] = 8,
}
entre Colchetes fica o id da vocation, e depois do sinal de igualdade a quantidade de pontos que ele ganhará por level que for upado.
local attributes = {
["vitalidade"] = {np = 2, vl = 5, nm = "Hit Points"}, -- Precisa usar 2 points para adicionar 10 de 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 - quantidade de pontos para adicionar o stat
vl - quanto vai adicioanar pelo np. Exemplo:
["vitalidade"] = {np = 2, vl = 5, nm = "Hit Points"}
Com 2 pontos eu compro 5 de HP
É isso ai galera, bye bye