MotoBoy 0 #1 Posted December 31, 2008 (edited) Dae Pessoal =D beleza? eu precisei de algumas funções de strings ara criar um sistema.. e eu gamei nas strings =O~~ vocês verão como elas são "gostosas" de se aprender =P vim passá-las para vocês: vamos começar com as funções, depois explico elas =P string.byte ("frase/palavra", posição) retorna o valor numérico de algum caractere que se encontra em "frase/palavra", onde a posição em que o caractere está é "posição" Exemplo: string.byte ("MotoBoy Rula~~.", 3) o terceiro (3) caractere é "t", a função retornará o valor numérico do "t". Lembrando que você pode contar da esquerda pra direita ou direita para esquerda: da esquerda para direita, coloque numeros positivos (MotoBoy, 3 -> retorna "t") da direita para esquerda números negativos (MotoBoy, -3 -> retornará "B") Mais Tiu.. E Se Eu Precisar Da Frase Toda? dai agente tem que definir onde a frase começa e ondele ela acaba, como no póximo item: string.sub ("Frase/Palavra",começo,final) você define um "pedaço" da frase/palavra, dizendo onde esse "pedaço" começa e aonde ele acaba.. Exemplo: string.sub ("MotoBoy Rula~~.", 3, 7) coemeça em 3 "t" e termina em 7 "y", logo essa função vai retornar "toBoy" Lembrando que a regra de esquerda -> direita e direita -> esquerda continua valendo: digamos que eu queira pegar "Boy Rula", daí eu uso: string.sub ("MotoBoy Rula~~.", 5, -4) sendo que 5 = "B" e -4 = "a" de Rula.. lembrando que os caracteres "~~" e o ponto final "." também contam! Se VocÊ Quiser A Frase Toda, o Começo Dela É 1 e o Fim É -1 Que que isso tem a ver com o string.byte????? Tudo.. vamos usar o exmplo de cima, onde eu pego o "Boy Rula" e gravar o valor numérico disso em um storage value.. frase = [b]string.sub ("MotoBoy Rula~~.", 5, -4) --[/b]isso retornará "Boy Rula" [size=3]valor_numerico = [b]string.byte ("MotoBoy Rula~~.", frase) --[/b]no caso, a posição, será [b]"entre 5 e -4"[/b] como definido no [b]"frase"[/b].[/size] [size=3]setPlayerStorageValue (cid, 1234, valor_numerico) --vai adicionar ao Storage [b]1234[/b] do player, o valor que foi encontrado no nosso [b]string.byte[/b]![/size] O.o Mais e depois para eu destransformar o storage do player para saber qual "palavra" está lá? daí agente usa outra função que vai ser explicada agora =P string.char("número") No caso, "número" é o valor numérico que você quer transformar para letras.. Lembra que agente gravou o valor de "Boy Rula" no storage value 1234 do player? Vamos pegar ele de volta, e fazer o player dizer qual a palavra que está no storage dele.. palavra = getPlayerStorageValue (cid, 1234) [size=3]caracteres = string.char (palavra)[/size] [size=3]doPlayerSay (cid, "A Palavra Do Meu Storage É '..caracteres..'.", 22)[/size] string.len("palavra/frase") No caso, "palavra/frase" é a string que você colocará, isso retornará o número de caracteres (letras e números) que tem em "palavra/frase". Exemplo: string.len ("MotoBoy Rula~~.") Isso retornará 14, já que MotoBoy Rula~~. Tem 14 caracteres =P. Utilização: farei um exemplo usando string.sub e o"for" ofazendo um comando que mandará um texto para o player, letra por letra (como a fala dos jogadores no GunBound). [color=black][font=Verdana][size=3]Num = string.len ("’..param..’")[/size][/font][/color] [color=black][font=Verdana][size=3]Pos = getPlayerPos (Cid)[/size][/font][/color] [color=black][font=Verdana][size=3]For i = 1, num do[/size][/font][/color] [color=black][font=Verdana][size=3]Sub = string.sub ("’..param..’ ", 1, i)[/size][/font][/color] [color=black][font=Verdana][size=3]doSendAnimatedText (pos, "’..sub..’ ", TEXTCOLOR_RED)[/size][/font][/color] [color=black][font=Verdana][size=3]break[/size][/font][/color] [color=black][font=Verdana][size=3]end[/size][/font][/color] [size=3][color=black][font=Verdana]-- o [/font][/color][b][color=red][font=Verdana]"i"[/font][/color][/b][color=black][font=Verdana]significa todos os números entre 1 e o ultimo número da [/font][/color][b][color=red][font=Verdana]"palavra/frase" [/font][/color][/b][color=black][font=Verdana], ele mandará o texto entre as posições (1, 1) (1, 2) (1, 3) (1, 4) etc..[/font][/color][/size] string.lower("palavra/frase") e string.upper("palavra/frase") Aqui, o string.lower transforma o "palavra/frase" em letras minúsculas, e o string.upper, em letras maiúsculas.. Exemplo: string.upper ("MotoBoy Rula~~.") Retornará: "MOTOBOY RULA~~." Utilização: farei a mesma função do ultimo exemplo, porémd e um modo que o player só recebera o “animatedText” em letras minúsculas.. é só adicionar o string.lower em uma variável.. olhem: [color=black][font=Verdana][size=3]Num = string.len ("’..param..’")[/size][/font][/color] [color=black][font=Verdana][size=3]Pos = getPlayerPos (Cid)[/size][/font][/color] [color=red][font=Verdana][size=3]Mensagem = string.lower ("’..param..’")[/size][/font][/color] [color=black][font=Verdana][size=3]For i = 1, num do[/size][/font][/color] [size=3][color=black][font=Verdana]Sub = string.sub ([/font][/color][color=red][font=Verdana]"’..Mensagem..’ [/font][/color][color=black][font=Verdana]", 1, i)[/font][/color][/size] [size=3][color=black][font=Verdana]doSendAnimatedText (pos, "[/font][/color][color=red][font=Verdana]’..sub..’[/font][/color][color=black][font=Verdana] ", TEXTCOLOR_RED)[/font][/color][/size] [color=black][font=Verdana][size=3]break[/size][/font][/color] [color=black][font=Verdana][size=3]end[/size][/font][/color] [size=3][color=black][font=Verdana]-- o [/font][/color][b][color=red][font=Verdana]"i"[/font][/color][/b][color=black][font=Verdana]significa todos os números entre 1 e o ultimo número da [/font][/color][b][color=red][font=Verdana]"palavra/frase" [/font][/color][/b][color=black][font=Verdana], ele mandará o texto entre as posições (1, 1) (1, 2) (1, 3) (1, 4) etc..[/font][/color][/size] preste muita atenção nas partes em vermelho, pois são as alterações que eu fiz ao exemplo anterior à este. Para que o texto só venha em maiúsculas, só trocar o string.lower por string.upper =P string.reverse("palavra/frase") Minha preferida... ela retorna a "palavra/frase" em uma ordem reversa. Não muito útil.. mais é legal para descontrair um pouco ^^ Exemplo: string.reverse ("MotoBoy Rula~~.") Isso retornará “.~~aluR yoBotoM” sahashuasau =P acho que nem precisa ter “como utilizar”.. já que isso depende muito da imaginação de cada um =D string.rep("palavra/frase", vezes) isso repete a "palavra/frase", por "vezes" vezes Exemplo: string.rep ("MotoBoy Rula~~.", 3) Isso retornará “MotoBoy Rula~~.MotoBoy Rula~~.MotoBoy Rula~~.” Também vai depender da criatividade.. de “como usar” porque pelomenos pra mim é inútil.. nem sei o pra que usar O.o string.find("palavra/frase", “oque achar”) isso vai achar dentro de "palavra/frase", o "oque achar", e retornar a posição de início e de fim da parte achada Exemplo: string.find ("MotoBoy Rula~~.", Moto) Isso retornará “1, 4” pois “Moto” começa na posição 1 e termina na posição 4 Ou: string.find ("MotoBoy Rula~~.", PoSo) Que retornará “nil” já que “PoSo” não está em “MotoBoy Rula~~”. P.S.: desculpa ter usado seu nome PoSo.. mais é que sua janela no MSN tava aberta.. foi o primeiro nome que vi xD~~ Utilização: farei aqui um exemplo simples, que apenas retornará para se tem ou não o texto procurado no “param” [color=black][font=Verdana][size=3]Find = string.find (“’..param..’”, MotoBoy)[/size][/font][/color] [color=black][font=Verdana][size=3]If find == nil then[/size][/font][/color] [color=black][font=Verdana][size=3]doPlayerSendTextMessage (cid, 22, “desculpe, mais sua mensagem não contém a palavra chave”)[/size][/font][/color] [color=black][font=Verdana][size=3]else[/size][/font][/color] [color=black][font=Verdana][size=3]doPlayerSendTextMessage (cid, 22, “Parabéns! A palavra-chave está a sua frase!”)[/size][/font][/color] string.match("palavra/frase", “oque achar”, “apartir de”) isso vai achar dentro de "palavra/frase", o primeiro "oque achar", à partir do “apartir de” , se “apartir de” não estiver presente, a função procurará desde o inicio da "palavra/frase , porém se não existir "oque achar na "palavra/frase retornará “nil” Exemplo: string.match ("MotoBoy Rula~~.", o) Isso retornará o primero “o”, que no caso é o “o” do “Mo”de “MotoBoy”. Ou: string.match ("MotoBoy Rula~~.", o, 5) Isso retornará o “o” que estiver depois da posição “5”, que no caso é o ultimo “o”, em “Boy”. Utilização: eu quero saber se existe “r” depois da 5º posição. [color=black][font=Verdana] match = string.match (“’..param..’”, r, 5)[/font][/color] [color=black][font=Verdana][size=3]If match == nil then[/size][/font][/color] [color=black][font=Verdana][size=3]doPlayerSendTextMessage (cid, 22, “desculpe, mais a letra requerida está na posição errada“)[/size][/font][/color] [color=black][font=Verdana][size=3]else[/size][/font][/color] [color=black][font=Verdana][size=3]doPlayerSendTextMessage (cid, 22, “Parabéns, você colocou a letra certa à partir da posição certa.. você é espertuuu hein??”)[/size][/font][/color] simples não? =P bom pessoal, eu vou ficando poraqui... se o pessoal se interessar, eu posto outros tutoriais de Strings aqui ^^ essa é a parte que mais me interessou =P espero que gostem! demorei um tempão para fazer T.T Em Breve: Coninuação =P Créditos: 100% MotoBoy Fonte: Manual de Referência de Lua 5.1 Exemplos dados no tutorial são meramente ilustrativos!!!! flws~~!!! p.s.: desculpem alguns erros se houver.. se houver erros, depois eu arrumo! =P Edited January 19, 2009 by MotoBoy editar titulo Share this post Link to post
Mock 32 #2 Posted January 10, 2009 Que bom eu nao sabia o que certas funções dessas fazim agora eu sei. Aprovado Share this post Link to post
ultimatearmor 0 #3 Posted January 10, 2009 adhausudhash titiu motoboy vlws Vc tinha razão O.o As Strings são gostosas O.o (ui) xD Otimo tutorial, como estou começando em programação entendi mt bem xD vlws aew ^^ Share this post Link to post
MotoBoy 0 #4 Posted January 10, 2009 (edited) Valeu Aprovação Mock vl comment ultimate espero que todos realmente gostem pois é muito util nas talkactions pra num precisar usar param em toda talkaction q vc vai fazer.. exemplo om disso é a msgContain que é mais ou menos assim: function msgcontains(txt, str) return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)')) end mais ou menos assim (faz tempo que fiz isso, não lembro bem.. mais pe spo um exemplo) então: if msgContain ('hi') then lembrnado que o %w ali significa "todo digito".. =P flws~~ Edited January 10, 2009 by MotoBoy Share this post Link to post
Undead Slayer 0 #5 Posted January 13, 2009 Ja existe um tuto assim, mas o seu ta mais atual com algumas novas funções LUA String. Muito bom. APROVADO Share this post Link to post
MotoBoy 0 #6 Posted January 14, 2009 o outro tuto é do Jovial xD é bom o tuto.. mais aqui eu mais que expliquei eu deie xmplos de uso.. além de ter vários modos de interaçã entre uma função e outra.. e como você mesmo disse novas funções string LUA ;] que bom que gostou =] flws~~ Share this post Link to post
Eventide 7 #7 Posted January 16, 2009 loco, mas eu não vejo muita utilidade pra mim, meu "tipo" de script é outro.. ;o obs: isso ai é veri gud pra npc e talkaction.. obs²: lembre-se sempre que lua é case sencitive, e isso faz com que string seja ainda mais util! Share this post Link to post
MotoBoy 0 #8 Posted January 19, 2009 obs:isso ai é veri gud pra npc e talkaction.. obs²: lembre-se sempre que lua é case sencitive, e isso faz com que string seja ainda mais util! uhum O.o case sensitive he rox =] porisso eu gosto de usar para a variavel "msg", string.lower =P porque se o player falar com letras maiusculas tambem dá certo O.o saaaauhsa emfim muitas utilidades isso ae.. o topico mais importante nas strings.. ainda pretendo postar a parte avançada, que meche com metatable, banco de dados e a "string.explode" xD rox! flws~~ vlw os comentarios e elogios ^^ Share this post Link to post
Gpwjhlkdcf 21 #9 Posted January 25, 2009 Belo Tutorial =P Bem explicado, mas faltou o string.explode, que eu briguei com ela algum tempo atras. =D Explica como faz pra tirar as aspas do param nas talkactions Demorei pra descobrir... Share this post Link to post
MotoBoy 0 #10 Posted January 27, 2009 String.explode é uma função própria do TFS então não explique ela.. só expliquei as funções Lua mesmo ^^ do lua.org original.. brigado ^^ mais de qlqer jeito, vc jah aprendeu a suar ela pq eu to sabendo flws~~ Share this post Link to post
PoSo 0 #11 Posted January 31, 2009 Hahaha, soh agora fui reparar que eu fui citado ali Valeu MotoBoy, achei oque eu precisava Share this post Link to post
MotoBoy 0 #14 Posted February 2, 2009 para s eusar em talkactions -.- para você usar uma diversidade maior de variaveis.. alémd e simplesmente param, param2, words -.- num taum cansado desses parametros naum? lol se vc num sabe pra que serve uma strign ], vc não é nível médio em scripting... o tutorial eh destinado a scritpers de nivel médio... ta fazendo oque aqui? O.o flws~~ Share this post Link to post
Gpwjhlkdcf 21 #15 Posted February 8, 2009 Rá! Nome do Tópico errado, MotoBoy! 'Substitóia' aquela 'Strig': Brincando com Strigs == Brincando com Strings Vi agora, tava re-procurando esse tutorial (Muito Útil!). Achei meio esquesito aquele Strigs. Ah! Esses comandos não servem só pra talkactions. Podem ser usados em tudo: Actions, Movements e Funções. Exemplo? [color="Blue"]function[/color] getCreatureNameLenght(uid) [color="Blue"]local[/color] ret = [color="DarkOrchid"]string.len[/color]([color="DarkOrchid"]getCreatureName[/color](uid)) [color="Blue"]return[/color] ret [color="Blue"]end[/color] Share this post Link to post
Raphael Carnaúba 1 #16 Posted February 9, 2009 Bacana, acho que merecia uma formatação melhor. Não é Strigs, é Strings, corrige aew :} Share this post Link to post
MotoBoy 0 #17 Posted February 9, 2009 num to consegundo substituir =/ mais issu naum vai atar ninguém bé? @Skyen eu disse que eh mais usado e talkactions.. isso não inpede nada.. tudo que retorbe en uma string pode se usar isso.. =P ateh porque se você for pegar cono prexenplo os comandos os, que rtornam udo em strng, esses comandos saum muito uteis ^^ flws~~ Share this post Link to post
Dark Yoshiki 0 #18 Posted March 20, 2009 Gostei muito Continue fazendo mais scripts assim Thx Share this post Link to post
MotoBoy 0 #20 Posted March 28, 2009 thnx pra todos aew xD achei que esse eh um dos tuo mais explicados que jah consegui fazer >.< gosto muito dele.. leio ele toda vez que vo fazer talkactios XD flws~~ Share this post Link to post