Leoxtibia 137 Posted August 4, 2017 Share Posted August 4, 2017 (edited) Resolvi colocar o sistema de critical hit aqui à disposição de todos. Percebi que o fórum não tinha nenhum atualizado ou sem erros, então pode ser útil para outras pessoas. A ideia foi do @fefuxd e foi testado no tfs 0.4. Lembrando que funciona somente para critical hits em players. Funcionamento: Basicamente, o sistema dará chances diferentes para cada vocação para que aconteça o Critical Hit. Em creaturescripts/scripts: CriticalVocs.lua Spoiler local CriticalHitMsg, hit = true, --- true (false) para mostrar (ou não) o valor do hit no Default { -- porcentagem de aumento do hit, 1.2 = 20%, 2.0 = 100%, 1.4 = 40% e aí vai... [0] = {percent = 1.0}, [1] = {percent = 2.0}, [2] = {percent = 1.5}, [3] = {percent = 2.0}, [4] = {percent = 1.5}, [5] = {percent = 2.0}, [6] = {percent = 1.5}, [7] = {percent = 1.5}, [8] = {percent = 2.0} } local protect = {} function onStatsChange(cid, attacker, type, combat, value) if isPlayer(attacker) and (not (attacker == cid)) and (type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS) and isPlayer(cid) and value >=1 then if (getPlayerStorageValue(attacker, 19830)) >= math.random (0,100) then if protect[attacker] then protect[attacker] = nil return true end critical = math.ceil(2*value*hit[getPlayerVocation(attacker)].percent) protect[attacker] = true doTargetCombatHealth(attacker, cid, combat, -critical, -critical, CONST_ME_NONE) if CriticalHitMsg then doPlayerSendTextMessage(attacker, MESSAGE_STATUS_CONSOLE_ORANGE, "CRITICAL HIT: "..math.floor((critical/2))) end doSendAnimatedText(getCreaturePos(attacker), "CRITICAL!!", COLOR_DARKRED) return false end end return true end No login.lua: Spoiler local chanceTable = { -- chance [0 a 100%] para critical hit [0] = {chance = 10}, [1] = {chance = 20}, [2] = {chance = 30}, [3] = {chance = 50}, [4] = {chance = 40}, [5] = {chance = 20}, [6] = {chance = 30}, [7] = {chance = 50}, [8] = {chance = 40} } registerCreatureEvent(cid, "CriticalHit") setPlayerStorageValue(cid, 19830, chanceTable[getPlayerVocation(cid)].chance) No creaturescripts.xml, adicione a tag: <event type="statschange" name="CriticalHit" event="script" value="CriticalVocs.lua"/> Lembrando que geralmente: (se é quem alguém não sabe) [1] - Sorcerer ; [5] - Master Sorcerer [2] - Druid; [6] - Elder Druid [3] - Paladin; [7] - Royal Paladin [4] - Knight; [8] - Elite Knight Espero ter ajudado. Edited August 6, 2017 by Leoxtibia fearson 1 Link to comment Share on other sites More sharing options...
VelhoBarreiro 52 Posted August 4, 2017 Share Posted August 4, 2017 Uau, gostei! Isso abre algumas possibilidades no RPG! Link to comment Share on other sites More sharing options...
fefuxd 2 Posted August 5, 2017 Share Posted August 5, 2017 Em 03/08/2017 at 22:09, Leoxtibia disse: Resolvi colocar o sistema de critical hit aqui à disposição de todos. Percebi que o fórum não tinha nenhum atualizado ou sem erros, então pode ser útil para outras pessoas. A ideia foi do @fefuxd e foi testado no tfs 0.4. Lembrando que funciona somente para critical hits em players. Funcionamento: Basicamente, o sistema dará chances diferentes para cada vocação para que aconteça o Critical Hit. Em creaturescripts/scripts: CriticalVocs.lua Mostrar conteúdo oculto local CriticalHitMsg, hit = true, --- true (false) para mostrar (ou não) o valor do hit no Default { -- porcentagem de aumento do hit, 1.2 = 20%, 2.0 = 100%, 1.4 = 40% e aí vai... [1] = {percent = 2.0}, [2] = {percent = 1.5}, [3] = {percent = 2.0}, [4] = {percent = 1.5}, [5] = {percent = 2.0}, [6] = {percent = 1.5}, [7] = {percent = 1.5}, [8] = {percent = 2.0} } local protect = {} function onStatsChange(cid, attacker, type, combat, value) if isPlayer(attacker) and (not (attacker == cid)) and (type == STATSCHANGE_HEALTHLOSS) and isPlayer(cid) and value >=1 then if (getPlayerStorageValue(attacker, 19830)) >= math.random (0,100) then if protect[attacker] then protect[attacker] = nil return true end critical = math.ceil(2*value*hit[getPlayerVocation(attacker)].percent) protect[attacker] = true doTargetCombatHealth(attacker, cid, combat, -critical, -critical, CONST_ME_NONE) if CriticalHitMsg then doPlayerSendTextMessage(attacker, MESSAGE_STATUS_CONSOLE_ORANGE, "CRITICAL HIT: "..math.floor((critical/2))) end doSendAnimatedText(getCreaturePos(attacker), "CRITICAL!!", COLOR_DARKRED) return false end end return true end No login.lua: Mostrar conteúdo oculto local chanceTable = { -- chance [0 a 100%] para critical hit [1] = {chance = 20}, [2] = {chance = 30}, [3] = {chance = 50}, [4] = {chance = 40}, [5] = {chance = 20}, [6] = {chance = 30}, [7] = {chance = 50}, [8] = {chance = 40} } registerCreatureEvent(cid, "CriticalHit") setPlayerStorageValue(cid, 19830, chanceTable[getPlayerVocation(cid)].chance) No creaturescripts.xml, adicione a tag: <event type="statschange" name="CriticalHit" event="script" value="CriticalVocs.lua"/> Lembrando que geralmente: (se é quem alguém não sabe) [1] - Sorcerer ; [5] - Master Sorcerer [2] - Druid; [6] - Elder Druid [3] - Paladin; [7] - Royal Paladin [4] - Knight; [8] - Elite Knight Espero ter ajudado. @Leoxtibia o sistema rodou 95% muito bom.. a unica coisa que eu notei de errado é que quando o mago esta com "utamo vita" o critico não funciona Link to comment Share on other sites More sharing options...
Leoxtibia 137 Posted August 5, 2017 Author Share Posted August 5, 2017 4 horas atrás, fefuxd disse: @Leoxtibia o sistema rodou 95% muito bom.. a unica coisa que eu notei de errado é que quando o mago esta com "utamo vita" o critico não funciona @fefuxd Realmente, já editei. Link to comment Share on other sites More sharing options...
fefuxd 2 Posted August 6, 2017 Share Posted August 6, 2017 @Leoxtibia SHOW! Link to comment Share on other sites More sharing options...
fefuxd 2 Posted August 6, 2017 Share Posted August 6, 2017 (edited) @Leoxtibia aew man encontrei outro bug.. na função login.lua .. quando eu tento logar no Account Manager da o erro da imagem abaixo. dai fiz o teste e tirei a função que vc tinha colocado no login.lua e o problema parou de acontecer.. ta faltando alguma coisa sera? estou anexando também parte do meu login.lua (linha 83) conforme erro no console @Leoxtibia esquece.. consegui achar o erro... bastou o minimo de vontade pra entender o código e pesquisar no google kkk =D .. como o Account Manager é sem vocação (0) .. faltou colocar a linha dele ali nas chances e o problema foi resolvido [0] = {chance = 20}, atualiza seu código ai para o pessoal que for usar não passar por isso também Edited August 6, 2017 by fefuxd Link to comment Share on other sites More sharing options...
Babiloko 0 Posted December 5, 2019 Share Posted December 5, 2019 Existe alguma forma de evitar overflow? estou usando OTX 2 e as vezes da uns hits absurdos com mensagem de overflow no console. Link to comment Share on other sites More sharing options...
leozinpbb 7 Posted November 26, 2020 Share Posted November 26, 2020 (edited) Em 05/08/2017 em 13:15, Leoxtibia disse: @fefuxd Realmente, já editei. quando entra com adm da error: @Leoxtibia Edited November 26, 2020 by leozinpbb 1 Link to comment Share on other sites More sharing options...
Recommended Posts