Ir para conteúdo

Player Spell Experience


Administrador

Posts Recomendados

  • Administrador

Créditos:

Codex NG
Athern
function Player:getCustomSkill(storage)
    return self:getStorageValue(storage)
end
function Player:addCustomSkill(skillName, storage)
    local skillStorage = math.max(10, self:getStorageValue(storage))
    local skillTries =  math.max(0, self:getStorageValue(storage + 1))
    self:setStorageValue(storage, skillStorage + 1)
    self:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You advanced to " .. string.lower(skillName) .. " level "..self:getCustomSkill(storage)..".")
    self:setStorageValue(storage + 1, 0)
end
function Player:addCustomSkillTry(skillName, storage)
    local skillStorage = math.max(10, self:getStorageValue(storage))
    local skillTries =  math.max(0, self:getStorageValue(storage + 1))
    self:setStorageValue(storage + 1, skillTries + 1)
    if skillTries > math.floor(20 * math.pow(1.1, (skillStorage - 11)) / 10) then
        self:addCustomSkill(skillName, storage)
    end
end
function Player:getCustomSkillPercent(storage)
    local skillStorage = math.max(10, self:getStorageValue(storage))
    local skillTries =  math.max(0, self:getStorageValue(storage + 1))
    local triesNeeded = math.floor(20 * math.pow(1.1, (skillStorage - 11)) / 10)
    local percent = math.floor(100 * (1 - skillTries / triesNeeded))
    if percent > 1 and percent <= 100 then
        return percent
    else
        percent = 1
        return percent
    end
end

Usando a magia "Haste" como um exemplo, você vai ter que aplicar sua própria formula de aumento de dano, velocidade, etc...

 local name = "haste"
    local storage = 15000
  
    local combat = Combat()
    combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)
    combat:setParameter(COMBAT_PARAM_AGGRESSIVE, 0)
  
    local function x(creature, var)
        local condition = Condition(CONDITION_HASTE)
        condition:setParameter(CONDITION_PARAM_TICKS, 33000)
        condition:setFormula(0.3, -24, 0.3, -24)
        combat:setCondition(condition)
        creature:addCustomSkillTry(name, storage)
        return combat:execute(creature, var)
    end
  
    function onCastSpell(creature, var)
        return x(creature, var)
    end

22:08 You advanced to haste level 11.
22:09 You advanced to haste level 12.

Link para o comentário
Compartilhar em outros sites

Como que usa isso o.O

 

 

ué, cria qualquer arquivo na lib e coloca isso ae dentro, pra usar é só chamar a função q, mas nao tenho certeza, é tfs 1.2, deve ser um creaturescript ;s

eu entendi como usa ... neste caso o primeiro code pode ir no global.lua, no caso de tfs 1.2, bom é tfs 1.2 é metamethod

e o segundo script é o script de uma spell, no caso é o haste, e ele está dizendo que tem que editar cada atributo de cada spell, neste caso teria que fazer pra todas as magias as edições parecidas com o segundo script

Link para o comentário
Compartilhar em outros sites

 

 

eu entendi como usa ... neste caso o primeiro code pode ir no global.lua, no caso de tfs 1.2, bom é tfs 1.2 é metamethod

e o segundo script é o script de uma spell, no caso é o haste, e ele está dizendo que tem que editar cada atributo de cada spell, neste caso teria que fazer pra todas as magias as edições parecidas com o segundo script

aonde acho esse global.lua, e como faço pra saber se meu server eh tsf 1.2 i.i

Eu sou tipo um dinossauro pra mecher em server de tibia e.e

Link para o comentário
Compartilhar em outros sites

  • 3 months later...

tentei converte esses sistema pra versao tfs 0.3.7

ficou assim

function getPlayerCustomSkill(cid, storage)
    return getPlayerStorageValue(cid, storage)
end
function addPlayerCustomSkill(cid, skillName, storage)
    local skillStorage = math.max(10, getPlayerStorageValue(cid, storage))
    local skillTries =  math.max(0, getPlayerStorageValue(cid, storage + 1))
    setPlayerStorageValue(cid, storage, skillStorage + 1)
    doPlayersendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You advanced to " .. string.lower(skillName) .. " level "..getPlayerCustomSkill(cid, storage)..".")
    setPlayerStorageValue(cid, storage + 1, 0)
end
function addPlayerCustomSkillTry(cid, skillName, storage)
    local skillStorage = math.max(10, getPlayerStorageValue(cid, storage))
    local skillTries =  math.max(0, getPlayerStorageValue(cid, storage + 1))
    setPlayerStorageValue(cid, storage + 1, skillTries + 1)
    if skillTries > math.floor(20 * math.pow(1.1, (skillStorage - 11)) / 10) then
        addPlayerCustomSkill(cid, skillName, storage)
    end
end
function getPlayerCustomSkillPercent(cid, storage)
    local skillStorage = math.max(10, getPlayerStorageValue(cid, storage))
    local skillTries =  math.max(0, getPlayerStorageValue(cid, storage + 1))
    local triesNeeded = math.floor(20 * math.pow(1.1, (skillStorage - 11)) / 10)
    local percent = math.floor(100 * (1 - skillTries / triesNeeded))
    if percent > 1 and percent <= 100 then
        return percent
    else
        percent = 1
        return percent
    end
end

e na spell eu coloquei isso

addPlayerCustomSkillTry(cid, "Teste", 73874)

só q quando eu uso a spell da esse erro


[5/3/2016 12:23:37] [Error - Spell Interface] 
[5/3/2016 12:23:37] data/spells/scripts/teste.lua:onCastSpell
[5/3/2016 12:23:37] Description: 
[5/3/2016 12:23:37] data/lib/104-function experience spell.lua:12: bad argument #3 to 'max' (number expected, got nil)
[5/3/2016 12:23:37] stack traceback:
[5/3/2016 12:23:37] 	[C]: in function 'max'
[5/3/2016 12:23:37] 	data/lib/104-function experience spell.lua:12: in function 'addPlayerCustomSkillTry'
[5/3/2016 12:23:37] 	data/spells/scripts/teste.lua:143: in function <data/spells/scripts/teste.lua:133>

alguem aqui q ja testou esse sistema saberia se tem como converte
se sim o q eu fiz de errado?

Link para o comentário
Compartilhar em outros sites

Cara que código confuso. Ele cria funções pra facilitar busca e envio de informações mas não usa, lol.

Uma duvida, ta tao confuso que eu nao consegui ver: no fim das contas o que esse script faz exatamente? Ele so guarda uma *experiencia pra cada magia e quando atinge ele evolui? Na pratica, vc ter haste 100 ou haste 1 nao vai fazer diferença nesse codigo ai, ne?

Link para o comentário
Compartilhar em outros sites

Cara que código confuso. Ele cria funções pra facilitar busca e envio de informações mas não usa, lol.

Uma duvida, ta tao confuso que eu nao consegui ver: no fim das contas o que esse script faz exatamente? Ele so guarda uma *experiencia pra cada magia e quando atinge ele evolui? Na pratica, vc ter haste 100 ou haste 1 nao vai fazer diferença nesse codigo ai, ne?

 

Bem estranho ele msm

creio eu q fiz a conversão certa porem n funciona

e sim pela logica ele so iria aumentar o nivel mas n ia mudar nd na spell em si

mas nd q uma formula diferente n resolva

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...