local TABLE_DATA = {} -- criaremos uma tabela para armazenar os markers e blips
local TABLE_LOCATIONS = {
-- x, y, z, type, size, r, g, b, a, visibleTo, blipId
-- posição X, posição Y, posição Z, tipo do marker, tamanho do marker, cor r, cor g, cor b, transparência, é visível para todos? (true para sim, false para não), id do blip
{1222.713, -1799.09, 16.555, "cylinder", 1.5, 255, 255, 0, 130, true, 42},
{1261.461, -1831.496, 13.385, "checkpoint", 3, 255, 255, 0, 130, false, 19},
{1426.6989746094, -961.05804443359, 36.34884262085, "checkpoint", 3, 255, 255, 0, 130, false, 19},
}
addEventHandler("onResourceStart", resourceRoot,
function()
-- separaremos a tabela em Markers e Blips para não confundirmos
TABLE_DATA.Markers = {}
TABLE_DATA.Blips = {}
-- criaremos também uma tabela para os veículos que os jogadores irão obter
TABLE_DATA.Vehicles = {}
-- faremos o loop da tabela 'TABLE_LOCATIONS'
for i, v in pairs(TABLE_LOCATIONS) do
--[[
Atenção! Veja o comentário abaixo de 'TABLE_LOCATIONS' para se informar do que irei dizer.
- Cada item da tabela possui uma posição de localização, vejamos abaixo:
v[1] = x
v[2] = y
v[3] = z
v[4] = type
v[5] = size
v[6] = r
v[7] = g
v[8] = b
v[9] = a
v[10] = visibleTo
v[11] = blipId
Logo, aplicaremos esses valores na função createMarker
]]--
TABLE_DATA.Markers[i] = createMarker(v[1], v[2], v[3], v[4], v[5], v[6], v[7], v[8], v[9])
-- configurar para aparecer ou não aparecer para todos
setElementVisibleTo(TABLE_DATA.Markers[i], root, v[10])
-- criar e sincronizar o blip (ao marker)
TABLE_DATA.Blips[i] = createBlipAttachedTo(TABLE_DATA.Markers[i], v[11])
-- adicionar um ID (e também salvaremos o blip) para cada marker, fazendo com que seja fácil obtê-lo em funções
setElementData(TABLE_DATA.Markers[i], "marker_id", i) -- a letra i significa o total de markers dentro da tabela, neste caso temos apenas 3 items na tabela
setElementData(TABLE_DATA.Markers[i], "marker_blip", TABLE_DATA.Blips[i])
-- adicionaremos uma função de hit/leave para todos os markers
addEventHandler("onMarkerHit", TABLE_DATA.Markers[i], __markerHitFunction)
addEventHandler("onMarkerLeave", TABLE_DATA.Markers[i], __markerLeaveFunction)
end
end
)
function __markerHitFunction(hitElement, dimension) -- hitElement = jogador
-- verificaremos se o hitElement é um jogador de fato e se a dimensão é a dele
if getElementType(hitElement) == "player" and dimension then
-- obtendo o id e blip do marker (lembre-se que source é o elemento do marker)
local id = tonumber(getElementData(source, "marker_id"))
local blip = getElementData(source, "marker_blip")
-- verifique se o marker possui um id e um blip
if id and blip then
--[[
Visto que o marker "Início" está na primeira posição da tabela,
então vamos verificar se o id dele é 1 e então executaremos sua função
]]--
if id == 1 then
-- iremos executar a sua função, UltimaterSCR
if TABLE_DATA.Vehicles[hitElement] and isElement(TABLE_DATA.Vehicles[hitElement]) then destroyElement(TABLE_DATA.Vehicles[hitElement]) end
-- criar o veículo
TABLE_DATA.Vehicles[hitElement] = createVehicle(413, 1239.748, -1829.575, 13.404, -0, 0, 274.52)
warpPedIntoVehicle(hitElement, TABLE_DATA.Vehicles[hitElement])
-- configurar o elemento marker e blip para serem vistos apenas para este jogador
setElementVisibleTo(source, hitElement, true)
setElementVisibleTo(blip, hitElement, true)
-- fazer as demais configurações e enviar a mensagem ao jogador
setElementData(hitElement, "inicio", true)
exports.Scripts_Dxmessages:outputDx(hitElement, "Entregue as encomendas nos pontos marcados em seu GPS", "info")
end
end
end
end
Com certeza não ficou completo, mas espero que você entenda o conceito de loops. Sobre as funções, fiz apenas o básico e o código necessita ser continuado para que os markers de entrega sejam funcionais.