Postado Abril 16, 2015 10 anos O sistema é simples ao upar cada level você ganha x pontos de habilidade, onde é possível com esse pontos, comprar mana, hp, skill, etc ... /creaturescripts/scripts/skillpoints.lua Mostrar conteúdo oculto local function addSkills(player, skillId) player:addSkillTries(skillId, math.ceil(player:getVocation():getRequiredSkillTries(skill, player:getSkillLevel(skill) + 1) / configManager.getNumber(configKeys.RATE_SKILL))) return false end local skillids = { ["shield"] = SKILL_SHIELD, ["sword"] = SKILL_SWORD, ["axe"] = SKILL_AXE, ["club"] = SKILL_CLUB, ["fist"] = SKILL_FIST, ["dist"] = SKILL_DISTANCE } local attributes = { ["health"] = {reqPoints = 1, increaseBy = 2, name = "Hit Points"}, ["mana"] = {reqPoints = 1, increaseBy = 2, name = "Mana Points"}, ["magic"] = {reqPoints = 15, increaseBy = 1, name = "Magic Level"}, ["shielding"] = {reqPoints = 15, increaseBy = 1, name = "Shielding Skill"}, ["sword"] = {reqPoints = 15, increaseBy = 1, name = "Sword Skill"}, ["axe"] = {reqPoints = 15, increaseBy = 1, name = "Axe Skill"}, ["club"] = {reqPoints = 15, increaseBy = 1, name = "Club Skill"}, ["fist"] = {reqPoints = 15, increaseBy = 1, name = "Fist Skill"}, ["distance"] = {reqPoints = 15, increaseBy = 1, name = "Distance Skill"}, } function onModalWindow(player, modalWindowId, buttonId, choiceId) local SKILL_POINTS = 45200 --- Change here the storage value used to save the skill points local points = player:getStorageValue(SKILL_POINTS) local function sendCancel() player:sendTextMessage(MESSAGE_INFO_DESCR, "You do not have the required amount of Skill Points!") end local function doAddHealth(param, attributes) player:setMaxHealth(player:getMaxHealth() + attributes["health"].increaseBy*param) player:addHealth(attributes["health"].increaseBy*param) player:setStorageValue(SKILL_POINTS, points - attributes["health"].reqPoints*param) player:sendTextMessage(MESSAGE_INFO_DESCR, "You have gained " ..attributes["health"].increaseBy.. " " ..attributes["health"].name.. "!") return true end local function doAddMana(param, attributes) player:setMaxMana(player:getMaxMana() + attributes["mana"].increaseBy*param) player:addMana(attributes["mana"].increaseBy*param) player:setStorageValue(SKILL_POINTS, points - attributes["mana"].reqPoints*param) player:sendTextMessage(MESSAGE_INFO_DESCR, "You have gained " ..attributes["mana"].increaseBy.. " " ..attributes["mana"].name.. "!") return true end if (not modalWindowId == 1) or (buttonId == 4) then return false end if choiceId == 1 then if buttonId == 1 then if points >= attributes["health"].reqPoints then doAddHealth(1, attributes) else sendCancel() end end if buttonId == 2 then if points >= attributes["health"].reqPoints*2 then doAddHealth(2, attributes) else sendCancel() end end if buttonId == 3 then if points >= attributes["health"].reqPoints*5 then doAddHealth(5, attributes) else sendCancel() end end end if choiceId == 2 then if buttonId == 1 then if points >= attributes["mana"].reqPoints then doAddMana(1, attributes) else sendCancel() end end if buttonId == 2 then if points >= attributes["mana"].reqPoints*2 then doAddMana(2, attributes) else sendCancel() end end if buttonId == 3 then if points >= attributes["mana"].reqPoints*5 then doAddMana(5, attributes) else sendCancel() end end end if choiceId == 3 then if buttonId == 1 then if points >= attributes["magic"].reqPoints then player:addManaSpent(math.ceil(player:getVocation():getRequiredManaSpent(player:getBaseMagicLevel() + 1) / configManager.getNumber(configKeys.RATE_MAGIC))) player:setStorageValue(SKILL_POINTS, points - attributes["magic"].reqPoints) else sendCancel() end end if buttonId == 2 then if points >= attributes["magic"].reqPoints*2 then for i = 1,2 do player:addManaSpent(math.ceil(player:getVocation():getRequiredManaSpent(player:getBaseMagicLevel() + 1) / configManager.getNumber(configKeys.RATE_MAGIC))) player:setStorageValue(SKILL_POINTS, points - attributes["magic"].reqPoints) end else sendCancel() end end if buttonId == 3 then if points >= attributes["magic"].reqPoints*5 then for i = 1,5 do player:addManaSpent(math.ceil(player:getVocation():getRequiredManaSpent(player:getBaseMagicLevel() + 1) / configManager.getNumber(configKeys.RATE_MAGIC))) player:setStorageValue(SKILL_POINTS, points - attributes["magic"].reqPoints) end else sendCancel() end end end if choiceId == 4 then if buttonId == 1 then if points >= attributes["sword"].reqPoints then addSkills(player, skillids["sword"]) end end if buttonId == 2 then if points >= attributes["sword"].reqPoints*2 then for i = 1,2 do addSkills(player, skillids["sword"]) end else sendCancel() end end if buttonId == 3 then if points >= attributes["sword"].reqPoints*5 then for i = 1,5 do addSkills(player, skillids["sword"]) end else sendCancel() end end end if choiceId == 5 then if buttonId == 1 then if points >= attributes["axe"].reqPoints then addSkills(player, skillids["axe"]) end else sendCancel() end if buttonId == 2 then if points >= attributes["axe"].reqPoints*2 then for i = 1,2 do addSkills(player, skillids["axe"]) end else sendCancel() end end if buttonId == 3 then if points >= attributes["axe"].reqPoints*5 then for i = 1,5 do addSkills(player, skillids["axe"]) end else sendCancel() end end end if choiceId == 6 then if buttonId == 1 then if points >= attributes["club"].reqPoints then addSkills(player, skillids["club"]) end else sendCancel() end if buttonId == 2 then if points >= attributes["club"].reqPoints*2 then for i = 1,2 do addSkills(player, skillids["club"]) end else sendCancel() end end if buttonId == 3 then if points >= attributes["club"].reqPoints*5 then for i = 1,5 do addSkills(player, skillids["club"]) end else sendCancel() end end end if choiceId == 7 then if buttonId == 1 then if points >= attributes["shielding"].reqPoints then addSkills(player, skillids["shield"]) end else sendCancel() end if buttonId == 2 then if points >= attributes["shielding"].reqPoints*2 then for i = 1,2 do addSkills(player, skillids["shield"]) end else sendCancel() end end if buttonId == 3 then if points >= attributes["shielding"].reqPoints*5 then for i = 1,5 do addSkills(player, skillids["shield"]) end else sendCancel() end end end if choiceId == 8 then if buttonId == 1 then if points >= attributes["distance"].reqPoints then addSkills(player, skillids["dist"]) end else sendCancel() end if buttonId == 2 then if points >= attributes["distance"].reqPoints*2 then for i = 1,2 do addSkills(player, skillids["dist"]) end else sendCancel() end end if buttonId == 3 then if points >= attributes["distance"].reqPoints*5 then for i = 1,5 do addSkills(player, skillids["dist"]) end else sendCancel() end end end end local SkillPoints = { [1] = 1, [2] = 1, [3] = 1, [4] = 1, [5] = 1, [6] = 1, [7] = 1, [8] = 1, } function onAdvance(player, skill, oldlevel, newlevel) local cid = player:getId() if not (SkillPoints[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) * (SkillPoints[getPlayerVocation(cid)])) doCreatureSay(cid, '+1 Skill Point!', TALKTYPE_MONSTER_SAY) end end return true end /creaturescripts/scripts/login.lua player:registerEvent("SkillPointSystem") /talkactions/scripts/skillpoints.lua <event type="modalwindow" name="PointWindow" script="skillpoints.lua"/> <event type="advance" name="SkillPointSystem" script="skillpoints.lua"/> /talkactions/scripts/skillpoints.lua function onSay(player, words, param) local SKILL_POINTS = 45200 local Point = ModalWindow(1, "Skill Points", "You have skill " ..player:getStorageValue(SKILL_POINTS).. " points make your choice:\n\n Skill Required Points Increase Amount") Point:addChoice(1, "1. Health 1 2") Point:addChoice(2, "2. Mana") Point:addChoice(3, "3. Magic Level") Point:addChoice(4, "4. Sword") Point:addChoice(5, "5. Axe") Point:addChoice(6, "6. Club") Point:addChoice(7, "7. Shielding") Point:addChoice(8, "8. Distance") Point:addButton(1, 'Gain 1') Point:addButton(2, 'Gain 2') Point:addButton(3, 'Gain 5') Point:addButton(4, 'Cancel') player:registerEvent("PointWindow") Point:sendToPlayer(player) return false end /talkactions/talkactions.xml <talkaction words="!points" separator=" " script="skillpoints.lua"/> Créditos : zbisu, codinabacl, ninja, MadMook Editado Abril 16, 2015 10 anos por Linus (veja o histórico de edições)
Postado Abril 16, 2015 10 anos Tópico aprovado e movido para a área correta, recebeu um ponto de reputação
Postado Junho 25, 2017 7 anos Em 16/04/2015 em 19:18, Linus disse: /talkactions/scripts/skillpoints.lua <event type="modalwindow" name="PointWindow" script="skillpoints.lua"/> <event type="advance" name="SkillPointSystem" script="skillpoints.lua"/> /talkactions/scripts/skillpoints.lua function onSay(player, words, param) local SKILL_POINTS = 45200 local Point = ModalWindow(1, "Skill Points", "You have skill " ..player:getStorageValue(SKILL_POINTS).. " points make your choice:\n\n Skill Required Points Increase Amount") Point:addChoice(1, "1. Health 1 2") Point:addChoice(2, "2. Mana") Point:addChoice(3, "3. Magic Level") Point:addChoice(4, "4. Sword") Point:addChoice(5, "5. Axe") Point:addChoice(6, "6. Club") Point:addChoice(7, "7. Shielding") Point:addChoice(8, "8. Distance") Point:addButton(1, 'Gain 1') Point:addButton(2, 'Gain 2') Point:addButton(3, 'Gain 5') Point:addButton(4, 'Cancel') player:registerEvent("PointWindow") Point:sendToPlayer(player) return false end desculpe reviver o tópico, mas acho que esta errado ai... o diretório das 2 são iguais? acho que as tags seriam ate em creaturescripts...
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.