Ir para conteúdo
Entre para seguir isso  
Magus

TFS 0.3 db class para 0.2

Recommended Posts

Magus    2
Magus

Feito por: Colandus

Tópico original: http://otfans.net/showthread.php?p=1224613

 

=================================

 

É o novo método de execução de SQL Query do novo TFS, para versões mais antigas. Use-a se você quiser usar algum script que use esse novo método no seu antigo servidor.

 

Crie um novo arquivo chamado db.lua na pasta data. Então, dentro de global.lua adicione:

 

-- Colandus
dofile('data/db.lua')

Agora dentro de db.lua:

 

-- Colandus

db = {}
db.__index = db

function getConnection()
   local env, con
   if sqlType == "mysql" then
       env = assert(luasql.mysql())
       con = assert(env:connect(mysqlDatabase, mysqlUser, mysqlPass, mysqlHost, mysqlPort))
   else -- sqlite
       env = assert(luasql.sqlite3())
       con = assert(env:connect(sqliteDatabase))
   end

   return env, con
end

function db.escapeString(str)
   return "'" .. escapeString(str) .. "'"
end

function db.executeQuery(sql)
   local env, con = getConnection()
   cur = assert(con:execute(sql))
   if(type(cur) ~= 'number') then
       cur:close()
   end
   con:close()
   env:close()
end

function db.getResult(sql)
   local mt = {}

   mt.env, mt.con = getConnection()
   mt.cur = assert(mt.con:execute(sql))

   if(mt.cur:numrows() > 0) then
       mt.val = mt.cur:fetch({}, "a")
   end

   setmetatable(mt, db)
   return mt
end

function db:getID()
   return self.val and true or LUA_ERROR
end

function db:next()
   self.val = self.cur:fetch(self.val, "a")
   if self.val then
       return true
   end
end

function db:getDataInt(name)
   if(self.val) then
       return tonumber(self.val[name])
   end
end

function db:getDataString(name)
   if(self.val) then
       return tostring(self.val[name])
   end
end

function db:free()
   self.cur:close()
   self.con:close()
   self.env:close()
end

Compartilhar este post


Link para o post
Deragon    25
Deragon

entao esse codigo é pros servidores velhos para executar codigos novos ?

Compartilhar este post


Link para o post
Magus    2
Magus

Sim. Por exemplo, se você quiser usar o meu "sistema de enquete" ou até mesmo a OtnetScriptLib que está disponível nessa seção e não quiser atualizar seu servidor para 0.3, basta usar essa classe.

Compartilhar este post


Link para o post
Mock    32
Mock
function getConnection()

local env, con

if sqlType == "mysql" then

env = assert(luasql.mysql())

con = assert(env:connect(mysqlDatabase, mysqlUser, mysqlPass, mysqlHost, mysqlPort))

else -- sqlite

env = assert(luasql.sqlite3())

con = assert(env:connect(sqliteDatabase))

end

 

return env, con

end

return env, con

isso nao funcionava em TFS x.x agora ajeitaram, so funcionava no open tibia.

Compartilhar este post


Link para o post
kaijr    0
kaijr

Mais funciona em qualquer ot ?

Compartilhar este post


Link para o post
Mock    32
Mock

nãe so pra TFS 0.2

leia no topico ;s

Compartilhar este post


Link para o post
Magus    2
Magus

Na verdade funciona em qualquer OT que possua a biblioteca LuaSQL, no caso TFS 0.2 e alguns outros.

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×