Postado Junho 9, 2022 2 anos Em 06/06/2022 em 21:12, joaogomess disse: alguem pode me ajudar? meu ot nao tem o login.lua dentro do creature scripts Deve estar em revscript ... data/scripts/ .... STYLLER OT 2022
Postado Junho 24, 2022 2 anos Em 10/08/2020 em 09:46, Breno Alves disse: [Dodge & Critical] 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. Testado no TFS 1.3 na versão 8.60 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 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 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() 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 Junho 24, 2022 2 anos por Tacabala22 adicionando informações para facilitar a solução do problema. (veja o histórico de edições)
Postado Junho 29, 2022 2 anos Como faço para adcionar level de dodge ou critico? No script fala sobre uma pedra, mas qual a ID?
Postado Junho 6, 2023 1 ano Em 29/06/2022 em 11:51, leoterrabuio disse: Como faço para adcionar level de dodge ou critico? No script fala sobre uma pedra, mas qual a ID? ja consegiu desse pedra ai?
Postado Dezembro 21, 2023 1 ano Donde se coloca el ID del item o "piedra" que dice el script para subir los puntos de dodge y critical?
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.