Por
xWhiteWolf
Aeeeeeee carai, hoje vim trazer pra vocês meu mais novo sistema *-*. É uma fodenda spell que você seleciona alguém pra ser seu voodoo e a partir disso durante um tempo X ela vai receber todos os hit's que você deveria receber... INCRÍVEL, NÃO?
Agora se nesse meio tempo ela deslogar ou entrar em pz você vai tomar o dano normal, mas se ainda tiver nesse tempo X e ela sair ela vai receber o dano instantaneamente (É BOM DEMAIS PRA SER VERDADE).
Agora você deve estar imaginando, e se eu usar a magia pra transferir o dano pra um amigo e ele fizer a mesma coisa em mim, pra onde vai o dano?
PRA LUGAR NENHUM!!!! Até porque eu já me previni contra esse bug fazendo com que não seja possível fazer alguém de voodoo se ele já tiver alguém de voodoo.
Testado em versão 8.54 TFS Crying Damnson mas deve funcionar em todas as versões que tenham a função onStatsChange no creaturescripts.
Bom, o script tá 100% funcional e livre de bugs (se vc achar algum eu te dou 3 REP).
Agora vamos à mágica:
Crie um arquivo em mods com extensão .xml e adiciona isso daqui nele
<?xml version="1.0" encoding="UTF-8"?>
<mod name="Voodoo System" version="1.0" author="Night Wolf" contact="none" enabled="yes">
------------------------------------------------------------------------------------
<config name="feitisso"><![CDATA[
configuration = {
storage = 24567,
tempo = 20,
cooldown = 45,
effect1 = 13,
effect2 = 65
}
storagecool = 24568
]]></config>
----------------------------------------------------------------------------------
<event type="login" name="registerVoodoo" event="script"><![CDATA[
function onLogin(cid)
domodlib('feitisso')
if getPlayerStorageValue(cid, configuration.storage) > 0 then
doPlayerSendTextMessage(cid, 22, "Your victim is not receiving your hits anymore.")
doPlayerSetStorageValue(cid, configuration.storage, 0)
end
registerCreatureEvent(cid,"voodoo")
return true
end
]]></event>
------------------------------------------------------------------------------------
<instant name="Feitiço" words="voodoo" lvl="50" mana="10" prem="1" range="3" needtarget="1" blockwalls="1" exhaustion="1000" needlearn="0" event="script">
<vocation id="5"/>
<vocation id="6"/>
<vocation id="7"/>
<vocation id="8"/>
<![CDATA[
function onCastSpell(cid, var)
domodlib('feitisso')
if not (isPlayer(variantToNumber(var))) then
doPlayerSendCancel(cid, "You can only use this spell in players.")
return false
end
if getPlayerStorageValue(variantToNumber(var), configuration.storage) > 0 then
doPlayerSendCancel(cid, "You can't make a voodoo of someone who already has a voodoo.")
return false
end
if (os.time() - getPlayerStorageValue(cid, storagecool)) >= configuration.cooldown then
if getPlayerStorageValue(cid, configuration.storage) <= 0 then
timeleft = (os.time() + configuration.cooldown)
doPlayerSetStorageValue(cid, storagecool, timeleft)
local target = getPlayerGUID(variantToNumber(var))
doPlayerSetStorageValue(cid, configuration.storage, target)
doSendMagicEffect(getPlayerPosition(cid), configuration.effect1)
doSendMagicEffect(getThingPos(variantToNumber(var)), configuration.effect1)
addEvent(function()
if isCreature(cid) then
doSendMagicEffect(getPlayerPosition(cid), configuration.effect2)
doPlayerSendTextMessage(cid, 22, "Your victim is not receiving your hits anymore.")
doPlayerSetStorageValue(cid, configuration.storage, 0)
end
end, 100+1000*configuration.tempo)
elseif getPlayerStorageValue (cid, configuration.storage) > 0 then
doPlayerSendCancel(cid, "You've already set a target.")
end
else
doPlayerSendCancel(cid, "Your skill is in cooldown, you must wait "..(configuration.cooldown - (os.time() - getPlayerStorageValue(cid, storagecool))).." seconds.")
end
return true
end
]]></instant>
------------------------------------------------------------------------------------
<event type="statschange" name="voodoo" event="script"><![CDATA[
function onStatsChange(cid, attacker, type, combat, value)
domodlib('feitisso')
if isPlayer(cid) and (not (attacker == cid)) and (type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS) and getPlayerStorageValue(cid, configuration.storage) >= 1 then
local name = getPlayerNameByGUID(getPlayerStorageValue(cid, configuration.storage))
local victim = getCreatureByName(name)
if isCreature(victim) and not (getTilePzInfo(getPlayerPosition(victim))) then
dano = math.ceil(value)
doSendMagicEffect(getPlayerPosition(cid), configuration.effect2)
if attacker == victim then
doTargetCombatHealth(cid, victim, combat, -dano, -dano, configuration.effect2)
else
doTargetCombatHealth(attacker, victim, combat, -dano, -dano, configuration.effect2)
end
return false
end
end
return true
end
]]></event>
------------------------------------------------------------------------------------
</mod>
aqui você edita os storages da magia e do cooldown, além do tempo que ela dura, o tempo de cooldown (um uso e outro) e os efeitos que vão sair.
-------------------------------------------------------------------------------------------------------------
aqui você edita o nome da spell, as palavras pra ela sair, level, custo de mana, se é preciso ser premium pra usar, o range dela, e as vocações que podem usá-la.
OBS: se vc quiser que essa spell seja ganha em uma quest (por se tratar de algo bastante apelativo), é só colocar needlearn = "1" e fazer uma quest pra ganhar a spell (tem no meu Darkness Pact Quest uma quest de ganhar Spell, é só ir lá no meu perfil e procurar o tópico).
Essa spell não serve somente pra ATS, use a criatividade pra criar uma história e fazer ela se encaixar... foque nos elementos de RPG e tcharam, está feito!.
Façam bom uso e espero que não saiam postando em outros lugares sem os devidos créditos. Abraços do lobinho pra vcs
PS: a foto ficou meio bosta mas vou postar mesmo assim
Eu (sorc) ataquei a zuera e tomei o dano de volta e ainda saiu esse efeitinho bonito.
Espero que tenham gostado e usem essa spell como base pra fazer outras coisas maravilhosas pra esse fórum
E não esqueça de clicar em "gostei" caso tenha curtido a idéia.
Ahhh, e antes que eu me esqueça dos agradecimentos:
@ViitinG por me ajudar a testar
@CreatServer por me dar a idéia
@MaXwEllDeN por me orientar a trocar a table pelo storage possibilitando que o script fosse possível.