Doongogar Posted May 27, 2022 Share Posted May 27, 2022 fiz um codigo aqui de aluguel de bike, porém fiz ele cheio de gambiarra além de feio não ta funcionando codigo abaixo: marker1 = createMarker ( 953.13171386719,-1107.5072021484,22.849414825439, "cylinder", 1.5, 255,0,0, 50) marker2 = createMarker ( 1191.6909179688,-1312.0385742188,12.316610336304, "cylinder", 1.5, 225,0,0, 50) marker3 = createMarker ( 1494.1613769531,-1742.8996582031,12.546875, "cylinder", 1.5, 255,0,0, 50) marker4 = createMarker ( 2206.1918945312,-1981.7033691406,12.546875, "cylinder", 1.5, 255,0,0, 50) marker5 = createMarker ( 2805.5466308594,-1073.5206298828,29.373998641968, "cylinder", 1.5, 255,0,0, 50) marker6 = createMarker ( 2243.0690917969,-51.113868713379,25.490577697754, "cylinder", 1.5, 255,0,0, 50) veh = {} function pegarbike ( source ) if isElementWithinMarker (source, marker1 ) then if veh[source] and isElement( veh[source] ) then destroyElement(veh[source] ) veh[source] = nil end veh[source] = createVehicle(510 ,956.30297851562, -1113.2463378906, 23.740942001343) if getPlayerMoney(source) > 50 then takePlayerMoney(source,50) exports.InfoDx:addBox(source,'[BKR] Foi cobrado R$50 pelo aluguel da bike.', "info") exports.InfoDx:addBox(source,'[BKR] Se você sair da bike a seguradora pegará devolta.', "info") warpPedIntoVehicle (source,veh[source]) elseif isElementWithinMarker(source, marker2) then veh2[source] = createVehicle(510, 1191.015625, -1303.7839355469, 13.512410354614) if getPlayerMoney(source) > 50 then takePlayerMoney(source,50) exports.InfoDx:addBox(source,'[BKR] Foi cobrado R$50 pelo aluguel da bike.', "info") exports.InfoDx:addBox(source,'[BKR] Se você sair da bike a seguradora pegará devolta.', "info") warpPedIntoVehicle (source,veh2[source]) elseif isElementWithinMarker(source, marker3) then veh3[source] = createVehicle(510, 1493.6680908203, -1738.150390625, 13.746875) if getPlayerMoney(source) > 50 then takePlayerMoney(source,50) exports.InfoDx:addBox(source,'[BKR] Foi cobrado R$50 pelo aluguel da bike.', "info") exports.InfoDx:addBox(source,'[BKR] Se você sair da bike a seguradora pegará devolta.', "info") warpPedIntoVehicle (source,veh3[source]) elseif isElementWithinMarker(source, marker4) then veh4[source] = createVehicle(510, 2211.1340332031, -1982.1483154297, 13.525491905212) if getPlayerMoney(source) > 50 then takePlayerMoney(source,50) exports.InfoDx:addBox(source,'[BKR] Foi cobrado R$50 pelo aluguel da bike.', "info") exports.InfoDx:addBox(source,'[BKR] Se você sair da bike a seguradora pegará devolta.', "info") warpPedIntoVehicle (source,veh4[source]) elseif isElementWithinMarker(source, marker5) then veh5[source] = createVehicle(510, 2814.9523925781, -1071.6147460938, 30.480630111694) if getPlayerMoney(source) > 50 then takePlayerMoney(source,50) exports.InfoDx:addBox(source,'[BKR] Foi cobrado R$50 pelo aluguel da bike.', "info") exports.InfoDx:addBox(source,'[BKR] Se você sair da bike a seguradora pegará devolta.', "info") warpPedIntoVehicle (source,veh5[source]) elseif isElementWithinMarker(source, marker6) then veh6[source] = createVehicle(510, 2237.8811035156, -49.01481628418, 26.68589515686) if getPlayerMoney(source) > 50 then takePlayerMoney(source,50) exports.InfoDx:addBox(source,'[BKR] Foi cobrado R$50 pelo aluguel da bike.', "info") exports.InfoDx:addBox(source,'[BKR] Se você sair da bike a seguradora pegará devolta.', "info") warpPedIntoVehicle (source,veh6[source]) if not isElementWithinMarker(source, marker1) and isElementWithinMarker(source, marker2) and isElementWithinMarker(source, marker3) and isElementWithinMarker(source, marker4) and isElementWithinMarker(source, marker5) and isElementWithinMarker(source, marker6) then exports.InfoDx:addBox(source,'[BKR] Para Pegar Uma Bike Fique Dentro De Um Marker!', "error") end else exports.InfoDx:addBox(source,'[BKR] Dinheiro Insuficiente', "error") end else exports.InfoDx:addBox(source,'[BKR] Dinheiro Insuficiente', "error") end else exports.InfoDx:addBox(source,'[BKR] Dinheiro Insuficiente', "error") end else exports.InfoDx:addBox(source,'[BKR] Dinheiro Insuficiente', "error") end else exports.InfoDx:addBox(source,'[BKR] Dinheiro Insuficiente', "error") end else exports.InfoDx:addBox(source,'[BKR] Dinheiro Insuficiente', "error") end end end addCommandHandler ( "alugarbike", pegarbike ) function msg (source) exports.InfoDx:addBox(source,'[BKR] Digite /alugarbike para alugar uma bicicleta será cobrado R$50 .', "info") end addEventHandler( "onMarkerHit", marker1, msg ) function msg (source) exports.InfoDx:addBox(source,'[BKR] Digite /alugarbike para alugar uma bicicleta será cobrado R$50 .', "info") end addEventHandler( "onMarkerHit", marker2, msg ) function msg (source) exports.InfoDx:addBox(source,'[BKR] Digite /alugarbike para alugar uma bicicleta será cobrado R$50 .', "info") end addEventHandler( "onMarkerHit", marker3, msg ) function msg (source) exports.InfoDx:addBox(source,'[BKR] Digite /alugarbike para alugar uma bicicleta será cobrado R$50 .', "info") end addEventHandler( "onMarkerHit", marker4, msg ) function msg (source) exports.InfoDx:addBox(source,'[BKR] Digite /alugarbike para alugar uma bicicleta será cobrado R$50 .', "info") end addEventHandler( "onMarkerHit", marker5, msg ) function msg (source) exports.InfoDx:addBox(source,'[BKR] Digite /alugarbike para alugar uma bicicleta será cobrado R$50 .', "info") end addEventHandler( "onMarkerHit", marker6, msg ) function sair (source) if (veh[source]) and isElement(veh[source]) then destroyElement (veh[source]) exports.InfoDx:addBox(source,'[BKR] Você abandonou a bike e a seguradora pegou', "error") end end addEventHandler ("onVehicleExit", root, sair) desculpa a poluição no codigo. Link to comment
AmorimmFov Posted May 28, 2022 Share Posted May 28, 2022 marker1 = createMarker ( 953.13171386719,-1107.5072021484,22.849414825439, "cylinder", 1.5, 255,0,0, 50) marker2 = createMarker ( 1191.6909179688,-1312.0385742188,12.316610336304, "cylinder", 1.5, 225,0,0, 50) marker3 = createMarker ( 1494.1613769531,-1742.8996582031,12.546875, "cylinder", 1.5, 255,0,0, 50) marker4 = createMarker ( 2206.1918945312,-1981.7033691406,12.546875, "cylinder", 1.5, 255,0,0, 50) marker5 = createMarker ( 2805.5466308594,-1073.5206298828,29.373998641968, "cylinder", 1.5, 255,0,0, 50) marker6 = createMarker ( 2243.0690917969,-51.113868713379,25.490577697754, "cylinder", 1.5, 255,0,0, 50) veh = {} function pegarbike ( source ) if isElementWithinMarker (source, marker1 ) then if veh[source] and isElement( veh[source] ) then destroyElement(veh[source] ) veh[source] = nil end veh[source] = createVehicle(510 ,956.30297851562, -1113.2463378906, 23.740942001343) if getPlayerMoney(source) > 50 then takePlayerMoney(source,50) exports.InfoDx:addBox(source,'[BKR] Foi cobrado R$50 pelo aluguel da bike.', "info") exports.InfoDx:addBox(source,'[BKR] Se você sair da bike a seguradora pegará devolta.', "info") warpPedIntoVehicle (source,veh[source]) elseif addCommandHandler ( "alugarbike", pegarbike ) function pegarbike2() isElementWithinMarker(source, marker2) then veh2[source] = createVehicle(510, 1191.015625, -1303.7839355469, 13.512410354614) if getPlayerMoney(source) > 50 then takePlayerMoney(source,50) exports.InfoDx:addBox(source,'[BKR] Foi cobrado R$50 pelo aluguel da bike.', "info") exports.InfoDx:addBox(source,'[BKR] Se você sair da bike a seguradora pegará devolta.', "info") warpPedIntoVehicle (source,veh2[source]) elseif addCommandHandler ( "alugarbike", pegarbike2 ) function pegarbike3() isElementWithinMarker(source, marker3) then veh3[source] = createVehicle(510, 1493.6680908203, -1738.150390625, 13.746875) if getPlayerMoney(source) > 50 then takePlayerMoney(source,50) exports.InfoDx:addBox(source,'[BKR] Foi cobrado R$50 pelo aluguel da bike.', "info") exports.InfoDx:addBox(source,'[BKR] Se você sair da bike a seguradora pegará devolta.', "info") warpPedIntoVehicle (source,veh3[source]) elseif addCommandHandler ( "alugarbike", pegarbike3 ) function pegarbike4() isElementWithinMarker(source, marker4) then veh4[source] = createVehicle(510, 2211.1340332031, -1982.1483154297, 13.525491905212) if getPlayerMoney(source) > 50 then takePlayerMoney(source,50) exports.InfoDx:addBox(source,'[BKR] Foi cobrado R$50 pelo aluguel da bike.', "info") exports.InfoDx:addBox(source,'[BKR] Se você sair da bike a seguradora pegará devolta.', "info") warpPedIntoVehicle (source,veh4[source]) elseif addCommandHandler ( "alugarbike", pegarbike4 ) function pegarbike5() isElementWithinMarker(source, marker5) then veh5[source] = createVehicle(510, 2814.9523925781, -1071.6147460938, 30.480630111694) if getPlayerMoney(source) > 50 then takePlayerMoney(source,50) exports.InfoDx:addBox(source,'[BKR] Foi cobrado R$50 pelo aluguel da bike.', "info") exports.InfoDx:addBox(source,'[BKR] Se você sair da bike a seguradora pegará devolta.', "info") warpPedIntoVehicle (source,veh5[source]) elseif addCommandHandler ( "alugarbike", pegarbike5 ) function pegarbike6 isElementWithinMarker(source, marker6) then veh6[source] = createVehicle(510, 2237.8811035156, -49.01481628418, 26.68589515686) if getPlayerMoney(source) > 50 then takePlayerMoney(source,50) exports.InfoDx:addBox(source,'[BKR] Foi cobrado R$50 pelo aluguel da bike.', "info") exports.InfoDx:addBox(source,'[BKR] Se você sair da bike a seguradora pegará devolta.', "info") warpPedIntoVehicle (source,veh6[source]) addCommandHandler ( "alugarbike", pegarbike6 ) if not isElementWithinMarker(source, marker1) and isElementWithinMarker(source, marker2) and isElementWithinMarker(source, marker3) and isElementWithinMarker(source, marker4) and isElementWithinMarker(source, marker5) and isElementWithinMarker(source, marker6) then exports.InfoDx:addBox(source,'[BKR] Para Pegar Uma Bike Fique Dentro De Um Marker!', "error") end else exports.InfoDx:addBox(source,'[BKR] Dinheiro Insuficiente', "error") end else exports.InfoDx:addBox(source,'[BKR] Dinheiro Insuficiente', "error") end else exports.InfoDx:addBox(source,'[BKR] Dinheiro Insuficiente', "error") end else exports.InfoDx:addBox(source,'[BKR] Dinheiro Insuficiente', "error") end else exports.InfoDx:addBox(source,'[BKR] Dinheiro Insuficiente', "error") end else exports.InfoDx:addBox(source,'[BKR] Dinheiro Insuficiente', "error") end end end addCommandHandler ( "alugarbike", pegarbike ) function msg (source) exports.InfoDx:addBox(source,'[BKR] Digite /alugarbike para alugar uma bicicleta será cobrado R$50 .', "info") end addEventHandler( "onMarkerHit", marker1, msg ) function msg (source) exports.InfoDx:addBox(source,'[BKR] Digite /alugarbike para alugar uma bicicleta será cobrado R$50 .', "info") end addEventHandler( "onMarkerHit", marker2, msg ) function msg (source) exports.InfoDx:addBox(source,'[BKR] Digite /alugarbike para alugar uma bicicleta será cobrado R$50 .', "info") end addEventHandler( "onMarkerHit", marker3, msg ) function msg (source) exports.InfoDx:addBox(source,'[BKR] Digite /alugarbike para alugar uma bicicleta será cobrado R$50 .', "info") end addEventHandler( "onMarkerHit", marker4, msg ) function msg (source) exports.InfoDx:addBox(source,'[BKR] Digite /alugarbike para alugar uma bicicleta será cobrado R$50 .', "info") end addEventHandler( "onMarkerHit", marker5, msg ) function msg (source) exports.InfoDx:addBox(source,'[BKR] Digite /alugarbike para alugar uma bicicleta será cobrado R$50 .', "info") end addEventHandler( "onMarkerHit", marker6, msg ) function sair (source) if (veh[source]) and isElement(veh[source]) then destroyElement (veh[source]) exports.InfoDx:addBox(source,'[BKR] Você abandonou a bike e a seguradora pegou', "error") end end addEventHandler ("onVehicleExit", root, sair) Link to comment
Gustavo Freire Posted May 28, 2022 Share Posted May 28, 2022 -- tabela com a posição dos markers local markers = { { pos = { 0, 0, 0 }, -- XYZ int = 0, -- Interior -> padrão 0 dim = 0 -- Dimensão -> padrão 0 } } -- aqui criamos um element pai, isso servirá para que não precisemos adicionar um evento pra cara marker local markerStorage = { ['parentElement'] = createElement( 'marker.parent' ) ['markerData'] = { } } -- armazena as bikes alugadas local rentStorage = { } -- desconta o dinheiro do jogador local getPay = function( value, thePlayer ) local validValue = value and tonumber( value ) and value > 0 if not validValue then return false end local playerMoney = getPlayerMoney( thePlayer ) or 0 if playerMoney < value then return false end return takePlayerMoney( thePlayer, tonumber( value ) ) end -- verifica se o player tem uma bike, se tiver ele destroi a bike e retorna true local verifyAndDestroyRentVehicle = function( thePlayer ) -- verifica se a pessoa tem uma bike alugada if rentStorage[ thePlayer ] then -- verifica se a bike existe if isElement( rentStorage[ thePlayer ] ) then -- destrói a bike destroyElement( rentStorage[ thePlayer ] ) end -- zera a tabela rentStorage[ thePlayer ] = nil return true end return false end -- mensagem para quando alguém entrar no marker local markerOutputMessage = function( hit, dim ) local isValidElement = isElement( hit ) and getElementType( hit ) == 'player' local isElementInVehicle = getPedOccupiedVehicle( thePlayer ) if not isValidElement or not isElementInVehicle then return end outputChatBox( 'Digite /alugarbike para alugar a bike', hit, 0, 255, 0 ) end -- comando de alugar a bike addCommandHandler( 'alugarbike', function( thePlayer ) -- verifica se o jogador está em um dos markeres de aluguel local isElementInMarker = isElementWithinMarker( thePlayer, markerStorage['parentElement'] ) -- verifica se o jogador está em um veículo local isElementInVehicle = getPedOccupiedVehicle( thePlayer ) -- caso alguma das verificações seja verdadeira ele cancela a execução if not isElementInMarker or not isElementInVehicle then return end -- destrói a bike caso o jogador já tenha uma if verifyAndDestroyRentVehicle( thePlayer ) then return end -- cobra o dinheiro do jogador local payment = getPay( 50, thePlayer ) or false -- verifica se o jogador tem dinheiro suficiente/se o pagamento foi feito if not payment then outputChatBox( '#FFFFFFAlgo deu errado com seu pagamento, verifique se você tem a quantia necessária para alugar uma bike', thePlayer, 255, 255, 255, true ) return end -- pega posição do jogador local playerPosX, playerPosY, playerZ = getElementPosition( thePlayer ) -- pega dimensão e o interior do marker local dim, int = markerStorage['markerData']['dim'] or 0, markerStorage['markerData']['int'] or 0 -- cria a bike e armazena na tabela rentStorage[ thePlayer ] = createVehicle( 510, playerPosX, playerPosY, playerZ ) -- seta o interior e a dimensão da bike setElementDimension( rentStorage[ thePlayer ], dim ) setElementInterior( rentStorage[ thePlayer ], int ) -- teleporta o jogador pra dentro da bike warpPedIntoVehicle( thePlayer, rentStorage[ thePlayer ] ) end) -- esse evento será chamado sempre que o resource ligar addEventHandler( 'onResourceStart', resourceRoot, function( ) -- fazemos um loop na tabela com as posições dos markers for i, v in ipairs( markers ) do -- cria o marker local marker = createMarker( v.pos[1], v.pos[2], v.pos[3], 'cylinder', 1, 255, 0, 0, 150 ) -- criamos o marker -- setamos o interior e a dimensão do marker setElementInterior( marker, v.int ) setElementDimension( marker, v.dim ) -- setamos o marker como elemento filho do elemento pai que criamos acima setElementParent( marker, markerStorage['parentElement'] ) -- armazenamos alguns dados do marker markerStorage['markerData'][ marker ] = { ['markerElement'] = marker, ['int'] = v.int, ['dim'] = v.dim } end addEventHandler('onMarkerHit', markerStorage['parentElement'], markerOutputMessage) end) -- esse evento será chamado sempre que alguém sair de um veículo addEventHandler( 'onVehicleExit', root, function( thePlayer ) verifyAndDestroyRentVehicle( thePlayer ) end) -- esse evento é chamado sempre que alguém sair do servidor addEventHandler( 'onPlayerQuit', root, function( ) verifyAndDestroyRentVehicle( source ) end) Fiz este código aqui, não testei, por isso pode ser que tenha algo errado. Recomendo que estude como funciona, tentei deixar o mais comentado possível pra facilitar sua compreensão. Link to comment
Doongogar Posted May 29, 2022 Author Share Posted May 29, 2022 11 hours ago, Gustavo Freire said: -- tabela com a posição dos markers local markers = { { pos = { 0, 0, 0 }, -- XYZ int = 0, -- Interior -> padrão 0 dim = 0 -- Dimensão -> padrão 0 } } -- aqui criamos um element pai, isso servirá para que não precisemos adicionar um evento pra cara marker local markerStorage = { ['parentElement'] = createElement( 'marker.parent' ) ['markerData'] = { } } -- armazena as bikes alugadas local rentStorage = { } -- desconta o dinheiro do jogador local getPay = function( value, thePlayer ) local validValue = value and tonumber( value ) and value > 0 if not validValue then return false end local playerMoney = getPlayerMoney( thePlayer ) or 0 if playerMoney < value then return false end return takePlayerMoney( thePlayer, tonumber( value ) ) end -- verifica se o player tem uma bike, se tiver ele destroi a bike e retorna true local verifyAndDestroyRentVehicle = function( thePlayer ) -- verifica se a pessoa tem uma bike alugada if rentStorage[ thePlayer ] then -- verifica se a bike existe if isElement( rentStorage[ thePlayer ] ) then -- destrói a bike destroyElement( rentStorage[ thePlayer ] ) end -- zera a tabela rentStorage[ thePlayer ] = nil return true end return false end -- mensagem para quando alguém entrar no marker local markerOutputMessage = function( hit, dim ) local isValidElement = isElement( hit ) and getElementType( hit ) == 'player' local isElementInVehicle = getPedOccupiedVehicle( thePlayer ) if not isValidElement or not isElementInVehicle then return end outputChatBox( 'Digite /alugarbike para alugar a bike', hit, 0, 255, 0 ) end -- comando de alugar a bike addCommandHandler( 'alugarbike', function( thePlayer ) -- verifica se o jogador está em um dos markeres de aluguel local isElementInMarker = isElementWithinMarker( thePlayer, markerStorage['parentElement'] ) -- verifica se o jogador está em um veículo local isElementInVehicle = getPedOccupiedVehicle( thePlayer ) -- caso alguma das verificações seja verdadeira ele cancela a execução if not isElementInMarker or not isElementInVehicle then return end -- destrói a bike caso o jogador já tenha uma if verifyAndDestroyRentVehicle( thePlayer ) then return end -- cobra o dinheiro do jogador local payment = getPay( 50, thePlayer ) or false -- verifica se o jogador tem dinheiro suficiente/se o pagamento foi feito if not payment then outputChatBox( '#FFFFFFAlgo deu errado com seu pagamento, verifique se você tem a quantia necessária para alugar uma bike', thePlayer, 255, 255, 255, true ) return end -- pega posição do jogador local playerPosX, playerPosY, playerZ = getElementPosition( thePlayer ) -- pega dimensão e o interior do marker local dim, int = markerStorage['markerData']['dim'] or 0, markerStorage['markerData']['int'] or 0 -- cria a bike e armazena na tabela rentStorage[ thePlayer ] = createVehicle( 510, playerPosX, playerPosY, playerZ ) -- seta o interior e a dimensão da bike setElementDimension( rentStorage[ thePlayer ], dim ) setElementInterior( rentStorage[ thePlayer ], int ) -- teleporta o jogador pra dentro da bike warpPedIntoVehicle( thePlayer, rentStorage[ thePlayer ] ) end) -- esse evento será chamado sempre que o resource ligar addEventHandler( 'onResourceStart', resourceRoot, function( ) -- fazemos um loop na tabela com as posições dos markers for i, v in ipairs( markers ) do -- cria o marker local marker = createMarker( v.pos[1], v.pos[2], v.pos[3], 'cylinder', 1, 255, 0, 0, 150 ) -- criamos o marker -- setamos o interior e a dimensão do marker setElementInterior( marker, v.int ) setElementDimension( marker, v.dim ) -- setamos o marker como elemento filho do elemento pai que criamos acima setElementParent( marker, markerStorage['parentElement'] ) -- armazenamos alguns dados do marker markerStorage['markerData'][ marker ] = { ['markerElement'] = marker, ['int'] = v.int, ['dim'] = v.dim } end addEventHandler('onMarkerHit', markerStorage['parentElement'], markerOutputMessage) end) -- esse evento será chamado sempre que alguém sair de um veículo addEventHandler( 'onVehicleExit', root, function( thePlayer ) verifyAndDestroyRentVehicle( thePlayer ) end) -- esse evento é chamado sempre que alguém sair do servidor addEventHandler( 'onPlayerQuit', root, function( ) verifyAndDestroyRentVehicle( source ) end) Fiz este código aqui, não testei, por isso pode ser que tenha algo errado. Recomendo que estude como funciona, tentei deixar o mais comentado possível pra facilitar sua compreensão. sinceramente eu não sei mexer nenhum pouco com esses negócios de tabela, tentei por umas vírgulas, mas não sei oque fazer coloquei o código e tá dando esse erro: 20 '}' expected (to close '{' at line 17) near '=' Link to comment
Gustavo Freire Posted May 29, 2022 Share Posted May 29, 2022 -- tabela com a posição dos markers local markers = { { pos = { 0, 0, 0 }, -- XYZ int = 0, -- Interior -> padrão 0 dim = 0 -- Dimensão -> padrão 0 }, } -- aqui criamos um element pai, isso servirá para que não precisemos adicionar um evento pra cara marker local markerStorage = { ['parentElement'] = createElement( 'marker.parent' ) ['markerData'] = { } } -- armazena as bikes alugadas local rentStorage = { } -- desconta o dinheiro do jogador local getPay = function( value, thePlayer ) local validValue = value and tonumber( value ) and value > 0 if not validValue then return false end local playerMoney = getPlayerMoney( thePlayer ) or 0 if playerMoney < value then return false end return takePlayerMoney( thePlayer, tonumber( value ) ) end -- verifica se o player tem uma bike, se tiver ele destroi a bike e retorna true local verifyAndDestroyRentVehicle = function( thePlayer ) -- verifica se a pessoa tem uma bike alugada if rentStorage[ thePlayer ] then -- verifica se a bike existe if isElement( rentStorage[ thePlayer ] ) then -- destrói a bike destroyElement( rentStorage[ thePlayer ] ) end -- zera a tabela rentStorage[ thePlayer ] = nil return true end return false end -- mensagem para quando alguém entrar no marker local markerOutputMessage = function( hit, dim ) local isValidElement = isElement( hit ) and getElementType( hit ) == 'player' local isElementInVehicle = getPedOccupiedVehicle( thePlayer ) if not isValidElement or not isElementInVehicle then return end outputChatBox( 'Digite /alugarbike para alugar a bike', hit, 0, 255, 0 ) end -- comando de alugar a bike addCommandHandler( 'alugarbike', function( thePlayer ) -- verifica se o jogador está em um dos markeres de aluguel local isElementInMarker = isElementWithinMarker( thePlayer, markerStorage['parentElement'] ) -- verifica se o jogador está em um veículo local isElementInVehicle = getPedOccupiedVehicle( thePlayer ) -- caso alguma das verificações seja verdadeira ele cancela a execução if not isElementInMarker or not isElementInVehicle then return end -- destrói a bike caso o jogador já tenha uma if verifyAndDestroyRentVehicle( thePlayer ) then return end -- cobra o dinheiro do jogador local payment = getPay( 50, thePlayer ) or false -- verifica se o jogador tem dinheiro suficiente/se o pagamento foi feito if not payment then outputChatBox( '#FFFFFFAlgo deu errado com seu pagamento, verifique se você tem a quantia necessária para alugar uma bike', thePlayer, 255, 255, 255, true ) return end -- pega posição do jogador local playerPosX, playerPosY, playerZ = getElementPosition( thePlayer ) -- pega dimensão e o interior do marker local dim, int = markerStorage['markerData']['dim'] or 0, markerStorage['markerData']['int'] or 0 -- cria a bike e armazena na tabela rentStorage[ thePlayer ] = createVehicle( 510, playerPosX, playerPosY, playerZ ) -- seta o interior e a dimensão da bike setElementDimension( rentStorage[ thePlayer ], dim ) setElementInterior( rentStorage[ thePlayer ], int ) -- teleporta o jogador pra dentro da bike warpPedIntoVehicle( thePlayer, rentStorage[ thePlayer ] ) end) -- esse evento será chamado sempre que o resource ligar addEventHandler( 'onResourceStart', resourceRoot, function( ) -- fazemos um loop na tabela com as posições dos markers for i, v in ipairs( markers ) do -- cria o marker local marker = createMarker( v.pos[1], v.pos[2], v.pos[3], 'cylinder', 1, 255, 0, 0, 150 ) -- criamos o marker -- setamos o interior e a dimensão do marker setElementInterior( marker, v.int ) setElementDimension( marker, v.dim ) -- setamos o marker como elemento filho do elemento pai que criamos acima setElementParent( marker, markerStorage['parentElement'] ) -- armazenamos alguns dados do marker markerStorage['markerData'][ marker ] = { ['markerElement'] = marker, ['int'] = v.int, ['dim'] = v.dim } end addEventHandler('onMarkerHit', markerStorage['parentElement'], markerOutputMessage) end) -- esse evento será chamado sempre que alguém sair de um veículo addEventHandler( 'onVehicleExit', root, function( thePlayer ) verifyAndDestroyRentVehicle( thePlayer ) end) -- esse evento é chamado sempre que alguém sair do servidor addEventHandler( 'onPlayerQuit', root, function( ) verifyAndDestroyRentVehicle( source ) end) Corrigi o erro. Link to comment
Doongogar Posted May 29, 2022 Author Share Posted May 29, 2022 14 minutes ago, Gustavo Freire said: -- tabela com a posição dos markers local markers = { { pos = { 0, 0, 0 }, -- XYZ int = 0, -- Interior -> padrão 0 dim = 0 -- Dimensão -> padrão 0 }, } -- aqui criamos um element pai, isso servirá para que não precisemos adicionar um evento pra cara marker local markerStorage = { ['parentElement'] = createElement( 'marker.parent' ) ['markerData'] = { } } -- armazena as bikes alugadas local rentStorage = { } -- desconta o dinheiro do jogador local getPay = function( value, thePlayer ) local validValue = value and tonumber( value ) and value > 0 if not validValue then return false end local playerMoney = getPlayerMoney( thePlayer ) or 0 if playerMoney < value then return false end return takePlayerMoney( thePlayer, tonumber( value ) ) end -- verifica se o player tem uma bike, se tiver ele destroi a bike e retorna true local verifyAndDestroyRentVehicle = function( thePlayer ) -- verifica se a pessoa tem uma bike alugada if rentStorage[ thePlayer ] then -- verifica se a bike existe if isElement( rentStorage[ thePlayer ] ) then -- destrói a bike destroyElement( rentStorage[ thePlayer ] ) end -- zera a tabela rentStorage[ thePlayer ] = nil return true end return false end -- mensagem para quando alguém entrar no marker local markerOutputMessage = function( hit, dim ) local isValidElement = isElement( hit ) and getElementType( hit ) == 'player' local isElementInVehicle = getPedOccupiedVehicle( thePlayer ) if not isValidElement or not isElementInVehicle then return end outputChatBox( 'Digite /alugarbike para alugar a bike', hit, 0, 255, 0 ) end -- comando de alugar a bike addCommandHandler( 'alugarbike', function( thePlayer ) -- verifica se o jogador está em um dos markeres de aluguel local isElementInMarker = isElementWithinMarker( thePlayer, markerStorage['parentElement'] ) -- verifica se o jogador está em um veículo local isElementInVehicle = getPedOccupiedVehicle( thePlayer ) -- caso alguma das verificações seja verdadeira ele cancela a execução if not isElementInMarker or not isElementInVehicle then return end -- destrói a bike caso o jogador já tenha uma if verifyAndDestroyRentVehicle( thePlayer ) then return end -- cobra o dinheiro do jogador local payment = getPay( 50, thePlayer ) or false -- verifica se o jogador tem dinheiro suficiente/se o pagamento foi feito if not payment then outputChatBox( '#FFFFFFAlgo deu errado com seu pagamento, verifique se você tem a quantia necessária para alugar uma bike', thePlayer, 255, 255, 255, true ) return end -- pega posição do jogador local playerPosX, playerPosY, playerZ = getElementPosition( thePlayer ) -- pega dimensão e o interior do marker local dim, int = markerStorage['markerData']['dim'] or 0, markerStorage['markerData']['int'] or 0 -- cria a bike e armazena na tabela rentStorage[ thePlayer ] = createVehicle( 510, playerPosX, playerPosY, playerZ ) -- seta o interior e a dimensão da bike setElementDimension( rentStorage[ thePlayer ], dim ) setElementInterior( rentStorage[ thePlayer ], int ) -- teleporta o jogador pra dentro da bike warpPedIntoVehicle( thePlayer, rentStorage[ thePlayer ] ) end) -- esse evento será chamado sempre que o resource ligar addEventHandler( 'onResourceStart', resourceRoot, function( ) -- fazemos um loop na tabela com as posições dos markers for i, v in ipairs( markers ) do -- cria o marker local marker = createMarker( v.pos[1], v.pos[2], v.pos[3], 'cylinder', 1, 255, 0, 0, 150 ) -- criamos o marker -- setamos o interior e a dimensão do marker setElementInterior( marker, v.int ) setElementDimension( marker, v.dim ) -- setamos o marker como elemento filho do elemento pai que criamos acima setElementParent( marker, markerStorage['parentElement'] ) -- armazenamos alguns dados do marker markerStorage['markerData'][ marker ] = { ['markerElement'] = marker, ['int'] = v.int, ['dim'] = v.dim } end addEventHandler('onMarkerHit', markerStorage['parentElement'], markerOutputMessage) end) -- esse evento será chamado sempre que alguém sair de um veículo addEventHandler( 'onVehicleExit', root, function( thePlayer ) verifyAndDestroyRentVehicle( thePlayer ) end) -- esse evento é chamado sempre que alguém sair do servidor addEventHandler( 'onPlayerQuit', root, function( ) verifyAndDestroyRentVehicle( source ) end) Corrigi o erro. eu não sei se eu que editei algo errado, ou se a tabela de posições ta errada que eu fiz, mas permanece o erro local markers = { { pos = { {953.13171386719,-1107.5072021484,22.849414825439}, {1191.6909179688,-1312.0385742188,12.316610336304}, {1494.1613769531,-1742.8996582031,12.546875}, {2206.1918945312,-1981.7033691406,12.546875}, {2805.5466308594,-1073.5206298828,29.373998641968}, {2243.0690917969,-51.113868713379,25.490577697754} }, int = 0, dim = 0 } } local markerStorage = { ['parentElement'] = createElement( 'marker.parent' ) ['markerData'] = { } } 19: '}' expected (to close '{' at line 16) near '=' Link to comment
Gustavo Freire Posted May 29, 2022 Share Posted May 29, 2022 local markers = { { pos = { 0, 0, 0 }, -- XYZ int = 0, -- Interior -> padrão 0 dim = 0 -- Dimensão -> padrão 0 }, { pos = { 0, 0, 0 }, -- XYZ int = 0, -- Interior -> padrão 0 dim = 0 -- Dimensão -> padrão 0 }, { pos = { 0, 0, 0 }, -- XYZ int = 0, -- Interior -> padrão 0 dim = 0 -- Dimensão -> padrão 0 }, { pos = { 0, 0, 0 }, -- XYZ int = 0, -- Interior -> padrão 0 dim = 0 -- Dimensão -> padrão 0 }, } Pra adicionar novos locais faça desse jeito. Link to comment
Doongogar Posted May 29, 2022 Author Share Posted May 29, 2022 1 hour ago, Gustavo Freire said: local markers = { { pos = { 0, 0, 0 }, -- XYZ int = 0, -- Interior -> padrão 0 dim = 0 -- Dimensão -> padrão 0 }, { pos = { 0, 0, 0 }, -- XYZ int = 0, -- Interior -> padrão 0 dim = 0 -- Dimensão -> padrão 0 }, { pos = { 0, 0, 0 }, -- XYZ int = 0, -- Interior -> padrão 0 dim = 0 -- Dimensão -> padrão 0 }, { pos = { 0, 0, 0 }, -- XYZ int = 0, -- Interior -> padrão 0 dim = 0 -- Dimensão -> padrão 0 }, } Pra adicionar novos locais faça desse jeito. ata, perdão rsrs Link to comment
Doongogar Posted May 29, 2022 Author Share Posted May 29, 2022 (edited) 2 hours ago, Gustavo Freire said: local markers = { { pos = { 0, 0, 0 }, -- XYZ int = 0, -- Interior -> padrão 0 dim = 0 -- Dimensão -> padrão 0 }, { pos = { 0, 0, 0 }, -- XYZ int = 0, -- Interior -> padrão 0 dim = 0 -- Dimensão -> padrão 0 }, { pos = { 0, 0, 0 }, -- XYZ int = 0, -- Interior -> padrão 0 dim = 0 -- Dimensão -> padrão 0 }, { pos = { 0, 0, 0 }, -- XYZ int = 0, -- Interior -> padrão 0 dim = 0 -- Dimensão -> padrão 0 }, } Pra adicionar novos locais faça desse jeito. porém o erro permanece... eu não sei oque ta errado local markerStorage = { ['parentElement'] = createElement( 'marker.parent' ) ['markerData'] = { } } aparece que ta errado isso aqui Edited May 29, 2022 by SciptNovato Link to comment
Gustavo Freire Posted May 30, 2022 Share Posted May 30, 2022 Erro meu, coloca uma vírgula na frente do 'parentElement'. local markerStorage = { ['parentElement'] = createElement( 'marker.parent' ), ['markerData'] = { } } Link to comment
Doongogar Posted June 1, 2022 Author Share Posted June 1, 2022 (edited) On 30/05/2022 at 11:53, Gustavo Freire said: Erro meu, coloca uma vírgula na frente do 'parentElement'. local markerStorage = { ['parentElement'] = createElement( 'marker.parent' ), ['markerData'] = { } } ta dando esse erro aqui saberia me explicar como resolver? e também quando eu hito o marker não aparece a mensagem "digite /alubarbike etc..." Edited June 1, 2022 by SciptNovato Link to comment
Gustavo Freire Posted June 3, 2022 Share Posted June 3, 2022 -- tabela com a posição dos markers local markers = { { pos = { 505.2783203125, -1340.4423828125, 15.9609375 }, -- XYZ int = 0, -- Interior -> padrão 0 dim = 0 -- Dimensão -> padrão 0 }, } -- aqui criamos um element pai, isso servirá para que não precisemos adicionar um evento pra cara marker local markerStorage = { ['parentElement'] = createElement( 'marker.parent' ), ['markerData'] = { } } -- armazena as bikes alugadas local rentStorage = { } -- desconta o dinheiro do jogador local getPay = function( value, thePlayer ) local validValue = value and tonumber( value ) and value > 0 if not validValue then return false end local playerMoney = getPlayerMoney( thePlayer ) or 0 if playerMoney < value then return false end return takePlayerMoney( thePlayer, tonumber( value ) ) end local isElementWithinRentMarker = function( thePlayer ) for i, _ in pairs( markerStorage['markerData'] ) do if isElementWithinMarker( thePlayer, i ) then return true end end return false end -- verifica se o player tem uma bike, se tiver ele destroi a bike e retorna true local verifyAndDestroyRentVehicle = function( thePlayer ) -- verifica se a pessoa tem uma bike alugada if rentStorage[ thePlayer ] then -- verifica se a bike existe if isElement( rentStorage[ thePlayer ] ) then -- destrói a bike destroyElement( rentStorage[ thePlayer ] ) end -- zera a tabela rentStorage[ thePlayer ] = nil return true end return false end -- mensagem para quando alguém entrar no marker local markerOutputMessage = function( hit, dim ) local isValidElement = isElement( hit ) and getElementType( hit ) == 'player' if not isValidElement then return end local isElementInVehicle = getPedOccupiedVehicle( hit ) if isElementInVehicle then outputChatBox( 'Você precisa estar fora de um veículo para alugar uma bicicleta.', hit, 255, 255, 255 ) return end outputChatBox( 'Digite /alugarbike para alugar a bike', hit, 0, 255, 0 ) end -- comando de alugar a bike addCommandHandler( 'alugarbike', function( thePlayer ) -- verifica se o jogador está em um dos markeres de aluguel local isElementInMarker = isElementWithinRentMarker( thePlayer ) -- verifica se o jogador está em um veículo local isElementInVehicle = getPedOccupiedVehicle( thePlayer ) -- caso alguma das verificações seja verdadeira ele cancela a execução if not isElementInMarker or isElementInVehicle then return end -- destrói a bike caso o jogador já tenha uma if verifyAndDestroyRentVehicle( thePlayer ) then return end -- cobra o dinheiro do jogador local payment = getPay( 50, thePlayer ) or false -- verifica se o jogador tem dinheiro suficiente/se o pagamento foi feito if not payment then outputChatBox( '#FFFFFFAlgo deu errado com seu pagamento, verifique se você tem a quantia necessária para alugar uma bike', thePlayer, 255, 255, 255, true ) return end -- pega posição do jogador local playerPosX, playerPosY, playerZ = getElementPosition( thePlayer ) -- pega dimensão e o interior do marker local dim, int = markerStorage['markerData']['dim'] or 0, markerStorage['markerData']['int'] or 0 -- cria a bike e armazena na tabela rentStorage[ thePlayer ] = createVehicle( 510, playerPosX, playerPosY, playerZ ) -- seta o interior e a dimensão da bike setElementDimension( rentStorage[ thePlayer ], dim ) setElementInterior( rentStorage[ thePlayer ], int ) -- teleporta o jogador pra dentro da bike warpPedIntoVehicle( thePlayer, rentStorage[ thePlayer ] ) end) -- esse evento será chamado sempre que o resource ligar addEventHandler( 'onResourceStart', resourceRoot, function( ) -- fazemos um loop na tabela com as posições dos markers for i, v in ipairs( markers ) do -- cria o marker local marker = createMarker( v.pos[1], v.pos[2], v.pos[3], 'cylinder', 1, 255, 0, 0, 150 ) -- criamos o marker -- setamos o interior e a dimensão do marker setElementInterior( marker, v.int ) setElementDimension( marker, v.dim ) -- setamos o marker como elemento filho do elemento pai que criamos acima setElementParent( marker, markerStorage['parentElement'] ) -- armazenamos alguns dados do marker markerStorage['markerData'][ marker ] = { ['markerElement'] = marker, ['int'] = v.int, ['dim'] = v.dim } end addEventHandler('onMarkerHit', markerStorage['parentElement'], markerOutputMessage) end) -- esse evento será chamado sempre que alguém sair de um veículo addEventHandler( 'onVehicleExit', root, function( thePlayer ) verifyAndDestroyRentVehicle( thePlayer ) end) -- esse evento é chamado sempre que alguém sair do servidor addEventHandler( 'onPlayerQuit', root, function( ) verifyAndDestroyRentVehicle( source ) end) Não sei o que foi que eu fiz que mandei a versão com erro pra vc ao invés da corrigida, mas agora sim, aqui está a correta. 1 Link to comment
Doongogar Posted June 3, 2022 Author Share Posted June 3, 2022 19 hours ago, Gustavo Freire said: -- tabela com a posição dos markers local markers = { { pos = { 505.2783203125, -1340.4423828125, 15.9609375 }, -- XYZ int = 0, -- Interior -> padrão 0 dim = 0 -- Dimensão -> padrão 0 }, } -- aqui criamos um element pai, isso servirá para que não precisemos adicionar um evento pra cara marker local markerStorage = { ['parentElement'] = createElement( 'marker.parent' ), ['markerData'] = { } } -- armazena as bikes alugadas local rentStorage = { } -- desconta o dinheiro do jogador local getPay = function( value, thePlayer ) local validValue = value and tonumber( value ) and value > 0 if not validValue then return false end local playerMoney = getPlayerMoney( thePlayer ) or 0 if playerMoney < value then return false end return takePlayerMoney( thePlayer, tonumber( value ) ) end local isElementWithinRentMarker = function( thePlayer ) for i, _ in pairs( markerStorage['markerData'] ) do if isElementWithinMarker( thePlayer, i ) then return true end end return false end -- verifica se o player tem uma bike, se tiver ele destroi a bike e retorna true local verifyAndDestroyRentVehicle = function( thePlayer ) -- verifica se a pessoa tem uma bike alugada if rentStorage[ thePlayer ] then -- verifica se a bike existe if isElement( rentStorage[ thePlayer ] ) then -- destrói a bike destroyElement( rentStorage[ thePlayer ] ) end -- zera a tabela rentStorage[ thePlayer ] = nil return true end return false end -- mensagem para quando alguém entrar no marker local markerOutputMessage = function( hit, dim ) local isValidElement = isElement( hit ) and getElementType( hit ) == 'player' if not isValidElement then return end local isElementInVehicle = getPedOccupiedVehicle( hit ) if isElementInVehicle then outputChatBox( 'Você precisa estar fora de um veículo para alugar uma bicicleta.', hit, 255, 255, 255 ) return end outputChatBox( 'Digite /alugarbike para alugar a bike', hit, 0, 255, 0 ) end -- comando de alugar a bike addCommandHandler( 'alugarbike', function( thePlayer ) -- verifica se o jogador está em um dos markeres de aluguel local isElementInMarker = isElementWithinRentMarker( thePlayer ) -- verifica se o jogador está em um veículo local isElementInVehicle = getPedOccupiedVehicle( thePlayer ) -- caso alguma das verificações seja verdadeira ele cancela a execução if not isElementInMarker or isElementInVehicle then return end -- destrói a bike caso o jogador já tenha uma if verifyAndDestroyRentVehicle( thePlayer ) then return end -- cobra o dinheiro do jogador local payment = getPay( 50, thePlayer ) or false -- verifica se o jogador tem dinheiro suficiente/se o pagamento foi feito if not payment then outputChatBox( '#FFFFFFAlgo deu errado com seu pagamento, verifique se você tem a quantia necessária para alugar uma bike', thePlayer, 255, 255, 255, true ) return end -- pega posição do jogador local playerPosX, playerPosY, playerZ = getElementPosition( thePlayer ) -- pega dimensão e o interior do marker local dim, int = markerStorage['markerData']['dim'] or 0, markerStorage['markerData']['int'] or 0 -- cria a bike e armazena na tabela rentStorage[ thePlayer ] = createVehicle( 510, playerPosX, playerPosY, playerZ ) -- seta o interior e a dimensão da bike setElementDimension( rentStorage[ thePlayer ], dim ) setElementInterior( rentStorage[ thePlayer ], int ) -- teleporta o jogador pra dentro da bike warpPedIntoVehicle( thePlayer, rentStorage[ thePlayer ] ) end) -- esse evento será chamado sempre que o resource ligar addEventHandler( 'onResourceStart', resourceRoot, function( ) -- fazemos um loop na tabela com as posições dos markers for i, v in ipairs( markers ) do -- cria o marker local marker = createMarker( v.pos[1], v.pos[2], v.pos[3], 'cylinder', 1, 255, 0, 0, 150 ) -- criamos o marker -- setamos o interior e a dimensão do marker setElementInterior( marker, v.int ) setElementDimension( marker, v.dim ) -- setamos o marker como elemento filho do elemento pai que criamos acima setElementParent( marker, markerStorage['parentElement'] ) -- armazenamos alguns dados do marker markerStorage['markerData'][ marker ] = { ['markerElement'] = marker, ['int'] = v.int, ['dim'] = v.dim } end addEventHandler('onMarkerHit', markerStorage['parentElement'], markerOutputMessage) end) -- esse evento será chamado sempre que alguém sair de um veículo addEventHandler( 'onVehicleExit', root, function( thePlayer ) verifyAndDestroyRentVehicle( thePlayer ) end) -- esse evento é chamado sempre que alguém sair do servidor addEventHandler( 'onPlayerQuit', root, function( ) verifyAndDestroyRentVehicle( source ) end) Não sei o que foi que eu fiz que mandei a versão com erro pra vc ao invés da corrigida, mas agora sim, aqui está a correta. Muito obrigado mano, desculpa ai todos os problemas que te proporcionei kkk Link to comment
Recommended Posts