Ir para conteúdo
  • Cadastre-se

(Resolvido)Chance de aplicar Condition no Inimigo com item!


Ir para solução Resolvido por Wakon,

Posts Recomendados

@Maniaco, testa ai, fiz umas alterações no script do @FeeTads:

local percent = 30  --- Chance de Aplicar Condition
local exhaustStorage = 2353255  -- use a mesma em todos os scripts para não ter conditions do mesmo estilo aplicando ao mesmo tempo ou use diferentes storages em cada script para permitir várias conditions diferentes no mesmo target, e cuidado para n usar em outros sistemas para n causar interferência.
local ticks = 20 -- quantidade de vezes que vai aplicar a condition
local ticksDelay = 1000 -- tempo entre os ticks em milissegundos
local minDmg, maxDmg = 5000, 10000

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1)
setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0)

local function apply_condition(target, count)
    if isCreature(target) then		--caso o target morra, acaba o condition
        local dano = math.ceil(math.random(minDmg, maxDmg))
        doCreatureAddHealth(target, -dano)
        doSendAnimatedText(getCreaturePos(target), "-"..dano, 180)
        if count > 0 then
            count = count - 1
            addEvent(apply_condition, ticksDelay, target, count)
        end
    end
   return true
end

function onUseWeapon(cid, var)
    local target = getCreatureTarget(cid)
    if isCreature(target) and getCreatureStorage(target, exhaustStorage) - os.time() < 1 then
        local position1 = getThingPosition(target)
        if percent >= math.random(1, 100) then
            doSendMagicEffect(position1, 5)
            doCreatureSetStorage(target, exhaustStorage, os.time() + ticks)
            apply_condition(target, ticks)
        end
    end
   return doCombat(cid, combat, var)
end

 

Editado por Wakon (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Respostas 29
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

@Maniaco, testa ai, fiz umas alterações no script do @FeeTads: local percent = 30 --- Chance de Aplicar Condition local exhaustStorage = 2353255 -- use a mesma em todos os scripts para não ter conditions do mesmo estilo aplicando ao mesmo tempo ou use diferentes storages em cada script para permitir várias conditions diferentes no mesmo target, e cuidado para n usar em outros sistemas para n causar interferência. local ticks = 20 -- quantidade de vezes que vai aplicar a condition local tic

@Maniaco, tenta o seguinte, coloca essa função: doTargetCombatHealth(nil, target, COMBAT_FIREDAMAGE, -minDmg, -maxDmg, 0xFF) No lugar dessa: doCreatureAddHealth(target, -dano) E remove essas linhas: local dano = math.ceil(math.random(minDmg, maxDmg)) doSendAnimatedText(getCreaturePos(target), "-"..dano, 180) Ai pra trocar o tipo é só alterar no lugar de COMBAT_FIREDAMAGE, geralmente você encontra os tipos em data/lib/000-constant.lua.

se vc tiver wand elemental por script no weapon, vc pode colocar um math.random(1,100) e se for < 3  seta um condition local condition = createConditionObject(CONDITION_CURSED) setConditionParam(condition, CONDITION_PARAM_DELAYED, 1) setCombatCondition(combat, condition)   tipo esse condition CURSED que deixa o char levando dano de mort. caso seja default o ataque, ou seja pela source. vc pode fazer um CreatureScripts com "onStatsChange" checando a arma do attacker, e com um mat

Posted Images

  Em 04/10/2022 em 22:00, Wakon disse:

@Maniaco, testa ai, fiz umas alterações no script do @FeeTads:


local percent = 30  --- Chance de Aplicar Condition
local exhaustStorage = 2353255  -- use a mesma em todos os scripts para não ter conditions do mesmo estilo aplicando ao mesmo tempo ou use diferentes storages em cada script para permitir várias conditions diferentes no mesmo target, e cuidado para n usar em outros sistemas para n causar interferência.
local ticks = 20 -- quantidade de vezes que vai aplicar a condition
local ticksDelay = 1000 -- tempo entre os ticks em milissegundos
local minDmg, maxDmg = 5000, 10000

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1)
setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0)

local function apply_condition(target, count)
    if isCreature(target) then		--caso o target morra, acaba o condition
        local dano = math.ceil(math.random(minDmg, maxDmg))
        doCreatureAddHealth(target, -dano)
        doSendAnimatedText(getCreaturePos(target), "-"..dano, 180)
        if count > 0 then
            count = count - 1
            addEvent(apply_condition, ticksDelay, target, count)
        end
    end
   return true
end

function onUseWeapon(cid, var)
    local target = getCreatureTarget(cid)
    if isCreature(target) and getCreatureStorage(target, exhaustStorage) - os.time() < 1 then
        local position1 = getThingPosition(target)
        if percent >= math.random(1, 100) then
            doSendMagicEffect(position1, 5)
            doCreatureSetStorage(target, exhaustStorage, os.time() + ticks)
            apply_condition(target, ticks)
        end
    end
   return doCombat(cid, combat, var)
end

 

Mostrar mais  

@Wakon

Está funcionando perfeitamente agora so preciso ver a forma de aplicar a condititron de fire, ice, slow, entre outras ! 

Editado por Maniaco (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Solução

@Maniaco, tenta o seguinte, coloca essa função:

doTargetCombatHealth(nil, target, COMBAT_FIREDAMAGE, -minDmg, -maxDmg, 0xFF)

No lugar dessa:

doCreatureAddHealth(target, -dano)

E remove essas linhas:

local dano = math.ceil(math.random(minDmg, maxDmg))
doSendAnimatedText(getCreaturePos(target), "-"..dano, 180)

Ai pra trocar o tipo é só alterar no lugar de COMBAT_FIREDAMAGE, geralmente você encontra os tipos em data/lib/000-constant.lua.

Link para o post
Compartilhar em outros sites
  Em 06/10/2022 em 03:01, Wakon disse:

@Maniaco, tenta o seguinte, coloca essa função:

doTargetCombatHealth(nil, target, COMBAT_FIREDAMAGE, -minDmg, -maxDmg, 0xFF)

No lugar dessa:

doCreatureAddHealth(target, -dano)

E remove essas linhas:

local dano = math.ceil(math.random(minDmg, maxDmg))
doSendAnimatedText(getCreaturePos(target), "-"..dano, 180)

Ai pra trocar o tipo é só alterar no lugar de COMBAT_FIREDAMAGE, geralmente você encontra os tipos em data/lib/000-constant.lua.

Expand   Mostrar mais  

@Wakon Está perfeito! Dano tudo!
Uma duvida apenas! o exaustion - ele aplica apenas em player correto ? ja em criaturas/Monters ele sempre vai aplicar quando bater a chance correto ?

Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Estatísticas dos Fóruns

    96844
    Tópicos
    519599
    Posts



×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo