AD
tfs 1.2

Player Spell Experience

Por Administrador, 17 de nov. de 2015 em Mods, funções e outros

player
spell
experience
up
level up
16
3.4k
AdministradorA
17 de novembro de 2015 às 14:44

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.

sheptS
17 de novembro de 2015 às 16:15

Daniel, não entendi muito bem o que o script faz, outra coisa, essa tag deixa o conteúdo com uma identação meio estranha o que complica mais

teakwondoT
18 de novembro de 2015 às 16:48

Como que usa isso o.O

DeadpoolD
18 de novembro de 2015 às 17:27

É tipo upar as magias de level, como se fosse um skill :p

teakwondoT
18 de novembro de 2015 às 17:29

É tipo upar as magias de level, como se fosse um skill :p

Ate ai eu entendi eu quero sabe aonde coloca os scripts e as tags, com excessão da tag da spell

DeadpoolD
18 de novembro de 2015 às 17:31

lib Oo

teakwondoT
18 de novembro de 2015 às 17:36

lib Oo

Eu soh vou entender se explicar passo a passo i.i

DeadpoolD
18 de novembro de 2015 às 17:51

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

sheptS
18 de novembro de 2015 às 18:15

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

AdministradorA
18 de novembro de 2015 às 19:11

Exato @@shept

Obrigado pela explicação

sheptS
18 de novembro de 2015 às 19:20

de nada, é sempre bom tentar compreender e ajudar a comunidade ;)

teakwondoT
19 de novembro de 2015 às 14:22

 

 

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

4 meses depois...
rohfagundesR
05 de março de 2016 às 12:27

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?

SkullsS
09 de março de 2016 às 08:26

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?

rohfagundesR
09 de março de 2016 às 15:04

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