590 lines
		
	
	
		
			No EOL
		
	
	
		
			16 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			590 lines
		
	
	
		
			No EOL
		
	
	
		
			16 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| QBCore = exports[Config.qbPrefix.."-core"]:GetCoreObject()
 | |
| 
 | |
| Webhook = ''
 | |
| 
 | |
| function getMoney(type, xPlayer)
 | |
| 	local moneyCount = 0
 | |
| 	if type == "cash" then
 | |
| 		moneyCount = xPlayer.PlayerData.money.cash
 | |
| 	else
 | |
| 		moneyCount = xPlayer.PlayerData.money.bank
 | |
| 	end
 | |
| 	
 | |
| 	return moneyCount
 | |
| end
 | |
| 
 | |
| function addMoney(type, value, xPlayer)
 | |
| 	xPlayer.Functions.AddMoney(type, value)
 | |
| end
 | |
| 
 | |
| function removeMoney(type, value, xPlayer)
 | |
| 	xPlayer.Functions.RemoveMoney(type, value)
 | |
| end
 | |
| 
 | |
| function addItem(xPlayer, item, amount, data)
 | |
| 	xPlayer.Functions.AddItem(item, tonumber(amount))
 | |
| end
 | |
| 
 | |
| function removeItem(xPlayer, item, amount)
 | |
| 	xPlayer.Functions.RemoveItem(item, tonumber(amount))
 | |
| end
 | |
| 
 | |
| function canCarryIt(item, amount, xPlayer)
 | |
| 	if Config.UseOx_inventory then
 | |
| 		return exports.ox_inventory:CanCarryItem(xPlayer.PlayerData.source, item, amount)
 | |
| 	end
 | |
| 	
 | |
| 	local totalWeight = QBCore.Player.GetTotalWeight(xPlayer.PlayerData.items)
 | |
| 	local itemInfo = QBCore.Shared.Items[item:lower()]
 | |
| 	if not itemInfo then
 | |
| 		TriggerClientEvent('QBCore:Notify', xPlayer.PlayerData.source, 'This item doesn\'t exits', 'error')
 | |
| 		return
 | |
| 	end
 | |
| 	amount = tonumber(amount)
 | |
| 	if (totalWeight + (itemInfo['weight'] * amount)) <= 120000 then
 | |
| 		return true
 | |
| 	else
 | |
| 		return false
 | |
| 	end
 | |
| end
 | |
| 
 | |
| function hasPermission(source)
 | |
| 	local staff = false
 | |
| 	for k,v in ipairs(Config.AdminGroups) do
 | |
| 		if QBCore.Functions.HasPermission(source, v) then
 | |
| 			staff = true
 | |
| 			break
 | |
| 		end
 | |
| 	end
 | |
| 
 | |
| 	return staff
 | |
| end
 | |
| 
 | |
| function MySQLexecute(query, values, func)
 | |
| 	return MySQL.query(query, values, func)
 | |
| end
 | |
| 
 | |
| function MySQLfetchAll(query, values, func)
 | |
| 	return MySQL.query(query, values, func)
 | |
| end
 | |
| 
 | |
| function giveXP(xPlayer, xp, workbench)
 | |
| 	if Config.SameLevelForAllTables then
 | |
| 		MySQLexecute('UPDATE players SET '..Config.xpColumnsName..' = xp+@xp WHERE citizenid = @identifier', {
 | |
| 			['@identifier'] = xPlayer.PlayerData.citizenid,
 | |
| 			['@xp'] = Config.DoubleXP and xp*2 or xp,
 | |
| 		}, function (result)
 | |
| 			TriggerClientEvent(Config.EventPrefix..':updateXP', xPlayer.PlayerData.source)
 | |
| 		end)
 | |
| 	else
 | |
| 		MySQLexecute('UPDATE players SET '..Config.xpColumnsName..' = JSON_SET(xp, @table, JSON_EXTRACT(xp, @table) + @xp) WHERE citizenid = @identifier', {
 | |
| 			['@identifier'] = xPlayer.PlayerData.citizenid,
 | |
| 			['@xp'] = Config.DoubleXP and xp*2 or xp,
 | |
| 			['@table'] = "$."..workbench,
 | |
| 		}, function (result)
 | |
| 			TriggerClientEvent(Config.EventPrefix..':updateXP', xPlayer.PlayerData.source)
 | |
| 		end)
 | |
| 	end
 | |
| end
 | |
| 
 | |
| QBCore.Functions.CreateCallback(Config.EventPrefix..":inv2", function(source, cb, item, isMoney)
 | |
| 	local xPlayer = QBCore.Functions.GetPlayer(source)
 | |
| 	local itemS = {}
 | |
| 	if isMoney == "false" then
 | |
| 		isMoney = false
 | |
| 	elseif isMoney == "true" then
 | |
| 		isMoney = true
 | |
| 	end
 | |
| 
 | |
| 	if isMoney then
 | |
| 		local playerMoney = getMoney(item, xPlayer)
 | |
| 		itemS.name = item
 | |
| 		itemS.amount = playerMoney
 | |
| 	else
 | |
| 		itemS = xPlayer.Functions.GetItemByName(item)
 | |
| 		if itemS == nil then
 | |
| 			itemS = {
 | |
| 				name = item,
 | |
| 				amount = 0
 | |
| 			}
 | |
| 		end
 | |
| 		if itemS.count ~= nil then
 | |
| 			itemS.amount = itemS.count
 | |
| 		end
 | |
| 	end
 | |
| 
 | |
| 	cb(itemS)
 | |
| end)
 | |
| 
 | |
| QBCore.Functions.CreateCallback(Config.EventPrefix..":maxCraft", function(source, cb, recipe, maxCraftAmount, isDisassemble, itemC, itmNeeded)
 | |
| 	local _source = source
 | |
| 	local xPlayer = QBCore.Functions.GetPlayer(_source)
 | |
| 	local maxCraft = maxCraftAmount
 | |
| 	local itemAmt = 0 
 | |
| 
 | |
| 	if not isDisassemble then
 | |
| 		for k,v in ipairs(recipe) do
 | |
| 			local item = {}
 | |
| 			local itemCount = 0
 | |
| 
 | |
| 			if v[4] then
 | |
| 				itemCount = getMoney(v[1], xPlayer)
 | |
| 			else
 | |
| 				item = xPlayer.Functions.GetItemByName(v[1])
 | |
| 				if item == nil then
 | |
| 					item = {
 | |
| 						name = v[1],
 | |
| 						amount = 0
 | |
| 					}
 | |
| 				end
 | |
| 				if item.count ~= nil then
 | |
| 					item.amount = item.count
 | |
| 				end
 | |
| 				itemCount = item.amount
 | |
| 			end
 | |
| 
 | |
| 			if itemCount > 0 then
 | |
| 				local possibleToCraft = itemCount/tonumber(v[2])
 | |
| 				if possibleToCraft > 0 then
 | |
| 					if maxCraft > possibleToCraft then
 | |
| 						maxCraft = possibleToCraft
 | |
| 					end
 | |
| 				else
 | |
| 					maxCraft = 0
 | |
| 					break
 | |
| 				end
 | |
| 			else
 | |
| 				maxCraft = 0
 | |
| 				break
 | |
| 			end
 | |
| 		end
 | |
| 	else
 | |
| 		local item = xPlayer.Functions.GetItemByName(itemC)
 | |
| 		if item == nil then
 | |
| 			item = {
 | |
| 				name = itemC,
 | |
| 				amount = 0
 | |
| 			}
 | |
| 		end
 | |
| 		if item.count ~= nil then
 | |
| 			item.amount = item.count
 | |
| 		end
 | |
| 		itemAmt = item.amount
 | |
| 
 | |
| 		if itemAmt > 0 then
 | |
| 			local possibleToCraft = itemAmt/tonumber(itmNeeded)
 | |
| 			if possibleToCraft > 0 then
 | |
| 				if maxCraft > possibleToCraft then
 | |
| 					maxCraft = possibleToCraft
 | |
| 				end
 | |
| 			else
 | |
| 				maxCraft = 0
 | |
| 			end
 | |
| 		else
 | |
| 			maxCraft = 0
 | |
| 		end
 | |
| 	end
 | |
| 	
 | |
| 	cb(math.floor(maxCraft), itemAmt)
 | |
| end)
 | |
| 
 | |
| local function normalizeRecipe(recipe)
 | |
|     local normalized = {}
 | |
|     for _, item in ipairs(recipe) do
 | |
|         local normalizedItem = { item[1], tonumber(item[2]), item[3] == "true" or item[3] == true, item[4] == "true" or item[4] == true }
 | |
|         table.insert(normalized, normalizedItem)
 | |
|     end
 | |
|     return normalized
 | |
| end
 | |
| 
 | |
| local function compareRecipes(recipe1, recipe2)
 | |
|     if #recipe1 ~= #recipe2 then
 | |
|         return false
 | |
|     end
 | |
|     for i, item1 in ipairs(recipe1) do
 | |
|         local item2 = recipe2[i]
 | |
|         if item1[1] ~= item2[1] and item1[2] <= item2[2] then
 | |
|             return false
 | |
|         end
 | |
|     end
 | |
|     return true
 | |
| end
 | |
| 
 | |
| function craftExistsInWorkbench(workbenchID, itemID, recipe)
 | |
|     for _, workbench in pairs(Config.Crafting) do
 | |
|         if workbench.tableID == workbenchID then
 | |
|             for _, craft in pairs(workbench.crafts) do
 | |
| 				if Config.Crafts[craft] == nil then
 | |
| 					print("Craft "..craft.." does not exist in Config.Crafts")
 | |
| 					return false
 | |
| 				end
 | |
|                 if Config.Crafts[craft].item == itemID then
 | |
|                     local normalizedCraftRecipe = normalizeRecipe(Config.Crafts[craft].recipe)
 | |
|                     local normalizedInputRecipe = normalizeRecipe(recipe)
 | |
|                     if compareRecipes(normalizedCraftRecipe, normalizedInputRecipe) then
 | |
|                         return true
 | |
|                     end
 | |
|                 end
 | |
|             end
 | |
|         end
 | |
|     end
 | |
|     return false
 | |
| end
 | |
| 
 | |
