Eventide 23 Postado Janeiro 29, 2009 Share Postado Janeiro 29, 2009 (editado) aviso: para entender esse tutorial é preciso um conhecimento de for e de arrays. Iterator é uma forma de percorrer uma array, elemento por elemento. Exemplo de sistema de food reduzido : -- Exemplo de iterator -- food system simplificado por eventide :D -- function onUse(cid, item, fromPosition, itemEx, toPosition) local foodId = {100, 200, 300, 500} -- IDs local foodHun = {1020, 2000, 1348, 3450} -- essas hungrys não são verdadeiras local som = {"hmmm", "chomp", "nhac", "chomp"} -- nem o som..;p for I = 1,#foodId do food = {foodHun[I], som[I]} if food[1] == item.itemid then doPlayerFeed(cid, food[1]) doRemoveItem(item.uid, 1) doCreatureSay(cid, food[2], TALKTYPE_ORANGE_1) end end end Nesse exemplo, eu percorro a array foodId que deve ter o mesmo tamanho de som, do seu elemento 1 até o ultimo elemento, tendo sempre I como referencia do elemento. (para quem não sabe, #array pega o numero de elementos da array) E com isso, eu verifico todos os tipos de comidas, de uma só vez, reduzindo o numero de linhas e tornando o script "melhor" e até mais fácil de se fazer futuras edições. isso pode se aplicar a muitas³ coisas, principalmente quando se quer reduzir linhas, e se tem tudo feito por tabelas.. (o tuto pode ser curto, mas garanto que é util..) edit: bugs fixed.. ;p Editado Abril 2, 2009 por VaL Arrumar um problema mínimo de identação Link para o comentário https://xtibia.com/forum/topic/106493-iterator/ Compartilhar em outros sites More sharing options...
guilhermes26 26 Postado Janeiro 29, 2009 Share Postado Janeiro 29, 2009 (o tuto pode ser curto, mas garanto que é util..) Útil é mesmo, de vez em quando eu sempre tento diminuir alguns scripts...as vezes consigo, as vezes não huahuah Link para o comentário https://xtibia.com/forum/topic/106493-iterator/#findComment-686411 Compartilhar em outros sites More sharing options...
noobinhu 38 Postado Janeiro 29, 2009 Share Postado Janeiro 29, 2009 Bom, só faltou um return TRUE ali depois do if item... pro script ficar melhor né =O Iniciantes não entenderão este tutorial =o Link para o comentário https://xtibia.com/forum/topic/106493-iterator/#findComment-686416 Compartilhar em outros sites More sharing options...
RedZL 6 Postado Fevereiro 8, 2009 Share Postado Fevereiro 8, 2009 Estarei colocando entre '[]' como nível mediano, certo? Tutorial aprovado e movido para Tutoriais - OTServ > Tutoriais de Scripting. Link para o comentário https://xtibia.com/forum/topic/106493-iterator/#findComment-692906 Compartilhar em outros sites More sharing options...
Zafor 1 Postado Fevereiro 10, 2009 Share Postado Fevereiro 10, 2009 Pena que novatos na area de script's não entedem isso ( tipo eu ) uheuheuheuh mais pelo que deu para entender ta bem dahora o tuto ;O Link para o comentário https://xtibia.com/forum/topic/106493-iterator/#findComment-693966 Compartilhar em outros sites More sharing options...
Eventide 23 Postado Fevereiro 11, 2009 Autor Share Postado Fevereiro 11, 2009 lembrando que esse sistema de food é apenas um exemplo, o que interessa ali é o iterator em si.. (senão já vem nego enchendo falando que o sistema de food não funciona e etc) @zafor em breve vou fazer tutorial de for e de arrays.. (for já tá feito, só to aguardando avaliação.. ) Link para o comentário https://xtibia.com/forum/topic/106493-iterator/#findComment-694417 Compartilhar em outros sites More sharing options...
Tprocheira 5 Postado Fevereiro 28, 2009 Share Postado Fevereiro 28, 2009 Não vale a pena lembrar que isso ai não é Iterator :s Iterator são aqueles que você usa com 2 valores. for key, value in iterator do Exemplos bons são ipairs() ou pairs()... \\ Link para o comentário https://xtibia.com/forum/topic/106493-iterator/#findComment-702317 Compartilhar em outros sites More sharing options...
Holly Angel 2 Postado Março 4, 2009 Share Postado Março 4, 2009 Muito bom! Parábens! Link para o comentário https://xtibia.com/forum/topic/106493-iterator/#findComment-704947 Compartilhar em outros sites More sharing options...
Eventide 23 Postado Março 7, 2009 Autor Share Postado Março 7, 2009 Não vale a pena lembrar que isso ai não é Iterator :sIterator são aqueles que você usa com 2 valores. Exemplos bons são ipairs() ou pairs()... \\ a base é a mesma.. u.u Link para o comentário https://xtibia.com/forum/topic/106493-iterator/#findComment-706759 Compartilhar em outros sites More sharing options...
Tprocheira 5 Postado Março 8, 2009 Share Postado Março 8, 2009 Na verdade não. O comando #table é para você 'loopar' uma tabela, e os iterators são para você retornar valores (na maioria dos casos de uma tabela). Não é a mesma base pois todos os iterators usam a palavra in na sua sintaxe \\ Link para o comentário https://xtibia.com/forum/topic/106493-iterator/#findComment-707107 Compartilhar em outros sites More sharing options...
Posts Recomendados