Jump to content
  • Announcements

    • Majesty

      Seja bem vindo a seção Downloads!   04/25/2019

      Seja bem vindo a seção Downloads! 
      Aqui, você pode encontrar diversos downloads sobre OTServ. Se tiver dúvidas e/ou problemas sobre algum conteúdo, primeiro, você deve utilizar a ferramenta de busca e explorar o fórum. Se você não encontrou o que precisa, considere criar um tópico na seção de Suporte:
      https://forums.otserv.com.br/index.php?/forums/forum/402-suporte-dúvidas-bugs-erros/ Considere também ler o grande guia do usuário com dúvidas, que possui várias recomendações e dicas de como tirar dúvidas.

      Obrigado e boa sorte!
Sign in to follow this  
Conde2

Area Lib

Recommended Posts

Conde2

Nome: Area LIB

Autor: Conde2 & Skyen Hasus

Servidor testado: TFS 0.3.1++++

Versão: 0.1

 

Já vi infinidades de seplls (Lixos) com areas sempre iguais, nada de randomicidade e totalmente sem graça !!!

Vendo isso eu decidi criar essas funções para que esses (Lixos) scripts ganhem um novo "ar".

Além de que esses scripts podem ser usado em outros casos e não só em spells xD

 

Antes de mais nada queria agradecer ao Skyen que me deu as dicas e me aguento no MSN.

Tomei a liberdade de por as Palavras de Skyen Hasus (Em rosa !!):

Quero manifestar que ele demorou um tempão pra fazer essa função enquanto eu fiz em miseros 40 segundos e eu ainda tive que ajudar rsrs.

E no final eu aprimorei a minha função baseando-se na dele !!!!!!!!!!!!!!!!!!! O CONDE2 É FODA !!!

Agora vamos ao script...

Em data/lib/data.lua adicione o seguinte código no final:

Ou em data/global.lua.

 

 

function getRandomArea(horizontal, vertical, incidence) -- By Conde2
  area = {}

        for posv = 1, vertical do
        table.insert(area,{})
        for posh = 1, horizontal do
            if incidence >= math.random(1, 100) then
             table.insert(area[posv], 1)
               else
              table.insert(area[posv], 0)
               end 
        end
    end


area[math.ceil(vertical/2)][math.ceil(horizontal/2)] = 3
return area
end

function getSquareArea(horizontal, vertical, bounds) -- By Skyen Hasus
 local area = {}
 local bounds = bounds or 1
   for posy = 1, vertical do
     table.insert(area,{})
       for posx = 1, horizontal do
           if posy > vertical-bounds or posy <= bounds or posx > horizontal-bounds or posx <= bounds then
             table.insert(area[posy], 1)
           else
             table.insert(area[posy], 0)
           end
       end
   end
 area[math.ceil(vertical/2)][math.ceil(horizontal/2)] = 3
 return area
end

[spoiler=Conde2 getSquareArea(size)]

function getSquareArea(size)
local size = size or 0

  local area = {}

        local vertical = 3+size
        local horizontal = 3+size

        for posv = 1, vertical do
        table.insert(area,{})
        for posh = 1, horizontal do
            if size == 0 then
             table.insert(area[posv], 1)

             elseif size == 1 then
              area = {
              {1, 1, 1, 1},
              {1, 0, 0, 1},
              {1, 0, 0, 1},
              {1, 1, 1, 1}
              }

              elseif posv == vertical then
             table.insert(area[posv], 1)

             elseif #area[1] < horizontal then
              table.insert(area[1], 1)

              elseif #area[posv] < 1 then
              table.insert(area[posv],1,1)
              table.insert(area[posv],horizontal,1)

              elseif #area[posv] < horizontal then
              table.insert(area[posv],0)

             end
         end
    end

 

 

 

Agora explicando:

A função getRandomArea(horizontal, vertical, incidence) ela cria uma area de spells randomicamente !!

E a posição do player vai ser sempre o centro da area.

 

Por exemplo:

 

getRandomArea(5, 5, 10) vai retornar isso:

{

{1, 0, 0, 0, 0},

{0, 0, 0, 0, 0},

{0, 0, 3, 0, 0},

{1, 1, 0, 0, 0},

{0, 0, 0, 1, 1}

}

 

# O tamanho da area na horizontal

# O tamanho da area na vertical

# Quantos % de chance tem de a area ficar mais "cheia"

 

 

getSquareArea(5, 5, 1) vai retornar isso:

{

{1, 1, 1, 1, 1},

{1, 0, 0, 0, 1},

{1, 0, 3, 0, 1},

{1, 0, 0, 0, 1},

{1, 1, 0, 1, 1}

}

 

 

# O tamanho da area na horizontal

# O tamanho da area na vertical

# Em vermelho é o tamanho da borda do Square !!

Para melhorar a compreensão ai vai uma Spell com area randomizada pela função !!

 

 

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 47)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.8, 0, -1.4, 0)

-- Você pode usar tambem: 
-- getSquareArea(horizontal, vertical, bounds)

arr = getRandomArea(5, 5, 50)

local area = createCombatArea(arr)
setCombatArea(combat, area)

function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end 

 

 

NÃO AUTORIZO A POSTAGEM DESSE SCRIPT EM QUALQUER OUTRO FORUM SEM MINHA AUTORIZAÇÃO !!!!!!!

Edited by Conde2

Share this post


Link to post
Skyen Hasus

Tópico Aprovado e Movido para Scripting > Scripts Prontos > Sistemas e Bibliotecas.

 

Padrão de Qualidade: OK

 

Parabéns, finalmente você conseguiu! :)

Quero manifestar que ele demorou um tempão pra fazer essa função enquanto eu fiz em miseros 40 segundos e eu ainda tive que ajudar rsrs.

Share this post


Link to post
Mock

@conde

podia ter uma opção pra definir uma numero de areas :D

em fim cara ta otimo³

Share this post


Link to post
morvy

Mto massa, da pra fazer uma magia de meteoros caindo do ceu, sem ficar nakela mesma area

Share this post


Link to post
esau

Otima função, da pra fazer agora essas magia foda sem prescisar repetir as areas

 

como chuva de meteoros²

 

boa conde2, tu e foda mesmo =P

Share this post


Link to post
Dark Billie

Pra fazer a chuva de meteoros pode também usar de base a spell apocalypse, que vem em vários OTServers.

 

Mas esse aí pode usar em tudo e é mais compacto.

Bem desenvolvido.

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
  • Recently Browsing   0 members

    No registered users viewing this page.

×