154 lines
5.3 KiB
Lua
154 lines
5.3 KiB
Lua
|
|
local activePresses = {}
|
|
|
|
RegisterServerEvent('md-drugs:server:stealisosafrole', function(num)
|
|
local src = source
|
|
if not checkDistance(src, Config.XTC.Locations.isosafrole[num].loc, 3.0,'md-drugs:server:stealisosafrole') then
|
|
return
|
|
end
|
|
if timeOut(src, 'md-drugs:server:stealisosafrole') then return end
|
|
Bridge.Inventory.AddItem(src, "isosafrole", 1)
|
|
end)
|
|
|
|
RegisterServerEvent('md-drugs:server:stealmdp2p', function(num)
|
|
local src = source
|
|
if not checkDistance(src, Config.XTC.Locations.mdp2p[num].loc, 3.0,'md-drugs:server:stealmdp2p') then
|
|
return
|
|
end
|
|
if timeOut(src, 'md-drugs:server:stealmdp2p') then return end
|
|
Bridge.Inventory.AddItem(src, "mdp2p", 1)
|
|
end)
|
|
|
|
local presses = {
|
|
{item = 'singlepress', data = 'singlestack', recipes = Config.XTC.Recipes.singlestack},
|
|
{item = 'dualpress', data = 'dualstack', recipes = Config.XTC.Recipes.dualstack},
|
|
{item = 'triplepress', data = 'triplestack', recipes = Config.XTC.Recipes.triplestack},
|
|
{item = 'quadpress', data = 'quadstack', recipes = Config.XTC.Recipes.quadstack},
|
|
}
|
|
|
|
for k, v in pairs (presses) do
|
|
Bridge.Framework.RegisterUsableItem(v.item, function(source, item)
|
|
local src = source
|
|
local location = Bridge.Callback.Trigger('md-drugs:client:setpress', src, v)
|
|
if location then
|
|
if Bridge.Inventory.RemoveItem(src, v.item, 1) then
|
|
activePresses[src] = {
|
|
press = v.data,
|
|
get = v.item,
|
|
owner = Bridge.Framework.GetPlayerName(src),
|
|
ownerid = Bridge.Framework.GetPlayerIdentifier(src),
|
|
src = src,
|
|
loc = location
|
|
}
|
|
end
|
|
end
|
|
end)
|
|
end
|
|
|
|
RegisterServerEvent('md-drugs:server:getpressback', function()
|
|
local src = source
|
|
if not activePresses[src] then return end
|
|
local press = activePresses[src]
|
|
if not checkDistance(src, press.loc, 2.0,'md-drugs:server:getpressback' ) then
|
|
return
|
|
end
|
|
Bridge.Inventory.AddItem(src, press.get, 1)
|
|
activePresses[src] = nil
|
|
end)
|
|
|
|
RegisterServerEvent('md-drugs:server:makextc', function(data)
|
|
local src = source
|
|
if not activePresses[src] then
|
|
Bridge.Prints.Warn(Bridge.Language.Locale('xtc.noActivePress', Bridge.Framework.GetPlayerIdentifier(src)))
|
|
return
|
|
end
|
|
if timeOut(src, 'md-drugs:server:makextc') then return end
|
|
if not checkDistance(src, activePresses[src].loc, 2.0, 'md-drugs:server:makextc') then
|
|
return
|
|
end
|
|
if not craft(src, Config.XTC.Recipes[activePresses[src].press][data]) then
|
|
return
|
|
end
|
|
end)
|
|
|
|
RegisterServerEvent('md-drugs:server:buypress', function(loc, item)
|
|
local src = source
|
|
if not checkDistance(src, Config.XTC.Locations.xtcpress[loc].loc, 2.0, 'md-drugs:server:buypress') then
|
|
return
|
|
end
|
|
if timeOut(src, 'md-drugs:server:buypress') then return end
|
|
if Bridge.Framework.RemoveAccountBalance(src,"cash", Config.XTC.Recipes.presses['singlepress'].cash) then
|
|
Bridge.Inventory.AddItem(src, "singlepress", 1)
|
|
else
|
|
Bridge.Notify.SendNotify(src, Bridge.Language.Locale('Catches.notEnoughMoney'), "error")
|
|
end
|
|
end)
|
|
|
|
RegisterServerEvent('md-drugs:server:upgradepress', function(data, item)
|
|
local src = source
|
|
if timeOut(src, 'md-drugs:server:upgradepress') then return end
|
|
if not checkDistance(src, Config.XTC.Locations.xtcpress[data].loc, 2.0, 'md-drugs:server:buypress') then
|
|
return
|
|
end
|
|
if not craft(src, Config.XTC.Recipes.presses[item]) then
|
|
return
|
|
end
|
|
end)
|
|
|
|
------------- making powder
|
|
RegisterServerEvent('md-drugs:server:makingrawxtc', function(num)
|
|
local src = source
|
|
if not checkDistance(src, Config.XTC.Locations.rawxtcloc[num].loc, 3.0, 'md-drugs:server:makingrawxtc') then
|
|
Bridge.Notify.SendNotify(src, Bridge.Language.Locale('Checks.notIn'), "error")
|
|
return
|
|
end
|
|
if timeOut(src, 'md-drugs:server:makingrawxtc') then return end
|
|
if not craft(src, Config.XTC.Recipes.raw.raw_xtc) then
|
|
return
|
|
end
|
|
end)
|
|
|
|
local function getColor(color)
|
|
local colors = {
|
|
white = {'white_playboys', 'white_aliens', 'white_pl', 'white_trolls', 'white_cats'},
|
|
red = {'red_playboys', 'red_aliens', 'red_pl', 'red_trolls', 'red_cats'},
|
|
orange = {'orange_playboys', 'orange_aliens', 'orange_pl', 'orange_trolls', 'orange_cats'},
|
|
blue = {'blue_playboys', 'blue_aliens', 'blue_pl', 'blue_trolls', 'blue_cats'}
|
|
}
|
|
if colors[color] then
|
|
return colors[color][math.random(#colors[color])]
|
|
end
|
|
return nil
|
|
end
|
|
|
|
RegisterServerEvent('md-drugs:server:stamp', function(num, color)
|
|
local src = source
|
|
if not checkDistance(src, Config.XTC.Locations.stamp[num].loc, 3.0, 'md-drugs:server:stamp') then return end
|
|
if timeOut(src, 'md-drugs:server:stamp') then return end
|
|
local item = getColor(color)
|
|
local colors = {
|
|
white = 'white_xtc',
|
|
red = 'red_xtc',
|
|
orange = 'orange_xtc',
|
|
blue = 'blue_xtc'
|
|
}
|
|
if Bridge.Inventory.RemoveItem(src, colors[color], 1) then
|
|
Bridge.Inventory.AddItem(src, item, 1)
|
|
elseif Bridge.Inventory.RemoveItem(src, colors[color].."2", 1) then
|
|
Bridge.Inventory.AddItem(src, item..'2', 1)
|
|
elseif Bridge.Inventory.RemoveItem(src, colors[color].."3", 1) then
|
|
Bridge.Inventory.AddItem(src, item..'3', 1)
|
|
elseif Bridge.Inventory.RemoveItem(src, colors[color].."4", 1) then
|
|
Bridge.Inventory.AddItem(src, item..'4', 1)
|
|
else
|
|
Bridge.Notify.SendNotify(src, Bridge.Language.Locale('xtc.noPills'), 'error')
|
|
end
|
|
end)
|
|
|
|
AddEventHandler('playerDropped', function()
|
|
local src = source
|
|
if activePresses[src] then
|
|
Bridge.Inventory.AddItem(src, activePresses[src].get, 1)
|
|
activePresses[src] = nil
|
|
end
|
|
end) |