Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 10/25/19 em todas áreas

  1. 4 pontos
    Push Cruzado Como prometido, hoje eu vou ensinar como implementar o push cruzado. Este tutorial é feito especificamente para a versão 2 do OTX, porem, devido a simplicidade do código (sério, é muito simples, você vai se surpreender), acredito que possa ser implementado em qualquer source code disponível atualmente. Antes do tutorial vou falar sobre como surgiu o "sistema" e de como o mesmo ficou popular entre os jogadores de Baiak, então senta que lá vem história. Se você não tem interesse na história de como surgiu e se popularizou e só está aqui pelo tutorial de como implementar, pule para o final do tópico. História Familiar para alguns e desconhecido para muitos outros, o que afinal é esse tal de push cruzado que alguns tanto falam? Para entender como surgiu, teremos que voltar alguns anos no tempo, em uma época que OTX não existia e o TFS 1.x ainda era um sonho distante, época essa em que a maioria dos servidores com protocolo 8.60 utilizavam como engine a velha TFS 0.3.6. Foi neste período que alguns jogadores de enforced descobriram este bug, isso mesmo que você leu, o push cruzado é na verdade um bug! Mas calma! é apenas um bug inofensivo, mesmo assim, não deixa de ser um bug, que hoje em dia é divulgado como feature nos servidores. Antes de entrar mais a fundo nessa questão, vou terminar de explicar como ele foi descoberto, como ele pode ser utilizado e as vantagens que ele concede aos jogadores que sabem como utiliza-lo. Nos saudosos dias em que o protocolo 8.60 estava no seu auge na comunidade OpenTibia (70% da Otserv List era composta por servidores 8.60), poucos tinham acesso para a até então recente TFS 0.4 (nesta época TFS 0.4 não era pública, e só podia ser obtida doando uma quantia aos desenvolvedores). Até então, era raro encontrar servidores rodando com TFS 0.4, mais raro ainda um servidor enforced/war, mas assim como uma agulha no palheiro, ele estava lá, Mega-War, o que eu acredito que tenha sido o primeiro servidor de war 8.60 a usar a recente distro. OTServList em 2011 E foi neste servidor que o push cruzado foi descoberto, por jogadores dedicados a se aperfeiçoarem no PvP, estes foram os primeiros e os que deram origem ao que hoje se conhece como enforcedeiros (jogadores assíduos de servidores de war, com uma habilidade surreal no PvP). Mas algumas questões ficam no ar, TFS 0.4 era realmente recente, porem o protocolo 8.60 já existia há um bom tempo no TFS 0.3, então porque este bug não foi descoberto antes? porque neste servidor em especifico se outros servidores de war 8.60 já existiam? A resposta é: este bug surgiu justamente no TFS 0.4, para ser mais especifico na rev 3777, tanto é que a versão anterior do TFS (0.3) não continha este bug e nas revisões seguintes do TFS 0.4 ele foi corrigido, com isto o push cruzado se "perdeu", existindo somente no TFS 0.4 (Rev 3777). Devido a isto, os servidores privados de enforced (onde se encontra a maioria dos enforcedeiros hoje em dia) e alguns servidores baiaks utilizam TFS 0.4 até hoje, mesmo existindo opções excelentes em comparação, como TFS 1.x e OTX, tudo devido a este bugzinho que se popularizou muito entre alguns jogadores ao longo do anos. Mas como o push cruzado se popularizou tanto a ponto de chegar ao que é hoje? Os enforcedeiros tinham um estilo único de PvP, fazendo jogadas que para muitos até hoje não é possível sem o uso de bot. Com o tempo, estes jogadores foram gravando e postando vídeos no Youtube de suas jogadas, para muitos dos que assistiam, tal nível de habilidade só podia ser atingido com auxílio do bot, os mais humildes, aqueles que aceitavam que aquilo era possível sem o uso de bot, entravam nestes servidores de war com a intenção de aprender, não só o push cruzado, mas o push a distancia, a velocidade para realizar jogadas e a visão de jogo num geral. Alguns dos vídeos antigos da época do Mega-War. Neste ultimo vídeo em especial, é possivel ver o push cruzado sendo realizado por volta de 1:22 e 3:20 de vídeo. No inicio de 2013, sem motivo aparente o Mega-War simplesmente fechou. Mas onde há demanda, sempre haverá oferta, com isso surge o ainda mais famoso Total-War. O Mega-War foi o inicio para essas estrelas do PvP, mas foi no Total-War que a coisa realmente cresceu. Com cada vez mais vídeos de jogadores exibindo jogadas espetaculares, mais aparecia os chamados novatos (jogadores que admiravam os enforcedeiros e tinham interesse em aprender e praticar as técnicas usadas), na época do Mega-War, dava pra contar nos dedos a quantidade de pessoas que sabiam fazer o push cruzado, afinal, era uma coisa totalmente nova, com poucos meses do Total-War online esse numero cresceu exponencialmente, o servidor ficou no seu auge por cerca de 1 ano e alguns meses. Alguns vídeos de enforcedeiros no Total-War (incluindo o meu ?). Poucos sabem disso, mas eu era GM no Total-War, ajudei no servidor por alguns meses até ter um desentendimento com o dono, nesse momento eu decidi abrir o meu próprio servidor enforced. Eu acompanho a comunidade brasileira de OpenTibia desde 2010, mas nunca tinha levado a sério a ideia de ter meu próprio servidor até então, foi nessa época que eu criei a minha conta aqui no TibiaKing, pois o antigo XTibia (lugar onde eu conheci o que era OpenTibia) havia fechado. No ano de 2014 encontrar as sources do TFS 0.4 já não era mais problema, estavam por todo lugar. Eu peguei um datapack com mapa de venore (assim como o Mega e Total-War) e coloquei online, nesse período eu comecei a estudar a fundo como funcionava OTServers. Devido a testes de diversas versões diferentes de source, já na época eu percebi que push cruzado era algo exclusivo do TFS 0.4 (isso explica porque o dono do Total-War se recusava a fazer um upgrade), era também tempo do inicio do repositório do OTX que se mostrava promissor em relação ao TFS 0.4. Cerca de 1 ano depois da abertura do meu servidor eu decidi tentar adicionar o cruzado nas sources do OTX2, uma pessoa dedicada com um objetivo, mas sem saber de nada, por semanas eu comparei o código de ambas as sources, arquivo por arquivo (haja dedicação), e por fim consegui adicionar ao OTX (quando eu descobri o que era, eu confesso que de imediato me arrependi de ter gasto tanto tempo com isso). Com essa alteração eu resetei e reinaugurei meu servidor, o servidor era chamado de Ultra-War, mas ficou mais conhecido por todos como Sv2 porque o servidor era hosteado em 3 locais diferentes, e 1 dos locais era aqui no Brasil, este era conhecido como Sv2. O Ultra-War foi o primeiro servidor a ter o push cruzado sem utilizar do TFS 0.4, na época OTX já estava se tornando muito popular pois dava uma sensação de ping menor ao jogar, rodando o servidor com OTX e em 3 hosts diferentes, os poucos players que sobraram no Total-War migraram para o Ultra-War, e assim como o Total-War ocupou o lugar do Mega-War no seu fim, o Sv2 passou a segurar esta tocha. Alem dos já antigos enforcedeiros, jogadores novos não paravam de vir de todos os lugares, muitos deles quando aprendiam e aperfeiçoavam as técnicas iam logo aplicar em servidores UP Level (principalmente Baiaks), foi ai que o push cruzado se popularizou fora do enforced, com os jogadores pedindo aos administradores para adicionarem algo que eles sequer tinham noção do que era. Vídeos do jogador que eu acredito ser o maior responsável pela popularidade do PvP no estilo enforced nos Baiaks. Enfim... a história acaba por aqui (até porque ficou longa pra kct), no final das contas a história não foi sobre o push cruzado em si, mas sobre o enforced e os enforcedeiros num geral. Agora vamos para a parte que todos querem ver. O que é e como utilizar O push cruzado nada mais é do que permitir que o jogador empurre (push) outros jogadores e criaturas enquanto se movimenta ao mesmo tempo, basicamente é apenas isso. O que isso proporciona ao jogador, ai já é outra historia (brincadeira, depois dessa ultima, chega de história), isso permite ao jogador executar jogadas que sem o push cruzado seriam executadas de maneira bem mais lenta, e até mesmo jogadas que seriam impossíveis de serem realizadas sem o uso do famoso cruzado. Veja abaixo alguns exemplos. Tutorial Como eu mencionei antes, o push cruzado é na verdade um bug, caso implementado, isso possibilita aos jogadores realizarem jogadas que sem ele seriam impossíveis. Se mesmo ciente disto você deseja seguir em frente, basta seguir os passos abaixo. Pronto, com isso você pode habilitar ou desabilitar o push cruzado diretamente pelo config.lua, sem a necessidade de recompilar a source. Créditos Me, myself and I.
  2. (Resolvido)Soft e Firewalker Boots.

    DdJs e 2 outros reagiu a Vodkart por uma resposta no tópico

    3 pontos
    para que usar 2 códigos se pode fazer somente 1? usa assim: nome do seu script.lua local ret = { [10021] = {id = 6132, price = 10000, effect = CONST_ME_FIREWORK_BLUE}, [10022] = {id = 9933, price = 20000, effect = CONST_ME_FIREWORK_RED} } function onUse(cid, item, fromPosition, itemEx, toPosition) local t = ret[item.itemid] if not t then return true elseif not doPlayerRemoveMoney(cid, t.price) then doPlayerSendCancel(cid, "You need "..t.price.." golds.") return true end local pos = getThingPos(cid) doSendMagicEffect(pos, t.effect) doTransformItem(item.uid, t.id) return true end tag: <action itemid="10021;10022" event="script" value="nome do seu script.lua"/> ---------------------- OBS: não dá para ver o vídeo.
  3. (Resolvido)[TFS1.2] Vortex Cults De Carlin

    Cat e um outro reagiu a Mathias Kenfi por uma resposta no tópico

    2 pontos
    ERROR na linha 27 portal2:remove(1) end, 1*60*1000, 26394, 1, posCorpo) Está apenas faltando um () portal2:remove(1) end, (1*60*1000, 26394, 1, posCorpo)
  4. (Resolvido)Botão para Whatsapp

    kikomellox1 e um outro reagiu a luanluciano93 por uma resposta no tópico

    2 pontos
    Fez o cursinho gratuito de 10 min de HTML e já quer vir aqui tirar dinheiro dos leigos. Chegou a chamar um membro de burro em outro tópico só porque ele escreveu uma palavra em inglês errada. Você deve estar no lugar errado, aqui é um fórum onde o pessoal se ajuda e ninguém ganha nada em troca, então se não quer ajudar não atrapalhe. Já que você é tão gênio, produza conteúdo e poste.
  5. (Resolvido)Botão para Whatsapp

    kikomellox1 e um outro reagiu a Pedro. por uma resposta no tópico

    2 pontos
    CSS .zaptable { position: absolute; margin-left: 60%; text-align: left; background: #01010185; border: 2px solid #8595bb; padding: 9px 8px 6px 47px; border-radius: 0 0 10px 10px; color: #fff; margin-top: -2px; font: 400 9pt Verdana, Arial, Times New Roman, sans-serif; box-shadow: 6px 6px 50px 2px #23d100; z-index: 10000; transition: all 600ms ease-out } .zaptable:hover { box-shadow: 2px 2px 18px 1px #03ff0d; border: 2px solid #03ff0d; background: #343f58; transition: all 500ms ease-out; z-index: 10000; cursor: pointer } .zaptable img { position: absolute; margin-left: -47px; margin-top: -8px; width: 43px } .zaptable small { transition: all 500ms ease-out; display: none } .zaptable:hover small { transition: all 500ms ease-out; display: block } DIV <a href="https://chat.whatsapp.com/FFd7zZAdq5KHt7x6qd4Dr9" target="_blank"> <div class="zaptable"> <div class="zapbox"> <img src="./layouts/tibiacom/images/themeboxes/whats.png"><strong>Whatsapp Group: </strong>Nome do Servidor<br> <strong>Limit of members </strong> 200 <small style="color: #00c51d;text-shadow: 1px 1px black;text-align:center;">Click here to enter!</small> </div> </div> </a>
  6. 1 ponto
    Classic Yurots V 8.60 Eu acompanhei de perto o desenvolvimento deste servidor e sabia que sairia coisa boa dali, mas só quando obtive acesso aos arquivos que pude entender a dimensão do negocio, sendo assim, eu posso afirmar que este é um dos se não o melhor datapack baseado no antigo YurOTS. O datapack está limpo, você não vai encontrar um script em qualquer uma das pastas que não esteja em uso no servidor, alem disto muito tempo foi gasto reescrevendo e revisando os scripts do servidor para garantir máxima performance. Os mais novos em OpenTibia talvez não saibam, mas os famosos Baiaks e Styllers de hoje em dia foram baseados neste mapinha que teve seu inicio já na versão 7.5 e seu declínio nas versões 8.4 onde foi visto pela ultima vez devido ao surgimento de derivados do mesmo (Baiak e Styller). Devido ao fato dos mapas Baiak e Styller serem derivados do YurOTS, se você tem um projeto de mapa Baiak ou Styller, este é um excelente datapack para você usar como base. Por que o servidor está sendo postado? Este servidor foi desenvolvido ao longo de 2 anos pelo Wesley (conhecido aqui no fórum como @KOLISAO), alguns meses atrás o servidor foi finalizado e colocado online, embora hoje em dia, sem contato com times de jogadores, é difícil popular um servidor novo e sem nome logo na abertura, com isso a inauguração não foi como esperado e conseguiu uma média de apenas 30 jogadores. Frustado por 2 anos de muito trabalho não dar o resultado esperado, ele decidiu desistir do servidor, foi então que eu fiz uma proposta em troca do servidor e obtive acesso ao mesmo. O que eu não sabia na época era que outras duas pessoas alem de mim tiveram acesso a todos os arquivos, uma dessas pessoas é um amigo do próprio Wesley na vida real, ele conversou com este amigo e deletou os arquivos do computador dele. A segunda pessoa em questão, eu não tenho certeza de como obteve estes arquivos, mas ele atualmente está vendendo estes arquivos sem autorização. Quando fiquei ciente disto, entrei em contato com o Wesley e o informei sobre o que estava acontecendo, ele ficou surpreso e revoltado por alguém estar lucrando em cima de seus esforços. Neste momento pedi permissão a ele para postar o servidor aqui no fórum, e ele me concedeu. Informações sobre o servidor Como dito anteriormente, muito tempo foi gasto neste servidor e tudo foi feito com o maior cuidado possivel. Vou deixar aqui as informações sobre o que contem no servidor, informações que foram divulgadas pelo próprio Wesley na data de inauguração. Vídeo com algumas Quests do servidor Outras informações podem ser encontradas no tópico de show-off do período em que o servidor ainda estava em desenvolvimento. Extra + Créditos Juntamente com o servidor estarei postando a source e o site do mesmo, porem o site será postado em um tópico diferente devido a esta não ser a área correta do fórum para isso. A source do servidor é OTX2, foram feitas pequenas modificações na source para melhor formatação em partes do datapack, como QuestLog e outros. Edit 29/11 Além disto, a source também possui 2 sistemas muito procurados que até o presente momentos não eram públicos, sendo estes Push Cruzado e Cast com Setas. Ambos os sistemas já estão instalados na source, porem futuramente irei postar ambos os códigos juntamente com tutorial de instalação para os que quiserem adicionar por si mesmos. Créditos Como já mencionei diversas vezes neste tópico, o responsável pelo desenvolvimento do servidor e site foi o @KOLISAO, portanto todos os créditos nesta parte vão para ele. Eu fui o responsável por adicionar o Push Cruzado na source e fazer uma pequena modificação no Cast com Setas. Obs: quando eu obtive acesso aos arquivos o Cast com Setas já estava instalado na source, eu não tenho informação se o código foi desenvolvido por ele ou por um terceiro. Links para Download Servidor Download - Scan Source Download - Scan Distro compilada para Windows 32x - TheOTXServer.exe - Scan 64x - TheOTXServer_64.exe - Scan DLLs dll.zip - Scan Site
  7. Tutorial - Push cruzado e sua história

    ITALOx reagiu a Celulose por uma resposta no tópico

    1 ponto
    Pra quem quiser ativar pela config.lua bool Game::playerMove(uint32_t playerId, Direction dir) { Player* player = getPlayerByID(playerId); if(!player || player->isRemoved()) return false; player->setIdleTime(0); if(player->getNoMove()) { player->sendCancelWalk(); return false; } std::list<Direction> dirs; dirs.push_back(dir); if(g_config.getBool(ConfigManager::PUSH_CRUZADO)) { player->startAutoWalk(dirs); } else { player->setNextWalkActionTask(NULL); player->startAutoWalk(dirs); } return true; } configmanager.cpp m_confBool[PUSH_CRUZADO] = getGlobalBool("PushCruzado", true); configmanager.h PUSH_CRUZADO, Conf.lua PushCruzado = true @WooX quiser atualizar bb
  8. Zelettar Soft (Tibia 6.0)

    Polguilo reagiu a KingFlyre por uma resposta no tópico

    1 ponto
    Olá, estava procurando algo interessante/novo que não seja que tenha toda dia/semana/mês aqui no fórum, então foi ai que eu encontrei esse "Zelettar Soft" espero que vocês gostem assim como eu gostei (achei legal) Bom aproveito do Server! Informações abaixo. Zelettar Soft Server Server Info Exclusiva versão 6.0 Item da versão 6.0 Mapa igual do Tibia Global 6.0 (bem antigo!) Outfit pode ser mudada! Monstros da versão 6.0! Server Download -> Link aqui Scan -> Link aqui Cliente 6.0 Download -> Link aqui Scan -> Link aqui Créditos Criador da equipe (quem teve a ideia): Isack Colaborador e divulgador: Lucas Tibiano Spriters: Herick Santos e Christian (2013) Zelletar Soft, Todos os direitos Reservado. KingFlyre
  9. Patterns

    LeoTK reagiu a MaXwEllDeN por uma resposta no tópico

    1 ponto
    Pattern Pattern ("Padrão" em pt-br) é uma poderosa funcionalidade para manipulação de strings (caso você não saiba o que é uma "string", busque saber antes de continuar, recomendo também ter um certo domínio sobre a biblioteca string), e usada para buscar um padrão de texto pré-definido. Porque aprender ? Possui recursos indispensáveis quando se precisa trabalhar com strings, alta aplicabilidade em scripts direcionados a otserv (talkactions), não que se vá usar isso a todo o momento, mas é altamente recomendado que se saiba trabalhar com patterns, é extremamente útil as vezes. Funções Algumas funções da biblioteca padrão string que aceitam pattern em seus parâmetros: string.find(string, pattern) – Procura a primeira instância da pattern na string string.gfind(string, pattern) – Quando for chamada repetidamente, retorna cada instância da pattern na string string.gsub(string, pattern, replace) – Retorna uma string em que todas as instâncias da pattern foram substituidas por replace string.match(string, pattern, init) – Retorna uma lista de ocorrências da pattern na string, começando em init (1 significa o primeiro caractere da string, 2 o segundo, assim por diante) Conjuntos Quando se constrói uma pattern, se utiliza alguns caracteres, cada um representando um conjunto diferente: (onde "x" não é um caractere mágico ^$()%.[]*+-?) → Representa o caractere "x" mesmo; . → Representa todos os caracteres; %a → Representa todas as letras; %c → Representa todos os caracteres de controle; %d → Representa todos os dígitos; %l → Representa todas as letras minusculas; %p → Representa todos os caracteres de pontuação; %s → Representa todos os caracteres de espaço; %u → Representa todas as letras maiúsculas; %w → Representa todos os caracteres alfanuméricos; %x → Representa todos os dígitos hexadecimais; %z → Representa o caractere com a representação do 0 (zero). Ao usar zeros na pattern ela não irá funciona, use esta nesse caso; Ao usar letra maiúscula, isso faz representar o contrário (Exemplo: %A → Representa tudo que não for letras; %D → Representa tudo que não for um digito; assim por diante...). Como dito anteriormente, para se criar uma pattern é necessário utilizar esses conjuntos, uma pattern é feita de uma sequência desses conjuntos. Se você quisesse criar uma pattern para encontrar uma certa string em um texto, por exemplo, para encontrar os números da string "23otserv", você teria que usar esta pattern "%d%dotserv", assim você estaria definindo que quer os numeros que estão ao lado da palavra ‘otserv’. Mas e se tivesse que encontrar um numero com 10 "casas" ? Por isso existe os modificadores, para evitar essa repetição desnecessária. Modificadores Servem principalmente para poupar serviço e são quatro, entenda 'x' como sendo algum conjunto (%a, %c, %d, ...): x* → Retorna 0 ou mais repetições do conjunto x. Sempre retornará a maior cadeia possível encontrada; x+ → Retorna 1 ou mais repetições do conjunto x. Sempre retornará a maior cadeia possível encontrada; x- → Retorna 0 ou mais repetições do conjunto x. Sempre retornará a menor cadeia possível encontrada; x? → Retorna 0 ou 1 ocorrência de x; Elementos especiais Existe também quatro elementos especiais: %n → Sendo n um numero entre 1 e 9, busca a enésima captura (apenas vi sendo usada na função string.gsub); %bxy → Procura uma string que inicia com x e termina com y; ^ → Quando está no começo da pattern, força a pattern a ser encontrada no começo da string; $ → Quando está no final da pattern, força a pattern a ser encontrada no fim da string; Nota: Se ^ ou $ estiverem em outros lugares da pattern, não fazem nada, apenas representam eles mesmos. Construindo uma pattern Vamos construir algumas patterns com os elementos citados acima. Primeiro alguns exemplos e depois uma explicação mais detalhada de cada elemento da pattern: String para as patterns: "Exemplo lua de pattern lua feito em lua" exemplos toscos, a gente se vê por aqui Pattern: (%a+) lua Capturaria: Exemplo lua de pattern lua feito em lua Ele só retornará o primeiro caso que corresponder com a pattern. Agora, ao invés de usar o "%a" fosse usado o "." (que captura tudo), aconteceria isso: Pattern: (.+) lua Capturaria: Exemplo lua de pattern lua feito em lua Como "%a" captura apenas letras e não o "espaço", foi por isso que no primeiro exemplo só capturou a palavra "Exemplo" e no segundo exemplo, como foi usado o "." que captura tudo, capturou uma parte maior (ai que vêm a parte do modificador) por causa do modificador "+" que sempre vai buscar a maior cadeia possivel, agora veja um exemplo usando o "-": Pattern: (.-) lua Capturaria: Exemplo lua de pattern lua feito em lua O modificador "-", como dito anteriormente, captura a menor cadeia e por isso capturaria apenas o "Exemplo". Todos os modificadores são importantes. Um exemplo maior: Pattern: (%a+) lua (.-) lua (.+) Capturaria: Exemplo lua de pattern lua feito em lua Para quem não entendeu Explicação passo a passo: (%d+) Captura → O parenteses define que você quer que retorne essa captura. Conjunto → No caso é o de digitos. Modificador → No caso mostra que é para obter a maior cadeia possivel com 1 ou mais repetições do conjunto. Um exemplo mais avançado Agora usando de exemplo a pattern da função string.trim, que remove os espaços em branco do lado esquerdo e direito da string. function string.trim(str) -- Function by Colandus return (string.gsub(str, "^%s*(.-)%s*$", "%1")) end string.gsub(str, "^%s*(.-)%s*$", "%1") str → Uma string qualquer; ^ → Força o começo da pattern ser encontrada no começo de str; %s* → Conjunto de espaços, podendo ter 0 ou mais repetições; (.-) → A captura principal, a que vai ser retornada, podendo ser digitos, letras, espaço, etc; $ → Força o final da pattern ser encontrada no fim de str; %1 → Retorna a 1ª captura da pattern e usa como parametro da função (Esse é um dos elementos especiais, %n); Dessa forma será removido os espaços apenas no começo e no fim da string ! Complemento Depois de dominar e entender como funciona as patterns, vamos aplica-las em funções, vou mostrar um exemplo de cada função (as que foram citadas no começo). string.find: init, end, case1, case2 = string.find("minha string123", "(%a+) (.+)") init → Onde inicia a captura encontrada (nesse caso, init = 1); end → Onde termina a captura encontrada (end = 15); case1 → Primeira captura que equivale a pattern (%a+) (case1 = minha); case2 → Segunda captura que equivale a pattern (.+) (case2 = string123); string.gfind: for occ in string.gfind("a1a2a3a4a5", "(%a%d)") do print(occ) end occ → Terá um valor para cada instância da pattern (%a%d) encontrada, então irá printar a1, a2, a3, a4 e a5. string.match: case1, case2 = string.match("Eu tenho 50 reais", "(%d+) (%a+)") case1 → Primeira captura que equivale a pattern (%d+) (case1 = 50); case2 → Segunda captura que equivale a pattern (%a+) (case2 = reais); Referência http://www.lua.org/manual/5.1/pt/manual.html#5.4.1 http://lua-users.org/wiki/PatternsTutorial Então é isso, espero ter sido o mais claro possivel, Qualquer dúvida, erro ou sugestão, poste !
  10. -1 pontos
    Em vez de ficar chorando tenta você mesmo. Vou baixar aqui essa pasta só pq estou atoa e vou testar.
Líderes está configurado para São Paulo/GMT-03:00

Informação Importante

Confirmação de Termo