Ir para conteúdo
  • 0

Duvida - Alguma função que check um texto


LuaniTa

Pergunta

Tem alguma função que define um texto?

Tpw...

local item = getPlayerItemById(cid, true, IDDOITEM)
local desc = getItemAttribute(item.uid, "description")
if item.itemid >= 1 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "A descrição do seu item é ".. desc ..".")
end
return true
end

 

Isto vai checar a descrição do item IDDOITEM e mandar a mensagem.

 

Teria alguma função para checar uma palavra predefinida?

 

Ex:

local item = getPlayerItemById(cid, true, IDDOITEM)
local desc = getItemAttribute(item.uid, "description")
local predefinido = Item comprado por Teste.
if item.itemid >=1 and predefinido then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Deu certo!")
end
return true
end

 

Deu para entender né? Alguns conhecidos tentaram ajudar e não deu muito certo. '-'

 

Aproveitando.. teria como colocar algum valor falso caso o item naum tiver descrição?

 

Até!

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Seria isso?

local item = getPlayerItemById(cid, true, IDDOITEM)
local desc = getItemAttribute(item.uid, "description")
local predefinido = 'Item comprado por Teste.'
if item.itemid >= 1 and string.find(desc, predefinido) then
   doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Deu certo!")
end
return true
end

Link para o comentário
Compartilhar em outros sites

  • 0

Humm.. seria isso mesmo, thx =)

 

Só encontrei uma dificuldade no texto, ele consegue perceber a descrição normalmente, mas agora se a descrição for igual ao shop system não funciona.

 

Ex: Bought by Teste [iD:2379].

 

O script não consegue ler esse texto, não da erro.. mas acho que seria por causa dos []. não?

 

Tem como sanar isso?

 

Até!

Link para o comentário
Compartilhar em outros sites

  • 0

local txt = "Bought by Teste [iD:2379]."
if txt:find("Bought by Teste") then
  print("achou")
end

aki ele achou... tu tem q configurar o find("...") para oq tu quer achar...

 

podes fazer assim tb... sei la oq tu quer fazer de verdade neh...

local txt = "Bought by Teste [iD:2379]."
if txt:match("Bought by (.-) ") == getCreatureName(cid) then
  print("achou")
end

Editado por Slicer
Link para o comentário
Compartilhar em outros sites

  • 0

Olá Slicer, o propósito seria para checar se o jogador X tenha o item com a descrição do script e deletar o item caso for a mesma descrição.

 

Tentei usar o que você postou, porem ele não checa a descrição, a mensagem é dada de qualquer maneira não importando a descrição.

Tentei usar assim:

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

 

Até!

Link para o comentário
Compartilhar em outros sites

  • 0

velho aquilo era soh para exemplificar...

tu tem q saber como ta a descriçao e procurar pelo q tu quer...

local item = getPlayerItemById(cid, true, 2379)
local desc = getItemAttribute(item.uid, "description")
if item.itemid >= 1 and desc:find("Bought by Teste") then
   doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Deu certo.")
end
return true
end

Link para o comentário
Compartilhar em outros sites

  • 0

Oxi... kkkkk faz parte. =)

 

Funcionou tambem, ele checa se a descrição for a do script.. funcionou.

 

Mas foi o que disse em um post acima, a descrição contem o ID do item entre colchetes. Pois a mesma foi feita pelo shop system.

Ficando assim: Bought by Teste [iD:2379].

 

Eu não sou expert em scripts, mas talvez não esteja achando essa descrição por causa dos []. não é?

Eu fiz um pequeno teste colocando uma spell para criar um item com a descrição "Bought by Teste.", então o script consegue checar o item.

Mas se o item for "Bought by Teste [iD:2379]." o script ignora sem dar erro algum, e acontece a mesma coisa como se a descrição fosse outra, ou seja, nada acontece. hehe

 

Até, e valeu por tudo até o momento.

Editado por LuaniTa
Link para o comentário
Compartilhar em outros sites

  • 0

nao mano impossivel isso.. entao a description n ta ficando q nem tas dizendo... pq como eu ms mostrei ali, n tem problema nenhum ter o [ ] depois...

a description ae dos teus itens devem tar diferente doq tu ta pensando soh pode...

Link para o comentário
Compartilhar em outros sites

  • 0

17:04 You see a escalibur (Atk:107, Def:50).
It weighs 500.50 oz.
Bought by Teste [iD:2379].
ItemID: [2379].
Position: [X: 1024] [Y: 910] [Z: 7].

 

A descrição não seria "Bought by Teste [iD:2379]." ?

 

Estou colocando ela.. tentei sem o ponto(.) no final, mas não adiantou.

Link para o comentário
Compartilhar em outros sites

  • 0

Teste seria o nome do player não é?.

 

local desc = "Bought by Teste [iD:2379]."
local playerName = "Teste"

if string.find(desc, playerName) then
  print("Achou")
end


local item = getPlayerItemById(cid, true, 2160)
local desc = getItemAttribute(item.uid, "description")
local playerName = getCreatureName(cid)

if string.find(desc, playerName) then
  print("Achou")
end

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Sky, seria sim.

 

Mas no caso poderia ser qualquer nome, pois o script teria que checar a descrição do item não importando quem estive-se com o item em mãos!

 

Eu testei seu script, fica a mesma coisa que o do slicer e fireelement.

 

Estou testando algumas coisas a mais aqui tambem.. mas nada adianta. --'''

 

Eu percebi que qualquer descrição que não tenha os colchetes o script consegue achar, mas se tiver o mesmo nada acha.

 

Enfim, valeu pessoal por toda a ajuda.

 

Até.

Link para o comentário
Compartilhar em outros sites

  • 0

veio esquece o colcheite... isso n influencia em nd... provavelmente tu q ta fazendo algu errado, ou ta 'esperando' algu q n devia do script... sei la... todos os script passados aki funcionam de qlqr forma... sem+ good luck com seja la oq tas sonhando em fazer ^^

Link para o comentário
Compartilhar em outros sites

  • 0

hahahaha

 

Mas então me diga, qual a descrição deste item?

17:04 You see a escalibur (Atk:107, Def:50).
It weighs 500.50 oz.
Bought by Teste [iD:2379].
ItemID: [2379].
Position: [X: 1024] [Y: 910] [Z: 7].

Não teria que colocar em txt:find("texto") = txt:find("Bought by Teste [iD:2379].") ?

 

Pois acredito que eu esteja fazendo tudo certo o.O

 

 

EDIT

PS: Fiz alguns teste aqui, e comprovei que o problema é os colchetes sim.

 

TESTE 1 = Criei uma spell que vinha o itemid 2379 com a descrição "Bought by Teste [iD:2379]."

TESTE 2 = E também criei uma spell que vinha com a descrição "Bought by Teste ID:2379."

 

O script funcionou mostrando a msg pro player com o teste 2. Mas não funcionou com o Teste 1.

 

Como falei não sou perita em script, mas acredito que com esse teste o problema seria os colchetes. Ou não faço + idéia alguma.

Editado por LuaniTa
Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

Agora sim =)

 

Coloquei % antes do [ ] e funcionou perfeitamente.

 

Viuuuu @Sliceeer kkkkkk'

 

Eu tinha que estar enxergando muito mal para não ver a descrição corretamente.

 

Duvida, Pedido, Esclarecimentos Sanados!!!

 

Agradeço a todos pela ajuda.

 

ps:Brun123:

Você já atingiu seu limite de reputações positivas para hoje

Editado por LuaniTa
Link para o comentário
Compartilhar em outros sites

  • 0

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 .. "\"")

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...