Ir para conteúdo
  • Cadastre-se

(Resolvido)Exhaust de magia UE interferindo no exhaust de runas


Ir para solução Resolvido por Wakon,

Posts Recomendados

Boa noite, desculpe se estou publicando isso no lugar errado.. sou novato e ainda estou me habituando..

Meu problema é o seguinte..

Eu estou aumentando a exhaustão pra 10 segundos das 4 magias UE's... 

só que quando o player usa uma UE ele não esta conseguindo usar uma runa durante esses 10 segundos de exaustao da UE.. mas ele consegue usar outra magia..

como eu faço pra exaustão da UE nao intereferir no uso das runas??

 

Uso TFS 0.4 Tibia 8.6

 

 

Link para o post
Compartilhar em outros sites

Exhaust de ataque exhausta com ataque, independente se for runa/magia.

Você consegue atacar e curar ao mesmo tempo, mas não atacar 2x.

Existe um jeito de fazer por storage, ai as magias que você quer só exhausta com as que você quer. 

Por exemplo botar a magia A pra exhaustar com a B e a C, mas podendo soltar sd junto com elas.

asdukeeh.jpg

Link para o post
Compartilhar em outros sites

nao da certo.. eu uso uma magia em area por exemplo que tem exhaust de 10 segundos... durante esses 10 segundos eu nao consigo usar nenhuma runa.. seja runa de curar ou runa de atacar...

mas eu consigo usar outras magias.. estranho

Link para o post
Compartilhar em outros sites

como faço isso? sou meio noob em código..

 

esse é o cod da magia:

 

Spoiler

 

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_BIGCLOUDS)
setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 8, 8, 10, 12)

local area = createCombatArea(AREA_CROSS6X6)
setCombatArea(combat, area)

function onCastSpell(cid, var)
    return doCombat(cid, combat, var)
end

 

 

Citar

spell.xml

 

Spoiler

<instant name="Rage of the Skies" words="exevo gran mas vis" lvl="55" mana="650" selftarget="1" prem="1" exhaustion="10000" needlearn="0" event="script" value="attack/rage of the skies.lua">
        <vocation id="1"/>
        <vocation id="5"/>
    </instant>

 

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

como faço isso? sou meio noob em código..

 

esse é o cod da magia:

 

  Ocultar conteúdo

 

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_BIGCLOUDS)
setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 8, 8, 10, 12)

local area = createCombatArea(AREA_CROSS6X6)
setCombatArea(combat, area)

function onCastSpell(cid, var)
    return doCombat(cid, combat, var)
end

 

 

 

  Ocultar conteúdo

<instant name="Rage of the Skies" words="exevo gran mas vis" lvl="55" mana="650" selftarget="1" prem="1" exhaustion="10000" needlearn="0" event="script" value="attack/rage of the skies.lua">
        <vocation id="1"/>
        <vocation id="5"/>
    </instant>

 

Opa, não tinha visto que respondeu, lembra de citar a minha resposta, ai sou avisado que você respondeu aqui no post.

 

O spells.lua fica assim:

<instant name="Rage of the Skies" words="exevo gran mas vis" lvl="55" mana="650" selftarget="1" prem="1" exhaustion="0" needlearn="0" event="script" value="attack/rage of the skies.lua">
        <vocation id="1"/>
        <vocation id="5"/>
</instant>

