Jump to content

aka Blue

Members
  • Posts

    2,106
  • Joined

  • Last visited

  • Days Won

    6

Everything posted by aka Blue

  1. Please use Lua code tag.
  2. Si te soy sincero, no termino de entender correctamente para qué se usa el dbPoll y eso me echa para atrás :/. Como que en un momento funcionó y luego toqué algo y ya no funcionaba... ni idea, la verdad.
  3. Estoy creando un sistema de guardado de cuentas en SQLite pero tengo problemas. Con el código a continuación, cuando le doy a registrar, siempre me dice que hay una cuenta ya creada (cuando la .db está vacía) y cuando le doy a loguear, con lo que sea, puedo entrar. addEventHandler( "onResourceStart", resourceRoot, function( ) sql = dbConnect ( "sqlite" , "accounts.db" ) -- Create the connection playersTable = dbQuery ( sql , "CREATE TABLE IF NOT EXISTS accounts (account TEXT,password TEXT,serial TEXT)" ) if fileExists( "accounts.db" ) and sql and playersTable then outputDebugString( "Succefully connected SQLite resource" ) else outputDebugString( "Failed to connect SQLite" ) end end ) function tryRegister( player, username, password ) if username and password then local exists = dbQuery ( sql , "SELECT * FROM accounts WHERE account = ?", username ) local result = dbPoll( exists, 0 ) if result then triggerClientEvent( player, "loginPanel:executeMessage", player, "Account already exists" ) return else local serial = getPlayerSerial( player ) if serial then local qh = dbQuery ( sql , "INSERT INTO accounts (account,password,serial) VALUES (?,?,?)", username, password, serial ) local result = dbPoll( qh, -1 ) if result then triggerClientEvent( player, "loginPanel:executeMessage", player, "Succefully registered. Welcome" ) return true else triggerClientEvent( player, "loginPanel:executeMessage", player, "Error, contact with server admin" ) return end else triggerClientEvent( player, "loginPanel:executeMessage", player, "Fatal error. No serial found." ) return end end else triggerClientEvent( player, "loginPanel:executeMessage", player, "Type username and password" ) return end end function tryLogin( player, username, password ) if username and password then local exists = dbQuery ( sql , "SELECT * FROM accounts WHERE account = ? AND password = ?", username, password ) local result = dbPoll( exists, -1 ) if result then local x, y, z = 2272.0419921875, 2354.5302734375, 4.8202133178711 spawnPlayer( player, x, y, z ) triggerClientEvent(client, "onClientPlayerLogin", client) return true else triggerClientEvent( player, "loginPanel:executeMessage", player, "Account does not exists" ) return end else triggerClientEvent( player, "loginPanel:executeMessage", player, "Type username and password" ) return end end function performLogin (username, password, type) local account = getAccount( username, password ) if type == "login" then tryLogin( client, username, password ) elseif type == "register" then if username and #username > 3 then if password and #password > 8 then tryRegister( client, username, password ) else triggerClientEvent( client, "loginPanel:executeMessage", client, "Required password characters: 8" ) end else triggerClientEvent( client, "loginPanel:executeMessage", client, "Incorrect username. More than 3 characters" ) end elseif type == "leave" then kickPlayer ( client, "See you soon (Leaving)" ) end end addEvent("loginPanel:performLogin", true) addEventHandler("loginPanel:performLogin", root, performLogin ) ¿Me echan una mano? No sé como funciona correctamente el dbPoll y demás PD: Disculpad los dos temas, con el nuevo diseño no puedo borrar
  4. @Anzo Tendré eso en cuenta. Ahora estoy algo más ocupado ya que estoy pasando a SQLite todo el sistema ya que lo quiero independizar, de algún modo del sistema oficial de MTA. Pero, sí, tendré eso en cuenta, no es tan complicado
  5. Hace tiempo que quería hacer algo de este estilo, hacer una conexión entre HTML y Lua para hacer cosas como esta y aquí os traigo un show del resultado. Haré un tutorial de como realizar la conexión y un pequeño formulario para poder hacer un login como este, pero bueno, no es tan complicado. Gracias a los que me echaron una mano en el foro de scripting, @Tomas y @Mr.Aleks PD: Si, ando realizando unos tests y tal. Haré el panel tanto en Español como en Inglés con detección automática del país en el que estás.
  6. Si, si, sé como funciona esa parte. Lo que sí que leí sobre executeBrowserJavascript, pero como no había ningún ejemplo, no entendí correctamente Gracias a ambos por la ayuda,
  7. Gracias @Mr.Aleks, estuve mirando la wiki pero no había ejemplo de uso.
  8. Ya ajusté todo correctamente. Ahora mi duda es, ¿cómo envío peticiones o 'requests' a HTML desde MTA? Tipo, quiero que si el nombre de usuario no existe, salga un alert o algo parecido
  9. Justo lo acabo de ver en el recurso HTML Login que hay por la comunidad. Parece bastante sencillo, muchas gracias @Tomas. Cualquier cosa notifico por aquí
  10. Buenas, estoy intentando realizar un panel login mediante HTML con el uso de CEF. La duda que tengo es que quiero, con la ayuda de los input de HTML, al apretar un botón, realizar una función en Lua de MTA, ¿Cómo podría hacerlo? Gracias de antemano.
  11. Hi, welcome. You can download all-version server/client here: https://nightly.multitheftauto.com/
  12. I think will be better to make it like a "personal project" and just share the video. If you share the compiled files = wrong, if you share your code = wrong (and, wait, you can get jailed OMG 100% NO FAKE FBI... Now this is pathetic), sometimes you just have to assess the work of the other and not always comment this f****g stupid "illegal, pathethic" bullshit. Hey, read: I do not want to offend anyone, just im giving my opinion about this. As i said, sometimes you just have to assess the work of the other. Good luck. Read this too: Sorry for my bad English :c
  13. I dont understand... ¿super very limited dont have 4 <a> text for quick redirection? ...
  14. Vale, por lo visto ya funciona. Gracias @-Rex- y @Bc#. Pueden cerrar.
  15. Es la primera vez que me pongo 'seriamente' con SQLite, por lo cual, pues no entiendo muy bien. Gracias @Bc#, tomaré en cuenta lo que dijiste y haré dos funciones. De cargado y de guardado. Sigue igual. Se ve que el problema está en la función loadWalletData, no recibe correctamente los valores o qué se yo, no lo entiendo... local cartera = { } addEventHandler( "onResourceStart", resourceRoot, function( ) sql = dbConnect ( "sqlite" , "wallet.db" ) -- Create the connection walletTable = dbQuery ( sql , "CREATE TABLE IF NOT EXISTS wallets (owner TEXT,money_inside TEXT)" ) if sql and walletTable then outputDebugString( "Conectado SQLite para el recurso carteras" ) else outputDebugString( "No se puede conectar SQLite para el recurso de carteras" ) end end ) function saveWalletData( player ) local name = getPlayerName( player ) local exists = dbQuery ( sql , "SELECT * FROM wallets WHERE owner = "..name ) if exists then local cartera = cartera[ player ] if cartera then local result = dbFree ( dbQuery ( sql , "UPDATE wallets SET money_inside = ? WHERE owner = ?" , tonumber(cartera), name ) ) if result then else outputChatBox( "No se guardó la cantidad de la cartera en la base de datos.", player, 255, 145, 0 ) end else outputChatBox( "No se te guardará la cartera, ya que no la has usado.", player, 255, 145, 0 ) end else local cartera = cartera[ player ] if cartera then local result = dbQuery ( sql , "INSERT INTO wallets (owner,money_inside) VALUES (?,?)", name, tonumber( cartera ) ) if result then else outputChatBox( "No se guardó la cantidad de la cartera en la base de datos.", player, 255, 145, 0 ) end else outputChatBox( "No se te guardará la cartera, ya que no la has usado.", player, 255, 145, 0 ) end end end function loadWalletData( player ) if cartera[ player ] == nil then cartera[ player ] = 0 end local name = getPlayerName( player ) local qh = dbQuery ( sql , "SELECT * FROM wallets WHERE owner = ?", name ) local result = dbPoll( qh, -1 ) if result then for i=1, #result do local data = result[i] local money_inside = data.money_inside cartera[ player ] = tonumber( money_inside ) end else cartera[ player ] = 0 end end addEventHandler( "onPlayerQuit", root, function( ) saveWalletData( source ) end ) addEventHandler( "onPlayerLogin", root, function( ) loadWalletData( source ) end ) addCommandHandler( "cartera", function( player, commandName, accion, cantidad ) local cantidad = tonumber( cantidad ) local account = getPlayerAccount( player ) if isGuestAccount( account ) then cartera[ player ] = 0 outputChatBox( "No puedes usar la cartera siendo invitado. Logueate", player, 255, 145, 0 ) else if cartera[ player ] == nil then cartera[ player ] = 0 end if accion == "guardar" then if cantidad then local cantidad_cartera = cartera[ player ] or 0 if cartera[ player ] == 0 then outputChatBox( "Has guardado $"..cantidad.." de dinero en la cartera.", player, 0, 255, 0 ) cartera[ player ] = cantidad saveWalletData( player ) else outputChatBox( "Has guardado $"..cantidad.." de dinero en la cartera.", player, 0, 255, 0 ) cartera[ player ] = cantidad_cartera + cantidad outputChatBox( "Cantidad total en la cartera: $"..cantidad_cartera+cantidad, player, 0, 255, 0 ) end else outputChatBox( 'Necesitas añadir una cantidad a guardar en la cartera', player, 255, 145, 0 ) end end end end )
  16. Buenas, estoy teniendo unos problemas con SQLite. Éste es el script que uso actualmente: local sql = dbConnect ( "sqlite" , "wallet.db" ) -- Create the connection local walletTable = dbQuery ( sql , "CREATE TABLE IF NOT EXISTS wallets (owner TEXT,money_inside TEXT)" ) local cartera = { } addEventHandler( "onPlayerLogin", root, function( ) local name = getPlayerName( source ) local qh = dbQuery ( sql , "SELECT * FROM wallets WHERE owner = ?", name ) local result = dbPoll( qh, -1 ) if result then for i=1, #result do local data = result[i] local money_inside = data.money_inside cartera[ source ] = tonumber( money_inside ) end else cartera[ source ] = 0 end end ) addEventHandler( "onPlayerLogout", root, function( ) local name = getPlayerName( source ) local exists = dbQuery ( sql , "SELECT * FROM wallets WHERE owner = "..name ) if exists then local cartera = cartera[ source ] if cartera then local result = dbFree ( dbQuery ( sql , "UPDATE wallets SET money_inside = ? WHERE owner = ?" , tonumber(cartera), name ) ) if result then outputChatBox( "Cantidad en cartera guardada: $"..cartera, source, 0, 255, 0 ) else outputChatBox( "No se guardó la cantidad de la cartera en la base de datos.", source, 255, 145, 0 ) end else outputChatBox( "No se te guardará la cartera, ya que no la has usado.", source, 255, 145, 0 ) end else local cartera = cartera[ source ] if cartera then local result = dbQuery ( sql , "INSERT INTO wallets (owner,money_inside) VALUES (?,?)", name, tonumber( cartera ) ) if result then outputChatBox( "Guardada la cantidad $"..cartera.." en la base de datos.", source, 0, 255, 0 ) else outputChatBox( "No se guardó la cantidad de la cartera en la base de datos.", source, 255, 145, 0 ) end else outputChatBox( "No se te guardará la cartera, ya que no la has usado.", source, 255, 145, 0 ) end end end ) addCommandHandler( "cartera", function( player, commandName, accion, cantidad ) local cantidad = tonumber( cantidad ) local account = getPlayerAccount( player ) if isGuestAccount( account ) then cartera[ player ] = 0 outputChatBox( "No puedes usar la cartera siendo invitado. Logueate", player, 255, 145, 0 ) else if cartera[ player ] == nil then cartera[ player ] = 0 end if accion == "guardar" then if cantidad then local cantidad_cartera = cartera[ player ] or 0 if cartera[ player ] == 0 then outputChatBox( "Has guardado $"..cantidad.." de dinero en la cartera.", player, 0, 255, 0 ) outputChatBox( "• Genial! Acabas de usar tu cartera.", player, 0, 255, 0 ) cartera[ player ] = cantidad else outputChatBox( "Has guardado $"..cantidad.." de dinero en la cartera.", player, 0, 255, 0 ) cartera[ player ] = cantidad_cartera + cantidad outputChatBox( "Cantidad total en la cartera: $"..cantidad_cartera+cantidad, player, 0, 255, 0 ) end else outputChatBox( 'Necesitas añadir una cantidad a guardar en la cartera', player, 255, 145, 0 ) end end end end ) He intentado solucionarlo de todas las formas posibles pero, no funciona. El problema es que, por lo visto "no se guarda en SQLite" o algo parecido. Es extraño el error, porque, al estar conectado, al desloguearse y al loguearse sigue la cantidad, pero al reconectar deslogueado, no se guarda. No entiendo lo que pasa.
  17. Sí, disculpa mi ignorancia, no busqué correctamente Cursor en la wiki PD: Pueden cerrar el tema o borrarlo, gracias @EstrategiaGTA de todos modos.
  18. Me alegro, buena suerte. Cualquier otra cosa, pregunta, pero sé un poco más específico, que, al menos a mí, me has liado un poco
  19. Usa lo que te dió @Tomas pues. for i = 1, #guiGridListGetRowCount(grid) do local player = getPlayerFromName(guiGridListGetItemText(grid, i, 1)) if ( player) then setElementDimension(player, 69) end end
  20. No problem. If you want to use it in another script that is not defined in your scriptClient2.lua meta, you should use export: <export function="functionName" type="client"/> Hope you understand
  21. You can do it, only if the other script is in the same meta.xml
  22. No entiendo pero nada de nada lo que quieres hacer. Si quieres a todos, entonces en la gridlist mete getElementsByType( 'player' ) y luego loopeas la gridlist como dijo @Tomas
  23. Entonces, usa getElementsByType, los metes mediante el name y pillas los seleccionados con GuiGridListGetSelectedItem y GuiGridListGetItemText para pillar el nombre del jugador. Cuando lo tengas usas un triggerServerEvent o mismo en 'cliente' (no sé si funcionaría correctamente), con la función que te di para tpearlos a la dimensión que quieres.
×
×
  • Create New...