yagoshira004 1 Postado Setembro 4, 2018 Share Postado Setembro 4, 2018 Olá rapaziada como estamos? Encontrei um script super bacana de comprar SKILLS via talkaction (ex: !comprar club) Ele remove uma quantidade de certo item e te da skills pro char Porém esse script nao está funcionando corretamente, ele está removendo o item, está deslogando o char mas nao está dando os skills SCRIPT Citar skill = { item = 2157, -- Item quantidade = 10, -- Quantidade quantidadeskill = 10, -- Skill adicionada limiteskill = 350 -- Limite } magicLevel = { item = 2157, quantidade = 15, quantidademl = 5, limitedeml = 200 } skillID = { ["club"] = SKILL_CLUB, ["sword"]= SKILL_SWORD, ["axe"] = SKILL_AXE, ["distance"] = SKILL_DISTANCE, ["shielding"] = SKILL_SHIELD } vocationSkill = { -- Vocações - SKILL ["club"] = {4, 8, 13, 14}, ["sword"] = {4, 8, 13, 14}, ["axe"] = {4, 8, 13, 14}, ["distance"] = {3, 7}, ["shielding"] = {4, 8, 3, 7, 13, 14} } vocationMagicLevel = {1, 2, 5, 6} -- Vocações - MAGIC LEVEL protectZone = "sim" function onSay(cid, words, param, channel) local pid = getPlayerGUID(cid) if (protectZone == "sim") and (not getTilePzInfo(getCreaturePosition(cid))) then doPlayerSendCancel(cid, "Você precisa estar em protection zone pra poder comprar.") end if (param == '') then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Como usar: !comprar club; !comprar magiclevel.") return true end local storage, duration = 5, 5 if (param == 'magiclevel') then if getPlayerMagLevel(cid) < magicLevel.limitedeml then if isInArray(vocationMagicLevel, getPlayerVocation(cid)) then if doPlayerRemoveItem(cid, magicLevel.item, magicLevel.quantidade) then if (os.time() - getPlayerStorageValue(cid, storage)) >= duration then setPlayerStorageValue(cid, storage, os.time()) doRemoveCreature(cid, true) db.query("UPDATE `players` SET `maglevel` = `maglevel` + ".. magicLevel.quantidademl .." WHERE `id` = ".. pid) else doPlayerSendCancel(cid, "Espere ".. duration .." segundos para comprar novamente.") end else doPlayerSendCancel(cid, "Você não tem o item requerido.") end else doPlayerSendCancel(cid, "Voce não pode comprar magic level.") end else doPlayerSendCancel(cid, "Você chegou no limite de magic level.") end return true end if(skillID[param:lower()]) then if(getPlayerSkill(cid, skillID[param:lower()]) < skill.limiteskill) then if isInArray(vocationSkill[param:lower()], getPlayerVocation(cid)) then if doPlayerRemoveItem(cid, skill.item, skill.quantidade) then if (os.time() - getPlayerStorageValue(cid, storage)) >= duration then setPlayerStorageValue(cid, storage, os.time()) doRemoveCreature(cid, true) db.query("UPDATE `player_skills` SET `value` = `value` + ".. skill.quantidadeskill .." WHERE `player_id` = ".. pid .. " and `skillID[` = ".. skillID[param:lower()]) else doPlayerSendCancel(cid, "Espere ".. duration .." segundos para comprar novamente.") end else doPlayerSendCancel(cid, "Você não tem o item requerido.") end else doPlayerSendCancel(cid, "Voce não pode comprar este skill.") end else doPlayerSendCancel(cid, "Você chegou no limite de skill.") end else doPlayerSendCancel(cid, "Skill desconhecida.") end return true end alguem que manja consegue me ajudar? qual o erro Link para o comentário Compartilhar em outros sites More sharing options...
Togumelo 3 Postado Setembro 4, 2018 Share Postado Setembro 4, 2018 (editado) function Player:addSkillLevels(skill) if isInArray({SKILL_VITALITY, SKILL_STRENGHT, SKILL_FAITH, SKILL_INTELLIGENCE, SKILL_DEXTERITY, SKILL_RESISTANCE, SKILL_ENDURANCE}, skill) then local xp = math.ceil(self:getVocation():getRequiredSkillTries(skill, self:getSkillLevel(skill) + 1) / configManager.getNumber(configKeys.RATE_SKILL)) self:addSkillTries(skill, xp) return true end if skill == SKILL_MAGLEVEL then local xp = math.ceil(self:getVocation():getRequiredManaSpent(self:getBaseMagicLevel() + 1) / configManager.getNumber(configKeys.RATE_MAGIC)) self:addManaSpent(xp) return true end end function Player:assignSkillPoints(skill) if getPlayerLevel(self) > 8 then maxSkillformula = getPlayerLevel(self) * (3 - (0.02 * (getPlayerLevel(self) - 8))) maxMagic = maxSkillformula * 0.5 maxVitality = maxSkillformula maxStrenght = maxSkillformula maxIntelligence = maxSkillformula maxFaith = maxSkillformula maxDexterity = maxSkillformula * 0.75 maxResistance = maxSkillformula maxEndurance = maxSkillformula end if maxDexterity < 1 then maxDexterity = 1 end if (skill == SKILL_MAGLEVEL) then if self:getMagicLevel() < maxMagic then self:addSkillLevels(SKILL_MAGLEVEL) self:setStorageValue(pointsStorage, self:getStorageValue(pointsStorage) - skills[1][3]) return true else return false end elseif (skill == SKILL_VITALITY) then if self:getSkillLevel(SKILL_VITALITY) < maxVitality then self:addSkillLevels(SKILL_VITALITY, 1) self:setStorageValue(pointsStorage, self:getStorageValue(pointsStorage) - skills[2][3]) return true else return false end elseif (skill == SKILL_STRENGHT) then if self:getSkillLevel(SKILL_STRENGHT) < maxStrenght then self:addSkillLevels(SKILL_STRENGHT, 1) self:setStorageValue(pointsStorage, self:getStorageValue(pointsStorage) - skills[3][3]) --self:messageOnAdvance(SKILL_STRENGHT) return true else return false end elseif (skill == SKILL_INTELLIGENCE) then if self:getSkillLevel(SKILL_INTELLIGENCE) < maxIntelligence then self:addSkillLevels(SKILL_INTELLIGENCE, 1) self:setStorageValue(pointsStorage, self:getStorageValue(pointsStorage) - skills[4][3]) --self:messageOnAdvance(SKILL_INTELLIGENCE) return true else return false end elseif (skill == SKILL_FAITH) then if self:getSkillLevel(SKILL_FAITH) < maxFaith then self:addSkillLevels(SKILL_FAITH, 1) self:setStorageValue(pointsStorage, self:getStorageValue(pointsStorage) - skills[5][3]) --self:messageOnAdvance(SKILL_FAITH) return true else return false end elseif (skill == SKILL_DEXTERITY) then if self:getSkillLevel(SKILL_DEXTERITY) < maxDexterity then self:addSkillLevels(SKILL_DEXTERITY, 1) self:setStorageValue(pointsStorage, self:getStorageValue(pointsStorage) - skills[6][3]) return true else return false end elseif (skill == SKILL_RESISTANCE) then if self:getSkillLevel(SKILL_RESISTANCE) < maxResistance then self:addSkillLevels(SKILL_RESISTANCE, 1) self:setStorageValue(pointsStorage, self:getStorageValue(pointsStorage) - skills[7][3]) return true else return false end elseif (skill == SKILL_ENDURANCE) then if self:getSkillLevel(SKILL_ENDURANCE) < maxEndurance then self:addSkillLevels(SKILL_ENDURANCE, 1) self:setStorageValue(pointsStorage, self:getStorageValue(pointsStorage) - skills[8][3]) return true else return false end end end Editado Setembro 4, 2018 por Gugu Z.S Link para o comentário Compartilhar em outros sites More sharing options...
yagoshira004 1 Postado Setembro 5, 2018 Autor Share Postado Setembro 5, 2018 13 horas atrás, Gugu Z.S disse: function Player:addSkillLevels(skill) if isInArray({SKILL_VITALITY, SKILL_STRENGHT, SKILL_FAITH, SKILL_INTELLIGENCE, SKILL_DEXTERITY, SKILL_RESISTANCE, SKILL_ENDURANCE}, skill) then local xp = math.ceil(self:getVocation():getRequiredSkillTries(skill, self:getSkillLevel(skill) + 1) / configManager.getNumber(configKeys.RATE_SKILL)) self:addSkillTries(skill, xp) return true end if skill == SKILL_MAGLEVEL then local xp = math.ceil(self:getVocation():getRequiredManaSpent(self:getBaseMagicLevel() + 1) / configManager.getNumber(configKeys.RATE_MAGIC)) self:addManaSpent(xp) return true end end function Player:assignSkillPoints(skill) if getPlayerLevel(self) > 8 then maxSkillformula = getPlayerLevel(self) * (3 - (0.02 * (getPlayerLevel(self) - 8))) maxMagic = maxSkillformula * 0.5 maxVitality = maxSkillformula maxStrenght = maxSkillformula maxIntelligence = maxSkillformula maxFaith = maxSkillformula maxDexterity = maxSkillformula * 0.75 maxResistance = maxSkillformula maxEndurance = maxSkillformula end if maxDexterity < 1 then maxDexterity = 1 end if (skill == SKILL_MAGLEVEL) then if self:getMagicLevel() < maxMagic then self:addSkillLevels(SKILL_MAGLEVEL) self:setStorageValue(pointsStorage, self:getStorageValue(pointsStorage) - skills[1][3]) return true else return false end elseif (skill == SKILL_VITALITY) then if self:getSkillLevel(SKILL_VITALITY) < maxVitality then self:addSkillLevels(SKILL_VITALITY, 1) self:setStorageValue(pointsStorage, self:getStorageValue(pointsStorage) - skills[2][3]) return true else return false end elseif (skill == SKILL_STRENGHT) then if self:getSkillLevel(SKILL_STRENGHT) < maxStrenght then self:addSkillLevels(SKILL_STRENGHT, 1) self:setStorageValue(pointsStorage, self:getStorageValue(pointsStorage) - skills[3][3]) --self:messageOnAdvance(SKILL_STRENGHT) return true else return false end elseif (skill == SKILL_INTELLIGENCE) then if self:getSkillLevel(SKILL_INTELLIGENCE) < maxIntelligence then self:addSkillLevels(SKILL_INTELLIGENCE, 1) self:setStorageValue(pointsStorage, self:getStorageValue(pointsStorage) - skills[4][3]) --self:messageOnAdvance(SKILL_INTELLIGENCE) return true else return false end elseif (skill == SKILL_FAITH) then if self:getSkillLevel(SKILL_FAITH) < maxFaith then self:addSkillLevels(SKILL_FAITH, 1) self:setStorageValue(pointsStorage, self:getStorageValue(pointsStorage) - skills[5][3]) --self:messageOnAdvance(SKILL_FAITH) return true else return false end elseif (skill == SKILL_DEXTERITY) then if self:getSkillLevel(SKILL_DEXTERITY) < maxDexterity then self:addSkillLevels(SKILL_DEXTERITY, 1) self:setStorageValue(pointsStorage, self:getStorageValue(pointsStorage) - skills[6][3]) return true else return false end elseif (skill == SKILL_RESISTANCE) then if self:getSkillLevel(SKILL_RESISTANCE) < maxResistance then self:addSkillLevels(SKILL_RESISTANCE, 1) self:setStorageValue(pointsStorage, self:getStorageValue(pointsStorage) - skills[7][3]) return true else return false end elseif (skill == SKILL_ENDURANCE) then if self:getSkillLevel(SKILL_ENDURANCE) < maxEndurance then self:addSkillLevels(SKILL_ENDURANCE, 1) self:setStorageValue(pointsStorage, self:getStorageValue(pointsStorage) - skills[8][3]) return true else return false end end end Como coloco no script mano? Obrigado pela ajuda! Link para o comentário Compartilhar em outros sites More sharing options...
Togumelo 3 Postado Setembro 5, 2018 Share Postado Setembro 5, 2018 14 minutos atrás, yagoshira004 disse: Como coloco no script mano? Obrigado pela ajuda! Então... aqui no meu server tá na pasta /data/lib/core/skillpoints.lua Em /data/lib/core/core.lua vc tem que adicionar: dofile('data/lib/core/skillpoints.lua') Nas minhas sources eu alterei todos nomes dos skills como voce pode ver no código, então voce vai ter que alterar de novo pro nome original (vitality = SKILL_FIST, strenght = SKILL_CLUB, faith = SKILL_SWORD, intelligence = SKILL_AXE, resistance = SKILL_SHIELDING, endurance = SKILL_FISHING, magic acho que é SKILL_MAGLEVEL). Com a primeira função você pode passar 1 skill inteiro só mandando o skill pra função (nota que a função é da classe Player), dessa forma você pode criar uma talkaction ou colocar ela em um npc. Tenta entender ela. Ela pega a quantidade de "required skill tries" pro proximo skill e "adiciona skill tries" até o proximo skill. Com a segunda função você pode chamar a primeira função pra fazer a mesma coisa só que com mais detalhezinhos. Link para o comentário Compartilhar em outros sites More sharing options...
Marshmello 270 Postado Fevereiro 20, 2019 Share Postado Fevereiro 20, 2019 A questão neste suporte foi encerrada por falta de respostas. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta. + Caso a dúvida não tenha sido resolvida você poderá criar outro tópico solicitando ajuda. * Lembre-se que é permitido dar UP no tópico a cada 24 horas para assim o destacar e manter movimentado. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados