Ir para conteúdo

Featured Replies

  • 2 weeks later...
  • Respostas 20
  • Visualizações 9.3k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • You are deus? que fala?

  • Fiz tudo certinho aqui e nenhum erro ocorreu, porém quando solto o comando !critical ou !dodge dentro do game nada acontece e nenhum erro acontece na distro, fui registrar nas talkactions.xml e pra vê

Posted Images

Postado
Em 10/08/2020 em 09:46, Breno Alves disse:

[Dodge & Critical]

VlVKQKC.png&key=d5c17620ae9567a1f898dd7a

Sabe aqueles sistemas de dodge e critical que temos nos servidores de baiak? Então, é isso que hoje vou trazer para vocês!

Há um sistema disponibilizado na internet, porém não funcional, o que eu fiz foi fixá-lo e adicionar o dodge para mana também.

VlVKQKC.png&key=d5c17620ae9567a1f898dd7a

Testado no TFS 1.3 na versão 8.60

VlVKQKC.png&key=d5c17620ae9567a1f898dd7a

Na pasta lib crie um arquivo chamado dodgeCritical.lua




--[[
    Dodge & Critical fixado por Movie (Movie#4361)
    Disponibilizado para o TibiaKing e não autorizo outras reproduções
    Mantenha os créditos <3
--]]

STORAGEVALUE_DODGE = 48900
STORAGEVALUE_CRITICAL = 48901

DODGE = {
	LEVEL_MAX = 100, -- máximo de level que o dodge será
	PERCENT = 0.2 -- porcentagem que irá defender o ataque
}

CRITICAL = {
	LEVEL_MAX = 100, -- máximo de level que o critical será
	PERCENT = 0.2 -- porcentagem que irá aumentar o ataque 
}

function Player.getDodgeLevel(self)
	return self:getStorageValue(STORAGEVALUE_DODGE)
end

function Player.setDodgeLevel(self, value)
	return self:setStorageValue(STORAGEVALUE_DODGE, value)
end

function Player.getCriticalLevel(self)
	return self:getStorageValue(STORAGEVALUE_CRITICAL)
end

function Player.setCriticalLevel(self, value)
	return self:setStorageValue(STORAGEVALUE_CRITICAL, value)
end

Não esqueça de registrar a lib no lib.lua

VlVKQKC.png&key=d5c17620ae9567a1f898dd7a

Agora na pasta creaturescript/scripts crie um arquivo chamado dodgeCritical.lua




--[[
    Dodge & Critical fixado por Movie (Movie#4361)
    Disponibilizado para o TibiaKing e não autorizo outras reproduções
    Mantenha os créditos <3
--]]

function onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin)

    if (not attacker or not creature) then  
    	return primaryDamage, primaryType, secondaryDamage, secondaryType 
    end

    if primaryType == COMBAT_HEALING then
    	return primaryDamage, primaryType, secondaryDamage, secondaryType 
    end

    if ((creature:getDodgeLevel() * 3) >= math.random (0, 1000) and creature:isPlayer()) then
        primaryDamage = 0
        secondaryDamage = 0
        creature:say("DODGE!", TALKTYPE_MONSTER_SAY)
        creature:getPosition():sendMagicEffect(CONST_ME_BLOCKHIT)
    end

    if (attacker:isPlayer() and (attacker:getCriticalLevel() * 3) >= math.random (0, 1000)) then
		primaryDamage = primaryDamage + math.ceil(primaryDamage * CRITICAL.PERCENT)
		attacker:say("CRITICAL!", TALKTYPE_MONSTER_SAY)
		creature:getPosition():sendMagicEffect(CONST_ME_EXPLOSIONHIT)
	end

    return primaryDamage, primaryType, secondaryDamage, secondaryType
end



<event type="healthchange" name="DodgeCritical" script="dodgeCritical.lua"/>

 

Agora crie outro arquivo dentro do creaturescripts/scripts com o nome dodgeMana.lua




--[[
    Dodge & Critical fixado por Movie (Movie#4361)
    Disponibilizado para o TibiaKing e não autorizo outras reproduções
    Mantenha os créditos <3
--]]

function onManaChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin)
    
    if (not attacker or not creature) then  
        return primaryDamage, primaryType, secondaryDamage, secondaryType 
    end
    
    if ((creature:getDodgeLevel() * 3) >= math.random (0, 1000) and creature:isPlayer())  then
        primaryDamage = 0
        secondaryDamage = 0
        creature:say("DODGE!", TALKTYPE_MONSTER_SAY)
        creature:getPosition():sendMagicEffect(CONST_ME_BLOCKHIT)
    end
    return primaryDamage, primaryType, secondaryDamage, secondaryType
end



<event type="manachange" name="DodgeMana" script="dodgeMana.lua"/>

 

 

Não esqueça de registra no login.lua




player:registerEvent("DodgeCritical")
player:registerEvent("DodgeMana")

Adicione também no login.lua




if player:getDodgeLevel() == -1 then
	player:setDodgeLevel(0)
end
if player:getCriticalLevel() == -1 then
	player:setCriticalLevel(0)
end

VlVKQKC.png&key=d5c17620ae9567a1f898dd7a

Agora na pasta scripts/talkactions crie um arquivo chamado dodgeCritical.lua




--[[
    Dodge & Critical fixado por Movie (Movie#4361)
    Disponibilizado para o TibiaKing e não autorizo outras reproduções
    Mantenha os créditos <3
--]]

local dodge = TalkAction("!dodge")
local critical = TalkAction("!critical")

function dodge.onSay(player, words, param)
	local skill = player:getDodgeLevel()
	local message = "DODGE SYSTEM\nO sistema consiste em defender uma porcentagem dos ataques recebidos.\n\nPor Exemplo:\nCada pedra utilizada atribui 0,3% a mais de chance.\nCom 10 pedras, voce tera 3% de chance de defender 50% dos ataques recebidos.\nCom 100 pedras (maximo), voce tera 30% de chance de defender 50% dos ataques recebidos.\nCada pedra que voce usar, sua skill de dodge aumenta em 1 ponto.\n\n------------------\nDodge Skill: [" .. skill .. "/100]"
	doPlayerPopupFYI(player, message)
end

dodge:register()

function critical.onSay(player, words, param)
	local skill = player:getCriticalLevel()
	local message = "CRITICAL SYSTEM\nO sistema consiste em ter uma chance de dar um dano critico.\n\nPor Exemplo:\nCada pedra utilizada atribui 0,3% a mais de chance.\nCom 10 pedras, voce tera 3% de chance de hitar um dano critico dos ataques desferidos ao seu oponente.\nCom 100 pedras (maximo), voce tera 30% de chance de hitar um dano critico dos ataques desferidos ao seu oponente.\nCada pedra que voce usar, sua skill de dodge aumenta em 1 ponto.\n\n------------------\nCritical Skill: [" .. skill .. "/100]"
	doPlayerPopupFYI(player, message)
end

critical:register()

VlVKQKC.png&key=d5c17620ae9567a1f898dd7a

Pronto, agora você tem o sistema no seu servidor!

Curtiu? Dá um REP+ aí :)

 

Fiz tudo certinho aqui e nenhum erro ocorreu, porém quando solto o comando !critical ou !dodge dentro do game nada acontece e nenhum erro acontece na distro, fui registrar nas talkactions.xml e pra vê oque acontecia e apresentou esse erro.
 

Lua Script Error: [Test Interface]
data/talkactions/scripts/custom/dodgecritical.lua
data/talkactions/scripts/custom/dodgecritical.lua:10: attempt to index local 'dodge' (a nil value)
stack traceback:
        [C]: in function '__newindex'
        data/talkactions/scripts/custom/dodgecritical.lua:10: in main chunk
        [C]: in function 'reload'
        data/talkactions/scripts/reload.lua:81: in function <data/talkactions/scripts/reload.lua:59>
[Warning - Event::checkScript] Can not load script: scripts/custom/dodgecritical.lua

 

Dai removi de novo, e o erro sumiu, porém permaneceu o problema do comando não funcionar. Ao em vez de ficar por comando, não poderia ser adicionado um item ? Aonde o use no mesmo já solucionaria o problema ? Eu utilizo o TFS 1.5 Downgrade 8.6 do nekiro. Tem alguma informação que você poderia me informar ? Aguardando solução.

@EDIT
Sou das antigas e não prestei atenção na ultima parte, scripts/talkactions EU ESTAVA COLOCANDO NA TALKACTIONS/SCRIPTS.
Logo em seguida deu esse erro aqui, que por um acaso em outro topic de outra script sua tambem deu essse erro por conta da versão do tfs e o @luanluciano93 havia respondido um outro membro do forum com a solução, apliquei a mesma mudança pra esta script.
A solução foi trocar a função doPlayerPopupFYI(player, message) pela função correta da versão: player:popupFYI(message).

Editado por Tacabala22
adicionando informações para facilitar a solução do problema. (veja o histórico de edições)

  • 11 months later...
  • 6 months later...

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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo