BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

(solved) checar un atributo de escaleras

(solved) checar un atributo de escaleras

#1 (solved) checar un atributo de escaleras el Lun Ene 12, 2015 4:41 pm

God Remady


Miembro
hola amigos xD! pues haber si algun scripter sabe una funcion para checar atributos de items.xml

quiero checar este atributo:

Código:
   <item id="1385" name="stairs">
      <attribute key="floorchange" value="north" />
   </item>

el attribute key="floorchange"

intente asi:

Código:
if getItemAttribute(itemEx.uid,'floorchange') == true then
      doSendMagicEffect(toPosition,2)
      doPlayerSendCancel(cid, "Sorry, not possible.")
   return true
end

y ya intente asi haber que dato me arrojaba pero como suponia es nulo

Código:
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "attribute floor: "..getItemAttribute(itemEx.uid,'floorchange')..".")

por tanto da error porque es nulo ese atributo. no esta leyendo el de items.xml

en si lo que necesito esque no se pueda usar un item en escaleras pero no quiero tener que poner todas las id's de las escaleras y busco algo que detecte si es escalera. haber si algun colega scripter tiene idea de como hacerlo



Última edición por God Remady el Mar Ene 13, 2015 3:31 pm, editado 1 vez

#2 Re: (solved) checar un atributo de escaleras el Lun Ene 12, 2015 5:02 pm

Dantarrix


Miembro
Prueba con:

Código:

if getItemAttribute(itemEx.uid,'floorchange') ~= nil then
      doSendMagicEffect(toPosition,2)
      doPlayerSendCancel(cid, "Sorry, not possible.")
  return true
end

#3 Re: (solved) checar un atributo de escaleras el Lun Ene 12, 2015 5:43 pm

God Remady


Miembro
no da ninguna accion tu script bro.
lo cambie asi:
Código:
if getItemAttribute(itemEx.uid,'floorchange') == null then
      doSendMagicEffect(toPosition,2)
      doPlayerSendCancel(cid, "Sorry, not possible.")
  return true
end

y ya no me deja poner el item en ningun lado hahaha! esque es nulo ese atributo :c no lo esta reconociendo de items.xml :/

#4 Re: (solved) checar un atributo de escaleras el Lun Ene 12, 2015 6:23 pm

Dantarrix


Miembro
[Tienes que estar registrado y conectado para ver este vínculo] escribió:no da ninguna accion tu script bro.
lo cambie asi:
Código:
if getItemAttribute(itemEx.uid,'floorchange') == null then
      doSendMagicEffect(toPosition,2)
      doPlayerSendCancel(cid, "Sorry, not possible.")
  return true
end
y ya no me deja poner el item en ningun lado hahaha! esque es nulo ese atributo :c no lo esta reconociendo de items.xml :/

Lógico que con eso no te deja poner items en ningún lado, prueba con esto:

Código:
if getItemAttribute(itemEx.uid,'floorchange') ~= null then
      doSendMagicEffect(toPosition,2)
      doPlayerSendCancel(cid, "Sorry, not possible.")
  return true
end

#5 Re: (solved) checar un atributo de escaleras el Lun Ene 12, 2015 6:31 pm

God Remady


Miembro
es lo mismo no funciona porque no reconoce el atributo floorchange. estoy intentando hacer esta funcion intenta hecharme una mano:

Código:
function getItemIsLadder(itemId)

local file = io.open("data/items/items.xml", "r")

for info in string.gmatch(file:read("*a"), "<items(.-)</items>") do
if info:match("item id=\"(.-)\"") == itemId then
local attribute key = info:match("attribute key=(.-)")
return tostring(attribute key)
end
end

file:close()
return nil
end

#6 Re: (solved) checar un atributo de escaleras el Lun Ene 12, 2015 6:52 pm

Dantarrix


Miembro
Código:

function isLadder(itemid)
local xml = io.open("data/items/items.xml", "r")
local c = {}
for i in xml:read("*a"):gmatch("<item (.-)</item>") do
local iditem = tonumber(i:match('id="(.-)"'))
local itemc = {
["floorchange"] = i:match('key.-=.-"floorchange".-value.-=.-"(.-)"')
}
c[iditem] = itemc
end
if c[itemid].floorchange ~= nil then
doPlayerSendCancel(cid, "Es escalera.")
return true
else
doPlayerSendCancel(cid, "No es escalera.")
end
end

Prueba con esa función... Ponla en alguna parte... Debería retornar "Es escalera" cuando sea escalera y "No es escalera" cuando no lo sea como un cancel...

Si esta función te sirve, queda prohibido su uso para sistemas en venta.



Última edición por Dantarrix el Lun Ene 12, 2015 10:45 pm, editado 1 vez

#7 Re: (solved) checar un atributo de escaleras el Lun Ene 12, 2015 8:17 pm

God Remady


Miembro
nope no me funciono:

function isLadder(itemid)
local xml = io.open("data/items/items.xml", "r")
local c = {}
for i in xml:read("*a"):gmatch("") do
local iditem = tonumber(i:match('id="(.-)"'))
local itemc = {
["floorchange"] = i:match('key.-=.-"description".-value.-=.-"(.-)"')
}
c[iditem] = itemc
end
if c[itemid].floorchange ~= nil then <-- aqui me marco error
doPlayerSendCancel(cid, "Es escalera.")
return true
else
doPlayerSendCancel(cid, "No es escalera.")
end
end

#8 Re: (solved) checar un atributo de escaleras el Lun Ene 12, 2015 8:36 pm

God Remady


Miembro
lua:23: attemp to index field '?'


if c[itemid].floorchange ~= nil then ---23

#9 Re: (solved) checar un atributo de escaleras el Lun Ene 12, 2015 10:45 pm

Dantarrix


Miembro
Código:

function isLadder(itemid)
local xml = io.open("data/items/items.xml", "r")
local c = {}
for i in xml:read("*a"):gmatch("<item (.-)</item>") do
local iditem = tonumber(i:match('id="(.-)"'))
local itemc = {
["floorchange"] = i:match('key.-=.-"floorchange".-value.-=.-"(.-)"')
}
c[iditem] = itemc
end
if c[itemid].floorchange ~= nil then
doPlayerSendCancel(cid, "Es escalera.")
return true
else
doPlayerSendCancel(cid, "No es escalera.")
end
end
Prueba con eso...

#10 Re: (solved) checar un atributo de escaleras el Mar Ene 13, 2015 3:27 pm

God Remady


Miembro
no funciono Dantarrix pero gracias por tu ayuda ya lo solucione con ayuda.

Código:
local function getItemIsLadder(itemId)
    local floor = getItemInfo(itemId).floorChange
    for i = 1, #floor do
        if floor[i] then
            return true
        end
    end
    return false
end

Contenido patrocinado


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.

 

¿Quién está en línea?

En total hay 0 usuarios en línea: 0 Registrados, 0 Ocultos y 0 Invitado

Usuarios navegando en este foro: Ninguno

Forum Statistics

Nuestros miembros han públicado un total de posts en temas.
Actualmente hay miembros registrados.
Démosle la bienvenida al miembro más reciente,
La mayor cantidad de usuarios en línea ha sido de .