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-Miner
You 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),
},
},
}
This file is for you to add all the integrations you require. For example the exports of the vehicle key system you use, the functions of your server...
You usually have to check the exports or functions in the documentation of the scripts you want to integrate with Buty-Miner.
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
end
If 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