| QBCore.Functions.CreateCallback(Config.EventPrefix..":CanCraftItem", function(source, cb, itemID, recipe, itemName, amount, isItem, workbench, timeCraft, CraftQueues, xp, pc, isDis, itemData)
 | |
| 	local xPlayer = QBCore.Functions.GetPlayer(source)
 | |
| 	local canCraft = true
 | |
| 	if not craftExistsInWorkbench(workbench, itemID, recipe) then
 | |
|         canCraft = false
 | |
|     end
 | |
| 
 | |
| 	if not isDis then
 | |
| 		for k,v in pairs(recipe) do
 | |
| 			if v[4] == "false" then
 | |
| 				local item = xPlayer.Functions.GetItemByName(v[1])
 | |
| 				if item == nil then
 | |
| 					item = {
 | |
| 						name = v[1],
 | |
| 						amount = 0
 | |
| 					}
 | |
| 				end
 | |
| 				if item.count ~= nil then
 | |
| 					item.amount = item.count
 | |
| 				end
 | |
| 				if item.amount < v[2] then
 | |
| 					canCraft = false
 | |
| 				end
 | |
| 			else
 | |
| 				local playerMoney = getMoney(v[1], xPlayer)
 | |
| 				if playerMoney < v[2] then
 | |
| 					canCraft = false
 | |
| 				end
 | |
| 			end
 | |
| 		end
 | |
| 	else
 | |
| 		local item = xPlayer.Functions.GetItemByName(itemID)
 | |
| 		if item == nil then
 | |
| 			item = {
 | |
| 				name = itemID,
 | |
| 				amount = 0
 | |
| 			}
 | |
| 		end
 | |
| 		if item.count ~= nil then
 | |
| 			item.amount = item.count
 | |
| 		end
 | |
| 		if tonumber(item.amount) < tonumber(amount) then
 | |
| 			canCraft = false
 | |
| 		end
 | |
| 	end
 | |
| 
 | |
| 	if canCraft then
 | |
| 		if not isDis then
 | |
| 			for k,v in pairs(recipe) do
 | |
| 				if v[3] == "true" then
 | |
| 					if v[4] == "true" then
 | |
| 						removeMoney(v[1], v[2], xPlayer)
 | |
| 					else
 | |
| 						removeItem(xPlayer, v[1], v[2])
 | |
| 					end
 | |
| 				end
 | |
| 			end
 | |
| 		else
 | |
| 			removeItem(xPlayer, itemID, tonumber(amount))
 | |
| 		end
 | |
| 
 | |
| 		local queue = CraftQueues
 | |
| 		if queue ~= nil and queue[workbench] ~= nil then
 | |
| 			queue[workbench][#queue[workbench]+1] = {
 | |
| 				item = itemID,
 | |
| 				recipe = recipe,
 | |
| 				amount = amount,
 | |
| 				isItem = isItem,
 | |
| 				time = timeCraft,
 | |
| 				itemName = itemName[itemID],
 | |
| 				isDone = false,
 | |
| 				isPending = true,
 | |
| 				randomID = math.random(100000000, 999999999),
 | |
| 				xp = xp,
 | |
| 				sucPC = pc,
 | |
| 				suc = true,
 | |
| 				isDis = isDis,
 | |
| 				data = itemData
 | |
| 			}
 | |
| 			
 | |
| 			MySQLexecute('UPDATE players SET '..Config.craftQueryColumnName..' = @okokcrafts WHERE citizenid = @identifier', {
 | |
| 				['@identifier'] = xPlayer.PlayerData.citizenid,
 | |
| 				['@okokcrafts'] = json.encode(queue),
 | |
| 			}, function (result)
 | |
| 				TriggerClientEvent(Config.EventPrefix..':notification', xPlayer.PlayerData.source, _L('added_to_queue').title, interp(_L('added_to_queue').text, {s1 = itemName[itemID]}), _L('added_to_queue').time, _L('added_to_queue').type)
 | |
| 
 | |
| 				if Webhook ~= "" then
 | |
| 					data = {
 | |
| 						playerid = xPlayer.PlayerData.source,
 | |
| 						type = "start-craft",
 | |
| 						item = itemName[itemID],
 | |
| 						amount = amount,
 | |
| 					}
 | |
| 
 | |
| 					discordWebhook(data)
 | |
| 				end
 | |
| 
 | |
| 				cb(queue)
 | |
| 			end)
 | |
| 		else
 | |
| 			if queue == nil then
 | |
| 				queue = {}
 | |
| 			end
 | |
| 			queue[workbench] = {}
 | |
| 			queue[workbench] = {
 | |
| 				[1] = {
 | |
| 					item = itemID,
 | |
| 					recipe = recipe,
 | |
| 					amount = amount,
 | |
| 					isItem = isItem,
 | |
| 					time = timeCraft,
 | |
| 					itemName = itemName[itemID],
 | |
| 					isDone = false,
 | |
| 					isPending = true,
 | |
| 					randomID = math.random(100000000, 999999999),
 | |
| 					xp = xp,
 | |
| 					sucPC = pc,
 | |
| 					suc = true,
 | |
| 					isDis = isDis,
 | |
| 					data = itemData
 | |
| 				}
 | |
| 			}
 | |
| 			
 | |
| 			MySQLexecute('UPDATE players SET '..Config.craftQueryColumnName..' = @okokcrafts WHERE citizenid = @identifier', {
 | |
| 				['@identifier'] = xPlayer.PlayerData.citizenid,
 | |
| 				['@okokcrafts'] = json.encode(queue),
 | |
| 			}, function (result)
 | |
| 				TriggerClientEvent(Config.EventPrefix..':notification', xPlayer.PlayerData.source, _L('added_to_queue').title, interp(_L('added_to_queue').text, {s1 = itemName[itemID]}), _L('added_to_queue').time, _L('added_to_queue').type)
 | |
| 				
 | |
| 				if Webhook ~= "" then
 | |
| 					data = {
 | |
| 						playerid = xPlayer.PlayerData.source,
 | |
| 						type = "start-craft",
 | |
| 						item = itemName[itemID],
 | |
| 						amount = amount,
 | |
| 					}
 | |
| 					discordWebhook(data)
 | |
| 				end
 | |
| 
 | |
| 				cb(queue)
 | |
| 			end)
 | |
| 		end
 | |
| 	else
 | |
| 		TriggerClientEvent(Config.EventPrefix..':notification', xPlayer.PlayerData.source, _L('cant_craft').title, interp(_L('cant_craft').text, {s1 = itemName[itemID]}), _L('cant_craft').time, _L('cant_craft').type)
 | |
| 		cb(false)
 | |
| 	end
 | |
| end)
 | |
| 
 | |
| RegisterServerEvent(Config.EventPrefix..':claimAll')
 | |
| AddEventHandler(Config.EventPrefix..':claimAll', function(workbench, AllQueues)
 | |
| 	local xPlayer = QBCore.Functions.GetPlayer(source)
 | |
| 	local gotQueue = false
 | |
| 	local CraftsQueue = {}
 | |
| 	
 | |
| 	MySQLfetchAll('SELECT okokcrafts FROM players WHERE citizenid = @identifier', {
 | |
| 		['@identifier'] = xPlayer.PlayerData.citizenid,
 | |
| 	}, function (result)
 | |
| 		if result[1] ~= nil then
 | |
| 			local data = json.decode(result[1].okokcrafts)
 | |
| 			if data ~= nil then
 | |
| 				CraftsQueue = data
 | |
| 				gotQueue = true
 | |
| 			end
 | |
| 		end
 | |
| 	end)
 | |
| 	
 | |
| 	while not gotQueue do
 | |
| 		Citizen.Wait(100)
 | |
| 	end
 | |
| 
 | |
| 	local queue = CraftsQueue[workbench]
 | |
| 	local v = queue[1]
 | |
| 	
 | |
| 	if v ~= nil then
 | |
| 		if v.isDone then
 | |
| 			if v.suc then
 | |
| 				if not v.isDis then
 | |
| 					local canCarry = false
 | |
| 					if v.isItem then
 | |
| 						if canCarryIt(v.item, v.amount, xPlayer) then
 | |
| 							addItem(xPlayer, v.item, v.amount, v.data)
 | |
| 							canCarry = true
 | |
| 						end
 | |
| 					else
 | |
| 						if canCarryIt(v.item, v.amount, xPlayer) then
 | |
| 							addItem(xPlayer, v.item, v.amount)
 | |
| 							canCarry = true
 | |
| 						end
 | |
| 					end
 | |
| 
 | |
| 					if canCarry then
 | |
| 						if Webhook ~= "" then
 | |
| 							data = {
 | |
| 								playerid = xPlayer.PlayerData.source,
 | |
| 								type = "claim-craft",
 | |
| 								item = v.itemName,
 | |
| 								amount = v.amount,
 | |
| 							}
 | |
| 
 | |
| 							discordWebhook(data)
 | |
| 						end
 | |
| 
 | |
| 						if Config.UseXP then
 | |
| 							giveXP(xPlayer, v.xp, workbench)
 | |
| 						end
 | |
| 						TriggerClientEvent(Config.EventPrefix..':removeItemsFromQueue', xPlayer.PlayerData.source, 1, workbench)
 | |
| 					else
 | |
| 						TriggerClientEvent(Config.EventPrefix..':notification', xPlayer.PlayerData.source, _L('cant_carry').title, _L('cant_carry').text, _L('cant_carry').time, _L('cant_carry').type)
 | |
| 						TriggerClientEvent(Config.EventPrefix..':notification', xPlayer.PlayerData.source, _L('claimed_all_items').title, _L('claimed_all_items').text, _L('claimed_all_items').time, _L('claimed_all_items').type)
 | |
| 						TriggerClientEvent(Config.EventPrefix..':resetClaimAllButton', xPlayer.PlayerData.source)
 | |
| 					end
 | |
| 				else
 | |
| 					local canCarry = true
 | |
| 					for k2,v2 in ipairs(v.recipe) do
 | |
| 						if v2[4] == "false" or v2[4] == false then
 | |
| 							if not canCarryIt(v2[1], v2[2], xPlayer) then
 | |
| 								canCarry = false
 | |
| 							end
 | |
| 						end
 | |
| 					end
 | |
| 
 | |
| 					if canCarry then
 | |
| 						for k2,v2 in ipairs(v.recipe) do
 | |
| 							if v2[4] == "true" or v2[4] == true then
 | |
| 								addMoney(v2[1], v2[2], xPlayer)
 | |
| 							else
 | |
| 								addItem(xPlayer, v2[1], v2[2])
 | |
| 							end
 | |
| 						end
 | |
| 
 | |
| 						if Webhook ~= "" then
 | |
| 							data = {
 | |
| 								playerid = xPlayer.PlayerData.source,
 | |
| 								type = "claim-craft",
 | |
| 								item = v.itemName,
 | |
| 								amount = v.amount,
 | |
| 							}
 | |
| 
 | |
| 							discordWebhook(data)
 | |
| 						end
 | |
| 						
 | |
| 
 | |
| 						if Config.UseXP then
 | |
| 							giveXP(xPlayer, v.xp, workbench)
 | |
| 						end
 | |
| 						TriggerClientEvent(Config.EventPrefix..':removeItemsFromQueue', xPlayer.PlayerData.source, 1, workbench)
 | |
| 					else
 | |
| 						TriggerClientEvent(Config.EventPrefix..':notification', xPlayer.PlayerData.source, _L('cant_carry').title, _L('cant_carry').text, _L('cant_carry').time, _L('cant_carry').type)
 | |
| 						TriggerClientEvent(Config.EventPrefix..':notification', xPlayer.PlayerData.source, _L('claimed_all_items').title, _L('claimed_all_items').text, _L('claimed_all_items').time, _L('claimed_all_items').type)
 | |
| 						TriggerClientEvent(Config.EventPrefix..':resetClaimAllButton', xPlayer.PlayerData.source)
 | |
| 					end
 | |
| 				end
 | |
| 			else
 | |
| 				if Webhook ~= "" then
 | |
| 					data = {
 | |
| 						playerid = xPlayer.PlayerData.source,
 | |
| 						type = "failed-craft",
 | |
| 						item = v.itemName,
 | |
| 						amount = v.amount,
 | |
| 					}
 | |
| 
 | |
| 					discordWebhook(data)
 | |
| 				end
 | |
| 				if Config.GiveXPOnCraftFailed and Config.UseXP then
 | |
| 					if Config.UseXP then
 | |
| 						giveXP(xPlayer, v.xp, workbench)
 | |
| 					end
 | |
| 				end
 | |
| 				TriggerClientEvent(Config.EventPrefix..':removeItemsFromQueue', xPlayer.PlayerData.source, 1, workbench)
 | |
| 			end
 | |
| 		end
 | |
| 	end
 | |
| end)
 | |
