Ir para conteúdo
Entre para seguir isso  
Mock

Massive Strike

Recommended Posts

Mock    32
Mock


Autor: Mock
Tipo: Spell
Testado em: Theforgotten server 0.3.3+
Requer: [b]isWalkable[/b], [b]getPosByDir[/b], [b]getDirectionTo[/b] e [b]getDistanceBetween[/b]

 

 

 

 

Esta magia é uma magia tão simples que nem presisa de foto, porem a primeira que faz o que ela faz, alem de nao usar o sistema padrão de spells ela é uma Exori vis; flam; san; mort... juntas em uma só, porem a diferença que não saem todas juntas, quando você solta vai sair só uma vez porem pode sair o dano de holy ou energy ou ice ou fire ou entao todos juntos, seria uma combinação de danos, e o dano nunca sai repetido exemplo:

Ice Fire Ice energy

Porem a spell alem de gastar 60 de mana, ir até o alvo como um exori vis normal ter a formula 90% proxima ao global e dar até 6 combos ela pode falhar e nao dar se quer um de dano.

 

Mais em fim vamos ao script

_______________________________________________________

 

O primeiro passo é ir em spells.xml e adcionar esta tag:

<instant name="Massive strike" words="exori strike" lvl="45" mana="60" prem="1" range="4" blockwalls="1" exhaustion="1500" needlearn="0" script="strike.lua">
	<vocation name="-"/>
</instant>

Veja que em vocation name eu coloquei em branco nesse caso você define qual vocação vai ser inserida para poder usar, apenas sorceres, druidas ou kinights, defina a seu gosto :yes:

 

Agora vá em scripts ainda na pasta spells e crie o arquivo strike.lua contendo isso:

function getDamage(level,ml,c1,d1) -- Scritp by mock
  local min = ((level / 3) + (ml / 2)) * (c1/1.5) + (d1/1.5)
  local max = ((level / 3) + (ml / 2)) * c1 + d1 
  return math.floor(min),math.floor(max)
end

local function runCombat(cid,tar,typ,ef,d) -- Scritp by mock
  if tar ~= nil then
  local min,max = getDamage( getPlayerLevel(cid) , getPlayerMagLevel(cid) ,1.1,-3) 
  doSendDistanceShoot(getCreaturePosition(cid), getCreaturePosition(tar),d)
  doTargetCombatHealth(cid, tar, typ, -min, -max,CONST_ME_NONE)
  doSendMagicEffect(getCreaturePosition(tar),ef)
  return TRUE
  end
  local pos = getPosByDir(getCreaturePosition(cid), getCreatureLookDirection(cid))
  pos.stackpos = 255
  tar = getThingfromPos(pos)
  if isCreature(tar.uid) == false then
     doSendMagicEffect(pos,ef)
  else
     local min,max = getDamage( getPlayerLevel(cid) , getPlayerMagLevel(cid) ,1.1,-3)  
     doTargetCombatHealth(cid, tar.uid, typ, -min, -max,CONST_ME_NONE)
     doSendMagicEffect(pos,ef)
  end
end            
local function find() -- Scritp by mock
          local k = {
           {COMBAT_HOLYDAMAGE,CONST_ME_HOLYDAMAGE,CONST_ANI_SMALLHOLY,'Holy',168},
           {COMBAT_EARTHDAMAGE,CONST_ME_CARNIPHILA,CONST_ANI_EARTH,'Earth',25},
           {COMBAT_ICEDAMAGE,CONST_ME_ICEATTACK,CONST_ANI_SMALLICE,'Ice',35},
           {COMBAT_FIREDAMAGE,CONST_ME_FIREATTACK,CONST_ANI_FIRE,'Fire',156},
           {COMBAT_ENERGYDAMAGE,CONST_ME_ENERGYAREA,CONST_ANI_ENERGY,'Energy',155},
           {COMBAT_DEATHDAMAGE,CONST_ME_MORTAREA,CONST_ANI_SUDDENDEATH,'Death',73},
          }
          local types = {
          k[math.random(1,#k)]
          }
          for i=1,#k do
              nb = 1
              mae = k[math.random(1,#k)]
              while table.find(types, mae) do
              mae = k[math.random(1,#k)]
              nb = nb+1
              if nb == 100 then
                 return FALSE
              end
              if i == 6 then
                 return types
              end
              end
              table.insert(types,i,mae) 
          end
end
local function getRand(n) -- Scritp by mock
local ret = 0

--math.randomseed(os.clock()+math.random(1,100)+os.time()-math.random(1,900))
for i=1,n do
if tonumber(string.sub(math.random(),8,10)) > 450 then
  ret = ret+1
end
end
return ret
end
function onCastSpell(cid, var)
        -- Scritp by mock
        types = find()
        if types == nil then
           return FALSE
        end
        local nos = getRand(6)
        if nos == 0 then
           doSendAnimatedText(getCreaturePosition(cid), "Fail!", TEXTCOLOR_WHITE)
           return TRUE
        end
        if isCreature(getCreatureTarget(cid)) then
           cr = getCreatureTarget(cid)
           p = getCreaturePosition(cid)
           local c = false
           for i=1,getDistanceBetween(getCreaturePosition(cid),getCreaturePosition(cr)) do
             p = getPosByDir({x=p.x,y=p.y,z=p.z}, getDirectionTo(p, getCreaturePosition(cr))) 
             p.stackpos = 255
             if isWalkable(p) == FALSE and isCreature(getThingfromPos(p).uid) == FALSE then
                doSendMagicEffect(p,2)
                c = true
                break
             end                   
           end
           if c == true then
              doSendAnimatedText(getCreaturePosition(cid), "Fail!", TEXTCOLOR_WHITE)
              return FALSE
           end
           for i=1,nos do
               ns = types[i] 
               runCombat(cid,cr,ns[1],ns[2],ns[3])
               local posi = getCreaturePosition(cid)
               addEvent(doSendAnimatedText, i*400,posi,  i..' '..ns[4], ns[5])
               doSendAnimatedText(posi, nos.." Hits!", TEXTCOLOR_WHITE) 
           end
           return TRUE
        end
        for i=1,nos do
            ns = types[i] 
            runCombat(cid,tar,ns[1],ns[2],ns[3])
            local posi = getCreaturePosition(cid)
            addEvent(doSendAnimatedText, i*400,posi, i..' '..ns[4], ns[5])
            doSendAnimatedText(posi, nos.." Hits!", TEXTCOLOR_WHITE)
        end  
       return TRUE
end                                                                     

 

Apos salvar vá até seu server de reload caso esteje on, se não basta abrir e divirta-se com uma spell diferente e bem feita.

 

 

_______________________________________________________

 

strike.png

Quais quer bugs poste no topico.

Editado por Mock
update

Compartilhar este post


Link para o post
Sparken    0
Sparken

Nossa velho, Vc Eh Bom MEsmo Em?? Curti A spell, sempre inovando ^^

pena que nao posso por no meu ot pq ele eh verçao 0.3.1.1 dai n funfa, mais eu botaria ^^

 

Recomendo Para Ots Com XP Baixa! (EU)

Compartilhar este post


Link para o post
AkillesW    6
AkillesW

Tentei faze uma spell +- igual a essa mais nao deu certo =D

Boa spell =D

Compartilhar este post


Link para o post
Mithz    0
Mithz

Que legal =D

Curti a spell Mock, espero que use ela no Pharenight ^^'

 

Att,

Mithz.

Compartilhar este post


Link para o post
Mock    32
Mock

@Sparken

 

seguinte, o script eu fiz na versão 0.3.3 porem ela tem chance de rodar na 0.3.1, se nao rodar me desculpe eu fiz pra 0.3.3 mais tenho quase certeza que roda, tenta ai.

Compartilhar este post


Link para o post
Fereu    0
Fereu

Muito fooda, math.randomseed AOEIAOEIAOEI

 

depois vo pesquisa esse negocio, talvez procure aprender mais :x

 

a spell ta legal, gostei do 'sistema' (:

Compartilhar este post


Link para o post
Sparken    0
Sparken

Nossaaaa Valeu Mock!! Funfooo ^^

Us Cara Gostaro, Botei So Pra REI Usa PQ nu meu ot tem sistema de rei, dai fico masi massa ainda, valeu velho!! ^^ (PS: Quem For Usar Essa MAgia Para XP e ML Alta, Recomendo rever Os Valores De Dano ^^)

Compartilhar este post


Link para o post
Mock    32
Mock

@sparken

 

quem quiser em server XP baxa é so mexe nas chances onde ta la > 450 é so muda p > 800~ ou 900.

tambem entao é so usar muita mana.

Compartilhar este post


Link para o post
Luix    0
Luix

Muito bom!!

o.O

 

@Mock você saberia fazer uma magia estilo essa ai, porem...

que você solte normalmente e atk todos os player q estiverem na tela...

(exemplo: exori vis q pega soh nos player, [ e em todos da tela]).

VLw

Compartilhar este post


Link para o post
Mock    32
Mock

@luix

sim facil faze xP

Compartilhar este post


Link para o post
Bajt    0
Bajt

Muito bom, eu estava pensando nisso mesmo, valeu ai :D.

Compartilhar este post


Link para o post
Bumper    0
Bumper

Ví oque a spell faz e tive que comentar, não aguentei.

 

QUE SPELL PHOOOOOOOOOOOOOOOOOOOOOOOOOODDAAAAAAAAAAA! Mano que coisa mais criativa cara! *-* Abrir 1 tfs só pra testar ela? JÁVAI ROLAR ;D

 

Adorei a spell ! :D

Compartilhar este post


Link para o post
Mock    32
Mock
Ví oque a spell faz e tive que comentar, não aguentei.

 

QUE SPELL PHOOOOOOOOOOOOOOOOOOOOOOOOOODDAAAAAAAAAAA! Mano que coisa mais criativa cara! *-* Abrir 1 tfs só pra testar ela? JÁVAI ROLAR ;D

 

Adorei a spell ! :D

 

 

vlw cara xP

só avisando que da pra adcionar psyccal damage, life drain damae, mana drain damage e drwon damage

Compartilhar este post


Link para o post
Shyzoul    0
Shyzoul

ae spell decente D:

Compartilhar este post


Link para o post
viviviva    0
viviviva

bla bla bla mas como da o download

Compartilhar este post


Link para o post
Coelho8475    0
Coelho8475

Muito bom, não te conhecia mas agora vi que e muito bom scripter.

Ótima Spell.

Compartilhar este post


Link para o post
lukas05    0
lukas05

ow mock..aki ela nao vai no inimigo ele apenas sai tendeu.. como nas versao 7.6 de tibia q o exori mort nao ia diretamente no inimigo.. nao sei pq isso se tiver como vc arrumar...

eu to usando o forgotten 3.5 axo..

vlw ae ;]

Compartilhar este post


Link para o post
MatheusGrilo    0
MatheusGrilo

Legal bem interessante ^^

Compartilhar este post


Link para o post
KuawiT    0
KuawiT

Legal so que não prescisa de algumas actions que você coloco lá :D

Geral pagano pau pro Mock oO

Compartilhar este post


Link para o post
Anywhere    0
Anywhere

Mock, achei um bug pelo menos no meu OT, ela funciona normal mas quando vai usar em algum monstro a distancia, ele acusa um erro no console e não acontece NADA veja:

 

[27/09/2009 17:41:21] Lua Script Error: [spell Interface]

[27/09/2009 17:41:21] data/spells/scripts/attack/strike.lua:onCastSpell

 

[27/09/2009 17:41:21] data/spells/scripts/attack/strike.lua:83: attempt to call global 'isWalkable' (a nil value)

[27/09/2009 17:41:21] stack traceback:

[27/09/2009 17:41:21] data/spells/scripts/attack/strike.lua:83: in function <data/spells/scripts/attack/strike.lua:65>

Compartilhar este post


Link para o post
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×