LU
dúvida

Duvida - Alguma função que check um texto

Por LuaniTa, 16 de jun. de 2013 em Scripts

script
22
3.8k
MaXwEllDeNM
16 de junho de 2013 às 23:02

os colchetes servem pra fazer pattern matching, pra não fazer isso tem que colocar % antes

 

exemplo:

 

local a = "teste [] teste"
print(a:find("[]"))

 

erro que vai dar:

 

ERROR: untitled.lua:2: malformed pattern (missing ']')

 

certo:

 

local a = "teste [] teste"
print(a:find("%[%]"))

 

resultado do print:

 

7, 8

 

Sim, mas na string que deve ser buscada não há nenhum pattern '-'.

 

@Tópico

 

Olha, aparentemente não tem nada de errado com o código, Teríamos que ver a descrição do item pra ver como tá ficando, eu testei assim:

 

local item = getPlayerItemById(cid, true, 2379)

local desc = getItemAttribute(item.uid, "description")

if item.uid > 100 and desc:find(" ".. getCreatureName(cid) .." ") then
  print("All right")
end

 

e deu certo.

 

Descrição do meu item:

 

Bought by Max Rulex [iD:2173].

 

Faz esse teste:

 

local desc = getItemAttribute(getPlayerItemById(cid, true, 2379).uid, "description")
print("\"".. desc .. "\"")

LuaniTaL
17 de junho de 2013 às 00:06

Entao Max, eu andei um tempo dando uma estudada, mas como já falei, sou iniciante pura!

 

Acontece que no script a descrição do item já vai estar pré-selecionada.

 

Você chegou a testar isso?

function onStepIn(cid, item, position, fromPosition)
local item = getPlayerItemById(cid, true, 2379)
local desc = getItemAttribute(item.uid, "description")
local predefinido = 'Bought by Teste [iD:2379].'
if item.itemid >= 1 and string.find(desc, predefinido) then
   doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Deu certo!")
end
return true
end 

Certamente não vai aparecer a mensagem "Deu certo!". Mesmo vc tendo o itemid 2379 e com a descrição 'Bought by Teste [iD:2379].'

 

Eu fiz muitos e muitos testes, quando o Brun123 mencionou o uso da % na frente do [ ] então ai sim funcionou.

 

Ficou assim:

function onStepIn(cid, item, position, fromPosition)
local item = getPlayerItemById(cid, true, 2379)
local desc = getItemAttribute(item.uid, "description")
local predefinido = 'Bought by Teste %[iD:2379].'
if item.itemid >= 1 and string.find(desc, predefinido) then
   doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Deu certo!")
end
return true
end 

MaXwEllDeNM
17 de junho de 2013 às 00:31

Pelo que eu lí e cheguei a entender, achei que você queria ver se o nome do player estava na descrição do item!

LuaniTaL
17 de junho de 2013 às 00:49

Ah.. certo.

 

O proposito real era para checar a descrição já pronta.

E nas descrições dos items pegos pelo shop em sites, geralmente tem o ID ao final da descrição.

 

Então tinha os malditos [ ] atrapalhando.. depois de ter colocado a % a frente funcionou 100%.

MaXwEllDeNM
17 de junho de 2013 às 01:10

Hm, agora me bateu uma dúvida, por que descrições já prontas? Como você usaria isso?

SlicerS
17 de junho de 2013 às 07:45

q bom para tu mano... mas n fica animadinhu nao pq quem fez merda foi tu... tu nunca disse q era para usar os [ ] na pattern... ¬¬

sem eles o script funciona perfeitamente...

LuaniTaL
17 de junho de 2013 às 20:04

Hm, agora me bateu uma dúvida, por que descrições já prontas? Como você usaria isso?

Poderia ser usado para recuperar algum item no jogo.

Sabemos que tem inúmeras crianças jogando.. algum espertinho passou a perna nele e o item foi perdido.

Ele tem provas que foi passado para trás e você quer ajudar ele, para não dar 1 item a ele e ficar 1 item a mais dando bobeira você usa 1 script para detectar com que esta o item.

 

Ex: Pega um script para colocar a descrição do item e fazer com que gere 1 log quando alguem logar com esse item, e no log estara o nome do player que esta com o item.

 

Ou poderia ser usado para deletar items clonados, alguem que clonou varios items com a descrição "Comprado por Teste". Vai deletar até mesmo o original, mas dai azar de quem deixou ou clonou. Não acha? =)

 

 

q bom para tu mano... mas n fica animadinhu nao pq quem fez merda foi tu... tu nunca disse q era para usar os [ ] na pattern... ¬¬

sem eles o script funciona perfeitamente...

Mas eu sempre lhe falei que não estava dando certo com os colchetes na frase... e você dizendo que os colchetes nada tinham a ver...

O importante é que funcionou agora =) foi um erro de comunicação apenas.. hahaha

 

 

Até