Jump to content
Sign in to follow this  
MotoBoy

[N: Médio] Brincando Com Strings =D

Recommended Posts

MotoBoy    0
MotoBoy

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 by MotoBoy
editar titulo

Share this post


Link to post
Mock    32
Mock

Que bom :D eu nao sabia o que certas funções dessas fazim agora eu sei.

Aprovado

Share this post


Link to post
ultimatearmor    0
ultimatearmor

adhausudhash titiu motoboy vlws :D 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
MotoBoy

Valeu Aprovação Mock :P

vl comment ultimate :P

 

espero que todos realmente gostem pois é muito util nas talkactions :P

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 by MotoBoy

Share this post


Link to post
Undead Slayer    0
Undead Slayer

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
MotoBoy

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
Eventide

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
MotoBoy
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
Gpwjhlkdcf

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
MotoBoy

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 :P

 

flws~~

Share this post


Link to post
PoSo    0
PoSo

Hahaha, soh agora fui reparar que eu fui citado ali :P

Valeu MotoBoy, achei oque eu precisava ;)

Share this post


Link to post
chukyville    0
chukyville

mtu bom,gostei ;D

Share this post


Link to post
MyS    0
MyS

Tá, e pra que serve isso?

Share this post


Link to post
MotoBoy    0
MotoBoy

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
Gpwjhlkdcf

Rá!

 

Nome do Tópico errado, MotoBoy!

'Substitóia' aquela 'Strig':

Brincando com Strigs == Brincando com Strings

 

:D

 

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
Raphael Carnaúba

Bacana, acho que merecia uma formatação melhor.

 

Não é Strigs, é Strings, corrige aew :}

Share this post


Link to post
MotoBoy    0
MotoBoy

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
Dark Yoshiki

Gostei muito

 

Continue fazendo mais scripts assim

 

Thx

Share this post


Link to post
kisman74    0
kisman74

aprovado

Share this post


Link to post
MotoBoy    0
MotoBoy

thnx pra todos aew xD

:D

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
Guest
This topic is now closed to further replies.
Sign in to follow this  
  • Recently Browsing   0 members

    No registered users viewing this page.

×