| 
 | |
| -------------------------- IDENTIFIERS
 | |
| 
 | |
| function ExtractIdentifiers(id)
 | |
| 	local identifiers = {
 | |
| 		steam = "",
 | |
| 		ip = "",
 | |
| 		discord = "",
 | |
| 		license = "",
 | |
| 		xbl = "",
 | |
| 		live = ""
 | |
| 	}
 | |
| 
 | |
| 	for i = 0, GetNumPlayerIdentifiers(id) - 1 do
 | |
| 		local playerID = GetPlayerIdentifier(id, i)
 | |
| 
 | |
| 		if string.find(playerID, "steam") then
 | |
| 			identifiers.steam = playerID
 | |
| 		elseif string.find(playerID, "ip") then
 | |
| 			identifiers.ip = playerID
 | |
| 		elseif string.find(playerID, "discord") then
 | |
| 			identifiers.discord = playerID
 | |
| 		elseif string.find(playerID, "license") then
 | |
| 			identifiers.license = playerID
 | |
| 		elseif string.find(playerID, "xbl") then
 | |
| 			identifiers.xbl = playerID
 | |
| 		elseif string.find(playerID, "live") then
 | |
| 			identifiers.live = playerID
 | |
| 		end
 | |
| 	end
 | |
| 
 | |
| 	return identifiers
 | |
| end
 | |
| 
 | |
| -------------------------- WEBHOOK
 | |
| 
 | |
| function discordWebhook(data)
 | |
| 	local color = '65352'
 | |
| 	local category = 'default'
 | |
| 	local item = ''
 | |
| 	local amount = ''
 | |
| 	local identifierlist = ExtractIdentifiers(data.playerid)
 | |
| 	local identifier = identifierlist.license:gsub("license2:", "")
 | |
| 	local discord = "<@"..identifierlist.discord:gsub("discord:", "")..">"
 | |
| 
 | |
| 	if data.type == 'start-craft' then
 | |
| 		color = Config.StartCraftWebhookColor
 | |
| 		category = 'Started a craft'
 | |
| 		item = data.item
 | |
| 		amount = data.amount
 | |
| 	elseif data.type == 'cancel-craft' then
 | |
| 		color = Config.CancelWebhookColor
 | |
| 		category = 'Canceled a craft'
 | |
| 		item = data.item
 | |
| 		amount = data.amount
 | |
| 	elseif data.type == 'claim-craft' then
 | |
| 		color = Config.ClaimCraftWebhookColor
 | |
| 		category = 'Claimed'
 | |
| 		item = data.item
 | |
| 		amount = data.amount
 | |
| 	elseif data.type == 'failed-craft' then
 | |
| 		color = Config.FailedCraftWebhookColor
 | |
| 		category = 'Failed a craft'
 | |
| 		item = data.item
 | |
| 		amount = data.amount
 | |
| 	end
 | |
| 
 | |
| 	local information = {
 | |
| 		{
 | |
| 			["color"] = color,
 | |
| 			["author"] = {
 | |
| 				["icon_url"] = Config.IconURL,
 | |
| 				["name"] = Config.ServerName..' - Logs',
 | |
| 			},
 | |
| 			["title"] = 'CRAFTING',
 | |
| 			["description"] = '**Action:** '..category..'\n**Item:** '..item..'\n**Amount:** '..amount..'\n\n**ID:** '..data.playerid..'\n**Identifier:** '..identifier..'\n**Discord:** '..discord,
 | |
| 			["footer"] = {
 | |
| 				["text"] = os.date(Config.DateFormat),
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	PerformHttpRequest(Webhook, function(err, text, headers) end, 'POST', json.encode({username = Config.BotName, embeds = information}), {['Content-Type'] = 'application/json'})
 | |
| end | 
