existe uma forma de fazer por onEquip , tipo eu uso um ring e aumenta a chance do critical dai qnd eu tiro o ring volta ao normal
- Fórum
- OTServ
- Recursos
- Scripting
- Globalevents e Spells
- [TFS 1.x] Critical System
info
Grupo: Campones
Registrado: 23/12/08
Posts: 41
Reputação: +4
Gênero: Masculino
Char no Tibia: Aura mage naruto

Em 29/06/2016 at 00:29, XxVinePeccixX disse:tem como por o dodge e o critical por item diferente??
<action itemid="18415" script="other/critical.lua"/>
Voce bota o id do item que ira ficar com a action
Em 03/07/2016 at 18:49, gusinhi disse:existe uma forma de fazer por onEquip , tipo eu uso um ring e aumenta a chance do critical dai qnd eu tiro o ring volta ao normal
No outro system,o de Dodge,um membro respondeu uma pergunta parecida,olha la e ve se te ajuda.
Editado Agosto 10 por xdark
info
Grupo: Campones
Registrado: 17/08/15
Posts: 11
Reputação: +2

só funciona em player, alguem sabe arrumar pra funcionar em monstro?
No meu servidor só está funcionado contra players, tem alguma tag para adicionar nos monsters?
info
Grupo: Campones
Registrado: 09/10/07
Posts: 9
Reputação: +2
Gênero: Masculino

Olá amigo, estou com um problemão nesse sistema, tanto no critical quanto no dodge, faço tudo corretamente como diz no tutorial bem explicado por sinal seu, sendo que quando eu abro o server, tudo direitinho, eu ataco os bixos e tal só que quando eles vão me atacar, é como se eu fosse um adm, não recebo dano algum, e potions de cura, qualquer potion que cure health não funciona, apenas potions de mana. gostaria de saber o motivo, obrigado ![]()
info
Grupo: Campones
Registrado: 23/08/11
Posts: 46
Reputação: +9

Amigo o script funciona, Porém, os players não levam dano nenhum de monsters, somente levam dano na mana. Esse sistema de Dodge e Critical skill usam o healthchange do creaturescripts. Se eu deixar somente o dodge system ativo ele funciona os players levam dano dos monsters, porém se eu colocar os 2 não da certo os monstros não tiram dano mais da life de ninguém.
Creio que tenha algo a ver com isso:
<event type="healthchange" name="CriticalSystem" script="criticalSystem.lua"/>
Como faço para arrumar isso??
Editado Março 18 por XxVinePeccixX
info
Grupo: Campones
Registrado: 27/08/18
Posts: 5
Reputação: 0

