Ir para conteúdo

Featured Replies

Postado
  Em 16/09/2022 em 15:22, 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

 

  • Respostas 29
  • Visualizações 1.9k
  • Created
  • Última resposta

Top Posters In This Topic

Most 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 c

  • @Maniaco, tenta o seguinte, coloca essa função: doTargetCombatHealth(nil, target, COMBAT_FIREDAMAGE, -minDmg, -maxDmg, 0xFF) No lugar dessa: doCreatureAddHealth(target, -dano) E remove e

  • 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) setConditionPara

Posted Images

Postado
  • Autor
  Em 16/09/2022 em 17:21, 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)

Postado
  Em 17/09/2022 em 01:07, 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 

 

 

 

Postado
  • Autor
  Em 17/09/2022 em 13:18, 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!

Postado

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)

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo