não consegui achar muitas utilidades, dá pra usar algum código em lua?
- Fórum
- OTServ
- Discussion
- Noticias - Arquivo
- [Arquivado]Easy Xml Lib
info
Grupo: Banidos
Registrado: 06/11/07
Posts: 39
Reputação: +22
Char no Tibia: degarox strain

.... ._.
isso é pra usar em lua, nos otservers...
info
Grupo: Conde
Registrado: 07/05/08
Posts: 612
Reputação: +12
Char no Tibia: leviana luciferiana

qual seria a grande utilidade de usar essa lib?
info
Grupo: Banidos
Registrado: 06/11/07
Posts: 39
Reputação: +22
Char no Tibia: degarox strain

simples, pegar informações do XML rapido, facil e pratico usando isso.
Vo faze um script usando isso c vai ve ^^
info
Grupo: Herói
Registrado: 17/02/08
Posts: 2.5k
Reputação: +193

Eu achei inútil, só da o trabalho de criar isso.
Abraços,
Henrique.
Editado Agosto 29 por KaKilo
info
Grupo: Banidos
Registrado: 06/11/07
Posts: 39
Reputação: +22
Char no Tibia: degarox strain

inutil nao.
vocÊ vai usar umas 30 linhas pra pegar so o HP max de um monstro no XML ou algo do loot
nisso vc usa 3~4 linhas e pronto.
info
Grupo: Herói
Registrado: 28/11/10
Posts: 3.4k
Reputação: +585
Gênero: Masculino

Este tópico está fechado e foi movido para Noticia - Arquivo.
+ Caso tenha atualizações você poderá criar outro tópico.




info
Grupo: Banidos
Registrado: 06/11/07
Posts: 39
Reputação: +22
Char no Tibia: degarox strain
Olá, estou aqui postando 5 funções para mexer com XML (pegar dados apenas) vi que algumas pessoas tem dificuldade para pegar dados de um XML entao decidi fazer essa lib, apesar de ser bem inutil para pessoas experientes ela serve para iniciantes, ficou bem simples, defidi mesmo fazela para ter mais um motivo para usar POO em uma lib
Essa lib roda em qualquer otserver pois rodou no debugger do SCITE e do otscript live se nao rodar no seu server e por causa da função string.explode.
Em fim sim eu sou mock daquele forum concorrente ._. decidi postar essa lib aqui tambem pois aqui tem muitos usuarios que ela poderia ser util.
Vamos adciona-la logo, vá até funcions.lua e adcione essa linha:
dofile('Easy-xml-lib.lua')Depois fassa o download da lib aqui: http://lua.pastey.net/119938
ou se preferir crie o arquivo easy-xml-lib.lua e ponha o seguinte conteudo:
--[[ * Author: Mock * Version: 1.00.0 * How to use: > local kind = 2 -- you can change to see another mode > local XML = [==[ <?xml version="1.0" encoding="UTF-8"?> <flags> <flag summonable="0"/> <flag attackable="0"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="1"/> <flag canpushitems="1"/> <flag canpushcreatures="0"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="0"/> </flags> ]==] > local read = xml:open(XML) -- or xml:open('<xml string="..../>') > read:setSess('flags','flag','mysession') -- <flags>, <flag summonable="0"/>, name of this session? > print(type(read:getSess('mysession'))) --- Will print on console an swtring with XML code fo session flag: <flags><flag summonab... > if kind == 1 then >> table_ = read:readSess('mysession') > else >> table_ = read:readFree('flag') > end > print('-----') > for k,v in pairs(table_) do >> for m,n in pairs(v) do >>> print(m,n) >> end > end >>> print: table ----- summonable, 0 attackable, 0 hostile, 1 illusionable, 0 convinceable, 0 pushable, 1 canpushitems, 1 canpushcreatures, 0 targetdistance, 1 staticattack, 90 runonhealth, 0 * Special thanks for: ** Skyen hasus ** Magus ]]-- xml = {} -- classe function xml:open(file,kind) if kind ~= nil then local file2 = assert(io.open(file,'r')) file = file2:read(-1) file2:close() end if file == nil then return error('File is empyt') end alt = string.explode(file,'\n',2) if alt[1] == nil or string.find(alt[1],"<?xml") == nil then return error('Bad xml format') end file = {text=alt[2],encoding=alt,session={}} setmetatable(file, {__index = xml}) return file end function xml:setSess(sessname,tagname,setSess) xmlstr = self.text local f = "" for ret in xmlstr:gmatch('<'..sessname..'>(.-)</'..sessname..'>') do f = ret end if f:len() == 0 then return error('Cannot find session called '..sessname..'.') end self.session[setSess] = {f,tagname=tagname,sessname=sessname} return TRUE end function xml:getSess(SessName) return self.session[SessName] end function xml:readSess(SessName) local ret = self.session[SessName] local t,x = {},1 for xmla in ret[1]:gmatch('<'..ret.tagname..' (.-)/>') do t[x] = {} for i, v in xmla:gmatch('([^ ]-)="(.-)"') do t[x][i] = v end x = x + 1 end return t end function xml:readFree(tagname) local ret = self.text local t,x = {},1 for xmla in ret:gmatch('<'..tagname..' (.-)/>') do t[x] = {} for i, v in xmla:gmatch('([^ ]-)="(.-)"') do t[x][i] = v end x = x + 1 end return t endNo proprio script tem ensinando a usar:
local kind = 2 -- you can change to see another mode local XML = [==[ <?xml version="1.0" encoding="UTF-8"?> <flags> <flag summonable="0"/> <flag attackable="0"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="1"/> <flag canpushitems="1"/> <flag canpushcreatures="0"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="0"/> </flags> ]==] local read = xml:open(XML) -- or xml:open('<xml string="..../>') read:setSess('flags','flag','mysession') -- <flags>, <flag summonable="0"/>, name of this session? print(type(read:getSess('mysession'))) --- Will print on console an swtring with XML code fo session flag: <flags><flag summonab... if kind == 1 then table_ = read:readSess('mysession') else table_ = read:readFree('flag') end print('-----') for k,v in pairs(table_) do for m,n in pairs(v) do print(m,n) end endApesar disso ainda fiz uma função adcional para aprenderem melhor ocmo se usa a lib:
local XML = [==[ <?xml version="1.0" encoding="UTF-8"?> <vars> <var name="Mock" id="123"/> <var level="27"/> </vars> <vars2> <var2 name="Skyen" id="321"/> <var2 level="12"/> </vars2> ]==] local v_a = xml:open(XML) v_a:setSess('vars','var','mocksess') v_a:setSess('vars2','var2','skyensess') ret = v_a:readSess('mocksess') print(ret[1].name) ret2 = v_a:readSess('skyensess') print(ret2[1].name)Ele vai mostar no console:
Mock
Skyen
Resumindo ele retorna uma tabela +/- assim
Table = { [1] = {name="mock", id=123}, [2] = {level=12} }caso eu tenha postado na seção errada perdão poderima mover para a correta?
Caso seje a seção correta ignore oq eu disse acima.
Editado Agosto 3 por Mock