INSTALLATION
1. DOWNLOAD
The first step is to download the product we have just purchased. To do this we will go to our KEYMASTER account and search for "Buty-Miner".
2. DEPENDENCIES AND INSTALLATION
This script does not need any dependencies or progress bar.
Just place the script under your CORE and your core scripts:
ensure Buty-MinerYou must install SQL for the payment and experience system to work properly.
3. CONFIG
The following will explain all the settings, one of the most important things that I recommend you spend a few minutes to understand in order to offer your users the best possible experience.
Configuration = {
FrameWork = "esx", -- esx | qbcore
CoreFolderName = "", -- In case you are using a renamed CORE
Mysql = "oxmysql", -- oxmysql | mysql-async
Pickaxe = "weapon_hammer",
}
SelectJob = {
{
Coord = {x = 2746.28, y = 2788.52, z = 35.52, h = 32.04},
NPCmodel = 's_m_y_dockwork_01',
NPCanim = 'WORLD_HUMAN_CLIPBOARD'
},
}
Locations = {
['STONE'] = {
RequiredLevel = 0,
VehicleSpawn = {coord = vector4(2729.92, 2778.16, 35.88,132.96), VehicleModel = "tiptruck2"},
UI_Desc = "<p>You must go to crush stones, you will need to have a pick. Its value is lower than that of other minerals but if you work hard you can go and chop other minerals.</p> <p>First go to the location with the truck.</p> <p> Chop the stones and put them in the truck.</p> <p>Deliver the cargo once everything is inside the truck.</p> <p>Finally returns the truck.</p>",
SellPrice = 100,
ItemName = "stone",
{
ItemAmount = 5,
HitNumber = 8, -- Just add even numbers
GetEXP = 10,
['Stones'] = {
{coord = vector3(3016.8, 3032.84, 89.36), prop = "custom_prop_stone",prop2 = "custom_prop_stone2",prop3 = "custom_prop_stone3",prop4 = "custom_prop_small_stone", stone, take = false},
{coord = vector3(3023.28, 3034.24, 89.52), prop = "custom_prop_stone",prop2 = "custom_prop_stone2",prop3 = "custom_prop_stone3",prop4 = "custom_prop_small_stone", stone, take = false},
{coord = vector3(3030.44, 3033.96, 89.36), prop = "custom_prop_stone",prop2 = "custom_prop_stone2",prop3 = "custom_prop_stone3",prop4 = "custom_prop_small_stone", stone, take = false},
{coord = vector3(3035.72, 3032.64, 89.36), prop = "custom_prop_stone",prop2 = "custom_prop_stone2",prop3 = "custom_prop_stone3",prop4 = "custom_prop_small_stone", stone, take = false},
{coord = vector3(3042.16, 3029.76, 89.52), prop = "custom_prop_stone",prop2 = "custom_prop_stone2",prop3 = "custom_prop_stone3",prop4 = "custom_prop_small_stone", stone, take = false},
{coord = vector3(3046.8, 3027.56, 89.68), prop = "custom_prop_stone",prop2 = "custom_prop_stone2",prop3 = "custom_prop_stone3",prop4 = "custom_prop_small_stone", stone, take = false},
},
['Unload'] = {
{coord = vector3(2742.44, 2788.84, 34.4)},
{coord = vector3(290.84, 2861.44, 43.64)},
{coord = vector3(195.12, 2743.92, 43.44)},
},
['ReturnVehicle'] = vector3(2715.76, 2770.56, 36.28),
},
{
ItemAmount = 5,
HitNumber = 8, -- Just add even numbers
GetEXP = 10,
['Stones'] = {
{coord = vector3(3016.8, 3032.84, 89.36), prop = "custom_prop_stone",prop2 = "custom_prop_stone2",prop3 = "custom_prop_stone3",prop4 = "custom_prop_small_stone", stone, take = false},
{coord = vector3(3023.28, 3034.24, 89.52), prop = "custom_prop_stone",prop2 = "custom_prop_stone2",prop3 = "custom_prop_stone3",prop4 = "custom_prop_small_stone", stone, take = false},
{coord = vector3(3030.44, 3033.96, 89.36), prop = "custom_prop_stone",prop2 = "custom_prop_stone2",prop3 = "custom_prop_stone3",prop4 = "custom_prop_small_stone", stone, take = false},
{coord = vector3(3035.72, 3032.64, 89.36), prop = "custom_prop_stone",prop2 = "custom_prop_stone2",prop3 = "custom_prop_stone3",prop4 = "custom_prop_small_stone", stone, take = false},
{coord = vector3(3042.16, 3029.76, 89.52), prop = "custom_prop_stone",prop2 = "custom_prop_stone2",prop3 = "custom_prop_stone3",prop4 = "custom_prop_small_stone", stone, take = false},
{coord = vector3(3046.8, 3027.56, 89.68), prop = "custom_prop_stone",prop2 = "custom_prop_stone2",prop3 = "custom_prop_stone3",prop4 = "custom_prop_small_stone", stone, take = false},
},
['Unload'] = {
{coord = vector3(2742.44, 2788.84, 34.4)},
{coord = vector3(290.84, 2861.44, 43.64)},
{coord = vector3(195.12, 2743.92, 43.44)},
},
['ReturnVehicle'] = vector3(2715.76, 2770.56, 36.28),
},
{
ItemAmount = 5,
HitNumber = 8, -- Just add even numbers
GetEXP = 10,
['Stones'] = {
{coord = vector3(3016.8, 3032.84, 89.36), prop = "custom_prop_stone",prop2 = "custom_prop_stone2",prop3 = "custom_prop_stone3",prop4 = "custom_prop_small_stone", stone, take = false},
{coord = vector3(3023.28, 3034.24, 89.52), prop = "custom_prop_stone",prop2 = "custom_prop_stone2",prop3 = "custom_prop_stone3",prop4 = "custom_prop_small_stone", stone, take = false},
{coord = vector3(3030.44, 3033.96, 89.36), prop = "custom_prop_stone",prop2 = "custom_prop_stone2",prop3 = "custom_prop_stone3",prop4 = "custom_prop_small_stone", stone, take = false},
{coord = vector3(3035.72, 3032.64, 89.36), prop = "custom_prop_stone",prop2 = "custom_prop_stone2",prop3 = "custom_prop_stone3",prop4 = "custom_prop_small_stone", stone, take = false},
{coord = vector3(3042.16, 3029.76, 89.52), prop = "custom_prop_stone",prop2 = "custom_prop_stone2",prop3 = "custom_prop_stone3",prop4 = "custom_prop_small_stone", stone, take = false},
{coord = vector3(3046.8, 3027.56, 89.68), prop = "custom_prop_stone",prop2 = "custom_prop_stone2",prop3 = "custom_prop_stone3",prop4 = "custom_prop_small_stone", stone, take = false},
},
['Unload'] = {
{coord = vector3(2742.44, 2788.84, 34.4)},
{coord = vector3(290.84, 2861.44, 43.64)},
{coord = vector3(195.12, 2743.92, 43.44)},
},
['ReturnVehicle'] = vector3(2715.76, 2770.56, 36.28),
},
},
['IRON'] = {
RequiredLevel = 4,
VehicleSpawn = {coord = vector4(2729.92, 2778.16, 35.88,132.96), VehicleModel = "tiptruck2"},
UI_Desc = "<p>You must go to crush stones, you will need to have a pick. Its value is lower than that of other minerals but if you work hard you can go and chop other minerals.</p> <p>First go to the location with the truck.</p> <p> Chop the stones and put them in the truck.</p> <p>Deliver the cargo once everything is inside the truck.</p> <p>Finally returns the truck.</p>",
SellPrice = 100,
ItemName = "iron",
{
ItemAmount = 5,
HitNumber = 10,
GetEXP = 20,
['Stones'] = {
{coord = vector3(-595.08, 2113.96, 127.36), prop = "custom_prop_metal",prop2 = "custom_prop_metal2",prop3 = "custom_prop_metal3",prop4 = "custom_prop_small_metal", stone, take = false},
{coord = vector3(-593.08, 2116.72, 127.64), prop = "custom_prop_metal",prop2 = "custom_prop_metal2",prop3 = "custom_prop_metal3",prop4 = "custom_prop_small_metal", stone, take = false},
{coord = vector3(-591.12, 2124.4, 127.846), prop = "custom_prop_metal",prop2 = "custom_prop_metal2",prop3 = "custom_prop_metal3",prop4 = "custom_prop_small_metal", stone, take = false},
{coord = vector3(-585.16, 2120.48, 129.28), prop = "custom_prop_metal",prop2 = "custom_prop_metal2",prop3 = "custom_prop_metal3",prop4 = "custom_prop_small_metal", stone, take = false},
{coord = vector3(-579.52, 2112.72, 130.8), prop = "custom_prop_metal",prop2 = "custom_prop_metal2",prop3 = "custom_prop_metal3",prop4 = "custom_prop_small_metal", stone, take = false},
{coord = vector3(-604.32, 2109.12, 126.32), prop = "custom_prop_metal",prop2 = "custom_prop_metal2",prop3 = "custom_prop_metal3",prop4 = "custom_prop_small_metal", stone, take = false},
},
['Unload'] = {
{coord = vector3(2742.44, 2788.84, 34.4)},
{coord = vector3(290.84, 2861.44, 43.64)},
{coord = vector3(195.12, 2743.92, 43.44)},
},
['ReturnVehicle'] = vector3(2715.76, 2770.56, 36.28),
},
{
ItemAmount = 5,
HitNumber = 10,
GetEXP = 20,
['Stones'] = {
{coord = vector3(-595.08, 2113.96, 127.36), prop = "custom_prop_metal",prop2 = "custom_prop_metal2",prop3 = "custom_prop_metal3",prop4 = "custom_prop_small_metal", stone, take = false},
{coord = vector3(-593.08, 2116.72, 127.64), prop = "custom_prop_metal",prop2 = "custom_prop_metal2",prop3 = "custom_prop_metal3",prop4 = "custom_prop_small_metal", stone, take = false},
{coord = vector3(-591.12, 2124.4, 127.846), prop = "custom_prop_metal",prop2 = "custom_prop_metal2",prop3 = "custom_prop_metal3",prop4 = "custom_prop_small_metal", stone, take = false},
{coord = vector3(-585.16, 2120.48, 129.28), prop = "custom_prop_metal",prop2 = "custom_prop_metal2",prop3 = "custom_prop_metal3",prop4 = "custom_prop_small_metal", stone, take = false},
{coord = vector3(-579.52, 2112.72, 130.8), prop = "custom_prop_metal",prop2 = "custom_prop_metal2",prop3 = "custom_prop_metal3",prop4 = "custom_prop_small_metal", stone, take = false},
{coord = vector3(-604.32, 2109.12, 126.32), prop = "custom_prop_metal",prop2 = "custom_prop_metal2",prop3 = "custom_prop_metal3",prop4 = "custom_prop_small_metal", stone, take = false},
},
['Unload'] = {
{coord = vector3(2742.44, 2788.84, 34.4)},
{coord = vector3(290.84, 2861.44, 43.64)},
{coord = vector3(195.12, 2743.92, 43.44)},
},
['ReturnVehicle'] = vector3(2715.76, 2770.56, 36.28),
},
{
ItemAmount = 5,
HitNumber = 10,
GetEXP = 20,
['Stones'] = {
{coord = vector3(-595.08, 2113.96, 127.36), prop = "custom_prop_metal",prop2 = "custom_prop_metal2",prop3 = "custom_prop_metal3",prop4 = "custom_prop_small_metal", stone, take = false},
{coord = vector3(-593.08, 2116.72, 127.64), prop = "custom_prop_metal",prop2 = "custom_prop_metal2",prop3 = "custom_prop_metal3",prop4 = "custom_prop_small_metal", stone, take = false},
{coord = vector3(-591.12, 2124.4, 127.846), prop = "custom_prop_metal",prop2 = "custom_prop_metal2",prop3 = "custom_prop_metal3",prop4 = "custom_prop_small_metal", stone, take = false},
{coord = vector3(-585.16, 2120.48, 129.28), prop = "custom_prop_metal",prop2 = "custom_prop_metal2",prop3 = "custom_prop_metal3",prop4 = "custom_prop_small_metal", stone, take = false},
{coord = vector3(-579.52, 2112.72, 130.8), prop = "custom_prop_metal",prop2 = "custom_prop_metal2",prop3 = "custom_prop_metal3",prop4 = "custom_prop_small_metal", stone, take = false},
{coord = vector3(-604.32, 2109.12, 126.32), prop = "custom_prop_metal",prop2 = "custom_prop_metal2",prop3 = "custom_prop_metal3",prop4 = "custom_prop_small_metal", stone, take = false},
},
['Unload'] = {
{coord = vector3(2742.44, 2788.84, 34.4)},
{coord = vector3(290.84, 2861.44, 43.64)},
{coord = vector3(195.12, 2743.92, 43.44)},
},
['ReturnVehicle'] = vector3(2715.76, 2770.56, 36.28),
},
},
['GOLD'] = {
RequiredLevel = 8,
VehicleSpawn = {coord = vector4(2729.92, 2778.16, 35.88,132.96), VehicleModel = "tiptruck2"},
UI_Desc = "<p>3You must go to crush stones, you will need to have a pick. Its value is lower than that of other minerals but if you work hard you can go and chop other minerals.</p> <p>First go to the location with the truck.</p> <p> Chop the stones and put them in the truck.</p> <p>Deliver the cargo once everything is inside the truck.</p> <p>Finally returns the truck.</p>",
SellPrice = 100,
ItemName = "gold",
{
ItemAmount = 5,
HitNumber = 12,
GetEXP = 30,
['Stones'] = {
{coord = vector3(2218.8, 3685.08, 35.2), prop = "custom_prop_gold",prop2 = "custom_prop_gold2",prop3 = "custom_prop_gold3",prop4 = "custom_prop_small_gold", stone, take = false},
{coord = vector3(2222.64, 3690.72, 36.0), prop = "custom_prop_gold",prop2 = "custom_prop_gold2",prop3 = "custom_prop_gold3",prop4 = "custom_prop_small_gold", stone, take = false},
{coord = vector3(2210.16, 3693.08, 35.88), prop = "custom_prop_gold",prop2 = "custom_prop_gold2",prop3 = "custom_prop_gold3",prop4 = "custom_prop_small_gold", stone, take = false},
{coord = vector3(2203.32, 3681.6, 35.88), prop = "custom_prop_gold",prop2 = "custom_prop_gold2",prop3 = "custom_prop_gold3",prop4 = "custom_prop_small_gold", stone, take = false},
{coord = vector3(2209.04, 3667.24, 37.92), prop = "custom_prop_gold",prop2 = "custom_prop_gold2",prop3 = "custom_prop_gold3",prop4 = "custom_prop_small_gold", stone, take = false},
{coord = vector3(2197.64, 3658.2, 37.76), prop = "custom_prop_gold",prop2 = "custom_prop_gold2",prop3 = "custom_prop_gold3",prop4 = "custom_prop_small_gold", stone, take = false},
},
['Unload'] = {
{coord = vector3(2742.44, 2788.84, 34.4)},
{coord = vector3(290.84, 2861.44, 43.64)},
{coord = vector3(195.12, 2743.92, 43.44)},
},
['ReturnVehicle'] = vector3(2715.76, 2770.56, 36.28),
},
{
ItemAmount = 5,
HitNumber = 12,
GetEXP = 30,
['Stones'] = {
{coord = vector3(2218.8, 3685.08, 35.2), prop = "custom_prop_gold",prop2 = "custom_prop_gold2",prop3 = "custom_prop_gold3",prop4 = "custom_prop_small_gold", stone, take = false},
{coord = vector3(2222.64, 3690.72, 36.0), prop = "custom_prop_gold",prop2 = "custom_prop_gold2",prop3 = "custom_prop_gold3",prop4 = "custom_prop_small_gold", stone, take = false},
{coord = vector3(2210.16, 3693.08, 35.88), prop = "custom_prop_gold",prop2 = "custom_prop_gold2",prop3 = "custom_prop_gold3",prop4 = "custom_prop_small_gold", stone, take = false},
{coord = vector3(2203.32, 3681.6, 35.88), prop = "custom_prop_gold",prop2 = "custom_prop_gold2",prop3 = "custom_prop_gold3",prop4 = "custom_prop_small_gold", stone, take = false},
{coord = vector3(2209.04, 3667.24, 37.92), prop = "custom_prop_gold",prop2 = "custom_prop_gold2",prop3 = "custom_prop_gold3",prop4 = "custom_prop_small_gold", stone, take = false},
{coord = vector3(2197.64, 3658.2, 37.76), prop = "custom_prop_gold",prop2 = "custom_prop_gold2",prop3 = "custom_prop_gold3",prop4 = "custom_prop_small_gold", stone, take = false},
},
['Unload'] = {
{coord = vector3(2742.44, 2788.84, 34.4)},
{coord = vector3(290.84, 2861.44, 43.64)},
{coord = vector3(195.12, 2743.92, 43.44)},
},
['ReturnVehicle'] = vector3(2715.76, 2770.56, 36.28),
},
{
ItemAmount = 5,
HitNumber = 12,
GetEXP = 30,
['Stones'] = {
{coord = vector3(2218.8, 3685.08, 35.2), prop = "custom_prop_gold",prop2 = "custom_prop_gold2",prop3 = "custom_prop_gold3",prop4 = "custom_prop_small_gold", stone, take = false},
{coord = vector3(2222.64, 3690.72, 36.0), prop = "custom_prop_gold",prop2 = "custom_prop_gold2",prop3 = "custom_prop_gold3",prop4 = "custom_prop_small_gold", stone, take = false},
{coord = vector3(2210.16, 3693.08, 35.88), prop = "custom_prop_gold",prop2 = "custom_prop_gold2",prop3 = "custom_prop_gold3",prop4 = "custom_prop_small_gold", stone, take = false},
{coord = vector3(2203.32, 3681.6, 35.88), prop = "custom_prop_gold",prop2 = "custom_prop_gold2",prop3 = "custom_prop_gold3",prop4 = "custom_prop_small_gold", stone, take = false},
{coord = vector3(2209.04, 3667.24, 37.92), prop = "custom_prop_gold",prop2 = "custom_prop_gold2",prop3 = "custom_prop_gold3",prop4 = "custom_prop_small_gold", stone, take = false},
{coord = vector3(2197.64, 3658.2, 37.76), prop = "custom_prop_gold",prop2 = "custom_prop_gold2",prop3 = "custom_prop_gold3",prop4 = "custom_prop_small_gold", stone, take = false},
},
['Unload'] = {
{coord = vector3(2742.44, 2788.84, 34.4)},
{coord = vector3(290.84, 2861.44, 43.64)},
{coord = vector3(195.12, 2743.92, 43.44)},
},
['ReturnVehicle'] = vector3(2715.76, 2770.56, 36.28),
},
},
}GiveItem = function(xPlayer,itemname,amount)
if Configuration.FrameWork == 'esx' then
xPlayer.addInventoryItem(itemname,amount)
else
xPlayer.Functions.AddItem(itemname,amount)
end
end
Sell = function(xPlayer,name,cant,amount)
if Configuration.FrameWork == 'esx' then
local item = xPlayer.getInventoryItem(name).count
xPlayer.addMoney((cant*item))
else
local item = xPlayer.Functions.GetItemByName(name)
xPlayer.Functions.AddMoney('cash',(cant*item.amount))
TriggerClientEvent('QBCore:Notify', xPlayer.PlayerData.source, 'Has vendido x'..item.amount.." de "..item.label.." por "..(cant*item.amount).."$")
end
end
Remove = function(xPlayer,name,cant,amount)
if Configuration.FrameWork == 'esx' then
local item = xPlayer.getInventoryItem(name).count
xPlayer.removeInventoryItem(name,item)
else
local item = xPlayer.Functions.GetItemByName(name)
if not item then return end
xPlayer.Functions.RemoveItem(name, item.amount)
end
end
KeyVehicle = function(plate, vehicle)
--ADD EXPORT
end
FuelVehicle = function(plate, vehicle)
--ADD EXPORT
end
Notify = function(type, text, time, file)
if file == "client" then
-- time = 10000
-- if type == 'success' then
-- exports["Venice-Notification"]:Notify(text, time, "check", options)
-- elseif type == 'error' then
-- exports["Venice-Notification"]:Notify(text, time, "error", options)
-- elseif type == 'info' then
-- exports["Venice-Notification"]:Notify(text, time, "info", options)
-- end
if Configuration.FrameWork == 'esx' then
ESX.ShowNotification(text)
else
QBCore.Functions.Notify(text)
end
else
-- time = 10000
-- if type == 'success' then
-- TriggerClientEvent('codem-notification', source, text, time, 'check', options)
-- elseif type == 'error' then
-- TriggerClientEvent('codem-notification', source, text, time, 'error', options)
-- elseif type == 'info' then
-- TriggerClientEvent('codem-notification', source, text, time, 'info', options)
-- end
if Configuration.FrameWork == 'esx' then
TriggerClientEvent('esx:showNotification', source, text)
else
TriggerClientEvent('QBCore:Notify', source, text)
end
end
end
Text = function(text,coords)
local player = PlayerPedId()
if #(player - vector3(coords.x,coords.y,coords.z)) > 1.5 then
text3D(coords.x,coords.y,coords.z + 1.05,text, 0, 0.1, 0.1,100)
end
end
text3D = function(x, y, z, text)
SetTextScale(0.35, 0.35)
SetTextFont(4)
SetTextProportional(1)
SetTextColour(255, 255, 255, 215)
SetTextEntry("STRING")
SetTextCentre(true)
AddTextComponentString(text)
SetDrawOrigin(x,y,z, 0)
DrawText(0.0, 0.0)
ClearDrawOrigin()
end
JobBlip = function(coord)
blip = AddBlipForCoord(coord)
SetBlipSprite(blip, 47)
SetBlipColour(blip, 26)
SetBlipScale(blip, 0.7)
SetBlipAsShortRange(blip, true)
BeginTextCommandSetBlipName("STRING")
AddTextComponentSubstringPlayerName("Miner Job")
EndTextCommandSetBlipName(blip)
end
StonesBlip = function(blip)
for i, v in ipairs(blip) do
v.stone = AddBlipForCoord(v.coord)
SetBlipSprite(v.stone, 306)
SetBlipColour(v.stone, 0)
SetBlipScale(v.stone, 0.7)
SetBlipAsShortRange(v.stone, true)
BeginTextCommandSetBlipName("STRING")
AddTextComponentSubstringPlayerName("~b~[Miner]~h~ Stone")
EndTextCommandSetBlipName(v.stone)
SetBlipRoute(v.stone, true)
SetBlipRouteColour(v.stone,26)
end
end
ProcessBlip = function(coord)
ProcessBlip = AddBlipForCoord(coord.coord)
SetBlipSprite (ProcessBlip, 365)
SetBlipDisplay(ProcessBlip, 4)
SetBlipScale (ProcessBlip, 1.0)
SetBlipColour (ProcessBlip, 0)
SetBlipAsShortRange(ProcessBlip, true)
BeginTextCommandSetBlipName("STRING")
AddTextComponentSubstringPlayerName('~b~[Miner]~h~ Process')
EndTextCommandSetBlipName(ProcessBlip)
SetBlipRoute(ProcessBlip, true)
SetBlipRouteColour(ProcessBlip,26)
end
ReturnBlip = function(coord)
ReturnBlip = AddBlipForCoord(coord)
SetBlipSprite (ReturnBlip, 478)
SetBlipDisplay(ReturnBlip, 4)
SetBlipScale (ReturnBlip, 1.0)
SetBlipColour (ReturnBlip, 0)
SetBlipAsShortRange(ReturnBlip, true)
BeginTextCommandSetBlipName("STRING")
AddTextComponentSubstringPlayerName('~b~[Miner]~h~ Return Vehicle')
EndTextCommandSetBlipName(ReturnBlip)
SetBlipRoute(ReturnBlip, true)
SetBlipRouteColour(ReturnBlip,26)
end
GetName = function(xPlayer)
if Configuration.FrameWork == 'esx' then
local infoname = SqlFunc(Configuration.Mysql,'fetchAll','SELECT * FROM users WHERE identifier = @identifier',{['@identifier'] = xPlayer.identifier})
return (infoname[1].firstname.. " " ..infoname[1].lastname)
else
local infoname = SqlFunc(Configuration.Mysql,'fetchAll','SELECT * FROM users WHERE identifier = @identifier',{['@identifier'] = xPlayer.identifier})
return (infoname[1].firstname.. " " ..infoname[1].lastname)
end
endIf you want to edit the aesthetics or design. You have the HTML open so you can modify the style and everything as you want.
Last updated