+[T]rakin Posted December 13, 2018 Share Posted December 13, 2018 Olá gostaria que alguém pudesse me ajuda com esse script aqui eu estou tentando fazer um /reparar perto do carro, mas eu peguei uma função da wiki getNearestVehicle so que dessa função está pegando todos os carros do mapa e eu so queria o carro que está perto do mecanico/jogador. Server-side function Repara_Veiculo_Mecanico(player,distance) local JogadorX,JogadorY,JogadorZ = getElementPosition(player) local JogadorInterior = getElementInterior(player) local JogadorDimensao = getElementDimension(player) for _,v in pairs(getElementsByType("vehicle")) do local vint,vdim = getElementInterior(v),getElementDimension(v) local HP = getElementHealth(v) if vint == JogadorInterior and vdim == JogadorDimensao then local VeiculoX,VeiculoY,VeiculoZ = getElementPosition(v) local dis = getDistanceBetweenPoints3D(JogadorX,JogadorY,JogadorZ,VeiculoX,VeiculoY,VeiculoZ) if not getPedOccupiedVehicle(player) then if HP < 100 then if dis < 2 then outputChatBox ( "Você reparou o carro com sucesso!!", player, 255, 255, 255, true ) fixVehicle(v) playSoundFrontEnd( player, 46 ) else exports.Scripts_Dxmessages:outputDx(player, "Sem carro perto!!", "warning") end else outputChatBox ( "Carro ja está reparado!!", player, 255, 255, 255, true ) end else outputChatBox ( "Voce está dentro de um veiculo!!", player, 255, 255, 255, true ) end end end end addCommandHandler("reparar", Repara_Veiculo_Mecanico) Link to comment
#DaNiLiN Posted December 13, 2018 Share Posted December 13, 2018 for _,v in pairs(getElementsByType("vehicle")) do = Loop de todos os veiculos do servidor. Tente isso function repair(source,cmd,pname) local cliente = getPlayerFromPartialName(pname) -- Verifica nick do Cliente if isElement(cliente) then -- Verifica Se cliente é um Elemento if isPedInVehicle(cliente) then -- Verifica se o cliente está em um veiculo ou não local seat = getPedOccupiedVehicleSeat(cliente) -- Verifica o acento que o cliente está. if seat == 0 then -- Caso o acento for igual a 0 então... local cx,cy,cz = getElementPosition(cliente) -- Verifica posições do cliente local x,y,z = getElementPosition(source) -- Verifica Posição do Mecanico local dist = getDistanceBetweenPoints3D(x,y,z,cx,cy,cz) -- Verifica função de ambas das partes. if dist <= 7 then -- Se a distancia dos Dois jogadores for Menor ou = a 7 Então tudo ocorrerá com os Conformes. local Cliente_Money = getPlayerMoney(cliente) -- Verifica todo o dinheiro do jogador if Cliente_Money >= 500 then -- se o Money do cliente for Maior ou Igual há 500. local Vehicle_C = getPedOccupiedVehicle(cliente) -- Verifica se o Jogador está em um veiculo ou não if isElement(Vehicle_C) then -- Verifica se "Vehicle_C e um Elemento, Dai Então (fixVehicle) fixVehicle(Vehicle_C) -- Repara Totalmente o veiculo do Cliente end -- Fim exports.Scripts_Dxmessages:outputDx(source, "Você reparou o veiculo Do"..getPlayerName(cliente), "warning") ---- Mensagem Cliente Sem Money (Line 117) else exports.Scripts_Dxmessages:outputDx(source, "O Jogador "..getPlayerName(cliente).." Não tem Dinheiro Suficiente!", "error") end ---- Mensagem Distancia (Line 115) else exports.Scripts_Dxmessages:outputDx(source, "Chegue mais perto do jogador!", "error") end ---- Mensagem If Not seat = 0 (Line 111) else exports.Scripts_Dxmessages:outputDx(source, "O Jogador "..getPlayerName(cliente).." Não é o Motorista do Veiculo!", "error") end ---- Mensagem Cliente isPedInVehicle (Line 109) else exports.Scripts_Dxmessages:outputDx(source, "O Jogador "..getPlayerName(cliente).." Não Esta em um Veiculo!", "error") end ---- Mensagem Cliente Não encontrado (Line 108) else exports.Scripts_Dxmessages:outputDx(source, "O Jogador Não Foi Encontrado", "error") =end end addCommandHandler("reparar",repair) 1 Link to comment
+[T]rakin Posted December 13, 2018 Author Share Posted December 13, 2018 Bom obrigado pela essa ajuda, mas não queria reparar o veiculo assim pois gostaria que eu tivesse perto do carro digitaria /reparar sem precisar tem alguém dentro do carro. Estou querendo esse script para o servidor RP pois eu não muito certo você arruma um carro dentro dele né? Link to comment
#DaNiLiN Posted December 13, 2018 Share Posted December 13, 2018 Infelizmente não conheço nenhuma função que possa ser usado juntamente com addCommandHandler que repare um veiculo especifico. Espero que outra pessoa possa te ajudar com isso 1 Link to comment
+[T]rakin Posted December 13, 2018 Author Share Posted December 13, 2018 1 minute ago, danilin said: Infelizmente não conheço nenhuma função que possa ser usado juntamente com addCommandHandler que repare um veiculo especifico. Espero que outra pessoa possa te ajudar com isso Ok obg pela força. Obs: Eu vi do servidor Infinity ai gostei muito Link to comment
#DaNiLiN Posted December 13, 2018 Share Posted December 13, 2018 a Sim pois lá eles usaram "onClientClick", Só não sei como eles fizeram utlizar em um veiculo especifico. 1 Link to comment
Other Languages Moderators androksi Posted December 13, 2018 Other Languages Moderators Share Posted December 13, 2018 (edited) Olá. Bom, fiz aqui para você, tá incompleto mas você pode adicionar mais coisas e fazer o que quiser com o código. Basta você chegar perto de um veículo, apertar 'M' para fazer o cursor aparecer e clicar em cima de um veículo. -- client-side addEventHandler ( "onClientClick", root, function ( _, _, _, _, _, _, _, clickedElement ) if ( clickedElement ) then if ( getElementType ( clickedElement ) == "vehicle" ) then triggerServerEvent ( "onClientRequestRepair", localPlayer, clickedElement ); end end end bindKey ( "M", "down", function ( ) showCursor ( not isCursorShowing ( ) ); end ) -- server-side addEvent ( "onClientRequestRepair", true ); addEventHandler ( "onClientRequestRepair", root, function ( element ) local ePos = getElementPosition ( element ); local pPos = getElementPosition ( source ); local distance = getDistanceBetweenPoints3D ( ePos[1], ePos[2], ePos[3], pPos[1], pPos[2], pPos[3] ); if ( distance > 3 ) then return outputChatBox ( "* ERRO: O veículo não está próximo de você.", source, 255, 0, 0 ); end fixVehicle ( element ); end ) Como eu disse, tá incompleto. Altere ou faça mais coisas no server-side, creio eu que não seja necessário mexer no client-side. Edited December 13, 2018 by asrzk Link to comment
+[T]rakin Posted December 13, 2018 Author Share Posted December 13, 2018 (edited) 48 minutes ago, asrzk said: Olá. Bom, fiz aqui para você, tá incompleto mas você pode adicionar mais coisas e fazer o que quiser com o código. Basta você chegar perto de um veículo, apertar 'M' para fazer o cursor aparecer e clicar em cima de um veículo. -- client-sideaddEventHandler ( "onClientClick", root, function ( _, _, _, _, _, _, _, clickedElement ) if ( clickedElement ) then if ( getElementType ( clickedElement ) == "vehicle" ) then triggerServerEvent ( "onClientRequestRepair", localPlayer, clickedElement ); end end endbindKey ( "M", "down", function ( ) showCursor ( not isCursorShowing ( ) ); end )-- server-sideaddEvent ( "onClientRequestRepair", true );addEventHandler ( "onClientRequestRepair", root, function ( element ) local ePos = getElementPosition ( element ); local pPos = getElementPosition ( source ); local distance = getDistanceBetweenPoints3D ( ePos[1], ePos[2], ePos[3], pPos[1], pPos[2], pPos[3] ); if ( distance > 3 ) then return outputChatBox ( "* ERRO: O veículo não está próximo de você.", source, 255, 0, 0 ); end fixVehicle ( element ); end ) Como eu disse, tá incompleto. Altere ou faça mais coisas no server-side, creio eu que não seja necessário mexer no client-side. Está faltando um ) http://prntscr.com/lui3ex Obs:Ignora o nome do script rsrs Edited December 13, 2018 by +[T]rakin Link to comment
DNL291 Posted December 13, 2018 Share Posted December 13, 2018 8 hours ago, +[T]rakin said: Está faltando um ) http://prntscr.com/lui3ex Obs:Ignora o nome do script rsrs Só colocar um ')' na linha 12 do código do asrzk. Link to comment
+[T]rakin Posted December 14, 2018 Author Share Posted December 14, 2018 (edited) 13 hours ago, DNL291 said: Só colocar um ')' na linha 12 do código do asrzk. Sim tinha resolvido mas acabou a energia e não deu para avisa. Gostei muito dessa forma o unico problema é que da dois click e isso acabar meio que bugando as mensagens. Edited December 14, 2018 by +[T]rakin Link to comment
Other Languages Moderators Lord Henry Posted December 14, 2018 Other Languages Moderators Share Posted December 14, 2018 addEventHandler ( "onClientClick", root, function ( _, state, _, _, _, _, _, clickedElement ) if not (state == "up") then return end if ( clickedElement ) then -- Continua o resto 1 Link to comment
+[T]rakin Posted December 14, 2018 Author Share Posted December 14, 2018 12 minutes ago, Lord Henry said: addEventHandler ( "onClientClick", root, function ( _, state, _, _, _, _, _, clickedElement ) if not (state == "up") then return end if ( clickedElement ) then -- Continua o resto Thanks , vou muda um pouco do cliente para abrir um painel por que exemplo eu abro o painel admin e tem um veiculo da frente vai meio que funciona o sistema de reparar tambem. Link to comment
+[T]rakin Posted December 14, 2018 Author Share Posted December 14, 2018 (edited) 5 hours ago, Lord Henry said: addEventHandler ( "onClientClick", root, function ( _, state, _, _, _, _, _, clickedElement ) if not (state == "up") then return end if ( clickedElement ) then -- Continua o resto @Lord Henry Infelizmente testei aqui e não funcionou tipo quando clico do veiculo nem reparar ele. Edited December 14, 2018 by +[T]rakin Link to comment
[M]ister Posted December 14, 2018 Share Posted December 14, 2018 5 hours ago, +[T]rakin said: Thanks , vou muda um pouco do cliente para abrir um painel por que exemplo eu abro o painel admin e tem um veiculo da frente vai meio que funciona o sistema de reparar tambem. Faça com que detecte os clicks apenas quando for habilitado o cursor pelo M: function detectar(_, state, _, _, _, _, _, clickedElement) if ( state == "up" and clickedElement ) then if ( getElementType ( clickedElement ) == "vehicle" ) then triggerServerEvent ( "onClientRequestRepair", localPlayer, clickedElement ); end end end bindKey ( "M", "down", function ( ) if (not isCursorShowing()) then showCursor(true) addEventHandler("onClientClick", root, detectar) else showCursor(false) removeEventHandler("onClientClick", root, detectar) end end ) 1 Link to comment
+[T]rakin Posted December 14, 2018 Author Share Posted December 14, 2018 8 minutes ago, MaligNos said: Faça com que detecte os clicks apenas quando for habilitado o cursor pelo M: function detectar(_, state, _, _, _, _, _, clickedElement) if ( state == "up" and clickedElement ) then if ( getElementType ( clickedElement ) == "vehicle" ) then triggerServerEvent ( "onClientRequestRepair", localPlayer, clickedElement ); end endendbindKey ( "M", "down", function ( ) if (not isCursorShowing()) then showCursor(true) addEventHandler("onClientClick", root, detectar) else showCursor(false) removeEventHandler("onClientClick", root, detectar) endend ) Opa jovem muito obrigado pela essa ajuda ficou muito grato com isso. Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now