mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
Upload
This commit is contained in:
272
gamemodes/darkrp/plugins/smuggler/cl_plugin.lua
Normal file
272
gamemodes/darkrp/plugins/smuggler/cl_plugin.lua
Normal file
@@ -0,0 +1,272 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
-- luacheck: globals SMUGGLER_TEXT
|
||||
-- luacheck: read globals SMUGGLER_BUY SMUGGLER_SELL SMUGGLER_BOTH SMUGGLER_WELCOME SMUGGLER_LEAVE SMUGGLER_NOTRADE SMUGGLER_PRICE
|
||||
-- luacheck: read globals SMUGGLER_STOCK SMUGGLER_MODE SMUGGLER_MAXSTOCK SMUGGLER_SELLANDBUY SMUGGLER_SELLONLY SMUGGLER_BUYONLY
|
||||
|
||||
local PLUGIN = PLUGIN
|
||||
|
||||
SMUGGLER_TEXT = {}
|
||||
SMUGGLER_TEXT[SMUGGLER_SELLANDBUY] = "smugglerBoth"
|
||||
SMUGGLER_TEXT[SMUGGLER_BUYONLY] = "smugglerBuy"
|
||||
SMUGGLER_TEXT[SMUGGLER_SELLONLY] = "smugglerSell"
|
||||
|
||||
net.Receive("ixSmugglerOpen", function()
|
||||
local entity = net.ReadEntity()
|
||||
|
||||
if (!IsValid(entity)) then
|
||||
return
|
||||
end
|
||||
|
||||
entity.money = net.ReadUInt(16)
|
||||
entity.maxStock = net.ReadUInt(16)
|
||||
entity.pickupLocation = net.ReadString()
|
||||
entity.items = net.ReadTable()
|
||||
entity.stashList = net.ReadTable()
|
||||
|
||||
ix.gui.smuggler = vgui.Create("ixSmuggler")
|
||||
ix.gui.smuggler:SetReadOnly(false)
|
||||
ix.gui.smuggler:Setup(entity)
|
||||
end)
|
||||
|
||||
net.Receive("ixSmugglerEditor", function()
|
||||
local entity = net.ReadEntity()
|
||||
|
||||
if (!IsValid(entity) or !CAMI.PlayerHasAccess(LocalPlayer(), "Helix - Manage Smugglers", nil)) then
|
||||
return
|
||||
end
|
||||
|
||||
entity.money = net.ReadUInt(16)
|
||||
entity.maxStock = net.ReadUInt(16)
|
||||
entity.items = net.ReadTable()
|
||||
entity.messages = net.ReadTable()
|
||||
|
||||
ix.gui.smuggler = vgui.Create("ixSmuggler")
|
||||
ix.gui.smuggler:SetReadOnly(true)
|
||||
ix.gui.smuggler:Setup(entity)
|
||||
ix.gui.smugglerEditor = vgui.Create("ixSmugglerEditor")
|
||||
end)
|
||||
|
||||
net.Receive("ixSmugglerEdit", function()
|
||||
local panel = ix.gui.smuggler
|
||||
|
||||
if (!IsValid(panel)) then
|
||||
return
|
||||
end
|
||||
|
||||
local entity = panel.entity
|
||||
|
||||
if (!IsValid(entity)) then
|
||||
return
|
||||
end
|
||||
|
||||
local key = net.ReadString()
|
||||
local data = net.ReadType()
|
||||
|
||||
if (key == "mode") then
|
||||
entity.items[data[1]] = entity.items[data[1]] or {}
|
||||
entity.items[data[1]][SMUGGLER_MODE] = data[2]
|
||||
|
||||
if (!data[2]) then
|
||||
panel:removeItem(data[1])
|
||||
elseif (data[2] == SMUGGLER_SELLANDBUY) then
|
||||
panel:addItem(data[1])
|
||||
else
|
||||
panel:addItem(data[1], data[2] == SMUGGLER_SELLONLY and "selling" or "buying")
|
||||
panel:removeItem(data[1], data[2] == SMUGGLER_SELLONLY and "buying" or "selling")
|
||||
end
|
||||
elseif (key == "stockMax") then
|
||||
entity.maxStock = data
|
||||
|
||||
for k in pairs(entity.items) do
|
||||
panel:addItem(k)
|
||||
end
|
||||
elseif (key == "stock") then
|
||||
local uniqueID = data[1]
|
||||
local value = data[2]
|
||||
|
||||
entity.items[uniqueID] = entity.items[uniqueID] or {}
|
||||
entity.items[uniqueID][SMUGGLER_STOCK] = value
|
||||
end
|
||||
end)
|
||||
|
||||
net.Receive("ixSmugglerEditFinish", function()
|
||||
local panel = ix.gui.smuggler
|
||||
local editor = ix.gui.smugglerEditor
|
||||
|
||||
if (!IsValid(panel) or !IsValid(editor)) then
|
||||
return
|
||||
end
|
||||
|
||||
local entity = panel.entity
|
||||
|
||||
if (!IsValid(entity)) then
|
||||
return
|
||||
end
|
||||
|
||||
local key = net.ReadString()
|
||||
local data = net.ReadType()
|
||||
|
||||
if (key == "name") then
|
||||
editor.name:SetText(data)
|
||||
elseif (key == "description") then
|
||||
editor.description:SetText(data)
|
||||
elseif (key == "mode") then
|
||||
if (data[2] == nil) then
|
||||
editor.lines[data[1]]:SetValue(3, L"none")
|
||||
else
|
||||
editor.lines[data[1]]:SetValue(3, L(SMUGGLER_TEXT[data[2]]))
|
||||
end
|
||||
elseif (key == "stock") then
|
||||
local current, max = entity:GetStock(data)
|
||||
|
||||
if (max == entity.maxStock) then
|
||||
editor.lines[data]:SetValue(4, current)
|
||||
else
|
||||
editor.lines[data]:SetValue(4, current.."/"..max)
|
||||
end
|
||||
elseif (key == "stockMax") then
|
||||
for k, v in pairs(editor.lines) do
|
||||
local current, max = entity:GetStock(k)
|
||||
if (max == entity.maxStock) then
|
||||
v:SetValue(5, current)
|
||||
else
|
||||
v:SetValue(5, current.."/"..max)
|
||||
end
|
||||
end
|
||||
elseif (key == "model") then
|
||||
editor.model:SetText(entity:GetModel())
|
||||
elseif (key == "stashList") then
|
||||
local lines = editor.stashList:GetLines()
|
||||
for k, v in pairs(lines) do
|
||||
if (k != 1) then
|
||||
editor.stashList:RemoveLine(k)
|
||||
end
|
||||
end
|
||||
|
||||
for k, v in pairs(data) do
|
||||
editor.stashList:AddLine(v)
|
||||
end
|
||||
end
|
||||
|
||||
surface.PlaySound("buttons/button14.wav")
|
||||
end)
|
||||
|
||||
net.Receive("ixSmugglerMoney", function()
|
||||
local panel = ix.gui.smuggler
|
||||
|
||||
if (!IsValid(panel)) then
|
||||
return
|
||||
end
|
||||
|
||||
local entity = panel.entity
|
||||
|
||||
if (!IsValid(entity)) then
|
||||
return
|
||||
end
|
||||
|
||||
local value = net.ReadUInt(16)
|
||||
value = value != -1 and value or nil
|
||||
|
||||
entity.money = value
|
||||
|
||||
local editor = ix.gui.smugglerEditor
|
||||
|
||||
if (IsValid(editor)) then
|
||||
local useMoney = tonumber(value) != nil
|
||||
|
||||
editor.money:SetDisabled(!useMoney)
|
||||
editor.money:SetEnabled(useMoney)
|
||||
editor.money:SetText(useMoney and value or "∞")
|
||||
end
|
||||
end)
|
||||
|
||||
net.Receive("ixSmugglerStock", function()
|
||||
local panel = ix.gui.smuggler
|
||||
|
||||
if (!IsValid(panel)) then
|
||||
return
|
||||
end
|
||||
|
||||
local entity = panel.entity
|
||||
|
||||
if (!IsValid(entity)) then
|
||||
return
|
||||
end
|
||||
|
||||
local uniqueID = net.ReadString()
|
||||
local amount = net.ReadUInt(16)
|
||||
|
||||
entity.items[uniqueID] = entity.items[uniqueID] or {}
|
||||
entity.items[uniqueID][SMUGGLER_STOCK] = amount
|
||||
|
||||
local editor = ix.gui.smugglerEditor
|
||||
|
||||
if (IsValid(editor)) then
|
||||
local _, max = entity:GetStock(uniqueID)
|
||||
|
||||
if (max == entity.maxStock) then
|
||||
editor.lines[uniqueID]:SetValue(4, amount)
|
||||
else
|
||||
editor.lines[uniqueID]:SetValue(4, amount.."/"..max)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
net.Receive("ixSmugglerAddItem", function()
|
||||
local uniqueID = net.ReadString()
|
||||
|
||||
if (IsValid(ix.gui.smuggler)) then
|
||||
ix.gui.smuggler:addItem(uniqueID, "buying")
|
||||
end
|
||||
end)
|
||||
|
||||
netstream.Hook("ixSmugglingPickupItems", function(items)
|
||||
LocalPlayer().pickupItems = items
|
||||
|
||||
vgui.Create("PickupCache")
|
||||
end)
|
||||
|
||||
netstream.Hook("ixSmugglingCacheUIDs", function(cacheIDList)
|
||||
PLUGIN.cacheIDList = cacheIDList
|
||||
end)
|
||||
|
||||
netstream.Hook("ixSmugglerUpdateLocation", function(entity, location)
|
||||
entity.pickupLocation = location
|
||||
|
||||
if (IsValid(ix.gui.smuggler) and ix.gui.smuggler.entity == entity) then
|
||||
ix.gui.smuggler.smugglerSellDeliver:SetText(L("smugglerDeliverTo", entity.pickupLocation))
|
||||
end
|
||||
end)
|
||||
|
||||
netstream.Hook("ixShowStashWaypoints", function(waypoints, stashEntities)
|
||||
LocalPlayer().ixStashWaypoints = waypoints
|
||||
LocalPlayer().ixStashEntities = stashEntities
|
||||
end)
|
||||
|
||||
local function cacheESP(client, entity, x, y, factor)
|
||||
ix.util.DrawText("Pickup Cache - "..(PLUGIN.cacheIDList[entity:EntIndex()] and PLUGIN.cacheIDList[entity:EntIndex()].uniqueID or "no id set"), x, y - math.max(10, 32 * factor), color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, nil, factor)
|
||||
end
|
||||
ix.observer:RegisterESPType("ix_pickupcache", cacheESP, "cache", "Show Pickup Cache ESP")
|
||||
|
||||
local function smugglerESP(client, entity, x, y, factor)
|
||||
cam.Start3D()
|
||||
render.SuppressEngineLighting(true)
|
||||
render.SetColorModulation(1, 1, 1)
|
||||
render.SetBlend(factor)
|
||||
entity:DrawModel()
|
||||
render.MaterialOverride()
|
||||
render.SuppressEngineLighting(false)
|
||||
cam.End3D()
|
||||
|
||||
ix.util.DrawText("Smuggler - "..entity:GetDisplayName(), x, y - math.max(10, 32 * factor), color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, nil, factor)
|
||||
end
|
||||
ix.observer:RegisterESPType("ix_smuggler", smugglerESP, "smuggler")
|
||||
Reference in New Issue
Block a user