Ir para conteúdo
  • Cadastre-se

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


Ir para solução Resolvido por Wakon,

Posts Recomendados

TFS 0.4 860

 

Salve Tk, estava procurando algum sistema parecido mas nao encontrei aqui no tk e vim pedir ajuda de vcis!

 

Bom o script funcionaria da seguinte forma!

Gostaria de que alguns itens especiais tivessem a chance de aplicar uma Condition Ex:

Item xxxx (Luva), 2% Chance de aplicar Burn On hit e o burn daria 5000 a 10k de dmg random

Item xxxx (Cajado), 2% Chance de aplicar Poison On hit e o Poinson daria 5000 a 10k de dmg random

Item xxxx (Espada), 2% Chance de aplicar Paralisy On hit

 

Condition Ficaria ativa por 15 a 20 Segundos!

E soltar  uma Magic Effect no player(Inimigo) toda vez que o 2% Conseguir aplicar a condition!



Porem no DamageCondition para o dano teria alguma forma de deixa ele Random ? Ex:

addDamageCondition(condition, , , -math.random(,10000))

E a possibilida de verificar se o target já esta com a Condition Aplicada para nao aplicar infinitamente ? 

Resolvido Por momento! Para quem quiser utilizar! Script:

Condition ENERGY.Lua

Spoiler

local percent = 30  --- Chance de Aplicar Condition

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 condition = createConditionObject(CONDITION_ENERGY)  ------ Aqui Voce troca qual tipo de Condition vai aplicar o item! 
setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(condition, 50, 2000, -75) ------ Aqui Voce troca a Formula do Dano da Condition

function onUseWeapon(cid, var)
    local position1 = getThingPosition(getCreatureTarget(cid))
    if isCreature(variantToNumber(var)) then
        if percent >= math.random(1,100) then
            doAddCondition(variantToNumber(var), condition)
            doSendMagicEffect(position1, 346) 
        end
    end
    
    return doCombat(cid, combat, var)
end


 


 

 

Weapons.Xml     ----- Aqui voce coloca os ids dos items que vao aplicar condition Energy

Spoiler

<melee id="XXXX;XXXX;XXXX;XXXXX" event="script" value="condition ENERGY.lua"/>

 

Editado por Maniaco (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
Em 07/08/2022 em 19:06, Maniaco disse:

Gostaria de que alguns itens especiais tivessem a chance de aplicar uma Condition Ex:

 

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 math.random(1,100) de adicionar a condition

Link para o post
Compartilhar em outros sites
1 hora atrás, Maniaco disse:

Eu acabei atualizando o Topico com uma solução e uma duvida nova poderia me orientar! 

a duvida seria checar se o target ja está com o condition?
creio que o mais facil seria ativar uma storage no target com pelo menos 1 minuto de CD pra n receber novamente.}
tipo: addCondition > 1 min de CD no inimigo
pq se não por mais que não coloque enquanto estiver com o condition, quando o condition acabar, ele ja pode sofrer de novo.

então creio que o mais certo seria tipo:

 

local percent = 30  --- Chance de Aplicar Condition
local storage_CD = 2353255  --storage, se não souber não mexer
local timer = 60  --timer em segundos pra aplicar o condition novamente


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 condition = createConditionObject(CONDITION_ENERGY)  ------ Aqui Voce troca qual tipo de Condition vai aplicar o item! 
setConditionParam(condition, CONDITION_PARAM_DELAYED, 10000) -- param_delayed, 10000 creio que o 10000 sã0 10 segundos, mexi aqui, mas não tenho ctz se é tempo adicionado ao target ou CD pra usar de novo, testar PF
addDamageCondition(condition, 50, 2000, -75) ------ Aqui Voce troca a Formula do Dano da Condition

function onUseWeapon(cid, var)
  	local target = getCreatureTarget(cid)
  	if getPlayerStorageValue(target, storage_CD) - os.time() > 0 then
    	return true -- não precisa nada dentro desse IF pq se não iria flodar a tela do player
    end
    local position1 = getThingPosition(target)
    if isCreature(variantToNumber(var)) then			-- isCreature = TODAS as criaturas > isPlayer > somente em player > isMonster somente em mmonster
        if percent >= math.random(1,100) then
            doAddCondition(variantToNumber(var), condition)
            doSendMagicEffect(position1, 346) 
      		setCreatureStorage(target, storage_CD, os.time() + timer)
        end
    end
    
    return doCombat(cid, combat, var)