O Rage of the skies.lua fica assim:

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_BIGCLOUDS)
setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 8, 8, 10, 12)
local area = createCombatArea(AREA_CROSS6X6)
setCombatArea(combat, area)
function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3200) <= 0 then
		setPlayerStorageValue(cid, 3200, os.time()+10000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
	return TRUE
end

 

Agora vou explicar o que mudei pra que você possa fazer nas outras magias que quiser e adaptá-las.

A única parte que mudei foi a parte do onCastSpell.

Você adiciona "if getPlayerStorageValue(cid, 3200) <= 0 then" para checar se o storage 3200 esta igual ou menor a 0.

Embaixo você adiciona "setPlayerStorageValue(cid, 3200, os.time()+10000)" que caso o storage acima esteja igual ou menor a 0 ele adiciona 10s de exhaust.

Então o return doCombat (que é o que faz a magia sair, já estava no script)

O else serve como "se não" como uma condição contraria ao storage 3200 ser maior que 0 (faz menos de 10 segundos que o player soltou a magia)

Então vem um doPlayerSendCancel que vai falar que o player esta em exhausted caso tenha soltado a magia a menos de 10 segundos.

o end pra fechar aquele primeiro if (getPlayerStorageValue).

E o return true que não sei se é necessário.

 

Então, espero que tenha entendido o que fiz, assim você tem liberdade para fazer como quiser com as outras spell.

Caso queira que o exevo gran mas vis só exhauste com o mas flam, faça essa alteração no mas vis e mas flam, usando o storage 3200 nos dois. (Mesmo storage, mesmo exhaust)

Se você quiser que por exemplo, dê pra soltar exori vis, exevo gran mas vis e sd ao mesmo tempo, use o storage 3200 no mas vis, o 3201 no exori vis e a sd pode manter o exhaust do spells.xml

asdukeeh.jpg

Link para o post
Compartilhar em outros sites
Em 08/02/2017 ás 10:26, DukeeH disse:

Opa, não tinha visto que respondeu, lembra de citar a minha resposta, ai sou avisado que você respondeu aqui no post.

 

O spells.lua fica assim:


<instant name="Rage of the Skies" words="exevo gran mas vis" lvl="55" mana="650" selftarget="1" prem="1" exhaustion="0" needlearn="0" event="script" value="attack/rage of the skies.lua">
        <vocation id="1"/>
        <vocation id="5"/>
</instant>

O Rage of the skies.lua fica assim:


local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_BIGCLOUDS)
setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 8, 8, 10, 12)
local area = createCombatArea(AREA_CROSS6X6)
setCombatArea(combat, area)
function onCastSpell(cid, var)
	if getPlayerStorageValue(cid, 3200) <= 0 then
		setPlayerStorageValue(cid, 3200, os.time()+10000)  
		return doCombat(cid, combat, var)
	else
		doPlayerSendCancel(cid, "You are exhausted.")
	end
	return TRUE
end

 

Agora vou explicar o que mudei pra que você possa fazer nas outras magias que quiser e adaptá-las.

A única parte que mudei foi a parte do onCastSpell.

Você adiciona "if getPlayerStorageValue(cid, 3200) <= 0 then" para checar se o storage 3200 esta igual ou menor a 0.

Embaixo você adiciona "setPlayerStorageValue(cid, 3200, os.time()+10000)" que caso o storage acima esteja igual ou menor a 0 ele adiciona 10s de exhaust.

Então o return doCombat (que é o que faz a magia sair, já estava no script)

O else serve como "se não" como uma condição contraria ao storage 3200 ser maior que 0 (faz menos de 10 segundos que o player soltou a magia)

Então vem um doPlayerSendCancel que vai falar que o player esta em exhausted caso tenha soltado a magia a menos de 10 segundos.

o end pra fechar aquele primeiro if (getPlayerStorageValue).

E o return true que não sei se é necessário.

 

Então, espero que tenha entendido o que fiz, assim você tem liberdade para fazer como quiser com as outras spell.

Caso queira que o exevo gran mas vis só exhauste com o mas flam, faça essa alteração no mas vis e mas flam, usando o storage 3200 nos dois. (Mesmo storage, mesmo exhaust)

Se você quiser que por exemplo, dê pra soltar exori vis, exevo gran mas vis e sd ao mesmo tempo, use o storage 3200 no mas vis, o 3201 no exori vis e a sd pode manter o exhaust do spells.xml

 

@DukeeH

testei aqui mas nao rolou..  o player fica com exhaust eterno e nao consegue mais usar a magia..

nao tem que zerar o storage depois do exhaust? sei la nao entendo

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

 

@DukeeH

testei aqui mas nao rolou..  o player fica com exhaust eterno e nao consegue mais usar a magia..

nao tem que zerar o storage depois do exhaust? sei la nao entendo

Estranho cara, na função ele pega a hora atual e põem +10 segundos. 

Ai na parte que checa ele vê se o storage - hora atual é igual a 0.

Essa parte não tem como estar errado, não da erro?

asdukeeh.jpg

Link para o post
Compartilhar em outros sites
7 horas atrás, DukeeH disse:

Estranho cara, na função ele pega a hora atual e põem +10 segundos. 

Ai na parte que checa ele vê se o storage - hora atual é igual a 0.

Essa parte não tem como estar errado, não da erro?

 

ta soltando a magia 1 vez dai fica com exhaust eterno.. e eu noto que mesmo com exhaust a mana diminui e o Magic Level aumenta.. soh a magia que nao sai

 

11 horas atrás, KotZletY disse:

@fefuxd os.time()+10000  = 10 mil segundos. '-'

 

10 = 10 segundos, pelo menos nesse seu caso! 

 

mudei pra 10 tbm ficou do mesmo jeito

Link para o post
Compartilhar em outros sites

