forked from Alivemonstor/al-treasurehunt
-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.lua
115 lines (103 loc) · 4.28 KB
/
server.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
local QBCore = exports['qb-core']:GetCoreObject()
QBCore.Functions.CreateUseableItem("metaldetector", function(src, item)
TriggerClientEvent("al-treasurehunt:detect", src)
end)
QBCore.Functions.CreateUseableItem("treasuremap", function(src, item)
TriggerClientEvent("al-treasurehunt:usemap", src )
end)
RegisterServerEvent('al-treasurehunt:AddItems')
AddEventHandler('al-treasurehunt:AddItems', function()
local src = source
local Player = QBCore.Functions.GetPlayer(src)
local Chance = math.random(1, 100)
local Tier = GetTier(Chance)
local Items = ItemPicker(Tier)
local Amount = GetAmount(Tier)
for k, Item in pairs(Items) do
Player.Functions.AddItem(Item, Amount)
TriggerClientEvent("inventory:client:ItemBox", src, QBCore.Shared.Items[Item], "add")
TriggerClientEvent('QBCore:Notify', src, "You found ".. QBCore.Shared.Items[Item].label .."!", "success")
end
TriggerClientEvent('al-treasurehunt:destroyzone', src)
end)
RegisterServerEvent("al-treasurehunt:removemap")
AddEventHandler("al-treasurehunt:removemap", function()
local src = source
local Player = QBCore.Functions.GetPlayer(src)
TriggerClientEvent('QBCore:Notify', src, "You read the map and marked the location on your GPS!", "success")
Player.Functions.RemoveItem("treasuremap", 1, false)
TriggerClientEvent("inventory:client:ItemBox", src, QBCore.Shared.Items['treasuremap'], "remove")
end)
RegisterServerEvent('al-treasurehunt:collectmap')
AddEventHandler('al-treasurehunt:collectmap', function()
local src = source
local Player = QBCore.Functions.GetPlayer(src)
if Player.Functions.GetItemByName('treasuremap') then
TriggerClientEvent('QBCore:Notify', src, "You already have a Treasure Map", "error")
else
Player.Functions.AddItem("treasuremap", 1, false)
TriggerClientEvent("inventory:client:ItemBox", src, QBCore.Shared.Items['treasuremap'], "add")
TriggerClientEvent('QBCore:Notify', src, "You were given a Treasure Map!", "success")
end
end)
function GetTier(Chance)
local Tier = nil
if Chance <= Config.LowChance then
Tier = 'Tier1'
elseif Chance <= Config.HighChance then
Tier = 'Tier2'
else
Tier = 'Tier3'
end
return Tier
end
function ItemPicker(Tier)
return Config.Treasureloot[Tier][math.random(1, #Config.Treasureloot[Tier])]
end
function GetAmount(Tier)
local Amount = nil
if Tier == 'Tier1' then
Amount = math.random(1, 10)
elseif Tier == 'Tier2' then
Amount = math.random(1, 3)
else
Amount = 1
end
return Amount
end
RegisterNetEvent('al-treasurehunt:SellEmerald')
AddEventHandler('al-treasurehunt:SellEmerald', function()
local src = source
local Player = QBCore.Functions.GetPlayer(src)
if Player.Functions.GetItemByName('emeraldore') then
Player.Functions.AddMoney('cash', Config.EmeraldOrePrice)
Player.Functions.RemoveItem("emeraldore", 1, false)
TriggerClientEvent("inventory:client:ItemBox", src, QBCore.Shared.Items['emeraldore'], "remove")
else
TriggerClientEvent('QBCore:Notify', src, "You dont have any emeralds!", "error")
end
end)
RegisterNetEvent('al-treasurehunt:SellDiamond')
AddEventHandler('al-treasurehunt:SellDiamond', function()
local src = source
local Player = QBCore.Functions.GetPlayer(src)
if Player.Functions.GetItemByName('diamondore') then
Player.Functions.AddMoney('cash', Config.DiamondOrePrice)
Player.Functions.RemoveItem("diamondore", 1, false)
TriggerClientEvent("inventory:client:ItemBox", src, QBCore.Shared.Items['diamondore'], "remove")
else
TriggerClientEvent('QBCore:Notify', src, "You dont have any diamonds!", "error")
end
end)
RegisterNetEvent('al-treasurehunt:SellGold')
AddEventHandler('al-treasurehunt:SellGold', function()
local src = source
local Player = QBCore.Functions.GetPlayer(src)
if Player.Functions.GetItemByName('goldore') then
Player.Functions.AddMoney('cash', Config.GoldOrePrice)
Player.Functions.RemoveItem("goldore", 1, false)
TriggerClientEvent("inventory:client:ItemBox", src, QBCore.Shared.Items['goldore'], "remove")
else
TriggerClientEvent('QBCore:Notify', src, "You dont have any gold!", "error")
end
end)