BR
action

[TFS 1.x] Critical System

Por Bruno, 05 de jun. de 2015 em Globalevents e Spells

script
55
23.3k
curruwilliamC
07 de junho de 2015 às 18:52

Não...

Eu quis dizer que com a mesma lib você consegue usar o sistema Dodge também!

Ela serve para ambos.

Sim.. mais e a parte que os MOnstro não hita nada dos players?

BrunoB
07 de junho de 2015 às 19:10

Sim.. mais e a parte que os MOnstro não hita nada dos players?

Man, isso não é do script...

Vou fazer um video demonstrando o funcionamento do mesmo.

curruwilliamC
08 de junho de 2015 às 20:45

Man, isso não é do script...

Vou fazer um video demonstrando o funcionamento do mesmo.

Testei agora, tenho ctz que essa lib faz com que os player não tome dano de monstros nenhum... a lib ou qualquer outra parte do script ta dando zika..

Editado Junho 8 por curruwilliam

2 meses depois...
espalhaE
03 de agosto de 2015 às 16:32

aqui funcionou normalmente, sem nenhum tipo de erro, só não to conseguindo mudar o efeito. Eu troco por

  creature:getPosition():sendMagicEffect(CONST_ME_HOLYDAMAGE)

e não vai, help?

BrunoB
03 de agosto de 2015 às 21:43

aqui funcionou normalmente, sem nenhum tipo de erro, só não to conseguindo mudar o efeito. Eu troco por

  creature:getPosition():sendMagicEffect(CONST_ME_HOLYDAMAGE)

e não vai, help?

 

creature:getPosition():sendMagicEffect(CONST_ME_HOLYAREA)
Lista de efeitos:

https://github.com/otland/forgottenserver/blob/master/src/const.h#L25-L111

Editado Agosto 3 por Bruno Minervino

espalhaE
03 de agosto de 2015 às 22:43

troquei lá, porém continua do mesmo jeito ;s

25107.jpg

 

BrunoB
04 de agosto de 2015 às 08:27

troquei lá, porém continua do mesmo jeito ;s

25107.jpg

 

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_HOLYAREA)
        end
    end
    return primaryDamage, primaryType, secondaryDamage, secondaryType
end
espalhaE
06 de agosto de 2015 às 08:57
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_HOLYAREA)
        end
    end
    return primaryDamage, primaryType, secondaryDamage, secondaryType
end

 

continua do mesmo jeito que o anterior, não sai o efeito do holy, tentei refazer todo procedimento, tá correto a instalação, não dá erro, porém não funciona :S

BrunoB
06 de agosto de 2015 às 09:33

continua do mesmo jeito que o anterior, não sai o efeito do holy, tentei refazer todo procedimento, tá correto a instalação, não dá erro, porém não funciona :S

Estranho cara, este é o único lugar onde o efeito é configurado.

espalhaE
06 de agosto de 2015 às 10:10

obrigado pela ajuda, deixa pra lá, retirei já. Tava com um bug, o player não tomava nenhum HIT pra monstros, nenhum mesmo.

BrunoB
06 de agosto de 2015 às 13:18

obrigado pela ajuda, deixa pra lá, retirei já. Tava com um bug, o player não tomava nenhum HIT pra monstros, nenhum mesmo.

 

Olha man, eu tive esse bug no começo e já tinha corrigido o erro...

De qualquer forma disponha!

2 semanas depois...
SkudS
14 de agosto de 2015 às 21:54

Onde tem o ID do item? Não achei...

BrunoB
14 de agosto de 2015 às 23:24

Onde tem o ID do item? Não achei...

<action itemid="18415" script="other/critical.lua"/>

6 meses depois...
otlkingO
13 de fevereiro de 2016 às 00:01

Testei em um TFS1.2 mas parece que não funciona, não aparece a mensagem e tudo mais.

Ou será que só não aparece a mensagem mesmo mas da o hit critico, você consegue me ajudar nisso?

 

Grato desde já!

1 mês depois...
bonfim25B
15 de março de 2016 às 03:04

aqui tambem da o mesmo problema o sistema de dodge ta funcionando normal porem quando coloco o de critico o player para de tomar dano eu tentei tirar sistema de dodge e continuo mesmo problema o problema so para quando eu tiro o sistema de critico do creaturescript minha tfs é a 1.2 tambem.

 

@

eu alterei essa parte: if not isPlayer(attacker) then return false end

 

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

 

para essa: if isPlayer(attacker) then

ficando assim

 

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

if isPlayer(attacker) then
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
end
return primaryDamage, primaryType, secondaryDamage, secondaryType
end

porem o critico funciona somente em player.

Editado Março 15 por Radamanthy