end

 

Link para o post
Compartilhar em outros sites
22 horas atrás, FeeTads disse:

a duvida seria checar se o target ja está com o condition?
creio que o mais facil seria ativar uma storage no target com pelo menos 1 minuto de CD pra n receber novamente.}
tipo: addCondition > 1 min de CD no inimigo
pq se não por mais que não coloque enquanto estiver com o condition, quando o condition acabar, ele ja pode sofrer de novo.

então creio que o mais certo seria tipo:

 


local percent = 30  --- Chance de Aplicar Condition
local storage_CD = 2353255  --storage, se não souber não mexer
local timer = 60  --timer em segundos pra aplicar o condition novamente


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 condition = createConditionObject(CONDITION_ENERGY)  ------ Aqui Voce troca qual tipo de Condition vai aplicar o item! 
setConditionParam(condition, CONDITION_PARAM_DELAYED, 10000) -- param_delayed, 10000 creio que o 10000 sã0 10 segundos, mexi aqui, mas não tenho ctz se é tempo adicionado ao target ou CD pra usar de novo, testar PF
addDamageCondition(condition, 50, 2000, -75) ------ Aqui Voce troca a Formula do Dano da Condition

function onUseWeapon(cid, var)
  	local target = getCreatureTarget(cid)
  	if getPlayerStorageValue(target, storage_CD) - os.time() > 0 then
    	return true -- não precisa nada dentro desse IF pq se não iria flodar a tela do player
    end
    local position1 = getThingPosition(target)
    if isCreature(variantToNumber(var)) then			-- isCreature = TODAS as criaturas > isPlayer > somente em player > isMonster somente em mmonster
        if percent >= math.random(1,100) then
            doAddCondition(variantToNumber(var), condition)
            doSendMagicEffect(position1, 346) 
      		setCreatureStorage(target, storage_CD, os.time() + timer)
        end
    end
    
    return doCombat(cid, combat, var)
end

 



Pefeito dmais unico problema que faltou foi o Damage Min- Max- Dano sofrido pela Condition!

 

addDamageCondition(condition, 50, 2000, -math.random(5000,10000))

Poderia me dar os detalhes! ou dessa forma esta correto ?

Link para o post
Compartilhar em outros sites
2 horas atrás, Maniaco disse:

Poderia me dar os detalhes! ou dessa forma esta correto ?

pra falar bem a vdd, eu não sei como funciona esse addDamageCondition, nunca usei ela, eu faria uma function pra dando dano no target, +/- assim:
 

local percent = 30  --- Chance de Aplicar Condition
local storage_CD = 2353255  --storage, se não souber não mexer
local timer = 60  --timer em segundos pra aplicar o condition novamente
local tempo_de_condition = 20


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)
  
   if isCreature(target) then		--caso o target morra, acaba o condition
    	dano = math.ceil(math.random(5000,10000))			--dano entre 5-10k
    	doTargetCombatHealth(target, NULL, COMBAT_ENERGYDAMAGE, -dano, -dano, 255)		--source function de combat
    	if tempo_de_condition > 0 then								--tempo de condition no cabeçalho
      		addEvent(apply_condition, 1000, target)					--addEvent de 1s que chama novamente a função
      		tempo_de_condition = tempo_de_condition - 1				-- diminui 1 na contagem
      	end
    end
  return true  
end


function onUseWeapon(cid, var)
  	local target = getCreatureTarget(cid)
  	if getPlayerStorageValue(target, storage_CD) - os.time() > 0 then
    	return true -- não precisa nada dentro desse IF pq se não iria flodar a tela do player
    end
    local position1 = getThingPosition(target)
    if isCreature(variantToNumber(var)) then			-- isCreature = TODAS as criaturas > isPlayer > somente em player > isMonster somente em mmonster
        if percent >= math.random(1,100) then
            doSendMagicEffect(position1, 346) 
      		setPlayerStorageValue(target, storage_CD, os.time() + timer)
      		apply_condition(target)
        end
    end
    
    return doCombat(cid, combat, var)
end

 

Link para o post
Compartilhar em outros sites
8 horas atrás, FeeTads disse:

