---------------------------------------------------------------------------------------------------------------------------------------------------
--------- TUNNEL
---------------------------------------------------------------------------------------------------------------------------------------------------
local Tunnel = module("vrp","lib/Tunnel")
local Proxy = module("vrp","lib/Proxy")
vRP = Proxy.getInterface("vRP")
src = {}
Tunnel.bindInterface(GetCurrentResourceName(), src)
vSERVER = Tunnel.getInterface(GetCurrentResourceName())
---------------------------------------------------------------------------------------------------------------------------------------------------
--------- VARIABLES
---------------------------------------------------------------------------------------------------------------------------------------------------
local farmando = false
local pos = 1
local blips = nil
local typefarm = 'none'
local nivel = 0
local rotas = {}
local inPed = nil
local pedSpawn = true
local pedFire = true
local ameaca = 30
local armadura = 50
local arma = "WEAPON_PISTOL"
local inPed = nil
local inPed2 = nil
local inPed3 = nil
local inPed4 = nil
local methpedtruck = nil
local methpedtruckdriver = nil
local methpedtruck2 = nil
local methpedtruckdriver2 = nil
local movimento = 0
local reforco = false
local meuXp = 0
local meuXpLoja = 0
local fac = nil
local facId = nil
-----------------------------------------------------------------------------------------------------------------------------------------
-- PEDHASHS
-----------------------------------------------------------------------------------------------------------------------------------------
local pedHashs = {
"ig_abigail",
"u_m_y_abner",
"a_m_o_acult_02",
"a_m_m_afriamer_01",
"csb_mp_agent14",
"csb_agent",
"u_m_m_aldinapoli",
"ig_amandatownley",
"ig_andreas",
"u_m_y_antonb",
"csb_anita",
"cs_andreas",
"ig_ashley",
"s_m_m_autoshop_01",
"ig_money",
"g_m_y_ballaeast_01",
"g_m_y_ballaorig_01",
"g_f_y_ballas_01",
"u_m_y_babyd",
"ig_barry",
"s_m_y_barman_01",
"u_m_y_baygor",
"a_f_y_beach_01",
"a_f_y_bevhills_02",
"a_f_y_bevhills_01",
"u_m_y_burgerdrug_01",
"a_m_m_business_01",
"a_f_m_business_02",
"a_m_y_business_02",
"ig_car3guy1",
"ig_chef2",
"g_m_m_chigoon_02",
"g_m_m_chigoon_01",
"ig_claypain",
"ig_clay",
"a_f_m_eastsa_01"
}
---------------------------------------------------------------------------------------------------------------------------------------------------
--------- THREADS
---------------------------------------------------------------------------------------------------------------------------------------------------
-- print(GetWeaponDamageModifier(GetHashKey("WEAPON_PISTOL_MK2")))
-- print(GetCurrentPedWeaponEntityIndex(ped2))
-- print(GetHashKey("WEAPON_PISTOL_MK2"))
--N_0x4757f00bc6323cfe(teste2,1.0)
-- print(GetWeaponDamageModifier(GetHashKey("WEAPON_PISTOL_MK2")))
-- ARMAZEM
Citizen.CreateThread(function()
while true do
local idle = 1000
for k,v in pairs(cfg.geral) do
local ped = PlayerPedId()
local coords = GetEntityCoords(ped)
local distance = #(vector3(coords.x,coords.y,coords.z) - vector3(v.armazem[1],v.armazem[2],v.armazem[3]))
if distance <= 5.0 then
idle = 1
if distance <= 3.0 then
idle = 1
DrawText3D(v.armazem[1],v.armazem[2],v.armazem[3], "[~b~ARMAZEM~w~] Aperte ~g~ G ~w~ para guardar.")
if distance <= 2.0 and IsControlJustPressed(0, 47) and vSERVER.checkPerm(v.permissao) then
vSERVER.guardarItensArmazem(k)
end
end
end
end
Citizen.Wait(idle)
end
end)
-- ROTAS
Citizen.CreateThread(function()
while true do
local idle = 1000
for k,v in pairs(cfg.geral) do
local ped = PlayerPedId()
local coords = GetEntityCoords(ped)
local distance = #(vector3(coords.x,coords.y,coords.z) - vector3(v.inicio[1],v.inicio[2],v.inicio[3]))
if not farmando then
if distance <= 5.0 then
idle = 1
typefarm = k
DrawMarker(27,v.inicio[1],v.inicio[2],v.inicio[3]-0.97,0,0,0,0,0,0,0.7,0.7,0.3,0,255,249,249,0,0,0,1)
if distance <= 3.0 then
idle = 1
DrawText3D(v.inicio[1],v.inicio[2],v.inicio[3], "~w~[~r~"..k.."~w~]<br>"..cfg.lang['bliptxt'].."")
if distance <= 2.0 and IsControlJustPressed(0, 38) and vSERVER.checkPerm(v.permissao) then
fac = v.permissao
facId = v.idFac
meuXp = vSERVER.getXp()
SendNUIMessage({
tipo="farm",
show = true,
rotaNome = k,
xp = meuXp
})
SetNuiFocus(true,true)
--farmando = true
--criandoblip(cfg.geral[typefarm].rotas[1][1],cfg.geral[typefarm].rotas[1][2],cfg.geral[typefarm].rotas[1][3])
end
end
end
end
end
Citizen.Wait(idle)
end
end)
Citizen.CreateThread(function()
while true do
local idle = 1000
local ped = PlayerPedId()
local coords = GetEntityCoords(ped)
if GetEntityHealth(ped) <= 101 then
encerrar()
end
if farmando then
local distance = #(vector3(coords.x,coords.y,coords.z) - vector3(rotas[pos].x,rotas[pos].y,rotas[pos].z))
if nivel >= 2 and pedSpawn then
local mHash = GetHashKey(pedHashs[math.random(#pedHashs)])
local mHash2 = GetHashKey(pedHashs[math.random(#pedHashs)])
RequestModel(mHash)
while not HasModelLoaded(mHash) do
RequestModel(mHash)
Citizen.Wait(10)
end
retval = false
while not retval do
x = rotas[pos].x + math.random(-3, 3)
y = rotas[pos].y + math.random(-3, 3)
retval, z = GetGroundZFor_3dCoord(x,y,rotas[pos].z,false)
Citizen.Wait(500)
end
inPed = CreatePed(4,mHash,x,y,z,240.91,true,false)
SetEntityInvincible(inPed,false)
-- FreezeEntityPosition(inPed,false)
SetModelAsNoLongerNeeded(mHash)
GiveWeaponToPed(inPed,GetHashKey(arma),200,true,true)
inPed4 = CreatePed(4,mHash2,x,y,z,240.91,true,false)
SetEntityInvincible(inPed4,false)
-- FreezeEntityPosition(inPed,false)
SetModelAsNoLongerNeeded(mHash)
GiveWeaponToPed(inPed,GetHashKey(arma),200,true,true)
SetModelAsNoLongerNeeded(mHash2)
GiveWeaponToPed(inPed4,GetHashKey(arma),200,true,true)
pedSpawn = false
end
if nivel >= 2 and distance <= 100.0 and pedFire then
-- TaskSetBlockingOfNonTemporaryEvents(inPed, true)
SetPedCanRagdoll(inPed)
SetPedCombatAttributes(inPed, 46, true)
SetEntityInvincible(inPed,false)
SetPedFleeAttributes(inPed, 0, true)
FreezeEntityPosition(inPed,false)
SetPedSuffersCriticalHits(inPed,false)
SetPedArmour(inPed, armadura)
SetPedAsEnemy(inPed, true)
SetPedRelationshipGroupHash(inPed, 'Methhouse')
-- SetPedRelationshipGroupHash(inPed, GetHashKey("HATES_PLAYER"))
-- SetRelationshipBetweenGroups(5, GetHashKey("Methhouse"), GetHashKey("PLAYER"))
SetPedCombatRange(inPed,2)
TaskCombatPed(inPed, GetPlayerPed(-1))
--SetRelationshipBetweenGroups(5, Grupo de hash1, Grupo de hash2)
SetPedAccuracy(inPed, ameaca)
SetPedDropsWeaponsWhenDead(inPed, false)
SetPedCombatMovement(inPed,movimento)
SetPedCanRagdoll(inPed4)
SetPedCombatAttributes(inPed4, 46, true)
SetEntityInvincible(inPed4,false)
SetPedFleeAttributes(inPed4, 0, true)
FreezeEntityPosition(inPed4,false)
SetPedSuffersCriticalHits(inPed4,false)
SetPedArmour(inPed4, armadura)
SetPedAsEnemy(inPed4, true)
SetPedRelationshipGroupHash(inPed4, 'Methhouse')
-- SetPedRelationshipGroupHash(inPed, GetHashKey("HATES_PLAYER"))
-- SetRelationshipBetweenGroups(5, GetHashKey("Methhouse"), GetHashKey("PLAYER"))
SetPedCombatRange(inPed4,2)
TaskCombatPed(inPed4, GetPlayerPed(-1))
--SetRelationshipBetweenGroups(5, Grupo de hash1, Grupo de hash2)
SetPedAccuracy(inPed4, ameaca)
SetPedDropsWeaponsWhenDead(inPed4, false)
SetPedCombatMovement(inPed4,movimento)
--TaskWanderInArea(inPed, rotas[pos].x,rotas[pos].y,rotas[pos].z, 1 , 150,150)
-- SetBlockingOfNonTemporaryEvents(inPed,false)
--TaskShootAtEntity(inPed,ped,5000,GetHashKey("FIRING_PATTERN_FULL_AUTO")) -- forte
--TaskShootAtEntity(inPed,ped,5000,GetHashKey("FIRING_PATTERN_BURST_FIRE_DRIVEBY")) --medio
--TaskShootAtEntity(inPed,ped,5000,GetHashKey(ameaca)) -- parece facil
--TaskShootAtEntity(inPed,ped,5000,GetHashKey("FIRING_PATTERN_BURST_FIRE_PISTOL"))
pedFire = false
end
if inPed then
end
if distance <= 20.0 then
idle = 1
DrawMarker(21,rotas[pos].x,rotas[pos].y,rotas[pos].z-0.1,0,0,0,0,0,0,0.7,0.7,0.3,0,255,249,249,0,0,0,1)
if distance <= 3.0 then
idle = 1
DrawText3D(rotas[pos].x,rotas[pos].y,rotas[pos].z, cfg.lang['farmtxt'])
if distance <= 2.0 and IsControlJustPressed(0, 38) then
if checkOnVehicle() then
if cfg.animation == true then
vRP._playAnim(false,{"amb@medic@standing@tendtodead@idle_a","idle_a"},true)
end
SetTimeout(500,function()
TriggerEvent('cancelando',false)
ClearPedTasks(PlayerPedId())
end)
DeleteEntity(methpedtruck)
DeleteEntity(methpedtruckdriver)
DeleteEntity(methpedtruck2)
DeleteEntity(methpedtruckdriver2)
if blips then
RemoveBlip(blips)
end
DeleteEntity(inPed)
DeleteEntity(inPed4)
inPed = nil
DeleteEntity(inPed2)
DeleteEntity(inPed3)
pedSpawn = true
pedFire = true
reforco = false
checkFarm()
cacado()
if nivel == 3 then
pos = math.random(1,#rotas)
else
if pos == #rotas then
pos = 1
else
pos = pos + 1
end
end
criandoblip(rotas[pos].x,rotas[pos].y,rotas[pos].z)
--teste
vSERVER.setXp(nivel,fac,facId)
--print("Aqui")
--RequestModel(GetHashKey(yosemite3))
end
end
end
end
end
Citizen.Wait(idle)
end
end)
Citizen.CreateThread(function()
while true do
local idle = 1000
if farmando then
idle = 1
drawTxt("~y~PRESSIONE ~r~F7 ~w~SE DESEJA FINALIZAR A ROTA ",4,0.270,0.905,0.45,255,255,255,200)
drawTxt("VA ATÉ O DESTINO PARA COLETAR OS ~g~ITENS",4,0.270,0.93,0.45,255,255,255,200)
if IsControlJustPressed(0, 168) then
TriggerEvent('Notify','importante','Você cancelou a rota!',5000)
encerrar()
end
end
Citizen.Wait(idle)
end
end)
-- Verifica se o ped foi morto por arma branca no nivel 2
Citizen.CreateThread(function()
while true do
local idle = 5000
if farmando and nivel == 2 and inPed and not reforco then
idle = 1000
if GetEntityHealth(inPed) == 0 then
arm1, arm2 = GetCurrentPedWeapon(PlayerPedId())
if arm2 ~= GetHashKey("WEAPON_KNIFE") or arm2 ~= GetHashKey("WEAPON_GOLFCLUB") or arm2 ~= GetHashKey("WEAPON_POOLCUE") or arm2 ~= GetHashKey("WEAPON_BAT") or arm2 ~= GetHashKey("WEAPON_DAGGER")then
TriggerEvent('Notify','alerta','Você usou uma arma de fogo! em uma briga de facas!<BR> Reforços foram chamados!',5000)
reforco = true
callReforco()
end
end
end
Citizen.Wait(idle)
end
end)
function cacado()
local ped = PlayerPedId()
local idle = 5000
loc = GetEntityCoords(PlayerPedId())
local spawnRadius = 200
local found, spawnPos, spawnHeading = GetClosestVehicleNodeWithHeading(loc.x + math.random(-spawnRadius, spawnRadius), loc.y + math.random(-spawnRadius, spawnRadius), loc.z, 0, 3, 0)
Citizen.Wait(idle)
if farmando and nivel == 3 then
TriggerEvent('Notify','importante','Você esta sendo caçado',5000)
RequestModel(0x3BAD4184) --a_m_m_rurmeth_01
RequestModel(0x3D0A5EB1) --ig_russiandrunk
RequestModel(0x3F789426) --a_f_y_rurmeth_01
local ModelHash = 'LECTRO' -- Use Compile-time hashes to get the hash of this model
if not IsModelInCdimage(ModelHash) then
return
end
RequestModel(ModelHash) -- Request the model
while not HasModelLoaded(ModelHash) do -- Waits for the model to load
Wait(2)
end
--local Vehicle = CreateVehicle(ModelHash, -1496.04,1477.33,117.37,339.3 , true, false) -- Spawns a networked vehicle on your current coords
methpedtruck = CreateVehicle(ModelHash, spawnPos, spawnHeading , true, false)
SetVehicleColours(methpedtruck, 2, 2)
oke, Group = AddRelationshipGroup("Methhouse")
methpedtruckdriver = CreatePedInsideVehicle(methpedtruck, 12, GetHashKey("a_m_m_rurmeth_01"), -1, true, false)
--TaskVehicleGotoNavmesh(methpedtruckdriver, methpedtruck, 2474.4, 4950.79, 45.16, 200, 156, 5.0)
SetPedRelationshipGroupHash(methpedtruckdriver, Group)
SetEntityCanBeDamagedByRelationshipGroup(methpedtruckdriver, false, Group)
GiveWeaponToPed(methpedtruckdriver, "WEAPON_PISTOL", 400, false, true)
SetPedCombatAttributes(methpedtruckdriver, 1, true)
SetPedCombatAttributes(methpedtruckdriver, 2, true)
SetPedCombatAttributes(methpedtruckdriver, 5, true)
SetPedCombatAttributes(methpedtruckdriver, 16, true)
SetPedFleeAttributes(methpedtruckdriver, 0, 0)
SetPedPathAvoidFire(methpedtruckdriver, 1)
SetPedAlertness(methpedtruckdriver,3)
SetPedAccuracy(methpedtruckdriver, 15)
SetPedArmour(methpedtruckdriver, 90)
SetPedCanRagdoll(methpedtruckdriver)
TaskCombatPed(methpedtruckdriver, GetPlayerPed(-1), 0, 16)
SetDriverAbility(methpedtruckdriver, 1.0)
SetPedDropsWeaponsWhenDead(methpedtruckdriver, false)
found, spawnPos, spawnHeading = GetClosestVehicleNodeWithHeading(loc.x + math.random(-spawnRadius, spawnRadius), loc.y + math.random(-spawnRadius, spawnRadius), loc.z, 0, 3, 0)
methpedtruck2 = CreateVehicle(ModelHash, spawnPos, spawnHeading , true, false)
SetVehicleColours(methpedtruck2, 2, 2)
oke, Group = AddRelationshipGroup("Methhouse")
methpedtruckdriver2 = CreatePedInsideVehicle(methpedtruck2, 12, GetHashKey("a_m_m_rurmeth_01"), -1, true, false)
--TaskVehicleGotoNavmesh(methpedtruckdriver, methpedtruck, 2474.4, 4950.79, 45.16, 200, 156, 5.0)
SetPedRelationshipGroupHash(methpedtruckdriver2, Group)
SetEntityCanBeDamagedByRelationshipGroup(methpedtruckdriver2, false, Group)
GiveWeaponToPed(methpedtruckdriver2, "WEAPON_PISTOL", 400, false, true)
SetPedCombatAttributes(methpedtruckdriver2, 1, true)
SetPedCombatAttributes(methpedtruckdriver2, 2, true)
SetPedCombatAttributes(methpedtruckdriver2, 5, true)
SetPedCombatAttributes(methpedtruckdriver2, 16, true)
SetPedFleeAttributes(methpedtruckdriver2, 0, 0)
SetPedPathAvoidFire(methpedtruckdriver2, 1)
SetPedAlertness(methpedtruckdriver2,3)
SetPedAccuracy(methpedtruckdriver2, 15)
SetPedArmour(methpedtruckdriver2, 90)
SetPedCanRagdoll(methpedtruckdriver2)
TaskCombatPed(methpedtruckdriver2, GetPlayerPed(-1), 0, 16)
SetDriverAbility(methpedtruckdriver2, 1.0)
SetPedDropsWeaponsWhenDead(methpedtruckdriver2, false)
end
end
function callReforco()
local mHash2 = GetHashKey(pedHashs[math.random(#pedHashs)])
local mHash3 = GetHashKey(pedHashs[math.random(#pedHashs)])
RequestModel(mHash2)
while not HasModelLoaded(mHash2) do
RequestModel(mHash2)
Citizen.Wait(10)
end
RequestModel(mHash3)
while not HasModelLoaded(mHash3) do
RequestModel(mHash3)
Citizen.Wait(10)
end
retval = false
while not retval do
x = rotas[pos].x + math.random(-15, 15)
y = rotas[pos].y + math.random(-15, 15)
retval, z = GetGroundZFor_3dCoord(x,y,rotas[pos].z + 1000,false)
Citizen.Wait(500)
end
inPed2 = CreatePed(4,mHash2,x , y ,z,240.91,true,false)
SetModelAsNoLongerNeeded(mHash2)
GiveWeaponToPed(inPed2,GetHashKey("WEAPON_PISTOL"),200,true,true)
TaskSetBlockingOfNonTemporaryEvents(inPed, true)
SetPedCanRagdoll(inPed2)
SetPedCombatAttributes(inPed2, 46, true)
SetEntityInvincible(inPed2,false)
SetPedFleeAttributes(inPed2, 0, true)
FreezeEntityPosition(inPed,false)
SetPedSuffersCriticalHits(inPed,false)
SetPedArmour(inPed2, 50)
SetPedAsEnemy(inPed2, true)
SetPedRelationshipGroupHash(inPed2, 'Methhouse')
SetPedCombatRange(inPed2,2)
TaskCombatPed(inPed2, GetPlayerPed(-1))
SetPedAccuracy(inPed2, 10)
SetPedDropsWeaponsWhenDead(inPed2, false)
SetPedCombatMovement(inPed2,movimento)
Wait(2000)
retval = false
while not retval do
x = rotas[pos].x + math.random(-15, 15)
y = rotas[pos].y + math.random(-15, 15)
retval, z = GetGroundZFor_3dCoord(x,y,rotas[pos].z + 1000,false)
Citizen.Wait(500)
end
inPed3 = CreatePed(4,mHash3,x , y ,z,240.91,true,false)
SetModelAsNoLongerNeeded(mHash3)
GiveWeaponToPed(inPed3,GetHashKey("WEAPON_PISTOL"),200,true,true)
TaskSetBlockingOfNonTemporaryEvents(inPed, true)
SetPedCanRagdoll(inPed3)
SetPedCombatAttributes(inPed3, 46, true)
SetEntityInvincible(inPed3,false)
SetPedFleeAttributes(inPed3, 0, true)
FreezeEntityPosition(inPed3,false)
SetPedSuffersCriticalHits(inPed3,false)
SetPedArmour(inPed3, 50)
SetPedAsEnemy(inPed3, true)
SetPedRelationshipGroupHash(inPed3, 'Methhouse')
SetPedCombatRange(inPed3,2)
TaskCombatPed(inPed3, GetPlayerPed(-1))
SetPedAccuracy(inPed3, 10)
SetPedDropsWeaponsWhenDead(inPed3, false)
SetPedCombatMovement(inPed3,movimento)
end
---------------------------------------------------------------------------------------------------------------------------------------------------
--------- FUNCTIONS
---------------------------------------------------------------------------------------------------------------------------------------------------
function checkFarm()
local msg = ""
if cfg.geral[typefarm].nome == "Rota Munição" then
local posi = math.random(1,#cfg.geral[typefarm].itens)
local amount = math.random(cfg.geral[typefarm].itens[posi].min,cfg.geral[typefarm].itens[posi].max)
vSERVER.giveFarm(cfg.geral[typefarm].itens[posi].item,amount)
Wait(1000)
posi = math.random(1,#cfg.geral[typefarm].itens)
local posi = math.random(1,#cfg.geral[typefarm].itens)
local amount = math.random(cfg.geral[typefarm].itens[posi].min,cfg.geral[typefarm].itens[posi].max)
vSERVER.giveFarm(cfg.geral[typefarm].itens[posi].item,amount)
else
for k,v in pairs(cfg.geral[typefarm].itens) do
local itens = v.item
local amount = math.random(v.min,v.max)
Wait(1000)
if vSERVER.giveFarm(itens,amount) then
msg = msg.. "Item <b>"..itens.."</b> quantidade <b>"..amount.."x</b><br>"
else
msg = msg.. "<b>Inventário CHEIO</b><br>"
end
end
end
TriggerEvent('Notify','importante',msg,5000)
if nivel == 2 then
local sorte = math.random(0, 100)
for k,v in pairs(cfg.geral[typefarm].itens2) do
if sorte <= v.chance then
local itens = v.item
local amount = math.random(v.min,v.max)
Wait(800)
vSERVER.giveFarm(itens,amount)
end
end
end
end
function checkOnVehicle()
local ped = PlayerPedId()
if cfg.invehicle then
return true
else
if IsPedInAnyVehicle(ped) then
TriggerEvent('Notify','importante','Saia do veículo para coletar!',5000)
return false
else
return true
end
end
end
function drawTxt(text,font,x,y,scale,r,g,b,a)
SetTextFont(font)
SetTextScale(scale,scale)
SetTextColour(r,g,b,a)
SetTextOutline()
SetTextCentre(1)
SetTextEntry("STRING")
AddTextComponentString(text)
DrawText(x,y)
end
function DrawText3D(x, y, z, text)
local onScreen,_x,_y = World3dToScreen2d(x,y,z)
SetTextFont(4)
SetTextScale(0.50,0.50)
SetTextColour(255,255,255,150)
SetTextEntry("STRING")
SetTextCentre(1)
AddTextComponentString(text)
DrawText(_x,_y)
end
function criandoblip(x,y,z)
blips = AddBlipForCoord(x,y,z)
SetBlipSprite(blips,1)
SetBlipColour(blips,5)
SetBlipScale(blips,0.4)
SetBlipAsShortRange(blips,false)
SetBlipRoute(blips,true)
BeginTextCommandSetBlipName("STRING")
AddTextComponentString("Destino")
EndTextCommandSetBlipName(blips)
end
function encerrar()
RemoveBlip(blips)
DeleteEntity(inPed)
DeleteEntity(inPed4)
pos = 1
farmando = false
pedSpawn = true
pedFire = true
reforco = false
Wait(5000)
DeleteEntity(inPed2)
DeleteEntity(inPed3)
DeleteEntity(methpedtruck)
DeleteEntity(methpedtruckdriver)
DeleteEntity(methpedtruck2)
DeleteEntity(methpedtruckdriver2)
inPed = nil
methpedtruck = nil
methpedtruckdriver = nil
end
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- CALLBACKS
------------------------------------------------------------------------------
RegisterNUICallback("sair", function(data)
SetNuiFocus(false,false)
end)
RegisterNUICallback("setarRota", function(data)
nivel = data.nivel
if nivel == 2 then
ameaca = 10
arma = "WEAPON_KNIFE"
armadura = 50
movimento = 3
elseif nivel == 3 then
ameaca = 15
arma = "WEAPON_ASSAULTRIFLE_MK2"
armadura = 80
movimento = 3
elseif nivel == 4 then
ameaca = 30
arma = "WEAPON_ASSAULTRIFLE_MK2"
movimento = 3
else
ameaca = 10
arma = "WEAPON_PISTOL"
end
AddRelationshipGroup('Methhouse')
end)
RegisterNUICallback("iniciarRotaNorte", function(data)
rotas = vSERVER.getRota("norte")
farmando = true
if nivel == 3 then
pos = math.random(1,#rotas)
else
pos = 1
end
criandoblip(rotas[pos].x,rotas[pos].y,rotas[pos].z)
end)
RegisterNUICallback("iniciarRotaSul", function(data)
rotas = vSERVER.getRota("sul")
farmando = true
criandoblip(rotas[1].x,rotas[1].y,rotas[1].z)
end)
RegisterNUICallback("comprar", function(data)
meuXpLoja = vSERVER.getXpLoja()
if meuXpLoja >= data.total then
if data.tipo == "item" then
if vSERVER.giveFarm(data.item,data.qtd) then
meuXpLoja = meuXpLoja - data.total
vSERVER.setXpLoja(data.total)
else
TriggerEvent('Notify','negado','Mochila cheia!',5000)
end
else
vSERVER.giveCar(data)
vSERVER.setXpLoja(data.total)
TriggerEvent('Notify','negado','Carro adiconado na garagem!',5000)
end
--SetNuiFocus(false,false)
end
end)
-- ALEX DA HORA CAMERAS DE SEGURANÇA
local inCamera = false
local camSelect = nil
local coords = nil
local configCam = {
["Armas1"] = {
cameras = {
["1"] = { -1920.43,2056.89,142.83,243.17 },
["2"] = {-1911.86,2013.84,153.81,336.97}
}
},
["Armas2"] = {
cameras = {
["1"] = { -1920.43,2056.89,142.83,130.1 },
}
},
["Police"] = {
cameras = {
["1"] = { 128.28,-1025.44,43.4,200.39},
["2"] = { 260.26,-830.06,52.56,266.81},
["3"] = { 454.29,-1003.41,37.52,312.56},
["4"] = { 419.47,-960.94,34.69,268.76},
["5"] = { 489.07,-965.59,36.85,346.1},
["6"] = { -824.91,-1191.38,10.56,211.39},
}
}
}
local inCamera = false
local coordsC = nil
RegisterCommand('cameraSeg',function(source,args,rawCommand)
local ped = PlayerPedId()
local camSelect = nil
local source = source
local org = nil
for k,v in pairs(configCam) do
if vSERVER.checkPerm2(k) then
org = k
end
end
if not args[1] then
TriggerEvent('Notify','importante','Informe o número da camera <br> Exemplo: /cameraSeg 1',6000)
end
if not IsPedInAnyVehicle(ped) then
if inCamera then
ClearTimecycleModifier()
DestroyCam(camSelect,false)
SetEntityInvincible(ped,false)
--SetEntityVisible(ped,true,false)
--SetEntityCoords(ped,coordsC,1,0,0,0)
FreezeEntityPosition(ped,false)
TriggerEvent("hudActived",true)
RenderScriptCams(false,false,0,1,0)
PlaySoundFrontend(-1,"HACKING_SUCCESS",false)
inCamera = false
camSelect = nil
else
if configCam[org].cameras[args[1]] then
inCamera = true
coordsC = GetEntityCoords(ped)
--SetEntityInvincible(ped,true)
--SetEntityVisible(ped,false,false)
--SetEntityCoords(ped,configCam[org].cameras[args[1]][1],configCam[org].cameras[args[1]][2],configCam[org].cameras[args[1]][3],1,0,0,0)
--FreezeEntityPosition(ped,true)
TriggerEvent("hudActived",false)
SetTimecycleModifier("heliGunCam")
PlaySoundFrontend(-1,"HACKING_SUCCESS",false)
camSelect = CreateCam("DEFAULT_SCRIPTED_CAMERA",true)
SetCamCoord(camSelect,configCam[org].cameras[args[1]][1],configCam[org].cameras[args[1]][2],configCam[org].cameras[args[1]][3])
SetCamRot(camSelect,-20.0,0.0,configCam[org].cameras[args[1]][4])
RenderScriptCams(true,false,0,1,0)
end
end
end
end)
------------------------------------------------------------------------------
-- CARREGAR NO OMBRO
--------------------------------------------------------------------------------
local carryingBackInProgress = false
RegisterCommand("carregar",function(source, args)
if vSERVER.checkpermcarregar() then
if not carryingBackInProgress then
carryingBackInProgress = true
local player = PlayerPedId()
lib = 'missfinale_c2mcs_1'
anim1 = 'fin_c2_mcs_1_camman'
lib2 = 'nm'
anim2 = 'firemans_carry'
distans = 0.15
distans2 = 0.27
height = 0.63
spin = 0.0
length = 100000
controlFlagMe = 49
controlFlagTarget = 33
animFlagTarget = 1
local closestPlayer = GetClosestPlayer(3)
target = GetPlayerServerId(closestPlayer)
if closestPlayer ~= nil then
-- print("triggering cmg2_animations:sync")
TriggerServerEvent('cmg2_animations:sync', closestPlayer, lib,lib2, anim1, anim2, distans, distans2, height,target,length,spin,controlFlagMe,controlFlagTarget,animFlagTarget)
else
-- print("[Aviso] Nenhum jogador por perto")
end
else
carryingBackInProgress = false
ClearPedSecondaryTask(GetPlayerPed(-1))
DetachEntity(GetPlayerPed(-1), true, false)
local closestPlayer = GetClosestPlayer(3)
target = GetPlayerServerId(closestPlayer)
TriggerServerEvent("cmg2_animations:stop",target)
end
end
end,false)
RegisterNetEvent('cmg2_animations:syncTarget')
AddEventHandler('cmg2_animations:syncTarget', function(target, animationLib, animation2, distans, distans2, height, length,spin,controlFlag)
local playerPed = GetPlayerPed(-1)
local targetPed = GetPlayerPed(GetPlayerFromServerId(target))
carryingBackInProgress = true
print("triggered cmg2_animations:syncTarget")
RequestAnimDict(animationLib)
while not HasAnimDictLoaded(animationLib) do
Citizen.Wait(10)
end
if spin == nil then spin = 180.0 end
AttachEntityToEntity(GetPlayerPed(-1), targetPed, 0, distans2, distans, height, 0.5, 0.5, spin, false, false, false, false, 2, false)
if controlFlag == nil then controlFlag = 0 end
TaskPlayAnim(playerPed, animationLib, animation2, 8.0, -8.0, length, controlFlag, 0, false, false, false)
end)
RegisterNetEvent('cmg2_animations:syncMe')
AddEventHandler('cmg2_animations:syncMe', function(animationLib, animation,length,controlFlag,animFlag)
local playerPed = GetPlayerPed(-1)
print("triggered cmg2_animations:syncMe")
RequestAnimDict(animationLib)
while not HasAnimDictLoaded(animationLib) do
Citizen.Wait(10)
end
Wait(500)
if controlFlag == nil then controlFlag = 0 end
TaskPlayAnim(playerPed, animationLib, animation, 8.0, -8.0, length, controlFlag, 0, false, false, false)
Citizen.Wait(length)
end)
RegisterNetEvent('cmg2_animations:cl_stop')
AddEventHandler('cmg2_animations:cl_stop', function()
carryingBackInProgress = false
ClearPedSecondaryTask(GetPlayerPed(-1))
DetachEntity(GetPlayerPed(-1), true, false)
end)
function GetPlayers()
local players = {}
for i = 0, 255 do
if NetworkIsPlayerActive(i) then
table.insert(players, i)
end
end
return players
end
function GetClosestPlayer(radius)
local players = GetPlayers()
local closestDistance = -1
local closestPlayer = -1
local ply = GetPlayerPed(-1)
local plyCoords = GetEntityCoords(ply, 0)
for index,value in ipairs(players) do
local target = GetPlayerPed(value)
if(target ~= ply) then
local targetCoords = GetEntityCoords(GetPlayerPed(value), 0)
local distance = GetDistanceBetweenCoords(targetCoords['x'], targetCoords['y'], targetCoords['z'], plyCoords['x'], plyCoords['y'], plyCoords['z'], true)
if(closestDistance == -1 or closestDistance > distance) then
closestPlayer = value
closestDistance = distance
end
end
end
-- print("jogador mais próximo é dist: " .. tostring(closestDistance))
if closestDistance <= radius then
return closestPlayer
else
return nil
end
end
------------------------------------------------------------------------------
-- CAVALINHO
--------------------------------------------------------------------------------
local piggyBackInProgress = false
RegisterCommand("cavalinho",function(source, args)
if src.checkpermcarregar() then
if not piggyBackInProgress then
piggyBackInProgress = true
local player = PlayerPedId()
lib = 'anim@arena@celeb@flat@paired@no_props@'
anim1 = 'piggyback_c_player_a'
anim2 = 'piggyback_c_player_b'
distans = -0.07
distans2 = 0.0
height = 0.45
spin = 0.0
length = 100000
controlFlagMe = 49
controlFlagTarget = 33
animFlagTarget = 1
local closestPlayer = GetClosestPlayer(3)
target = GetPlayerServerId(closestPlayer)
if closestPlayer ~= nil then
-----print("triggering cmg2_animations:sync")
TriggerServerEvent('cmg2_animations:sync', closestPlayer, lib, anim1, anim2, distans, distans2, height,target,length,spin,controlFlagMe,controlFlagTarget,animFlagTarget)
else
-----print("[CMG Anim] No player nearby")
end
else
piggyBackInProgress = false
ClearPedSecondaryTask(GetPlayerPed(-1))
DetachEntity(GetPlayerPed(-1), true, false)
local closestPlayer = GetClosestPlayer(3)
target = GetPlayerServerId(closestPlayer)
TriggerServerEvent("cmg2_animations:stop",target)
end
end
end,false)
RegisterNetEvent('cmg2_animations:syncTarget')
AddEventHandler('cmg2_animations:syncTarget', function(target, animationLib, animation2, distans, distans2, height, length,spin,controlFlag)
local playerPed = GetPlayerPed(-1)
local targetPed = GetPlayerPed(GetPlayerFromServerId(target))
piggyBackInProgress = true
-----print("triggered cmg2_animations:syncTarget")
RequestAnimDict(animationLib)
while not HasAnimDictLoaded(animationLib) do
Citizen.Wait(10)
end
if spin == nil then spin = 180.0 end
AttachEntityToEntity(GetPlayerPed(-1), targetPed, 0, distans2, distans, height, 0.5, 0.5, spin, false, false, false, false, 2, false)
if controlFlag == nil then controlFlag = 0 end
TaskPlayAnim(playerPed, animationLib, animation2, 8.0, -8.0, length, controlFlag, 0, false, false, false)
end)
RegisterNetEvent('cmg2_animations:syncMe')
AddEventHandler('cmg2_animations:syncMe', function(animationLib, animation,length,controlFlag,animFlag)
local playerPed = GetPlayerPed(-1)
-----print("triggered cmg2_animations:syncMe")
RequestAnimDict(animationLib)
while not HasAnimDictLoaded(animationLib) do
Citizen.Wait(10)
end
Wait(500)
if controlFlag == nil then controlFlag = 0 end
TaskPlayAnim(playerPed, animationLib, animation, 8.0, -8.0, length, controlFlag, 0, false, false, false)
Citizen.Wait(length)
end)
RegisterNetEvent('cmg2_animations:cl_stop')
AddEventHandler('cmg2_animations:cl_stop', function()
piggyBackInProgress = false
ClearPedSecondaryTask(GetPlayerPed(-1))
DetachEntity(GetPlayerPed(-1), true, false)
end)
function GetPlayers()
local players = {}
for i = 0, 255 do
if NetworkIsPlayerActive(i) then
table.insert(players, i)
end
end
return players
end
function GetClosestPlayer(radius)
local players = GetPlayers()
local closestDistance = -1
local closestPlayer = -1
local ply = GetPlayerPed(-1)
local plyCoords = GetEntityCoords(ply, 0)
for index,value in ipairs(players) do
local target = GetPlayerPed(value)
if(target ~= ply) then
local targetCoords = GetEntityCoords(GetPlayerPed(value), 0)
local distance = GetDistanceBetweenCoords(targetCoords['x'], targetCoords['y'], targetCoords['z'], plyCoords['x'], plyCoords['y'], plyCoords['z'], true)
if(closestDistance == -1 or closestDistance > distance) then
closestPlayer = value
closestDistance = distance
end
end
end
-----print("closest player is dist: " .. tostring(closestDistance))
if closestDistance <= radius then
return closestPlayer
else
return nil
end
end
function src.getNearestPlayer()
local player = nil
local players = GetNearestPlayers()
local min = 5.0001
for id,distance in pairs(players) do
if distance < min then
min = distance
player = id
end
end
return player
end
function GetNearestPlayers()
local players = {}
local pid = PlayerId()
local coords = GetEntityCoords(PlayerPedId())
for _,player in pairs(GetActivePlayers()) do
if player ~= pid and NetworkIsPlayerConnected(player) then
local distance = #(GetEntityCoords(GetPlayerPed(player)) - coords)
if distance <= 2.0 then
players[GetPlayerServerId(player)] = distance
end
end
end
return players
end
--------------------------------------------------------------------------------------
--
-- FUNCOES LOJA XP
---------------------------------------------------------------------------------------
RegisterCommand("lojaxp",function(source)
meuXpLoja = vSERVER.getXpLoja()
SendNUIMessage({
tipo = "loja",
show = true,
rotaNome = k,
xp = meuXpLoja,
itens = cfg.itensLoja
})
SetNuiFocus(true,true)
end)
--------------------------------------------------------------------------------------
--
-- FUNÇÕES DE TESTE
---------------------------------------------------------------------------------------
RegisterCommand('voar',function(source,args,rawCommand)
local ped = PlayerPedId()
--SetPedGravity(ped,true)
SetGravityLevel(PlayerPedId(), 1.0)
SetGravityLevel(0.0)
end) Write, Run & Share Lua code online using OneCompiler's Lua online compiler for free. It's one of the robust, feature-rich online compilers for Lua language, running the latest Lua version 5.4. Getting started with the OneCompiler's Lua editor is easy and fast. The editor shows sample boilerplate code when you choose language as Lua and start coding.
OneCompiler's Lua online editor supports stdin and users can give inputs to programs using the STDIN textbox under the I/O tab. Following is a sample Lua program which takes name as input and prints hello message with your name.
name = io.read("*a")
print ("Hello ", name)
Lua is a light weight embeddable scripting language which is built on top of C. It is used in almost all kind of applications like games, web applications, mobile applications, image processing etc. It's a very powerful, fast, easy to learn, open-source scripting language.
-- global variables
a = 10
-- local variables
local x = 30
| Value Type | Description |
|---|---|
| number | Represents numbers |
| string | Represents text |
| nil | Differentiates values whether it has data or not |
| boolean | Value can be either true or false |
| function | Represents a sub-routine |
| userdata | Represents arbitary C data |
| thread | Represents independent threads of execution. |
| table | Can hold any value except nil |
While is also used to iterate a set of statements based on a condition. Usually while is preferred when number of iterations are not known in advance.
while(condition)
do
--code
end
Repeat-Until is also used to iterate a set of statements based on a condition. It is very similar to Do-While, it is mostly used when you need to execute the statements atleast once.
repeat
--code
until( condition )
For loop is used to iterate a set of statements based on a condition.
for init,max/min value, increment
do
--code
end
Function is a sub-routine which contains set of statements. Usually functions are written when multiple calls are required to same set of statements which increase re-usuability and modularity.
optional_function_scope function function_name( argument1, argument2, argument3........, argumentn)
--code
return params with comma seperated
end