Jump to content

Search the Community

Showing results for tags 'random'.



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 3 results

  1. Conceitos de Aleatório

    Aleatório Olá, estou a um tempo parado e decidi postar este tutorial conceitual. O objetivo hoje é explicar como funciona a função math.random(...) em lua. O que é aleatório? Por conceito aleatório é aquilo que é escolhido independente de qualquer valor, ao acaso. Aplicação? Na prática, não existe aplicação exata ao conceito, entretanto, utilizamos fórmulas matemáticas para gerar valores que fogem um pouco do controle do usuário. Quando se utiliza math.random por exemplo, você está pedindo para a máquina gerar um número, definirei portanto esta atitude como semi-aleatória. Por que semi-aleatório? Simples, quando você utiliza math.random, o computador gera um número através de uma base que foi fornecida, às vezes sem sua percepção, é a denominada semente. Semente? Planta? O conceito utilizado requer um pouco de imaginação para compreensão. Imagine que você planta uma semente de caju, daqui algum tempos a árvore crescerá, e você poderá colher os frutos. Com math.random também é assim, você define o valor de base, este valor vai dar origem a vários outros valores. O ser humano tem a capacidade de tomar múltiplas decisões? Não, ao menos não do ponto de vista matemático. As decisões são tomadas de acordo com as experiências que este acumulou e com o momento em que ele está, sendo importantes as variáveis do ambiente, pensemos na natureza como um computador gigantesco e de alta performance. OtServer Quando um OT inicia, a semente que eu citei anteriormente, é semada logo na inicialização, por isso os scripts não precisam utilizá-lo. Quando um .lua é criado separadamente, caso não se semeie os resultados serão sempre iguais. Resumo - Não entendeu? Leia o resumo... Sempre que você utiliza math.random, o computador gera um número de acordo com a base definida por math.randomseed. Obrigado por lerem o tópico. Atenciosamente, Pedro Silva Moreira - PeJuGe. Gostou? Clique no link do meu projeto \/.
  2. 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 !!!!!!!
  3. Gerador de Números O que é? Bem, estava eu, como de costume passeando pela OTNet e vi o prêmio da OT$ena dessa semana e pensei, poxa, bem que eu podia tentar a sorte. Mas aí pensei: E agora? Em quais números eu 'aposto'? E aí veio a idéia, de criar um script que me diria em quais números apostar. Instalando Primeiramente vá a sua pasta data\talkactions e no arquivo talkactions.xml adicione esta tag: <talkaction words="!sortear" script="randomMegaSena.lua"/> Agora em data\talkactions\scripts crie um arquivo chamado: randomMegaSena.lua Nele, cole este código: local qtdade = 10 --quantos numeros serão sorteados [10 = OT$ena] function meDeUmNumero(min,max) numero = math.random(min,max) return numero end function onSay(cid, words, param) local arr = {} local i=1 --nao mexa local ret = "Os numeros sorteados foram: " while i<=qtdade do numero = meDeUmNumero(1,60) if (isInArray(arr, numero) == 0) then table.insert(arr, numero) i = i+1 end end table.sort(arr) for i=1, #arr do if i==#arr then ret = ret..arr[i].."." else ret = ret..arr[i].."," end end ret = ret.." Boa Sorte!" doPlayerSendTextMessage(cid,22,ret) return true end Utilizando Dentro do jogo diga: !sortear e lhe serão mostrados os 10 números "da sorte" O script foi feito com intuito de ajudar àqueles que nunca sabem em que número jogar na OT$ena, porém, o mesmo pode ser adaptado para ser usado em algum sistema de MegaSena no seu servidor ! Espero que ajude alguém, Abraços. Atualizado: Com esse mesmo script, OT$ena ganha desde então consecutivamente: OT$ena #44 OT$ena #45
×