Croqueta Publicado 21 de Enero del 2014 Reportar Compartir Publicado 21 de Enero del 2014 gracias a paci por ayudar en el texto. Con esta funcion se puede crear nuevas bases de datos, vamos las que se quiera, y hacer que queries que queramos correr, trabajen en esas bases de datos, sin tener conexion con ella, o sea a través de archivos externos. Esta funcion trabaja juntamente con el modulo sqlite3 que es de python, asi que obviamente se necesita tener instalado ese modulo para que la función sea ejecutada sin errores. primero instalar sqlite3 en freebsd cd /usr/ports/databases/py-sqlite3make && make install despues meter la funcion function split(str, delim, maxNb) if str == nil then return str end if string.find(str, delim) == nil then return { str } end if maxNb == nil or maxNb < 1 then maxNb = 0 end local result = {} local pat = "(.-)" .. delim .. "()" local nb = 0 local lastPos for part, pos in string.gfind(str, pat) do nb = nb + 1 result[nb] = part lastPos = pos if nb == maxNb then break end end if nb ~= maxNb then result[nb + 1] = string.sub(str, lastPos) end return resultendfunction sql_query(db,query) local name = 'sql_file_'..math.random(10^9)+math.random(2^4,2^10) local Python_File = ''..name..'.py' local C_Python_File = io.open(Python_File,'w') local _,_,key,rest = string.find(query,'(%w+)%s(.*)') local FQuery,O_File = string.upper(key)..' '..rest,name..'.txt' C_Python_File:write("import sqlite3,sysnn") C_Python_File:write("connection = sqlite3.connect('"..db..".db')ncursor = connection.cursor()nconnection.commit()n") C_Python_File:write('sql = '..string.format('%q',FQuery)..'n') C_Python_File:write("cursor.execute(sql)nntry:ntd = open('"..name..".txt','w')nexcept:ntsys.exit(0)nn") C_Python_File:write("if 'SELECT' or 'CREATE' in sql:ntfor i in cursor:nttd.write(str(i))nelse:ntconnection.commit()ntd.write('true')nn") C_Python_File:write("d.close()nconnection.close()") C_Python_File:close() os.execute("python "..Python_File) local df = io.open(O_File);ret=df:read();df:close() os.remove(O_File);os.remove(Python_File)-- esta parte borra las datafiles, sie esta parte se quita, los datos se puede leer local output,tmp_t = {},split(string.gsub(ret, '%)',')n'),'%)') for i = 1, table.getn(tmp_t)-1 do tmp = string.gsub(string.gsub(tmp_t[i],"u'(.-)',",'%1,'),'%(','') table.insert(output,split(string.gsub(tmp,'%s*',''),',')) end tmp_t,name,Python_File,C_Python_File,FQuery,O_File,file,df = nil,nil,nil,nil,nil,nil,nil,nil return outputend se usa asi -- create table & database if not exist --syntax sql_query(selected database,query) sql_query("testdatebase","create table test(name TEXT PRIMARY KEY,level INTERGER)") -- insert into table sql_query("testdatebase","insert into test values('"..pc.get_name().."',"..pc.get_level()..")") -- select and output query outp= sql_query("testdatebase","select name from test where name='"..pc.get_name().."'")[1][1] say("example output ",outp) y para q ustedes aprendan usar el syntax Debes iniciar sesión para ver el contenido del enlace en esta publicación. PACI y divnos77 reacciono a esto 2 Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Jfirewall Publicado 21 de Enero del 2014 Reportar Compartir Publicado 21 de Enero del 2014 Esto tambien sirve para crear log, ejm de charlas generales? Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
PACI Publicado 21 de Enero del 2014 Reportar Compartir Publicado 21 de Enero del 2014 Esto tambien sirve para crear log, ejm de charlas generales?WtfEso ya viene en el game.Además esto es una funcion quest, como pensabas obtener a través de una quest lo que un pj dice y guardarlo? Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Jfirewall Publicado 21 de Enero del 2014 Reportar Compartir Publicado 21 de Enero del 2014 ay un metodo que un amigo y yo estamos tratando de hacer que eso que dije, por medio de una quest hacer leer un archivo del python por el cmdchat que por la quest lea lo del .py y cree la tabla guardando nivel nombre y reino. es un proyecto que andabmos testeando pero a traido muchos errores con la quest por eso pregunto. pero lo veo imposbile :/ Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
PACI Publicado 22 de Enero del 2014 Reportar Compartir Publicado 22 de Enero del 2014 def __SendChatPacket(self, text, type): import event event.SendQuestInputStringPacket(text) function get_input(x) cmdchat('GetInputStringStart') local a = cmdchat(x) cmdchat('GetInputStringEnd') return aendquest ... begin state start begin when login begin loop_timer('chat', 1) end when chat.timer begin if get_input('GetChatText') ~= nil then sql_query('log','INSERT INTO chat_log VALUES('..pc.get_account_id()..', '..pc.get_name()..', '..get_input('GetChatText')..';') end end endendBasicamente seria asi, pero vamos, no se para que hacer eso si el game ya trae logs de esos. Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Jfirewall Publicado 22 de Enero del 2014 Reportar Compartir Publicado 22 de Enero del 2014 No me entendiste o no me explique bien, igual gracias porque ya encontre el metodo de hacer lo que necesito la quest que andaba haciendo era mas larga y con unos cuantos errores ;DDDDDDDDDDDD por lo que veo si servira para lo que necesito. Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Mensajes recomendados
Unirse a la conversación
Puedes publicar ahora y registrarte más tarde. Si tienes una cuenta, regístrate para publicar con su cuenta.