Postado Junho 28, 2014 10 anos 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: Mostrar conteúdo oculto 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: Mostrar conteúdo oculto 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
Postado Junho 28, 2014 10 anos Realmente uma ótima spell cara, parabéns! Vou usá-la com certeza, obrigado pelo conteudo.
Postado Agosto 28, 2014 10 anos vou testar aki para ver oq faz, vc podia explicar melhor para que os outros fiquem melhor informados
Postado Agosto 28, 2014 10 anos 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
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.