Ir para conteúdo

Pesquisar na Comunidade

Mostrando resultados para as tags ''lua''.

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Fóruns

  • xTibia - Notícias e Suporte
    • Regras
    • Noticias
    • Soluções
    • Projetos Patrocinados
    • Tutoriais para Iniciantes
    • Imprensa
  • OTServ
    • Notícias e Debates
    • OTServlist
    • Downloads
    • Recursos
    • Suporte
    • Pedidos
    • Show-Off
    • Tutoriais
  • OFF-Topic
    • Barzinho do Éks
    • Design
    • Informática

Encontrar resultados em...

Encontrar resultados que contenham...


Data de Criação

  • Início

    FIM


Data de Atualização

  • Início

    FIM


Filtrar pelo número de...

Data de Registro

  • Início

    FIM


Grupo


Sou

  1. Iteradores são funções especiais criadas para iterar, ou seja, percorrer, listas, vetores (arrays), matrizes, tabelas ou o que quisermos. Nós criamos iteradores para usar na função for. Um exemplo de iterador que você já deve conhecer é o pairs. Vamos supor que eu tenha a seguinte tabela: k = {1, 2, 3, 4, 5}E eu queira iterar por todos eles imprimindo o seu quadrado. Como faríamos isso? Casualmente, o código seria este: for i = 1, 5 do print(i ^ 2) endMas e se eu quiser fazer isso várias vezes? Com uma lista que não segue um padrão? Então criamos um iterador, mas primeiro, vamos entender a estrutura de um em pseudocódigo Lua: function iterator(values) local pos = 0 --posição do iterador na lista return function() pos = pos + 1 if values[pos] ~= nil then return values[pos] end return nil end endPerceba que eu não retorno um valor especifico ao chamar a função iterator(), eu retorno uma nova função. Essa função será chamada pelo for até que seu retorno seja nil, onde Lua assume que o iterador acabou. E como eu sei quando acaba? Simples, há uma variável (chamei, neste caso, de pos) que armazena a posição dentro do array values do próximo valor a ser retornado. A cada iteração, o valor aumenta em 1 dentro da função. Quando eu acessar um índice dentro do array que não existe, seu valor (values[pos]) será nil, portanto eu testo essa condição. Parece bastante complexo, mas vamos voltar ao exemplo do quadrado. Chamarei minha função iteradora de square: function square(numbers) local pos = 0 return function() pos = pos + 1 if values[pos] ~= nil then return values[pos] ^ 2 end return nil end endA cada chamada da função de retorno, eu aumento a posição e retorno este elemento elevado ao quadrado. Então, usarei a função assim: for i in square(k) do print(i) endQue funciona como o esperado: O que mais podemos fazer com iteradores? Podemos, por exemplo, bloquear uma palavra usando a função onTalk do xotservx: local palavra = "jujuba" function splitWords(phrase) local pos = 0, words = phrase:gmatch("%w+") return function() pos = pos + 1 if words[pos] ~= nil then return words[pos] end return nil end end function onTalk(cid, type, text, position) for w in splitWords(text) do if w = palavra then return false end end return true endClaro que esse exemplo é bastante simplório, mas demonstra a utilidade dos iteradores. Neste caso, eu testo todas as palavras que o player falou para encontrar uma palavra especifica que eu defini. Podemos transformar isso tudo em um loop while, para você entender um pouco melhor: local words = splitWords(text) while w = words() do if w == nil then break end if w = palavra then return false end end end return trueUsando o iterador, ganhamos organização no código e o controle do for. Espero que façam bom uso de iteradores para organizar seus códigos
  2. Olá galera. Um tempo atrás, para ajudar um amigo, fiz um debugger que permite usar algumas funções de Tibia de maneira mais "real", pois eu estava ensinando Lua para ele, e ele estava com dificuldades. De uns dias para cá eu atualizei bastante o programa, adicionei muitas features novas, deixando o mais completo possível. Adicionei Syntax Highlighting, Auto Indent, aprimorei a função de debug, etc. A principal novidade mesmo é que agora ele tem suporte pra mods. Sim, agora você pode criar extensões para o programa se souber mexer com wxLua. Changelog: Imagem: Download em anexo no tópico. Bom uso Luck Oake's Debugger.rar
  3. Fala Galera, tudo bom? Bem... estou com um problema bem chato aqui... e gostaria da Ajuda de alguem, porque ja tentei muita coisa, e até outros foruns, e está sendo uma verdadeira dor de Cabeça... Bom, estou tentando iniciar um Servidor, porém... o CONFIG.LUA, creio que esteja com erro... Pois sempre que Clico para executar o server, antes mesmo de carregar ja da um erro: "Unable to load config.lua!" O server esta em Mysql, mas irei passar para Sqlite, mas mesmo assim mudando as configurações continua o problema... - Tentei pegar um outro arquivo Config.lua e substituir algumas configurações,... Passou o problema, mas deu muito erro, devido que não esta configurado corretamente... Então, assim penso que deve ser algo que esta faltando nesse arquivo, ou algo esta errado... Aqui esta o CONFIG.LUA, se alguem puder ajudar... serei eternamente grato! Obrigado!
  4. Kempaichi

    Arquivo lua

    Oque contem em um arquivo .lua de tibia 8.10? bom fiz um resumão de cada um das variáveis que contem em um arquivo .lua, e seu significa cada uma traduzido para português brasileiro. Prefiri colocar dentro de um spoiler, acho que facilita mais para o entendimento: [ spoiler ][ /spoiler ] Bom espero que seja de utilidade para consultas
  5. Olá galera. Devido a um pedido, refiz a função getSearchString das sources do TFS em Lua, e vou aproveitar e postar ela aqui, caso alguém vá a precisar um dia. Explicando os parâmetros da função getSearchString(fromPos, toPos, isFromCreature, isToCreature): fromPos = posição inicial toPos = posição do objeto procurado isFromCreature = a posição inicial é uma posição de uma criatura? (true / false) [default = false] isToCreature = a posição do objeto é uma posição de uma criatura? (true / false) [default = false] E pra facilitar o uso, já aproveitei e fiz a função para usar o comando exiva: useExiva(cid, pid). cid = o uid do player que usa pid = o uid do player procurado Ambas as funções estão no code. Bom uso.
  6. Estou procurando alguem para realizar uma modificação em minha Source. Posso pagar pelo serviço! Preço: ( à combinar ) Preciso o mais rápido possível, então se você é scripter, e se considera profissional, ou seja que entende do assunto, por favor poste neste topico. Deixe seu skype, ou facebook se possivel __ Obrigado
  7. Bom dia pessoal, bom após um tempo descobri este programa bem útil para aqueles que gostam de programar. Sim este editor não é só para webmaster e sim para vários programadores de outros tipos de linguagens. Para usar a syntax da linguagem escolhida basta fazer o seguinte: Na barra superior > Views > Syntax > escolha sua linguagem. Download: Aqui Scan: Aqui
  8. G712z042[/pastebin] Input: local k = "Ola, seu fdp" print(reverse(k)) Output: fdp seu Ola,
  9. cara to com um problema meu sercver 9.60 tinha um script asim que ficava brilhando letras coloridas e avisando que mostro tinah em caada portal mais nao ta funcionando e da um erro no console erro > doSendAnimatedText is now a deprecated function. local config = { positions = { ["Trainers"] = { x = 1117, y = 1214, z = 7 }, ["PvP Arena"] = { x = 1112, y = 1224, z = 7 }, ["Hydra"] = { x = 1106, y = 1217, z = 7 }, ["Bog Rider Etc"] = { x = 1107, y = 1196, z = 7 }, ["Templo"] = { x = 1112, y = 1217, z = 7 }, ["Enchanted >>>>>"] = { x = 1115, y = 1199, z = 7 }, ["Zao"] = { x = 1116, y = 1204, z = 6 }, ["Frost"] = { x = 1109, y = 1213, z = 7 }, ["Teleports"] = { x = 1011, y = 1047, z = 7 }, ["WOE,Breve"] = { x = 1014, y = 1047, z = 7 }, ["Piratas Etc"] = { x = 1117, y = 1222, z = 7 }, ["Quests"] = { x = 1117, y = 1218, z = 7 }, ["Dragons"] = { x = 1105, y = 1200, z = 7 }, ["Goroma"] = { x = 1108, y = 1225, z = 7 }, ["Vip City"] = { x = 1013, y = 1034, z = 7 }, ["Svar"] = { x = 1104, y = 1207, z = 7 }, ["Yalahar"] = { x = 1113, y = 1194, z = 7 } } } function onThink(cid, interval, lastExecution) for text, pos in pairs(config.positions) do doSendAnimatedText(pos, text, math.random(1, 255)) end return TRUE end script usado quem poder me ajuda agradeço versao 9.61
  10. Já procurei em diversos manuais de .lua, mas não encontrei nada a respeito, como aqui no Xtibia tem alguns caras muito bons em .lua, estou pedindo ajuda. Problema: quero atualizar um valor de uma variável durante a execução do script, vou dar um exemplo bem simples aqui. function onUse(cid, item, fromPosition, itemEx, toPosition) local sto = 999999999 local get_sto = getPlayerStorageValue(cid, sto) doPlayerSendTextMessage(cid, 22, get_sto) setPlayerStorageValue(cid,sto,get_sto + 1) doPlayerSendTextMessage(cid, 22, get_sto) return true end O resultado desse script é que imprime na tela:"1,1", ou "2,2", e o que eu queria era que imprimisse "1,2" ou "2,3", por exemplo. sei resolver isso de 2 maneiras, mas nenhuma é do jeito que eu queria. 1 - ao invés de usar "get_sto", usar "getPlayerStorageValue(cid, sto)" direto no script. 2 - colocar outro "local get_sto = getPlayerStorageValue(cid, sto)" antes do segundo print. Eu quero atualizar a variável "get_sto" sem setar outro valor para ela, e não quero usar "getPlayerStorageValue(cid, sto)", parece bobeira mas esse script de exemplo é um script bobo, estou fazendo NPC's muito complexos. Por favor postem TODAS as possibilidades, por favor.
  11. Simples, minha duvida é a seguinte: Tem como alterar o MOTD (a mensagem que aparece quando você loga no char) depois do OT estar online? se sim, qual é a função?
  12. Sofft

    Config.lua

    Distro:TFS 0.4 Servidor:Global Xtibianos, mais uma vezes recorro a vocês, A algum tempo vinha percebendo que por mais que eu configurasse a velocidade do respawn no config.lua, aparentemente a velocidade do respawn era a mesma, então fiz um teste, pus a rete do respawn = 0 e rate de loot = 0, porem o loot agora sempre cai as mesmas coisas (não cai full loot nem pouco), e o respawn ainda continua a mesma coisa. Solução para aumentar o tempo de respawn, e para diminuir o loot? sem mexer em cada respawn e em cada monstro também
  13. Acho que estas dicas vão fazer a diferença e claro vai ajudar você a especializar mais em LUA. ----------------------Paramentos----------------------------- Paramentos são os as "coordenadas" de uma funçao exemplo: "getPlayerLevel(paramentos) " Os paramentos podem ser alternar em script para defenir a creature que acionou o scripts definimos o paramentos "CID' Mais podemos alternar colocando dentro de um paramento uma funçao. "setPlayerStorageValue(cid, 18644, getPlayerLevel(cid))" Como no exemplo colocaria o numero do level no player no valor da storage 18644 Podemos utilizar outras maneiras tambem como. "setPlayerStorageValue(cid, 18644, param)" ou uma tabela "setPlayerStorageValue(cid, 18644, tab[encontrar].acho)" ----------------Strings-------------------------------------- Strings tecnicamente gostam de imaginar lãs como manipuladores, pois eles manipulam valores. ------------------------------------------------------Simbolos Matematicos----------- E cada vez mais comum ver este símbolos em LUA e normalmente são símbolos que ja conhecemos e de fácil utilização Vamos a alguns exemplos: ------------------------------------------------Dicas Ferramentas.--------------------------- Debbuger Online( LUA DEMO) "http://www.lua.org/demo.html" Debbuger (Sciter) "http://www.scintilla.org" Editor Lua Iniciante (OtScriptLive) Editor (Bloco de Notas) --------------------------------------------Events------------------- Os eventos e iniciado em function ele são encontrados sempre na iniciaçao ele servem para dizer quando os scripts serão executados function onThink(cid, interval) Este e um exemplo de function encontrado em CreatureScript.
  14. Tabelas são estruturas, que podem facilitar muito a vida de um scripter, e podem ser usadas para diversas finalidades, fica a gosto de cada um como usar. Achei esse tutorial na internet, e gostei bastante dele, por isso trago para vocês do Xtibia Vamos ao tutorial: Tables Tables são estruturas multidimensionais que permitem o armazenamento de dados diversos. Sua declaração é semelhante a de variáveis. local tabela = { } O acesso a estes valores na table é feito a partir da utilização de colchetes. local tabela = { } tabela[1] = ‘Carro’ tabela[2] = ‘Moto’ local variavel = tabela[1] print(variavel) Uma outra forma de atribuir valores a uma table é durante a sua declaração. local tabela = {‘Carro’ , ’Moto’ , 3.14} Funções Básicas table.concat() Concatena os ítens da tabela local tabela = {'amarelo','azul','vermelho'} local var = table.concat(tabela) print(var) table.insert() Insere um valor na tabela. local tabela = {'amarelo','azul','vermelho'} table.insert(tabela,'verde') print(tabela[4]) É possível ainda, incluir o valor em uma posição determinada da tabela. local tabela = {'amarelo','azul','vermelho'} print(tabela[1]) table.insert(tabela,1,'laranja') print(tabela[1]) print(tabela[2]) Você pode ver que um novo texto foi incluído na primeira posição da table. O texto que originalmente estava na primeira posição passou a segunda posição. table.maxn() Retorna o maior índice numérico positivo da tabela. Caso a tabela não possua índice positivo, será retornado zero. local tabela = {'amarelo','azul','vermelho'} print(table.maxn(tabela)) table.remove() Revome da table o último elemento. local tabela = {'amarelo','azul','vermelho'} table.remove(tabela) for i=1, table.maxn(tabela) do print(tabela) end É possível ainda informar qual o índice do elemento que deverá ser removido local tabela = {'amarelo','azul','vermelho'} table.remove(tabela,2) for i=1, table.maxn(tabela) do print(tabela) end No exemplo anterior, removemos o segundo elemento da table. table.sort() Ordena os elementos da table local tabela = {'verde','amarelo','azul','vermelho'} table.sort(tabela) for i=1, table.maxn(tabela) do print(tabela) end Algumas destas funções permitem a inclusão de outros parâmetros, aumentando a gama de opções, no entanto, iremos nos restringir ao básico para desenvolvimento. Créditos: Versao Digital
  15. Ola amigos do XTIBIA tenho um grande problema que esta acontecendo no meu server, que seria: O ERRO que de um sistema de Go/Back de um Pokemon Tibia que eu achei. Este é o unico erro que esta no meu server, porfavor amigos me ajuda ae, VALENDO +REP! Erro quando coloco pra FORA da pokebola o pokémon. [13/04/2012 13:59:18] [Error - Action Interface] [13/04/2012 13:59:18] data/actions/scripts/goback.lua:onUse [13/04/2012 13:59:18] Description: [13/04/2012 13:59:18] (luaDoItemSetAttribute) Item not found [13/04/2012 13:59:18] [Error - Action Interface] [13/04/2012 13:59:18] data/actions/scripts/goback.lua:onUse [13/04/2012 13:59:18] Description: [13/04/2012 13:59:18] (luaDoTransformItem) Item not found [13/04/2012 13:59:18] [Error - Action Interface] [13/04/2012 13:59:18] data/actions/scripts/goback.lua:onUse [13/04/2012 13:59:18] Description: [13/04/2012 13:59:18] (luaDoItemSetAttribute) Item not found Erro quando coloco pra DENTRO da pokebola o pokémon. [13/04/2012 13:59:18] [Error - Action Interface] [13/04/2012 13:59:18] data/actions/scripts/goback.lua:onUse [13/04/2012 13:59:18] Description: [13/04/2012 13:59:18] (luaDoItemSetAttribute) Item not found [13/04/2012 13:59:30] [Error - Action Interface] [13/04/2012 13:59:30] data/actions/scripts/goback.lua:onUse [13/04/2012 13:59:30] Description: [13/04/2012 13:59:30] (luaDoTransformItem) Item not found [13/04/2012 13:59:30] [Error - Action Interface] [13/04/2012 13:59:30] data/actions/scripts/goback.lua:onUse [13/04/2012 13:59:30] Description: [13/04/2012 13:59:30] (luaDoItemSetAttribute) Item not found Arquivo: GoBack.lua function onUse(cid, item, fromPosition, itemEx, toPosition) function getPokemonMaxLife(name) local file = io.open('data/monster/monsters.xml','r') local arquivo = file:read(-1):lower():match('') file:close() local data = io.open('data/monster/'..(arquivo or ''),'r') if not data then return 100 end local maximo = data:read(-1):match('max%s*=%s*"(%d+)"') data:close() return maximo end ----- Config ----- local MaximoSummon = 1 local nome1 = getItemName(item.uid) local nome = nome1:match('(.-) Pokeball') local summons = getCreatureSummons(cid) local action_id = getItemAttribute(item.uid, "aid") ------ Config ----- local summons = getCreatureSummons(cid) if item.uid ~= getPlayerSlotItem(cid, CONST_SLOT_AMMO).uid then doPlayerSendCancel(cid, "Coloque no slot certo!.") return TRUE end if getTilePzInfo(getCreaturePosition(cid)) then return doPlayerSendCancel(cid, "You can't use pokeball in Protection Zones.") end if getItemAttribute(item.uid,"level") >= getPlayerLevel(cid) then doPlayerSendCancel(cid, "You dont have level to use.") return TRUE end if(table.maxn(summons) < MaximoSummon) then -- no summons creature = doSummonCreature(nome, getCreaturePosition(cid)) doConvinceCreature(cid, creature) local hp = getCreatureHealth(getCreatureSummons(cid)[1]) doItemSetAttribute(getPlayerSlotItem(cid,8).uid, "aid", hp) doPlayerSay(cid, "Go,"..nome.."", TALKTYPE_SAY) registerCreatureEvent(cid, "PlayerPokeDeath") registerCreatureEvent(creature, "DiePoke") doSendMagicEffect(getCreaturePosition(creature), 188) doTransformItem(getPlayerSlotItem(cid,8).uid, 2532, 1) doItemSetAttribute(getPlayerSlotItem(cid,8).uid,"name",""..nome.." Pokeball") if action_id ~= 0 then doCreatureAddHealth(creature, -(tonumber(getPokemonMaxLife(nome) - action_id))) else doCreatureAddHealth(creature, getPokemonMaxLife(nome)) end else for _, pid in ipairs(summons) do if (table.maxn(summons) >= 1) then doItemSetAttribute(item.uid, "aid", getCreatureHealth(summons[1])) doSendMagicEffect(getCreaturePosition(creature), 188) doPlayerSay(cid, "Back,"..nome.."", TALKTYPE_SAY) doRemoveCreature(pid) doTransformItem(getPlayerSlotItem(cid,8).uid, 2532, 1) doItemSetAttribute(getPlayerSlotItem(cid,8).uid,"name", nome .." Pokeball") end end end return true end Valendo +REP Poxa galera, preciso muuuuuito da ajuda de vcs AJUDA ALGUEM AI, PORFAVOR VALENDO +REP
  16. Xtibianos, queria saber se há uma função que me retorne a cor do char, e se houver qual a sua sintaxe. Ex: getPlayerColor(cid,detail) desde já, Obrigado!
  17. O que são tabelas? R: São estruturas multidimensionais que permitem o armazenamento de vários dados. Como declarar uma tabela? R : local tabela = {} Como faz para adicionar valores na tabela? R: Para adicionar um valor na tabela, devemos inserir nossos dados entre os colchetes{} local tabela = {"skydangerous",15} Como inserir um dado na tabela? R: Para acessar um dado na tabela e fácil, cada dado adiciona tem uma posição. local tabela = {} tabela[1] = "skydangerous" tabela[2] = 15 local posicao1,posicao2 = tabela[1],tabela[2] print(posicao1,posicao2) Print: skydangerous 15 Podemos perceber que adicionamos dois conteúdos em nossa tabela. Fácil não? Como acessar a tabela? R: Para acessar os dados contido na tabela, é muito simples, basta sabermos a posição que ela se encontra em nossa tabela e indicarmos ela. local tabela = {"skydangerous",15} print(tabela[1],tabela[2]) Pronto, é muito simples, desse jeito que você irá acessar as duas posições na tabela e mostrar na tela. Print: skydangerous 15 Funções Básicas table.concat() R: Está função concatena os dados da tabela, ou seja junta tudo local tabela = {"skydangerous",15} local concatena = table.concat(tabela) print(concatena) Print: skydangerous15 Podemos perceber que ao mostrar na tela, os dados se juntaram, é isso que a função faz. table.insert() R: Insere um valor na tabela, porém local tabela = {"skydangerous",15} table.insert(tabela,"tibia") print (tabela[3]) Print: skydangerous 15 tibia Sem a Função: skydangerous 15 Podemos perceber que ao mostrar na tela, ele imprimirá um valor que não está na tabela, porém foi inserido na posição a seguir do 15. É possível também adicionar valores em qualquer posições. local tabela = {"skydangerous",15} table.insert(tabela,1,"tibia") print (tabela[1]) Percebe-se que adicionamos um valor na posição 1, passando os demais valores declarados em uma posição a mais. Print: tibia skydangerous 15 Sem a Função: skydangerous 15 table.maxn() R:Essa função retorna o maior índice positivos da tabela.Caso ela não possuir nada retorna nulo(0) local tabela = {"skydangerous",15} print(table.maxn(tabela)) Print: 2 Fim do Tutorial. Ele está bem explicado e detalhado.
×
×
  • Criar Novo...