mirror of
https://github.com/OTCv8/otclientv8.git
synced 2025-05-09 15:29:20 +02:00
383 lines
11 KiB
Lua
383 lines
11 KiB
Lua
function SuppliesPanel(parent)
|
|
local panelName = "supplies"
|
|
if not parent then
|
|
parent = panel
|
|
end
|
|
|
|
local temp = nil
|
|
if SuppliesConfig[panelName] and SuppliesConfig[panelName].item1 then
|
|
temp = SuppliesConfig[panelName]
|
|
end
|
|
|
|
|
|
if not SuppliesConfig[panelName] or SuppliesConfig[panelName].item1 then
|
|
SuppliesConfig[panelName] = {
|
|
currentProfile = "Default",
|
|
["Default"] = {}
|
|
}
|
|
if temp then
|
|
SuppliesConfig[panelName].Default = temp
|
|
end
|
|
end
|
|
|
|
local currentProfile = SuppliesConfig[panelName].currentProfile
|
|
local config = SuppliesConfig[panelName][currentProfile]
|
|
|
|
if not config then
|
|
for k,v in pairs(SuppliesConfig[panelName]) do
|
|
if type(v) == "table" then
|
|
SuppliesConfig[panelName].currentProfile = k
|
|
config = SuppliesConfig[panelName][k]
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
rootWidget = g_ui.getRootWidget()
|
|
if rootWidget then
|
|
SuppliesWindow = UI.createWindow('SuppliesWindow', rootWidget)
|
|
SuppliesWindow:hide()
|
|
|
|
SuppliesWindow.onVisibilityChange = function(widget, visible)
|
|
if not visible then
|
|
vBotConfigSave("supply")
|
|
end
|
|
end
|
|
|
|
local function loadVariables()
|
|
config.item1 = config.item1 or 0
|
|
config.item2 = config.item2 or 0
|
|
config.item3 = config.item3 or 0
|
|
config.item4 = config.item4 or 0
|
|
config.item5 = config.item5 or 0
|
|
config.item6 = config.item6 or 0
|
|
config.item1Min = config.item1Min or 0
|
|
config.item1Max = config.item1Max or 0
|
|
config.item2Min = config.item2Min or 0
|
|
config.item2Max = config.item2Max or 0
|
|
config.item3Min = config.item3Min or 0
|
|
config.item3Max = config.item3Max or 0
|
|
config.item4Min = config.item4Min or 0
|
|
config.item4Max = config.item4Max or 0
|
|
config.item5Min = config.item5Min or 0
|
|
config.item5Max = config.item5Max or 0
|
|
config.item6Min = config.item6Min or 0
|
|
config.item6Max = config.item6Max or 0
|
|
config.capValue = config.capValue or 0
|
|
config.staminaValue = config.staminaValue or 0
|
|
end
|
|
loadVariables()
|
|
|
|
local function setValues()
|
|
SuppliesWindow.capSwitch:setOn(config.capSwitch)
|
|
SuppliesWindow.SoftBoots:setOn(config.SoftBoots)
|
|
SuppliesWindow.imbues:setOn(config.imbues)
|
|
SuppliesWindow.staminaSwitch:setOn(config.staminaSwitch)
|
|
SuppliesWindow.item1:setItemId(config.item1)
|
|
SuppliesWindow.item2:setItemId(config.item2)
|
|
SuppliesWindow.item3:setItemId(config.item3)
|
|
SuppliesWindow.item4:setItemId(config.item4)
|
|
SuppliesWindow.item5:setItemId(config.item5)
|
|
SuppliesWindow.capValue:setText(config.capValue)
|
|
SuppliesWindow.item1Min:setText(config.item1Min)
|
|
SuppliesWindow.item1Max:setText(config.item1Max)
|
|
SuppliesWindow.item2Min:setText(config.item2Min)
|
|
SuppliesWindow.item2Max:setText(config.item2Max)
|
|
SuppliesWindow.item3Min:setText(config.item3Min)
|
|
SuppliesWindow.item3Max:setText(config.item3Max)
|
|
SuppliesWindow.item4Min:setText(config.item4Min)
|
|
SuppliesWindow.staminaValue:setText(config.staminaValue)
|
|
SuppliesWindow.item4Max:setText(config.item4Max)
|
|
SuppliesWindow.item5Min:setText(config.item5Min)
|
|
SuppliesWindow.item5Max:setText(config.item5Max)
|
|
SuppliesWindow.item6Min:setText(config.item6Min)
|
|
SuppliesWindow.item6Max:setText(config.item6Max)
|
|
end
|
|
setValues()
|
|
|
|
local function refreshProfileList()
|
|
local profiles = SuppliesConfig[panelName]
|
|
|
|
SuppliesWindow.profiles:destroyChildren()
|
|
for k,v in pairs(profiles) do
|
|
if type(v) == "table" then
|
|
local label = UI.createWidget("ProfileLabel", SuppliesWindow.profiles)
|
|
label:setText(k)
|
|
label:setTooltip("Click to load this profile. \nDouble click to change the name.")
|
|
label.remove.onClick = function()
|
|
local childs = SuppliesWindow.profiles:getChildCount()
|
|
if childs == 1 then
|
|
return info("vBot[Supplies] You need at least one profile!")
|
|
end
|
|
profiles[k] = nil
|
|
label:destroy()
|
|
vBotConfigSave("supply")
|
|
end
|
|
label.onDoubleClick = function(widget)
|
|
local window = modules.client_textedit.show(widget, {title = "Set Profile Name", description = "Enter a new name for selected profile"})
|
|
schedule(50, function()
|
|
window:raise()
|
|
window:focus()
|
|
end)
|
|
end
|
|
label.onClick = function()
|
|
SuppliesConfig[panelName].currentProfile = label:getText()
|
|
config = SuppliesConfig[panelName][label:getText()]
|
|
loadVariables()
|
|
setValues()
|
|
vBotConfigSave("supply")
|
|
end
|
|
label.onTextChange = function(widget,text)
|
|
profiles[text] = profiles[k]
|
|
profiles[k] = nil
|
|
vBotConfigSave("supply")
|
|
end
|
|
end
|
|
end
|
|
end
|
|
refreshProfileList()
|
|
|
|
local function setProfileFocus()
|
|
for i,v in ipairs(SuppliesWindow.profiles:getChildren()) do
|
|
local name = v:getText()
|
|
if name == SuppliesConfig[panelName].currentProfile then
|
|
return v:focus()
|
|
end
|
|
end
|
|
end
|
|
setProfileFocus()
|
|
|
|
SuppliesWindow.newProfile.onClick = function()
|
|
local n = SuppliesWindow.profiles:getChildCount()
|
|
if n > 6 then
|
|
return info("vBot[Supplies] - max profile count reached!")
|
|
end
|
|
local name = "Profile #"..n+1
|
|
SuppliesConfig[panelName][name] = {}
|
|
refreshProfileList()
|
|
setProfileFocus()
|
|
vBotConfigSave("supply")
|
|
end
|
|
|
|
SuppliesWindow.capSwitch.onClick = function(widget)
|
|
config.capSwitch = not config.capSwitch
|
|
widget:setOn(config.capSwitch)
|
|
end
|
|
|
|
SuppliesWindow.SoftBoots.onClick = function(widget)
|
|
config.SoftBoots = not config.SoftBoots
|
|
widget:setOn(config.SoftBoots)
|
|
end
|
|
|
|
SuppliesWindow.imbues.onClick = function(widget)
|
|
config.imbues = not config.imbues
|
|
widget:setOn(config.imbues)
|
|
end
|
|
|
|
SuppliesWindow.staminaSwitch.onClick = function(widget)
|
|
config.staminaSwitch = not config.staminaSwitch
|
|
widget:setOn(config.staminaSwitch)
|
|
end
|
|
|
|
-- bot items
|
|
|
|
SuppliesWindow.item1.onItemChange = function(widget)
|
|
config.item1 = widget:getItemId()
|
|
end
|
|
|
|
SuppliesWindow.item2.onItemChange = function(widget)
|
|
config.item2 = widget:getItemId()
|
|
end
|
|
|
|
SuppliesWindow.item3.onItemChange = function(widget)
|
|
config.item3 = widget:getItemId()
|
|
end
|
|
|
|
SuppliesWindow.item4.onItemChange = function(widget)
|
|
config.item4 = widget:getItemId()
|
|
end
|
|
|
|
SuppliesWindow.item5.onItemChange = function(widget)
|
|
config.item5 = widget:getItemId()
|
|
end
|
|
|
|
SuppliesWindow.item6:setItemId(config.item6)
|
|
SuppliesWindow.item6.onItemChange = function(widget)
|
|
config.item6 = widget:getItemId()
|
|
end
|
|
|
|
-- text windows
|
|
SuppliesWindow.capValue.onTextChange = function(widget, text)
|
|
local value = tonumber(SuppliesWindow.capValue:getText())
|
|
if not value then
|
|
SuppliesWindow.capValue:setText(0)
|
|
config.capValue = 0
|
|
else
|
|
text = text:match("0*(%d+)")
|
|
config.capValue = text
|
|
end
|
|
end
|
|
|
|
SuppliesWindow.item1Min.onTextChange = function(widget, text)
|
|
local value = tonumber(SuppliesWindow.item1Min:getText())
|
|
if not value then
|
|
SuppliesWindow.item1Min:setText(0)
|
|
config.item1Min = 0
|
|
else
|
|
text = text:match("0*(%d+)")
|
|
config.item1Min = text
|
|
end
|
|
end
|
|
|
|
SuppliesWindow.item1Max.onTextChange = function(widget, text)
|
|
local value = tonumber(SuppliesWindow.item1Max:getText())
|
|
if not value then
|
|
SuppliesWindow.item1Max:setText(0)
|
|
config.item1Max = 0
|
|
else
|
|
text = text:match("0*(%d+)")
|
|
config.item1Max = text
|
|
end
|
|
end
|
|
|
|
SuppliesWindow.item2Min.onTextChange = function(widget, text)
|
|
local value = tonumber(SuppliesWindow.item2Min:getText())
|
|
if not value then
|
|
SuppliesWindow.item2Min:setText(0)
|
|
config.item2Min = 0
|
|
else
|
|
text = text:match("0*(%d+)")
|
|
config.item2Min = text
|
|
end
|
|
end
|
|
|
|
SuppliesWindow.item2Max.onTextChange = function(widget, text)
|
|
local value = tonumber(SuppliesWindow.item2Max:getText())
|
|
if not value then
|
|
SuppliesWindow.item2Max:setText(0)
|
|
config.item2Max = 0
|
|
else
|
|
text = text:match("0*(%d+)")
|
|
config.item2Max = text
|
|
end
|
|
end
|
|
|
|
SuppliesWindow.item3Min.onTextChange = function(widget, text)
|
|
local value = tonumber(SuppliesWindow.item3Min:getText())
|
|
if not value then
|
|
SuppliesWindow.item3Min:setText(0)
|
|
config.item3Min = 0
|
|
else
|
|
text = text:match("0*(%d+)")
|
|
config.item3Min = text
|
|
end
|
|
end
|
|
|
|
SuppliesWindow.item3Max.onTextChange = function(widget, text)
|
|
local value = tonumber(SuppliesWindow.item3Max:getText())
|
|
if not value then
|
|
SuppliesWindow.item3Max:setText(0)
|
|
config.item3Max = 0
|
|
else
|
|
config.item3Max = text
|
|
end
|
|
end
|
|
|
|
SuppliesWindow.item4Min.onTextChange = function(widget, text)
|
|
local value = tonumber(SuppliesWindow.item4Min:getText())
|
|
if not value then
|
|
SuppliesWindow.item4Min:setText(0)
|
|
config.item4Min = 0
|
|
else
|
|
text = text:match("0*(%d+)")
|
|
config.item4Min = text
|
|
end
|
|
end
|
|
|
|
SuppliesWindow.staminaValue.onTextChange = function(widget, text)
|
|
local value = tonumber(SuppliesWindow.staminaValue:getText())
|
|
if not value then
|
|
SuppliesWindow.staminaValue:setText(0)
|
|
config.staminaValue = 0
|
|
else
|
|
text = text:match("0*(%d+)")
|
|
config.staminaValue = text
|
|
end
|
|
end
|
|
|
|
SuppliesWindow.item4Max.onTextChange = function(widget, text)
|
|
local value = tonumber(SuppliesWindow.item4Max:getText())
|
|
if not value then
|
|
SuppliesWindow.item4Max:setText(0)
|
|
config.item4Max = 0
|
|
else
|
|
text = text:match("0*(%d+)")
|
|
config.item4Max = text
|
|
end
|
|
end
|
|
|
|
SuppliesWindow.item5Min.onTextChange = function(widget, text)
|
|
local value = tonumber(SuppliesWindow.item5Min:getText())
|
|
if not value then
|
|
SuppliesWindow.item5Min:setText(0)
|
|
config.item5Min = 0
|
|
else
|
|
text = text:match("0*(%d+)")
|
|
config.item5Min = text
|
|
end
|
|
end
|
|
|
|
SuppliesWindow.item5Max.onTextChange = function(widget, text)
|
|
local value = tonumber(SuppliesWindow.item5Max:getText())
|
|
if not value then
|
|
SuppliesWindow.item5Max:setText(0)
|
|
config.item5Max = 0
|
|
else
|
|
text = text:match("0*(%d+)")
|
|
config.item5Max = text
|
|
end
|
|
end
|
|
|
|
SuppliesWindow.item6Min.onTextChange = function(widget, text)
|
|
local value = tonumber(SuppliesWindow.item6Min:getText())
|
|
if not value then
|
|
SuppliesWindow.item6Min:setText(0)
|
|
config.item6Min = 0
|
|
else
|
|
text = text:match("0*(%d+)")
|
|
config.item6Min = text
|
|
end
|
|
end
|
|
|
|
SuppliesWindow.item6Max.onTextChange = function(widget, text)
|
|
local value = tonumber(SuppliesWindow.item6Max:getText())
|
|
if not value then
|
|
SuppliesWindow.item6Max:setText(0)
|
|
config.item6Max = 0
|
|
else
|
|
text = text:match("0*(%d+)")
|
|
config.item6Max = text
|
|
end
|
|
end
|
|
|
|
Supplies = {}
|
|
Supplies.show = function()
|
|
SuppliesWindow:show()
|
|
SuppliesWindow:raise()
|
|
SuppliesWindow:focus()
|
|
end
|
|
end
|
|
|
|
UI.Button("Supplies", function()
|
|
SuppliesWindow:show()
|
|
SuppliesWindow:raise()
|
|
SuppliesWindow:focus()
|
|
end)
|
|
|
|
SuppliesWindow.close.onClick = function(widget)
|
|
SuppliesWindow:hide()
|
|
end
|
|
end
|
|
|
|
UI.Separator()
|
|
SuppliesPanel(setDefaultTab("Cave")) |