Leoxtibia 137 Postado Agosto 4, 2017 Share Postado Agosto 4, 2017 (editado) 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. Editado Agosto 6, 2017 por Leoxtibia fearson reagiu a isso 1 Link para o comentário Compartilhar em outros sites More sharing options...
VelhoBarreiro 52 Postado Agosto 4, 2017 Share Postado Agosto 4, 2017 Uau, gostei! Isso abre algumas possibilidades no RPG! Link para o comentário Compartilhar em outros sites More sharing options...
fefuxd 2 Postado Agosto 5, 2017 Share Postado Agosto 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 para o comentário Compartilhar em outros sites More sharing options...
Leoxtibia 137 Postado Agosto 5, 2017 Autor Share Postado Agosto 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 para o comentário Compartilhar em outros sites More sharing options...
fefuxd 2 Postado Agosto 6, 2017 Share Postado Agosto 6, 2017 @Leoxtibia SHOW! Link para o comentário Compartilhar em outros sites More sharing options...
fefuxd 2 Postado Agosto 6, 2017 Share Postado Agosto 6, 2017 (editado) @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 Editado Agosto 6, 2017 por fefuxd Link para o comentário Compartilhar em outros sites More sharing options...
Babiloko 0 Postado Dezembro 5, 2019 Share Postado Dezembro 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 para o comentário Compartilhar em outros sites More sharing options...
leozinpbb 7 Postado Novembro 26, 2020 Share Postado Novembro 26, 2020 (editado) Em 05/08/2017 em 13:15, Leoxtibia disse: @fefuxd Realmente, já editei. quando entra com adm da error: @Leoxtibia Editado Novembro 26, 2020 por leozinpbb 1 Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados