Eder

Members
  • Content Count

    43
  • Joined

  • Last visited

Community Reputation

3 Neutral

About Eder

  • Rank
    Rat

Recent Profile Visitors

203 profile views
  1. @DNL291 Sim sim, acabei mudando mas mesmo assim o erro/bug persistiu... Acabei desistindo de SQLITE com um tempo maior vou tentar correr atras disto aproveitando o tutorial do Lord... Tecnicamente ele se parece com o MYSQL mas ao mesmo tempo não se parece sei lá xD. Mas enfim agradeço a vcs pela ajuda!
  2. Opa, estou começando a mexer com sqlite e no momento estou tentando fazer um simples registro por comando... porém não consigo segue abaixo o codigo: local connect = dbConnect("sqlite", "registry.db") addEventHandler("onResourceStart", resourceRoot, function() local exec = executeSQLQuery("CREATE TABLE IF NOT EXISTS registroPessoal (ID INTEGER NOT NULL PRIMARY KEY, username TEXT, password TEXT, mtaserial INTEGER, PosX REAL, PosY REAL, PosZ REAL, accountName TEXT)" ) local query = dbQuery( connect, "SELECT * FROM registroPessoal") outputChatBox(tostring(query)) local resultado, searchs, msg = dbPoll(query, 0) if resultado == false then outputConsole( "dbPoll falhou. Erro srch: " .. tostring(searchs) .. " Erro msg: " .. tostring(msg) ) end end) addCommandHandler ("registrar", function(jog, cmd, val1, val2) local valor = dbQuery ( connect , "SELECT username, mtaserial FROM registroPessoal" ) outputDebugString("02") local resultado = dbPoll ( valor ,-1 ) outputDebugString("03") if resultado then outputDebugString("04") for _, search in ipairs ( resultado ) do outputDebugString("05") if (search["username"]) == val1 or search["mtaserial"] == serial then outputDebugString("07") outputChatBox("Esse nome de usuário já existe ou você já possui uma conta! tente novamente", jog) else outputDebugString("08") local serial = getPlayerSerial(jog) local password = tostring(val2) local nmAccount = getAccountName(getPlayerAccount(jog)) local PosX, PosY, PosZ = getElementPosition(jog) executeSQLQuery( "INSERT INTO registroPessoal (username, password, mtaserial, PosX, PosY, PosZ, accountName) valorS(?,?,?,?,?,?,?)", val1, password, serial, PosX, PosY, PosZ, nmAccount ) outputChatBox("Registro bem sucedido!", jog) end end end end) addCommandHandler("deltable", function() executeSQLQuery("DROP TABLE registroPessoal") outputDebugString("table deletada") end ) Fiz a debugação e a função de registrar para antes do for _, search, no caso no outPutDebugString("04"), a partir disto não se lê mais nada, então o problema deve se encontrar no dbPoll... Porém como não tenho muito conhecimento não sei oq esta sendo feito de errado...
  3. Hm compreendi, então seria algo como executeSQLQuery ("CREATE TABLE IF NOT EXISTS lojaEncanamento ( Material TEXT, Quantidade NUMERIC, Valor NUMERIC)") ? Mas no caso vamos supor de que exista 3 lojas correto? - A Loja 1 é de encanamento então o "material" seria FITA ISOLANTE e CANO correto? - A Loja 2 vende comida e bebida então o "material" seria HAMBÚRGUER e REFRIGERANTE. - A Loja 3 vende eletrônicos então o "material" seria CELULAR e GPS. Essas 3 lojas depende do mesmo deposito, eu no caso criaria 3 tabelas? Uma para cada loja? Ou tem como criar uma Tabela MAIN, onde ela contém todos os materiais e quando o dono abrir o painel eu verifico de qual loja ele é, e os materiais que são mostrados no painel é referente a loja?
  4. Salve, estou tentando criar um deposito de materiais. O script funcionaria da seguinte forma: Um dono de uma Loja de encanamento dentro do interior de sua loja digitaria /deposito onde abriria um painel! Neste Painel iria conter colunas. Na coluna 1 os materiais que ele pode comprar, na coluna 2 a quantidade que deposito possui, coluna 3 o valor do Material. Basicamente o que eu desejo é criar um cofre (deposito) De qual forma, ou qual a melhor forma de eu conseguir armazenar esses dados dentro deste "cofre", O Material, a Quantidade e o Valor? E outra como eu poderia fazer para inserir ou retirar os dados deste "cofre" ?
  5. Bom, falta algumas informações nesse post, exemplo "marcar", marcar o que? Uma pessoa? Um carro? Um outro local? Um objetivo? Entre outros... Mas enfim em um modo geral, marcações em mapas/minimapas são com BLIPS! Abaixo segue algumas funcs que podem te ajudar nisto: Criar o Blip: 1 - createBlip ( blip estático com posições x, y, z) = { Argumento 1 = Posição X Argumento 2 = Posição Y Argumento 3 = Posição Z Argumento 4 = Numero do icone ( pode ser encontrando aqui >>Radar Blips) Argumento 5 = Tamanho do blip Argumentos 6, 7 e 8 = CORES no formato RGB ( 255, 0, 255 | 255, 0, 0 | 0, 255, 255...) Argumento 9 = o Valor Alpha do Blip ( 0 - 255) } 2 - createBlipAttachedTo (este cria o blip sobre algum Elemento, e o "segue") = { Argumento1 = Elemento que o blip seguirá Argumento 2 =Numero do icone ( pode ser encontrando aqui >>Radar Blips) Argumento 3 = Tamanho do blip Argumentos 4, 5 e 6 = CORES no formato RGB ( 255, 0, 255 | 255, 0, 0 | 0, 255, 255...) Argumento 7 = o Valor Alpha do Blip ( 0 - 255) } visibilidade do blip: setElementVisibleTo = { Argumento 1 = o Elemento Argumento 2 = a quem ele será mostrado Argumento 3 = true ou false ( boolean) } destruir o blip: destroyElement = { Argumento 1 = o Elemento para ser destruído } comando: addCommandHandler = { Argumento 1 = o que o player terá que digitar ( string) Argumento 2 = nome da função que o comando executará Ex: addCommandHandler("marcar", Funcao_Marcar_Algo) } abaixo um pequeno código de exemplo: local Marker = createMarker(1, 1, 1, "cylinder", 2, 255, 0, 0, 255) -- cria um marker em uma posição function Funcao_Marcar_Algo(Jog, comando) -- começa a função if comando == "marcar" then -- se o comando for igual a " marcar" então blip = createBlipAttachedTo(Marker, 41, 2) -- cria um blip sobre o marker setElementVisibleTo(blip, Jog, true) -- deixa visivel ao player elseif comando == "desmarcar" then -- porém se o comando for igual a "desmacar" setElementVisibleTo(blip, Jog, false) --deixa invisivel ao player destroyElement(blip) -- destroi o Elemento blip end end addCommandHandler("marcar", Funcao_Marcar_Algo) -- adiciona o comando "marcar" a function addCommandHandler("desmarcar", Funcao_Marcar_Algo) -- adiciona o comando "desmarcar" a function OBS: Este é um código de exemplo BEM simples!!! Haverá outras coisas a ser adicionadas outras "verificações" mas enfim, somente uma "ilustração"! Caso tenha alguma duvida só estar perguntando...
  6. function pegarArma(player, commandName, arma) if arma == "ak" or arma == "mp5" or arma == "colt" then iprint("Comando certo") else outputChatBox("Arma invalída! Use: 'ak' ou 'mp5' ou 'colt' ") end end addCommandHandler("retirar", pegarArma) Tenta isso ai, não testei mas deve ser oq procura... tem dessa forma tbm... function pegarArma(player, commandName, arma) if arma == "ak" then iprint("Comando certo, ak") elseif arma == "mp5" then iprint("Comando certo, mp5") elseif arma == "colt" then iprint("Comando certo, colt") elseif arma ~= "ak" or arma ~= "mp5" or arma ~= "colt" then outputChatBox("Arma invalída! Use: 'ak' ou 'mp5' ou 'colt' ") end end addCommandHandler("retirar", pegarArma)
  7. Entendo, bom a função de criação do Ped já se encontra acima dos draws, acredito eu que até funcionaria se a função de criar o ped tbm tivesse a ativação pelo evento onClientRender, mas como não é o caso este método acaba não funcionando... Como disse antes quero evitar de adicionar o evento onClientRender na função de criação de Ped, pois ira causar muito Lag...
  8. Iae rapaziada, seguinte estou usando o resource Object_Preview para fazer um scoreboard, porém estou com um certo problema. O resource cria o ped atrás da imagem de fundo, vou mandar as fotos para deixar mais cla que estou falando... Sem o Fundo: Com o Fundo: Partes do code: imgs/fundoP.png = ao fundo(azul) dxDrawImage(x*135, y*93, x*796, y*538, "imgs/ScoreFundo.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) dxDrawImage(x*623, y*123, x*269, y*480, "imgs/fundoP.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) function CriarPed() local x1, y1, z1 = getCameraMatrix() myElement = createPed(getElementModel(localPlayer), x1, y1, z1) Preview = exports.Object_Preview:createObjectPreview(myElement, 0, 0, 180, 0.352, 0.28, 0.377, 0.375, false, false, true) end function abrir () if Scorebd_RDS == false then CriarPed() addEventHandler("onClientRender", root, MostrarScore) Scorebd_RDS = true showChat(false) for id, hudComponents in ipairs(hudTable) do setPlayerHudComponentVisible(hudComponents, false) end else removeEventHandler("onClientRender", root, MostrarScore) Scorebd_RDS = false showChat(true) exports.Object_Preview:destroyObjectPreview(Preview) destroyElement (myElement) myElement = nil for id, hudComponents in ipairs(hudTable) do setPlayerHudComponentVisible(hudComponents, true) end end end bindKey("tab", "both", abrir) Obs: talvez o problema seja devido ao evento OnClientRender. Pois acredito eu que, enquanto ativado o evento ele fica renderizando na tela do Player tipo um loop bem rapido! Enquanto isso o Ped só é criado uma unica vez. Por isto a sobreposição da Imagem sobre o Ped! Não queria adicionar o Ped no Evento onClientRender por motivos de lag! Alguém conhece uma outra forma?
  9. Hmmm caramba, agora faz sentido a tal diferença dos dígitos. Muito obrigado pela ajuda. ❤️ Aproveitando, quero agradecer e parabenizá-lo pelo vídeo do voice em seu canal. Aquilo me salvou de uma forma gigantesca no resource que estou tentando fazer de call kksksks...
  10. Bom, ajeitei os pontos que vc apontou. Deixei exatamente como esta no server-side, porém o certo bug permanece. Deixei o tempo rolar e percebi que digito 2 dos minutos esta correto, porém o digito 1, ele aparenta estar sei lá com uma especie de subtração ex: Aos 15:10 no chat, o DX marcou 05:10 Aos 25:10 no chat, o DX marcou 15:10 Entende? Ele ta sempre mostrando 1 numero a menos do que deveria... Irei continuar observando mais algum tempo para ver se é isto mesmo... Edit; Acabei de confirmar isto... No chat estava 33:05 Mas no DX tava 23:05 Sabe o porque de estar tendo essa subtração no primeiro digito dos minutos?
  11. No server side também esta dessa forma: addEventHandler ("onPlayerLogin", root, function (prevAcc, currAcc) setElementData (source, "tempo:Logou", getTickCount()) end) function meuTempoOnline (thePlayer, cmd) if (getElementData (thePlayer, "tempo:Logou")) then local tempoJogando = getTickCount() - getElementData (thePlayer, "tempo:Logou"); -- Isso também pode ser usado no client. local hours = tempoJogando/3600000; local minutes = (tempoJogando/60000) % 60; local seconds = (tempoJogando/1000) % 60; tempoOnline = string.format("%02d:%02d:%02d", hours, minutes, seconds); outputChatBox ("Você esta jogando a exatamente: "..tempoOnline.." segundos.", thePlayer); end end addCommandHandler ("temp", meuTempoOnline)
  12. Compreendi, eu acabei fazendo as divisões direto pela variável tempoJogando. No server-side esta tudo funcionando como os conformes porém, no client-side ele esta com um certo bug... Como foi especificado na imagem o TEMPO CORRETO é o que esta no CHAT (00:00:14) , mas por algum motivo o que esta aparecendo no Dx é outro numero (00:40:17). Obs: Nos segundos tem uma diferença de 3 segundos pois foi o tempo q eu levei para dar o comando /temp e tirar o print!! abaixo segue o que esta no lado client até o Momento: local tempoJogando = getTickCount() - getElementData (localPlayer, "tempo:Logou"); local hours = (tempoJogando/3600000); local minutes = ((tempoJogando/60000) % 60); local seconds = ((tempoJogando/1000) % 60); tempoOnline = string.format("%02d:%02d:%02d", hours, minutes, seconds); dxDrawText("Tempo Online: "..tempoOnline.."", 653, 413, 874, 441, tocolor(0, 0, 0, 255), 1.00, "default", "left", "top", false, false, false, false, false) Não entendo o porque deste bug, pois no Lado server esta do mesmo jeito a unica coisa que esta diferente é localPlayer (client) | thePlayer (server). Porém localPlayer e thePlayer são as mesmas pessoas...
  13. Vlw mano, me salvou! Fiz a divisão e consegui obter as horas, minutos e segundos. Agradeço pela ajuda.❤️ Segue abaixo caso alguém queira usar Lado Cliente: local tempoJogando = getTickCount() - getElementData (localPlayer, "tempo.Logou"); local time = tempoJogando; local hours = time/3600000; local minutes = (time/60000) % 60; local seconds = (time/1000) % 60; tempoOnline = string.format("%02d:%02d:%02d", hours, minutes, seconds); dxDrawText("Tempo Online: "..tempoOnline.."", 653, 413, 874, 441, tocolor(0, 0, 0, 255), 1.00, "default", "left", "top", false, false, false, false, false); Lado Server: function meuTempoOnline (thePlayer, cmd) if (getElementData (thePlayer, "tempo.Logou")) then local tempoJogando = getTickCount() - getElementData (thePlayer, "tempo.Logou"); local time = tempoJogando; local hours = time/3600000; local minutes = (time/60000) % 60; local seconds = (time/1000) % 60; tempoOnline = string.format("%02d:%02d:%02d", hours, minutes, seconds); outputChatBox ("Você esta jogando a exatamente: "..tempoOnline.." segundos.", thePlayer); end end addCommandHandler ("temp", meuTempoOnline)
  14. Compreendi no caso qual a melhor forma de ta fazendo essa index? Um Loop com FOR, getElementsBytype e DO numa TABLE resolveria?? E quanto a parte do setElementData eu vou necessitar dele pois vou puxar esse tempo para um Dx, no caso lado client. Talvez eu poderia fazer com trigger mas do mesmo jeito iria precisar dessas datas, um modo que eu pensei junto com o trigger é: Toda vez que o painel for acionado ele: - verifica o tick - seta a Data com o valor do tick. - ativa o trigger - No client Pega essa data e renderiza ao player! sendo assim não teria esse setTimer de um 1 em 1 segundo e sim só no momento que o player renderizar o painel com o onClientRender, sera que teria como?
  15. Salve, estou tentando fazer um sistema que, reconheça a quanto tempo o player se encontra online no servidor. A partir do momento que ele faz login na conta! Porém estou tendo problemas para conseguir... Segue abaixo o código feito ( tentei de diversas formas), porém essa foi a ultima tentativa de agora: addEventHandler("onPlayerLogin", root, function( _, acc ) tempo = getTickCount() end ) function Timer_Tempo_Jogador (jogador, timer) outputChatBox("1") local time = getTickCount() - tempo local hora = time.hour or 0 local minuto = time.minute or 0 outputChatBox("2") setElementData(jogador, "Tempo_Jogado", ""..hora..":"..minuto.."") outputChatBox("refresh") end setTimer(Timer_Tempo_Jogador, 1000, 0) function Ver_Tempo_Jogador (jog, cmd) if jog then local tempo_jogandos = getElementData(jog, "Tempo_Jogado") outputChatBox("Você esta jogando a exatamente:"..tempo_jogandos.."", jog) end end addCommandHandler("temp", Ver_Tempo_Jogador)