Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Eu tava brincando de "vamos procurar uns scripts legais e tentar melhorá-los" e eis que eu me deparei com duas spells muito legalzinhas num forum americano e decidi editá-las pra que elas funcionassem em conjunto.
Feito isso eu acabei criando o seguinte sistema de combos: O cara solta a primeira spell e ele tem 5 segundos pra soltar a segunda spell, NÃO É POSSÍVEL UTILIZAR A SEGUNDA SPELL SEM TER USADO A PRIMEIRA ANTES e se o player tentar usar a primeira spell novamente nesses 5 segundos ele vai perder 15% de vida.... só se atentem ao fato de que a segunda magia deve ser bem mais forte que a primeira pra coisa ter graça.

Primeiro de tudo crie dois scripts chamados kaesar7.lua e kaesar9.lua

em kaesar7.lua adicione o seguinte:

local holyDeathArea = {
createCombatArea({
{0, 1, 0},
{1, 2, 1},
{0, 1, 0}
}),
createCombatArea({
{0, 1, 1, 1, 0},
{1, 1, 0, 1, 1},
{1, 0, 2, 0, 1},
{1, 1, 0, 1, 1},
{0, 1, 1, 1, 0}
}),
createCombatArea({
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 0, 0, 0, 1, 0},
{1, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 2, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 1},
{0, 1, 0, 0, 0, 1, 0},
{0, 0, 1, 1, 1, 0, 0}
}),
createCombatArea({
{0, 0, 1, 1, 1, 1, 1, 0, 0},
{0, 1, 1, 0, 0, 0, 1, 1, 0},
{1, 1, 0, 0, 0, 0, 0, 1, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 2, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 1, 0, 0, 0, 0, 0, 1, 1},
{0, 1, 1, 0, 0, 0, 1, 1, 0},
{0, 0, 1, 1, 1, 1, 1, 0, 0}
})
}

local holyCircleArea = {
createCombatArea({
{1, 2}
}),
createCombatArea({
{1, 0},
{0, 2}
}),
createCombatArea({
{1},
{2}
}),
createCombatArea({
{0, 1},
{2, 0}
}),
createCombatArea({
{2, 1}
}),
createCombatArea({
{2, 0},
{0, 1}
}),
createCombatArea({
{2},
{1}
}),
createCombatArea({
{0, 2},
{1, 0}
})
}


local holyDeath = {}
for k, area in ipairs(holyDeathArea) do
holyDeath[k] = createCombatObject()
setCombatParam(holyDeath[k], COMBAT_PARAM_TYPE, 1)
setCombatParam(holyDeath[k], COMBAT_PARAM_EFFECT, 34)
setCombatFormula(holyDeath[k], COMBAT_FORMULA_LEVELMAGIC, -1.376, -(100 * (#holyDeathArea - k)), -1.841, -(150 * (#holyDeathArea - k)))

setCombatArea(holyDeath[k], area)
end

local holyCircle = {}
for k, area in ipairs(holyCircleArea) do
holyCircle[k] = createCombatObject()
setCombatParam(holyCircle[k], COMBAT_PARAM_TYPE, 1)
setCombatParam(holyCircle[k], COMBAT_PARAM_EFFECT, 34)
setCombatFormula(holyCircle[k], COMBAT_FORMULA_LEVELMAGIC, -1.466, -200, -1.841, -100)

setCombatArea(holyCircle[k], area)

loadstring([[onTargetTile]] .. k + #holyDeath .. [[ = function(cid, pos)
doSendDistanceShoot(getCreaturePosition(cid), pos, 24)
end]])()
setCombatCallback(holyCircle[k], CALLBACK_PARAM_TARGETTILE, "onTargetTile" .. k + #holyDeath)
end


local function castSpellDelay(p)
doCombat(unpack(p))
end

local stepDelay = 75
local spins = 2
function onCastSpell(cid, var)
local percent = 15
if os.time() - getPlayerStorageValue(cid, 23000) >= 0 then
setPlayerStorageValue(cid, 23000, os.time() + 5)
else
doPlayerSendCancel(cid, "You lost ".. percent .." percent of your life because you exploded more than once")
doSendMagicEffect(getCreaturePosition(cid), 0)
doCreatureAddHealth(cid, -math.floor(getCreatureMaxHealth(cid) * (percent/100)))
end
local delay = 0
for i = 1, spins do
for k, area in ipairs(holyCircle) do
addEvent(function()
     if isCreature(cid) then
castSpellDelay({cid, holyCircle[k], var})
     end
end, delay)
delay = delay + stepDelay

end
end
for k, area in ipairs(holyDeath) do

addEvent(function()
     if isCreature(cid) then
castSpellDelay({cid, holyDeath[k], var})
     end
end, delay)
delay = delay + stepDelay

end


return LUA_NO_ERROR
end

 

e em kaesar9.lua adicione o seguinte:


 
local holyWaveArea = {
createCombatArea({
{0, 0, 1, 1, 1, 1, 1, 0, 0},
{0, 1, 1, 0, 0, 0, 1, 1, 0},
{1, 1, 0, 0, 0, 0, 0, 1, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 2, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 1, 0, 0, 0, 0, 0, 1, 1},
{0, 1, 1, 0, 0, 0, 1, 1, 0},
{0, 0, 1, 1, 1, 1, 1, 0, 0}
}),
createCombatArea({
{0, 0, 1, 1, 1, 0, 0},
{0, 1, 0, 0, 0, 1, 0},
{1, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 2, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 1},
{0, 1, 0, 0, 0, 1, 0},
{0, 0, 1, 1, 1, 0, 0}
}),
createCombatArea({
{0, 1, 1, 1, 0},
{1, 1, 0, 1, 1},
{1, 0, 2, 0, 1},
{1, 1, 0, 1, 1},
{0, 1, 1, 1, 0}
}),
createCombatArea({
{0, 1, 0},
{1, 2, 1},
{0, 1, 0}
})
}

local groundshakerCircleArea = {
createCombatArea({
{1, 1, 1, 2},
}),
createCombatArea({
{1, 1, 0, 0},
{0, 0, 0, 2},
}),
createCombatArea({
{0, 1, 0, 0},
{0, 0, 1, 0},
{0, 0, 0, 2},
}),
createCombatArea({
{1, 0},
{1, 0},
{0, 0},
{0, 2},
}),
createCombatArea({
{1},
{1},
{1},
{2},
}),
createCombatArea({
{0, 1},
{0, 1},
{0, 0},
{2, 0},
{0, 0},
{0, 0},
{0, 0}
}),
createCombatArea({
{0, 0, 1},
{0, 1, 0},
{2, 0, 0},
}),
createCombatArea({
{0, 0, 1, 1},
{2, 0, 0, 0},
}),
createCombatArea({
{2, 1, 1, 1},
}),
createCombatArea({
{2, 0, 0, 0},
{0, 0, 1, 1},
}),
createCombatArea({
{2, 0, 0},
{0, 1, 0},
{0, 0, 1},
}),
createCombatArea({
{2, 0},
{0, 0},
{0, 1},
{0, 1}
}),
createCombatArea({
{2},
{1},
{1},
{1}
}),
createCombatArea({
{0, 2},
{0, 0},
{1, 0},
{1, 0}
}),
createCombatArea({
{0, 0, 2},
{0, 1, 0},
{1, 0, 0},
}),
createCombatArea({
{0, 0, 0, 2},
{1, 1, 0, 0},
})
}



function onTargetTile1(cid, pos)
doSendMagicEffect(pos, 34)
end

local holyWave = {}
for k, area in ipairs(holyWaveArea) do
holyWave[k] = createCombatObject()
setCombatParam(holyWave[k], COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatFormula(holyWave[k], COMBAT_FORMULA_SKILL, 0, -90, 1.20, -50)

setCombatArea(holyWave[k], area)

_G["callback1" .. k] = onTargetTile1
setCombatCallback(holyWave[k], CALLBACK_PARAM_TARGETTILE, "callback1" .. k)
end

function onTargetTile2(cid, pos)
doSendDistanceShoot(getCreaturePosition(cid), pos, CONST_ANI_WHIRLWINDSWORD)
end

local groundshakerCircle = {}
for k, area in ipairs(groundshakerCircleArea) do
groundshakerCircle[k] = createCombatObject()
setCombatParam(groundshakerCircle[k], COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(groundshakerCircle[k], COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER)
setCombatFormula(groundshakerCircle[k], COMBAT_FORMULA_SKILL, 2.55, -100, 2.60, -200)

setCombatArea(groundshakerCircle[k], area)

_G["callback2" .. k] = onTargetTile2
setCombatCallback(groundshakerCircle[k], CALLBACK_PARAM_TARGETTILE, "callback2" .. k)
end


local function castSpellDelay(p)
doCombat(unpack(p))
end

function onCastSpell(cid, var)
if os.time() - getPlayerStorageValue(cid, 23000) >= 0 then
doPlayerSendCancel(cid, "You cannot implode since you didn't exploded.")
doSendMagicEffect(getCreaturePosition(cid), 2)
return true
else
setPlayerStorageValue(cid, 23000, 0)
end

for k, area in ipairs(holyWave) do
addEvent(function()
     if isCreature(cid) then
castSpellDelay({cid, holyWave[k], var})
     end
end,  150 * k)
end

local i = 0
for k, combat in ipairs(groundshakerCircle) do
addEvent(function()
     if isCreature(cid) then
castSpellDelay({cid, combat, var})
     end
end,  #holyWave * 150 + #groundshakerCircle * 100 * i + 100 * k)

end

return LUA_NO_ERROR
end

 

e em spells.xml adicione:

<instant name="Implode" words="knight implode" lvl="120" mana="200" prem="1" blockwalls="1" exhaustion="1000" needlearn="0" event="script" value="attack/kaesar9.lua">
<vocation id="4"/>
<vocation id="8"/>
</instant>
<instant name="Explode" words="knight explode" lvl="120" mana="200" prem="1" blockwalls="1" exhaustion="1000" needlearn="0" event="script" value="attack/kaesar7.lua">
<vocation id="4"/>
<vocation id="8"/>
</instant>

Bom, ambos scripts são complexos mas as edições são bem parecidas com qualquer outra magia.
No script 1 vc pode editar aqui:
local stepDelay = 75 --- tempo entre um e outro.. quanto menor mais rápido a magia sai
local spins = 2  --- numero de voltas que vai dar antes de explodir
local percent = 15 --- porcentagem de vida que perde caso use a spell 2x seguidas

 

Créditos: 90% pro Colandus (o cara que fez os scripts)
10% pra mim por ter editado tudo e feito as magias serem dependentes

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

  • 1 month later...
Postado

vou testar aki para ver oq faz, vc podia explicar melhor para que os outros fiquem melhor informados

Toda terça-feira um tópico novo:

Descanso para curar mana (Spell): https://tibiaking.com/forums/topic/94615-spell-descanso-para-curar-mana/

Peça sua spell (Suporte):                https://tibiaking.com/forums/topic/84162-peça-sua-spell/                        

Chuva de flechas (Spell):                https://tibiaking.com/forums/topic/72232-chuva-de-flechas-spell/

Doom (Spell):                                https://tibiaking.com/forums/topic/51622-doom-spell/

Utilização do VS Code (Infra)       https://tibiaking.com/forums/topic/94463-utilizando-o-visual-studio-code-notepad-nunca-mais/

SD com Combo (Spell):                 https://tibiaking.com/forums/topic/94520-sd-modificada/

Alteração attack speed (C++):        https://tibiaking.com/forums/topic/94714-c-attack-speed-spells-itens-e-onde-você-quiser/  

Bônus de Speed (NPC)                  https://tibiaking.com/forums/topic/94809-npc-concede-bônus-aos-players/
 

Postado
  • Autor

não tem como explicar, testa aí que você vai ver.. eu precisaria de no mínimo uns 30 prints ou um vídeo pra explicar

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

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.7k

Informação Importante

Confirmação de Termo