Ir para conteúdo

Verificador de storages


caotic

Posts Recomendados

Bem..

Tava conversando com o eventide sobre um verificador de storages para otserv.

Basicamente ele rodaria todo seu otserv em busca de storages e te desse o valor delas.

 

Antes de realizar o programa tem que fazer sua estrutura.

Então fiz a função que iria buscar os valores e as storages:

 

local str = "setPlayerStorageValue(cid, 23232, 1+2)\nsetPlayerStorageValue(cid, 211, 8)\n x(x, y)\n setPlayerStorageValue(cid, 2322, 1)\n"


function string.explode(e, sep)
local result = {}	e:gsub("[^".. sep .."]+", function(s) table.insert(result, s:match("^%s*(.-)%s*$")) end)
return result
end



function findStr(str, x)
_ = ""
for i in str:gmatch("setPlayerStorageValue(.-)\n") do
explode = string.explode(i, ",")
value = string.sub(explode[3], 1, #explode[3]-1)
if x then
y = loadstring('return (' .. value .. ')')()
end
_ = _.." \n"
s = _..explode[2]
_ = s.." Value = "..y or 'Not Value'..""
end
return _
end

print(findStr(str, true))

 

 

Já penso roda isto no seu otserv todo.

Melhor ficarem so com a função e se quiserem usar no seu otserv.

Recomendo a blibioteca lua file system e coragem.

 

 

Abs

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

Muita coragem... huehuehue

Muito difícil conflitar storages, só aconteceu uma vez comigo...

 

E nunca aconteceu isso comigo.

Mais se alguém quiser testar algo mais fundo.

Tinha insertar todos os valores numa table e verificar se não tem repetição.

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

  • 3 weeks later...
require( "ex" )

local t = {os.currentdir()}

function SearchFiles(path, result)
    for e in assert(os.dir(path)) do
        if e.type == 'directory' then
            table.insert(t, e.name)
            SearchFiles(table.concat(t, "\\"), result)
        elseif string.find(e.name, ".lua") then
            local file = io.open(table.concat(t, "\\").."\\"..(e.name), 'r')
            if file then
                local txt = file:read("*all")
                for i in string.gmatch(txt, "setPlayerStorageValue%(%a*, (%d+), %d*%)") do
                    result:write(i.."\t\t"..table.concat(t,"\\").."\\"..e.name.."\n")
                end
                for i in string.gmatch(txt, "sto = (%d+)") do
                    result:write(i.."\t\t"..table.concat(t,"\\").."\\"..e.name.."\n")
                end
                for i in string.gmatch(txt, "storage = (%d+)") do
                    result:write(i.."\t\t"..table.concat(t,"\\").."\\"..e.name.."\n")
                end
                file:close()
            end
        end
    end
    if #t > 1 then table.remove(t) end
end

local result = io.open("results.txt", "a+")
SearchFiles('.', result)
result:close()

eh eh, nao fico la um codigo muito bonito kk' mas n ta levando nem 2seg para rodar a pasta toda... o problema eh q muitas vezes o cara usa outras variaveis para por a storage... dai eh complicado... ;p

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

pow vê se eu intendi...

isso é um script que procura e te mostra todas as storages usadas em jogo? (se for nossa muito perfeito pra mim, tava precisando disso)

e como que instala este script?

Link para o comentário
Compartilhar em outros sites

como flei, ele n da TODASSSSSS as storages... ja q tu pode ta usando alguma variavel diferente para storage em alguns scripts... mais concerteza lhe dara boa parte...

 

eh soh baixar isso...

http://code.google.com/p/luaforwindows/downloads/list

 

dai instala... depois vai em C:\Program Files\Lua\5.1\SciTE\ e abre o SciTE.exe ... dai cola esse codigo la no editor, salva com a extensao .lua ... dai pega o arquivo, .lua, q foi criado, e coloca na pasta data/ do teu serv... dai abre esse arquivo denovo com o SciTE.exe e aperta F5... dai vai ser criado um arquivo chamado results.txt com as storages e o arquivo aonde essa storage foi chamada...

Link para o comentário
Compartilhar em outros sites

Da pra pegar todas checando se aquela variável esta sendo usada em uma função de storage, se fazer bem feito roda em até 3.5 segs.

Faça então. :o

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...