Ir para conteúdo

Tprocheira

Conde
  • Total de itens

    566
  • Registro em

  • Última visita

Tudo que Tprocheira postou

  1. Tprocheira

    Loops

    Fala galerinha do XTibia.com! Como tenho visto poucos tutoriais de nível avançado na nossa sessão de scripting, decidi fazer este tutorial completo sobre loops em LUA. Basicamente, existem 3 tipos de loops que podem ser usados, os quais são: repeat ... until, while e for. Recomendações: -Conhecimento completo sobre Arrays; -Conhecimento intermediário sobre LUA OFF-OpenTibia Repeat Loop Este é raro de se ver, já que ele tem uma sintaxe maior e faz a mesma coisa que o while. A sua sintaxe é a seguinte: Este tipo de loop funciona da seguinte maneira: Você tem uma variável para a qual você atribui o valor 0. Então, você da o comando repeat, o qual irá repetir o código. Para que o loop não seja infinito, você terá que adicionar a linha until var == valor, e antes disso, algo que aumente o valor da variável, no nosso caso, foi usado var = var+1, o que, após o script ter sido executado, irá aumentar o valor da variável var em um. Um exemplo de OpenTibia: local var = 0function onUse(cid, item)local rand = math.random(1, 10)repeatdoPlayerSay(cid, rand, 2)var = var+1until var == 5return trueend Isso fará com que o player fale um número qualquer (randomizado pelo math.random) até que a variável var tenha valor 5. Como pôde perceber, esse tipo de loop é um pouco complicado, já que você tem que aumentar a variável e para se fechar o loop você precisa colocar uma 'função' (until var == 5) para que ele termine. While Loop Esse, mesmo que pouco usado, ainda é usado atualmente. Ele funciona quase da mesma maneira que o repeat, a não ser pelo fato de que não existe o until var == valor. A sua sintaxe é a seguinte: Neste caso, você terá que adicionar um end no lugar do until, mas percebam que ainda é preciso usar o var == var+1. Um exemplo de OpenTibia: local var = 0function onUse(cid, item)while var < 5 dodoPlayerSay(cid, "I'm crazy!", 2)var == var+1endend Este script fará com que o player fale I'm Crazy 5 vezes (ou até a varíavel var estar com o mesmo valor citado no início do loop). Você pode usar ele para criar um script após o final do while. Por exemplo, depois que ele falar as 5 vezes, ele morrerá de cansaço. For Loop Este, na minha opinião pessoal, é o melhor e mais flexível tipo de loop em LUA, porém não funciona com nenhuma condição (ele simplesmente vai repetir até o valor estipulado). Com ele, você consegue checar cada item de uma tabela, podendo ser nomes, posições, ou qualquer outra coisa. A sua sintaxe é uma das mais fáceis: Você pode substituir a palavra index por qualquer outra coisa. Para determinar o valor inicial e o valor máximo à ser usado, você troca a letra a pelo valor mínimo e b pelo valor máximo. Caso você queira checar cada item de uma tabela, você fará da seguinte maneira: Isso vai exibir na tela do usuário as seguintes palavras: Você pode usá-lo para repetir algum código. Por exemplo, caso você queira esvaziar a sua array sem ter que 'chutar' quantos valores ela vai ter e sem repetir o código, o que você pode fazer, é usar o loop! local names = {"Me", "You", "He"}function Bla()for i = 1, #names dotable.remove(names, i)endend Isso irá remover todos os nomes da tabela, sem ter que repetir o código! Um exemplo de OpenTibia: 20 Itens dentro de uma backpack! Você também pode parar o loop após ele ter efetuado a sua ação, tudo que você tem à fazer, é adicionar o comando break (quebrar) após o seu código. Um exemplo muito interessante (não é de minha autoria, e sim de Colandus), é um script que checa uma área e atribui um valor à uma variável se estiver (o tile) vazio ou com algum player. local position = {fromx = 584, fromy = 371, tox = 595, toy = 381, z = 7}local area = ""function onUse(cid, item, frompos, item2, topos)area = "Creatures at area:\n"for i = position.fromy, position.toy dofor j = position.fromx, position.tox dolocal pos = {x = j, y = i, z = position.z, stackpos = 253}local getThing = getThingfromPos(pos).uidif isCreature(getThing) == 1 thenarea = area .. "1 "elsearea = area .. "0 "endendarea = area .. "\n"enddoPlayerSendTextMessage(cid, 17, area)return 1end Você também pode usar Iterators com um loop for. Para isso, farei um tutorial mais tarde! \\
  2. Acho que já existe pelo menos um tutorial sobre isso já aprovado :s Tente criar algo inovador, algo que não exista no fórum. \\
  3. Acredito que com o tempo você chegará lá. Só espero um moderador que tenha acesso à area de tutoriais para arrumar os fixos. \\
  4. Vo da tanta risada quando você descobrir que é fake, que só usam você pra eles ganharem via AdSense HA~
  5. Zuando: Tibia só vai ficar legal quando aparecer um monstro chamado Chuck Norris Sério, com o Lord'Paulistinha sendo level 400, é capaz dele conseguir solar com alguns healers um Orshabaal :s \\
  6. Não vale a pena lembrar que isso ai não é Iterator :s Iterator são aqueles que você usa com 2 valores. Exemplos bons são ipairs() ou pairs()... \\
  7. Olá membros da equipe e da comunidade em geral. Por meio deste tópico, venho reclamar sobre a lentidão para serem aprovados tutoriais. Existem tutoriais lá que foram postados à mais de 2 semanas, e não foram visitados, nem sequer uma vez por um membro da equipe para serem aprovados/reprovados (não sei quem é o responsável). Não só eu, mas como todos que postam tutoriais, exigimos uma maior velocidade na aprovação dos tutoriais. Além do mais, o que está escrito em cima da minha Pip? Colaborador de Scripting né? Então, eu posto tutoriais, mas ninguém passa lá para serem aprovados. Outra coisa, é a incrível capacidade de serem aprovados tutoriais que tratam exatamente do mesmo conteúdo! Dúvidam? Olhem: Eu, pessoalmente, acho o segundo melhor, porém, se existe um tutorial melhor, porquê o antigo ainda não foi removido? Além disso, também sugiro à vocês reverem os tópicos fixados. Existe um tópico fixado de como se fazer magias (spells) (http://www.xtibia.com/forum/Criando-Spells...otos-t8867.html), porém, o tópico é de 2006, esse tutorial está ultrapassado! Revejam os tópicos fixos, e fixem tópicos que não mudam de acordo com a versão do OpenTibia. Tópicos como tutoriais sobre como mecher com loops (while, until, for), arrays (table.insert), addEvent ou Iterators (for k, v in pairs()), não tutoriais que quase com certeza ficarão obsoletos. Espero que entendam isso como uma crítica construtiva. \\
  8. P.S Eu quero pelo menos 5 usuários, por isso disse 10 votarem na enquete Você poderia nos ajudar, mandando este link para seus contatos \\
  9. @Last Dragon~ Por que você espera ganhar de um concurso não-oficial, cujo qual objetivo seria fazer você ser elevado à "Famoso ganhador do concurso de Scripting do XTibia". Eu lá tenho cara de Pain!? @Eventide~ Sim, eu estaria organizando. @Merchant~ Sim, mas ao meu ver, a sessão de mapping está mais parada que a de scripting Espero até que pelo menos umas 10 pessoas votem sim. \\
  10. Olá meninas e meninos! Conversando com um amigo meu (que por sinal visita essa comunidade [É o Yunie]), surgiu a idéia de iniciarmos um Concurso não-oficial de Scripting aqui no XTibia. Porém, ele levantou um fato que deve ser levado à serio, a quantidade de usuários que participariam! Caso você, como scripter de qualquer nível, visse este concurso, participaria? (levando em conta as recompensas à serem entreges) Votem na enquete acima e poste o porquê de sua resposta! \\
  11. Vá no seu mapa, e coloque um actionID livre no tile acima de onde você quer sumonar o trainer. Vá no arquivo movements.xml e coloque o seguinte dentro: movevent event="stepOut" actionid="ACTIONID" file="trainer.lua"/>movevent event="stepIn" actionid="ACTIONID" file="trainer.lua"/> Agora crie um arquivo na pasta \movements\scripts chamado [b]trainer.lua[/b] e coloque o seguinte dentro: Substitua o [b]Trainer[/b] pelo monstro que você quer sumonar. [b]For you to get another trainer, you just need to step again on the tile that you are.[/b] é a mensagem que vai aparecer quando o player pisar no tile. [b]{x=pos.x, y=pos.y+1, z=pos.z}[/b] é a posição. Se você quiser que ele apareça abaixo do player, troque por [b]y=pos.y-1[/b]. Se for ao lado esquerdo, troque por [b]{x=pos.x-1, y=pos.y, z=pos.z}[/b], e se for a direita, troque por [b]{x=pos.x+1, y=pos.y, z=pos.z}[/b]. \\
  12. Tprocheira

    Aol 8.4

    Nenhum servidor tem o Amulet of Loss funcionando em modo PvP-Enforced (nem mesmo o Tibia). A mesma coisa com Blessings. \\
  13. Na verdade o correto é Xis Tibia (estamos no Brasil, então, é Xis Tibia), é a mesma coisa que eu falar que o nome do Pedro é Pidro, ou na pior das hipóteses, Peter. Ou também, não falar Antonio, e sim Antsonio (t com um som de s), ou também, ao invés de ÓTE, falar OuTi. Estamos no Brasil, falem o português \\
  14. O que eu fiquei mais indiginado foi com o seu inglês :s Tradução: Corrigindo: Legal né? \\
  15. Eu já consegui ligar um servidor sem fazer isso. Tudo que tive que fazer foi um redirecionamento de uma certa porta no Moden para o meu IP interno (192.168.0.1). Isso pode até funcionar, mas não é a única saída. \\
  16. OI CARA USA UMAS VIRGULA E DESLIGA O CAPSLOCK EU QUASE NAO VIM AJUDA PORQUE TAVA COM CAPSLOCK! 1º Procure no config.lua se existe alguma opção do tipo enableStages. Se não, faça o que o walckerstriker falou. Se sim, deixa e opção como "no" e modifique as informações no próprio config.lua. \\
  17. 1 Post? Megaupload? Pode me falar qual o nome da ferramenta? P.S É edição, e não editação. \\
  18. Tirando o que o Yunie falou, acho Mapping. Sem um mapa, não se tem um servidor \\
  19. Ouch Concordo com o Nostra~ Muita gente é enganada por servidores que 'são' do protocolo mais atual, quando não são... Os moderadores desse fórum deviam cuidar disso, já que a comunidade foi feita para ajudar, e não atrapalhar. \\
  20. Vocês deveriam deixar separadas mas com o sistema de prefixo junto, assim aqueles 'engraçadinhos' que postam servidores 8.1x na sessão de 8.4x por ser mais movimentada seriam pegos mais facilmente \\
  21. não rs mapa não tem coração somente tiles mesmo ² Cara, hoje em dia, a 'indústria' de mapping creceu em usuários, mas não muito em qualidade. Atualmente, muitos mappers são horríveis, não conseguem nem fazer uma caverna redonda (Hail Large-Square Tool). O que aumentou também, foi a quantidade de flammers. Você coloca fotos de seu mapa e os infelizes (na sua maioria nem mapper é), critíca o mapa em tudo, e não da nenhuma sugestão. No dia em que os brasileiros (em sua maioria esmagadora) pararem de serem crianças mimadas, os mappers brasileiros vão voltar à crescer. Uma prova disso, é que a maioria dos bons mappers (tipo o Adrew_, FrozenMapper (vulgo Pain), Lordfire, etc), tem saído de comunidades brasileiras e entrando em comunidades estrangeiras, já que lá ganharão mais prestígio e admiração do que em comunidades de crianças. Espero que todos que leiam este post/tópico (inteiro) entendam o que nós, mappers, falamos. \\
  22. Jà viu alguma notícia dele ter conteúdo? (pode responder)
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...