Jump to content

Vazern

Members
  • Posts

    94
  • Joined

  • Last visited

Everything posted by Vazern

  1. Desculpem-me o anti-topic, mas é satisfatório ver que um dos primeiros mods que eu fiz são utilizados até hoje, rs.
  2. Nem havia notado que ela estava ali fora da verificação. Obrigado!
  3. A variável "isVisible" não está definida em lugar algum, ele poderia por um "isVisible = true" antes da função.
  4. Só fazer uma função que remova esta "tela de carregamento", e exporta-la no script do painel de login.
  5. Agora entendi, muito obrigado a todos!
  6. Muito obrigado a ambos! Mas poderiam me explicar pequenos detalhes? É que não gosto de pegar o código pronto para entender. @DNL291 poderia me explicar como funciona o fromJSON/toJSON? Eu olhei na Wiki, mas não entendi direito, além do meu inglês ser péssimo. @MaligNos poderia me explicar sobre o uso e como funciona o unpack e o split? Caso não queiram/possam entendo perfeitamente, mesmo que seja o mínimo possível sobre ambos, eu tentarei o máximo possível entender. EDIT: Não sei o que é JSON .-.
  7. Olá pessoas deliciosamente bonitas! Bom, estou desenvolvendo um save-system por SQLite, porém, na parte de salvar as coordenadas do jogador, do contrário de salvar cada um dos tipos de coordenadas em uma coluna (X - Y - Z) eu queria salvar em uma única coluna (Coordenadas), mas como vocês devem saber, dados obtidos de um db são retornados como string, então utilizei Vector3 e tonumber, mas com o tonumber retorna um valor nulo, e sem ele retorna uma string, como eu poderia fazer para retornar o valor original de coordenadas? Código: local x2, y2, z2 = 675.99396,-1692.27075,8.70498 -- LUGAR QUE VAI SPAWNAR QUANDO CRIAR CONTA NOVA local db = exports.ds_sqlite db:exec("CREATE TABLE IF NOT EXISTS Usuarios (Nick TEXT, Usuario TEXT, Serial TEXT, Skin INT, Dinheiro INT, Coordenadas TEXT, Interior INT, Dimensao INT, Procurado INT)") function loadUsuarios(player, acc) local accName = getAccountName(getPlayerAccount(player)) local datas = db:query("SELECT * FROM Usuarios WHERE Usuario=? LIMIT 1", accName) if (datas and type(datas) == "table" and #datas > 0) then -- @Datas setElementData(player, "CRP:Skin", tonumber(datas[1]["Skin"])) setElementData(player, "CRP:Dinheiro", tonumber(datas[1]["Dinheiro"])) setElementData(player, "CRP:Coordenadas", datas[1]["Coordenadas"]) setElementData(player, "CRP:Interior", tonumber(datas[1]["Interior"])) setElementData(player, "CRP:Dimensao", tonumber(datas[1]["Dimensao"])) setElementData(player, "CRP:Procurado", tonumber(datas[1]["Procurado"])) iprint(datas[1]["Coordenadas"]) -- @Funções setCameraTarget(player, player) fadeCamera(player, true, 2.0) spawnPlayer(player, Vector3(datas[1]["Coordenadas"])) setElementPosition(player, Vector3(datas[1]["Coordenadas"])) setElementModel(player, tonumber(datas[1]["Skin"])) setPlayerMoney(player, tonumber(datas[1]["Dinheiro"])) setElementInterior(player, tonumber(datas[1]["Interior"])) setElementDimension(player, tonumber(datas[1]["Dimensao"])) setPlayerWantedLevel(player, tonumber(datas[1]["Procurado"])) else setCameraTarget(player, player) fadeCamera(player, true, 2.0) spawnPlayer(player, x2, y2, z2) setElementPosition(player, x2, y2, z2) local x, y, z = getElementPosition(player) db:exec("INSERT INTO Usuarios VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", getPlayerName(player):gsub("#%x%x%x%x%x%x", ""), accName, getPlayerSerial(player), getElementModel(player), getPlayerMoney(player), x..","..y..","..z + 0.7, getElementInterior(player), getElementDimension(player), getPlayerWantedLevel(player)) end end function saveUsuarios(player, acc) local accName = getAccountName(getPlayerAccount(player)) local datas = db:query("SELECT * FROM Usuarios WHERE Usuario=? LIMIT 1", accName) if (#datas > 0) then local x, y, z = getElementPosition(player) db:query("UPDATE Usuarios SET Nick=?, Usuario=?, Serial=?, Skin=?, Dinheiro=?, Coordenadas=?, Interior=?, Dimensao=?, Procurado=?", getPlayerName(player):gsub("#%x%x%x%x%x%x", ""), accName, getPlayerSerial(player), getElementModel(player), getPlayerMoney(player), x..","..y..","..z + 0.7, getElementInterior(player), getElementDimension(player), getPlayerWantedLevel(player)) end end addEventHandler("onPlayerLogin", root, function() for index, players in ipairs(getElementsByType("player")) do if (players == source) then local account = getPlayerAccount(players) loadUsuarios(players, account) end end end ) addEventHandler("onPlayerQuit", root, function() for index, players in ipairs(getElementsByType("player")) do if (players == source) then local account = getPlayerAccount(players) if (account) then saveUsuarios(players, account) end end end end )
  8. Por nada! Se quiser deixar o "Thanks" eu agradeceria, rs.
  9. Como o @DNL291 falou, você pode utilizar account-data para salvar dados em uma conta, mas também pode utilizar banco de dados (database) para salvar, o que até torna mais fácil de gerenciar e editar todos os dados.
  10. Acho que seria mais simples fazer para quando passar em um marker gerar um valor de recompensa aleatório de 500 a 2000 (aí depende do script) e utilizar verificações através de tabelas, exemplo: if (entrega[source] == 1) then setElementPosition(marker[source], x, y, z) givePlayerMoney(source, math.random(1000, 2500)) end E aí do contrário de criar vários markers, você criaria somente um, e o programaria para mudar de lugar quando passasse no mesmo.
  11. Nem precisa fazer as verificações, só colocar com o nome do arquivo tostring(velocidade)..".png"
  12. Tem uma função que permite anexar elementos DX assim em texturas não é? Não lembro o nome.
  13. Desculpa o "anti-topic", mas como @DNL291 já respondeu... muito legal o projeto em!
  14. [EU NÃO MORRI NÃO]

    Me mandaram print ae de nego dizendo que dei calote em cliente, ou morri.

    NÃO ACREDITEM NESSAS COISAS!

    Meu perfil foi bloqueado, e como só tinha eu de administrador na página de scripting e na do meu servidor foram bloqueados também.

    Clientes, fiquem tranquilos, seus pedidos estão salvos no meu banco de dados, agora mesmo eu ainda estou produzindo mods.

    1. Show previous comments  6 more
    2. #DaNiLiN

      #DaNiLiN

      Caso foi bloqueado depois de um Mês eles liberam denovo.

    3. Krojis mta

      Krojis mta

      concerteza cara faz parte !

    4. josias samp

      josias samp

      mds os cara ate banner de homenagem fizeram

  15. Então, é que quando eu altero para source, simplesmente não funciona, por isso o loop. Em relação ao código do tópico, uma coisa que gostaria de ressaltar, e caso alguém veja isto, talvez sirva de ajuda. Eu utilizei datas[4] porque pensei que o o índice "4" era a 4° coluna do banco de dados, sendo que um amigo meu (@Blowid) me explicou que se refere a linha do banco de dados, por isso os dados não eram definidos, já que quando eu colocava [4] além do LIMIT 1 não permitir, não havia uma 4° linha de dados para aquele usuário.
  16. Boa observação. No caso eu faria: addEventHandler("onPlayerLogin", root, function() for index, players in ipairs(getElementsByType("player")) do if (players == source) then local account = getPlayerAccount(players) loadDiamonds(players, account) end end end ) addEventHandler("onPlayerQuit", root, function() for index, players in ipairs(getElementsByType("player")) do if (players == source) then local account = getPlayerAccount(players) if (account) then saveDiamonds(players, account) end end end end ) Certo?
  17. Obrigado! Mas ainda continua praticamente a mesma coisa, ele definiu o valor padrão (10), porém, eu alterei este valor, e após isto quando reconectei, ficou salvo no banco de dados, mas ao logar, não é definido valor nenhum, ao utilizar o execute no painel admin ele simplesmente retorna "false". NOTA: Eu removi o "tonumber" e continua a mesma coisa, o que poderia ser? Consegui! Havia esqueci de mudar de datas[4]["Diamantes"] para datas["Diamantes"], rs. Muito obrigado.
  18. Olá pessoal! Tudo bem? Espero que sim. Então, estou fazendo um sistema de uma moeda diferente, que seriam "diamantes", fiz todo o código, ele armazena no banco de dados SQLite normalmente, mas na hora de carregar os dados (no evento onPlayerLogin que utiliza a função que eu fiz {loadDiamonds}) eles simplesmente não são carregados para o element-data. Poderiam me falar o que fiz de errado? local db = exports.ds_sqlite db:exec("CREATE TABLE IF NOT EXISTS Diamonds (Nick TEXT, Usuario TEXT, Serial TEXT, Diamantes INT)") function loadDiamonds(player, acc) local accName = getAccountName(getPlayerAccount(player)) local datas = db:query("SELECT * FROM Diamonds WHERE Usuario=? LIMIT 1", accName) if (#datas == 0) then setElementData(player, "CRP:Diamonds", 10) db:exec("INSERT INTO Diamonds VALUES (?, ?, ?, ?)", getPlayerName(player):gsub("#%x%x%x%x%x%x", ""), accName, getPlayerSerial(player), getElementData(player, "CRP:Diamonds")) else db:query("UPDATE Diamonds SET Nick=?, Usuario=?, Serial=?, Diamantes=?", getPlayerName(player):gsub("#%x%x%x%x%x%x", ""), accName, getPlayerSerial(player), datas[4]["Diamantes"]) setElementData(player, "CRP:Diamonds", tonumber(datas[4]["Diamantes"])) end end function saveDiamonds(player, acc) if (getElementData(player, "CRP:Diamonds")) then local accName = getAccountName(getPlayerAccount(player)) local datas = db:query("SELECT * FROM Diamonds WHERE Usuario=? LIMIT 1", accName) if (#datas > 0) then db:query("UPDATE Diamonds SET Nick=?, Usuario=?, Serial=?, Diamantes=?", getPlayerName(player):gsub("#%x%x%x%x%x%x", ""), accName, getPlayerSerial(player), getElementData(player, "CRP:Diamonds")) end end end addEventHandler("onPlayerLogin", root, function() for index, players in ipairs(getElementsByType("player")) do local account = getPlayerAccount(players) loadDiamonds(players, account) end end ) addEventHandler("onPlayerQuit", root, function() for index, players in ipairs(getElementsByType("player")) do local account = getPlayerAccount(players) if (account) then saveDiamonds(players, account) end end end )
  19. Sim, eu quando comecei sofri com isto, então logo bolei esta "tática" de um marker invisível, e outro visível mas somente para ficar mais bonito. Sobre o shader do marker o @asrzk já respondeu, então nem adianta kk
  20. Poderia ajudar, mas odeio este tipo de cópia, é total falta de respeito para com o antigo dono.
  21. Você colocou a posição Z baixa demais. Para o marker funcionar perfeitamente geralmente ele fica um pouco acima do chão, então eu geralmente crio 2 markers, um que fica abaixo, e só serve para deixar mais bonito, e outro que é acionado no evento, e que eu deixo invisível.
  22. Posso vender um na minha página do facebook.
  23. Vazern

    New GUI

    Well, answering the question of both: I know I have to modify the client, even a while ago (right after I started with MTA and with Graphic Design) I created a (CLICK TO SEE), however, I'm referring to MTA updating your GUI, I know a lot well the part of the GUI made by image does not take even 30 minutes, I just need to update the gridlists, editbox and other elements for a more beautiful interface, new fonts would look good too.
  24. Mais um triste caso de pegar código pronto para painel DX sem ter conhecimento algum. ;-;
  25. Vazern

    New GUI

    Hello! I noticed that the MTA for years uses the same GUI, you guys from the team, never felt like redoing it? I know very well that for the GUI to be all by image, there are not many complications. A 100% flat interface (as it were in DX) would be very attractive, and would make us scripters who worry about the interface we stop using DX to use the new interface Multi Theft Auto. (BAD ENGLISH BY: TRANSLATE GOOGLE)
×
×
  • Create New...