Fix server and client scripts on cyka
This commit is contained in:
@@ -1,181 +1,183 @@
|
||||
-- luacheck: globals MyModGlobal
|
||||
-- luacheck: read_globals Character SERVER Keys LuaUserData Hook Descriptors PlayerInput Timer
|
||||
-- luacheck: max line length 420
|
||||
if SERVER then return end
|
||||
-- Docs: https://evilfactory.github.io/LuaCsForBarotrauma/lua-docs/manual/common-questions/
|
||||
|
||||
---@class MyModGlobal
|
||||
---@field CONFIG {QUICKSTACK_KEYS: Keys, FABRICATOR_KEY: Keys, MAX_BUY: Keys, NESTED_CONTAINERS: boolean, DEBUG_MODE: boolean}
|
||||
---@field MOD_NAME string
|
||||
---@field MOD_VERSION string
|
||||
---@field DumpTable fun(table: table, depth?: number)
|
||||
---@field debugPrint fun(message: string)
|
||||
MyModGlobal = {
|
||||
CONFIG = {
|
||||
QUICKSTACK_KEYS = Keys.F,
|
||||
FABRICATOR_KEY = Keys.V,
|
||||
MAX_BUY = Keys.B,
|
||||
FIX = Keys.R,
|
||||
UNLOAD = Keys.E,
|
||||
RELOAD = Keys.R,
|
||||
STACK_TO_CURSOR = Keys.G,
|
||||
LOOT = Keys.L,
|
||||
SONAR = Keys.X,
|
||||
AOEPICKUP = Keys.Y,
|
||||
QICK_FABRICATOR = Keys.K,
|
||||
QICK_DECONSTRUCTOR = Keys.J,
|
||||
QICK_MEDICAL_FABRICATOR = Keys.M,
|
||||
NESTED_CONTAINERS = true,
|
||||
DEBUG_MODE = true,
|
||||
},
|
||||
MOD_NAME = "Cyka Quick",
|
||||
MOD_VERSION = "1.1.0",
|
||||
BAG_SLOT = 8,
|
||||
}
|
||||
if SERVER then
|
||||
require("Cyka.xpticker")
|
||||
else
|
||||
---@class MyModGlobal
|
||||
---@field CONFIG {QUICKSTACK_KEYS: Keys, FABRICATOR_KEY: Keys, MAX_BUY: Keys, NESTED_CONTAINERS: boolean, DEBUG_MODE: boolean}
|
||||
---@field MOD_NAME string
|
||||
---@field MOD_VERSION string
|
||||
---@field DumpTable fun(table: table, depth?: number)
|
||||
---@field debugPrint fun(message: string)
|
||||
MyModGlobal = {
|
||||
CONFIG = {
|
||||
QUICKSTACK_KEYS = Keys.F,
|
||||
FABRICATOR_KEY = Keys.V,
|
||||
MAX_BUY = Keys.B,
|
||||
FIX = Keys.R,
|
||||
UNLOAD = Keys.E,
|
||||
RELOAD = Keys.R,
|
||||
STACK_TO_CURSOR = Keys.G,
|
||||
LOOT = Keys.L,
|
||||
SONAR = Keys.X,
|
||||
AOEPICKUP = Keys.Y,
|
||||
QICK_FABRICATOR = Keys.K,
|
||||
QICK_DECONSTRUCTOR = Keys.J,
|
||||
QICK_MEDICAL_FABRICATOR = Keys.M,
|
||||
NESTED_CONTAINERS = true,
|
||||
DEBUG_MODE = true,
|
||||
},
|
||||
MOD_NAME = "Cyka Quick",
|
||||
MOD_VERSION = "1.1.0",
|
||||
BAG_SLOT = 8,
|
||||
}
|
||||
|
||||
---@param table table
|
||||
---@param depth number?
|
||||
MyModGlobal.DumpTable = function(table, depth)
|
||||
if depth == nil then
|
||||
depth = 0
|
||||
end
|
||||
if (depth > 200) then
|
||||
print("Error: Depth > 200 in dumpTable()")
|
||||
return
|
||||
end
|
||||
for k, v in pairs(table) do
|
||||
if (type(v) == "table") then
|
||||
print(string.rep(" ", depth) .. k .. ":")
|
||||
MyModGlobal.DumpTable(v, depth + 1)
|
||||
else
|
||||
print(string.rep(" ", depth) .. k .. ": ", v)
|
||||
---@param table table
|
||||
---@param depth number?
|
||||
MyModGlobal.DumpTable = function(table, depth)
|
||||
if depth == nil then
|
||||
depth = 0
|
||||
end
|
||||
if (depth > 200) then
|
||||
print("Error: Depth > 200 in dumpTable()")
|
||||
return
|
||||
end
|
||||
for k, v in pairs(table) do
|
||||
if (type(v) == "table") then
|
||||
print(string.rep(" ", depth) .. k .. ":")
|
||||
MyModGlobal.DumpTable(v, depth + 1)
|
||||
else
|
||||
print(string.rep(" ", depth) .. k .. ": ", v)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Debugging helper function
|
||||
MyModGlobal.debugPrint = function(message)
|
||||
if MyModGlobal.CONFIG.DEBUG_MODE then
|
||||
print("[" .. MyModGlobal.MOD_NAME .. "] " .. message)
|
||||
end
|
||||
end
|
||||
|
||||
local quickstack = require("Cyka.quickstack")
|
||||
local fabricatorstack = require("Cyka.fabricatorstack")
|
||||
local quickbuy = require("Cyka.quickbuy")
|
||||
local hotkeyrepair = require("Cyka.hotkeyrepair")
|
||||
local cursormacroer = require("Cyka.cursormacroer")
|
||||
local quickunload = require("Cyka.quickunload")
|
||||
local quickreload = require("Cyka.quickreload")
|
||||
local quickloot = require("Cyka.quickloot")
|
||||
local sonarpinger = require("Cyka.sonarpinger")
|
||||
local aoepickup = require("Cyka.aoepickup")
|
||||
local quickaccess = require("Cyka.quickaccess")
|
||||
require("Cyka.zoom")
|
||||
|
||||
-- TODO: Keybind fabricator / medical fabricator / deconstructor on the sub
|
||||
|
||||
print(MyModGlobal.MOD_NAME .. " v" .. MyModGlobal.MOD_VERSION .. " loaded!")
|
||||
|
||||
-- Register necessary types and make fields accessible
|
||||
LuaUserData.RegisterType("Barotrauma.Items.Components.ItemContainer+SlotRestrictions")
|
||||
LuaUserData.RegisterType(
|
||||
'System.Collections.Immutable.ImmutableArray`1[[Barotrauma.Items.Components.ItemContainer+SlotRestrictions, Barotrauma]]')
|
||||
LuaUserData.MakeFieldAccessible(Descriptors['Barotrauma.Items.Components.ItemContainer'], 'slotRestrictions')
|
||||
LuaUserData.MakeFieldAccessible(Descriptors['Barotrauma.ItemInventory'], 'slots')
|
||||
LuaUserData.MakeFieldAccessible(Descriptors['Barotrauma.ItemInventory'], 'slotsPerRow')
|
||||
LuaUserData.MakeFieldAccessible(Descriptors["Barotrauma.CharacterInventory"], "slots")
|
||||
LuaUserData.RegisterType("Barotrauma.Store")
|
||||
LuaUserData.RegisterType("Barotrauma.GUIComponent")
|
||||
LuaUserData.RegisterType("Barotrauma.PurchasedItem")
|
||||
LuaUserData.RegisterType("Barotrauma.ItemPrefab")
|
||||
LuaUserData.RegisterType("Barotrauma.Location+StoreInfo")
|
||||
LuaUserData.MakeMethodAccessible(Descriptors["Barotrauma.CargoManager"], "GetConfirmedSoldEntities")
|
||||
LuaUserData.RegisterType("Barotrauma.Items.Components.Repairable")
|
||||
LuaUserData.RegisterType("Barotrauma.VisualSlot")
|
||||
|
||||
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
if not PlayerInput.KeyHit(MyModGlobal.CONFIG.QUICKSTACK_KEYS) then return end
|
||||
quickstack.quickStackItems(instance)
|
||||
end, Hook.HookMethodType.After)
|
||||
|
||||
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
if not PlayerInput.KeyHit(MyModGlobal.CONFIG.STACK_TO_CURSOR) then return end
|
||||
if not PlayerInput.IsShiftDown() then
|
||||
quickstack.stackToCursor()
|
||||
else
|
||||
quickstack.stackAllToCursor()
|
||||
end
|
||||
end, Hook.HookMethodType.After)
|
||||
|
||||
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
if not PlayerInput.KeyHit(MyModGlobal.CONFIG.FABRICATOR_KEY) then return end
|
||||
fabricatorstack.tryStackFabricator(instance)
|
||||
end, Hook.HookMethodType.After)
|
||||
|
||||
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
if not PlayerInput.KeyHit(MyModGlobal.CONFIG.FIX) then return end
|
||||
hotkeyrepair.tryRepair()
|
||||
end, Hook.HookMethodType.After)
|
||||
|
||||
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
if not PlayerInput.KeyHit(MyModGlobal.CONFIG.MAX_BUY) then return end
|
||||
quickbuy.tryBuy()
|
||||
end, Hook.HookMethodType.After)
|
||||
|
||||
local throttle = 0.1
|
||||
local throttleTimer = 0
|
||||
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
if PlayerInput.Mouse4ButtonClicked() then
|
||||
cursormacroer.setTargetInventory()
|
||||
end
|
||||
if not PlayerInput.IsAltDown() then return end
|
||||
if Timer.GetTime() < throttleTimer then return end
|
||||
throttleTimer = Timer.GetTime() + throttle
|
||||
-- We can not use shift because holding shift means we're moving half a stack
|
||||
-- Fuck me sideways
|
||||
-- if not PlayerInput.IsShiftDown() then return end
|
||||
-- if not PlayerInput.PrimaryMouseButtonClicked() then return end
|
||||
cursormacroer.tryStackCursorItem()
|
||||
end, Hook.HookMethodType.After)
|
||||
|
||||
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
if not PlayerInput.KeyHit(MyModGlobal.CONFIG.UNLOAD) then return end
|
||||
quickunload.tryUnloadCursorItem()
|
||||
end, Hook.HookMethodType.After)
|
||||
|
||||
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
if not PlayerInput.KeyHit(MyModGlobal.CONFIG.RELOAD) then return end
|
||||
quickreload.tryReloadCursorItem(PlayerInput.IsShiftDown())
|
||||
end, Hook.HookMethodType.After)
|
||||
|
||||
-- Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
-- if not PlayerInput.KeyHit(MyModGlobal.CONFIG.LOOT) then return end
|
||||
-- quickloot.tryLoot()
|
||||
-- end, Hook.HookMethodType.After)
|
||||
|
||||
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
if not PlayerInput.KeyHit(MyModGlobal.CONFIG.SONAR) then return end
|
||||
sonarpinger.tryPing()
|
||||
end, Hook.HookMethodType.After)
|
||||
|
||||
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
if not PlayerInput.KeyHit(MyModGlobal.CONFIG.AOEPICKUP) then return end
|
||||
aoepickup.tryAoePickup()
|
||||
end, Hook.HookMethodType.After)
|
||||
|
||||
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
if not PlayerInput.KeyHit(MyModGlobal.CONFIG.QICK_FABRICATOR) then return end
|
||||
quickaccess.tryAccessFabricator(PlayerInput.IsShiftDown())
|
||||
end, Hook.HookMethodType.After)
|
||||
|
||||
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
if not PlayerInput.KeyHit(MyModGlobal.CONFIG.QICK_DECONSTRUCTOR) then return end
|
||||
quickaccess.tryAccessDeconstructor(PlayerInput.IsShiftDown())
|
||||
end, Hook.HookMethodType.After)
|
||||
|
||||
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
if not PlayerInput.KeyHit(MyModGlobal.CONFIG.QICK_MEDICAL_FABRICATOR) then return end
|
||||
quickaccess.tryAccessMedicalFabricator(PlayerInput.IsShiftDown())
|
||||
end, Hook.HookMethodType.After)
|
||||
end
|
||||
|
||||
-- Debugging helper function
|
||||
MyModGlobal.debugPrint = function(message)
|
||||
if MyModGlobal.CONFIG.DEBUG_MODE then
|
||||
print("[" .. MyModGlobal.MOD_NAME .. "] " .. message)
|
||||
end
|
||||
end
|
||||
|
||||
local quickstack = require("Cyka.quickstack")
|
||||
local fabricatorstack = require("Cyka.fabricatorstack")
|
||||
local quickbuy = require("Cyka.quickbuy")
|
||||
local hotkeyrepair = require("Cyka.hotkeyrepair")
|
||||
local cursormacroer = require("Cyka.cursormacroer")
|
||||
local quickunload = require("Cyka.quickunload")
|
||||
local quickreload = require("Cyka.quickreload")
|
||||
local quickloot = require("Cyka.quickloot")
|
||||
local sonarpinger = require("Cyka.sonarpinger")
|
||||
local aoepickup = require("Cyka.aoepickup")
|
||||
local quickaccess = require("Cyka.quickaccess")
|
||||
require("Cyka.xpticker")
|
||||
require("Cyka.zoom")
|
||||
|
||||
-- TODO: Keybind fabricator / medical fabricator / deconstructor on the sub
|
||||
|
||||
print(MyModGlobal.MOD_NAME .. " v" .. MyModGlobal.MOD_VERSION .. " loaded!")
|
||||
|
||||
-- Register necessary types and make fields accessible
|
||||
LuaUserData.RegisterType("Barotrauma.Items.Components.ItemContainer+SlotRestrictions")
|
||||
LuaUserData.RegisterType(
|
||||
'System.Collections.Immutable.ImmutableArray`1[[Barotrauma.Items.Components.ItemContainer+SlotRestrictions, Barotrauma]]')
|
||||
LuaUserData.MakeFieldAccessible(Descriptors['Barotrauma.Items.Components.ItemContainer'], 'slotRestrictions')
|
||||
LuaUserData.MakeFieldAccessible(Descriptors['Barotrauma.ItemInventory'], 'slots')
|
||||
LuaUserData.MakeFieldAccessible(Descriptors['Barotrauma.ItemInventory'], 'slotsPerRow')
|
||||
LuaUserData.MakeFieldAccessible(Descriptors["Barotrauma.CharacterInventory"], "slots")
|
||||
LuaUserData.RegisterType("Barotrauma.Store")
|
||||
LuaUserData.RegisterType("Barotrauma.GUIComponent")
|
||||
LuaUserData.RegisterType("Barotrauma.PurchasedItem")
|
||||
LuaUserData.RegisterType("Barotrauma.ItemPrefab")
|
||||
LuaUserData.RegisterType("Barotrauma.Location+StoreInfo")
|
||||
LuaUserData.MakeMethodAccessible(Descriptors["Barotrauma.CargoManager"], "GetConfirmedSoldEntities")
|
||||
LuaUserData.RegisterType("Barotrauma.Items.Components.Repairable")
|
||||
LuaUserData.RegisterType("Barotrauma.VisualSlot")
|
||||
|
||||
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
if not PlayerInput.KeyHit(MyModGlobal.CONFIG.QUICKSTACK_KEYS) then return end
|
||||
quickstack.quickStackItems(instance)
|
||||
end, Hook.HookMethodType.After)
|
||||
|
||||
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
if not PlayerInput.KeyHit(MyModGlobal.CONFIG.STACK_TO_CURSOR) then return end
|
||||
if not PlayerInput.IsShiftDown() then
|
||||
quickstack.stackToCursor()
|
||||
else
|
||||
quickstack.stackAllToCursor()
|
||||
end
|
||||
end, Hook.HookMethodType.After)
|
||||
|
||||
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
if not PlayerInput.KeyHit(MyModGlobal.CONFIG.FABRICATOR_KEY) then return end
|
||||
fabricatorstack.tryStackFabricator(instance)
|
||||
end, Hook.HookMethodType.After)
|
||||
|
||||
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
if not PlayerInput.KeyHit(MyModGlobal.CONFIG.FIX) then return end
|
||||
hotkeyrepair.tryRepair()
|
||||
end, Hook.HookMethodType.After)
|
||||
|
||||
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
if not PlayerInput.KeyHit(MyModGlobal.CONFIG.MAX_BUY) then return end
|
||||
quickbuy.tryBuy()
|
||||
end, Hook.HookMethodType.After)
|
||||
|
||||
local throttle = 0.1
|
||||
local throttleTimer = 0
|
||||
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
if PlayerInput.Mouse4ButtonClicked() then
|
||||
cursormacroer.setTargetInventory()
|
||||
end
|
||||
if not PlayerInput.IsAltDown() then return end
|
||||
if Timer.GetTime() < throttleTimer then return end
|
||||
throttleTimer = Timer.GetTime() + throttle
|
||||
-- We can not use shift because holding shift means we're moving half a stack
|
||||
-- Fuck me sideways
|
||||
-- if not PlayerInput.IsShiftDown() then return end
|
||||
-- if not PlayerInput.PrimaryMouseButtonClicked() then return end
|
||||
cursormacroer.tryStackCursorItem()
|
||||
end, Hook.HookMethodType.After)
|
||||
|
||||
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
if not PlayerInput.KeyHit(MyModGlobal.CONFIG.UNLOAD) then return end
|
||||
quickunload.tryUnloadCursorItem()
|
||||
end, Hook.HookMethodType.After)
|
||||
|
||||
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
if not PlayerInput.KeyHit(MyModGlobal.CONFIG.RELOAD) then return end
|
||||
quickreload.tryReloadCursorItem(PlayerInput.IsShiftDown())
|
||||
end, Hook.HookMethodType.After)
|
||||
|
||||
-- Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
-- if not PlayerInput.KeyHit(MyModGlobal.CONFIG.LOOT) then return end
|
||||
-- quickloot.tryLoot()
|
||||
-- end, Hook.HookMethodType.After)
|
||||
|
||||
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
if not PlayerInput.KeyHit(MyModGlobal.CONFIG.SONAR) then return end
|
||||
sonarpinger.tryPing()
|
||||
end, Hook.HookMethodType.After)
|
||||
|
||||
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
if not PlayerInput.KeyHit(MyModGlobal.CONFIG.AOEPICKUP) then return end
|
||||
aoepickup.tryAoePickup()
|
||||
end, Hook.HookMethodType.After)
|
||||
|
||||
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
if not PlayerInput.KeyHit(MyModGlobal.CONFIG.QICK_FABRICATOR) then return end
|
||||
quickaccess.tryAccessFabricator(PlayerInput.IsShiftDown())
|
||||
end, Hook.HookMethodType.After)
|
||||
|
||||
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
if not PlayerInput.KeyHit(MyModGlobal.CONFIG.QICK_DECONSTRUCTOR) then return end
|
||||
quickaccess.tryAccessDeconstructor(PlayerInput.IsShiftDown())
|
||||
end, Hook.HookMethodType.After)
|
||||
|
||||
Hook.Patch("Barotrauma.Character", "ControlLocalPlayer", function(instance, ptable)
|
||||
if not PlayerInput.KeyHit(MyModGlobal.CONFIG.QICK_MEDICAL_FABRICATOR) then return end
|
||||
quickaccess.tryAccessMedicalFabricator(PlayerInput.IsShiftDown())
|
||||
end, Hook.HookMethodType.After)
|
||||
|
Reference in New Issue
Block a user