bota assim

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_BIGCLOUDS)
setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 8, 8, 10, 12)
local area = createCombatArea(AREA_CROSS6X6)
setCombatArea(combat, area)
function onCastSpell(cid, var)
if exhaustion.check(cid, 3200) then
doPlayerSendCancel(cid, "You are exhausted.")
return false
end
exhaustion.set(cid, 3200, 4)
doCombat(cid, combat, var)
end

 

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

bota assim


local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_BIGCLOUDS)
setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 8, 8, 10, 12)
local area = createCombatArea(AREA_CROSS6X6)
setCombatArea(combat, area)
function onCastSpell(cid, var)
if exhaustion.check(cid, 3200) then
doPlayerSendCancel(cid, "You are exhausted.")
return false
end
exhaustion.set(cid, 3200, 4)
doCombat(cid, combat, var)
end

aee deu quase certo..

funcionou como eu queria mas bugou o magic level.... nao esta subindo quando usa esta magia.. alguma ideia pra desbugar?

 

Link para o post
Compartilhar em outros sites
5 minutos atrás, fefuxd disse:

 

A magia não almenta o ML > setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 8, 8, 10, 12) > Isso é o dano da Spell

Agora, Gustavo Ntos disse:

A magia não almenta o ML > setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 8, 8, 10, 12) > Isso é o dano da Spell


local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_BIGCLOUDS)
setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 8, 8, 10, 12)

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition1, CONDITION_PARAM_TICKS, 10000)
setConditionParam(condition1, CONDITION_PARAM_STAT_MAGICLEVEL, 2)
setConditionParam(condition1, CONDITION_PARAM_BUFF, true)
setCombatCondition(combat, condition)

local area = createCombatArea(AREA_CROSS6X6)
setCombatArea(combat, area)
function onCastSpell(cid, var)
if exhaustion.check(cid, 3200) then
doPlayerSendCancel(cid, "You are exhausted.")
return false
end
exhaustion.set(cid, 3200, 4)
doCombat(cid, combat, var)
end

Link para o post
Compartilhar em outros sites
43 minutos atrás, Gustavo Ntos disse:

A magia não almenta o ML > setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 8, 8, 10, 12) > Isso é o dano da Spell

 


local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_BIGCLOUDS)
setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 8, 8, 10, 12)

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition1, CONDITION_PARAM_TICKS, 10000)
setConditionParam(condition1, CONDITION_PARAM_STAT_MAGICLEVEL, 2)
setConditionParam(condition1, CONDITION_PARAM_BUFF, true)
setCombatCondition(combat, condition)

local area = createCombatArea(AREA_CROSS6X6)
setCombatArea(combat, area)
function onCastSpell(cid, var)
if exhaustion.check(cid, 3200) then
doPlayerSendCancel(cid, "You are exhausted.")
return false
end
exhaustion.set(cid, 3200, 4)
doCombat(cid, combat, var)
end

 

 

poderia me explicar o que faz essa mudança? nao entendi a parte do CONDITION PARAM STAT MAGICLEVEL, 2.. esse dois seria o que exatamente?
 

Link para o post
Compartilhar em outros sites
1 minuto atrás, fefuxd disse:

 

poderia me explicar o que faz essa mudança? nao entendi a parte do CONDITION PARAM STAT MAGICLEVEL, 2.. esse dois seria o que exatamente?
 

Almenta a Ml do player

Link para o post
Compartilhar em outros sites
  • Solução
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_BIGCLOUDS)
setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 8, 8, 10, 12)

local area = createCombatArea(AREA_CROSS6X6)
setCombatArea(combat, area)

function onCastSpell(cid, var)
    if exhaustion.check(cid, 3200) then
        doPlayerSendCancel(cid, "You are exhausted.")
        doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
       return false
    end
    exhaustion.set(cid, 3200, 10)
   return doCombat(cid, combat, var)
end

 

Link para o post
Compartilhar em outros sites
  • 2 weeks later...
  • 2 weeks later...
  • 3 years later...
Em 07/02/2017 em 08:55, DukeeH disse:

Exhaust de ataque exhausta com ataque, independente se for runa/magia.

Você consegue atacar e curar ao mesmo tempo, mas não atacar 2x.

Existe um jeito de fazer por storage, ai as magias que você quer só exhausta com as que você quer. 

Por exemplo botar a magia A pra exhaustar com a B e a C, mas podendo soltar sd junto com elas.

No meu caso, o exhaust das potions e spells exausta junto com o push. Não dá para pushar nem jogar uma MW enquanto estou me healando ou potando. Não achei a resposta no forum, alguem me ajuda??

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo