Ir para conteúdo
  • Cadastre-se

(Resolvido)(PEDIDO) Spells


Ir para solução Resolvido por Adriano SwaTT,

Posts Recomendados

Bom dia galera, estou precisando de uma ajudinha e queria saber se vocês pode me ajudar com um script !!

 

Bom o script é o seguinte, queria fazer um script de uma magia q ficasse rodando em volta do meu char, por certo tempo ae depois sumisse !!...

 

Me ajudem :D :D REP + 

Link para o post
Compartilhar em outros sites

Só queria saber se essa magia será de ataque, defesa, etc..

Porque precisamos aproveitar as funções já de uma vez.

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

Boa tarde.

 

Fiz em talkactions pois não curto muito spells, trabalhei muito pouco com..

Enfim, segue abaixo:

 

----------- Configurações Iniciais ---------------
local exhaust_time = 10 -- em segundos
local effect = 11 -- ID do Efeito
local mana = 20 -- Quantidade de Mana
local dano = {100, 500} -- Dano Mínimo e Máximo (será somado com o level do player)
local delay = 1 -- em milésimos (meio segundo), tempo de um efeito para outro
local premmy = true -- Precisa ser premium SIM (true) ou Não (false)
local strg_exh = 32321 -- Storage que salva Exhaust (Não precisa editar)
----------- FIM das Configurações -----------------

local eff1 = {
{0, 0, 0},
{1, 2, 0},
{0, 0, 0}
}

local eff2 = {
{0, 0, 0},
{0, 3, 0},
{0, 0, 0}
}

local eff3 = {
{0, 0, 0},
{0, 2, 1},
{0, 0, 0}
}

local eff4 = {
{0, 0, 0},
{0, 2, 0},
{0, 0, 1}
}

local eff5 = {
{0, 0, 0},
{0, 2, 0},
{0, 0, 0},
{0, 0, 1}
}

local eff6 = {
{0, 0, 0},
{0, 2, 0},
{0, 0, 0},
{0, 1, 0}
}

local eff7 = {
{0, 0, 0},
{0, 2, 0},
{0, 0, 0},
{1, 0, 0}
}

local eff8 = {
{0, 0, 0},
{0, 2, 0},
{1, 0, 0},
{0, 0, 0}
}

local tw1 = createCombatArea(eff1)
local tw2 = createCombatArea(eff2)
local tw3 = createCombatArea(eff3)
local tw4 = createCombatArea(eff4)
local tw5 = createCombatArea(eff5)
local tw6 = createCombatArea(eff6)
local tw7 = createCombatArea(eff7)
local tw8 = createCombatArea(eff8)

function onSay(cid, words, param, channel)

local get = getCreaturePos(cid)
local pos1 = {x=get.x-1, y=get.y-1, z=get.z}, {x=get.x, y=get.y-1, z=get.z}, {x=get.x+1, y=get.y-1, z=get.z}
local pos2 = {x=get.x+1, y=get.y, z=get.z}, {x=get.x+1, y=get.y+1, z=get.z}
local pos3 = {x=get.x, y=get.y+1, z=get.z}, {x=get.x-1, y=get.y+1, z=get.z}
local pos4 = {x=get.x-1, y=get.y, z=get.z}

local hitmin = (getPlayerLevel(cid) + dano[1])
local hitmax = (getPlayerLevel(cid) + dano[2])

    if premmy == true and isPremium(cid) then
        if exhaustion.get(cid, strg_exh) == false then
            if getCreatureMana(cid) >= mana then
                addEvent(doAreaCombatHealth, delay * 100, cid, COMBAT_PHYSICALDAMAGE, getPlayerLookPos(cid), tw1, -hitmin, -hitmax, effect)
                addEvent(doAreaCombatHealth, delay * 200, cid, COMBAT_PHYSICALDAMAGE, getPlayerLookPos(cid), tw2, -hitmin, -hitmax, effect)
                addEvent(doAreaCombatHealth, delay * 300, cid, COMBAT_PHYSICALDAMAGE, getPlayerLookPos(cid), tw3, -hitmin, -hitmax, effect)
                addEvent(doAreaCombatHealth, delay * 400, cid, COMBAT_PHYSICALDAMAGE, getPlayerLookPos(cid), tw4, -hitmin, -hitmax, effect)
                addEvent(doAreaCombatHealth, delay * 500, cid, COMBAT_PHYSICALDAMAGE, getPlayerLookPos(cid), tw5, -hitmin, -hitmax, effect)
                addEvent(doAreaCombatHealth, delay * 600, cid, COMBAT_PHYSICALDAMAGE, getPlayerLookPos(cid), tw6, -hitmin, -hitmax, effect)
                addEvent(doAreaCombatHealth, delay * 700, cid, COMBAT_PHYSICALDAMAGE, getPlayerLookPos(cid), tw7, -hitmin, -hitmax, effect)
                addEvent(doAreaCombatHealth, delay * 800, cid, COMBAT_PHYSICALDAMAGE, getPlayerLookPos(cid), tw8, -hitmin, -hitmax, effect)
                exhaustion.set(cid, strg_exh, exhaust_time)
                doCreatureAddMana(cid, -mana, false)
            else
                doPlayerSendCancel(cid, "Você precisa de "..mana.." de mana para usar esta magia.")
            end
        else
            doPlayerSendCancel(cid, "Precisa esperar "..exhaustion.get(cid, strg_exh).." segundos para usar novamente.")
        end
    else
        doPlayerSendCancel(cid, "Esta magia é somente para players Premium Account.")
    end
    
return true
end

 

Boa sorte.

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites
  • Solução

Atualizei, com level agora:

 

----------- Configurações Iniciais ---------------
local exhaust_time = 10 -- em segundos
local effect = 11 -- ID do Efeito
local mana = 20 -- Quantidade de Mana
local level = 20 -- Level minimo
local dano = {100, 500}
local delay = 5 -- em milésimos (meio segundo), tempo de um efeito para outro
local premmy = 'true' -- Precisa ser premium SIM (true) ou Não (false)
local strg_exh = 32321 -- Storage que salva Exhaust (Não precisa editar)
----------- FIM das Configurações -----------------

local eff1 = {
{0, 0, 0},
{1, 2, 0},
{0, 0, 0}
}

local eff2 = {
{0, 0, 0},
{0, 3, 0},
{0, 0, 0}
}

local eff3 = {
{0, 0, 0},
{0, 2, 1},
{0, 0, 0}
}

local eff4 = {
{0, 0, 0},
{0, 2, 0},
{0, 0, 1}
}

local eff5 = {
{0, 0, 0},
{0, 2, 0},
{0, 0, 0},
{0, 0, 1}
}

local eff6 = {
{0, 0, 0},
{0, 2, 0},
{0, 0, 0},
{0, 1, 0}
}

local eff7 = {
{0, 0, 0},
{0, 2, 0},
{0, 0, 0},
{1, 0, 0}
}

local eff8 = {
{0, 0, 0},
{0, 2, 0},
{1, 0, 0},
{0, 0, 0}
}

local tw1 = createCombatArea(eff1)
local tw2 = createCombatArea(eff2)
local tw3 = createCombatArea(eff3)
local tw4 = createCombatArea(eff4)
local tw5 = createCombatArea(eff5)
local tw6 = createCombatArea(eff6)
local tw7 = createCombatArea(eff7)
local tw8 = createCombatArea(eff8)

function onSay(cid, words, param, channel)

local hitmin = (getPlayerLevel(cid) + dano[1])
local hitmax = (getPlayerLevel(cid) + dano[2])

    if premmy == 'true' and isPremium(cid) then
        if exhaustion.get(cid, strg_exh) == false then
            if getPlayerLevel(cid) >= level then
                if getCreatureMana(cid) >= mana then
                    addEvent(doAreaCombatHealth, delay * 100, cid, COMBAT_PHYSICALDAMAGE, getPlayerLookPos(cid), tw1, -hitmin, -hitmax, effect)
                    addEvent(doAreaCombatHealth, delay * 200, cid, COMBAT_PHYSICALDAMAGE, getPlayerLookPos(cid), tw2, -hitmin, -hitmax, effect)
                    addEvent(doAreaCombatHealth, delay * 300, cid, COMBAT_PHYSICALDAMAGE, getPlayerLookPos(cid), tw3, -hitmin, -hitmax, effect)
                    addEvent(doAreaCombatHealth, delay * 400, cid, COMBAT_PHYSICALDAMAGE, getPlayerLookPos(cid), tw4, -hitmin, -hitmax, effect)
                    addEvent(doAreaCombatHealth, delay * 500, cid, COMBAT_PHYSICALDAMAGE, getPlayerLookPos(cid), tw5, -hitmin, -hitmax, effect)
                    addEvent(doAreaCombatHealth, delay * 600, cid, COMBAT_PHYSICALDAMAGE, getPlayerLookPos(cid), tw6, -hitmin, -hitmax, effect)
                    addEvent(doAreaCombatHealth, delay * 700, cid, COMBAT_PHYSICALDAMAGE, getPlayerLookPos(cid), tw7, -hitmin, -hitmax, effect)
                    addEvent(doAreaCombatHealth, delay * 800, cid, COMBAT_PHYSICALDAMAGE, getPlayerLookPos(cid), tw8, -hitmin, -hitmax, effect)
                    exhaustion.set(cid, strg_exh, exhaust_time)
                    doCreatureAddMana(cid, -mana)
                else
                    doPlayerSendCancel(cid, "Você precisa de "..mana.." para usar esta magia.")
                end
            else
                doPlayerSendCancel(cid, "Você precisa ser no mínimo "..level.." para usar esta magia.")
            end
        else
            doPlayerSendCancel(cid, "Precisa esperar "..exhaustion.get(cid, strg_exh).." segundos para usar novamente.")
        end
    else
        doPlayerSendCancel(cid, "Esta magia é somente para players Premium Account.")
    end
    
return true
end

 

Se não depende de Premium Account:

----------- Configurações Iniciais ---------------
local exhaust_time = 10 -- em segundos
local effect = 11 -- ID do Efeito
local mana = 20 -- Quantidade de Mana
local level = 20 -- Level minimo
local dano = {100, 500}
local delay = 5 -- em milésimos (meio segundo), tempo de um efeito para outro
local strg_exh = 32321 -- Storage que salva Exhaust (Não precisa editar)
----------- FIM das Configurações -----------------

local eff1 = {
{0, 0, 0},
{1, 2, 0},
{0, 0, 0}
}

local eff2 = {
{0, 0, 0},
{0, 3, 0},
{0, 0, 0}
}

local eff3 = {
{0, 0, 0},
{0, 2, 1},
{0, 0, 0}
}

local eff4 = {
{0, 0, 0},
{0, 2, 0},
{0, 0, 1}
}

local eff5 = {
{0, 0, 0},
{0, 2, 0},
{0, 0, 0},
{0, 0, 1}
}

local eff6 = {
{0, 0, 0},
{0, 2, 0},
{0, 0, 0},
{0, 1, 0}
}

local eff7 = {
{0, 0, 0},
{0, 2, 0},
{0, 0, 0},
{1, 0, 0}
}

local eff8 = {
{0, 0, 0},
{0, 2, 0},
{1, 0, 0},
{0, 0, 0}
}

local tw1 = createCombatArea(eff1)
local tw2 = createCombatArea(eff2)
local tw3 = createCombatArea(eff3)
local tw4 = createCombatArea(eff4)
local tw5 = createCombatArea(eff5)
local tw6 = createCombatArea(eff6)
local tw7 = createCombatArea(eff7)
local tw8 = createCombatArea(eff8)

function onSay(cid, words, param, channel)

local hitmin = (getPlayerLevel(cid) + dano[1])
local hitmax = (getPlayerLevel(cid) + dano[2])

        if exhaustion.get(cid, strg_exh) == false then
            if getPlayerLevel(cid) >= level then
                if getCreatureMana(cid) >= mana then
                    addEvent(doAreaCombatHealth, delay * 100, cid, COMBAT_PHYSICALDAMAGE, getPlayerLookPos(cid), tw1, -hitmin, -hitmax, effect)
                    addEvent(doAreaCombatHealth, delay * 200, cid, COMBAT_PHYSICALDAMAGE, getPlayerLookPos(cid), tw2, -hitmin, -hitmax, effect)
                    addEvent(doAreaCombatHealth, delay * 300, cid, COMBAT_PHYSICALDAMAGE, getPlayerLookPos(cid), tw3, -hitmin, -hitmax, effect)
                    addEvent(doAreaCombatHealth, delay * 400, cid, COMBAT_PHYSICALDAMAGE, getPlayerLookPos(cid), tw4, -hitmin, -hitmax, effect)
                    addEvent(doAreaCombatHealth, delay * 500, cid, COMBAT_PHYSICALDAMAGE, getPlayerLookPos(cid), tw5, -hitmin, -hitmax, effect)
                    addEvent(doAreaCombatHealth, delay * 600, cid, COMBAT_PHYSICALDAMAGE, getPlayerLookPos(cid), tw6, -hitmin, -hitmax, effect)
                    addEvent(doAreaCombatHealth, delay * 700, cid, COMBAT_PHYSICALDAMAGE, getPlayerLookPos(cid), tw7, -hitmin, -hitmax, effect)
                    addEvent(doAreaCombatHealth, delay * 800, cid, COMBAT_PHYSICALDAMAGE, getPlayerLookPos(cid), tw8, -hitmin, -hitmax, effect)
                    exhaustion.set(cid, strg_exh, exhaust_time)
                    doCreatureAddMana(cid, -mana)
                else
                    doPlayerSendCancel(cid, "Você precisa de "..mana.." para usar esta magia.")
                end
            else
                doPlayerSendCancel(cid, "Você precisa ser no mínimo "..level.." para usar esta magia.")
            end
        else
            doPlayerSendCancel(cid, "Precisa esperar "..exhaustion.get(cid, strg_exh).." segundos para usar novamente.")
        end
    
return true
end

 

Boa sorte.

Editado por Adriano SwaTT (veja o histórico de edições)

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites
  • 2 weeks later...

Vlew, Adriano sempre ajudando, heiin <3 Rep + pro cê mano !!

Quando as pessoas ajudarem, além de clicar em "Gostei" lembre-se de clicar também em "Melhor Resposta" pra que o tópico fique como resolvido. 

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)

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.


  • Conteúdo Similar

    • Por L3K0T
      SUMMON SPELLS
       
       
      Como o nome diz é uma spell que sumona até 4 monstros ou podendo adicionar mais, legal pra naruto etc... Então para não perder ou ficar em vão, irei deixar pra vocês e já com as correções.
       
       
      DEMONSTRAÇÃO

      2022-09-01 00-08-30.mp4  
       
      INSTALANDO
      1: primeiro vá em data/spells/scripts e crie um arquivo.lua e adicione isso abaixo dentro dele e em seguida salve.
      function onCastSpell(cid, var) local from,to = {x=962, y=885, z=7},{x=973, y=892, z=7} local from2,to2 = {x=979, y=901, z=7},{x=991, y=905, z=7} local dir = getPlayerLookDir(cid) local ppos = getPlayerPosition(cid) if(dir==1)then ppos.x = ppos.x + 1 elseif(dir==2)then ppos.y = ppos.y + 1 elseif(dir==3)then ppos.x = ppos.x - 1 elseif(dir==0)then ppos.y = ppos.y - 1 end local summon = getCreatureSummons(cid) local MaximoSummon = 0 if isInRange(getCreaturePosition(cid), from, to) or isInRange(getCreaturePosition(cid), from2, to2) then doPlayerSendCancel(cid, "Você não pode usar Summons Aqui!") return false end if (table.maxn(summon) > MaximoSummon) then doPlayerSendTextMessage(cid, 22, "Voce ainda tem summons em batalha!") return false end local clone1 = doConvinceCreature(cid, doCreateMonster("Morgaroth", ppos)) local clone2 = doConvinceCreature(cid, doCreateMonster("Demon", ppos)) local clone3 = doConvinceCreature(cid, doCreateMonster("Terror Bird", ppos)) local clone4 = doConvinceCreature(cid, doCreateMonster("Giant Spider", ppos)) doPlayerSendTextMessage(cid, 22, "Voce summonou 4 criaturas!") end  
       
      2: agora vá em data/spells/ e abra o arquivo spells.xml e coloca isso dentro e salve
       
      <instant name="Sumonar" words="!help" lvl="0" mana="0" aggressive="0" params="1" exhaustion="1000" needlearn="0" event="script" value="arquivo.lua"> </instant>  

      2022-09-01 00-28-08.mp4 Pronto! agora é só usar a imaginação, pode adicionar monstro diferente ou do mesmo quantas vezes quiser.
       
      créditos fonte: @Lenilson e L3K0T
       
       
       
       
       
    • Por Thiago Virtuoso
      Preciso de ajuda com minha spell, quero que quando o player esteja com o addon do druid full ele use o combat e quando estiver com qualquer outro addon usar o combat2.
       
      Script:
       
      local combat = createCombatObject()

      local meteor = createCombatObject()
      setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
      setCombatParam(combat, COMBAT_PARAM_EFFECT, 41)
      setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -10.3, -47, -10.2, 2)

      local stun = createConditionObject(CONDITION_PARALYZE)
      setConditionParam(stun, CONDITION_PARAM_TICKS, 5000)
      setConditionFormula(stun, -0.8, 0, -0.9, 0)
      setCombatCondition(meteor, stun)

      local combat2 = createCombatObject()

      local meteor2 = createCombatObject()
      setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
      setCombatParam(combat2, COMBAT_PARAM_EFFECT, 43)
      setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -7.3, -47, -6.2, 2)






      local arr = {
      {0, 0, 0, 0, 0},
      {0, 0, 1, 0, 0},
      {0, 1, 3, 1, 0},
      {0, 0, 1, 0, 0},
      {0, 0, 0, 0, 0}
      }

      local arr2 = {
      {0, 0, 0, 0, 0},
      {0, 0, 1, 0, 0},
      {0, 1, 3, 1, 0},
      {0, 0, 1, 0, 0},
      {0, 0, 0, 0, 0}
      }



      local area = createCombatArea(arr)
      local area2 = createCombatArea(arr2)

      setCombatArea(combat, area)
      setCombatArea(combat2, area2)

      local function meteorCast(p)
          doCombat(p.cid, p.combat, positionToVariant(p.pos))
      end
      local function meteorCast2(p)
          doCombat(p.cid, p.combat2, positionToVariant(p.pos))
      end
      local function stunEffect(cid)
          doSendMagicEffect(getThingPos(cid), CONST_ME_STUN)
      end


      function onTargetTile(cid, pos)
          if (math.random(0, 0) == 0) then
              local ground = getThingfromPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0})
              if (isInArray(water, ground.itemid) == TRUE) then
                  local newpos = {x = pos.x + 7, y = pos.y - 6, z = pos.z}
                  doSendDistanceShoot(newpos, pos, CONST_ANI_ICE)
                  addEvent(meteorCast, 200, {cid = cid, pos = pos, combat = meteor_water})
              else
                  local newpos = {x = pos.x + 7, y = pos.y - 6, z = pos.z}
                  doSendDistanceShoot(newpos, pos, CONST_ANI_ICE)
                  addEvent(meteorCast, 200, {cid = cid,pos = pos, combat = meteor})
              end
          end
      end

      setCombatCallback(combat, CALLBACK_PARAM_TARGETTILE, "onTargetTile")


      function onTargetTile(cid, pos)
          if (math.random(0, 0) == 0) then
              local ground = getThingfromPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0})
              if (isInArray(water, ground.itemid) == TRUE) then
                  local newpos = {x = pos.x + 7, y = pos.y - 6, z = pos.z}
                  doSendDistanceShoot(newpos, pos, CONST_ANI_ICE)
                  addEvent(meteorCast2, 200, {cid = cid, pos = pos, combat2 = meteor_water2})
              else
                  local newpos = {x = pos.x + 7, y = pos.y - 6, z = pos.z}
                  doSendDistanceShoot(newpos, pos, CONST_ANI_ICE)
                  addEvent(meteorCast2, 200, {cid = cid,pos = pos, combat2 = meteor2})
              end
          end
      end

      setCombatCallback(combat2, CALLBACK_PARAM_TARGETTILE, "onTargetTile")

      function onCastSpell(cid, var)
      local parameters = { cid = cid, var = var, combat = combat, combat2 = combat2 }


      local sex = getPlayerSex(cid)
      localOutfit = {lookType = 144, lookAddons = 3}
      localOufit2 = {lookType = 148, lookAddons = 3}




      if sex == 0 then
      if getCreatureOutfit == localOutfit2 then
      return doCombat(cid, combat, var)
      else
      return doCombat(cid, combat2, var)
      end
      end


      if sex == 1 then
      if getCreatureOutfit == localOutfit then
      return doCombat(cid, combat, var)
      else
      return doCombat(cid, combat2, var)
      end
      end
      end
    • Por Gerson Silva
      Eae Pessoal Queria Uma Ajuda Como Eu Mudar A Cor Do Meu Correr Ele Fica Assim laranja Mais O Efeito Já Ta Fucionando.. Eu Queria Que Ele Ficasse Laranja Ou Outra Cor.. Obrigado Pela Atenção Obrigado.
       
       
      Print De Como Está Meu Correr Amarelo.. Queria Que Ficasse Laranja Quando Eu Falasse O Efeito Correr
       

    • Por dolver
      E ai pessoa do TK, tudo bem com vocês?
       
      Então brothers, eu não faço a mínima ideia de como trocar as spells de uma vocation... Ai você me pergunta, porque trocar as spells de uma voc cara?
      Então brother, eu to fazendo um servidor derivado, usando uma base 8.60 e no "vocations.XML" eu não criei novas vocações, eu apenas editei as existentes da forma que eu quis, e é isso que eu pretendo fazer, editar as vocações que já existem para o servidor não ficar lotado de coisa inútil depois de pronto.
       
      Obrigado desde já gurizada, abraço!
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo