seção incorreta, o correto séria "Pedidos e Dúvidas de Scripting". Reportado.
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

local incorreto, movido
local txt = "Power: 80\nLevel: 50"
print(txt:match("Power: (.*)\n"))
print(txt:match("Level: (.*)"))
Editado Fevereiro 3 por Slicer
info
Grupo: Visconde
Registrado: 22/09/10
Posts: 474
Reputação: +47

a parte que verifica os atributos do item são em outro script...
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

aquilo foi um teste meu aki.. ;x
local txt = getItemAttribute(item.uid, "description")
achu q deve da na ms ;x
info
Grupo: Visconde
Registrado: 22/09/10
Posts: 474
Reputação: +47

acho que você não me entendeu.
eu preciso pegar os valores do
doItemSetAttribute(pend, "description", string.format("Power: %s\nLevel: %s", power, lvl))
Mais eles separados exemplo :
if getPlayerLevel(cid) < getItemAttribute(item.uid, "description", "Level: %s") then end
Editado Fevereiro 3 por eduardobean
info
Grupo: Visconde
Registrado: 12/09/10
Posts: 416
Reputação: +160
Char no Tibia: Draky Lucas

tenta isso:
local level = getItemAttribute(item.uid, "description"):match("Level: (.*)")
if getPlayerLevel(cid) < level then
return doPlayerSendTextMessage(cid,19,"BUAHAHA")
end
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

local txt = getItemAttribute(item.uid, "description")
local lvl = tonumber(txt:match("Level: (.*)"))
local power = tonumber(txt:match("Power: (.*)\n"))
achu q o unico q n intendeu aki eh vc u,U
e aconcelho a por '.' no final do lvl e do power ali pra ficar mais facil de usar o match e n ter problemas depois...
Editado Fevereiro 3 por Slicer
info
Grupo: Visconde
Registrado: 22/09/10
Posts: 474
Reputação: +47

[03/02/2013 16:07:55] [Error - Action Interface] [03/02/2013 16:07:55] data/actions/scripts/******/******.lua:onUse [03/02/2013 16:07:55] Description: [03/02/2013 16:07:55] data/actions/scripts/******/******.lua:7: attempt to compare number with nil [03/02/2013 16:07:55] stack traceback: [03/02/2013 16:07:55] data/actions/scripts/******/******.lua:7: in function <data/actions/scripts/******/******.lua:1>
Linha 7
local txt = getItemAttribute(item.uid, "description")
local power = txt:match("Name: (.*)\n")
local lvl = txt:match("Level: (.*)")
if lvl > getPlayerLevel(cid) then
return doPlayerSendCancel(cid, "Your level is too low to use it.")
end
Editado Fevereiro 3 por eduardobean
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

visse q editei o topico? botando o tonumber( )...
esse item ae tava com a description setada? pq cabei de testar aki assim..
if param == "set" then
local item = getPlayerSlotItem(cid, 8).uid
if item > 1 then
doSetItemAttribute(item, "description", "Power: 80.\nLevel: 50.")
end
end
---
if param == "get" then
local item = getPlayerSlotItem(cid, 8).uid
if item > 1 then
local lvl = getItemAttribute(item, "description"):match("Level: (.*).")
local power = getItemAttribute(item, "description"):match("Power: (.*).\n")
sendMsgToPlayer(cid, 20, "Level = ".. lvl .."\nPower = ".. power)
if tonumber(lvl) > getPlayerLevel(cid) then
sendMsgToPlayer(cid, 20, "You can't use it!")
else
sendMsgToPlayer(cid, 20, "You can use it!")
end
end
end
e deu tudo certo... ;x
22:22 Level = 50 Power = 80 22:22 You can use it!
info
Grupo: Visconde
Registrado: 22/09/10
Posts: 474
Reputação: +47

na verdade estava certo mesmo, eu que fui burro e esqueci de passar de string para numero:
local lvl = tonumber(txt:match("Level: (.*)"))




info
Grupo: Visconde
Registrado: 22/09/10
Posts: 474
Reputação: +47
eu adicionei 2 atributos na descrição de um item
doItemSetAttribute(pend, "description", string.format("Power: %s\nLevel: %s", power, lvl))Agora não consigo pegar eles deles separadamente com a função getItemAttribute, se alguém puder me ensinar como eu pego o valor que estará em Power, e o Level para que eu possa criar um comando que saco o level do player seja menor que o do item ele não possa usar.