Jump to content

Search the Community

Showing results for tags 'spell randomica'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • A Cidade OTBR
    • OTServ Brasil
    • Atendimento
    • Taverna
  • OpenTibia
    • Promoted Projects
    • Notícias e Discussões
    • Suporte - Dúvidas, Bugs, Erros
    • Downloads
    • Tutoriais
    • Show-Off
    • Divulgação de Servidores
  • Outros
    • Design

Found 1 result

  1. Area Lib

    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 !!): 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: # O tamanho da area na horizontal # O tamanho da area na vertical # Quantos % de chance tem de a area ficar mais "cheia" # 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 !!!!!!!
×