-
Posts
38 -
Joined
-
Last visited
Posts posted by Tony Scripter
-
-
Spoiler
function loginAccount(username, password) local source = client dbQuery( function(qh) local result = dbPoll(qh, 0) if #result > 0 then triggerClientEvent(source, "renderPanelUnity", source) else triggerClientEvent(source, "Notify", source, "Usuário ou senha incorretos.", "error") end end, connection, "SELECT * FROM sm_accounts WHERE username = ? AND password = ?", username, password) end addEvent("loginAccount", true) addEventHandler("loginAccount", getRootElement(), loginAccount)
Olá estou com alguns problemas na parte do triggerClientEvent(source, "Notify, source, "Usuário ou senha incorretos.", "error) quando executado ele aparece 2 notificações, obs: não é o script de notificação que está com o erro pois outras notificações estão normais, quem conseguir me ajudar agradeço
-
function createAccount(thePlayer, commandName, username, password) if not (username) or not password then triggerClientEvent(thePlayer, "Notify", root, "/"..commandName.." [Login] [Password].", "info") return end local query = dbExec(connection, "INSERT INTO sm_accounts VALUES(?,?,?)", username, password, nil) if query then triggerClientEvent(thePlayer, "Notify", root, "Account created.", "success") else triggerClientEvent(thePlayer, "Notify", root, "Erro system database.", "error") end end addCommandHandler("createAccount", createAccount)
Alguem poderia me ajudar estou tentando colocar uma verificação na database para ver se já possui o nome de login em uso porem não estou conseguindo fazer uma verificação para isso, já tentei de 2 maneira porem não obtive sucesso.
12 minutes ago, Tony Scripter said:function createAccount(thePlayer, commandName, username, password) if not (username) or not password then triggerClientEvent(thePlayer, "Notify", root, "/"..commandName.." [Login] [Password].", "info") return end local query = dbExec(connection, "INSERT INTO sm_accounts VALUES(?,?,?)", username, password, nil) if query then triggerClientEvent(thePlayer, "Notify", root, "Account created.", "success") else triggerClientEvent(thePlayer, "Notify", root, "Erro system database.", "error") end end addCommandHandler("createAccount", createAccount)
Alguem poderia me ajudar estou tentando colocar uma verificação na database para ver se já possui o nome de login em uso porem não estou conseguindo fazer uma verificação para isso, já tentei de 2 maneira porem não obtive sucesso.
Consegui fazer pessoal, não preciso mais de ajudar
-
5 hours ago, Boechat said:
Não era pra ter esse v[7], v[8] e v[9] no setElementRotation, sua tabela só tem 6 posições... Eu adicionei mais 3 posições aleatórias e mudei algumas coisinhas, veja se assim funciona. Qualquer coisa posta aí no fórum, eu não cheguei a testar o código.
settings = { table = { -- Marker X | Marker Y | Marker Z | Ped X | Ped Y | Ped Z | Rotação Ped X | Rotação Ped Y | Rotação Ped Z {-3, 3.5, 4.5, 10, 10, 10, 0, 0, 180}, --Aqui eu adicionei 3 posições aleatórias pro Ped X, Ped Y e Ped Z que estavam faltando... {-5, 3.5, 4.5, 10, 10, 10, 0, 0, 180} }, } local Table = {} addEventHandler('onResourceStart', root, function() for i, v in ipairs(settings.table) do Table[i] = createMarker(v[1], v[2], v[3], "cylinder", 1.2, 0, 0, 0, 0) addEventHandler("onMarkerHit", Table[i], teleportOnHit) end end) function teleportOnHit(hitElement) if not isElement(hitElement) or getElementType(hitElement) ~= "player" then return end local pos = getMarkerTeleport(source) if not pos then return end setElementPosition(localPlayer, pos[4], pos[5], pos[6]) setElementRotation(localPlayer, pos[7], pos[8], pos[9]) end function getMarkerTeleport(marker) for i, m in ipairs(Table) do if marker == m then return settings.table[i] end end return false end
Funcionou exatamente do jeito que precisava, obrigado pela ajuda.
- 1
-
15 hours ago, Blaack said:
Rapaz como voce ta puxando isso?
settings = { table = { -- Marker X | Marker Y | Marker Z | Ped X | Ped Y | Ped Z | Rotação Ped X | Rotação Ped Y | Rotação Ped Z {-3, 3.5, 4.5, 0, 0, 180}, {-5, 3.5, 4.5, 0, 0, 180} }, } local Table = {} for i,v in ipairs(settings.table) do Table[i] = createMarker(v[1], v[2], v[3], "cylinder", 1.2, 0, 0, 0, 0) addEventHandler("onMarkerHit", Table[i], function(hitElement) if getElementType(hitElement) == "player" then setElementPosition(localPlayer, v[4], v[5], v[6]) setElementRotation(localPlayer, v[7], v[8], v[9]) end end) end
Dessa forma.
-
settings = { table = { -- Ped X | Ped Y | Ped Z | Rotação Ped X | Rotação Ped Y | Rotação Ped Z {-3, 3.5, 4.5, 0, 0, 180}, {-5, 3.5, 4.5, 0, 0, 180} }, }
Na tabela acima possuem as posições de um setElementPosition e setElementRotation mas quando eles são executados eles vão aleatoriamente, a tabela 01 e uma posição e a tabela 02 e outra mas quando executada a posição eles acabam indo aleatoriamente eu posso executar a função no marker da tabela 01 e acabar sendo teleportado para a posição da tabela 02
-
5 hours ago, andr0xy said:
Pode salvar em qualquer lugar.
Ok obrigado
-
8 hours ago, andr0xy said:
Olá. Você pode gerar números de 0 a 9 usando math.random. Crie uma função pra facilitar. Algo deste tipo:
function generatePhoneNumber(startsWith) local str = startsWith or math.random(0, 9) for i = 1, 7 do str = str .. math.random(0, 9) end return string.sub(str, 1, 4) .. "-" .. string.sub(str, 5, 8) end print(generatePhoneNumber()) -- Início aleatório print(generatePhoneNumber(5)) -- Início do número começando com 5 sempre
Você pode testar o código acima aqui neste site.
Entendi, eu poderia salvar esse numero em setElementData ?
-
Estou fazendo um sistema de chip de celular como eu poderia gerar um numero para servir como numero de celular ? exemplo 1234-1234
-
Olá pessoal estou criando um custom character porem eu não sei como eu posso salvar de uma maneira facil as roupas no ped quando ele entra e sai do servidor, alguem poderia me dar um exemplo ? nunca fiz um save system de roupas muito menos de custom character
-
4 hours ago, andr0xy said:
Entendi. Você pode fazer desta forma:
local animationAlpha = 0 local animationDelta = 0.08 local animationStep local function render() if animationStep == "in" then animationAlpha = math.min(animationAlpha + animationDelta, 1) -- Vai de 0 a 1. Basta multiplicar pelo valor máximo if animationAlpha == 1 then animationStep = "out" end elseif animationStep == "out" then animationAlpha = math.max(animationAlpha - animationDelta, 0) -- Vai de 1 a 0. if animationAlpha == 0 then animationStep = "in" end end dxDrawImage(0, 0, 200, 200, tocolor(255, 255, 0, animationAlpha * 255), false) -- Exemplo com o valor máximo sendo 255 dxDrawImage(0, 205, 200, 200, tocolor(255, 0, 0, animationAlpha * 100), false) -- Exemplo com o valor máximo sendo 100 end -- Supondo que esta seja a função de abrir o painel bindKey("u", "down", function() animationAlpha = 0 animationStep = "in" addEventHandler("onClientRender", root, render) end)
Perfeito era exatamente dessa forma, eu até tentei fazer com 2 variaveis mas nao tive sucesso mas agora eu sei por qual motivo, obrigado.
-
On 19/05/2021 at 08:55, andr0xy said:
Como você está tentando fazer?
Pois você precisaria de uma variável de estado (true/false). Assim que entrar naquela condição, ela ficaria true, caso esteja fora da condição, false. Aí bastaria checar em alguma bindKey ou da maneira que você tá fazendo, se essa variável é true.
Tranquilo consegui fazer, estava com a mente um pouco trava
-
15 minutes ago, andr0xy said:
Olá.
local animationAlpha = 0 local function render() animationAlpha = math.min(animationAlpha + 0.08, 1) -- Vai de 0 a 1. Basta multiplicar pelo valor máximo dxDrawImage(0, 0, 200, 200, tocolor(255, 255, 0, animationAlpha * 255), false) -- Exemplo com o valor máximo sendo 255 dxDrawImage(0, 205, 200, 200, tocolor(255, 0, 0, animationAlpha * 100), false) -- Exemplo com o valor máximo sendo 100 end -- Supondo que esta seja a função de abrir o painel bindKey("u", "down", function() animationAlpha = 0 addEventHandler("onClientRender", root, render) end)
Como dito no comentário dentro do código, a variável animationAlpha armazena o valor 0, que vai até o valor 1. Com esse valor, bastaria multiplicar pelo valor máximo, pois qualquer número multiplicado por 1, é ele mesmo.
A biblioteca math possui um método chamado min, que pega o MENOR valor. No caso do exemplo, a variável está sendo incrementada com + 0.08, até chegar a 1. Então, se o valor for maior que 1, ele vai pegar o menor valor, que é 1, como eu defini.
Entendi esse metodo porem, eu estou tentando fazer do seguinte modo quando a opacidade alcança 255 ela volta descendo para 0 quando ela alcança 0 ela volta subindo para 255, isso e possivel ?
-
Olá pessoal eu não sou muito de fazer animações em dx então eu precisava de uma ajuda, estou fazendo um painel e queria saber como eu poderia fazer uma animação de opacidade, que nunca para para colocar na logo do painel, a animação seria aplicada na opacidade da logo indo de 0 a 255
-
On 19/05/2021 at 08:55, andr0xy said:
Como você está tentando fazer?
Pois você precisaria de uma variável de estado (true/false). Assim que entrar naquela condição, ela ficaria true, caso esteja fora da condição, false. Aí bastaria checar em alguma bindKey ou da maneira que você tá fazendo, se essa variável é true.
Bom esse e o problema não consegui ter uma para fazer essa bind key
-
6 hours ago, andr0xy said:
Olá.
Essa pergunta foi feita no Discord Oficial do MTA: SA. Irei responder da mesma maneira que lá, com o código de exemplo.
local greenLineWidth = math.random(100, 300) local greenLineHeight = 30 local greenLineX = 5 local greenLineY = 300 local greenLineOffset = 0 local redLineWidth = math.random(10, 20) local redLineHeight = greenLineHeight local redLineX = greenLineX + math.random(greenLineWidth) local redLineY = greenLineY addEventHandler("onClientRender", root, function() -- Progresso greenLineOffset = math.min(greenLineOffset + 1, greenLineWidth) -- Linha verde dxDrawRectangle(greenLineX, greenLineY, greenLineWidth, greenLineHeight, tocolor(20, 21, 22, 255), false) dxDrawRectangle(greenLineX, greenLineY, greenLineOffset, greenLineHeight, tocolor(45, 255, 45, 220), false) -- Linha vermelha dxDrawRectangle(redLineX, redLineY, redLineWidth, redLineHeight, tocolor(255, 45, 45), false) -- Borda da linha vermelha dxDrawRectangle(redLineX, redLineY, 1, redLineHeight, tocolor(255, 255, 255, 220), false) dxDrawRectangle(redLineX + redLineWidth, redLineY, 1, redLineHeight, tocolor(255, 255, 255, 220), false) -- Checagem local greenLineEnd = greenLineX + greenLineOffset local redLineStart = redLineX local redLineEnd = redLineX + redLineWidth if greenLineEnd >= redLineStart and greenLineEnd <= redLineEnd then dxDrawText("APERTE O BOTÃO!", greenLineX, greenLineY, greenLineX + greenLineWidth, greenLineY + greenLineHeight, tocolor(255, 255, 255, 255), 1.2, "default-bold", "center", "center") end end)
Bom consegui entender esse codigo, porem estou tentando realizar a parte de apertar o botão e não estou conseguindo fazer, você poderia me dar um exemplo de como fazer ?
-
Olá queria saber se alguem poderia me ajudar dando um exemplo de como eu poderia fazer uma skill bar (Quando a barra verde chega ao quadrado vermelho se a pessoa apertar E em cima na hora ela consegue passar e destrancar o carro.) so quero saber a parte de skill bar e nao de trancar o carro para ser muito mais simples
-
Estou desenvolvendo um emprego, para aprimorar a minha programação e tenho dificuldades em tabela, queria saber como eu poderia fazer um emprego no seguinte modelo:
TabelaMarkers = { {1, 1, 1}, -- Primeiro Marker {2, 2, 2}, -- Segundo Marker {3, 3, 3}, -- Terceiro Marker {4, 4, 4}, -- Quarto Marker }
O jogador iria pegar um carro, e iria gerar o primeiro marker, quando o player passar por cima do marker o veiculo para e fica freezado durante 5 segundos, depois que foi liberado gera o 2 marker, depois o 3 marker e por ultimo o 4 marker.
-
29 minutes ago, Boechat said:
E aonde está sendo chamado a função Progress?
Testa com esse comando aqui para ver se funciona:
function Progress(playerSource, tempoms) triggerClientEvent(playerSource, "Progress:bar", playerSource, tempoms) end addEvent("Progress:bar", true) addEventHandler("Progress:bar", root, Progress) function teste(playerSource) Progress(playerSource, 5000) end addCommandHandler("teste", teste)
Infelizmente ainda nao foi continua printando a mesma coisa no debug ERROR: 16: attempt to perform arithmetic on upvalue 'temp' (a nil value)
Consegui fazer ir, obrigado pela ajuda amigo
-
4 hours ago, Boechat said:
Me mostra a parte que vc da um trigger no evento "Progress:bar", talvez você esteja passando um valor nulo como parâmetro.
function Progress(sourceElement, tempoms) triggerClientEvent(sourceElement, "Progress:bar", sourceElement, tempoms) end addEvent("Progress:bar", true) addEventHandler("Progress:bar", root, Progress) function teste(source) triggerClientEvent(source, "Progress:bar", root, 5000) end addCommandHandler("teste", teste)
-
15 minutes ago, Boechat said:
A variável temp declarada no começo do código com o valor nulo é diferente da passada por argumento que só vale dentro da função, então o que está passando como parâmetro no interpolate between tem o valor nulo.
O temp é em ms né?
Veja se funciona dessa forma:
local temp = nil function Hud() local progresso = interpolateBetween(0, 0, 0, x*100, 0, 0, (getTickCount()-tick) / temp, "Linear") if temp + tick <= getTickCount() then removeEventHandler("onClientRender", root, Hud) end dxDrawCircle(x*1317, y*862, 18, progresso/100, progresso/100*360, tocolor(128, 128, 128, 255)) end function progress(tempoms) temp = tempoms tick = getTickCount() addEventHandler("onClientRender", root, Hud) end addEvent("Progress:bar", true) addEventHandler("Progress:bar", root, progress)
Sim o codigo e em ms, testei aqui porem ainda continuou dando o mesmo error será que tem mais alguma coisa errada ?
-
Estou com um problema com a tentar fazer uma progress bar
Spoilerlocal tick = getTickCount() local temp = nil function Hud() local progresso = interpolateBetween(x*0, 0, 0, x*100, 0, 0, (getTickCount()-tick)/temp, "Linear") dxDrawCircle(x*1317, y*862, 18, progresso/100, progresso/100*360, tocolor(128, 128, 128, 255)) end function progress(temp) tick = getTickCount() addEventHandler("onClientRender", root, Hud) setTimer(function() removeEventHandler("onClientRender", root, Hud) end, temp, 1) end addEvent("Progress:bar", true) addEventHandler("Progress:bar", root, progress)
No debugscript esta dizendo 16: attempt to perform arithmetic on upvalue 'temp' (a nil value)
Queria fazer a exportação de time no triggerEvent para assim não precisar ficar recriando a progress bar
-
1 hour ago, andr0xy said:
Olá.
Você pode criar uma tabela e anexar o jogador, nela você iria atribuir o total de tarefas completadas. Com esse total, basta usá-lo como índice na sua tabela. Também, claro, se for maior que o total de markers possíveis, então nada iria executar.
Bom eu queria fazer um trabalho de limpeza com um carrinho, assim ele iria passando sempre pelos mesmos markers você conseguiria me dar um exemplo ?
-
Estou fazendo um script de trabalho e queria utilizar tabela para facilitar um pouco mais porem estou com algumas duvidas
Markers_Trabalho = { -- x, y, z {2514, -1649, 14}, -- Marker[1] {2524, -1658, 15}, -- Marker[2] {2534, -1662, 14.5}, -- Marker[3] }
Está e as tabela dos markers, eu queria que eles tivessem uma sequecia, apos o player passar pelo Marker[1] ele e encaminhado ao Marker[2] e assim por diante, como eu poderia fazer essa sequencia nos markers
-
7 hours ago, andr0xy said:
Estou pegando todos os jogadores apenas, para não ter que passar o root no primeiro parâmetro do triggerClientEvent. Como você quer sincronizar para os outros jogadores, é necessário enviar para eles também.
Entendi, essa função então e muito util obrigado, irei começar a ver aqueles videos que você me passou quanto mais conteudo melhor
Duplicação de Info
in Programação em Lua
Posted
Consegui arrumar pessoal era um erro meu bem simples apenas coloquei uma verificação de tempo no uso da função e funcionou perfeitamente