Jump to content
Close
OinomedRellik

Scripting [PEDIDO] Magia que retira skill por tempo

Recommended Posts

Boa tarde galera do TK

 

Eu queria saber se tem alguma maneira de criar uma magia que retirasse, 20% de todas skills do jogador.

Obs: essa magia será target então eu terei que escolher o alvo para utilizar essa magia

 

Utilizo Otx 2


Share this post


Link to post
Share on other sites
Spoiler

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 13)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 5)

 

local combatX = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(combatX, CONDITION_PARAM_TICKS, 6000)
setConditionParam(combatX, CONDITION_PARAM_SKILL_SHIELDPERCENT, 80)
setConditionParam(combatX, CONDITION_PARAM_SKILL_DISTANCEPERCENT, 80)
setConditionParam(combatX, CONDITION_PARAM_SKILL_MELEEPERCENT, 80)
setConditionParam(combatX, CONDITION_PARAM_STAT_MAGICLEVELPERCENT, 80)
setCombatCondition(combat, combatX)

function onCastSpell(cid, var)
local waittime = 2.0 -- Tempo de exhaustion
local storage = 45673 -- não mecha

if exhaustion.check(cid, storage) then
    doPlayerSendCancel(cid, "Aguarde "..(exhaustion.get(cid, storage)).." segundos(s) para usar novamente.")
    return false
end
exhaustion.set(cid, storage, waittime)
    return doCombat(cid, combat, var)
end
 

Spoiler

<instant name="nomedamagia" words="palavra dita pra usar a magia" lvl="50" mana="250" prem="0" selftarget="1" aggressive="1" exhaustion="400" groups="1,400" blockwalls="1" needlearn="0" script="localdoscript.lua">
        <vocation id="3"/>
        <vocation id="4"/>
    </instant>

Testa ai rapidao, pra q eu possa arrumar se der alguma error

coloquei ja com a funçao pra vc alterar o tempo de exhaust q vc quiser determinar a essa spell


Edited by ernaix69 (see edit history)

Share this post


Link to post
Share on other sites
10 minutos atrás, ernaix69 disse:
  Ocultar conteúdo

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 13)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 5)

local xCombat = createCombatObject()
setCombatParam(xCombat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)


local combatX = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(combatX, CONDITION_PARAM_TICKS, 6000)
setConditionParam(combatX, CONDITION_PARAM_SKILL_SHIELDPERCENT, 80)
setConditionParam(combatX, CONDITION_PARAM_SKILL_MELEEPERCENT, 80)
setConditionParam(combatX, CONDITION_PARAM_STAT_MAGICLEVELPERCENT, 80)
setCombatCondition(xCombat, combatX)

function onCastSpell(cid, var)
local waittime = 2.0 -- Tempo de exhaustion
local storage = 45673 -- não mecha

if exhaustion.check(cid, storage) then
    doPlayerSendCancel(cid, "Aguarde "..(exhaustion.get(cid, storage)).." segundos(s) para usar novamente.")
    return false
end
exhaustion.set(cid, storage, waittime)
    return doCombat(cid, combat, var)
end

Testa ai rapidao, pra q eu possa arrumar se der alguma error

coloquei ja com a funçao pra vc alterar o tempo de exhaust q vc quiser determinar a essa spell

 

não acontece nada


Share this post


Link to post
Share on other sites
Spoiler

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 13)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 5)

local combatX = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(combatX, CONDITION_PARAM_TICKS, 6000)
setConditionParam(combatX, CONDITION_PARAM_SKILL_SHIELDPERCENT, 80)
setConditionParam(combatX, CONDITION_PARAM_SKILL_DISTANCEPERCENT, 80)
setConditionParam(combatX, CONDITION_PARAM_SKILL_MELEEPERCENT, 80)
setConditionParam(combatX, CONDITION_PARAM_STAT_MAGICLEVELPERCENT, 80)
setCombatCondition(combat, combatX)

function onCastSpell(cid, var)
local waittime = 2.0 -- Tempo de exhaustion
local storage = 45673 -- não mecha

if exhaustion.check(cid, storage) then
    doPlayerSendCancel(cid, "Aguarde "..(exhaustion.get(cid, storage)).." segundos(s) para usar novamente.")
    return false
end
exhaustion.set(cid, storage, waittime)
    return doCombat(cid, combat, var)
end
 

 


Edited by ernaix69 (see edit history)

Share this post


Link to post
Share on other sites
6 minutos atrás, ernaix69 disse:
  Ocultar conteúdo

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 13)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 5)

local combatX = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(combatX, CONDITION_PARAM_TICKS, 6000)
setConditionParam(combatX, CONDITION_PARAM_SKILL_SHIELDPERCENT, 80)
setConditionParam(combatX, CONDITION_PARAM_SKILL_DISTANCEPERCENT, 80)
setConditionParam(combatX, CONDITION_PARAM_SKILL_MELEEPERCENT, 80)
setConditionParam(combatX, CONDITION_PARAM_STAT_MAGICLEVELPERCENT, 80)
setCombatCondition(combat, combatX)

function onCastSpell(cid, var)
local waittime = 2.0 -- Tempo de exhaustion
local storage = 45673 -- não mecha

if exhaustion.check(cid, storage) then
    doPlayerSendCancel(cid, "Aguarde "..(exhaustion.get(cid, storage)).." segundos(s) para usar novamente.")
    return false
end
exhaustion.set(cid, storage, waittime)
    return doCombat(cid, combat, var)
end
 

 

 

Agora funcionou mas tem alguma maneira de por 10 Segundos para parar o effeito da magia?
E também será que dá pra por por 10 segundos 1 effect saindo do personagem ? [Effect : 10]
E também tem como me explicar uma coisa : ali fala que é pra remover 80 mas só remove 15 de ml , gloves remove só 2 etc..
eu queria que só removesse 20 de skill all, se o jogador não tiver vai ficar 0 de skill saca?


Share this post


Link to post
Share on other sites

ta em % ele ai ta tirando 20% da skill atual, exemplo: se o jogador tiver 10 de glove ele ira tirar 2.
questao da duraçao vc pode aumentar em ticks, onde tem 6000 vc poe 10000.
quanto ao efeito eu teria q fazer um addevent e eu ainda to aprendendo entao nao arriscaria agora.

@OinomedRellik é mais vantajoso vc deixar em % pq vai influenciar em quem tem mais treino e talz, mas se quiser eu faço a alteraçao pra diminuir os 20.
tem outra coisa tbm, quando vc zera a skill do char, ele nao vai conseguir usar magia.


Share this post


Link to post
Share on other sites
3 minutos atrás, ernaix69 disse:

ta em % ele ai ta tirando 20% da skill atual, exemplo: se o jogador tiver 10 de glove ele ira tirar 2.
questao da duraçao vc pode aumentar em ticks, onde tem 6000 vc poe 10000.
quanto ao efeito eu teria q fazer um addevent e eu ainda to aprendendo entao nao arriscaria agora.

@OinomedRellik é mais vantajoso vc deixar em % pq vai influenciar em quem tem mais treino e talz, mas se quiser eu faço a alteraçao pra diminuir os 20.
tem outra coisa tbm, quando vc zera a skill do char, ele nao vai conseguir usar magia.

 

Pode por pra remover 20 de skill all


Share this post


Link to post
Share on other sites

-20 de skills fixo

Spoiler

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 10)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 5)

local combatX = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(combatX, CONDITION_PARAM_TICKS, 10000)

setConditionParam(combatX, CONDITION_PARAM_SUBID, 13)
setConditionParam(combatX, CONDITION_PARAM_SKILL_SHIELD, -20)
setConditionParam(combatX, CONDITION_PARAM_SKILL_DISTANCE, -20)
setConditionParam(combatX, CONDITION_PARAM_SKILL_MELEE, -20)
setConditionParam(combatX, CONDITION_PARAM_STAT_MAGICLEVEL, -20)
setCombatCondition(combat, combatX)

function onCastSpell(cid, var)
local waittime = 2.0 -- Tempo de exhaustion
local storage = 45673 -- não mecha

if exhaustion.check(cid, storage) then
    doPlayerSendCancel(cid, "Aguarde "..(exhaustion.get(cid, storage)).." segundos(s) para usar novamente.")
    return false
end
exhaustion.set(cid, storage, waittime)
    return doCombat(cid, combat, var)
end
 

fiz mais uma ediçao pra ele nao interferir nos valores dos buffs.


Edited by ernaix69 (see edit history)

Share this post


Link to post
Share on other sites
8 minutos atrás, ernaix69 disse:

-20 de skills fixo

  Ocultar conteúdo

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 10)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 5)

local combatX = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(combatX, CONDITION_PARAM_TICKS, 10000)
setConditionParam(combatX, CONDITION_PARAM_SKILL_SHIELD, -20)
setConditionParam(combatX, CONDITION_PARAM_SKILL_DISTANCE, -20)
setConditionParam(combatX, CONDITION_PARAM_SKILL_MELEE, -20)
setConditionParam(combatX, CONDITION_PARAM_STAT_MAGICLEVEL, -20)
setCombatCondition(combat, combatX)

function onCastSpell(cid, var)
local waittime = 2.0 -- Tempo de exhaustion
local storage = 45673 -- não mecha

if exhaustion.check(cid, storage) then
    doPlayerSendCancel(cid, "Aguarde "..(exhaustion.get(cid, storage)).." segundos(s) para usar novamente.")
    return false
end
exhaustion.set(cid, storage, waittime)
    return doCombat(cid, combat, var)
end
 

 

 

Funcionou, só o effect lá que não foi
Eu queria saber se tem como por um nome encima do target [DEBUFF], será que consegue?


Edited by OinomedRellik (see edit history)

Share this post


Link to post
Share on other sites
Spoiler

local text = "DEBUFF!" -- msg

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 11)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 5)

local combatX = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(combatX, CONDITION_PARAM_TICKS, 10000)
setConditionParam(combatX, CONDITION_PARAM_SUBID, 13)
setConditionParam(combatX, CONDITION_PARAM_SKILL_SHIELd, -20)
setConditionParam(combatX, CONDITION_PARAM_SKILL_DISTANCE, -20)
setConditionParam(combatX, CONDITION_PARAM_SKILL_MELEE, -20)
setConditionParam(combatX, CONDITION_PARAM_STAT_MAGICLEVEL, -20)
setCombatCondition(combat, combatX)

function onCastSpell(cid, var)
local waittime = 2.0 -- Tempo de exhaustion
local storage = 45673 -- não mecha

if exhaustion.check(cid, storage) then
    doPlayerSendCancel(cid, "Aguarde "..(exhaustion.get(cid, storage)).." segundos(s) para usar novamente.")
    return false
end
exhaustion.set(cid, storage, waittime)
local position1 = {x=getThingPosition(getCreatureTarget(cid)).x, y=getThingPosition(getCreatureTarget(cid)).y, z=getThingPosition(getCreatureTarget(cid)).z}
            doSendAnimatedText(position1, text, 190)
    return doCombat(cid, combat, var)
end
 

coloquei pra subir a msg no alvo quando vc usar a magia.


Share this post


Link to post
Share on other sites
Em 12/09/2019 em 14:01, ernaix69 disse:
  Mostrar conteúdo oculto

local text = "DEBUFF!" -- msg

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 11)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 5)

local combatX = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(combatX, CONDITION_PARAM_TICKS, 10000)
setConditionParam(combatX, CONDITION_PARAM_SUBID, 13)
setConditionParam(combatX, CONDITION_PARAM_SKILL_SHIELd, -20)
setConditionParam(combatX, CONDITION_PARAM_SKILL_DISTANCE, -20)
setConditionParam(combatX, CONDITION_PARAM_SKILL_MELEE, -20)
setConditionParam(combatX, CONDITION_PARAM_STAT_MAGICLEVEL, -20)
setCombatCondition(combat, combatX)

function onCastSpell(cid, var)
local waittime = 2.0 -- Tempo de exhaustion
local storage = 45673 -- não mecha

if exhaustion.check(cid, storage) then
    doPlayerSendCancel(cid, "Aguarde "..(exhaustion.get(cid, storage)).." segundos(s) para usar novamente.")
    return false
end
exhaustion.set(cid, storage, waittime)
local position1 = {x=getThingPosition(getCreatureTarget(cid)).x, y=getThingPosition(getCreatureTarget(cid)).y, z=getThingPosition(getCreatureTarget(cid)).z}
            doSendAnimatedText(position1, text, 190)
    return doCombat(cid, combat, var)
end
 

coloquei pra subir a msg no alvo quando vc usar a magia.

 

Apresentei um bug, quando o jogador utiliza essa skill ela faz os jogadores não usar as magias
mas se eu coloco o percent funciona normal.


Share this post


Link to post
Share on other sites
Agora, ernaix69 disse:

@OinomedRellik foi oq eu te falei ali em cima. se vc zera o valor de alguma skill, o jogador nao vai conseguir usar magia. '-'

 

O mais engraçado é que os persom tinha bastante skill e mesmo assim n usava kk, mas tem problemas n, eu queria que aparecesse aquela mensagem Debuff tipo , se o jogador estivesse sobre o effect do debuff encima dele ficaria saindo o nome debuff e aquele effect que você colocou, mas de resto já tá top mas se você não conseguir não tem problema, mas seria bom kk


Share this post


Link to post
Share on other sites

@OinomedRellik se zerar qualquer skill acontece isso.
quanto ao text saindo enquanto o debuff durar. Isso seria possivel de se fazer com um addevent, mas eu ainda nao manjo, ainda.


Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia partindo do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer publicidade para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução! A publicação do seu anuncio é instantânea!

×
×
  • Create New...