pra falar bem a vdd, eu não sei como funciona esse addDamageCondition, nunca usei ela, eu faria uma function pra dando dano no target, +/- assim:
 



local percent = 30  --- Chance de Aplicar Condition
local storage_CD = 2353255  --storage, se não souber não mexer
local timer = 60  --timer em segundos pra aplicar o condition novamente
local tempo_de_condition = 20


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)
  
   if isCreature(target) then		--caso o target morra, acaba o condition
    	dano = math.ceil(math.random(5000,10000))			--dano entre 5-10k
    	doTargetCombatHealth(target, NULL, COMBAT_ENERGYDAMAGE, -dano, -dano, 255)		--source function de combat
    	if tempo_de_condition > 0 then								--tempo de condition no cabeçalho
      		addEvent(apply_condition, 1000, target)					--addEvent de 1s que chama novamente a função
      		tempo_de_condition = tempo_de_condition - 1				-- diminui 1 na contagem
      	end
    end
  return true  
end


function onUseWeapon(cid, var)
  	local target = getCreatureTarget(cid)
  	if getPlayerStorageValue(target, storage_CD) - os.time() > 0 then
    	return true -- não precisa nada dentro desse IF pq se não iria flodar a tela do player
    end
    local position1 = getThingPosition(target)
    if isCreature(variantToNumber(var)) then			-- isCreature = TODAS as criaturas > isPlayer > somente em player > isMonster somente em mmonster
        if percent >= math.random(1,100) then
            doSendMagicEffect(position1, 346) 
      		setPlayerStorageValue(target, storage_CD, os.time() + timer)
      		apply_condition(target)
        end
    end
    
    return doCombat(cid, combat, var)
end

 

Distro Erro:
[22:6:38.650] [Error - Weapon Interface]
[22:6:38.651] In a timer event called from:
[22:6:38.652] data/weapons/scripts/condition.lua:onUseWeapon
[22:6:38.652] Description:
[22:6:38.653] (luaDoTargetCombatHealth) Creature not found

 

Tentei assim e ta funcionando porem o dano que ele acerta a primeira vez na condition quando liga o servidor continua ate reiniciar novamenete ele fica em um valor fixo exemplo 1345, e repete as 10x o mesmo dano!

Precisaria tbm colocar para checar o player se esta com a condition!

 

local percent = 30  --- Chance de Aplicar Condition

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 condition = createConditionObject(CONDITION_ENERGY)
                    setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
                    local dano = {
                         {-(math.random(1300,2000))},
                          }
                    for i = 1, #dano do
                    local t = dano[i]
                    addDamageCondition(condition, 10, 1000, t[1])
                    end

function onUseWeapon(cid, var)
	local position1 = getThingPosition(getCreatureTarget(cid))
	if isCreature(variantToNumber(var)) then
		if percent >= math.random(1,100) then
			doAddCondition(variantToNumber(var), condition)
			doSendMagicEffect(position1, 346) 
		end
	end
	
	return doCombat(cid, combat, var)
end

 

