Postado Novembro 11, 2017 7 anos Queria pedir que alguém arrume a Exhaustion de umas Spells ( para combo ). Elas estavam corretas mas meu Spell.xml apagou tudo ( do nada '-' ) e agora não consigo mais fazer combo com essas Spells ( sai apenas 2 magias ) tentei varias exhaustions diferentes mas mesmo assim , sem sucesso Sequência ---> Genjutsu Paralyze --> Katon: Fire Storm --> Susanoo Tsukumo --> Kotoamatsukami Spells.xml : Spoiler <instant name="Susanoo Tsukumo" words="susanoo tsukumo" lvl="200" mana="3200" needtarget="1" range="6" prem="0" blockwalls="1" exhaustion="1000" needlearn="0" event="script" value="shisui/Susanoo Tsukumo.lua"> <vocation id="7"/> </instant> <instant name="Genjutsu Paralyze" words="genjutsu paralyze" lvl="250" mana="7500" aggressive="1" range="2" needtarget="1" exhaustion="0" needlearn="0" event="script" value="shisui/genjutsu infinito.lua"> <vocation id="7"/> </instant> <instant name="Katon: Fire Storm" words="katon: fire storm" lvl="300" mana="8200" needtarget="1" range="6" prem="0" blockwalls="1" exhaustion="1500" needlearn="0" event="script" value="shisui/katon.lua"> <vocation id="7"/> </instant> <instant name="Kotoamatsukami" words="kotoamatsukami" lvl="450" mana="8200" needtarget="0" range="6" prem="0" blockwalls="1" exhaustion="1200" needlearn="0" event="script" value="shisui/Kotoamatsukami.lua"> <vocation id="7"/> </instant> Paralyze : Spoiler local condition = createConditionObject(CONDITION_PARALYZE) setConditionParam(condition, CONDITION_PARAM_TICKS, 5000) setConditionParam(condition, CONDITION_PARAM_SPEED, -5000) function onCastSpell(cid, var) local target = getCreatureTarget(cid) local targetpos = getCreaturePosition(target) local efepos = {x=targetpos.x+2, y=targetpos.y+2, z=targetpos.z} local time = 5 -- tempo paralyzado if isPlayer(cid) and exhaustion.check(cid, 7000) == TRUE then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Aguarde " .. exhaustion.get(cid, 7000) .. " segundos para usar novamente.") return FALSE end local function No_Move_Target() if isCreature(target) then doCreatureSetNoMove(target, 0) end return TRUE end exhaustion.set(cid, 7000, 8) doCreatureSetNoMove(target, 1) doAddCondition(target, condition) doSendMagicEffect(efepos, 193) addEvent(No_Move_Target, time*1000) return TRUE end Katon : Spoiler local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -135.3, 1, -150.4, 1) local function onCastSpell1(parameters) return isCreature(parameters.cid) and doCombat(parameters.cid, combat, parameters.var) end function onCastSpell(cid, var) local parameters = {cid = cid, var = var} local enemy = getCreaturePosition(getCreatureTarget(cid)) local pos1 = {x=enemy.x+1, y=enemy.y, z=enemy.z} local pos2 = {x=enemy.x+1, y=enemy.y, z=enemy.z} if isPlayer(cid) and exhaustion.check(cid, 15231) == TRUE then doPlayerSendCancel(cid, "You are exhausted.") doSendMagicEffect(getCreaturePosition(cid), 2) return FALSE end exhaustion.set(cid, 15231, 1) doSendMagicEffect(pos1, 0) addEvent(onCastSpell1, 850, parameters) addEvent(doSendMagicEffect, 200, enemy, 0) addEvent(doSendMagicEffect, 400, pos2, 230) return TRUE end Tsukumo : Spoiler local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, 8) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -20.3, 1, -50.3, 1) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat2, COMBAT_PARAM_DISTANCEEFFECT, 8) setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -20.3, 1, -50.3, 1) local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat3, COMBAT_PARAM_DISTANCEEFFECT, 8) setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -20.3, 1, -50.3, 1) local combat4 = createCombatObject() setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat4, COMBAT_PARAM_DISTANCEEFFECT, 8) setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -20.3, 1, -50.3, 1) local combat5 = createCombatObject() setCombatParam(combat5, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat5, COMBAT_PARAM_DISTANCEEFFECT, 8) setCombatFormula(combat5, COMBAT_FORMULA_LEVELMAGIC, -20.3, 1, -50.3, 1) local combat6 = createCombatObject() setCombatParam(combat6, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat6, COMBAT_PARAM_DISTANCEEFFECT, 8) setCombatFormula(combat6, COMBAT_FORMULA_LEVELMAGIC, -20.3, 1, -50.3, 1) local combat7 = createCombatObject() setCombatParam(combat7, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat7, COMBAT_PARAM_DISTANCEEFFECT, 8) setCombatFormula(combat7, COMBAT_FORMULA_LEVELMAGIC, -20.3, 1, -50.3, 1) local combat8 = createCombatObject() setCombatParam(combat8, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat8, COMBAT_PARAM_DISTANCEEFFECT, 8) setCombatFormula(combat8, COMBAT_FORMULA_LEVELMAGIC, -20.3, 1, -50.3, 1) arr1 = { {3} } arr2 = { {3} } arr3 = { {3} } arr4 = { {3} } arr5 = { {3} } arr6 = { {3} } arr7 = { {3} } arr8 = { {3} } local area1 = createCombatArea(arr1) local area2 = createCombatArea(arr2) local area3 = createCombatArea(arr3) local area4 = createCombatArea(arr4) local area5 = createCombatArea(arr5) local area6 = createCombatArea(arr6) local area7 = createCombatArea(arr7) local area8 = createCombatArea(arr8) setCombatArea(combat1, area1) setCombatArea(combat2, area2) setCombatArea(combat3, area3) setCombatArea(combat4, area4) setCombatArea(combat5, area5) setCombatArea(combat6, area6) setCombatArea(combat7, area7) setCombatArea(combat8, area8) local function onCastSpell1(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat1, parameters.var) end local function onCastSpell2(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat2, parameters.var) end local function onCastSpell3(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat3, parameters.var) end local function onCastSpell4(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat4, parameters.var) end local function onCastSpell5(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat5, parameters.var) end local function onCastSpell6(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat6, parameters.var) end local function onCastSpell7(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat7, parameters.var) end local function onCastSpell8(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat8, parameters.var) end function onCastSpell(cid, var) local parameters = { cid = cid, var = var} addEvent(onCastSpell1, 100, parameters) addEvent(onCastSpell2, 300, parameters) addEvent(onCastSpell3, 500, parameters) addEvent(onCastSpell4, 700, parameters) addEvent(onCastSpell5, 900, parameters) addEvent(onCastSpell6, 1100, parameters) addEvent(onCastSpell7, 1400, parameters) addEvent(onCastSpell8, 1600, parameters) return TRUE end Katoamatsukami : Spoiler local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 226) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -232.3, 1, -245.3, 1) arr1 = { {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 3, 2, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, } arr2 = { {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 3, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, } local area1 = createCombatArea(arr1) local area2 = createCombatArea(arr2) setCombatArea(combat1, area1) setCombatArea(combat2, area2) local function onCastSpell1(parameters) return isCreature(parameters.cid) and doCombat(parameters.cid, combat1, parameters.var) end local function onCastSpell2(parameters) return isCreature(parameters.cid) and doCombat(parameters.cid, combat2, parameters.var) end function onCastSpell(cid, var) local pos = getCreaturePosition(cid) local pos1 = {x=pos.x+3, y=pos.y+2, z=pos.z} local parameters = {cid = cid, var = var} doSendMagicEffect(pos1, 202) addEvent(onCastSpell1, 100, parameters) addEvent(onCastSpell2, 100, parameters) return TRUE end
Postado Novembro 12, 2017 7 anos @zLockey9 Se você quiser exhaust com menos ou mais segundos é só configurar o local waittime = 2 --tempo em segundos Spells.xml Spoiler <instant name="Susanoo Tsukumo" words="susanoo tsukumo" lvl="200" mana="3200" needtarget="1" range="6" prem="0" blockwalls="1" exhaustion="0" needlearn="0" event="script" value="shisui/Susanoo Tsukumo.lua"> <vocation id="7"/> </instant> <instant name="Genjutsu Paralyze" words="genjutsu paralyze" lvl="250" mana="7500" aggressive="1" range="2" needtarget="1" exhaustion="0" needlearn="0" event="script" value="shisui/genjutsu infinito.lua"> <vocation id="7"/> </instant> <instant name="Katon: Fire Storm" words="katon: fire storm" lvl="300" mana="8200" needtarget="1" range="6" prem="0" blockwalls="1" exhaustion="0" needlearn="0" event="script" value="shisui/katon.lua"> <vocation id="7"/> </instant> <instant name="Kotoamatsukami" words="kotoamatsukami" lvl="450" mana="8200" needtarget="0" range="6" prem="0" blockwalls="1" exhaustion="0" needlearn="0" event="script" value="shisui/Kotoamatsukami.lua"> <vocation id="7"/> </instant> Spoiler local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -135.3, 1, -150.4, 1) local function onCastSpell1(parameters) return isCreature(parameters.cid) and doCombat(parameters.cid, combat, parameters.var) end function onCastSpell(cid, var) local waittime = 2 --tempo em segundos local storage = 2522 --storage do exuast, em cada magia uma storage diferente. local parameters = {cid = cid, var = var} local enemy = getCreaturePosition(getCreatureTarget(cid)) local pos1 = {x=enemy.x+1, y=enemy.y, z=enemy.z} local pos2 = {x=enemy.x+1, y=enemy.y, z=enemy.z} doSendMagicEffect(getCreaturePosition(cid), 2) if exhaustion.check(cid, storage) then doPlayerSendTextMessage(cid, 23, "Essa magia saira do cooldown em " .. exhaustion.get(cid, storage) .. " segundos.") return FALSE end exhaustion.set(cid, storage, waittime) doSendMagicEffect(pos1, 0) addEvent(onCastSpell1, 850, parameters) addEvent(doSendMagicEffect, 200, enemy, 0) addEvent(doSendMagicEffect, 400, pos2, 230) return TRUE end Tsukumo : Spoiler local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, 8) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -20.3, 1, -50.3, 1) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat2, COMBAT_PARAM_DISTANCEEFFECT, 8) setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -20.3, 1, -50.3, 1) local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat3, COMBAT_PARAM_DISTANCEEFFECT, 8) setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -20.3, 1, -50.3, 1) local combat4 = createCombatObject() setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat4, COMBAT_PARAM_DISTANCEEFFECT, 8) setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -20.3, 1, -50.3, 1) local combat5 = createCombatObject() setCombatParam(combat5, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat5, COMBAT_PARAM_DISTANCEEFFECT, 8) setCombatFormula(combat5, COMBAT_FORMULA_LEVELMAGIC, -20.3, 1, -50.3, 1) local combat6 = createCombatObject() setCombatParam(combat6, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat6, COMBAT_PARAM_DISTANCEEFFECT, 8) setCombatFormula(combat6, COMBAT_FORMULA_LEVELMAGIC, -20.3, 1, -50.3, 1) local combat7 = createCombatObject() setCombatParam(combat7, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat7, COMBAT_PARAM_DISTANCEEFFECT, 8) setCombatFormula(combat7, COMBAT_FORMULA_LEVELMAGIC, -20.3, 1, -50.3, 1) local combat8 = createCombatObject() setCombatParam(combat8, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat8, COMBAT_PARAM_DISTANCEEFFECT, 8) setCombatFormula(combat8, COMBAT_FORMULA_LEVELMAGIC, -20.3, 1, -50.3, 1) arr1 = { {3} } arr2 = { {3} } arr3 = { {3} } arr4 = { {3} } arr5 = { {3} } arr6 = { {3} } arr7 = { {3} } arr8 = { {3} } local area1 = createCombatArea(arr1) local area2 = createCombatArea(arr2) local area3 = createCombatArea(arr3) local area4 = createCombatArea(arr4) local area5 = createCombatArea(arr5) local area6 = createCombatArea(arr6) local area7 = createCombatArea(arr7) local area8 = createCombatArea(arr8) setCombatArea(combat1, area1) setCombatArea(combat2, area2) setCombatArea(combat3, area3) setCombatArea(combat4, area4) setCombatArea(combat5, area5) setCombatArea(combat6, area6) setCombatArea(combat7, area7) setCombatArea(combat8, area8) local function onCastSpell1(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat1, parameters.var) end local function onCastSpell2(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat2, parameters.var) end local function onCastSpell3(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat3, parameters.var) end local function onCastSpell4(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat4, parameters.var) end local function onCastSpell5(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat5, parameters.var) end local function onCastSpell6(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat6, parameters.var) end local function onCastSpell7(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat7, parameters.var) end local function onCastSpell8(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat8, parameters.var) end function onCastSpell(cid, var) local waittime = 2 --tempo em segundos local storage = 2523 --storage do exuast, em cada magia uma storage diferente. if exhaustion.check(cid, storage) then doPlayerSendTextMessage(cid, 23, "Essa magia saira do cooldown em " .. exhaustion.get(cid, storage) .. " segundos.") return false end exhaustion.set(cid, storage, waittime) local parameters = { cid = cid, var = var} addEvent(onCastSpell1, 100, parameters) addEvent(onCastSpell2, 300, parameters) addEvent(onCastSpell3, 500, parameters) addEvent(onCastSpell4, 700, parameters) addEvent(onCastSpell5, 900, parameters) addEvent(onCastSpell6, 1100, parameters) addEvent(onCastSpell7, 1400, parameters) addEvent(onCastSpell8, 1600, parameters) return TRUE end Katoamatsukami : Spoiler local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 226) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -232.3, 1, -245.3, 1) arr1 = { {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 3, 2, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, } arr2 = { {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 3, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, } local area1 = createCombatArea(arr1) local area2 = createCombatArea(arr2) setCombatArea(combat1, area1) setCombatArea(combat2, area2) local function onCastSpell1(parameters) return isCreature(parameters.cid) and doCombat(parameters.cid, combat1, parameters.var) end local function onCastSpell2(parameters) return isCreature(parameters.cid) and doCombat(parameters.cid, combat2, parameters.var) end function onCastSpell(cid, var) local pos = getCreaturePosition(cid) local pos1 = {x=pos.x+3, y=pos.y+2, z=pos.z} return TRUE end function onCastSpell(cid, var) if exhaustion.get(cid, 346) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Aguarde " .. exhaustion.get(cid, 346) .. " segundos para usar a spell novamente.") return true end local parameters = {cid = cid, var = var} doSendMagicEffect(pos1, 202) addEvent(onCastSpell1, 100, parameters) addEvent(onCastSpell2, 100, parameters) exhaustion.set(cid, 346, 1) return TRUE end Editado Novembro 12, 2017 7 anos por Thayguroficial (veja o histórico de edições)
Postado Novembro 12, 2017 7 anos Autor 11 horas atrás, Thayguroficial disse: @zLockey9 Se você quiser exhaust com menos ou mais segundos é só configurar o local waittime = 2 --tempo em segundos Apenas o Katoamatukami que deu erro , os outros estão PERFEITOS Editado Novembro 12, 2017 7 anos por zLockey9 (veja o histórico de edições)
Postado Novembro 12, 2017 7 anos Solução @zLockey9 Tenta assim: Katoamatsukami Spoiler local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 226) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -232.3, 1, -245.3, 1) arr1 = { {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 3, 2, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0}, } arr2 = { {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 3, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, } local area1 = createCombatArea(arr1) local area2 = createCombatArea(arr2) setCombatArea(combat1, area1) setCombatArea(combat2, area2) local function onCastSpell1(parameters) return isCreature(parameters.cid) and doCombat(parameters.cid, combat1, parameters.var) end local function onCastSpell2(parameters) return isCreature(parameters.cid) and doCombat(parameters.cid, combat2, parameters.var) end function onCastSpell(cid, var) local waittime = 2 --tempo em segundos local storage = 2522 --storage do exuast, em cada magia uma storage diferente. if exhaustion.check(cid, storage) then doPlayerSendTextMessage(cid, 23, "Essa magia saira do cooldown em " .. exhaustion.get(cid, storage) .. " segundos.") return false end exhaustion.set(cid, storage, waittime) local pos = getCreaturePosition(cid) local pos1 = {x=pos.x+3, y=pos.y+2, z=pos.z} local parameters = {cid = cid, var = var} doSendMagicEffect(pos1, 202) addEvent(onCastSpell1, 100, parameters) addEvent(onCastSpell2, 100, parameters) return TRUE end
Postado Novembro 12, 2017 7 anos Autor 42 minutos atrás, Thayguroficial disse: @zLockey9 Tenta assim: Katoamatsukami Cara , Perfeito ! Só duas duvidas , para colocar o exhaustion em 1400 , tem que trocar o "2" por 1.4" ? local waittime = 2 --tempo em segundos
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.