Como você para conseguiu fazer funcionar. No meu uso TFS 1.2 e está dando esse erro " [Error - TalkAction::configureEvent] Missing words for talk action or spell"
Editado Setembro 22 por themarvado
Em 05/06/2015 em 17:49, Bruno disse:Introdução
Este script consiste em aumentar uma porcentagem dos ataques de acordo com o critical level.
Exemplo: Suponhamos que o player tenha Critical Skill 100 e a porcentagem de ataque esteja configurado para aumentar 50%, o player terá 30% de chance de au 50% dos ataques.
Instalação
O conteúdo da lib serve para o Critical e Dodge System, se você já fez este procedimento no outro script simplesmente ignore e vá para o próximo passo.
Em data/lib/core/core.lua adicione o seguinte conteúdo em qualquer parte:
dofile('data/lib/core/dclib.lua')Ainda em data/lib/core/core crie um arquivo chamado dclib.lua com o seguinte conteúdo:
-- Configuração DODGE = { STORAGE = 48900, -- player storage do sistema LEVEL_MAX = 100, -- máximo de dodge level que o player pode alcançar PERCENT = 0.5 -- porcentagem que irá defender o ataque [padrão 50% = 0.5] } CRITICAL = { STORAGE = 48901, -- player storage do sistema LEVEL_MAX = 100, -- máximo de critical level que o player pode alcançar PERCENT = 0.5 -- porcentagem que irá aumentar o ataque [padrão 50% = 0.5] } function Player.getDodgeLevel(self) return self:getStorageValue(DODGE.STORAGE) end function Player.setDodgeLevel(self, value) return self:setStorageValue(DODGE.STORAGE, value) end function Player.getCriticalLevel(self) return self:getStorageValue(CRITICAL.STORAGE) end function Player.setCriticalLevel(self, value) return self:setStorageValue(CRITICAL.STORAGE, value) end
Agora em data/actions/actions.xml adicione a seguinte tag:
<action itemid="18415" script="other/critical.lua"/>Depois em data/actions/scripts/other crie um arquivo chamado critical.lua com o seguinte conteúdo:
function onUse(player, item, fromPosition, target, toPosition, isHotkey) if player:getCriticalLevel() < CRITICAL.LEVEL_MAX then item:remove(1) player:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS) player:setCriticalLevel(player:getCriticalLevel() + 1) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você aumentou sua skill de critical para [" .. player:getCriticalLevel() .. "/" .. CRITICAL.LEVEL_MAX .. "].") elseif player:getCriticalLevel() >= CRITICAL.LEVEL_MAX then player:sendTextMessage(MESSAGE_STATUS_WARNING, "Você alcancou o máximo de seu CRITICAL Skill.\nParabéns!!!!") return false end return true end
Pronto, já configuramos o item para atribuir o Critical Skill, vamos configurar a parte dos ataques.
Vá em data/creaturescripts/creaturescripts.xml e adicione a seguinte tag:
<event type="healthchange" name="CriticalSystem" script="criticalSystem.lua"/>Agora em data/creaturescripts/scripts crie um arquivo chamado criticalSystem.lua com o seguinte conteúdo:
function onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin) if not isPlayer(attacker) then return false end if (attacker:getCriticalLevel() * 3) >= math.random (0, 1000) then if isInArray({ORIGIN_MELEE, ORIGIN_RANGED, ORIGIN_SPELL}, origin) and primaryType ~= COMBAT_HEALING then primaryDamage = primaryDamage + math.ceil(primaryDamage * CRITICAL.PERCENT) attacker:say("CRITICAL!", TALKTYPE_MONSTER_SAY) creature:getPosition():sendMagicEffect(CONST_ME_EXPLOSIONHIT) end end return primaryDamage, primaryType, secondaryDamage, secondaryType end
Ainda em data/creaturescripts/scripts abra o arquivo login.lua e
Antes de:
return trueAdicione:
player:registerEvent("CriticalSystem") -- Critical System if player:getCriticalLevel() == -1 then player:setCriticalLevel(0) endO sistema está finalizado, agora vamos criar as talkactions para que os players acompanhem seu skill.
Em data/talkactions/talkactions.xml adicione a tag:
<talkaction words="!critical" script="critical.lua"/>E para finalizar, em data/talkactions/scripts crie um arquivo chamado critical.lua com o seguinte conteúdo:
function onSay(player, words, param) local skill = player:getCriticalLevel() local message = "CRITICAL SYSTEM\nO sistema consiste em ter % de 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\nPara obter a pedra, voce pode comprar no NPC Hyperion, localizado no templo.\nOu atraves de nosso WebShop.\n------------------\nCritical Skill: [" .. skill .. "/100]" doPlayerPopupFYI(player, message) end
Bom é isso ai!
eu instalei o dodge e critical, só q me embananei no login.lua e ficou dando esse erro
[Warning - Event::checkScript] Can not load script: scripts/login.lua
data/creaturescripts/scripts/login.lua:40: 'then' expected near char(239)
player:registerEvent("CriticalSystem")
-- Critical System
if player:getCriticalLevel() == -1 then
player:setCriticalLevel(0)player:registerEvent("DodgeSystem")
-- Dodge System
if player:getDodgeLevel() == -1 then
player:setDodgeLevel(0)
end
return true
end



info
Grupo: Campones
Registrado: 23/08/11
Posts: 46
Reputação: +9
tem como por o dodge e o critical por item diferente??