Editado por Maniaco (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
12 horas atrás, Maniaco disse:

Distro Erro:
[22:6:38.650] [Error - Weapon Interface]
[22:6:38.651] In a timer event called from:
[22:6:38.652] data/weapons/scripts/condition.lua:onUseWeapon
[22:6:38.652] Description:
[22:6:38.653] (luaDoTargetCombatHealth) Creature not found

 

Tentei assim e ta funcionando porem o dano que ele acerta a primeira vez na condition quando liga o servidor continua ate reiniciar novamenete ele fica em um valor fixo exemplo 1345, e repete as 10x o mesmo dano!

Precisaria tbm colocar para checar o player se esta com a condition!

 


local percent = 30  --- Chance de Aplicar Condition

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 condition = createConditionObject(CONDITION_ENERGY)
                    setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
                    local dano = {
                         {-(math.random(1300,2000))},
                          }
                    for i = 1, #dano do
                    local t = dano[i]
                    addDamageCondition(condition, 10, 1000, t[1])
                    end

function onUseWeapon(cid, var)
	local position1 = getThingPosition(getCreatureTarget(cid))
	if isCreature(variantToNumber(var)) then
		if percent >= math.random(1,100) then
			doAddCondition(variantToNumber(var), condition)
			doSendMagicEffect(position1, 346) 
		end
	end
	
	return doCombat(cid, combat, var)
end

 

 

 

O valor tá fixo pq o math.random tá fora do onUseWeapon coloca o math.random dentro do onUse e passa o dano por função 

 

 

 

Link para o post
Compartilhar em outros sites
5 horas atrás, FeeTads disse:

 

 

O valor tá fixo pq o math.random tá fora do onUseWeapon coloca o math.random dentro do onUse e passa o dano por função 

 

 

 

Seria Algo assim ? Chegou em um ponto que eu fiquei perdido nao entendi muito bem! Porem coloquei dentro do OnUseWeapon e continua com o Dano Fixo!
 

local percent = 30  --- Chance de Aplicar Condition


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 condition = createConditionObject(CONDITION_ENERGY)
                    setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
                


function onUseWeapon(cid, var)
	local position1 = getThingPosition(getCreatureTarget(cid))
	    local dano = {
                         {-(math.random(1300,2000))},
                          }
	if isCreature(variantToNumber(var)) then
		if percent >= math.random(1,100) then
			doAddCondition(variantToNumber(var), condition)
			doSendMagicEffect(position1, 346) 
			        for i = 1, #dano do
                    local t = dano[i]
                    addDamageCondition(condition, 10, 1000, t[1])
                    end
		end
	end
	
	return doCombat(cid, combat, var)
end


e o seu Script: 
Continuo com o Erro
[22:6:38.650] [Error - Weapon Interface]
[22:6:38.651] In a timer event called from:
[22:6:38.652] data/weapons/scripts/condition.lua:onUseWeapon
[22:6:38.652] Description:
[22:6:38.653] (luaDoTargetCombatHealth) Creature not found

Poderia dar um help pois seu ta mais completinho!

Link para o post
Compartilhar em outros sites

Tenta usar o script assim. Eu fiz o exemplo de uma condition de fire. 

 

Eu não mexo muito com tfs 0.X por ser meio limitado, mas acho que vai dar certo assim. Se tiver algum erro só falar

 

local percent = 30  --- Chance de Aplicar Condition

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)

local condition = createConditionObject(CONDITION_FIRE)
setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(condition, 1, 3000, -math.random(5000,10000))
addDamageCondition(condition, 1, 3000, -math.random(5000,10000))
addDamageCondition(condition, 1, 3000, -math.random(5000,10000))
addDamageCondition(condition, 1, 3000, -math.random(5000,10000))
addDamageCondition(condition, 1, 3000, -math.random(5000,10000))
addDamageCondition(condition, 1, 3000, -math.random(5000,10000))
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
	if not isCreature(variantToNumber(var)) or hasCondition(var) == true or (math.random(1,100) > percent) then
		return false
	end
	return doCombat(cid, combat, var)
end

 

Editado por Toruk
var (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
15 horas atrás, Toruk disse:

Tenta usar o script assim. Eu fiz o exemplo de uma condition de fire. 

 

Eu não mexo muito com tfs 0.X por ser meio limitado, mas acho que vai dar certo assim. Se tiver algum erro só falar

 


local percent = 30  --- Chance de Aplicar Condition

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)

local condition = createConditionObject(CONDITION_FIRE)
setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(condition, 1, 3000, -math.random(5000,10000))
addDamageCondition(condition, 1, 3000, -math.random(5000,10000))
addDamageCondition(condition, 1, 3000, -math.random(5000,10000))
addDamageCondition(condition, 1, 3000, -math.random(5000,10000))
addDamageCondition(condition, 1, 3000, -math.random(5000,10000))
addDamageCondition(condition, 1, 3000, -math.random(5000,10000))
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
	if not isCreature(variantToNumber(var)) or hasCondition(var) == true or (math.random(1,100) > percent) then
		return false
	end
	return doCombat(cid, combat, var)
end

 


A função CastSpell (Seria so derecionada para Spells correto ?,  Pois estou tentando utilizar o item para aplicar a condition!

function onCastSpell(cid, var)
Link para o post
Compartilhar em outros sites

Basta mudar para o tipo de função que você desejar, indiferente. Pode usar action, creaturescripts, onuseweapon, etc.

 

Oque vai causar a condition é o "return doCombat(cid, combat, var)".

 

Link para o post
Compartilhar em outros sites
4 minutos atrás, Toruk disse:

Basta mudar para o tipo de função que você desejar, indiferente. Pode usar action, creaturescripts, onuseweapon, etc.

 

Oque vai causar a condition é o "return doCombat(cid, combat, var)".

 

Sim, Estou ciente, porem Gostaria de que o Script do @FeeTads Funcionasse porque ele checa se o player já esta com a condition para nao aplicar infinitamente!

Link para o post
Compartilhar em outros sites

LOL. Você pensa que ele a aquele "script" está fazendo alguma checagem de condition.

 

Como deu pra ver nesse seu comentário, vc não se deu ao trabalho de ler o script dele e muito menos o meu, pra ver qual está fazendo checagem ou não ...

 

Btw, boa sorte com o script que faz checagem do além.

 

Link para o post
Compartilhar em outros sites
10 minutos atrás, Toruk disse:

LOL. Você pensa que ele a aquele "script" está fazendo alguma checagem de condition.

 

Como deu pra ver nesse seu comentário, vc não se deu ao trabalho de ler o script dele e muito menos o meu, pra ver qual está fazendo checagem ou não ...

 

Btw, boa sorte com o script que faz checagem do além.

 

Sim, no caso o dele da um CW para aplicar novamente!

O seu perdão eu realmente só olhei por cima!

17 horas atrás, Toruk disse:

Tenta usar o script assim. Eu fiz o exemplo de uma condition de fire. 

 

Eu não mexo muito com tfs 0.X por ser meio limitado, mas acho que vai dar certo assim. Se tiver algum erro só falar

 



local percent = 30  --- Chance de Aplicar Condition

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)

local condition = createConditionObject(CONDITION_FIRE)
setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(condition, 1, 3000, -math.random(5000,10000))
addDamageCondition(condition, 1, 3000, -math.random(5000,10000))
addDamageCondition(condition, 1, 3000, -math.random(5000,10000))
addDamageCondition(condition, 1, 3000, -math.random(5000,10000))
addDamageCondition(condition, 1, 3000, -math.random(5000,10000))
addDamageCondition(condition, 1, 3000, -math.random(5000,10000))
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
	if not isCreature(variantToNumber(var)) or hasCondition(var) == true or (math.random(1,100) > percent) then
		return false
	end
	return doCombat(cid, combat, var)
end

 

Teria como colcoar para soltar Magic Effect apos aplicar a condition ?

Esta retornando o erro: [12:21:28.823] [Error - Weapon Interface]
[12:21:28.824] data/weapons/scripts/condition.lua:onUseWeapon
[12:21:28.825] Description:
[12:21:28.825] (luaGetCreatureCondition) Creature not found

Quando aplica a condition o personagem para de bater! ate acabar a condition! 

Editado por Maniaco (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
5 horas atrás, Maniaco disse:

Sim, no caso o dele da um CW para aplicar novamente!

o meu não checa o condition, pq como falei, tem como aplicar condition energy/fire/poison por runa, ai o cara nunca vai levar o condition da arma, por isso eh mais facil substituir por storage que assim ele sempre vai tomar o condition.

 

tenta assim:

local percent = 30  --- Chance de Aplicar Condition
local storage_CD = 2353255  --storage, se não souber não mexer
local timer = 60  --timer em segundos pra aplicar o condition novamente
local tempo_de_condition = 20


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(cid, target)
  
   if isCreature(target) and isCreature(cid) then		--caso o target morra, acaba o condition
    	dano = math.ceil(math.random(5000,10000))			--dano entre 5-10k
    	doTargetCombatHealth(target, cid, COMBAT_ENERGYDAMAGE, -dano, -dano, 255)		--source function de combat
    	if tempo_de_condition > 0 then								--tempo de condition no cabeçalho
      		addEvent(apply_condition, 1000, target)					--addEvent de 1s que chama novamente a função
      		tempo_de_condition = tempo_de_condition - 1				-- diminui 1 na contagem
      	end
    end
  return true  
end


function onUseWeapon(cid, var)
  	local target = getCreatureTarget(cid)
  	if getPlayerStorageValue(target, storage_CD) - os.time() > 0 then
    	return true -- não precisa nada dentro desse IF pq se não iria flodar a tela do player
    end
    local position1 = getThingPosition(target)
    if isCreature(variantToNumber(var)) then			-- isCreature = TODAS as criaturas > isPlayer > somente em player > isMonster somente em mmonster
        if percent >= math.random(1,100) then
            doSendMagicEffect(position1, 346) 
      		setPlayerStorageValue(target, storage_CD, os.time() + timer)
      		apply_condition(cid, target)
        end
    end
    
    return doCombat(cid, combat, var)
end

 

caso não de certo, vou arrumar pra fazer com AddHealth ou AddMana no negativo, testa e ve se funciona mano pls

Link para o post
Compartilhar em outros sites
6 horas atrás, FeeTads disse:

o meu não checa o condition, pq como falei, tem como aplicar condition energy/fire/poison por runa, ai o cara nunca vai levar o condition da arma, por isso eh mais facil substituir por storage que assim ele sempre vai tomar o condition.

 

tenta assim:


local percent = 30  --- Chance de Aplicar Condition
local storage_CD = 2353255  --storage, se não souber não mexer
local timer = 60  --timer em segundos pra aplicar o condition novamente
local tempo_de_condition = 20


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(cid, target)
  
   if isCreature(target) and isCreature(cid) then		--caso o target morra, acaba o condition
    	dano = math.ceil(math.random(5000,10000))			--dano entre 5-10k
    	doTargetCombatHealth(target, cid, COMBAT_ENERGYDAMAGE, -dano, -dano, 255)		--source function de combat
    	if tempo_de_condition > 0 then								--tempo de condition no cabeçalho
      		addEvent(apply_condition, 1000, target)					--addEvent de 1s que chama novamente a função
      		tempo_de_condition = tempo_de_condition - 1				-- diminui 1 na contagem
      	end
    end
  return true  
end


function onUseWeapon(cid, var)
  	local target = getCreatureTarget(cid)
  	if getPlayerStorageValue(target, storage_CD) - os.time() > 0 then
    	return true -- não precisa nada dentro desse IF pq se não iria flodar a tela do player
    end
    local position1 = getThingPosition(target)
    if isCreature(variantToNumber(var)) then			-- isCreature = TODAS as criaturas > isPlayer > somente em player > isMonster somente em mmonster
        if percent >= math.random(1,100) then
            doSendMagicEffect(position1, 346) 
      		setPlayerStorageValue(target, storage_CD, os.time() + timer)
      		apply_condition(cid, target)
        end
    end
    
    return doCombat(cid, combat, var)
end

 

caso não de certo, vou arrumar pra fazer com AddHealth ou AddMana no negativo, testa e ve se funciona mano pls

Nao esta dando erro na distro porem quando eu ataco o alvo e aplico a condition ele para de dar dano! por um tempo e depois volta a dar dano porem a condition nao da dano apenas o hit normal do item!

Link para o post
Compartilhar em outros sites
18 horas atrás, Maniaco disse:

Nao esta dando erro na distro porem quando eu ataco o alvo e aplico a condition ele para de dar dano! por um tempo e depois volta a dar dano porem a condition nao da dano apenas o hit normal do item!


tenta assim então:
 

local percent = 30  --- Chance de Aplicar Condition
local storage_CD = 2353255  --storage, se não souber não mexer
local timer = 60  --timer em segundos pra aplicar o condition novamente
local tempo_de_condition = 20


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(cid, target)
  
   if isCreature(target) and isCreature(cid) then		--caso o target morra, acaba o condition
    	dano = math.ceil(math.random(5000,10000))			--dano entre 5-10k
    	doTargetCombatHealth(target, cid, COMBAT_ENERGYDAMAGE, -dano, -dano, 255)		--source function de combat
    	if tempo_de_condition > 0 then								--tempo de condition no cabeçalho
      		tempo_de_condition = tempo_de_condition - 1				-- diminui 1 na contagem
      		addEvent(apply_condition, 1000, cid, target)					--addEvent de 1s que chama novamente a função
      	end
    end
  return true  
end


function onUseWeapon(cid, var)
  	local target = getCreatureTarget(cid)
  	if getPlayerStorageValue(target, storage_CD) - os.time() > 0 then
    	 return doCombat(cid, combat, var) -- não precisa nada dentro desse IF pq se não iria flodar a tela do player
    end
    local position1 = getThingPosition(target)
    if isCreature(variantToNumber(var)) then			-- isCreature = TODAS as criaturas > isPlayer > somente em player > isMonster somente em mmonster
        if percent >= math.random(1,100) then
            doSendMagicEffect(position1, 346) 
      		setPlayerStorageValue(target, storage_CD, os.time() + timer)
      		apply_condition(cid, target)
        end
    end
    
    return doCombat(cid, combat, var)
end

 

Link para o post
Compartilhar em outros sites
57 minutos atrás, FeeTads disse:


tenta assim então:
 


local percent = 30  --- Chance de Aplicar Condition
local storage_CD = 2353255  --storage, se não souber não mexer
local timer = 60  --timer em segundos pra aplicar o condition novamente
local tempo_de_condition = 20


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(cid, target)
  
   if isCreature(target) and isCreature(cid) then		--caso o target morra, acaba o condition
    	dano = math.ceil(math.random(5000,10000))			--dano entre 5-10k
    	doTargetCombatHealth(target, cid, COMBAT_ENERGYDAMAGE, -dano, -dano, 255)		--source function de combat
    	if tempo_de_condition > 0 then								--tempo de condition no cabeçalho
      		tempo_de_condition = tempo_de_condition - 1				-- diminui 1 na contagem
      		addEvent(apply_condition, 1000, cid, target)					--addEvent de 1s que chama novamente a função
      	end
    end
  return true  
end


function onUseWeapon(cid, var)
  	local target = getCreatureTarget(cid)
  	if getPlayerStorageValue(target, storage_CD) - os.time() > 0 then
    	 return doCombat(cid, combat, var) -- não precisa nada dentro desse IF pq se não iria flodar a tela do player
    end
    local position1 = getThingPosition(target)
    if isCreature(variantToNumber(var)) then			-- isCreature = TODAS as criaturas > isPlayer > somente em player > isMonster somente em mmonster
        if percent >= math.random(1,100) then
            doSendMagicEffect(position1, 346) 
      		setPlayerStorageValue(target, storage_CD, os.time() + timer)
      		apply_condition(cid, target)
        end
    end
    
    return doCombat(cid, combat, var)
end

 

Ele esta causando dano normal e aplicando a condition e o EXAUST porem nao esta dando o dano da condition! em Criaturas! 

Agora o teste no playerXplayer ele auto se aplicou a condition em quanto hitava! e so deu o dano 1 vez! 

Sem Erros na Distro! 

Link para o post
Compartilhar em outros sites
19 horas atrás, Maniaco disse:

Agora o teste no playerXplayer ele auto se aplicou a condition em quanto hitava! e so deu o dano 1 vez!

é imaginei kkkkkkkk, não aplica em monster por causa do check de storage, vou arrumar:

 

local percent = 30  --- Chance de Aplicar Condition
local storage_CD = 2353255  --storage, se não souber não mexer
local timer = 60  --timer em segundos pra aplicar o condition novamente
local tempo_de_condition = 20


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)
  
   if isCreature(target) then		--caso o target morra, acaba o condition
    	dano = math.ceil(math.random(5000,10000))			--dano entre 5-10k
    	doCreatureAddHealth(target, -dano)
    	doSendAnimatedText(getCreaturePos(target), "-"..dano, 180)
    	if tempo_de_condition > 0 then								--tempo de condition no cabeçalho
      		tempo_de_condition = tempo_de_condition - 1				-- diminui 1 na contagem
      		addEvent(apply_condition, 1000, target)					--addEvent de 1s que chama novamente a função
      	end
    end
  return true  
end


function onUseWeapon(cid, var)
  	local target = getCreatureTarget(cid)
  	if getPlayerStorageValue(cid, storage_CD) - os.time() > 0 then
    	 return doCombat(cid, combat, var) -- não precisa nada dentro desse IF pq se não iria flodar a tela do player
    end
    local position1 = getThingPosition(target)
    if isCreature(variantToNumber(var)) then			-- isCreature = TODAS as criaturas > isPlayer > somente em player > isMonster somente em mmonster
        if percent >= math.random(1,100) then
            doSendMagicEffect(position1, 346) 
      		setPlayerStorageValue(cid, storage_CD, os.time() + timer)
      		apply_condition(target)
        end
    end
    
    return doCombat(cid, combat, var)
end

 

teste e ve se funciona

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo